summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Robillard <d@drobilla.net>2013-01-20 02:41:27 +0000
committerDavid Robillard <d@drobilla.net>2013-01-20 02:41:27 +0000
commitf7ada4b3233c9c68cc27714ce310068d4adbb07e (patch)
treeae03fe1543da65a12ba29923a5f685c10393d19e
parent411dd7566f64959167419713e702e06af09465e2 (diff)
Add General MIDI drum note names and patch names.
Support loading note names per ChannelNameSet (like GM) in addition to per Patch (like DM5). git-svn-id: svn://localhost/ardour2/branches/3.0@13913 d708f5d6-7413-0410-9779-e7cbd77b26cf
-rw-r--r--libs/midi++2/midi++/midnam_patch.h3
-rw-r--r--libs/midi++2/midnam_patch.cc12
-rw-r--r--patchfiles/MIDI.midnam76
3 files changed, 90 insertions, 1 deletions
diff --git a/libs/midi++2/midi++/midnam_patch.h b/libs/midi++2/midi++/midnam_patch.h
index 54d36735e5..338642025e 100644
--- a/libs/midi++2/midi++/midnam_patch.h
+++ b/libs/midi++2/midi++/midnam_patch.h
@@ -197,6 +197,8 @@ public:
return boost::shared_ptr<Patch>();
}
+ const std::string& note_list_name() const { return _note_list_name; }
+
XMLNode& get_state (void);
int set_state (const XMLTree&, const XMLNode&);
@@ -211,6 +213,7 @@ private:
PatchMap _patch_map;
PatchList _patch_list;
std::string _patch_list_name;
+ std::string _note_list_name;
};
std::ostream& operator<< (std::ostream&, const ChannelNameSet&);
diff --git a/libs/midi++2/midnam_patch.cc b/libs/midi++2/midnam_patch.cc
index 83f701777b..624e1605b5 100644
--- a/libs/midi++2/midnam_patch.cc
+++ b/libs/midi++2/midnam_patch.cc
@@ -435,6 +435,10 @@ ChannelNameSet::set_state (const XMLTree& tree, const XMLNode& node)
_patch_list.push_back((*patch)->patch_primary_key());
}
}
+
+ if (node->name() == "UsesNoteNameList") {
+ _note_list_name = node->property ("Name")->value();
+ }
}
return 0;
@@ -537,6 +541,14 @@ MasterDeviceNames::note_name(const std::string& mode_name,
boost::shared_ptr<const NoteNameList> note_names(
note_name_list(patch->note_list_name()));
if (!note_names) {
+ /* No note names specific to this patch, check the ChannelNameSet */
+ boost::shared_ptr<ChannelNameSet> chan_names = channel_name_set_by_device_mode_and_channel(
+ mode_name, channel);
+ if (chan_names) {
+ note_names = note_name_list(chan_names->note_list_name());
+ }
+ }
+ if (!note_names) {
return "";
}
diff --git a/patchfiles/MIDI.midnam b/patchfiles/MIDI.midnam
index b00db7460d..bb6edc9f97 100644
--- a/patchfiles/MIDI.midnam
+++ b/patchfiles/MIDI.midnam
@@ -38,7 +38,7 @@
<ChannelNameSetAssign Channel="7" NameSet="General MIDI Voices"/>
<ChannelNameSetAssign Channel="8" NameSet="General MIDI Voices"/>
<ChannelNameSetAssign Channel="9" NameSet="General MIDI Voices"/>
- <ChannelNameSetAssign Channel="10" NameSet="General MIDI Voices"/>
+ <ChannelNameSetAssign Channel="10" NameSet="General MIDI Drums"/>
<ChannelNameSetAssign Channel="11" NameSet="General MIDI Voices"/>
<ChannelNameSetAssign Channel="12" NameSet="General MIDI Voices"/>
<ChannelNameSetAssign Channel="13" NameSet="General MIDI Voices"/>
@@ -97,6 +97,19 @@
<UsesPatchNameList Name="General MIDI Patches"/>
</PatchBank>
</ChannelNameSet>
+ <ChannelNameSet Name="General MIDI Drums">
+ <AvailableForChannels>
+ <AvailableChannel Channel="10" Available="true"/>
+ </AvailableForChannels>
+ <UsesNoteNameList Name="General MIDI Drums"/>
+ <PatchBank Name="Patches" ROM="false">
+ <MIDICommands>
+ <ControlChange Control="120" Value="120"/>
+ <ControlChange Control="32" Value="0"/>
+ </MIDICommands>
+ <UsesPatchNameList Name="General MIDI Drum Patches"/>
+ </PatchBank>
+ </ChannelNameSet>
<PatchNameList Name="Unnamed Patches">
<Patch Number="1" Name="Patch 1" ProgramChange="0"/>
<Patch Number="2" Name="Patch 2" ProgramChange="1"/>
@@ -357,6 +370,18 @@
<Patch Number="126" Name="Applause" ProgramChange="126"/>
<Patch Number="127" Name="Gunshot" ProgramChange="127"/>
</PatchNameList>
+ <PatchNameList Name="General MIDI Drum Patches">
+ <Patch Number="1" Name="Standard Kit" ProgramChange="1"/>
+ <Patch Number="9" Name="Room Kit" ProgramChange="9"/>
+ <Patch Number="17" Name="Power Kit" ProgramChange="17"/>
+ <Patch Number="25" Name="Electronic Kit" ProgramChange="25"/>
+ <Patch Number="26" Name="TR-808 Kit" ProgramChange="26"/>
+ <Patch Number="33" Name="Jazz Kit" ProgramChange="33"/>
+ <Patch Number="41" Name="Brush Kit" ProgramChange="41"/>
+ <Patch Number="49" Name="Orchestra Kit" ProgramChange="49"/>
+ <Patch Number="57" Name="Sound FX Kit" ProgramChange="57"/>
+ <Patch Number="128" Name="CM-64/CM-32L" ProgramChange="128"/>
+ </PatchNameList>
<ControlNameList Name="Controls">
<Control Type="7bit" Number="0" Name="Bank Select"/>
<Control Type="7bit" Number="1" Name="Modulation Wheel or Lever"/>
@@ -487,5 +512,54 @@
<Control Type="7bit" Number="126" Name="[Channel Mode Message] Mono Mode On (+ poly off, + all notes off)"/>
<Control Type="7bit" Number="127" Name="[Channel Mode Message] Poly Mode On (+ mono off, +all notes off) 0"/>
</ControlNameList>
+ <NoteNameList Name="General MIDI Drums">
+ <Note Number="35" Name="Bass Drum 2"/>
+ <Note Number="36" Name="Bass Drum 1"/>
+ <Note Number="37" Name="Side Stick/Rimshot"/>
+ <Note Number="38" Name="Snare Drum 1"/>
+ <Note Number="39" Name="Hand Clap"/>
+ <Note Number="40" Name="Snare Drum 2"/>
+ <Note Number="41" Name="Low Tom 2"/>
+ <Note Number="42" Name="Closed Hi-hat"/>
+ <Note Number="43" Name="Low Tom 1"/>
+ <Note Number="44" Name="Pedal Hi-hat"/>
+ <Note Number="45" Name="Mid Tom 2"/>
+ <Note Number="46" Name="Open Hi-hat"/>
+ <Note Number="47" Name="Mid Tom 1"/>
+ <Note Number="48" Name="High Tom 2"/>
+ <Note Number="49" Name="Crash Cymbal 1"/>
+ <Note Number="50" Name="High Tom 1"/>
+ <Note Number="51" Name="Ride Cymbal 1"/>
+ <Note Number="52" Name="Chinese Cymbal"/>
+ <Note Number="53" Name="Ride Bell"/>
+ <Note Number="54" Name="Tambourine"/>
+ <Note Number="55" Name="Splash Cymbal"/>
+ <Note Number="56" Name="Cowbell"/>
+ <Note Number="57" Name="Crash Cymbal 2"/>
+ <Note Number="58" Name="Vibra Slap"/>
+ <Note Number="59" Name="Ride Cymbal 2"/>
+ <Note Number="60" Name="High Bongo"/>
+ <Note Number="61" Name="Low Bongo"/>
+ <Note Number="62" Name="Mute High Conga"/>
+ <Note Number="63" Name="Open High Conga"/>
+ <Note Number="64" Name="Low Conga"/>
+ <Note Number="65" Name="High Timbale"/>
+ <Note Number="66" Name="Low Timbale"/>
+ <Note Number="67" Name="High Agogô"/>
+ <Note Number="68" Name="Low Agogô"/>
+ <Note Number="69" Name="Cabasa"/>
+ <Note Number="70" Name="Maracas"/>
+ <Note Number="71" Name="Short Whistle"/>
+ <Note Number="72" Name="Long Whistle"/>
+ <Note Number="73" Name="Short Güiro"/>
+ <Note Number="74" Name="Long Güiro"/>
+ <Note Number="75" Name="Claves"/>
+ <Note Number="76" Name="High Wood Block"/>
+ <Note Number="77" Name="Low Wood Block"/>
+ <Note Number="78" Name="Mute Cuíca"/>
+ <Note Number="79" Name="Open Cuíca"/>
+ <Note Number="80" Name="Mute Triangle"/>
+ <Note Number="81" Name="Open Triangle"/>
+ </NoteNameList>
</MasterDeviceNames>
</MIDINameDocument>