Working out a lot of kinks in the interface
This commit is contained in:
		
							parent
							
								
									d2564c5757
								
							
						
					
					
						commit
						c8ab06dfc4
					
				@ -1,9 +1,12 @@
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(
 | 
					(
 | 
				
			||||||
~to = TouchOSC("192.168.0.209", 9000);
 | 
					~to = TouchOSC("192.168.0.209", 9000);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
~speeds = [ 1, 1, 1, 1 ];
 | 
					~speeds = [ 1, 1, 1, 1 ];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					~tracknum = 0;
 | 
				
			||||||
 | 
					~granulator = ~granulators[0];
 | 
				
			||||||
 | 
					
 | 
				
			||||||
OSCdef.freeAll;
 | 
					OSCdef.freeAll;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -21,30 +24,9 @@ OSCdef.freeAll;
 | 
				
			|||||||
	});
 | 
						});
 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// Problem - when you press the record, mode or speed control on the grains page,
 | 
				
			||||||
// when selecting a track, sets all the controls on the track page to this one
 | 
					// it doesn't update the track until you change tracks. How to make this work
 | 
				
			||||||
 | 
					// without a loop (one control sets another control, which sets the first control...)?
 | 
				
			||||||
~to.button('/trackselect', 0, { |v|
 | 
					 | 
				
			||||||
	~tracknum = v.asInteger;
 | 
					 | 
				
			||||||
	~granulator = ~granulators[~tracknum];
 | 
					 | 
				
			||||||
	~to.v_('/track/record', ~granulator.record);
 | 
					 | 
				
			||||||
	~to.v_('/track/mode',   ~granulator.mode);
 | 
					 | 
				
			||||||
	~to.v_('/track/trigger',~granulator.trigger);
 | 
					 | 
				
			||||||
	~to.v_('/track/speed',  ~speeds[~tracknum]);
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
	~to.v_('/track/blur',   ~granulator.blur);
 | 
					 | 
				
			||||||
	~to.v_('/track/size',   ~granulator.size);
 | 
					 | 
				
			||||||
	~to.v_('/track/mix',    ~granulator.mix);
 | 
					 | 
				
			||||||
	~to.v_('/track/pan',    ~granulator.pan);
 | 
					 | 
				
			||||||
	~to.v_('/track/track',  ~granulator.track);
 | 
					 | 
				
			||||||
	~to.v_('/track/jitter', ~granulator.jitter);
 | 
					 | 
				
			||||||
	~to.v_('/track/dust',   ~granulator.dust);
 | 
					 | 
				
			||||||
	~to.v_('/track/slope',  ~granulator.slope);
 | 
					 | 
				
			||||||
	~to.v_('/track/back',   ~granulator.back);
 | 
					 | 
				
			||||||
	~to.v_('/track/chorus', ~granulator.chorus);
 | 
					 | 
				
			||||||
	~to.v_('/track/detune', ~granulator.detune);
 | 
					 | 
				
			||||||
	~to.v_('/track/pitch',  ~granulator.pitch);
 | 
					 | 
				
			||||||
});
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// note: ~buflen is the variable for buffer length, which only gets set to
 | 
					// note: ~buflen is the variable for buffer length, which only gets set to
 | 
				
			||||||
@ -66,22 +48,18 @@ OSCdef.freeAll;
 | 
				
			|||||||
~to.slider('/grains/speed0', 1, TouchOSCScale(0, 2), { |v|
 | 
					~to.slider('/grains/speed0', 1, TouchOSCScale(0, 2), { |v|
 | 
				
			||||||
	~speeds[0] = v;
 | 
						~speeds[0] = v;
 | 
				
			||||||
	~possynths[0].set(\speed, v / ~buflen);
 | 
						~possynths[0].set(\speed, v / ~buflen);
 | 
				
			||||||
	~speeds.postln;
 | 
					 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
~to.slider('/grains/speed1', 1, TouchOSCScale(0, 2), { |v|
 | 
					~to.slider('/grains/speed1', 1, TouchOSCScale(0, 2), { |v|
 | 
				
			||||||
	~speeds[1] = v;
 | 
						~speeds[1] = v;
 | 
				
			||||||
	~possynths[1].set(\speed, v / ~buflen);
 | 
						~possynths[1].set(\speed, v / ~buflen);
 | 
				
			||||||
	~speeds.postln;
 | 
					 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
~to.slider('/grains/speed2', 1, TouchOSCScale(0, 2), { |v|
 | 
					~to.slider('/grains/speed2', 1, TouchOSCScale(0, 2), { |v|
 | 
				
			||||||
	~speeds[2] = v;
 | 
						~speeds[2] = v;
 | 
				
			||||||
	~possynths[2].set(\speed, v / ~buflen);
 | 
						~possynths[2].set(\speed, v / ~buflen);
 | 
				
			||||||
	~speeds.postln;
 | 
					 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
~to.slider('/grains/speed3', 1, TouchOSCScale(0, 2), { |v|
 | 
					~to.slider('/grains/speed3', 1, TouchOSCScale(0, 2), { |v|
 | 
				
			||||||
	~speeds[3] = v;
 | 
						~speeds[3] = v;
 | 
				
			||||||
	~possynths[3].set(\speed, v / ~buflen);
 | 
						~possynths[3].set(\speed, v / ~buflen);
 | 
				
			||||||
	~speeds.postln;
 | 
					 | 
				
			||||||
});
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
~to.slider('/grains/passthrough', 0.75, TouchOSCScale(0, 1), { |v| ~grainmixer.set(\passthrough, v) });
 | 
					~to.slider('/grains/passthrough', 0.75, TouchOSCScale(0, 1), { |v| ~grainmixer.set(\passthrough, v) });
 | 
				
			||||||
@ -98,9 +76,16 @@ OSCdef.freeAll;
 | 
				
			|||||||
// record, mode and speed have controls on both pages - the controls for them here just
 | 
					// record, mode and speed have controls on both pages - the controls for them here just
 | 
				
			||||||
// call the v_ setter on the front page controls
 | 
					// call the v_ setter on the front page controls
 | 
				
			||||||
 | 
					
 | 
				
			||||||
~to.button('/track/record',  0, { | v | ~to.v_('grains/record' ++ ~tracknum, v) });
 | 
					~trackctrl = { | base, n | ("/grains/" ++ base ++ n).asSymbol };
 | 
				
			||||||
~to.button('/track/mode',    0, { | v | ~to.v_('grains/mode' ++ ~tracknum, v) });
 | 
					
 | 
				
			||||||
~to.slider('/track/speed',   1, TouchOSCScale(0, 2), { |v| ~to.v_('grains/speed' ++ ~tracknum, v) });
 | 
					
 | 
				
			||||||
 | 
					~to.button('/track/record',  0, { | v |
 | 
				
			||||||
 | 
						~to.v_(~trackctrl.value("record", ~tracknum), v)
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					~to.button('/track/mode',    0, { | v |
 | 
				
			||||||
 | 
						~to.v_(~trackctrl.value("mode", ~tracknum), v) });
 | 
				
			||||||
 | 
					~to.slider('/track/speed',   1, TouchOSCScale(0, 2), { |v|
 | 
				
			||||||
 | 
						~to.v_(~trackctrl.value("speed", ~tracknum), v) });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// the rest of this page's controls set the values on the current granulator
 | 
					// the rest of this page's controls set the values on the current granulator
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -123,6 +108,32 @@ OSCdef.freeAll;
 | 
				
			|||||||
~to.slider('/track/jitter', 0.25, TouchOSCScale(0, 1),    { |v| ~granulator.jitter_(v) });
 | 
					~to.slider('/track/jitter', 0.25, TouchOSCScale(0, 1),    { |v| ~granulator.jitter_(v) });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					// define track selector after the track controls are defined
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					~to.button('/trackselect', 0, { |v|
 | 
				
			||||||
 | 
						~tracknum = v.asInteger;
 | 
				
			||||||
 | 
						~granulator = ~granulators[~tracknum];
 | 
				
			||||||
 | 
						[ "granulator", ~granulator, "record", ~granulator.record ].postln;
 | 
				
			||||||
 | 
						~to.v_('/track/record', ~granulator.record);
 | 
				
			||||||
 | 
						~to.v_('/track/mode',   ~granulator.mode);
 | 
				
			||||||
 | 
						~to.v_('/track/trigger',~granulator.trigger);
 | 
				
			||||||
 | 
						~to.v_('/track/speed',  ~speeds[~tracknum]);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						~to.v_('/track/blur',   ~granulator.blur);
 | 
				
			||||||
 | 
						~to.v_('/track/size',   ~granulator.size);
 | 
				
			||||||
 | 
						~to.v_('/track/mix',    ~granulator.mix);
 | 
				
			||||||
 | 
						~to.v_('/track/pan',    ~granulator.pan);
 | 
				
			||||||
 | 
						~to.v_('/track/track',  ~granulator.track);
 | 
				
			||||||
 | 
						~to.v_('/track/jitter', ~granulator.jitter);
 | 
				
			||||||
 | 
						~to.v_('/track/dust',   ~granulator.dust);
 | 
				
			||||||
 | 
						~to.v_('/track/slope',  ~granulator.slope);
 | 
				
			||||||
 | 
						~to.v_('/track/back',   ~granulator.back);
 | 
				
			||||||
 | 
						~to.v_('/track/chorus', ~granulator.chorus);
 | 
				
			||||||
 | 
						~to.v_('/track/detune', ~granulator.detune);
 | 
				
			||||||
 | 
						~to.v_('/track/pitch',  ~granulator.pitch);
 | 
				
			||||||
 | 
					});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
~to.slider(
 | 
					~to.slider(
 | 
				
			||||||
 | 
				
			|||||||
							
								
								
									
										16
									
								
								main.scd
									
									
									
									
									
								
							
							
						
						
									
										16
									
								
								main.scd
									
									
									
									
									
								
							@ -14,7 +14,6 @@ Server.killAll;
 | 
				
			|||||||
Granulator.init(s);
 | 
					Granulator.init(s);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
(
 | 
					(
 | 
				
			||||||
// set up four position buffers with synths
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
~modes = [
 | 
					~modes = [
 | 
				
			||||||
	[ "saw", \pos_saw ],
 | 
						[ "saw", \pos_saw ],
 | 
				
			||||||
@ -52,12 +51,19 @@ Granulator.init(s);
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
("./interface.scd").loadRelative;
 | 
					("./interface.scd").loadRelative;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					~to.controls.keys.do({|k, i| i.postln; k.postln;~to.controls[k].postln});
 | 
				
			||||||
 | 
					~to.controls['/grains/speed0']
 | 
				
			||||||
 | 
					~to.v_(, 0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					~to.controls.at(~trackctrl.value('speed')).isNil.not
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					a = "string"
 | 
				
			||||||
 | 
					b = 'string'
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					a.asSymbol
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user