Support loading MIDI note names in NoteGroup tags as well.

git-svn-id: svn://localhost/ardour2/branches/3.0@13919 d708f5d6-7413-0410-9779-e7cbd77b26cf
This commit is contained in:
David Robillard 2013-01-20 04:27:12 +00:00
parent f85bf54e21
commit 586484abf0
2 changed files with 37 additions and 33 deletions

View file

@ -148,7 +148,7 @@ Note::get_state (void)
} }
int int
Note::set_state (const XMLTree&, const XMLNode& node) Note::set_state (const XMLTree& tree, const XMLNode& node)
{ {
assert(node.name() == "Note"); assert(node.name() == "Note");
@ -160,6 +160,13 @@ Note::set_state (const XMLTree&, const XMLNode& node)
_number = atoi(node.property("Number")->value().c_str()) - 1; _number = atoi(node.property("Number")->value().c_str()) - 1;
_name = node.property("Name")->value(); _name = node.property("Name")->value();
if (_number > 127) {
PBD::warning << string_compose("%1: Note number %2 (%3) out of range",
tree.filename(), (int)_number, _name)
<< endmsg;
return -1;
}
return 0; return 0;
} }
@ -172,6 +179,22 @@ NoteNameList::get_state (void)
return *node; return *node;
} }
static void
add_note_from_xml (NoteNameList::Notes& notes, const XMLTree& tree, const XMLNode& node)
{
boost::shared_ptr<Note> note(new Note());
if (!note->set_state (tree, node)) {
if (!notes[note->number()]) {
notes[note->number()] = note;
} else {
PBD::warning
<< string_compose("%1: Duplicate note number %2 (%3) ignored",
tree.filename(), (int)note->number(), note->name())
<< endmsg;
}
}
}
int int
NoteNameList::set_state (const XMLTree& tree, const XMLNode& node) NoteNameList::set_state (const XMLTree& tree, const XMLNode& node)
{ {
@ -182,22 +205,19 @@ NoteNameList::set_state (const XMLTree& tree, const XMLNode& node)
for (XMLNodeList::const_iterator i = node.children().begin(); for (XMLNodeList::const_iterator i = node.children().begin();
i != node.children().end(); ++i) { i != node.children().end(); ++i) {
if ((*i)->name() != "Note") { if ((*i)->name() == "Note") {
continue; add_note_from_xml(_notes, tree, **i);
} } else if ((*i)->name() == "NoteGroup") {
boost::shared_ptr<Note> note(new Note()); for (XMLNodeList::const_iterator j = (*i)->children().begin();
note->set_state (tree, *(*i)); j != (*i)->children().end(); ++j) {
if (note->number() > 127) { if ((*j)->name() == "Note") {
PBD::warning << string_compose("%1: Note number %2 (%3) out of range", add_note_from_xml(_notes, tree, **j);
tree.filename(), (int)note->number(), note->name()) } else {
<< endmsg; PBD::warning << string_compose("%1: Invalid NoteGroup child %2 ignored",
} else if (_notes[note->number()]) { tree.filename(), (*j)->name())
PBD::warning << << endmsg;
string_compose("%1: Duplicate note number %2 (%3) ignored", }
tree.filename(), (int)note->number(), note->name()) }
<< endmsg;
} else {
_notes[note->number()] = note;
} }
} }

View file

@ -882,8 +882,6 @@
</PatchBank> </PatchBank>
</ChannelNameSet> </ChannelNameSet>
<NoteNameList Name="P2123 Pop Kit"> <NoteNameList Name="P2123 Pop Kit">
<NoteGroup Name="HiHat">
</NoteGroup>
<NoteGroup Name="Conga Hi Mute/Open"> <NoteGroup Name="Conga Hi Mute/Open">
<Note Number="62" Name="Conga Sl"/> <Note Number="62" Name="Conga Sl"/>
<Note Number="63" Name="Conga H"/> <Note Number="63" Name="Conga H"/>
@ -961,8 +959,6 @@
<Note Number="84" Name="BellTree"/> <Note Number="84" Name="BellTree"/>
</NoteNameList> </NoteNameList>
<NoteNameList Name="P2124 Velocity Kit"> <NoteNameList Name="P2124 Velocity Kit">
<NoteGroup Name="HiHat">
</NoteGroup>
<NoteGroup Name="Conga Hi Mute/Open"> <NoteGroup Name="Conga Hi Mute/Open">
<Note Number="62" Name="Conga Sl"/> <Note Number="62" Name="Conga Sl"/>
<Note Number="63" Name="Conga H"/> <Note Number="63" Name="Conga H"/>
@ -1040,8 +1036,6 @@
<Note Number="84" Name="BellTree"/> <Note Number="84" Name="BellTree"/>
</NoteNameList> </NoteNameList>
<NoteNameList Name="P2125 Rock Kit"> <NoteNameList Name="P2125 Rock Kit">
<NoteGroup Name="HiHat">
</NoteGroup>
<NoteGroup Name="Conga Hi Mute/Open"> <NoteGroup Name="Conga Hi Mute/Open">
<Note Number="62" Name="Conga Sl"/> <Note Number="62" Name="Conga Sl"/>
<Note Number="63" Name="Conga H"/> <Note Number="63" Name="Conga H"/>
@ -1119,8 +1113,6 @@
<Note Number="84" Name="BellTree"/> <Note Number="84" Name="BellTree"/>
</NoteNameList> </NoteNameList>
<NoteNameList Name="P2126 Jazzy Kit"> <NoteNameList Name="P2126 Jazzy Kit">
<NoteGroup Name="HiHat">
</NoteGroup>
<NoteGroup Name="Conga Hi Mute/Open"> <NoteGroup Name="Conga Hi Mute/Open">
<Note Number="62" Name="Conga Sl"/> <Note Number="62" Name="Conga Sl"/>
<Note Number="63" Name="Conga H"/> <Note Number="63" Name="Conga H"/>
@ -1198,8 +1190,6 @@
<Note Number="84" Name="BellTree"/> <Note Number="84" Name="BellTree"/>
</NoteNameList> </NoteNameList>
<NoteNameList Name="P2127 House Kit"> <NoteNameList Name="P2127 House Kit">
<NoteGroup Name="HiHat">
</NoteGroup>
<Note Number="28" Name="Crash 1"/> <Note Number="28" Name="Crash 1"/>
<Note Number="29" Name="BassDr Hi"/> <Note Number="29" Name="BassDr Hi"/>
<Note Number="30" Name="Conga"/> <Note Number="30" Name="Conga"/>
@ -1266,8 +1256,6 @@
<Note Number="91" Name="BdDeep"/> <Note Number="91" Name="BdDeep"/>
</NoteNameList> </NoteNameList>
<NoteNameList Name="P2128 Tech Kit"> <NoteNameList Name="P2128 Tech Kit">
<NoteGroup Name="HiHat">
</NoteGroup>
<Note Number="28" Name="Crash"/> <Note Number="28" Name="Crash"/>
<Note Number="29" Name="Snare GM"/> <Note Number="29" Name="Snare GM"/>
<Note Number="30" Name="Dist Kick"/> <Note Number="30" Name="Dist Kick"/>
@ -1334,8 +1322,6 @@
<Note Number="91" Name="BD Deep"/> <Note Number="91" Name="BD Deep"/>
</NoteNameList> </NoteNameList>
<NoteNameList Name="12126 Alien Kit"> <NoteNameList Name="12126 Alien Kit">
<NoteGroup Name="HiHat">
</NoteGroup>
<Note Number="28" Name="Crash"/> <Note Number="28" Name="Crash"/>
<Note Number="29" Name="Snare GM"/> <Note Number="29" Name="Snare GM"/>
<Note Number="30" Name="Dist Kick"/> <Note Number="30" Name="Dist Kick"/>
@ -1472,8 +1458,6 @@
<Note Number="91" Name="BelAir"/> <Note Number="91" Name="BelAir"/>
</NoteNameList> </NoteNameList>
<NoteNameList Name="12128 Street Kit"> <NoteNameList Name="12128 Street Kit">
<NoteGroup Name="HiHat">
</NoteGroup>
<Note Number="24" Name="T8Bd"/> <Note Number="24" Name="T8Bd"/>
<Note Number="25" Name="T8Snare"/> <Note Number="25" Name="T8Snare"/>
<Note Number="26" Name="SdPrmH"/> <Note Number="26" Name="SdPrmH"/>