diff options
| author | Orcan Ogetbil <oget.fedora@gmail.com> | 2011-10-07 02:20:29 +0000 | 
|---|---|---|
| committer | Orcan Ogetbil <oget.fedora@gmail.com> | 2011-10-07 02:20:29 +0000 | 
| commit | f16b2037025918e32c5fd90527f76e1102e5ecb9 (patch) | |
| tree | 0da3b7a29d13b5b826b291ccb2f2676d2e227b40 /muse2/muse/driver | |
| parent | 42039e7f7f215f6008829d8c6be591c998f1228c (diff) | |
(hopefully) final huge namespace update.
Diffstat (limited to 'muse2/muse/driver')
| -rw-r--r-- | muse2/muse/driver/alsamidi.cpp | 90 | ||||
| -rw-r--r-- | muse2/muse/driver/alsamidi.h | 16 | ||||
| -rw-r--r-- | muse2/muse/driver/audiodev.h | 5 | ||||
| -rw-r--r-- | muse2/muse/driver/dummyaudio.cpp | 40 | ||||
| -rw-r--r-- | muse2/muse/driver/jack.cpp | 204 | ||||
| -rw-r--r-- | muse2/muse/driver/jackaudio.h | 7 | ||||
| -rw-r--r-- | muse2/muse/driver/jackmidi.cpp | 91 | ||||
| -rw-r--r-- | muse2/muse/driver/jackmidi.h | 6 | ||||
| -rw-r--r-- | muse2/muse/driver/rtctimer.cpp | 2 | 
9 files changed, 242 insertions, 219 deletions
diff --git a/muse2/muse/driver/alsamidi.cpp b/muse2/muse/driver/alsamidi.cpp index 8ad9c510..eae695db 100644 --- a/muse2/muse/driver/alsamidi.cpp +++ b/muse2/muse/driver/alsamidi.cpp @@ -39,6 +39,8 @@  #include "part.h"  #include "gconfig.h" +namespace MusECore { +  static int alsaSeqFdi = -1;  static int alsaSeqFdo = -1; @@ -407,12 +409,12 @@ void MidiAlsaDevice::processMidi()    if (_playEvents.empty())          return;    int port = midiPort(); -  MidiPort* mp = port != -1 ? &midiPorts[port] : 0; -  unsigned curFrame = audio->curFrame(); -  int tickpos = audio->tickPos(); -  bool extsync = extSyncFlag.value(); +  MidiPort* mp = port != -1 ? &MusEGlobal::midiPorts[port] : 0; +  unsigned curFrame = MusEGlobal::audio->curFrame(); +  int tickpos = MusEGlobal::audio->tickPos(); +  bool extsync = MusEGlobal::extSyncFlag.value();    //int frameOffset = getFrameOffset(); -  //int nextTick = audio->nextTick(); +  //int nextTick = MusEGlobal::audio->nextTick();    // Play all events up to current frame.    iMPEvent i = _playEvents.begin();             @@ -443,12 +445,12 @@ void MidiAlsaDevice::processMidi()    while(!stuckNotesFifo.isEmpty())      _stuckNotes.add(stuckNotesFifo.get()); -  bool extsync = extSyncFlag.value(); +  bool extsync = MusEGlobal::extSyncFlag.value();    //int frameOffset = getFrameOffset(); -  //int nextTick = audio->nextTick(); +  //int nextTick = MusEGlobal::audio->nextTick(); -  // We're in the ALSA midi thread. audio->isPlaying() might not be true during seek right now. -  //if(stop || (seek && audio->isPlaying())) +  // We're in the ALSA midi thread. MusEGlobal::audio->isPlaying() might not be true during seek right now. +  //if(stop || (seek && MusEGlobal::audio->isPlaying()))    if(stop || seek)    {      //--------------------------------------------------- @@ -473,7 +475,7 @@ void MidiAlsaDevice::processMidi()        _playEvents.add(playEventFifo.get());      /*  TODO Handle these more directly than putting them into play events list. -    //if(audio->isPlaying())   +    //if(MusEGlobal::audio->isPlaying())        {        iMPEvent k;        for (k = _stuckNotes.begin(); k != _stuckNotes.end(); ++k) { @@ -496,7 +498,7 @@ void MidiAlsaDevice::processMidi()    if(stop)    {      // reset sustain... -    MidiPort* mp = &midiPorts[_port]; +    MidiPort* mp = &MusEGlobal::midiPorts[_port];      for(int ch = 0; ch < MIDI_CHANNELS; ++ch)       {        if(mp->hwCtrlState(ch, CTRL_SUSTAIN) == 127)  @@ -528,9 +530,9 @@ void MidiAlsaDevice::processMidi()          return;    int port = midiPort(); -  MidiPort* mp = port != -1 ? &midiPorts[port] : 0; -  unsigned curFrame = audio->curFrame(); -  int tickpos = audio->tickPos(); +  MidiPort* mp = port != -1 ? &MusEGlobal::midiPorts[port] : 0; +  unsigned curFrame = MusEGlobal::audio->curFrame(); +  int tickpos = MusEGlobal::audio->tickPos();    // Play all events up to current frame.    iMPEvent i = _playEvents.begin();             @@ -564,7 +566,7 @@ void MidiAlsaDevice::handleStop()    //    reset sustain    //--------------------------------------------------- -  MidiPort* mp = &midiPorts[_port]; +  MidiPort* mp = &MusEGlobal::midiPorts[_port];    for(int ch = 0; ch < MIDI_CHANNELS; ++ch)     {      if(mp->hwCtrlState(ch, CTRL_SUSTAIN) == 127)  @@ -580,7 +582,7 @@ void MidiAlsaDevice::handleStop()    //---------------------------------------------------    // Don't send if external sync is on. The master, and our sync routing system will take care of that.    -  if(!extSyncFlag.value()) +  if(!MusEGlobal::extSyncFlag.value())    {      // Shall we check open flags?      //if(!(dev->rwFlags() & 0x1) || !(dev->openFlags() & 1)) @@ -600,7 +602,7 @@ void MidiAlsaDevice::handleStop()        // Hmm, is this required? Seems to make other devices unhappy.        // (Could try now that this is in MidiDevice. p4.0.22 )        //if(!si.sendContNotStart()) -      //  mp->sendSongpos(audio->tickPos() * 4 / config.division); +      //  mp->sendSongpos(MusEGlobal::audio->tickPos() * 4 / config.division);      }    }    } @@ -617,9 +619,9 @@ void MidiAlsaDevice::handleSeek()    seekPending = true;  // Trigger seek handling in processMidi. -  MidiPort* mp = &midiPorts[_port]; +  MidiPort* mp = &MusEGlobal::midiPorts[_port];    MidiCtrlValListList* cll = mp->controller(); -  int pos = audio->tickPos(); +  int pos = MusEGlobal::audio->tickPos();    //---------------------------------------------------    //    Send new contoller values @@ -646,7 +648,7 @@ void MidiAlsaDevice::handleSeek()    //---------------------------------------------------    // Don't send if external sync is on. The master, and our sync routing system will take care of that.  p3.3.31 -  if(!extSyncFlag.value()) +  if(!MusEGlobal::extSyncFlag.value())    {      if(mp->syncInfo().MRTOut())      { @@ -657,10 +659,10 @@ void MidiAlsaDevice::handleSeek()        //if(!(openFlags() & 1))        //  continue; -      int beat = (pos * 4) / MusEConfig::config.division; +      int beat = (pos * 4) / MusEGlobal::config.division;        //bool isPlaying = (state == PLAY); -      bool isPlaying = audio->isPlaying();  // TODO Check this it includes LOOP1 and LOOP2 besides PLAY.  p4.0.22 +      bool isPlaying = MusEGlobal::audio->isPlaying();  // TODO Check this it includes LOOP1 and LOOP2 besides PLAY.  p4.0.22        mp->sendStop();        mp->sendSongpos(beat); @@ -721,18 +723,18 @@ bool initMidiAlsa()                             snd_seq_port_info_get_name(pinfo),                             adr.client, adr.port,                             flags, capability); -                  midiDevices.add(dev); +                  MusEGlobal::midiDevices.add(dev);                    /*                    // Experimental... Need to list 'sensible' devices first and ignore unwanted ones...                    // Add instance last in midi device list.                    for(int i = 0; i < MIDI_PORTS; ++i)                     { -                    MidiPort* mp  = &midiPorts[i]; +                    MidiPort* mp  = &MusEGlobal::midiPorts[i];                      if(mp->device() == 0)                       {                        // midiSeq might not be initialzed yet! -                      //midiSeq->msgSetMidiDevice(mp, dev); +                      //MusEGlobal::midiSeq->msgSetMidiDevice(mp, dev);                        mp->setMidiDevice(dev);                        //muse->changeConfig(true);     // save configuration file @@ -746,7 +748,7 @@ bool initMidiAlsa()              }        //snd_seq_set_client_name(alsaSeq, "MusE Sequencer"); -      snd_seq_set_client_name(alsaSeq, audioDevice->clientName()); +      snd_seq_set_client_name(alsaSeq, MusEGlobal::audioDevice->clientName());        int ci = snd_seq_poll_descriptors_count(alsaSeq, POLLIN);        int co = snd_seq_poll_descriptors_count(alsaSeq, POLLOUT); @@ -795,7 +797,6 @@ bool initMidiAlsa()        return false;        } -namespace MusEApp {  //---------------------------------------------------------  //   exitMidiAlsa @@ -813,8 +814,6 @@ void exitMidiAlsa()    }    } -} // namespace MusEApp -  struct AlsaPort {        snd_seq_addr_t adr; @@ -873,7 +872,7 @@ void alsaScanMidiPorts()        //        //  check for devices to delete        // -      for (iMidiDevice i = midiDevices.begin(); i != midiDevices.end();) { +      for (iMidiDevice i = MusEGlobal::midiDevices.begin(); i != MusEGlobal::midiDevices.end();) {              MidiAlsaDevice* d = dynamic_cast<MidiAlsaDevice*>(*i);              if (d == 0) {                    ++i; @@ -888,11 +887,11 @@ void alsaScanMidiPorts()                    }              if (k == portList.end()) {                    if (d->midiPort() != -1) -                        midiPorts[d->midiPort()].setMidiDevice(0); +                        MusEGlobal::midiPorts[d->midiPort()].setMidiDevice(0);                    iMidiDevice k = i;  // printf("erase device\n");                    ++i; -                  midiDevices.erase(k); +                  MusEGlobal::midiDevices.erase(k);                    }              else {                    ++i; @@ -902,9 +901,9 @@ void alsaScanMidiPorts()        //  check for devices to add        //        for (std::list<AlsaPort>::iterator k = portList.begin(); k != portList.end(); ++k) { -            iMidiDevice i = midiDevices.begin(); +            iMidiDevice i = MusEGlobal::midiDevices.begin();  // printf("ALSA port: <%s>\n", k->name); -            for (;i != midiDevices.end(); ++i) { +            for (;i != MusEGlobal::midiDevices.end(); ++i) {                    MidiAlsaDevice* d = dynamic_cast<MidiAlsaDevice*>(*i);                    if (d == 0)                          continue; @@ -912,12 +911,12 @@ void alsaScanMidiPorts()                          break;                          }                    } -            if (i == midiDevices.end()) { +            if (i == MusEGlobal::midiDevices.end()) {                    // add device                    MidiAlsaDevice* dev = new MidiAlsaDevice(k->adr,                       QString(k->name));                    dev->setrwFlags(k->flags); -                  midiDevices.add(dev); +                  MusEGlobal::midiDevices.add(dev);  // printf("add device\n");                    }              } @@ -971,7 +970,7 @@ void alsaProcessMidiInput()                    case SND_SEQ_EVENT_PORT_START:                    case SND_SEQ_EVENT_PORT_EXIT:                          alsaScanMidiPorts(); -                        audio->midiPortsChanged();  // signal gui +                        MusEGlobal::audio->midiPortsChanged();  // signal gui                          snd_seq_free_event(ev);                          return;                    } @@ -981,7 +980,7 @@ void alsaProcessMidiInput()              //              // find real source device              // -            for (iMidiDevice i = midiDevices.begin(); i != midiDevices.end(); ++i) { +            for (iMidiDevice i = MusEGlobal::midiDevices.begin(); i != MusEGlobal::midiDevices.end(); ++i) {                    MidiAlsaDevice* d = dynamic_cast<MidiAlsaDevice*>(*i);                    if (d  && d->adr.client == ev->source.client                       && d->adr.port == ev->source.port) { @@ -1046,24 +1045,24 @@ void alsaProcessMidiInput()                          break;                    case SND_SEQ_EVENT_CLOCK: -                        midiSeq->realtimeSystemInput(curPort, ME_CLOCK); +                        MusEGlobal::midiSeq->realtimeSystemInput(curPort, ME_CLOCK);                          //mdev->syncInfo().trigMCSyncDetect();                          break;                    case SND_SEQ_EVENT_START: -                        midiSeq->realtimeSystemInput(curPort, ME_START); +                        MusEGlobal::midiSeq->realtimeSystemInput(curPort, ME_START);                          break;                    case SND_SEQ_EVENT_CONTINUE: -                        midiSeq->realtimeSystemInput(curPort, ME_CONTINUE); +                        MusEGlobal::midiSeq->realtimeSystemInput(curPort, ME_CONTINUE);                          break;                    case SND_SEQ_EVENT_STOP: -                        midiSeq->realtimeSystemInput(curPort, ME_STOP); +                        MusEGlobal::midiSeq->realtimeSystemInput(curPort, ME_STOP);                          break;                    case SND_SEQ_EVENT_TICK: -                        midiSeq->realtimeSystemInput(curPort, ME_TICK); +                        MusEGlobal::midiSeq->realtimeSystemInput(curPort, ME_TICK);                          //mdev->syncInfo().trigTickDetect();                          break; @@ -1087,12 +1086,12 @@ void alsaProcessMidiInput()                    case SND_SEQ_EVENT_PORT_UNSUBSCRIBED:  // write port is released                          break;                    case SND_SEQ_EVENT_SONGPOS: -                        midiSeq->setSongPosition(curPort, ev->data.control.value); +                        MusEGlobal::midiSeq->setSongPosition(curPort, ev->data.control.value);                          break;                    case SND_SEQ_EVENT_SENSING:                          break;                    case SND_SEQ_EVENT_QFRAME: -                        midiSeq->mtcInputQuarter(curPort, ev->data.control.value); +                        MusEGlobal::midiSeq->mtcInputQuarter(curPort, ev->data.control.value);                          break;                    // case SND_SEQ_EVENT_CLIENT_START:                    // case SND_SEQ_EVENT_CLIENT_EXIT: @@ -1124,3 +1123,4 @@ void alsaProcessMidiInput()        }  } +} // namespace MusECore diff --git a/muse2/muse/driver/alsamidi.h b/muse2/muse/driver/alsamidi.h index 9badd7c4..832d86d7 100644 --- a/muse2/muse/driver/alsamidi.h +++ b/muse2/muse/driver/alsamidi.h @@ -30,6 +30,8 @@  #include "mpevent.h"  #include "mididev.h" +namespace MusECore { +  class Xml;  //--------------------------------------------------------- @@ -43,8 +45,8 @@ class MidiAlsaDevice : public MidiDevice {     private:        // Special for ALSA midi device: Play event list is processed in the ALSA midi sequencer thread.        // Need this FIFO, to decouple from audio thread which adds events to the list.        -      MidiFifo playEventFifo;   -      MidiFifo stuckNotesFifo;   +      MusECore::MidiFifo playEventFifo;   +      MusECore::MidiFifo stuckNotesFifo;          volatile bool stopPending;                 volatile bool seekPending; @@ -55,7 +57,7 @@ class MidiAlsaDevice : public MidiDevice {        virtual int selectWfd();        bool putEvent(snd_seq_event_t*); -      virtual bool putMidiEvent(const MidiPlayEvent&); +      virtual bool putMidiEvent(const MusECore::MidiPlayEvent&);     public:        MidiAlsaDevice(const snd_seq_addr_t&, const QString& name); @@ -67,9 +69,9 @@ class MidiAlsaDevice : public MidiDevice {        virtual void writeRouting(int, Xml&) const;        virtual inline int deviceType() const { return ALSA_MIDI; }         // Schedule an event for playback. Returns false if event cannot be delivered. -      virtual bool addScheduledEvent(const MidiPlayEvent& ev) { return !playEventFifo.put(ev); } +      virtual bool addScheduledEvent(const MusECore::MidiPlayEvent& ev) { return !playEventFifo.put(ev); }        // Add a stuck note. Returns false if event cannot be delivered. -      virtual bool addStuckNote(const MidiPlayEvent& ev) { return !stuckNotesFifo.put(ev); } +      virtual bool addStuckNote(const MusECore::MidiPlayEvent& ev) { return !stuckNotesFifo.put(ev); }        // Play all events up to current frame.        virtual void processMidi();        virtual void handleStop(); @@ -77,12 +79,14 @@ class MidiAlsaDevice : public MidiDevice {        };  extern bool initMidiAlsa(); -extern bool exitMidiAlsa(); +extern void exitMidiAlsa();  extern int alsaSelectRfd();  extern int alsaSelectWfd();  extern void alsaProcessMidiInput();  extern void alsaScanMidiPorts(); +} // namespace MusECore +  #endif diff --git a/muse2/muse/driver/audiodev.h b/muse2/muse/driver/audiodev.h index 3fe06fb9..14fb60b3 100644 --- a/muse2/muse/driver/audiodev.h +++ b/muse2/muse/driver/audiodev.h @@ -28,7 +28,8 @@  class QString; -class MidiPlayEvent; +namespace MusECore { +  class Pos;  //--------------------------------------------------------- @@ -87,5 +88,7 @@ class AudioDevice {        virtual int setMaster(bool f) = 0;        }; +} // namespace MusECore +  #endif diff --git a/muse2/muse/driver/dummyaudio.cpp b/muse2/muse/driver/dummyaudio.cpp index 4466e293..1738027d 100644 --- a/muse2/muse/driver/dummyaudio.cpp +++ b/muse2/muse/driver/dummyaudio.cpp @@ -38,9 +38,12 @@  #include "gconfig.h"  #include "utils.h" +#define DEBUG_DUMMY 0 + +namespace MusECore { +  class MidiPlayEvent; -#define DEBUG_DUMMY 0  //---------------------------------------------------------  //   DummyAudioDevice  //--------------------------------------------------------- @@ -140,7 +143,7 @@ class DummyAudioDevice : public AudioDevice {        return _framePos; }        virtual unsigned frameTime() const { -            return lrint(MusEUtil::curTime() * MusEGlobal::sampleRate); +            return lrint(curTime() * MusEGlobal::sampleRate);              }        virtual bool isRealtime() { return realtimeFlag; }        //virtual int realtimePriority() const { return 40; } @@ -215,19 +218,18 @@ DummyAudioDevice::DummyAudioDevice()        // Added by Tim. p3.3.15        // p3.3.30        //posix_memalign((void**)&buffer, 16, sizeof(float) * dummyFrames); -      posix_memalign((void**)&buffer, 16, sizeof(float) * MusEConfig::config.dummyAudioBufSize); +      posix_memalign((void**)&buffer, 16, sizeof(float) * MusEGlobal::config.dummyAudioBufSize);        dummyThread = 0;        realtimeFlag = false;        seekflag = false;        state = Audio::STOP; -      //startTime = MusEUtil::curTime(); +      //startTime = curTime();        _framePos = 0;        playPos = 0;        cmdQueue.clear();        } -namespace MusEApp {  //---------------------------------------------------------  //   exitDummyAudio @@ -238,10 +240,9 @@ void exitDummyAudio()        if(dummyAudio)          delete dummyAudio;        dummyAudio = NULL;       -      audioDevice = NULL;       +      MusEGlobal::audioDevice = NULL;        } -} // namespace MusEApp  //---------------------------------------------------------  //   initDummyAudio @@ -250,7 +251,7 @@ void exitDummyAudio()  bool initDummyAudio()        {        dummyAudio = new DummyAudioDevice(); -      audioDevice = dummyAudio; +      MusEGlobal::audioDevice = dummyAudio;        return false;        } @@ -294,9 +295,9 @@ static void* dummyLoop(void* ptr)        // p3.3.30        //MusEGlobal::sampleRate = 25600; -      MusEGlobal::sampleRate = MusEConfig::config.dummyAudioSampleRate; +      MusEGlobal::sampleRate = MusEGlobal::config.dummyAudioSampleRate;        //MusEGlobal::segmentSize = dummyFrames; -      MusEGlobal::segmentSize = MusEConfig::config.dummyAudioBufSize; +      MusEGlobal::segmentSize = MusEGlobal::config.dummyAudioBufSize;  #if 0              //unsigned int tickRate = MusEGlobal::sampleRate / dummyFrames;        unsigned int tickRate = MusEGlobal::sampleRate / MusEGlobal::segmentSize; @@ -455,19 +456,19 @@ static void* dummyLoop(void* ptr)        for(;;)         {              //if(audioState == AUDIO_RUNNING) -            if(audio->isRunning()) -              //audio->process(MusEGlobal::segmentSize, drvPtr->state); -              audio->process(MusEGlobal::segmentSize); +            if(MusEGlobal::audio->isRunning()) +              //MusEGlobal::audio->process(MusEGlobal::segmentSize, drvPtr->state); +              MusEGlobal::audio->process(MusEGlobal::segmentSize);              //else if (audioState == AUDIO_START1)              //  audioState = AUDIO_START2; -            //usleep(dummyFrames*1000000/AL::MusEGlobal::sampleRate); +            //usleep(dummyFrames*1000000/AL::sampleRate);              usleep(MusEGlobal::segmentSize*1000000/MusEGlobal::sampleRate);              //if(dummyAudio->seekflag)               if(drvPtr->seekflag)               { -              //audio->sync(Audio::STOP, dummyAudio->pos); -              //audio->sync(drvPtr->state, drvPtr->playPos); -              audio->sync(Audio::STOP, drvPtr->playPos); +              //MusEGlobal::audio->sync(Audio::STOP, dummyAudio->pos); +              //MusEGlobal::audio->sync(drvPtr->state, drvPtr->playPos); +              MusEGlobal::audio->sync(Audio::STOP, drvPtr->playPos);                //dummyAudio->seekflag = false;                drvPtr->seekflag = false; @@ -515,7 +516,7 @@ void DummyAudioDevice::start(int priority)                    }              } -      int rv = pthread_create(&dummyThread, attributes, ::dummyLoop, this);  +      int rv = pthread_create(&dummyThread, attributes, dummyLoop, this);         if(rv)        {            // p4.0.16: MusEGlobal::realTimeScheduling is unreliable. It is true even in some clearly non-RT cases. @@ -523,7 +524,7 @@ void DummyAudioDevice::start(int priority)          // MusE was failing with a stock kernel because of PTHREAD_EXPLICIT_SCHED.          // So we'll just have to try again without attributes.          if (MusEGlobal::realTimeScheduling && _realTimePriority > 0)  -          rv = pthread_create(&dummyThread, NULL, ::dummyLoop, this);  +          rv = pthread_create(&dummyThread, NULL, dummyLoop, this);         }        if(rv) @@ -543,3 +544,4 @@ void DummyAudioDevice::stop ()        dummyThread = 0;        } +} // namespace MusECore diff --git a/muse2/muse/driver/jack.cpp b/muse2/muse/driver/jack.cpp index 31179ea3..542c68ba 100644 --- a/muse2/muse/driver/jack.cpp +++ b/muse2/muse/driver/jack.cpp @@ -53,15 +53,35 @@  //#include "errorhandler.h" -#ifndef RTCAP -extern void MusEGlobal::doSetuid(); -extern void MusEGlobal::undoSetuid(); -#endif -  #ifdef VST_SUPPORT  #include <fst.h>  #endif +namespace MusEGlobal { + +#ifndef RTCAP +extern void doSetuid(); +extern void undoSetuid(); +#endif + +//--------------------------------------------------------- +//   checkAudioDevice - make sure audioDevice exists +//--------------------------------------------------------- + +bool checkAudioDevice() +      { +      if (audioDevice == NULL) { +            if(debugMsg) +              printf("Muse:checkAudioDevice: no audioDevice\n"); +            return false; +            } +      return true; +      } + +} // namespace MusEGlobal + +namespace MusECore { +  //extern int jackmidi_pi[2];  //extern int jackmidi_po[2]; @@ -275,8 +295,8 @@ int JackAudioDevice::processAudio(jack_nframes_t frames, void*)  //      if (JACK_DEBUG)  //            printf("processAudio - >>>>\n");        MusEGlobal::segmentSize = frames; -      if (audio->isRunning()) -            audio->process((unsigned long)frames); +      if (MusEGlobal::audio->isRunning()) +            MusEGlobal::audio->process((unsigned long)frames);        else {              if (MusEGlobal::debugMsg)                   puts("jack calling when audio is disconnected!\n"); @@ -296,7 +316,7 @@ static int processSync(jack_transport_state_t state, jack_position_t* pos, void*        if (JACK_DEBUG)              printf("processSync()\n"); -      if(!useJackTransport.value()) +      if(!MusEGlobal::useJackTransport.value())          return 1;        int audioState = Audio::STOP; @@ -327,10 +347,10 @@ static int processSync(jack_transport_state_t state, jack_position_t* pos, void*        //printf("processSync valid:%d frame:%d\n", pos->valid, frame);              // p3.3.23 -            //printf("Jack processSync() before audio->sync frame:%d\n", frame); -      //return audio->sync(audioState, frame); -      int rv = audio->sync(audioState, frame); -            //printf("Jack processSync() after audio->sync frame:%d\n", frame); +            //printf("Jack processSync() before MusEGlobal::audio->sync frame:%d\n", frame); +      //return MusEGlobal::audio->sync(audioState, frame); +      int rv = MusEGlobal::audio->sync(audioState, frame); +            //printf("Jack processSync() after MusEGlobal::audio->sync frame:%d\n", frame);        return rv;              } @@ -344,13 +364,13 @@ static void timebase_callback(jack_transport_state_t /* state */,     int /* new_pos */,     void*)    { -      //printf("Jack timebase_callback pos->frame:%u audio->tickPos:%d song->cpos:%d\n", pos->frame, audio->tickPos(), song->cpos()); +      //printf("Jack timebase_callback pos->frame:%u MusEGlobal::audio->tickPos:%d MusEGlobal::song->cpos:%d\n", pos->frame, MusEGlobal::audio->tickPos(), MusEGlobal::song->cpos());        // p3.3.27        //Pos p(pos->frame, false); -      Pos p(extSyncFlag.value() ? audio->tickPos() : pos->frame, extSyncFlag.value() ? true : false); +      Pos p(MusEGlobal::extSyncFlag.value() ? MusEGlobal::audio->tickPos() : pos->frame, MusEGlobal::extSyncFlag.value() ? true : false);        // Can't use song pos - it is only updated every (slow) GUI heartbeat ! -      //Pos p(extSyncFlag.value() ? song->cpos() : pos->frame, extSyncFlag.value() ? true : false); +      //Pos p(MusEGlobal::extSyncFlag.value() ? MusEGlobal::song->cpos() : pos->frame, MusEGlobal::extSyncFlag.value() ? true : false);        pos->valid = JackPositionBBT;        p.mbt(&pos->bar, &pos->beat, &pos->tick); @@ -381,8 +401,8 @@ static void timebase_callback(jack_transport_state_t /* state */,        //pos->ticks_per_beat = config.division;        pos->ticks_per_beat = 24; -      int tempo = tempomap.tempo(p.tick()); -      pos->beats_per_minute = (60000000.0 / tempo) * tempomap.globalTempo()/100.0; +      int tempo = MusEGlobal::tempomap.tempo(p.tick()); +      pos->beats_per_minute = (60000000.0 / tempo) * MusEGlobal::tempomap.globalTempo()/100.0;        }  //--------------------------------------------------------- @@ -395,7 +415,7 @@ static void processShutdown(void*)            printf("processShutdown()\n");        //printf("processShutdown\n");        jackAudio->nullify_client(); -      audio->shutdown(); +      MusEGlobal::audio->shutdown();        int c=0;        while(MusEGlobal::midiSeqRunning == true) { @@ -407,7 +427,7 @@ static void processShutdown(void*)            }        delete jackAudio;        jackAudio=0; -      audioDevice=0; +      MusEGlobal::audioDevice=0;        }  //--------------------------------------------------------- @@ -630,7 +650,7 @@ bool initJackAudio()        */            if (client) { -            audioDevice = jackAudio; +            MusEGlobal::audioDevice = jackAudio;              jackAudio->scanMidiPorts();              return false;              } @@ -651,7 +671,7 @@ static void freewheel_callback(int starting, void*)        {        if (MusEGlobal::debugMsg || JACK_DEBUG)              printf("JACK: freewheel_callback: starting%d\n", starting); -      audio->setFreewheel(starting); +      MusEGlobal::audio->setFreewheel(starting);        }  static int srate_callback(jack_nframes_t n, void*) @@ -670,7 +690,7 @@ static void registration_callback(jack_port_id_t, int, void*)    if(MusEGlobal::debugMsg || JACK_DEBUG)      printf("JACK: registration changed\n"); -  audio->sendMsgToGui('R'); +  MusEGlobal::audio->sendMsgToGui('R');  }  //--------------------------------------------------------- @@ -699,7 +719,7 @@ void JackAudioDevice::connectJackMidiPorts()    if(JACK_DEBUG)      printf("JackAudioDevice::connectJackMidiPorts()\n"); -  for (iMidiDevice i = midiDevices.begin(); i != midiDevices.end(); ++i)  +  for (iMidiDevice i = MusEGlobal::midiDevices.begin(); i != MusEGlobal::midiDevices.end(); ++i)     {      //MidiJackDevice* mjd = dynamic_cast<MidiJackDevice*>(*i);      //if(!mjd) @@ -794,7 +814,7 @@ void JackAudioDevice::connectJackMidiPorts()      if(JACK_DEBUG)        printf("JackAudioDevice::graphChanged %s\n", name.toLatin1()); -    for(iMidiDevice imd = midiDevices.begin(); imd != midiDevices.end(); ++imd) +    for(iMidiDevice imd = MusEGlobal::midiDevices.begin(); imd != MusEGlobal::midiDevices.end(); ++imd)      {        // Is it a Jack midi device?         MidiJackDevice* mjd = dynamic_cast<MidiJackDevice*>(*imd); @@ -823,7 +843,7 @@ void JackAudioDevice::connectJackMidiPorts()        {          if(JACK_DEBUG)            printf("JackAudioDevice::graphChanged connecting MusE output\n"); -        audioDevice->connect(port, devport); +        MusEGlobal::audioDevice->connect(port, devport);        }        else         // If Jack port can send data to us and we actually want it... @@ -831,7 +851,7 @@ void JackAudioDevice::connectJackMidiPorts()        {          if(JACK_DEBUG)            printf("JackAudioDevice::graphChanged connecting MusE input\n"); -        audioDevice->connect(devport, port); +        MusEGlobal::audioDevice->connect(devport, port);        }        break;   @@ -881,7 +901,7 @@ static int graph_callback(void*)        // we cannot call JackAudioDevice::graphChanged() from this        // context, so we send a message to the gui thread which in turn        // calls graphChanged() -      audio->sendMsgToGui('C'); +      MusEGlobal::audio->sendMsgToGui('C');        if (MusEGlobal::debugMsg)              printf("JACK: graph changed\n");        return 0; @@ -898,7 +918,7 @@ void JackAudioDevice::graphChanged()        if (JACK_DEBUG)              printf("graphChanged()\n");        if(!checkJackClient(_client)) return; -      InputList* il = song->inputs(); +      InputList* il = MusEGlobal::song->inputs();        for (iAudioInput ii = il->begin(); ii != il->end(); ++ii) {              AudioInput* it = *ii;              int channels = it->channels(); @@ -935,7 +955,7 @@ void JackAudioDevice::graphChanged()                                      ++pn;                                      }                                if (!found) { -                                    audio->msgRemoveRoute1( +                                    MusEGlobal::audio->msgRemoveRoute1(                                         //Route(portName, false, channel),                                         Route(portName, false, channel, Route::JACK_ROUTE),                                         Route(it, channel) @@ -968,7 +988,7 @@ void JackAudioDevice::graphChanged()                                            }                                      }                                if (!found) { -                                    audio->msgAddRoute1( +                                    MusEGlobal::audio->msgAddRoute1(                                         //Route(*pn, false, channel),                                         Route(*pn, false, channel, Route::JACK_ROUTE),                                         Route(it, channel) @@ -986,7 +1006,7 @@ void JackAudioDevice::graphChanged()                          }                    }              } -      OutputList* ol = song->outputs(); +      OutputList* ol = MusEGlobal::song->outputs();        for (iAudioOutput ii = ol->begin(); ii != ol->end(); ++ii) {              AudioOutput* it = *ii;              int channels = it->channels(); @@ -1022,7 +1042,7 @@ void JackAudioDevice::graphChanged()                                      ++pn;                                      }                                if (!found) { -                                    audio->msgRemoveRoute1( +                                    MusEGlobal::audio->msgRemoveRoute1(                                         Route(it, channel),                                         //Route(portName, false, channel)                                         Route(portName, false, channel, Route::JACK_ROUTE) @@ -1055,7 +1075,7 @@ void JackAudioDevice::graphChanged()                                            }                                      }                                if (!found) { -                                    audio->msgAddRoute1( +                                    MusEGlobal::audio->msgAddRoute1(                                         Route(it, channel),                                         //Route(*pn, false, channel)                                         Route(*pn, false, channel, Route::JACK_ROUTE) @@ -1074,7 +1094,7 @@ void JackAudioDevice::graphChanged()                    }              } -      for (iMidiDevice ii = midiDevices.begin(); ii != midiDevices.end(); ++ii)  +      for (iMidiDevice ii = MusEGlobal::midiDevices.begin(); ii != MusEGlobal::midiDevices.end(); ++ii)         {              MidiDevice* md = *ii;              if(md->deviceType() != MidiDevice::JACK_MIDI) @@ -1135,7 +1155,7 @@ void JackAudioDevice::graphChanged()                                          ++pn;                                          }                                    if (!found) { -                                        audio->msgRemoveRoute1( +                                        MusEGlobal::audio->msgRemoveRoute1(                                            //Route(it, channel),                                            //Route(mjd),                                            Route(md, -1), @@ -1172,7 +1192,7 @@ void JackAudioDevice::graphChanged()                                                }                                          }                                    if (!found) { -                                        audio->msgAddRoute1( +                                        MusEGlobal::audio->msgAddRoute1(                                            //Route(it, channel),                                            //Route(mjd),                                            Route(md, -1), @@ -1234,7 +1254,7 @@ void JackAudioDevice::graphChanged()                                          ++pn;                                          }                                    if (!found) { -                                        audio->msgRemoveRoute1( +                                        MusEGlobal::audio->msgRemoveRoute1(                                            //Route(portName, false, channel),                                            //Route(portName, false, -1),                                            Route(portName, false, -1, Route::JACK_ROUTE), @@ -1271,7 +1291,7 @@ void JackAudioDevice::graphChanged()                                                }                                          }                                    if (!found) { -                                        audio->msgAddRoute1( +                                        MusEGlobal::audio->msgAddRoute1(                                            //Route(*pn, false, channel),                                            //Route(*pn, false, -1),                                            Route(*pn, false, -1, Route::JACK_ROUTE), @@ -1370,46 +1390,6 @@ void* JackAudioDevice::registerOutPort(const char* name, bool midi)        return p;        } -namespace MusEGlobal { - -//--------------------------------------------------------- -//   checkAudioDevice - make sure audioDevice exists -//--------------------------------------------------------- - -bool checkAudioDevice() -      { -      if (audioDevice == NULL) { -            if(MusEGlobal::debugMsg) -              printf("Muse:checkAudioDevice: no audioDevice\n"); -            return false; -            } -      return true; -      } - -} // namespace MusEGlobal - -namespace MusEApp { - -//--------------------------------------------------------- -//   exitJackAudio -//--------------------------------------------------------- - -void exitJackAudio() -      { -      if (JACK_DEBUG) -            printf("exitJackAudio()\n"); -      if (jackAudio) -            delete jackAudio; -             -      if (JACK_DEBUG) -            printf("exitJackAudio() after delete jackAudio\n"); -       -      // Added by Tim. p3.3.14 -      audioDevice = NULL;       -       -      } -} // namespace MusEApp -  //---------------------------------------------------------  //   connect  //--------------------------------------------------------- @@ -1494,7 +1474,7 @@ void JackAudioDevice::start(int /*priority*/)           running.         */ -      InputList* il = song->inputs(); +      InputList* il = MusEGlobal::song->inputs();        for (iAudioInput i = il->begin(); i != il->end(); ++i) {              AudioInput* ai = *i;              int channel = ai->channels(); @@ -1507,7 +1487,7 @@ void JackAudioDevice::start(int /*priority*/)                          }                    }              } -      OutputList* ol = song->outputs(); +      OutputList* ol = MusEGlobal::song->outputs();        for (iAudioOutput i = ol->begin(); i != ol->end(); ++i) {              AudioOutput* ai = *i;              int channel = ai->channels(); @@ -1571,7 +1551,7 @@ unsigned int JackAudioDevice::getCurFrame()    if (JACK_DEBUG)      printf("JackAudioDevice::getCurFrame pos.frame:%d\n", pos.frame); -  if(!useJackTransport.value()) +  if(!MusEGlobal::useJackTransport.value())      return (unsigned int)dummyPos;    return pos.frame;  @@ -1583,7 +1563,7 @@ unsigned int JackAudioDevice::getCurFrame()  int JackAudioDevice::framePos() const        { -      //if(!useJackTransport.value()) +      //if(!MusEGlobal::useJackTransport.value())        //{        //  if (JACK_DEBUG)        //    printf("JackAudioDevice::framePos dummyPos:%d\n", dummyPos); @@ -1805,11 +1785,11 @@ void JackAudioDevice::unregisterPort(void* p)  int JackAudioDevice::getState()        {        // If we're not using Jack's transport, just return current state. -      if(!useJackTransport.value()) +      if(!MusEGlobal::useJackTransport.value())        {          //pos.valid = jack_position_bits_t(0); -        //pos.frame = audio->pos().frame(); -        //return audio->getState(); +        //pos.frame = MusEGlobal::audio->pos().frame(); +        //return MusEGlobal::audio->getState();          //if (JACK_DEBUG)          //  printf("JackAudioDevice::getState dummyState:%d\n", dummyState);          return dummyState; @@ -1868,14 +1848,14 @@ bool JackAudioDevice::dummySync(int state)    //timespec ts = { 0, (1000000000 * MusEGlobal::segmentSize) / MusEGlobal::sampleRate };     // In nanoseconds.    unsigned int sl = (1000000 * MusEGlobal::segmentSize) / MusEGlobal::sampleRate;            // In microseconds. -  double ct = MusEUtil::curTime(); +  double ct = curTime();    // Wait for a default maximum of 5 seconds.     // Similar to how Jack is supposed to wait a default of 2 seconds for slow clients.    // TODO: Make this timeout a 'settings' option so it can be applied both to Jack and here. -  while((MusEUtil::curTime() - ct) < 5.0)   +  while((curTime() - ct) < 5.0)      {      // Is MusE audio ready to roll? -    if(audio->sync(state, dummyPos)) +    if(MusEGlobal::audio->sync(state, dummyPos))        return true;      // Not ready. Wait a 'segment', try again... @@ -1900,7 +1880,7 @@ void JackAudioDevice::startTransport()        // If we're not using Jack's transport, just pass PLAY and current frame along        //  as if processSync was called.  -      if(!useJackTransport.value()) +      if(!MusEGlobal::useJackTransport.value())        {          //dummyState = Audio::START_PLAY; @@ -1934,7 +1914,7 @@ void JackAudioDevice::stopTransport()        dummyState = Audio::STOP; -      if(!useJackTransport.value()) +      if(!MusEGlobal::useJackTransport.value())        {          //dummyState = Audio::STOP;          return; @@ -1958,7 +1938,7 @@ void JackAudioDevice::seekTransport(unsigned frame)              printf("JackAudioDevice::seekTransport() frame:%d\n", frame);        dummyPos = frame; -      if(!useJackTransport.value()) +      if(!MusEGlobal::useJackTransport.value())        {          // If we're not using Jack's transport, just pass the current state and new frame along          //  as if processSync was called.  @@ -1967,7 +1947,7 @@ void JackAudioDevice::seekTransport(unsigned frame)          //dummyState = Audio::START_PLAY;          // Is MusE audio ready yet? -        //audio->sync(dummyState, dummyPos); +        //MusEGlobal::audio->sync(dummyState, dummyPos);          //if(dummySync(dummyState))          if(dummySync(Audio::START_PLAY))          { @@ -2001,7 +1981,7 @@ void JackAudioDevice::seekTransport(const Pos &p)              printf("JackAudioDevice::seekTransport() frame:%d\n", p.frame());        dummyPos = p.frame(); -      if(!useJackTransport.value()) +      if(!MusEGlobal::useJackTransport.value())        {          // If we're not using Jack's transport, just pass the current state and new frame along          //  as if processSync was called.  @@ -2010,7 +1990,7 @@ void JackAudioDevice::seekTransport(const Pos &p)          //dummyState = Audio::START_PLAY;          // Is MusE audio ready yet? -        //audio->sync(dummyState, dummyPos); +        //MusEGlobal::audio->sync(dummyState, dummyPos);          //if(dummySync(dummyState))          if(dummySync(Audio::START_PLAY))          { @@ -2040,8 +2020,8 @@ void JackAudioDevice::seekTransport(const Pos &p)        jp.beats_per_bar = 4;        jp.beat_type = 4;        jp.ticks_per_beat = 384; -      int tempo = tempomap.tempo(p.tick()); -      jp.beats_per_minute = (60000000.0 / tempo) * tempomap.globalTempo()/100.0; +      int tempo = MusEGlobal::tempomap.tempo(p.tick()); +      jp.beats_per_minute = (60000000.0 / tempo) * MusEGlobal::tempomap.globalTempo()/100.0;        jack_transport_reposition(_client, &jp);        */ @@ -2076,7 +2056,7 @@ int JackAudioDevice::setMaster(bool f)    int r = 0;    if(f)    { -    if(useJackTransport.value()) +    if(MusEGlobal::useJackTransport.value())      {        // Make Muse the Jack timebase master. Do it unconditionally (second param = 0).        r = jack_set_timebase_callback(_client, 0, (JackTimebaseCallback) timebase_callback, 0); @@ -2163,7 +2143,7 @@ void JackAudioDevice::scanMidiPorts()      free(ports);          std::list<MidiDevice*> to_del; -  for(iMidiDevice imd = midiDevices.begin(); imd != midiDevices.end(); ++imd) +  for(iMidiDevice imd = MusEGlobal::midiDevices.begin(); imd != MusEGlobal::midiDevices.end(); ++imd)    {      // Only Jack midi devices.      if(dynamic_cast<MidiJackDevice*>(*imd) == 0) @@ -2176,7 +2156,7 @@ void JackAudioDevice::scanMidiPorts()    {      if(MusEGlobal::debugMsg)        printf(" removing port device:%s\n", (*imd)->name().toLatin1()); -    midiDevices.remove(*imd); +    MusEGlobal::midiDevices.remove(*imd);      // This will close (and unregister) the client port.      delete (*imd);    } @@ -2218,7 +2198,7 @@ void JackAudioDevice::scanMidiPorts()      QString qname(is->c_str());      // Port already exists? -    if(midiDevices.find(qname)) +    if(MusEGlobal::midiDevices.find(qname))        continue;      int flags = 0; @@ -2240,8 +2220,30 @@ void JackAudioDevice::scanMidiPorts()      MidiJackDevice* dev = new MidiJackDevice(0, qname);      dev->setrwFlags(flags); -    midiDevices.add(dev); +    MusEGlobal::midiDevices.add(dev);    }  */  } + +//--------------------------------------------------------- +//   exitJackAudio +//--------------------------------------------------------- + +void exitJackAudio() +      { +      if (JACK_DEBUG) +            printf("exitJackAudio()\n"); +      if (MusECore::jackAudio) +            delete MusECore::jackAudio; +             +      if (JACK_DEBUG) +            printf("exitJackAudio() after delete jackAudio\n"); +       +      // Added by Tim. p3.3.14 +      MusEGlobal::audioDevice = NULL;       +       +      } +} // namespace MusECore + + diff --git a/muse2/muse/driver/jackaudio.h b/muse2/muse/driver/jackaudio.h index d116a2ff..bd78d481 100644 --- a/muse2/muse/driver/jackaudio.h +++ b/muse2/muse/driver/jackaudio.h @@ -26,12 +26,13 @@  #include <jack/jack.h>  #include "audiodev.h" -class MidiPlayEvent; -  namespace MusEGlobal {  bool checkAudioDevice();  } +namespace MusECore { +class MidiPlayEvent; +  //---------------------------------------------------------  //   JackAudioDevice  //--------------------------------------------------------- @@ -111,5 +112,7 @@ class JackAudioDevice : public AudioDevice {        //static bool jackStarted;        }; +} // namespace MusECore +  #endif diff --git a/muse2/muse/driver/jackmidi.cpp b/muse2/muse/driver/jackmidi.cpp index a4577f0b..fa23d336 100644 --- a/muse2/muse/driver/jackmidi.cpp +++ b/muse2/muse/driver/jackmidi.cpp @@ -47,7 +47,11 @@  // Turn on debug messages.  //#define JACK_MIDI_DEBUG +namespace MusEGlobal {  extern unsigned int volatile lastExtMidiSyncTick; +} + +namespace MusECore {  //---------------------------------------------------------  //   MidiJackDevice @@ -68,12 +72,12 @@ MidiJackDevice::~MidiJackDevice()      printf("MidiJackDevice::~MidiJackDevice()\n");    #endif   -  if(audioDevice) +  if(MusEGlobal::audioDevice)    {       if(_in_client_jackport) -      audioDevice->unregisterPort(_in_client_jackport); +      MusEGlobal::audioDevice->unregisterPort(_in_client_jackport);      if(_out_client_jackport) -      audioDevice->unregisterPort(_out_client_jackport); +      MusEGlobal::audioDevice->unregisterPort(_out_client_jackport);    }        //close(); @@ -92,7 +96,7 @@ MidiDevice* MidiJackDevice::createJackMidiDevice(QString name, int rwflags) // 1      for( ; ni < 65536; ++ni)      {        name.sprintf("jack-midi-%d", ni); -      if(!midiDevices.find(name)) +      if(!MusEGlobal::midiDevices.find(name))          break;      }    }     @@ -104,7 +108,7 @@ MidiDevice* MidiJackDevice::createJackMidiDevice(QString name, int rwflags) // 1    MidiJackDevice* dev = new MidiJackDevice(name);      dev->setrwFlags(rwflags); -  midiDevices.add(dev); +  MusEGlobal::midiDevices.add(dev);    return dev;  } @@ -120,9 +124,9 @@ void MidiJackDevice::setName(const QString& s)    _name = s;     if(inClientPort())   -    audioDevice->setPortName(inClientPort(), (s + QString(JACK_MIDI_IN_PORT_SUFFIX)).toLatin1().constData()); +    MusEGlobal::audioDevice->setPortName(inClientPort(), (s + QString(JACK_MIDI_IN_PORT_SUFFIX)).toLatin1().constData());    if(outClientPort())   -    audioDevice->setPortName(outClientPort(), (s + QString(JACK_MIDI_OUT_PORT_SUFFIX)).toLatin1().constData()); +    MusEGlobal::audioDevice->setPortName(outClientPort(), (s + QString(JACK_MIDI_OUT_PORT_SUFFIX)).toLatin1().constData());  }  //--------------------------------------------------------- @@ -142,10 +146,10 @@ QString MidiJackDevice::open()    {      if(!_out_client_jackport)      { -      if(audioDevice->deviceType() == AudioDevice::JACK_AUDIO)        +      if(MusEGlobal::audioDevice->deviceType() == AudioDevice::JACK_AUDIO)               {          s = name() + QString(JACK_MIDI_OUT_PORT_SUFFIX); -        _out_client_jackport = (jack_port_t*)audioDevice->registerOutPort(s.toLatin1().constData(), true);    +        _out_client_jackport = (jack_port_t*)MusEGlobal::audioDevice->registerOutPort(s.toLatin1().constData(), true);             if(!_out_client_jackport)             {            fprintf(stderr, "MusE: MidiJackDevice::open failed creating output port name %s\n", s.toLatin1().constData());  @@ -178,8 +182,8 @@ QString MidiJackDevice::open()        // When I toggle the lights again (which kills, then recreates the ports here), the problem can disappear or come back again.        // Also once observed a weird double connection from the port to two different Jack ports but one of        //  the connections should not have been there and kept toggling along with the other (like a 'ghost' connection). -      audio->msgRemoveRoutes(Route(this, 0), Route());   // New function msgRemoveRoutes simply uses Routes, for their pointers. -      audioDevice->unregisterPort(_out_client_jackport); +      MusEGlobal::audio->msgRemoveRoutes(Route(this, 0), Route());   // New function msgRemoveRoutes simply uses Routes, for their pointers. +      MusEGlobal::audioDevice->unregisterPort(_out_client_jackport);      }        _out_client_jackport = NULL;      } @@ -188,10 +192,10 @@ QString MidiJackDevice::open()    {        if(!_in_client_jackport)      { -      if(audioDevice->deviceType() == AudioDevice::JACK_AUDIO)        +      if(MusEGlobal::audioDevice->deviceType() == AudioDevice::JACK_AUDIO)               {          s = name() + QString(JACK_MIDI_IN_PORT_SUFFIX); -        _in_client_jackport = (jack_port_t*)audioDevice->registerInPort(s.toLatin1().constData(), true);    +        _in_client_jackport = (jack_port_t*)MusEGlobal::audioDevice->registerInPort(s.toLatin1().constData(), true);             if(!_in_client_jackport)              {            fprintf(stderr, "MusE: MidiJackDevice::open failed creating input port name %s\n", s.toLatin1().constData()); @@ -204,8 +208,8 @@ QString MidiJackDevice::open()    {      if(_in_client_jackport)      { -      audio->msgRemoveRoutes(Route(), Route(this, 0)); -      audioDevice->unregisterPort(_in_client_jackport); +      MusEGlobal::audio->msgRemoveRoutes(Route(), Route(this, 0)); +      MusEGlobal::audioDevice->unregisterPort(_in_client_jackport);      }        _in_client_jackport = NULL;      } @@ -241,7 +245,7 @@ void MidiJackDevice::close()      else      if(pf & JackPortIsInput)        _nextInIdNum--; -    audioDevice->unregisterPort(_client_jackport); +    MusEGlobal::audioDevice->unregisterPort(_client_jackport);      _client_jackport = 0;      _writeEnable = false;      _readEnable = false; @@ -327,9 +331,9 @@ bool MidiJackDevice::putMidiEvent(const MidiPlayEvent& /*event*/)  void MidiJackDevice::recordEvent(MidiRecordEvent& event)        {        // Set the loop number which the event came in at. -      //if(audio->isRecording()) -      if(audio->isPlaying()) -        event.setLoopNum(audio->loopCount()); +      //if(MusEGlobal::audio->isRecording()) +      if(MusEGlobal::audio->isPlaying()) +        event.setLoopNum(MusEGlobal::audio->loopCount());        if (MusEGlobal::midiInputTrace) {              printf("Jack MidiInput: "); @@ -340,7 +344,7 @@ void MidiJackDevice::recordEvent(MidiRecordEvent& event)        if(_port != -1)        { -        int idin = midiPorts[_port].syncInfo().idIn(); +        int idin = MusEGlobal::midiPorts[_port].syncInfo().idIn();          //---------------------------------------------------          // filter some SYSEX events @@ -355,25 +359,25 @@ void MidiJackDevice::recordEvent(MidiRecordEvent& event)                        && ((p[1] == 0x7f) || (idin == 0x7f) || (p[1] == idin))) {                            if (p[2] == 0x06) {                                  //mmcInput(p, n); -                                midiSeq->mmcInput(_port, p, n); +                                MusEGlobal::midiSeq->mmcInput(_port, p, n);                                  return;                                  }                            if (p[2] == 0x01) {                                  //mtcInputFull(p, n); -                                midiSeq->mtcInputFull(_port, p, n); +                                MusEGlobal::midiSeq->mtcInputFull(_port, p, n);                                  return;                                  }                            }                      else if (p[0] == 0x7e) {                            //nonRealtimeSystemSysex(p, n); -                          midiSeq->nonRealtimeSystemSysex(_port, p, n); +                          MusEGlobal::midiSeq->nonRealtimeSystemSysex(_port, p, n);                            return;                            }                      }                }            else                  // Trigger general activity indicator detector. Sysex has no channel, don't trigger. -            midiPorts[_port].syncInfo().trigActDetect(event.channel()); +            MusEGlobal::midiPorts[_port].syncInfo().trigActDetect(event.channel());        }        // @@ -398,11 +402,11 @@ void MidiJackDevice::recordEvent(MidiRecordEvent& event)        //        if (typ == ME_NOTEON) {              int pv = ((event.dataA() & 0xff)<<8) + (event.dataB() & 0xff); -            song->putEvent(pv); +            MusEGlobal::song->putEvent(pv);              }        else if (typ == ME_NOTEOFF) {              int pv = ((event.dataA() & 0xff)<<8) + (0x00); //send an event with velo=0 -            song->putEvent(pv); +            MusEGlobal::song->putEvent(pv);              }        //if(_recordFifo.put(MidiPlayEvent(event))) @@ -438,10 +442,10 @@ void MidiJackDevice::eventReceived(jack_midi_event_t* ev)        //               catch      process    play        // -      //int frameOffset = audio->getFrameOffset(); -      unsigned pos = audio->pos().frame(); +      //int frameOffset = MusEGlobal::audio->getFrameOffset(); +      unsigned pos = MusEGlobal::audio->pos().frame(); -      event.setTime(extSyncFlag.value() ? lastExtMidiSyncTick : (pos + ev->time));      // p3.3.25 +      event.setTime(MusEGlobal::extSyncFlag.value() ? MusEGlobal::lastExtMidiSyncTick : (pos + ev->time));      // p3.3.25        event.setChannel(*(ev->buffer) & 0xf);        int type = *(ev->buffer) & 0xf0; @@ -486,11 +490,11 @@ void MidiJackDevice::eventReceived(jack_midi_event_t* ev)                                  break;                            case ME_MTC_QUARTER:                                  if(_port != -1) -                                  midiSeq->mtcInputQuarter(_port, *(ev->buffer + 1));  +                                  MusEGlobal::midiSeq->mtcInputQuarter(_port, *(ev->buffer + 1));                                   return;                            case ME_SONGPOS:                                      if(_port != -1) -                                  midiSeq->setSongPosition(_port, *(ev->buffer + 1) | (*(ev->buffer + 2) >> 2 )); // LSB then MSB +                                  MusEGlobal::midiSeq->setSongPosition(_port, *(ev->buffer + 1) | (*(ev->buffer + 2) >> 2 )); // LSB then MSB                                  return;                            //case ME_SONGSEL:                                //case ME_TUNE_REQ:    @@ -501,7 +505,7 @@ void MidiJackDevice::eventReceived(jack_midi_event_t* ev)                            case ME_CONTINUE:                               case ME_STOP:                                         if(_port != -1) -                                  midiSeq->realtimeSystemInput(_port, type); +                                  MusEGlobal::midiSeq->realtimeSystemInput(_port, type);                                  return;                            //case ME_SYSEX_END:                                    //break; @@ -609,8 +613,8 @@ bool MidiJackDevice::queueEvent(const MidiPlayEvent& e)        void* pb = jack_port_get_buffer(_out_client_jackport, MusEGlobal::segmentSize);          //unsigned frameCounter = ->frameTime(); -      int frameOffset = audio->getFrameOffset(); -      unsigned pos = audio->pos().frame(); +      int frameOffset = MusEGlobal::audio->getFrameOffset(); +      unsigned pos = MusEGlobal::audio->pos().frame();        int ft = e.time() - frameOffset - pos;        if (ft < 0) @@ -715,8 +719,8 @@ bool MidiJackDevice::queueEvent(const MidiPlayEvent& e)  bool MidiJackDevice::processEvent(const MidiPlayEvent& event)  {     -  //int frameOffset = audio->getFrameOffset(); -  //unsigned pos = audio->pos().frame(); +  //int frameOffset = MusEGlobal::audio->getFrameOffset(); +  //unsigned pos = MusEGlobal::audio->pos().frame();    int chn    = event.channel();    unsigned t = event.time(); @@ -730,11 +734,11 @@ bool MidiJackDevice::processEvent(const MidiPlayEvent& event)    // Just do this 'standard midi 64T timing thing' for now until we figure out more precise external timings.     // Does require relatively short audio buffers, in order to catch the resolution, but buffer <= 256 should be OK...     // Tested OK so far with 128.  -  //if(extSyncFlag.value())  +  //if(MusEGlobal::extSyncFlag.value())     // p4.0.15 Or, is the event marked to be played immediately?    // Nothing to do but stamp the event to be queued for frame 0+. -  if(t == 0 || extSyncFlag.value())     -    t = audio->getFrameOffset() + audio->pos().frame(); +  if(t == 0 || MusEGlobal::extSyncFlag.value())     +    t = MusEGlobal::audio->getFrameOffset() + MusEGlobal::audio->pos().frame();      //t = frameOffset + pos;    #ifdef JACK_MIDI_DEBUG @@ -744,7 +748,7 @@ bool MidiJackDevice::processEvent(const MidiPlayEvent& event)    if(event.type() == ME_PROGRAM)     {      // don't output program changes for GM drum channel -    //if (!(song->mtype() == MT_GM && chn == 9)) { +    //if (!(MusEGlobal::song->mtype() == MT_GM && chn == 9)) {            int hb = (a >> 16) & 0xff;            int lb = (a >> 8) & 0xff;            int pr = a & 0x7f; @@ -782,7 +786,7 @@ bool MidiJackDevice::processEvent(const MidiPlayEvent& event)      int nvl = 0xff;      if(_port != -1)      { -      int nv = midiPorts[_port].nullSendValue(); +      int nv = MusEGlobal::midiPorts[_port].nullSendValue();        if(nv != -1)        {          nvh = (nv >> 8) & 0xff; @@ -800,7 +804,7 @@ bool MidiJackDevice::processEvent(const MidiPlayEvent& event)      else if (a == CTRL_PROGRAM)       {        // don't output program changes for GM drum channel -      //if (!(song->mtype() == MT_GM && chn == 9)) { +      //if (!(MusEGlobal::song->mtype() == MT_GM && chn == 9)) {              int hb = (b >> 16) & 0xff;              int lb = (b >> 8) & 0xff;              int pr = b & 0x7f; @@ -1016,7 +1020,7 @@ void MidiJackDevice::processMidi()      // Same code as in MidiPort::sendEvent()      if(_port != -1)      { -      MidiPort* mp = &midiPorts[_port]; +      MidiPort* mp = &MusEGlobal::midiPorts[_port];        if(i->type() == ME_CONTROLLER)         {          int da = i->dataA(); @@ -1063,3 +1067,4 @@ bool initMidiJack()    return false;  } +} // namespace MusECore diff --git a/muse2/muse/driver/jackmidi.h b/muse2/muse/driver/jackmidi.h index e79e9288..d2c14190 100644 --- a/muse2/muse/driver/jackmidi.h +++ b/muse2/muse/driver/jackmidi.h @@ -36,9 +36,11 @@  class QString;  //class MidiFifo; +//class RouteList; + +namespace MusECore {  class MidiRecordEvent;  class MidiPlayEvent; -//class RouteList;  class Xml;  // It appears one client port per remote port will be necessary. @@ -93,6 +95,8 @@ class MidiJackDevice : public MidiDevice {  extern bool initMidiJack(); +} // namespace MusECore +  #endif diff --git a/muse2/muse/driver/rtctimer.cpp b/muse2/muse/driver/rtctimer.cpp index 8410bb04..fd0fe8ed 100644 --- a/muse2/muse/driver/rtctimer.cpp +++ b/muse2/muse/driver/rtctimer.cpp @@ -70,7 +70,7 @@ signed int RtcTimer::initTimer()            MusEGlobal::undoSetuid();            return timerFd;            } -    if (!setTimerFreq(MusEConfig::config.rtcTicks)) { +    if (!setTimerFreq(MusEGlobal::config.rtcTicks)) {            // unable to set timer frequency            return -1;            }  | 
