From b96cca7a2e3371e7d551154ab500e1e906571206 Mon Sep 17 00:00:00 2001 From: mwinter Date: Wed, 8 Nov 2023 12:43:24 +0100 Subject: [PATCH] improvements to installation audio player --- supercollider/installation_audio_player.scd | 55 ++++++++++++--------- 1 file changed, 31 insertions(+), 24 deletions(-) diff --git a/supercollider/installation_audio_player.scd b/supercollider/installation_audio_player.scd index 9a8e8a5..5badf9f 100644 --- a/supercollider/installation_audio_player.scd +++ b/supercollider/installation_audio_player.scd @@ -1,44 +1,51 @@ ( -SynthDef(\hdpPlayer, {arg playDurBus = 5, playBuf = 0; - var startTrig, playDur, fadeTime, changeTrig, playSig, fade; - startTrig = InTrig.kr(playDurBus); - playDur = In.kr(playDurBus); +SynthDef(\hdpPlayer, {arg playBuf = 0, gate = 0; + var playDur, fadeTime, changeTrig, playSig, fade; fadeTime = 30; - playSig = PlayBuf.ar(2, playBuf, BufRateScale.kr(playBuf), startTrig, 0); - fade = EnvGen.kr(Env.asr(fadeTime, 1, fadeTime), Stepper.kr(startTrig + TDelay.kr(startTrig, playDur - fadeTime), 0, 0, 1)); + playSig = PlayBuf.ar(2, playBuf, BufRateScale.kr(playBuf), gate, 0); + fade = EnvGen.kr(Env.asr(fadeTime, 1, fadeTime), gate); Out.ar(0, playSig * fade); Out.ar([0, 1], BrownNoise.ar * 0.05 * (fade - 1).abs); - SendReply.kr(TDelay.kr(startTrig, playDur), '/unlock'); }).add; - ); ( -var recDir, recPaths, recInfo, playBuf, playDurBus, lock; -recDir = "/home/mwinter/a_history_of_the_domino_problem/recs/"; +var recDir, recPaths, recInfo, playBuf, player, isPlaying, playRoutine; +recDir = "/home/mwinter/Portfolio/a_history_of_the_domino_problem/a_history_of_the_domino_problem_source/recs/"; recPaths = ["berger_knuth.wav", "robinson.wav", "penrose.wav", "ammann.wav", "kari_culik.wav", "jaendel_rao.wav"].collect({arg file; recDir +/+ file}); recInfo = recPaths.collect({arg path; var sndFile; sndFile = SoundFile.openRead(path); [sndFile.numFrames, sndFile.sampleRate]}); playBuf = Buffer.read(s, recPaths[0]); -playDurBus = Bus.control(s,1); -lock = false; +//lock = false; +isPlaying = false; +player = Synth(\hdpPlayer, [\playBuf, playBuf]); OSCFunc({ arg msg, time; - var numPlayFrames, startFrame; [time, msg].postln; - lock.postln; - if(lock.not, { - numPlayFrames = (5.rand + 5) * 60 * recInfo[msg[1]][1]; - startFrame = (recInfo[msg[1]][0] - numPlayFrames).rand; + //lock.postln; + playRoutine.stop; + playRoutine = Routine({ + var playDur, piece, numPlayFrames, startFrame; + if(isPlaying, { + player.set(\gate, 0); + 30.wait; + }); + isPlaying = true; + piece = msg[1]; + playDur = (5.0.rand + 5) * 10; + numPlayFrames = playDur * recInfo[piece][1]; + startFrame = (recInfo[piece][0] - numPlayFrames).rand; playBuf.free; - playBuf = Buffer.read(s, recPaths[msg[1]], startFrame, numPlayFrames, action: {arg buf; - playDurBus.set(numPlayFrames / recInfo[msg[1]][1]) + playBuf = Buffer.read(s, recPaths[piece], startFrame, numPlayFrames, action: {arg buf; + player.set(\gate, 1); }); - lock = true; - Routine({10.wait; lock = false; lock.postln}).play - }); + (playDur - 30).wait; + player.set(\gate, 0); + 30.wait; + isPlaying = false; + }).play },'/playTiling', n); -Synth(\hdpPlayer, [\playDurBus, playDurBus, \playBuf, playBuf]); ) n = NetAddr("127.0.0.1", 57120) -n.sendMsg('/playTiling', 5) +n.sendMsg('/playTiling', 1) +