A rhythm patch will specify, for each note, a patch (FM or PSG), pitch (MSB=note and LSB=cents), and hold time (milliseconds). Other top-level parameters might include: max polyphony, choke groups (though this could just be hardcoded for hi-hats or something).
To start, this could be limited to the original 47 GM percussion instruments (notes 35-81) or 61 GS percussion instruments. A way to sparsely define instruments could be cool, since most kits will probably only use a dozen or so of the instruments. There could also be a hard-coded default kit, so custom kits that only specify a couple instruments can still play other instruments via their default values.
Also need a way to specify whether a MIDI channel is assigned to be a rhythm set or tonal voice. To start, channels 10 & 11 could be hardcoded (per GM standard), but it'd be nice for this to be configurable.
A rhythm patch will specify, for each note, a patch (FM or PSG), pitch (MSB=note and LSB=cents), and hold time (milliseconds). Other top-level parameters might include: max polyphony, choke groups (though this could just be hardcoded for hi-hats or something).
To start, this could be limited to the original 47 GM percussion instruments (notes 35-81) or 61 GS percussion instruments. A way to sparsely define instruments could be cool, since most kits will probably only use a dozen or so of the instruments. There could also be a hard-coded default kit, so custom kits that only specify a couple instruments can still play other instruments via their default values.
Also need a way to specify whether a MIDI channel is assigned to be a rhythm set or tonal voice. To start, channels 10 & 11 could be hardcoded (per GM standard), but it'd be nice for this to be configurable.