From: werner s. <wsc...@us...> - 2005-12-18 12:36:25
|
Update of /cvsroot/lmuse/muse/muse In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31987/muse Modified Files: app.cpp app.h audio.cpp audio.h audioprefetch.cpp audiotrack.cpp audiowriteback.cpp fifo.cpp importmidi.cpp plugin.cpp song.cpp songfile.cpp track.cpp transport.cpp transport.h wave.cpp wavetrack.cpp Log Message: recent updates Index: transport.h =================================================================== RCS file: /cvsroot/lmuse/muse/muse/transport.h,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** transport.h 5 Dec 2005 20:40:39 -0000 1.16 --- transport.h 18 Dec 2005 12:36:02 -0000 1.17 *************** *** 44,48 **** void setPos(int idx, const AL::Pos& pos); void setMasterFlag(bool); - void setClickFlag(bool); void setQuantizeFlag(bool); void setSyncFlag(bool); --- 44,47 ---- Index: importmidi.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/importmidi.cpp,v retrieving revision 1.52 retrieving revision 1.53 diff -C2 -d -r1.52 -r1.53 *** importmidi.cpp 15 Dec 2005 16:01:20 -0000 1.52 --- importmidi.cpp 18 Dec 2005 12:36:01 -0000 1.53 *************** *** 412,416 **** if (tevents->size()) ! printf("-----------events left: %d\n", tevents->size()); for (iEvent i = tevents->begin(); i != tevents->end(); ++i) { printf("%d===\n", i->first); --- 412,416 ---- if (tevents->size()) ! printf("-----------events left: %ld\n", tevents->size()); for (iEvent i = tevents->begin(); i != tevents->end(); ++i) { printf("%d===\n", i->first); Index: audio.h =================================================================== RCS file: /cvsroot/lmuse/muse/muse/audio.h,v retrieving revision 1.57 retrieving revision 1.58 diff -C2 -d -r1.57 -r1.58 *** audio.h 17 Dec 2005 11:29:18 -0000 1.57 --- audio.h 18 Dec 2005 12:36:01 -0000 1.58 *************** *** 171,178 **** int sigFd; // pipe fd for messages to gui - // record values: - Pos startRecordPos; - Pos endRecordPos; - // AudioOutput* _audioMaster; --- 171,174 ---- *************** *** 191,194 **** --- 187,193 ---- virtual ~Audio() {} + Pos startRecordPos; + Pos endRecordPos; + void process(unsigned frames); void processMidi(unsigned frames); *************** *** 262,266 **** int timestamp() const; unsigned curFrame() const; - void recordStop(); bool freewheel() const { return _freewheel; } void setFreewheel(bool val); --- 261,264 ---- Index: app.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/app.cpp,v retrieving revision 1.214 retrieving revision 1.215 diff -C2 -d -r1.214 -r1.215 *** app.cpp 17 Dec 2005 11:29:18 -0000 1.214 --- app.cpp 18 Dec 2005 12:36:01 -0000 1.215 *************** *** 378,381 **** --- 378,382 ---- editInstrument = 0; appName = QString("MusE"); + _raster = 0; song->blockSignals(true); *************** *** 433,437 **** stopAction->setCheckable(true); stopAction->setChecked(true); ! connect(stopAction, SIGNAL(toggled(bool)), song, SLOT(setStop(bool))); playAction = new QAction(QIcon(*playIcon), tr("Play"), this); --- 434,438 ---- stopAction->setCheckable(true); stopAction->setChecked(true); ! connect(stopAction, SIGNAL(triggered(bool)), song, SLOT(setStop(bool))); playAction = new QAction(QIcon(*playIcon), tr("Play"), this); *************** *** 439,448 **** playAction->setCheckable(true); playAction->setChecked(false); ! connect(playAction, SIGNAL(toggled(bool)), song, SLOT(setPlay(bool))); recordAction = new QAction(*recordIcon, tr("Record"), this); recordAction->setWhatsThis(tr(infoRecordButton)); recordAction->setCheckable(true); ! connect(recordAction, SIGNAL(toggled(bool)), song, SLOT(setRecord(bool))); panicAction = new QAction(QIcon(*panicIcon), tr("Panic"), this); --- 440,449 ---- playAction->setCheckable(true); playAction->setChecked(false); ! connect(playAction, SIGNAL(triggered(bool)), song, SLOT(setPlay(bool))); recordAction = new QAction(*recordIcon, tr("Record"), this); recordAction->setWhatsThis(tr(infoRecordButton)); recordAction->setCheckable(true); ! connect(recordAction, SIGNAL(triggered(bool)), song, SLOT(setRecord(bool))); panicAction = new QAction(QIcon(*panicIcon), tr("Panic"), this); *************** *** 941,945 **** void MusE::setRaster(int val) { ! emit rasterChanged(rasterTable[val].val); } --- 942,947 ---- void MusE::setRaster(int val) { ! _raster = rasterTable[val].val; ! emit rasterChanged(_raster); } Index: audiotrack.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/audiotrack.cpp,v retrieving revision 1.44 retrieving revision 1.45 diff -C2 -d -r1.44 -r1.45 *** audiotrack.cpp 17 Dec 2005 11:29:18 -0000 1.44 --- audiotrack.cpp 18 Dec 2005 12:36:01 -0000 1.45 *************** *** 302,306 **** //--------------------------------------------------- ! if (_prefader) { for (int i = 0; i < srcChannels; ++i) { float* p = buffer[i]; --- 302,306 ---- //--------------------------------------------------- ! if (_prefader || (recordFlag() && type() == WAVE)) { for (int i = 0; i < srcChannels; ++i) { float* p = buffer[i]; *************** *** 317,321 **** } } ! if (isMute()) { for (int i = 0; i < dstChannels; ++i) memset(dstBuffer[i], 0, sizeof(float) * nframes); --- 317,321 ---- } } ! if (isMute() || (recordFlag() && !monitor() && type() == WAVE)) { for (int i = 0; i < dstChannels; ++i) memset(dstBuffer[i], 0, sizeof(float) * nframes); *************** *** 474,478 **** //--------------------------------------------------- ! if (_prefader) { for (int i = 0; i < srcChannels; ++i) { float* p = buffer[i]; --- 474,478 ---- //--------------------------------------------------- ! if (_prefader || (recordFlag() && type() == WAVE)) { for (int i = 0; i < srcChannels; ++i) { float* p = buffer[i]; *************** *** 488,492 **** } } ! if (isMute()) return; --- 488,492 ---- } } ! if (isMute() || (recordFlag() && !monitor() && type() == WAVE)) return; *************** *** 711,715 **** return; if (_recFile) { - // _recFile->seek(framePos, 0); _recFile->write(_channels, buffer, segmentSize); } --- 711,714 ---- Index: songfile.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/songfile.cpp,v retrieving revision 1.66 retrieving revision 1.67 diff -C2 -d -r1.66 -r1.67 *** songfile.cpp 15 Dec 2005 16:01:20 -0000 1.66 --- songfile.cpp 18 Dec 2005 12:36:01 -0000 1.67 *************** *** 478,481 **** --- 478,487 ---- else if (strcmp("ListEdit", w->metaObject()->className()) == 0) ((TopWin*)w)->writeStatus(xml); + else if (strcmp("Mixer", w->metaObject()->className()) == 0) + ; + else if (strcmp("MusE", w->metaObject()->className()) == 0) + ; + else if (strcmp("QDesktopWidget", w->metaObject()->className()) == 0) + ; else printf("TopLevel <%s>\n", w->metaObject()->className()); Index: song.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/song.cpp,v retrieving revision 1.145 retrieving revision 1.146 diff -C2 -d -r1.145 -r1.146 *** song.cpp 17 Dec 2005 11:29:18 -0000 1.145 --- song.cpp 18 Dec 2005 12:36:01 -0000 1.146 *************** *** 284,288 **** --- 284,295 ---- { if (recordFlag == f) + return; + if (playAction->isChecked()) { + // + // dont allow record state changes when rolling + // + recordAction->setChecked(!f); return; + } if (f) { *************** *** 417,431 **** else { if (recordAction->isChecked()) { ! MidiTrackList* ml = song->midis(); for (iMidiTrack it = ml->begin(); it != ml->end(); ++it) { if ((*it)->recordFlag()) (*it)->startRecording(); } ! WaveTrackList* wl = song->waves(); for (iWaveTrack wt = wl->begin(); wt != wl->end(); ++wt) { if ((*wt)->recordFlag()) (*wt)->startRecording(); } ! OutputList* ol = song->outputs(); for (iAudioOutput o = ol->begin(); o != ol->end(); ++o) { if ((*o)->recordFlag()) --- 424,438 ---- else { if (recordAction->isChecked()) { ! MidiTrackList* ml = midis(); for (iMidiTrack it = ml->begin(); it != ml->end(); ++it) { if ((*it)->recordFlag()) (*it)->startRecording(); } ! WaveTrackList* wl = waves(); for (iWaveTrack wt = wl->begin(); wt != wl->end(); ++wt) { if ((*wt)->recordFlag()) (*wt)->startRecording(); } ! OutputList* ol = outputs(); for (iAudioOutput o = ol->begin(); o != ol->end(); ++o) { if ((*o)->recordFlag()) *************** *** 437,440 **** --- 444,451 ---- } + //--------------------------------------------------------- + // setStop + //--------------------------------------------------------- + void Song::setStop(bool f) { *************** *** 446,461 **** } void Song::setStopPlay(bool f) { - playAction->blockSignals(true); - stopAction->blockSignals(true); - emit playChanged(f); // signal transport window - playAction->setChecked(f); stopAction->setChecked(!f); - - stopAction->blockSignals(false); - playAction->blockSignals(false); } --- 457,469 ---- } + //--------------------------------------------------------- + // setStopPlay + //--------------------------------------------------------- + void Song::setStopPlay(bool f) { emit playChanged(f); // signal transport window playAction->setChecked(f); stopAction->setChecked(!f); } *************** *** 791,794 **** --- 799,803 ---- void Song::beat() { + updateFlags = 0; if (audio->isPlaying()) { int tick = audio->tickPos(); *************** *** 813,822 **** if (rcEnable) midiRCList.doAction(event); ! emit song->midiEvent(event); } // // update controller guis // ! TrackList* tl = song->tracks(); for (iTrack it = tl->begin(); it != tl->end(); ++it) { Track* track = *it; --- 822,831 ---- if (rcEnable) midiRCList.doAction(event); ! emit midiEvent(event); } // // update controller guis // ! TrackList* tl = tracks(); for (iTrack it = tl->begin(); it != tl->end(); ++it) { Track* track = *it; *************** *** 825,828 **** --- 834,838 ---- track->updateController(); } + update(updateFlags); } *************** *** 1297,1303 **** void Song::stopRolling() { - if (record()) - audio->recordStop(); setStopPlay(false); // // process recorded automation events --- 1307,1341 ---- void Song::stopRolling() { setStopPlay(false); + WaveTrackList* wl = waves(); + for (iWaveTrack i = wl->begin(); i != wl->end(); ++i) + (*i)->resetMeter(); + if (record()) { + audio->msgIdle(true); // gain access to all data structures + + startUndo(); + + WaveTrackList* wl = waves(); + for (iWaveTrack it = wl->begin(); it != wl->end(); ++it) { + WaveTrack* track = *it; + if (track->recordFlag() || bounceTrack == track) { + track->stopRecording(audio->startRecordPos, audio->endRecordPos); + } + } + MidiTrackList* ml = midis(); + for (iMidiTrack it = ml->begin(); it != ml->end(); ++it) { + if ((*it)->recordFlag()) + (*it)->stopRecording(); + } + OutputList* ol = outputs(); + for (iAudioOutput io = ol->begin(); io != ol->end(); ++io) { + AudioOutput* ao = *io; + if (ao->recordFlag()) + ao->stopRecording(audio->startRecordPos, audio->endRecordPos); + } + audio->msgIdle(false); + endUndo(0); + setRecord(false); + } // // process recorded automation events *************** *** 1500,1508 **** // add default routes // ! OutputList* ol = song->outputs(); AudioOutput* ao = 0; if (!ol->empty()) ao = ol->front(); ! MidiOutPortList* mol = song->midiOutPorts(); MidiOutPort* mo = 0; if (!mol->empty()) --- 1538,1546 ---- // add default routes // ! OutputList* ol = outputs(); AudioOutput* ao = 0; if (!ol->empty()) ao = ol->front(); ! MidiOutPortList* mol = midiOutPorts(); MidiOutPort* mo = 0; if (!mol->empty()) *************** *** 1535,1539 **** // if (!track->noInRoute()) { ! MidiInPortList* mi = song->midiInPorts(); for (iMidiInPort i = mi->begin(); i != mi->end(); ++i) { for (int ch = 0; ch < MIDI_CHANNELS; ++ch) --- 1573,1577 ---- // if (!track->noInRoute()) { ! MidiInPortList* mi = midiInPorts(); for (iMidiInPort i = mi->begin(); i != mi->end(); ++i) { for (int ch = 0; ch < MIDI_CHANNELS; ++ch) Index: track.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/track.cpp,v retrieving revision 1.92 retrieving revision 1.93 diff -C2 -d -r1.92 -r1.93 *** track.cpp 17 Dec 2005 11:29:18 -0000 1.92 --- track.cpp 18 Dec 2005 12:36:02 -0000 1.93 *************** *** 187,195 **** //--------------------------------------------------------- - // iPart Track::addPart(Part* p) void Track::addPart(Part* p) { p->setTrack(this); - // return _parts->add(p); _parts->add(p); } --- 187,193 ---- Index: app.h =================================================================== RCS file: /cvsroot/lmuse/muse/muse/app.h,v retrieving revision 1.76 retrieving revision 1.77 diff -C2 -d -r1.76 -r1.77 *** app.h 12 Dec 2005 22:03:44 -0000 1.76 --- app.h 18 Dec 2005 12:36:01 -0000 1.77 *************** *** 83,86 **** --- 83,87 ---- QToolBar *tools; EditToolBar *tools1; + int _raster; Transport* transport; *************** *** 271,275 **** int version; // last *.med file version // 0xaabb aa - major version, bb minor version ! }; --- 272,276 ---- int version; // last *.med file version // 0xaabb aa - major version, bb minor version ! int raster() const { return _raster; } }; Index: fifo.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/fifo.cpp,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** fifo.cpp 17 Dec 2005 11:29:18 -0000 1.3 --- fifo.cpp 18 Dec 2005 12:36:01 -0000 1.4 *************** *** 77,84 **** { FifoBuffer* b; for (;;) { if (counter.read() == 0) { ! // if (debugMsg) ! printf("FIFO %p underrun at 0x%x\n", this, pos); return true; } --- 77,84 ---- { FifoBuffer* b; + bool errMsg = true; for (;;) { if (counter.read() == 0) { ! printf("FIFO %p underrun at 0x%x\n", this, pos); return true; } *************** *** 90,96 **** // fifo is empty // ! // if (debugMsg) ! printf("Fifo::get(0x%x), discard wrong prefetch block 0x%x\n", pos, b->pos); remove(); } for (int i = 0; i < segs; ++i) --- 90,97 ---- // fifo is empty // ! if (errMsg) ! printf("Fifo::get(0x%x), discard wrong prefetch block(s) 0x%x\n", pos, b->pos); remove(); + errMsg = false; } for (int i = 0; i < segs; ++i) Index: wavetrack.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/wavetrack.cpp,v retrieving revision 1.28 retrieving revision 1.29 diff -C2 -d -r1.28 -r1.29 *** wavetrack.cpp 17 Dec 2005 11:29:18 -0000 1.28 --- wavetrack.cpp 18 Dec 2005 12:36:02 -0000 1.29 *************** *** 16,19 **** --- 16,20 ---- #include "part.h" #include "audiowriteback.h" + #include "app.h" bool WaveTrack::firstWaveTrack = true; *************** *** 149,169 **** { if ((song->bounceTrack != this) && !noInRoute()) { ! RouteList* irl = inRoutes(); ! iRoute i = irl->begin(); ! ((AudioTrack*)i->track)->copyData(framePos, channels, nframe, bp); ! ++i; ! for (; i != irl->end(); ++i) ! ((AudioTrack*)i->track)->addData(framePos, channels, nframe, bp); ! if (recordFlag() && audio->isRecording()) { ! if (recFile()) { ! if (audio->freewheel()) { ! } ! else { ! // fifo.put(channels, nframe, bp, audio->pos().frame()); ! fifo.put(channels, nframe, bp, framePos); } } return true; } } if (!audio->isPlaying()) --- 150,178 ---- { if ((song->bounceTrack != this) && !noInRoute()) { ! if (recordFlag()) { ! RouteList* irl = inRoutes(); ! iRoute i = irl->begin(); ! ((AudioTrack*)i->track)->copyData(framePos, channels, nframe, bp); ! ++i; ! for (; i != irl->end(); ++i) ! ((AudioTrack*)i->track)->addData(framePos, channels, nframe, bp); ! ! if (recordFlag() && audio->isRecording()) { ! if (recFile()) { ! if (audio->freewheel()) ! ; ! else ! fifo.put(channels, nframe, bp, framePos); } } return true; } + // dummy read input routes to animate meter + float* buffer[channels]; + float data[nframe * channels]; + for (int i = 0; i < channels; ++i) + buffer[i] = data + i * nframe; + for (iRoute r = inRoutes()->begin(); r != inRoutes()->end(); ++r) + ((AudioTrack*)r->track)->addData(framePos, channels, nframe, buffer); } if (!audio->isPlaying()) *************** *** 248,258 **** // recordPart = new WavePart(this); ! int startTick = song->roundDownBar(start.tick()); ! int endTick = song->roundUpBar(start.tick()); ! recordPart->setTick(startTick); ! recordPart->setLenTick(endTick - startTick); recordPart->setName(name()); addPart(recordPart); partCreated = true; } } --- 257,268 ---- // recordPart = new WavePart(this); ! Pos spos(start.downSnaped(muse->raster())); ! Pos epos(start.upSnaped(muse->raster())); ! recordPart->setPos(spos); ! recordPart->setLenTick(epos.tick() - spos.tick()); recordPart->setName(name()); addPart(recordPart); partCreated = true; + emit partsChanged(); } } *************** *** 270,274 **** int ptick = recordPart->tick(); recordPart->setLenTick(cpos - ptick); ! song->update(SC_PART_MODIFIED); } } --- 280,284 ---- int ptick = recordPart->tick(); recordPart->setLenTick(cpos - ptick); ! song->addUpdateFlags(SC_PART_MODIFIED); } } *************** *** 291,294 **** --- 301,305 ---- SndFileR sf(_recFile); event.setSndFile(sf); + event.setPos(s - *recordPart); event.setSpos(0); event.setLenFrame(e.frame() - s.frame()); *************** *** 297,312 **** _recFile = 0; - unsigned ptick = recordPart->tick(); - unsigned cpos = e.tick(); // // adjust part len && song len // ! if (recordPart->lenTick() < (cpos-ptick)) { ! int endTick = song->roundUpBar(cpos); ! recordPart->setLenTick(endTick - ptick); updateFlags |= SC_PART_MODIFIED; } - unsigned etick = recordPart->endTick(); if (song->len() < etick) song->setLen(etick); --- 308,322 ---- _recFile = 0; // // adjust part len && song len // ! unsigned etick = e.upSnaped(muse->raster()).tick(); ! unsigned len = etick - recordPart->tick(); ! ! if (recordPart->lenTick() < len) { ! recordPart->setLenTick(len); updateFlags |= SC_PART_MODIFIED; } if (song->len() < etick) song->setLen(etick); *************** *** 323,325 **** } - --- 333,334 ---- Index: plugin.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/plugin.cpp,v retrieving revision 1.45 retrieving revision 1.46 diff -C2 -d -r1.45 -r1.46 *** plugin.cpp 4 Nov 2005 12:03:35 -0000 1.45 --- plugin.cpp 18 Dec 2005 12:36:01 -0000 1.46 *************** *** 26,30 **** LADSPA_PortRangeHint range = plugin->PortRangeHints[k]; LADSPA_PortRangeHintDescriptor rh = range.HintDescriptor; ! bool isLog = LADSPA_IS_HINT_LOGARITHMIC(rh); double val = 1.0; float m = (rh & LADSPA_HINT_SAMPLE_RATE) ? float(AL::sampleRate) : 1.0f; --- 26,30 ---- LADSPA_PortRangeHint range = plugin->PortRangeHints[k]; LADSPA_PortRangeHintDescriptor rh = range.HintDescriptor; ! // bool isLog = LADSPA_IS_HINT_LOGARITHMIC(rh); double val = 1.0; float m = (rh & LADSPA_HINT_SAMPLE_RATE) ? float(AL::sampleRate) : 1.0f; Index: wave.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/wave.cpp,v retrieving revision 1.34 retrieving revision 1.35 diff -C2 -d -r1.34 -r1.35 *** wave.cpp 16 Dec 2005 15:57:02 -0000 1.34 --- wave.cpp 18 Dec 2005 12:36:02 -0000 1.35 *************** *** 161,172 **** float fd = data[ch][n]; rms += fd * fd; ! int idata = int(fd * 255.0); if (idata < 0) idata = -idata; if (cache[ch][i].peak < idata) cache[ch][i].peak = idata; } // amplify rms value +12dB ! int rmsValue = int((sqrt(rms/cacheMag) * 255.0)); if (rmsValue > 255) rmsValue = 255; --- 161,174 ---- float fd = data[ch][n]; rms += fd * fd; ! int idata = lrint(fd * 255.0); if (idata < 0) idata = -idata; + if (idata > 255) + idata = 255; if (cache[ch][i].peak < idata) cache[ch][i].peak = idata; } // amplify rms value +12dB ! int rmsValue = lrint((sqrt(rms/cacheMag) * 255.0)); if (rmsValue > 255) rmsValue = 255; Index: audioprefetch.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/audioprefetch.cpp,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** audioprefetch.cpp 16 Dec 2005 15:36:51 -0000 1.24 --- audioprefetch.cpp 18 Dec 2005 12:36:01 -0000 1.25 *************** *** 16,21 **** #include "sync.h" ! enum { PREFETCH_TICK, PREFETCH_SEEK ! }; //--------------------------------------------------------- --- 16,20 ---- #include "sync.h" ! enum { PREFETCH_TICK, PREFETCH_SEEK }; //--------------------------------------------------------- *************** *** 159,164 **** WaveTrack* track = *it; if ((song->bounceTrack != track) && !track->noInRoute() ! && track->recordFlag() ! && audio->isRecording()) continue; int ch = track->channels(); --- 158,162 ---- WaveTrack* track = *it; if ((song->bounceTrack != track) && !track->noInRoute() ! && track->recordFlag()) continue; int ch = track->channels(); Index: audiowriteback.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/audiowriteback.cpp,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** audiowriteback.cpp 17 Dec 2005 11:29:18 -0000 1.2 --- audiowriteback.cpp 18 Dec 2005 12:36:01 -0000 1.3 *************** *** 57,61 **** while (counter.read()) { counter.dec(); - printf(" write\n"); OutputList* ol = song->outputs(); if (!ol->empty()) { --- 57,60 ---- Index: audio.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/audio.cpp,v retrieving revision 1.111 retrieving revision 1.112 diff -C2 -d -r1.111 -r1.112 *** audio.cpp 17 Dec 2005 11:29:18 -0000 1.111 --- audio.cpp 18 Dec 2005 12:36:01 -0000 1.112 *************** *** 585,588 **** --- 585,589 ---- //--------------------------------------------------------- // stopRolling + // execution environment: realtime thread //--------------------------------------------------------- *************** *** 591,600 **** state = STOP; midiSeq->msgStop(); - - WaveTrackList* tracks = song->waves(); - for (iWaveTrack i = tracks->begin(); i != tracks->end(); ++i) { - WaveTrack* track = *i; - track->resetMeter(); - } recording = false; endRecordPos = _pos; --- 592,595 ---- *************** *** 604,641 **** //--------------------------------------------------------- - // recordStop - // execution environment: gui thread - //--------------------------------------------------------- - - void Audio::recordStop() - { - audio->msgIdle(true); // gain access to all data structures - - song->startUndo(); - - WaveTrackList* wl = song->waves(); - for (iWaveTrack it = wl->begin(); it != wl->end(); ++it) { - WaveTrack* track = *it; - if (track->recordFlag() || song->bounceTrack == track) { - track->stopRecording(startRecordPos, endRecordPos); - } - } - MidiTrackList* ml = song->midis(); - for (iMidiTrack it = ml->begin(); it != ml->end(); ++it) { - if ((*it)->recordFlag()) - (*it)->stopRecording(); - } - OutputList* ol = song->outputs(); - for (iAudioOutput io = ol->begin(); io != ol->end(); ++io) { - AudioOutput* ao = *io; - if (ao->recordFlag()) - ao->stopRecording(startRecordPos, endRecordPos); - } - audio->msgIdle(false); - song->endUndo(0); - song->setRecord(false); - } - - //--------------------------------------------------------- // curFrame // extrapolates current play frame on syncTime/syncFrame --- 599,602 ---- Index: transport.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/transport.cpp,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** transport.cpp 5 Dec 2005 20:40:39 -0000 1.23 --- transport.cpp 18 Dec 2005 12:36:02 -0000 1.24 *************** *** 121,125 **** connect(song, SIGNAL(quantizeChanged(bool)), this, SLOT(setQuantizeFlag(bool))); ! connect(song, SIGNAL(clickChanged(bool)), this, SLOT(setClickFlag(bool))); //----------------------------------------------------- --- 121,125 ---- connect(song, SIGNAL(quantizeChanged(bool)), this, SLOT(setQuantizeFlag(bool))); ! connect(song, SIGNAL(clickChanged(bool)), clickButton, SLOT(setChecked(bool))); //----------------------------------------------------- *************** *** 256,270 **** //--------------------------------------------------------- - // setClickFlag - //--------------------------------------------------------- - - void Transport::setClickFlag(bool f) - { - clickButton->blockSignals(true); - clickButton->setChecked(f); - clickButton->blockSignals(false); - } - - //--------------------------------------------------------- // setQuantizeFlag //--------------------------------------------------------- --- 256,259 ---- |