Skip to content

MIDI note parameter support - #258

Merged
benjaminfox merged 7 commits into
mainfrom
128-note-parameters
Jun 30, 2026
Merged

MIDI note parameter support#258
benjaminfox merged 7 commits into
mainfrom
128-note-parameters

Conversation

@benjaminfox

Copy link
Copy Markdown
Collaborator

For #128, I'd like to extend this dataset to document MIDI note behaviour, which is especially helpful with drum machines.

I propose doing this by accepting device.triggers.csv files that use a different format than the existing dataset's device.csv files. I think this serves people who only want to read one kind of file, and people who want simple access to both kinds of files, equally well.

Here are some samples:

These are the proposed columns:

Column Required Comment
manufacturer Must match containing directory
device Must match filename + .triggers.csv
section
sound_name Something like 'Bass drum', 'BD', etc.
sound_description Use when sound_name is not self-explanatory. Caveats and warnings belong in the comments column.
midi_channel Must be either a valid MIDI channel number (1 through 16 inclusive), or one of: basic, omni, active.
note_number_min_value For sounds that are triggered only by a single note number, use that single note number. For sounds that are triggered by a continuous range of note numbers, use that range's lowest note number.
note_number_max_value For sounds that are triggered only by a single note number, use that single note number. For sounds that are triggered by a continuous range of note numbers, use that range's highest note number.
note_number_default_value For sounds that are triggered only by a single note number, use that single note number. For sounds that are triggered by a continuous range of note numbers, where a default or preferred note number is specified, use that default or preferred note number.
comments Caveats and warnings that don't fit in sound_description.
velocity_usage The sound's variance with velocity (from 1 to 127 inclusive), documented using the MIDI Guide usage grammar (e.g. 1~127: Volume)

The valid special values in the midi_channel column mean:

  • basic: The device's MIDI channel, when it only has an undocumented and single (either configurable or factory-set) channel.
  • omni: The device receives on all MIDI channels, and doesn't distinguish between them.
  • auto: Some multi-track/multi-instrument devices have a MIDI channel that routes to the currently-active track/instrument (Elektron, etc.); this value indicates the active routing channel should be used.

Some columns I didn't include:

  • Anything about one-shot/gate behaviour: doesn't ride along with the MIDI note, and is entirely defined on the synth itself
  • The note name (C#2, etc): I considered having two columns for this information (for the corresponding Yamaha and Roland pitch), but I feel that this places a burden on the documenter that's disproportionate to the value of recording this easily-computable information. The project website might compute and display this information for the convenience of visitors.

I'd be happy to hear any feedback on this approach.

@benjaminfox

benjaminfox commented Jun 30, 2026

Copy link
Copy Markdown
Collaborator Author

I'm moving ahead with this. Steps before merge:

  • Add device.triggers.csv documentation to README.md
  • Add device.triggers.csv documentation to CONTRIBUTING.md
  • Change the tests to accept valid device.triggers.csv

@benjaminfox
benjaminfox merged commit dd5a716 into main Jun 30, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant