| @@ -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); | |||||
| }); | |||||