Hey all, There was some recent discussion over on the STK users list, about implementing a Wah-Wah pedal. I hacked together a simple one based on experiments and data that Julius O. Smith did using his own personal CryBaby Pedal. For more on that:
https://ccrma.stanford.edu/realsimple/faust_strings/faust_strings.pdf
Here's my quick version in ChucK, using just his three data points, interpolating between. Enjoy!! I'm going to hook it up to a MIDI pedal shortly.
Hello Perry,
Thanks for sending both the paper and the ChucK implementation!
That paper is full of interesting ideas . . . I especially like this
"The resulting synthesis model is capable of convincing synthesis of
“howling” overdriven electric guitars."
There is a nice discussion thread on distortion on the ChucK forum at
http://electro-music.com/forum/topic-19287.html
michael
On Sun, Oct 6, 2013 at 7:07 PM, Perry Cook
Hey all,
There was some recent discussion over on the STK users list, about implementing a Wah-Wah pedal. I hacked together a simple one based on experiments and data that Julius O. Smith did using his own personal CryBaby Pedal. For more on that:
https://ccrma.stanford.edu/realsimple/faust_strings/faust_strings.pdf
Here's my quick version in ChucK, using just his three data points, interpolating between.
Enjoy!! I'm going to hook it up to a MIDI pedal shortly.
_______________________________________________ chuck-users mailing list chuck-users@lists.cs.princeton.edu https://lists.cs.princeton.edu/mailman/listinfo/chuck-users
Improved Chubgraph version. Easier to hook up and use. // Super-simple wah-wah pedal class // by Perry R. Cook, October 2013 // this one uses Chuggraph extension // Based on Julius O. Smith's experiments // with his own CryBaby. See: // https://ccrma.stanford.edu/realsimple/faust_strings/faust_strings.pdf class CryBaby extends Chubgraph { inlet => ResonZ wah => outlet; 3.0 => wah.Q; 1000.0 => wah.freq; [460.0,840,2250] @=> float freqs[]; // JOS data [9.4,4.0,2.0] @=> float Qs[]; // from his pedal // here we just linearly interpolate JOS data // zero is full closed, 1.0 is full "open" fun void setWah(float zero2One) { if (zero2One < 0.5) { 2.0 * zero2One => float temp; freqs[0] + ((freqs[1]-freqs[0])*temp) => wah.freq; Qs[0] + ((Qs[1]-Qs[0])*temp) => wah.Q; } else { 2.0 * (zero2One-0.5) => float temp; freqs[1] + ((freqs[2]-freqs[1])*temp) => wah.freq; Qs[1] + ((Qs[2]-Qs[1])*temp) => wah.Q; } // <<< wah.freq(), wah.Q() >>>; } } // OK, now let's test this baby!! SndBuf s => CryBaby myWah => dac; "shuffle.wav" => s.read; // test guitar riff, put whatever you like here 1 => s.loop; SinOsc autoWah => blackhole; // we use this to automatically 0.3 => autoWah.freq; // open/close our wah-wah filter while (1) { // just hang here and update 0.5*(1.0+autoWah.last()) => myWah.setWah; 0.01 :: second => now; }
participants (2)
-
Michael Heuer
-
Perry Cook