What do you want to see in a scripting language?


Exactly. There could also be an option to only take the rhythmic information and ignore the pitches. But well… just some ideas.


Nice script @jazzundso !! interesting use of Pitch Bend and Mod wheel :wink:
All this goes nicely using an Xkey keyboard :wink: (but i’m sure with other controllers too).


Using MIDI channel1 :wink:

How to do it with other MIDI channels? or in a MPE scenario (multiple MIDI channels)?
@jazzundso @david


Hmm, indeed, it does not work with any other MIDI channel than CH 1. I tried to replace the “SustainedNotes.GetNoteOn” line with the following:

SustainedNotes.GotNote(MakeNoteMessageEx(GetNoteNumber(m), 127, GetChannel(m)))

That should retain the channel data… but it doesn’t work. It seems to me that the NoteTracker object ignores the channel so that StopAllPendingNotes will always send note off events on channel 1. That means that the instrument receives note on events on channel 1 and note off events on channel 2. Not totally sure because I only had a short look at it. I have to take some time tonight to see how to fix it within the script.

For the moment it might help to use the piz midiChannelize plugin to make sure the instrument will receive the events on a particular channel. But that’s only a solution if you only use one single midi channel. If you want to play different instruments on different MIDI channels things get complicated.

But that’s exactly why I wrote the FR for a GP Script MIDI processing Block with an input and an output and a way to receive notes/events/… from the input and send them to the output as we already can do with MIDI In Blocks. But it would be way more flexible because we could filter/manipulate data before it goes to the script and it could be used more modular in any Rackspace. That would make some split/layer/channel filter routings a lot easier to use.


Hmmm, please report that NoteTracker object issue with channels on the bug tracking system