How could I dynamically transpose a midi note sequence ‘A’ by another midi note sequence ‘B’?
I’m hoping to achieve with midi, what you can do in eurorack with a precision adder. I’ve come across a script called ‘Mitch Slayton Dynamic Transpose’ that does what I want in the App ‘StreamByter’, but I was hoping to do this using Midi Translator. Here is a link to a video about the StreamByter app I’m referring to: Transpose Any Sequencer with StreamByter - YouTube
(I’m not looking for a static transpose amount, or a menu command that would transpose. But rather a way to dynamically change the transposition amount with another sequence or a midi keyboard.)
Yes, this is possible. You would set your control source to change a global variable. The global variable would be used to calculate transposed notes for your original MIDI stream to use. Care would need to be taken to turn off any notes currently playing when the control source changes, otherwise you would get notes stuck on. Essentialy any note-on would need a coresponding note-off at the current transposition setting when the note was fired.
Steve Caldwell
Bome Customer Care Also available for paid consulting services: bome@sniz.biz
Thank you so much for the reply! I’m watching the training videos and going through the manual. I’ve attempted to modify the example project file ‘Tutorial - Note Transpose.bmtp’. I’ve added a note on and a note off translator that set up a global variable ga for the transposition amount, and I’m running into the exact issues you are describing about stuck notes.
In order to avoid the stuck notes, is there a technique I should research that would send note-off at the current transposition at the correct timing?
Yes, this is the tricky piece. The way I would approach it is to keep a bit map of currently playing notes and any time there is a transpose change message, iterate through the bit map turning each playing note off. You would need to track by the original note number and the transpose amount at the time the note was played.
As I said, that could be a bit tricky but it can be done.