summaryrefslogtreecommitdiff
path: root/muse2/muse/importmidi.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'muse2/muse/importmidi.cpp')
-rw-r--r--muse2/muse/importmidi.cpp21
1 files changed, 15 insertions, 6 deletions
diff --git a/muse2/muse/importmidi.cpp b/muse2/muse/importmidi.cpp
index ccd33b92..bd3c8a9f 100644
--- a/muse2/muse/importmidi.cpp
+++ b/muse2/muse/importmidi.cpp
@@ -180,7 +180,12 @@ bool MusE::importMidi(const QString name, bool merge)
MusECore::MidiTrack* track = new MusECore::MidiTrack();
if ((*t)->isDrumTrack)
+ {
+ if (MusEGlobal::config.importMidiNewStyleDrum)
+ track->setType(MusECore::Track::NEW_DRUM);
+ else
track->setType(MusECore::Track::DRUM);
+ }
track->setOutChannel(channel);
track->setOutPort(port);
@@ -199,15 +204,18 @@ bool MusE::importMidi(const QString name, bool merge)
// Hmm. buildMidiEventList already takes care of this.
// But it seems to work. How? Must test.
if (channel == 9 && MusEGlobal::song->mtype() != MT_UNKNOWN) {
+ if (MusEGlobal::config.importMidiNewStyleDrum)
+ track->setType(MusECore::Track::NEW_DRUM);
+ else
+ {
track->setType(MusECore::Track::DRUM);
- //
- // remap drum pitch with drumInmap
- //
+
+ // remap drum pitch with drumOutmap
MusECore::EventList* tevents = track->events();
for (MusECore::iEvent i = tevents->begin(); i != tevents->end(); ++i) {
MusECore::Event ev = i->second;
if (ev.isNote()) {
- int pitch = MusEGlobal::drumInmap[ev.pitch()];
+ int pitch = MusEGlobal::drumOutmap[ev.pitch()];
ev.setPitch(pitch);
}
else
@@ -216,10 +224,11 @@ bool MusE::importMidi(const QString name, bool merge)
int ctl = ev.dataA();
MusECore::MidiController *mc = mport->drumController(ctl);
if(mc)
- ev.setA((ctl & ~0xff) | MusEGlobal::drumInmap[ctl & 0x7f]);
+ ev.setA((ctl & ~0xff) | MusEGlobal::drumOutmap[ctl & 0x7f]);
}
- }
}
+ }
+ }
processTrack(track);