real time transpose from different midi input?

stoecklem

2012-10-16 00:41:05

Hello

I was wondering if this is possible and if so I could get a nudge in the right direction.

I know it probably would require lots of translators. I would like to be able to have one midi input act as a transpose for another input. So middle C would be not transposed and then press a piano key up or down an octave to transpose. much like on my akai asq-10 does for previously recorded notes

softcore

2012-10-16 01:29:27

I think the easiest way to go about it is to make the transpose up-down keys activate different presets in your project.
Then in each preset, you just make math - you subtract or you add value of 12 to the incoming midi notes to get your desired transposition.
All in all Im thinking:
3 presets
1. 1 octave down: subtract 12 from incoming notes (use local variables) - transpose up key activates next preset
2. center octave: - no transposition - transpose down key activates previous preset, transpose up key activates next preset
3. 1 octave up: - add 12 to incoming notes (use local variables) transpose down key activates previous preset

stoecklem

2012-10-16 01:45:02

Thank You! I wasn't very clear in my first post. I would like to be able to transpose in semitones up to or down to an octave. So ill need 24 presets but it sounds like that is the way to go. Im sure there is a vst out there that could do this but im on a mac using digital performer and I haven't found anything yet.

softcore

2012-10-16 01:52:55

Ah well then I think its better to set a global "semitones" variable - and use this global variable (which will be set by using the up-down desired keys) to alter the incoming notes to desired transposed semitone - in other words instead of going the "presets" route, just use a global variable with which to set how many semitones the transposition is taking place.

DvlsAdvct

2012-10-16 02:20:46

Hi stoecklem

Like, softcore said, you could do it with "semitone" global variables. What you'd do is set each key to designate a new variable value, and have the key change its semitone based on which key is pressed. I'm only going to start this out for right now, but you should be able to get the logic. So it would look something like

Code: Select all

Translator 1: Key Press
Incoming Message: 90 64 pp
Rules: pp=pp+g0
Outgoing Action: 90 64 pp

Translator 2: +1 Semitone
Incoming Message: 90 65 pp
rules: if pp!=0 then g0=1
if pp==0 then g0=0
Outgoing Action: None

Translator 3: +2 Semitone
Incoming Message: 90 66 pp
rules: if pp!=0 then g0=2
if pp==0 then g0=0
Outgoing Action: none
So you only need the translators for the g0 variable, and then the original key will change semitone. effectively, you only need to add the 24 translators, one for each semitone, but it will not change the note after it's been pressed. If you want to add that functionality it's doable, just more complicated.