diff options
author | Florian Jung <flo@windfisch.org> | 2011-10-10 16:15:56 +0000 |
---|---|---|
committer | Florian Jung <flo@windfisch.org> | 2011-10-10 16:15:56 +0000 |
commit | b3280635650c81a718c1b93a2a3436d7bb35bab8 (patch) | |
tree | e22f0461b7af98ddfa54eb8ce01be36cb2c51e42 /muse2/muse/track.cpp | |
parent | 0b3e41f1bc7140de590d57f40df52412855c9099 (diff) |
track's drumlists can be loaded, saved and copied around
Diffstat (limited to 'muse2/muse/track.cpp')
-rw-r--r-- | muse2/muse/track.cpp | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/muse2/muse/track.cpp b/muse2/muse/track.cpp index 8f213616..2df8a718 100644 --- a/muse2/muse/track.cpp +++ b/muse2/muse/track.cpp @@ -820,14 +820,14 @@ void MidiTrack::writeOurDrumSettings(int level, Xml& xml) const { xml.tag(level++, "our_drum_settings"); - xml.intTag(level, "tied", _drummap_tied_to_patch); + writeOurDrumMap(level, xml, false); - writeOurDrumMap(level, xml); + xml.intTag(level, "tied", _drummap_tied_to_patch); xml.etag(level, "our_drum_settings"); } -void MidiTrack::writeOurDrumMap(int level, Xml& xml) const +void MidiTrack::writeOurDrumMap(int level, Xml& xml, bool full) const { xml.tag(level++, "our_drummap"); @@ -849,23 +849,23 @@ void MidiTrack::writeOurDrumMap(int level, Xml& xml) const (dm->lv1 != idm->lv1) || (dm->lv2 != idm->lv2) || (dm->lv3 != idm->lv3) || (dm->lv4 != idm->lv4) || (dm->enote != idm->enote) || (dm->mute != idm->mute) || - _drummap_hidden[i] ) + _drummap_hidden[i] || full) { xml.tag(level++, "entry pitch=\"%d\"", i); // when any of these "if"s changes, also update the large "if" // above (this scope's parent) - if (dm->name != idm->name) xml.strTag(level, "name", dm->name); - if (dm->vol != idm->vol) xml.intTag(level, "vol", dm->vol); - if (dm->quant != idm->quant) xml.intTag(level, "quant", dm->quant); - if (dm->len != idm->len) xml.intTag(level, "len", dm->len); - if (dm->lv1 != idm->lv1) xml.intTag(level, "lv1", dm->lv1); - if (dm->lv2 != idm->lv2) xml.intTag(level, "lv2", dm->lv2); - if (dm->lv3 != idm->lv3) xml.intTag(level, "lv3", dm->lv3); - if (dm->lv4 != idm->lv4) xml.intTag(level, "lv4", dm->lv4); - if (dm->enote != idm->enote) xml.intTag(level, "enote", dm->enote); - if (dm->mute != idm->mute) xml.intTag(level, "mute", dm->mute); - if (_drummap_hidden[i]) xml.intTag(level, "hide", _drummap_hidden[i]); + if (full || dm->name != idm->name) xml.strTag(level, "name", dm->name); + if (full || dm->vol != idm->vol) xml.intTag(level, "vol", dm->vol); + if (full || dm->quant != idm->quant) xml.intTag(level, "quant", dm->quant); + if (full || dm->len != idm->len) xml.intTag(level, "len", dm->len); + if (full || dm->lv1 != idm->lv1) xml.intTag(level, "lv1", dm->lv1); + if (full || dm->lv2 != idm->lv2) xml.intTag(level, "lv2", dm->lv2); + if (full || dm->lv3 != idm->lv3) xml.intTag(level, "lv3", dm->lv3); + if (full || dm->lv4 != idm->lv4) xml.intTag(level, "lv4", dm->lv4); + if (full || dm->enote != idm->enote) xml.intTag(level, "enote", dm->enote); + if (full || dm->mute != idm->mute) xml.intTag(level, "mute", dm->mute); + if (full || _drummap_hidden[i]) xml.intTag(level, "hide", _drummap_hidden[i]); // anote is ignored anyway, as dm->anote == i, and this is // already stored in the begin tag (pitch=...) @@ -989,9 +989,10 @@ void MidiTrack::readOurDrumSettings(Xml& xml) } } -void MidiTrack::readOurDrumMap(Xml& xml) +void MidiTrack::readOurDrumMap(Xml& xml, bool dont_init) { - init_drummap(false); + if (!dont_init) init_drummap(false); + _drummap_tied_to_patch=false; for (;;) { |