| @@ -1,20 +0,0 @@ | |||
| TODO: | |||
| Two or three channels | |||
| Global Sliders: | |||
| - BPM | |||
| - Input gain | |||
| - Amount of input to send to delay line | |||
| - Delay feedback amount | |||
| Global Switches: | |||
| - OSC Master/Minion | |||
| Channel Sliders: | |||
| - Gain | |||
| Channel buttons: | |||
| - Clear | |||
| - Level | |||
| - Mute/Unmute | |||
| - Pitch down | |||
| @@ -0,0 +1,3 @@ | |||
| adc => Gain g1 => dac; | |||
| 0.5 => g1.gain; | |||
| 1000::second => now; | |||
| @@ -1,77 +0,0 @@ | |||
| <CsoundSynthesizer> | |||
| <CsOptions> | |||
| -iadc -odac -dm0 | |||
| </CsOptions> | |||
| <CsInstruments> | |||
| ; CSound parameters | |||
| sr = 44100 ; Sample rate | |||
| ksmps = 20 ; Number of audio samples in each control cycle | |||
| nchnls = 2 ; Number of channels (2=stereo) | |||
| 0dbfs = 1 ; Maximum amplitude | |||
| ; FLTK GUI interface | |||
| FLpanel "M I L C H L O D E", 500, 300, 0, 0, 0, 1 | |||
| gkInputGain,ihInputGain FLslider "Input Gain", 0, 1, 0, 3, -1, 400, 20, 5, 5 | |||
| gkInputMute,ihInputMute FLbutton "Mute", 0, 1, 3, 85, 25, 410, 5, 0, 1, 0, -1 | |||
| ; Sliders | |||
| gkdlt,ihdlt FLslider "Delay Time (sec)", .001, 5, 0, 3, -1, 490, 25, 5, 50 | |||
| gkmix,ihmix FLslider "Dry/Wet Mix", 0, 1, 0, 3, -1, 490, 25, 5, 100 | |||
| gkfeedamt,ihfeedamt FLslider "Feedback Ratio", 0, 1, 0, 3, -1, 490, 25, 5, 150 | |||
| ; Set defaults | |||
| FLsetVal_i 1, ihInputMute | |||
| FLsetVal_i .5, ihInputGain | |||
| FLsetVal_i 1, ihdlt | |||
| FLsetVal_i 0.5, ihmix | |||
| FLsetVal_i 0.95, ihfeedamt | |||
| FLpanel_end ;End of GUI | |||
| FLrun ;Run the FLTK thread | |||
| ; Instr 1 is the source | |||
| instr 1 | |||
| ; Turn off with the switch | |||
| if gkInputMute=0 then | |||
| turnoff | |||
| endif | |||
| ; Get input from mic/line | |||
| asigL, asigR ins | |||
| gasigL = asigL * gkInputGain | |||
| gasigR = asigR * gkInputGain | |||
| endin | |||
| ; Instr 2 is the delay line | |||
| instr 2 | |||
| adlt = gkdlt | |||
| ;Left channel | |||
| abufferL delayr 5 ;Buffer | |||
| adelsigL deltap3 adlt ;Tap | |||
| delayw gasigL + (adelsigL * gkfeedamt) ;Feedback | |||
| ;Right channel | |||
| abufferR delayr 5 ;Buffer | |||
| adelsigR deltap3 adlt ;Tap | |||
| delayw gasigR + (adelsigR * gkfeedamt) ;Feedback | |||
| aL ntrpol gasigL, adelsigL, gkmix | |||
| aR ntrpol gasigR, adelsigR, gkmix | |||
| gkamp = .7; | |||
| outs aL * gkamp, aR * gkamp ; Mix wet/dry | |||
| clear gasigL, gasigR ; Clear global audio sends | |||
| endin | |||
| </CsInstruments> | |||
| <CsScore> | |||
| i 2 0 -1 ;Instrument 2 plays a held note | |||
| f 0 3600 ;Keep performance going | |||
| </CsScore> | |||
| </CsoundSynthesizer> | |||
| @@ -1,4 +0,0 @@ | |||
| all: run | |||
| run: | |||
| csound delay.csd | |||
| @@ -1,58 +0,0 @@ | |||
| <CsoundSynthesizer> | |||
| <CsOptions> | |||
| -o dac | |||
| </CsOptions> | |||
| <CsInstruments> | |||
| sr = 48000 | |||
| ksmps = 32 | |||
| nchnls = 2 | |||
| 0dbfs = 1 | |||
| ; localhost means communication on the same machine, otherwise you need | |||
| ; an IP adress | |||
| #define IPADDRESS # "localhost" # | |||
| #define S_PORT # 47120 # | |||
| #define R_PORT # 47120 # | |||
| turnon 1000 ; starts instrument 1000 immediately | |||
| turnon 1001 ; starts instrument 1001 immediately | |||
| instr 1000 ; this instrument sends OSC-values | |||
| kValue1 randomh 0, 0.8, 4 | |||
| kNum randomh 0, 8, 8 | |||
| kMidiKey tab (int(kNum)), 2 | |||
| kOctave randomh 0, 7, 4 | |||
| kValue2 = cpsmidinn (kMidiKey*kOctave+33) | |||
| kValue3 randomh 0.4, 1, 4 | |||
| ;Stext sprintf "%i", $S_PORT | |||
| OSCsend kValue1+kValue2, $IPADDRESS, $S_PORT, "/QuteCsound", | |||
| "fff", kValue1, kValue2, kValue3 | |||
| endin | |||
| instr 1001 ; this instrument receives OSC-values | |||
| kValue1Received init 0.0 | |||
| kValue2Received init 0.0 | |||
| kValue3Received init 0.0 | |||
| ;Stext sprintf "%i", $R_PORT | |||
| ihandle OSCinit $R_PORT | |||
| kAction OSClisten ihandle, "/QuteCsound", "fff", | |||
| kValue1Received, kValue2Received, kValue3Received | |||
| if (kAction == 1) then | |||
| ;printk2 kValue2Received | |||
| ;printk2 kValue1Received | |||
| endif | |||
| aSine poscil3 kValue1Received, kValue2Received, 1 | |||
| outs aSine, aSine | |||
| endin | |||
| </CsInstruments> | |||
| <CsScore> | |||
| f 1 0 1024 10 1 | |||
| f 2 0 8 -2 0 2 4 7 9 11 0 2 | |||
| e 3600 | |||
| </CsScore> | |||
| </CsoundSynthesizer> | |||
| ; example by Alex Hofmann (Mar. 2011) | |||
| @@ -0,0 +1 @@ | |||
| chuck.alsa --bufsize64 chuck.ck | |||
| @@ -1,53 +0,0 @@ | |||
| var context = null; | |||
| // success callback when requesting audio input stream | |||
| function gotStream(stream) { | |||
| window.AudioContext = window.AudioContext || window.webkitAudioContext; | |||
| var ctx = new AudioContext(); | |||
| // Create an AudioNode from the stream. | |||
| var micSource = ctx.createMediaStreamSource(stream); | |||
| // Connect it to the destination to hear yourself (or any other node for processing!) | |||
| micSource.connect(ctx.destination); | |||
| } | |||
| document.addEventListener('DOMContentLoaded', function() { | |||
| //if (navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia) | |||
| //navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia; | |||
| if (!navigator.getUserMedia) navigator.getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia; | |||
| var constraints = { "audio": { "mandatory": { "googEchoCancellation": "false", "googAutoGainControl": "false", "googNoiseSuppression": "false", "googHighpassFilter": "false" }}} | |||
| navigator.getUserMedia(constraints, gotStream, function(e) { alert('Error getting audio'); console.log(e); }); | |||
| //var controls = $("div#sliders"); | |||
| //controls.find("input[name='delayTime']").on('input', function() { | |||
| //delay.delayTime.value = $(this).val(); | |||
| //}); | |||
| //controls.find("input[name='feedback']").on('input', function() { | |||
| //feedback.gain.value = $(this).val(); | |||
| //}); | |||
| //controls.find("input[name='frequency']").on('input', function() { | |||
| //filter.frequency.value = $(this).val(); | |||
| //}); | |||
| //delay = ctx.createDelay(); | |||
| //delay.delayTime.value = 0.5; | |||
| //feedback = ctx.createGain(); | |||
| //feedback.gain.value = 0.8; | |||
| //filter = ctx.createBiquadFilter(); | |||
| //filter.frequency.value = 1000; | |||
| //delay.connect(feedback); | |||
| //feedback.connect(filter); | |||
| //filter.connect(delay); | |||
| //source.connect(delay); | |||
| //source.connect(ctx.destination); | |||
| //delay.connect(ctx.destination); | |||
| }); | |||
| @@ -1,2 +0,0 @@ | |||
| body {font-family: monospace; font-size:12pt; background:url(rules.png) center center no-repeat;} | |||
| .player { color:white; background-color:black; width:200px; padding:5px; border-radius:5px; text-align:center; height:300px;} | |||
| @@ -1,15 +0,0 @@ | |||
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> | |||
| <html> | |||
| <head> | |||
| <title>Web audio test</title> | |||
| <link rel="stylesheet" type="text/css" href="css.css"> | |||
| <script type="text/javascript" src="main.js"></script> | |||
| </head> | |||
| <body> | |||
| Testing testing | |||
| </body> | |||
| </html> | |||
| @@ -1,53 +0,0 @@ | |||
| var context = null; | |||
| // success callback when requesting audio input stream | |||
| function gotStream(stream) { | |||
| window.AudioContext = window.AudioContext || window.webkitAudioContext; | |||
| var ctx = new AudioContext(); | |||
| // Create an AudioNode from the stream. | |||
| var micSource = ctx.createMediaStreamSource(stream); | |||
| // Connect it to the destination to hear yourself (or any other node for processing!) | |||
| micSource.connect(ctx.destination); | |||
| } | |||
| document.addEventListener('DOMContentLoaded', function() { | |||
| //if (navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia) | |||
| //navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia; | |||
| if (!navigator.getUserMedia) navigator.getUserMedia = navigator.webkitGetUserMedia || navigator.mozGetUserMedia; | |||
| var constraints = { "audio": { "mandatory": { "googEchoCancellation": "false", "googAutoGainControl": "false", "googNoiseSuppression": "false", "googHighpassFilter": "false" }}} | |||
| navigator.getUserMedia(constraints, gotStream, function(e) { alert('Error getting audio'); console.log(e); }); | |||
| //var controls = $("div#sliders"); | |||
| //controls.find("input[name='delayTime']").on('input', function() { | |||
| //delay.delayTime.value = $(this).val(); | |||
| //}); | |||
| //controls.find("input[name='feedback']").on('input', function() { | |||
| //feedback.gain.value = $(this).val(); | |||
| //}); | |||
| //controls.find("input[name='frequency']").on('input', function() { | |||
| //filter.frequency.value = $(this).val(); | |||
| //}); | |||
| //delay = ctx.createDelay(); | |||
| //delay.delayTime.value = 0.5; | |||
| //feedback = ctx.createGain(); | |||
| //feedback.gain.value = 0.8; | |||
| //filter = ctx.createBiquadFilter(); | |||
| //filter.frequency.value = 1000; | |||
| //delay.connect(feedback); | |||
| //feedback.connect(filter); | |||
| //filter.connect(delay); | |||
| //source.connect(delay); | |||
| //source.connect(ctx.destination); | |||
| //delay.connect(ctx.destination); | |||
| }); | |||