[chuck-users] Auto tune

Joel Matthys jwmatthys at yahoo.com
Wed Jun 11 12:58:20 EDT 2014


Sweet! I gotta keep up with all of your amazing work, Michael!

BTW, have you looked at wrapping the bitrot Ladspa plugins? They do some 
great glitch stuff. Here's something I did with them:

https://soundcloud.com/jwmatthys/glitck
https://soundcloud.com/jwmatthys/glitck2

Source code:

// GlitCK by Joel Matthys

[41, 48, 53, 56, 58, 59, 60, 63, 65] @=> int pitches[];
[0.25, 0.5, 1, 2, 4] @=> float speeds[];
120 => float tempo;
if (me.args()) me.arg(0) => Std.atof => tempo;

ModalBar bars => LADSPA stutter => LADSPA tape => LADSPA reverse => Pan2 
pan => Gain g[2] => Envelope fade => dac;
Shakers shake => stutter;
g => Echo e[2] => g;
tpo2dur(tempo)*16 => e[0].max => e[0].delay;
tpo2dur(tempo)*16 => e[1].max => e[1].delay;
1 => e[0].mix => e[1].mix;
0.9 => e[0].gain => e[1].gain;

2::minute => fade.duration;
1 => fade.value;

"./bitrot_stutter.so" => stutter.load;
"stutter" => stutter.activate;
//stutter.info();
stutter.set(1,tempo);
stutter.set(2,4);
stutter.set(3,16);
stutter.set(8,1);
0 => stutter.verbose;

"./bitrot_tapestop.so" => tape.load;
"tapestop" => tape.activate;
//tape.info();
tape.set(1,1);
0 => tape.verbose;

"./bitrot_reverser.so" => reverse.load;
"reverser" => reverse.activate;
//reverse.info();
0 => reverse.verbose;

0.2 => bars.gain;
0.25 => shake.gain;

now + 5::minute => time later;
while (now < later)
{
     Math.random2f(-1,1) => pan.pan;
     pitches[Math.random2(0,pitches.size()-1)] => Std.mtof => bars.freq;
     Math.random2(0,22) => shake.preset;
     Math.random2(0,8) => bars.preset;
     maybe && maybe => bars.noteOn;
     maybe && maybe => shake.noteOn;
     tpo2dur(tempo) => now;
     if (maybe && maybe) stutter.set(6,maybe);
     if (maybe && maybe) stutter.set(4,maybe);
     if (maybe) stutter.set(0,maybe);
     if (maybe) stutter.set(9,speeds[Math.random2(0,speeds.size()-1)]);
     tape.set(0,maybe);
     reverse.set(0,maybe);
}
stutter.set(0,0);
tape.set(0,0);
reverse.set(0,0);
0 => fade.target;
2::minute => now;

fun dur tpo2dur (float tpo)
{
     return (60000.0/tpo)::ms;
}


On 06/11/2014 11:44 AM, Michael Heuer wrote:
> Oh, hey Joel!
>
> Sigmund is wrapped in LiCK as well
>
> https://github.com/heuermh/lick/blob/master/SigmuFollower.ck
>
>     michael
>
>
> On Wed, Jun 11, 2014 at 11:41 AM, Joel Matthys <jwmatthys at yahoo.com> wrote:
>> Autotune requires a pretty accurate pitch-tracker, which isn't built in to
>> ChucK but is available as part of my Chugin package at
>> https://github.com/jwmatthys/chugins
>>
>> With either the PitchTrack or Sigmund chugins, you can do autotuning like
>> this in ChucK:
>>
>> https://soundcloud.com/jwmatthys/obama-autotuned-chuck-version
>> https://soundcloud.com/jwmatthys/obama-resynthesized
>>
>> (Sample code is included with the chugins.)
>>
>> Joel
>>
>>
>> On 06/11/2014 11:25 AM, Philipp Blume wrote:
>>
>> Has anyone tried to make an autotune emulation using ChucK? Seems like it
>> would be doable, albeit with constraints.
>>
>> --
>> Philipp Blume
>>
>>
>> _______________________________________________
>> chuck-users mailing list
>> chuck-users at lists.cs.princeton.edu
>> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>>
>>
>>
>> _______________________________________________
>> chuck-users mailing list
>> chuck-users at lists.cs.princeton.edu
>> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
>>
> _______________________________________________
> chuck-users mailing list
> chuck-users at lists.cs.princeton.edu
> https://lists.cs.princeton.edu/mailman/listinfo/chuck-users



More information about the chuck-users mailing list