Created
May 13, 2016 02:10
-
-
Save frigginglorious/11d8a9ef514346bee76f967f9b690fab to your computer and use it in GitHub Desktop.
ChucK program: Takes audio input, and adds delay effect when button is pushed on a gamepad, outputs audio
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// http://chuck.cs.princeton.edu/ | |
0 => int device; | |
// feedforward | |
adc => Gain g => dac; | |
// feedback | |
g => Gain feedback => DelayL delay => g; | |
Gain g2; | |
g2 => Gain feedback2 => DelayL delay2 => g2; | |
1::second => delay2.max; | |
// 5::second => delay.max; | |
int base; | |
float a0; | |
float a1; | |
float a2; | |
int count; | |
// set delay parameters | |
//.75::second => delay.max => delay.delay; | |
// set feedback | |
//.5 => feedback.gain; | |
// set effects mix | |
//.75 => delay.gain; | |
// hid objects | |
Hid hi; | |
HidMsg msg; | |
// try | |
if( !hi.openJoystick( device ) ) me.exit(); | |
<<< "joystick '" + hi.name() + "' ready...", "" >>>; | |
while( true ) | |
{ | |
// wait on event | |
hi => now; | |
// loop over messages | |
while( hi.recv( msg ) ) | |
{ | |
if( msg.isAxisMotion() ) | |
{ | |
if( msg.which == 0 ) msg.axisPosition => a0; | |
else if( msg.which == 1 ) msg.axisPosition => a1; | |
else if( msg.which == 2 ) msg.axisPosition => a2; | |
set( base, a0, a1, a2 ); | |
} | |
else if( msg.isButtonDown() ) | |
{ | |
if (count == 0){ | |
adc => Gain g => dac; | |
// feedback | |
//g2 => Gain feedback2 => DelayL delay2 => g2; | |
1::second => delay.delay; | |
1 => delay.gain; | |
1 => feedback.gain; | |
1 => count; | |
<<< "loop On", "" >>>; | |
} | |
else if(count == 1){ | |
adc =< Gain g =< dac; | |
<<< "Loop Done", "" >>>; | |
2 => count; | |
} | |
else{ | |
0::second => delay.delay; | |
0 => delay.gain; | |
0 => feedback.gain; | |
0 => count; | |
<<< "Loop Off", "" >>>; | |
} | |
} | |
else if( msg.isButtonUp() ) | |
{ | |
} | |
} | |
} | |
fun void set( int base, float v0, float v1, float v2 ) | |
{ | |
//0 => delay.gain; | |
// modulator frequency | |
//( 500 + 5*base + ( 500 * v0) ) => m.freq; | |
//v0 => feedback.gain; | |
// carrier frequency | |
//( 220 + (220 * v2) ) => c.freq; | |
// index of modulation | |
//( 1000 * (v1+1) ) => m.gain; | |
//<<< "carrier:", c.freq(), "modulator:", m.freq(), "index:", m.gain() >>>; | |
//1::second => delay.max => delay.delay; | |
// set feedback | |
//1 => feedback.gain; | |
// set effects mix | |
//1 => delay.gain; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment