Skip to content

Commit

Permalink
stop doubling of events inferred by parameters if midicmd is set
Browse files Browse the repository at this point in the history
  • Loading branch information
yaxu committed Dec 26, 2019
1 parent 6da4af3 commit d7202e2
Showing 1 changed file with 10 additions and 7 deletions.
17 changes: 10 additions & 7 deletions classes/DirtEventTypes.sc
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ DirtEventTypes {

var freq, lag, sustain;
var args, midiout, hasGate, midicmd, latency, chan;
var sendNRPN, schedmidi, schedmidicmd;
var sendNRPN, schedmidi, schedmidicmd, donecmd;
var hasNote = ~n != \none;

midiout = ~midiout.value;
Expand All @@ -60,14 +60,17 @@ DirtEventTypes {
} {
{|f| thisThread.clock.sched(latency, f)}
};
donecmd = { |cmd|
if (midicmd.notNil and: { midicmd === cmd }) {
midicmd = nil
}
};
schedmidicmd = { |cmd|
var func;
func = Event.default[\midiEventFunctions][cmd];
args = func.valueEnvir.asCollection;
schedmidi.value { midiout.performList(cmd, args) };
if (midicmd.notNil && midicmd === cmd) {
midicmd = nil
};
donecmd.value(cmd);
};

// guess MIDI events from parameters
Expand All @@ -92,9 +95,9 @@ DirtEventTypes {
});
};

if(~progNum.notNil) { var num = ~progNum; schedmidi.value({ midiout.program(chan, num) })};
if(~midibend.notNil) { var val = ~midibend; schedmidi.value({ midiout.bend(chan, val) })};
if(~miditouch.notNil) { var val = ~miditouch; schedmidi.value({ midiout.touch(chan, val) })};
if(~progNum.notNil) { var num = ~progNum; donecmd.value(\program); schedmidi.value({ midiout.program(chan, num) })};
if(~midibend.notNil) { var val = ~midibend; donecmd.value(\bend); schedmidi.value({ midiout.bend(chan, val) })};
if(~miditouch.notNil) { var val = ~miditouch; donecmd.value(\touch); schedmidi.value({ midiout.touch(chan, val) })};

if (hasNote) {
freq = ~freq.value;
Expand Down

0 comments on commit d7202e2

Please sign in to comment.