diff options
Diffstat (limited to 'classes/USBMIDIIsm.sc')
-rw-r--r-- | classes/USBMIDIIsm.sc | 35 |
1 files changed, 28 insertions, 7 deletions
diff --git a/classes/USBMIDIIsm.sc b/classes/USBMIDIIsm.sc index 3a7518a..52e421b 100644 --- a/classes/USBMIDIIsm.sc +++ b/classes/USBMIDIIsm.sc @@ -1,6 +1,6 @@ USBMIDIIsm{ - var <devices, verbose; + var <devices, <stateManager, verbose; *new{ arg setVerbose=false; @@ -10,6 +10,7 @@ USBMIDIIsm{ init{ arg setVerbose; devices = Array(); + stateManager = MIDIStateManager(); verbose = setVerbose; this.discoverDevices(); } @@ -23,6 +24,7 @@ USBMIDIIsm{ postln("Resetting list of MIDI input devices."); devices.do({|device,i| if(device.inPortNum.notNil || device.outPortNum.notNil,{ + // stateManager.store(device)? device.cleanup(); }); }); @@ -42,6 +44,7 @@ USBMIDIIsm{ inEndPoint.device.contains("Announce")).not, { // correlate with output devices MIDIClient.destinations.do({|outEndPoint, outPortNum| + var device, state; if((inEndPoint.device == outEndPoint.device && inEndPoint.uid == outEndPoint.uid), { // available devices @@ -49,11 +52,17 @@ USBMIDIIsm{ {inEndPoint.device.contains("Platform M+")} { devices = devices.add( PlatformMPlus.new( - inEndPoint.device, + name: inEndPoint.device, uid: inEndPoint.uid.asSymbol, inPort: inPortNum, outPort: outPortNum, - verbose: verbose + verbose: verbose, + states: stateManager.requestState( + inEndPoint.device, + inEndPoint.uid.asSymbol, + inPortNum, + outPortNum + ); ) ); } @@ -64,7 +73,13 @@ USBMIDIIsm{ uid: inEndPoint.uid.asSymbol, inPort: inPortNum, outPort: outPortNum, - verbose: verbose + verbose: verbose, + states: stateManager.requestState( + inEndPoint.device, + inEndPoint.uid.asSymbol, + inPortNum, + outPortNum + ); ) ); }; @@ -75,12 +90,18 @@ USBMIDIIsm{ } listDevices{ - postln("Name, uid, in, out"); - devices.do({|device| - postln(device.name++", "++device.uid++", "++device.inPortNum++", "++device.outPortNum); + devices.do({|device, i| + postln(i.asString++": ["++device.name++", "++device.uid++", "++device.inPortNum++", "++device.outPortNum++"]"); }); } + setStates{ + arg device; + + + } + + listen{ arg listen = true; if(listen, { |