improvements to installation audio player
							parent
							
								
									32b4768ca6
								
							
						
					
					
						commit
						b96cca7a2e
					
				@ -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)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
					Loading…
					
					
				
		Reference in New Issue