Custom-MIDI-Output-Element-Bankable
This is an example that demonstrates how to extend the library using your own Bankable MIDI Output Elements. The example declares a MIDI Output Element that sends MIDI Note events when a push button is pressed or released. It can be banked to change the MIDI address. It's a simplified version of the Bankable::NoteButton class.
To understand this example, you need to understand the Bank.ino and the Custom-MIDI-Output-Element.ino examples first.
- Boards: 🛈
- AVR, AVR USB, Due, Nano 33 IoT, Nano 33 BLE, UNO R4, Pi Pico, Teensy 3.x, ESP32
Connections
- 5: momentary push button (to ground) to send MIDI notes
- 6: momentary push button (to ground) to select the next bank
The internal pull-up resistors for the buttons will be enabled automatically.
Behavior
- When the button on pin 5 is pressed, a MIDI Note On message is sent for note C in the octave determined by the bank setting.
- When the button on pin 5 is released, a MIDI Note Off message is sent for note C in the octave determined by the bank setting.
- When the button on pin 6 is pressed, the bank setting is incremented.
Mapping
Select the Arduino as a custom MIDI controller in your DAW, and use the MIDI learn option to assign the button to a function.
Written by PieterP, 2020-09-29
https://github.com/tttapa/Control-Surface
public:
: address(bankConfig, baseAddress), button(pin), velocity(velocity) {}
public:
void update()
final override {
address.lock();
address.unlock();
}
}
private:
uint8_t velocity;
};
bank,
6,
};
MyNoteButton button {
5,
0x7F,
};
void setup() {
}
void loop() {
}
@ ChangeAddress
Change the offset of the address (i.e.
constexpr Channel Channel_1
The main header file that includes all Control-Surface header files.
Control_Surface_ & Control_Surface
A predefined instance of the Control Surface to use in the Arduino sketches.
#define BEGIN_CS_NAMESPACE
void begin() override
Initialize the shift register.
A super class for object that have to be updated regularly.
virtual void update()=0
Update this updatable.
virtual void begin()=0
Initialize this updatable.
A class that groups Bankable MIDI Output Elements and Bankable MIDI Input Elements,...
void begin()
Initialize the Control_Surface.
void loop()
Update all MIDI elements, send MIDI events and read MIDI input.
Selector with one button that increments the selection.
A type-safe utility class for saving a MIDI address consisting of a 7-bit address,...
void sendNoteOn(MIDIAddress address, uint8_t velocity)
Send a MIDI Note On event.
void sendNoteOff(MIDIAddress address, uint8_t velocity)
Send a MIDI Note Off event.
A class for MIDI interfaces sending MIDI messages over a USB MIDI connection.