Connect MIDI keyboards and controllers
MIDI Input
Configure Strumboli to receive MIDI input from keyboards or controllers, allowing you to combine keyboard note selection with tablet expression.
midiInputId
Type: string or null
Default: null
Description: MIDI input device name for receiving keyboard input
When configured, Strumboli listens to the specified MIDI device for note messages. The incoming notes determine which notes are strummed when you use the tablet.
How It Works
Normal Mode (No MIDI Input)
- Tablet buttons select chords
- Tablet strumming plays those chord notes
- Expression comes from tablet (pressure, tilt, position)
MIDI Input Mode
- MIDI keyboard selects which notes to play
- Tablet strumming triggers those notes
- Expression still comes from tablet (pressure, tilt)
This gives you the best of both worlds: keyboard note selection + tablet expression!
Configuration
Disable MIDI Input (Default)
{
"startupConfiguration": {
"midiInputId": null
}
}
Enable MIDI Input
{
"startupConfiguration": {
"midiInputId": "Launchkey MK4 25 MIDI Out"
}
}
Finding your device name:
- Run Strumboli without
midiInputIdset - Check console output for available MIDI devices
- Copy exact device name into configuration
- Restart Strumboli
Use Cases
Piano-Style Performance
Play chords on keyboard, strum with tablet for dynamics:
{
"startupConfiguration": {
"midiInputId": "Digital Piano MIDI Out"
},
"noteVelocity": {
"control": "pressure",
"curve": 4.0
}
}
Bass Lines
Play bass notes on keyboard with tablet expression:
{
"startupConfiguration": {
"midiInputId": "MIDI Controller",
"strumming": {
"upperNoteSpread": 0,
"lowerNoteSpread": 1
}
}
}
Melody with Expression
Keyboard for melody, tablet for articulation:
{
"startupConfiguration": {
"midiInputId": "MIDI Keyboard"
},
"noteDuration": {
"control": "yaxis",
"min": 0.1,
"max": 2.0
},
"pitchBend": {
"control": "tiltX"
}
}
Common MIDI Devices
MIDI Keyboards
- Novation Launchkey series
- Arturia KeyLab series
- M-Audio Keystation series
- Roland A-series
- Native Instruments Komplete Kontrol
MIDI Controllers
- AKAI MPK Mini
- Novation Launchpad
- Arturia BeatStep
- Korg nanoKEY
Virtual MIDI
- macOS: IAC Driver (Audio MIDI Setup)
- Windows: loopMIDI, MIDI-OX
- Linux: ALSA virtual ports
MIDI Input Behavior
Note On Messages
- Single note: Plays that note with tablet expression
- Multiple notes (chord): Plays all notes simultaneously
- Note spread: Affected by
upperNoteSpreadandlowerNoteSpreadsettings
Note Off Messages
- Releases notes based on
noteDurationsettings - Can be overridden by tablet release
Velocity
- MIDI velocity is ignored by default
- Tablet pressure controls velocity via
noteVelocitysettings - This allows consistent dynamics regardless of keyboard touch
Sustain/Hold Pedal
- Hold pedal extends note duration
- Overrides
noteDurationsettings while held - Notes release when pedal is released
Configuration Examples
Simple Keyboard Input
{
"startupConfiguration": {
"midiInputId": "USB MIDI Keyboard"
}
}
Keyboard + Tablet Buttons
{
"startupConfiguration": {
"midiInputId": "MIDI Keyboard"
},
"tabletButtons": {
"1": ["transpose", 12],
"2": ["transpose", -12],
"3": "toggle-repeater"
}
}
Virtual MIDI from DAW
{
"startupConfiguration": {
"midiInputId": "IAC Driver Bus 1"
}
}
Troubleshooting
Device Not Found
- Check device is connected and powered on
- Verify device name spelling (case-sensitive)
- Check Strumboli console output for available devices
- Try disconnecting and reconnecting device
- Restart Strumboli after connecting device
No Notes Triggering
- Verify MIDI input is connected
- Check
midiInputIdmatches device name exactly - Test device in another MIDI application
- Look for error messages in console
- Verify MIDI channels match (if applicable)
Notes Stuck
- Press keys again to send Note Off
- Check for MIDI feedback loops
- Restart Strumboli
- Disconnect and reconnect MIDI device
Wrong Notes Playing
- Verify
upperNoteSpreadandlowerNoteSpreadsettings - Check transpose settings
- Ensure correct MIDI octave on keyboard
- Test with simple single notes first
Advanced: Virtual MIDI Setup
macOS
- Open Audio MIDI Setup
- Window → Show MIDI Studio
- Double-click IAC Driver
- Check "Device is online"
- Use
"midiInputId": "IAC Driver Bus 1"
Windows (loopMIDI)
- Download and install loopMIDI
- Create new virtual port
- Use that port name in
midiInputId
Linux (ALSA)
# Create virtual port
aconnect -l
# Note port numbers, then:
aconnect [source] [destination]
Related Documentation
- Server & Startup - Overview of startup features
- Strumming - Note spread configuration
- Note Velocity - Dynamics control
- Tablet Buttons - Button configuration