summaryrefslogtreecommitdiffstats
path: root/classes/USBMIDIIsm.sc
diff options
context:
space:
mode:
authorDavid Runge <dave@sleepmap.de>2018-03-18 00:57:06 +0100
committerDavid Runge <dave@sleepmap.de>2018-03-18 00:57:06 +0100
commit6a213f643bcee208afe6f1808e7ce4b634e39852 (patch)
tree44f738a741ab1dd3fd4df01522455cff0facecf4 /classes/USBMIDIIsm.sc
parent755cc2bc11e9c571c08df809935b68c5f4cf6652 (diff)
downloadusbmidiism-6a213f643bcee208afe6f1808e7ce4b634e39852.tar.gz
usbmidiism-6a213f643bcee208afe6f1808e7ce4b634e39852.tar.bz2
usbmidiism-6a213f643bcee208afe6f1808e7ce4b634e39852.tar.xz
usbmidiism-6a213f643bcee208afe6f1808e7ce4b634e39852.zip
Adding classes/MIDIState{,Manager}.sc, taking care of early stages of state management.
Making constructors more readable. Adding MIDIStateManager to USBMIDIIsm. Creating/recycling states for new and re-recognized MIDI devices.
Diffstat (limited to 'classes/USBMIDIIsm.sc')
-rw-r--r--classes/USBMIDIIsm.sc35
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, {