Process midi signals from multiple devices

Hello,
Is there a plugin to combine midi input signals from several midi devices?
Example: Note On of keyboard A or a breath controller controls the transposition of keyboard B.

Thanks for your Help

Try to connect different Midi In Plugins to the same plugin - or am I missing something.

Thanks.
Is Blue3 a midi processor plugin?

No, it is a VST plugin.
Maybe I totally misunderstood your question.
What do you want to achieve?
Are you using 2 keyboards which send midi data to Gig Performer?

Simply connect multiple “sources” to (in your use case) one “destination”

The Pitch of Note ON Signal of Keyboard A transpose the Notes from Keyboard B.

So you send Note On from keyboard a for example C3.
You send a Note ON from keyboard b for example D4, but it should be C3 because keyboard a sent C3?

So as long there is no Note OFF from Keyboard a each note on sent from keyboard b should be C3?
When there is no Note On from Keyboad a becuase you never sent it or in the meantime a Note Off is sent from keyboard a, what Pitch should be taken from keyboard b - the original sent from keyboard b?

By the way: What keyboards are you using and why do you need such a mechanism?

Example: Keyb A
Note C1 = Transpose 0
Note C#1 = Transpose +1 (shift all Notes from Keyb B +1)
Note D1 = Transpose +2 (shift all Notes from Keyb B +2)

Aah, now I understand :wink:

Example 2: Device A (Breat controller event) controls the Transpose shift of Device B (Keyboard).

I probably have to program it in GPScript.

Try this:
Midi Map the widget to your notes.Transpose.gig (6.0 KB)

Thanks.

I found the solution with my first GP Script:

var mx49,microKey : MidiInBlock
var transpose : integer
var transposeNoteMessage : NoteMessage

Initialization
transpose = 0
End

On NoteOnEvent(m : NoteMessage) from microKey
Print("microKey: " + m)
transpose = GetNoteNumber(m) % 12
Print("transpose: " + transpose)

End

On NoteOnEvent(m : NoteMessage) from mx49
transposeNoteMessage = Transpose(m, transpose)
SendNow(mx49, transposeNoteMessage)
Print("mx49: " + transposeNoteMessage)
End

On NoteOffEvent(m : NoteMessage) from mx49
transposeNoteMessage = Transpose(m, transpose)
SendNow(mx49, transposeNoteMessage)
Print("mx49: " + transposeNoteMessage)
End

I love GP Script. :slight_smile:

I hope that there will soon be a version as a midi plug-in with several midi inputs and outputs. That would be great and would be much more generic.

1 Like

Nice one!
But i would recommend to comment out the print-lines since i noticed in some of my scripts that this might cause some delay - it’s ok for debugging purposes, but you won’t need it for a regular use…

Thanks.
It only serves as a demonstration.
It’s not really usable code yet.
I forgot e.g. NoteOff. I inserted it now.

Another problem is that there must be no transpose before all noteoffs have been completed, otherwise there are note hangers.
A not good solution is AllNotesOff:

On NoteOnEvent(m : NoteMessage) from microKey
Print("microKey: " + m)
transpose = GetNoteNumber(m) % 12
Print("transpose: " + transpose)
AllNotesOff(mx49)
End