Can anyone suggest a patch to look at or give advice on the following?:
I want to raise all recieved midi notes one semitone in response to the arrival of one specific midi note (eg 51), while at the same time preventing note 51 itself being passed on.
I also want to transpose notes by a specific value in response to recieving input from a continuous controller.
I would be grateful for any ideas you might have
-
Transposing midi notes with controller and note si
-
@ClaudiusMaximus said:
I thought of a method that should work:
Create a
oh no, this post seems to be missing a piece . I'm facing exactly this kind of situation. Anyone knows how to prevent the notes from getting stuck? best just using vanilla objects?
-
@Johann
You just need to stick the velocity to the note in a list...... so that when it is transposed both note on and note off messages are transposed..... like this....... transpose.pd
After the route just the velocity is being sent...... and it replaces the $1 in the following message.
Here the transposition is just + 10 and that could have been done with a [+ 10] before the left inlet of [pack], and the route and message bit would be unnecessary.
If you want to do more weird changes though then this is one way to do it.
David. -
Thanks, but I don't get how this could help preventing stuck notes when changing the transposition value while a key is pressed. It looks like a static map to me, or am I wrong?
-
@Johann Do you want the stuck note to be re-triggered to the new transposed value? What I mean is, if you have note 60 pressed, and before releasing it you press the transposition key, do you want this to turn note 60 off and instantly turn note 61 on?
If this is the case I think you have to keep track of the pressed notes somehow, with lists, arrays or text.
There was a similar discussion recently, although not exactly the same, but you might get some hints from that. https://forum.pdpatchrepo.info/topic/12116/the-only-midi-key-released -
@Johann [notein] drops the velocity from its second outlet and then the note from its first.
All messages are sent out in right to left order.
So [pack]..... needs right to left order as well.... joins the note and velocity as a list e.g. 60 127 and sends it on.
The note off message that arrives is sent on as 60 0[route] sends 127 out of the first outlet to the message [70 $1] which sends [70 127(.... 70 on.
when 60 0 arrives it sends 0 out of the first outlet into [70 $1] which sends [70 0(.... 70 off.If you have 60 pressed and then you press a transition button then that same button could send the note 60 off message. As @weightless says if you have a whole handful of notes pressed when you press the transition button you will need to have kept a list of them.
David. -
@Johann This will do that....... transpose.zip
It keeps a list of transposed notes so as to send note off messages for them when the transposition is turned on, and another to turn off the transposed notes when it is turned off.
But is that not enough. Are the original notes supposed to keep playing as well when transposition starts? It can be done of course. -
Ah, ok. It's getting a bit clearer. I also started working on a strategie, where everything is happening for each notevalue individually as a patch inside a clone-object with 128 clones... not sure if thats a smart way. will post the result
-
@Johann This should work, even if the transpose value changes when notes are still hold: transposehold.pd
-
Ah, nice!
This is my solution. Also seems to work. Or would you advice against using the clone objekt? Feels a bit overkill to have this patch 128 times in the patch... -
@Johann Actually i think this is pretty cool
Probably the left side of the cloned abstraction isn't needed?
-
@ingox Yes, cool! great teamwork