Skip to content

Interface Instrument Creation

github-actions[bot] edited this page May 8, 2026 · 2 revisions

Interface — Instrument Creation & Management

The instrument management interface is the central hub for registering, configuring, and fine-tuning every MIDI device connected to Général Midi Boop.

Instruments page

Source files: public/js/features/InstrumentManagementPage.js, public/js/features/InstrumentSettingsModal.js, public/js/features/InstrumentCapabilitiesModal.js.

Device Discovery

Devices appear automatically when connected:

Transport How it appears
USB Detected on plug-in via OS MIDI enumeration
Bluetooth LE Requires BLE scanning (button in the device panel)
RTP-MIDI / Network Requires Network scanning or manual IP entry
Serial UART Auto-detected on configured UART ports

If a device supports the GMBoop SysEx identity protocol it is automatically named and pre-configured on first connection — see Instrument-Developer-Guide.

Instrument List

Each device card shows:

  • Display name (editable)
  • Connection type badge
  • Enable / disable toggle
  • Active MIDI channels
  • Compatibility score (from the last Auto-Assignment run)

Click the card to open the full settings modal.

Instrument Settings Modal

Identity

Field Description
Display name Free-text label shown everywhere in the UI
MIDI channel(s) Which channels 1–16 this instrument listens on
Enable / disable Excluded instruments are skipped during playback and auto-assignment

Instrument Type & Capabilities

Click "Edit capabilities" to open the Capabilities sub-modal:

Field Description
Instrument type GM family (piano, guitar, bass, drums, …) — drives UI and adaptation logic
Sub-type Specific voice within the family (e.g. acoustic grand, nylon guitar)
GM program General MIDI program number 0–127 (0x7F = not applicable for drums)
Note selection mode Range — contiguous from min to max; Discrete — explicit note list
Note range min / max Lowest and highest playable MIDI note (0–127)
Polyphony Maximum simultaneous notes the instrument can produce
Supported CCs Control Change numbers the device responds to

These values determine how MIDI files are adapted to the instrument. When the device sends a Block 6 SysEx response they are filled automatically (capabilities_source = 'sysex').

Latency Compensation

Field Description
Sync delay (ms) Per-instrument playback offset applied automatically
Auto-calibrate Opens the [[Interface-Microphone

The system subtracts sync_delay from the note schedule so every device produces sound at the right moment regardless of its internal processing time.

String Instrument Configuration

For instruments of type guitar, bass, strings, or ethnic string types, an extra panel unlocks:

Field Description
Number of strings Physical string count (1–6)
Number of frets Fret count (0 = fretless)
Tuning Open-string MIDI notes, lowest to highest
Capo fret Capo position (0 = no capo)
Is fretless Enables continuous pitch model
CC string / fret CC numbers used to command string and fret selection on the hardware

19 standard tuning presets are provided (guitar, bass, violin, ukulele, mandolin, …). When the device sends a Block 7 SysEx response this panel is filled automatically.

Hand Position

For automated pianos and motorised string instruments, the "Hand position" section enables the hand-planning subsystem. Full documentation: Interface-Hand-Management.

Multi-Instrument Devices

A single physical device (e.g. a Teensy with piano keys on channel 0 and a drum pad on channel 9) can host multiple virtual instruments. Use the "Add instrument" button inside the device card to register additional instruments on different channels. Block 5 SysEx auto-discovery populates this list automatically.

Validation & Error Indicators

  • A red badge on a device card means a required field (e.g. note range) is missing.
  • The auto-assignment compatibility score turns orange below 70 and red below 40.
  • Instruments with enable = false are grayed out and ignored by the playback engine.

Related Pages

Clone this wiki locally