Hi @Andreas_Hegenberg
If you don't know anything about midi, and you have implemented the midi triggers section and the send midi action, you are more than brilliant.
I don't know nothing about midi programming, but I am an experienced user in midi configurations.
I will try to tell you the midi basics, and how to test the current or future midi functions you develop for BTT.
1 - MIDI basics
There are different kinds of midi messages, like sysex messages (Sysex means System Exclusive) or NRPN (Non-Registered Parameter Number). These kind of midi messages could be implemented in the future, but not now (I assume that must be complex to implement them).
IMHO with the current messages we have in BTT (note on, note off, control change(cc), program change(pc), pitchbend(pb), channel pressure(cp)) we can do a lot of things.
CHANNELS AND PORTS
Any midi message (note on, note off, cc, pc, pb, cp) need a midi channel and a midi port to be transmitted.
There are 16 midi channels. There is no difference between them. They can be numbered from 0 to 15, or from 1 to 16. The midi channel is part of the midi message, it has no relation with the midi port.
Midi ports are the highways between devices. You can think of them like cables that connect one midi device to the computer, or one midi device to another midi device.
Midi devices usually have two midi ports: midi IN and midi OUT.
MIDI IN is the highway where all midi messages sent TO an specific device will be transmitted to.
MIDI OUT is the highway where all midi messages sent FROM an specific device will be transmitted to.
Example:
Let's say you have a Yamaha midi mixer device connected to a macbook pro with Logic. Both devices are connected with a thunderbolt cable. The thunderbolt cable is a double cable that connects:
- the Logic midi out port to the Yamaha midi in port
- the Yamaha midi out port to the Logic midi in port
If you want to move the fader of the Yamaha mixer and then see that the fader in Logic moves accordingly, you should configure this midi configuration in Logic:
control change number 7 (it's the cc of the fader, it could be another one)
velocity x (x=0 to 127 : 0 is fader at the bottom / 127 is fader at the top)
channel 1 (it could be anyone)
Logic Pro midi in port: Yamaha midi out port
Logic Pro midi out port: None
If you want also to move the fader in Logic Pro and then see that the fader in Yamaha mixer moves accordingly, you have to configure Logic Pro like this:
control change number 7
velocity x
channel 1
Logic Pro midi in port: Yamaha midi out port
Logic Pro midi out port: Yamaha midi in port
Midi ports can also be virtual ports. This means that the midi in and the midi out ports cables are virtual and instead of connecting devices you can connect software apps.
Very Important: It's a golden rule to not share midi ports to send and receive midi messages and not share midi ports betweeen different devices. One port only for send from one device to another device. One port only for receive from one device to another device.
NOTE ON: It represents a key pressed on a keyboarf pressed. The intensity you press the key is determined by the midi velocity value.
NOTE OFF: It represents a key released on a keyboarf pressed. The velocity you release the key is determined by the midi velocity value.
2 - AUDIO MIDI SETUP app
Open the Audio Midi Setup > Midi Studio > IAC Configuration: Create here two virtual midi ports. Call the two ports with clear names that define the direction of the communication:
BetterTouchTool_To_PocketMidi
PocketMidi_To_BetterTouchTool
3 - POCKET MIDI app
Download this app from appstore or from the website
This app is a perfect tool to send and receive midi messages and monitor also all the midi transmissions.
In the menubar select the port "BetterTouchTool_To_PocketMidi" as the InputPort.
In the menubar select the port "PocketMidi_To_BetterTouchTool" as the OutputPort.
In the menubar there is the views menu. Open the views and configure and save a layout like this:
Now you can press any key of the keyboard and a note on/off will be transmitted with the selected channel and velocity to the output port (to BTT)
Pressing the transmit button you can send cc, pc, pb, etc to the output port.
All midi messages sent from BTT to the midi port "BetterTouchTool_To_PocketMidi" will be listed in the MIDI IN MONITOR of the Pocket Midi app
Finally, I would like to suggest you to open a "Midi Development Thread" where all users can share ideas/bugs/questions (something similar to the "Floating Menu Alpha Development Thread" you started last year)