Skip to content

Sound module: patch, key and macro names for DAWs (MIDNAM and .ins) - #57

Merged
bdbarnett merged 1 commit into
mainfrom
fg-soundmodule-catalog
Nov 11, 2026
Merged

bdbarnett merged 1 commit into
mainfrom
fg-soundmodule-catalog

Conversation

@bdbarnett

Copy link
Copy Markdown
Contributor

A DAW can now show the sound module's instruments, patches, drum keys and macros by name. python -m soundmodule.names --out names/ writes PyDevices Sound Module.midnam (Ardour, Mixbus and other MIDNAM readers) and PyDevices Sound Module.ins (Cakewalk). Each patch carries the Bank Select and Program Change that play it (bank 80 or 81, the instrument's program, the patch as the LSB), General MIDI is bank 0, CC91 and CC93 are named after the module's reverb and chorus, and every instrument with macros gets its own mode that names CC102 to CC117 after them.

The names come from the catalog.json that audioinstruments and audioeffects now ship in their wheels, so they follow the installed versions; --instruments and --effects take a catalog file instead. The engines job checks out just those two files at the commits that added them, since neither is in a release yet. The guide gains a section on it, the MIDI reference links there, and the roadmap bullet goes.

tests/test_soundmodule_names.py builds both files from the real catalogs and parses them back: the MIDNAM with xml.etree, checking every name set, note list and control list it references exists and every patch selects what the engine plays; the .ins with a strict section parser, checking every Patch[], Key[] and Control= resolves and each bank names the right patch at the right program. It fails without the change. Separately, the generated MIDNAM validates against the MMA's MIDINameDocument 1.0 DTD with lxml. I haven't loaded either file in a DAW.

python -m soundmodule.names writes a MIDNAM file and a Cakewalk instrument
definition that name every instrument's patches under the Bank Select and
Program Change that play them, the drum machines' keys, General MIDI's
programs, CC91 and CC93 after the module's reverb and chorus, and CC102 to
CC117 after each instrument's macros. The names come from the catalog.json
that audioinstruments and audioeffects carry.

Checked: tests/test_soundmodule_names.py builds both files from the real
catalogs and parses them back (the MIDNAM with an XML parser, the .ins
section by section), and fails without soundmodule.names. The MIDNAM also
validates against the MIDI Manufacturers Association's DTD.
@bdbarnett
bdbarnett merged commit cfcb26d into main Nov 11, 2026
6 checks passed
@bdbarnett
bdbarnett deleted the fg-soundmodule-catalog branch November 11, 2026 02:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

1 participant