//Number 25 //Chuck a day 2009 //by Scott Hewitt //www.ablelemon.co.uk/chuckaday //DSP DelayL del[3]; Gain feedback[3]; adc => Gain gmm => Gain gm => del[0] => dac; gm => del[1] => dac; gm => del[2] => dac; del[0] => feedback[0] => gm; del[1] => feedback[1] => gm; del[2] => feedback[2] => gm; 20::second => del[0].max => del[1].max => del[2].max; 0.0 => gmm.gain; 1.0 => gm.gain; 0.0 => feedback[0].gain => feedback[1].gain => feedback[2].gain; 0.0 => del[0].gain => del[1].gain => del[2].gain; Event exitevent; //GUI elements and layout MAUI_View del_view; del_view.size( 800, 250 ); MAUI_Slider slidermaster; MAUI_Gauge gaugemaster; MAUI_Button exitbutton; exitbutton.pushType(); exitbutton.name("Exit"); del_view.addElement (slidermaster); "Input Volume" => slidermaster.name; slidermaster.position(0,0); del_view.addElement (gaugemaster); gaugemaster.position(250,0); del_view.addElement (exitbutton); exitbutton.position(500,0); MAUI_Slider slider[9]; for(0 => int i; i < 3; i++){ del_view.addElement (slider[i]); "Tap "+ Std.itoa(i) + " Gain" => slider[i].name; slider[i].position(0,((i * 60) + 55)); } for(3 => int i; i < 6; i++){ del_view.addElement (slider[i]); slider[i].precision(8); slider[i].range(0, 20000); "Tap "+ Std.itoa((i - 3)) + " Delay" => slider[i].name; slider[i].position(250,(((i - 3) * 60) + 55)); } for(6 => int i; i < 9; i++){ del_view.addElement (slider[i]); "Tap "+ Std.itoa((i - 6)) + " Feedback" => slider[i].name; slider[i].position(500,(((i - 6) * 60)+ 55)); } MAUI_Gauge gauge[3]; for(0 => int i; i < 3; i++){ del_view.addElement (gauge[i]); gauge[i].size(100.0, 50.0); gauge[i].position(710,((i * 60)+ 65)); } del_view.display(); //GUI functions //a much better way to do the monitor outputs function void lev_mon (){ while (true){ del[0].last() * 100.0 => gauge[0].value; del[1].last() * 100.0 => gauge[1].value; del[2].last() * 100.0 => gauge[2].value; gmm.last() * 100.0 => gaugemaster.value; 20::ms => now; } } //exit button event function void exitbutton_event (){ while (true){ exitbutton => now; exitevent.broadcast(); } } //input slider function void slidinput_event (){ while (true){ slidermaster => now; slidermaster.value() => gmm.gain; } } //gain slider function void slid_event (int b){ while (true){ slider[b] => now; slider[b].value() => del[b].gain; } } //delay slider function void sliddel_event (int b){ while (true){ slider[b] => now; slider[b].value() * 1::ms => del[(b - 3)].delay; } } //feedback slider function void slidfb_event (int b){ while (true){ slider[b] => now; slider[b].value() => feedback[(b - 6)].gain; } } //Program //level monitor spork ~ lev_mon(); spork ~ slidinput_event(); spork ~ exitbutton_event(); //gain slider spork ~ slid_event(0); spork ~ slid_event(1); spork ~ slid_event(2); //del slider spork ~ sliddel_event(3); spork ~ sliddel_event(4); spork ~ sliddel_event(5); //fb slider spork ~ slidfb_event(6); spork ~ slidfb_event(7); spork ~ slidfb_event(8); 500::ms => now; exitevent => now; <<<"test">>>; me.exit(); //this does not seam to work del_view.destroy();