diff options
author | Florian Jung <flo@windfisch.org> | 2012-03-15 18:21:23 +0000 |
---|---|---|
committer | Florian Jung <flo@windfisch.org> | 2012-03-15 18:21:23 +0000 |
commit | 27b7bf6815cda7abb67026c37b3e44daee1803cb (patch) | |
tree | 0b9d1c0bc84ac7ff8032e707f2b5fb4e0aaabb5c /muse2/muse/midi.cpp | |
parent | 2d6f113a10eb485694e20a78500f650776d701e3 (diff) |
merged with trunk
Diffstat (limited to 'muse2/muse/midi.cpp')
-rw-r--r-- | muse2/muse/midi.cpp | 31 |
1 files changed, 10 insertions, 21 deletions
diff --git a/muse2/muse/midi.cpp b/muse2/muse/midi.cpp index 85a47ead..2c3c3d8c 100644 --- a/muse2/muse/midi.cpp +++ b/muse2/muse/midi.cpp @@ -168,7 +168,6 @@ QString nameSysex(unsigned int len, const unsigned char* buf) case 0x43: s = "Yamaha: "; break; case 0x44: s = "Casio"; break; case 0x45: s = "Akai"; break; - //case 0x7c: s = "MusE Soft Synth"; break; case MUSE_SYNTH_SYSEX_MFG_ID: s = "MusE Soft Synth"; break; // p4.0.27 case 0x7d: s = "Educational Use"; break; case 0x7e: s = "Universal: Non Real Time"; break; @@ -423,7 +422,7 @@ void buildMidiEventList(EventList* del, const MPEventList* el, MidiTrack* track, break; case 0x6: // Marker { - unsigned ltick = CALC_TICK(tick);//(tick * MusEGlobal::config.division + div/2) / div; + unsigned ltick = CALC_TICK(tick); MusEGlobal::song->addMarker(QString((const char*)(data)), ltick, false); } break; @@ -439,8 +438,8 @@ void buildMidiEventList(EventList* del, const MPEventList* el, MidiTrack* track, case 0x51: // Tempo { unsigned tempo = data[2] + (data[1] << 8) + (data[0] <<16); - unsigned ltick = CALC_TICK(tick);// (unsigned(tick) * unsigned(MusEGlobal::config.division) + unsigned(div/2)) / unsigned(div); - // After ca 10 mins 32 bits will not be enough... This expression has to be changed/factorized or so in some "sane" way... + unsigned ltick = CALC_TICK(tick); + // FIXME: After ca 10 mins 32 bits will not be enough... This expression has to be changed/factorized or so in some "sane" way... MusEGlobal::tempomap.addTempo(ltick, tempo); } break; @@ -451,8 +450,7 @@ void buildMidiEventList(EventList* del, const MPEventList* el, MidiTrack* track, int timesig_n = 1; for (int i = 0; i < n; i++) timesig_n *= 2; - int ltick = CALC_TICK(tick);//(tick * MusEGlobal::config.division + div/2) / div; - ///sigmap.add(ltick, timesig_z, timesig_n); + int ltick = CALC_TICK(tick); AL::sigmap.add(ltick, AL::TimeSignature(timesig_z, timesig_n)); } break; @@ -535,9 +533,9 @@ void buildMidiEventList(EventList* del, const MPEventList* el, MidiTrack* track, i->first, ev.pitch(), ev.velo()); continue; } - int tick = CALC_TICK(ev.tick()); //(ev.tick() * MusEGlobal::config.division + div/2) / div; + int tick = CALC_TICK(ev.tick()); if (ev.isNote()) { - int lenTick = CALC_TICK(ev.lenTick()); //(ev.lenTick() * MusEGlobal::config.division + div/2) / div; + int lenTick = CALC_TICK(ev.lenTick()); ev.setLenTick(lenTick); } ev.setTick(tick); @@ -566,7 +564,7 @@ void Audio::sendLocalOff() { for (int k = 0; k < MIDI_PORTS; ++k) { for (int i = 0; i < MIDI_CHANNELS; ++i) - MusEGlobal::midiPorts[k].sendEvent(MusECore::MidiPlayEvent(0, k, i, MusECore::ME_CONTROLLER, MusECore::CTRL_LOCAL_OFF, 0)); + MusEGlobal::midiPorts[k].sendEvent(MusECore::MidiPlayEvent(0, k, i, MusECore::ME_CONTROLLER, MusECore::CTRL_LOCAL_OFF, 0), true); } } @@ -636,12 +634,10 @@ void Audio::initDevices() } } // - // damit Midi-Devices, die mehrere Ports besitzen, wie z.B. - // das Korg NS5R, nicht mehrmals zwischen GM und XG/GS hin und - // hergeschaltet werden, wird zunïÿýhst auf allen Ports GM - // initialisiert, und dann erst XG/GS + // First all ports are initialized to GM and then are changed + // to XG/GS in order to prevent that devices with more than one + // port, e.g. Korg NS5R, toggle between GM and XG/GS several times. // - // Standard initialization... for (int i = 0; i < MIDI_PORTS; ++i) { if (!activePorts[i]) @@ -1082,14 +1078,12 @@ void Audio::processMidi() if (devport == defaultPort) { event.setPort(port); if(md && track->recEcho()) - //playEvents->add(event); md->addScheduledEvent(event); } else { // Hmm, this appears to work, but... Will this induce trouble with md->setNextPlayEvent?? MidiDevice* mdAlt = MusEGlobal::midiPorts[devport].device(); if(mdAlt && track->recEcho()) - //mdAlt->playEvents()->add(event); mdAlt->addScheduledEvent(event); } // Shall we activate meters even while rec echo is off? Sure, why not... @@ -1128,7 +1122,6 @@ void Audio::processMidi() drumRecEvent.setB(preVelo); // Tested: Events were not being recorded for a drum map entry pointing to a // different port. This must have been wrong - buildMidiEventList would ignore this. Tim. - //drumRecEvent.setPort(devport); drumRecEvent.setPort(port); //rec-event to current port drumRecEvent.setChannel(track->outChannel()); //rec-event to current channel @@ -1174,11 +1167,9 @@ void Audio::processMidi() else if (state == PRECOUNT) { isMeasure = (clickno % clicksMeasure) == 0; } - //int frame = MusEGlobal::tempomap.tick2frame(midiClick) + frameOffset; int evtime = extsync ? midiClick : MusEGlobal::tempomap.tick2frame(midiClick) + frameOffset; // p3.3.25 if (md) { - //MusECore::MidiPlayEvent ev(frame, MusEGlobal::clickPort, MusEGlobal::clickChan, MusECore::ME_NOTEON, MusECore::MidiPlayEvent ev(evtime, MusEGlobal::clickPort, MusEGlobal::clickChan, MusECore::ME_NOTEON, MusEGlobal::beatClickNote, MusEGlobal::beatClickVelo); @@ -1193,7 +1184,6 @@ void Audio::processMidi() md->addStuckNote(ev); } if (MusEGlobal::audioClickFlag) { - //MusECore::MidiPlayEvent ev1(frame, 0, 0, MusECore::ME_NOTEON, 0, 0); MusECore::MidiPlayEvent ev(evtime, 0, 0, MusECore::ME_NOTEON, 0, 0); ev.setA(isMeasure ? 0 : 1); metronome->addScheduledEvent(ev); @@ -1221,7 +1211,6 @@ void Audio::processMidi() // ALSA devices handled by another thread. if((*id)->deviceType() != MidiDevice::ALSA_MIDI) - //if((*id)->deviceType() == MidiDevice::JACK_MIDI) (*id)->processMidi(); } MusEGlobal::midiBusy=false; |