adc.chan(0) => Gain g => LPF lpf => JCRev rev => dac; rev => Delay delay => Gain a => delay => dac; 0. => g.gain; 20000 => lpf.freq; 0 => rev.mix; 0::ms => delay.max => delay.delay; 0 => a.gain; // maui elements MAUI_View control_view; MAUI_Button listen_adc; MAUI_Button delay_delay; MAUI_Slider volume_slider; MAUI_Slider lpf_slider; MAUI_Slider reverb_slider; MAUI_Slider attenuation_slider; // set view control_view.size( 400, 280 ); control_view.name( "Sound Control" ); // adc button listen_adc.toggleType(); listen_adc.size( 400, 80 ); listen_adc.position( 0, 0 ); listen_adc.name( "ADC" ); control_view.addElement( listen_adc ); // delay delay_delay.toggleType(); delay_delay.size( 200, 90 ); delay_delay.position( 200, 140 ); delay_delay.name( "Delay" ); control_view.addElement( delay_delay ); // volume volume_slider.range( 0, 1.5 ); volume_slider.size( 200, volume_slider.height() ); volume_slider.position( 0, 150 ); volume_slider.value( g.gain() ); volume_slider.name( "Gain" ); control_view.addElement( volume_slider ); // lpf lpf_slider.range( 0, 5000 ); lpf_slider.size( 200, lpf_slider.height() ); lpf_slider.position( 0, 75 ); lpf_slider.value( lpf.freq() ); lpf_slider.name( "LPF" ); control_view.addElement( lpf_slider ); // reverb reverb_slider.range( 0, .2 ); reverb_slider.size( 200, reverb_slider.height() ); reverb_slider.position( 200, 75 ); reverb_slider.value( rev.mix() ); reverb_slider.name( "Reverb" ); control_view.addElement( reverb_slider ); // delay attenuation attenuation_slider.range( 0, .98 ); attenuation_slider.size( 200, attenuation_slider.height() ); attenuation_slider.position( 200, 215 ); attenuation_slider.value( a.gain() ); attenuation_slider.name( "Attenuation" ); control_view.addElement( attenuation_slider ); control_view.display(); spork ~ listenAdc(); spork ~ controlGain(); spork ~ filter(); spork ~ reverb(); spork ~ delayDelay(); spork ~ attenuate(); function void listenAdc() { while( true ) { listen_adc => now; 0 => g.gain; 0 => volume_slider.value; listen_adc.name( "ADC is ON" ); 0 => rev.mix; 20000 => lpf.freq; listen_adc => now; listen_adc.name( "ADC is OFF" ); 0 => g.gain; 0 => rev.mix; 0 => volume_slider.value; 0 => lpf.freq; } } function void controlGain() { while( true ) { volume_slider => now; volume_slider.value() => g.gain; } } function void filter() { while( true ) { lpf_slider => now; lpf_slider.value() => lpf.freq; } } function void reverb() { while( true ) { reverb_slider => now; reverb_slider.value() => rev.mix; } } function void delayDelay() { while( true ) { delay_delay => now; 300::ms => delay.max => delay.delay; delay_delay => now; 0::ms => delay.max => delay.delay; } } function void attenuate() { while( true ) { attenuation_slider => now; attenuation_slider.value() => a.gain; } } while( true ) 1::day => now;