Made the Tutorial 00-02 Simple Synth and used a casio to trigger it without problem. Then tried again will a Marimba Lumina and the notes would sound without stopping as if stuck. Looked at the lumnias setting to check that note off was being sent and tested it out with computer… Curious if you have any ideas on ways to look into it / problem solve it ? @zebra @tehn
using computer, can you get a printout of the actual bytes ML is sending, and post it?
also, can you give me a bit more detail about how the MIDI_NOTE operator is behaving / how you’ve patched it? is there no output at all from the operator on noteoffs? or is it simply that the velocity output isn’t what you’d expect?
i’ve just taken a glance at the aleph midi code and it seems straightforward. hard to imagine a way ML output would differ from spec, but maybe there is something - note off on separate channel, or poly aftertouch, i dunno. it has been a long time since i looked at a marimba lumina menu…
(awesome that you’re using one, by the way)
Yes the ML is super amazing havent had it very long.
For Aleph note getting the noteoffs with ML but do with the casio. I did just see that 14.MIDINOTE/CHAN was at -1. And that a print out from computer said [ 52, 53, 0, 1192887260 ] so I guess ML is going over channel one. unsure if “1192887260” is the bytes its sending out was just looking at the supercollider help as to where I could get that info
In the ML settings I didn’t get exotic ( but hope to soon ).
op channel input set to -1 is correct if you want to see input from all channels. it is the default.
i’m not sure what that array means. something in supercollider? can you send me the SC code?
That was it the channel was off. :)))))))))) so happy thanks for your help !
Im loving the Aleph but still trying to get my head around it better and excited to get
more expressive performance wise with it
changing the -1 to 0 gave me the note off
i see the bug: if using channel -1 to see all channels, the noteoff velocity is sent. in the other conditional branch (checking for a specific channel) the note-off velocity is assumed to be zero. (the marimba lumina, being a very sophisticated controller, actually sends velocity with note-off, where most keyboards just send zero and this is a non-issue.)
this begs the question, alluded to in code comment: how should we handle note-off velocity? 1) we could choose the approach used in Max, using separate operators for Note On and Note Off. 2) we could add an output to the operator indicating on and off. or 3) we could fix the current code, discarding note-off velocity.
... if (com == 0x8) {
// note off
if(op->chan == -1) {
num = (data & 0xff0000) >> 16;
vel = (data & 0xff00) >> 8;
net_activate(op->outs[0], op_from_int(num), op);
net_activate(op->outs[1], op_from_int(vel), op);
print_dbg("\r\n op_midi note off ; num: ");
print_dbg_ulong(num);
} else {
ch = (data & 0x0f000000) >> 24;
if(ch == op->chan) {
// matches our channel, so perform it
num = (data & 0xff0000) >> 16;
vel = (data & 0xff00) >> 8;
net_activate(op->outs[0], op_from_int(num), op);
// FIXME: should noteoff be a separate op, retain release velocity?
/// or, a 3rd output for on/off ?? hm
net_activate(op->outs[1], 0, op);
}
}
its getting above my head but yes the sophistication of the ML is best part. being able to crossfade on keys is super cool but the damping factor really makes it feel alive.
Being able to use that note off would be cool