// title: EWI Broadcast to Studio // author: mkb.dirtyorg // description: // The idea here is to blast everything from my EWI to every other channel on every other device in my studio. Don't use as-is; I'm getting timing problems // code: MIDIClient.init MIDIClient.sources[8].uid MIDIClient.destinations.postln ~channels = [ [], // iac [1], // fs1r [], // rm1x [1,5,6,7,8,9,10,11,12,13,14,15,16], // cs1x [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16], // k2000 [1,2,3,4,5,6], // z1 [], // monologue midi out [1], // monologue sound [] // EWI ]; MIDIIn.connectAll ( MIDIdef.freeAll; MIDIdef.noteOn(\broadcastNoteOn, { |velo, noteNum, chan, src| "noteOn ".post; [velo, noteNum, chan, src].postln; ~channels.do({ |channel, i| var midiout=MIDIOut.new(i); channel.do({|channelNum, i| midiout.noteOn(channelNum, noteNum, velo); }); }); }, srcID: 1363844096); MIDIdef.noteOff(\broadcastNoteOff, { |velo, noteNum, chan, src| "noteOff ".post; [velo, noteNum, chan, src].postln; ~channels.do({ |channel, i| var midiout=MIDIOut.new(i); channel.do({|channelNum, i| midiout.noteOff(channelNum, noteNum, velo); }); }); }, srcID: 1363844096); MIDIdef.cc(\broadcastCc, { |val, num, chan, src| "cc ".post; [val, num, chan, src].postln; ~channels.do({ |channel, i| var midiout=MIDIOut.new(i); channel.do({|channelNum, i| midiout.control(channelNum, num, val); }); }); }, srcID: 1363844096); MIDIdef.touch(\broadcastTouch, { |val, chan, src| "touch ".post; [val, chan, src].postln; ~channels.do({ |channel, i| var midiout=MIDIOut.new(i); channel.do({|channelNum, i| midiout.control(channelNum, num, val); }); }); }, srcID: 1363844096); MIDIdef.bend(\broadcastBend, {arg ...args; "bend ".post; args.postln; }, srcID: 1363844096); )