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