|
|
@ -148,7 +148,7 @@ SequenceManager::~SequenceManager()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
m_doc->getComposition().removeObserver(this);
|
|
|
|
m_doc->getComposition().removeObserver(this);
|
|
|
|
|
|
|
|
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::~SequenceManager()\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::~SequenceManager()\n";
|
|
|
|
delete m_compositionMmapper;
|
|
|
|
delete m_compositionMmapper;
|
|
|
|
delete m_controlBlockMmapper;
|
|
|
|
delete m_controlBlockMmapper;
|
|
|
|
delete m_metronomeMmapper;
|
|
|
|
delete m_metronomeMmapper;
|
|
|
@ -159,7 +159,7 @@ SequenceManager::~SequenceManager()
|
|
|
|
|
|
|
|
|
|
|
|
void SequenceManager::setDocument(RosegardenGUIDoc* doc)
|
|
|
|
void SequenceManager::setDocument(RosegardenGUIDoc* doc)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::setDocument(" << doc << ")\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::setDocument(" << doc << ")\n";
|
|
|
|
|
|
|
|
|
|
|
|
DataBlockRepository::clear();
|
|
|
|
DataBlockRepository::clear();
|
|
|
|
|
|
|
|
|
|
|
@ -201,7 +201,7 @@ void SequenceManager::setDocument(RosegardenGUIDoc* doc)
|
|
|
|
|
|
|
|
|
|
|
|
for (Composition::iterator i = comp.begin(); i != comp.end(); ++i) {
|
|
|
|
for (Composition::iterator i = comp.begin(); i != comp.end(); ++i) {
|
|
|
|
|
|
|
|
|
|
|
|
SETQMAN_DEBUG << "Adding segment with rid " << (*i)->getRuntimeId() << endl;
|
|
|
|
SEQMAN_DEBUG << "Adding segment with rid " << (*i)->getRuntimeId() << endl;
|
|
|
|
|
|
|
|
|
|
|
|
m_segments.insert(SegmentRefreshMap::value_type
|
|
|
|
m_segments.insert(SegmentRefreshMap::value_type
|
|
|
|
(*i, (*i)->getNewRefreshStatusId()));
|
|
|
|
(*i, (*i)->getNewRefreshStatusId()));
|
|
|
@ -284,15 +284,15 @@ SequenceManager::play()
|
|
|
|
//!!! disable the record button, because recording while playing is horribly
|
|
|
|
//!!! disable the record button, because recording while playing is horribly
|
|
|
|
// broken, and disabling it is less complicated than fixing it
|
|
|
|
// broken, and disabling it is less complicated than fixing it
|
|
|
|
// see #1223025 - DMM
|
|
|
|
// see #1223025 - DMM
|
|
|
|
// SETQMAN_DEBUG << "SequenceManager::play() - disabling record button, as we are playing\n";
|
|
|
|
// SEQMAN_DEBUG << "SequenceManager::play() - disabling record button, as we are playing\n";
|
|
|
|
// m_transport->RecordButton()->setEnabled(false);
|
|
|
|
// m_transport->RecordButton()->setEnabled(false);
|
|
|
|
|
|
|
|
|
|
|
|
if (comp.getCurrentTempo() == 0) {
|
|
|
|
if (comp.getCurrentTempo() == 0) {
|
|
|
|
comp.setCompositionDefaultTempo(comp.getTempoForQpm(120.0));
|
|
|
|
comp.setCompositionDefaultTempo(comp.getTempoForQpm(120.0));
|
|
|
|
|
|
|
|
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::play() - setting Tempo to Default value of 120.000\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::play() - setting Tempo to Default value of 120.000\n";
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::play() - starting to play\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::play() - starting to play\n";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// Send initial tempo
|
|
|
|
// Send initial tempo
|
|
|
@ -422,9 +422,9 @@ SequenceManager::stopping()
|
|
|
|
return ;
|
|
|
|
return ;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::stopping() - preparing to stop\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::stopping() - preparing to stop\n";
|
|
|
|
|
|
|
|
|
|
|
|
// SETQMAN_DEBUG << kdBacktrace() << endl;
|
|
|
|
// SEQMAN_DEBUG << kdBacktrace() << endl;
|
|
|
|
|
|
|
|
|
|
|
|
stop();
|
|
|
|
stop();
|
|
|
|
|
|
|
|
|
|
|
@ -452,7 +452,7 @@ SequenceManager::stop()
|
|
|
|
|
|
|
|
|
|
|
|
// re-enable the record button if it was previously disabled when
|
|
|
|
// re-enable the record button if it was previously disabled when
|
|
|
|
// going into play mode - DMM
|
|
|
|
// going into play mode - DMM
|
|
|
|
// SETQMAN_DEBUG << "SequenceManager::stop() - re-enabling record button\n";
|
|
|
|
// SEQMAN_DEBUG << "SequenceManager::stop() - re-enabling record button\n";
|
|
|
|
// m_transport->RecordButton()->setEnabled(true);
|
|
|
|
// m_transport->RecordButton()->setEnabled(true);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -489,13 +489,13 @@ SequenceManager::stop()
|
|
|
|
m_doc->stopRecordingMidi();
|
|
|
|
m_doc->stopRecordingMidi();
|
|
|
|
m_doc->stopRecordingAudio();
|
|
|
|
m_doc->stopRecordingAudio();
|
|
|
|
|
|
|
|
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::stop() - stopped recording\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::stop() - stopped recording\n";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// always untoggle the play button at this stage
|
|
|
|
// always untoggle the play button at this stage
|
|
|
|
//
|
|
|
|
//
|
|
|
|
m_transport->PlayButton()->setOn(false);
|
|
|
|
m_transport->PlayButton()->setOn(false);
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::stop() - stopped playing\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::stop() - stopped playing\n";
|
|
|
|
|
|
|
|
|
|
|
|
// We don't reset controllers at this point - what happens with static
|
|
|
|
// We don't reset controllers at this point - what happens with static
|
|
|
|
// controllers the next time we play otherwise? [rwb]
|
|
|
|
// controllers the next time we play otherwise? [rwb]
|
|
|
@ -524,7 +524,7 @@ SequenceManager::rewind()
|
|
|
|
clock_t now = clock();
|
|
|
|
clock_t now = clock();
|
|
|
|
int elapsed = (now - m_lastRewoundAt) * 1000 / CLOCKS_PER_SEC;
|
|
|
|
int elapsed = (now - m_lastRewoundAt) * 1000 / CLOCKS_PER_SEC;
|
|
|
|
|
|
|
|
|
|
|
|
SETQMAN_DEBUG << "That was " << m_lastRewoundAt << ", this is " << now << ", elapsed is " << elapsed << endl;
|
|
|
|
SEQMAN_DEBUG << "That was " << m_lastRewoundAt << ", this is " << now << ", elapsed is " << elapsed << endl;
|
|
|
|
|
|
|
|
|
|
|
|
if (elapsed >= 0 && elapsed <= 200) {
|
|
|
|
if (elapsed >= 0 && elapsed <= 200) {
|
|
|
|
if (position > barRange.first &&
|
|
|
|
if (position > barRange.first &&
|
|
|
@ -586,7 +586,7 @@ SequenceManager::record(bool toggled)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
mapSequencer();
|
|
|
|
mapSequencer();
|
|
|
|
|
|
|
|
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::record(" << toggled << ")" << endl;
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::record(" << toggled << ")" << endl;
|
|
|
|
|
|
|
|
|
|
|
|
Composition &comp = m_doc->getComposition();
|
|
|
|
Composition &comp = m_doc->getComposition();
|
|
|
|
Studio &studio = m_doc->getStudio();
|
|
|
|
Studio &studio = m_doc->getStudio();
|
|
|
@ -624,7 +624,7 @@ SequenceManager::record(bool toggled)
|
|
|
|
if (toggled) { // preparing record or punch-in record
|
|
|
|
if (toggled) { // preparing record or punch-in record
|
|
|
|
|
|
|
|
|
|
|
|
if (m_transportStatus == RECORDING_ARMED) {
|
|
|
|
if (m_transportStatus == RECORDING_ARMED) {
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::record - unarming record\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::record - unarming record\n";
|
|
|
|
m_transportStatus = STOPPED;
|
|
|
|
m_transportStatus = STOPPED;
|
|
|
|
|
|
|
|
|
|
|
|
// Toggle the buttons
|
|
|
|
// Toggle the buttons
|
|
|
@ -635,7 +635,7 @@ SequenceManager::record(bool toggled)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (m_transportStatus == STOPPED) {
|
|
|
|
if (m_transportStatus == STOPPED) {
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::record - armed record\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::record - armed record\n";
|
|
|
|
m_transportStatus = RECORDING_ARMED;
|
|
|
|
m_transportStatus = RECORDING_ARMED;
|
|
|
|
|
|
|
|
|
|
|
|
// Toggle the buttons
|
|
|
|
// Toggle the buttons
|
|
|
@ -646,7 +646,7 @@ SequenceManager::record(bool toggled)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (m_transportStatus == RECORDING) {
|
|
|
|
if (m_transportStatus == RECORDING) {
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::record - stop recording and keep playing\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::record - stop recording and keep playing\n";
|
|
|
|
|
|
|
|
|
|
|
|
TQByteArray data;
|
|
|
|
TQByteArray data;
|
|
|
|
TQCString replyType;
|
|
|
|
TQCString replyType;
|
|
|
@ -654,7 +654,7 @@ SequenceManager::record(bool toggled)
|
|
|
|
|
|
|
|
|
|
|
|
// Send Record to the Sequencer to signal it to drop out of record mode
|
|
|
|
// Send Record to the Sequencer to signal it to drop out of record mode
|
|
|
|
if (!rgapp->sequencerCall("punchOut()", replyType, replyData, data)) {
|
|
|
|
if (!rgapp->sequencerCall("punchOut()", replyType, replyData, data)) {
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::record - the \"not very plausible\" code executed\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::record - the \"not very plausible\" code executed\n";
|
|
|
|
// #1797873 - set new transport status first, so that
|
|
|
|
// #1797873 - set new transport status first, so that
|
|
|
|
// if we're stopping recording we don't risk the
|
|
|
|
// if we're stopping recording we don't risk the
|
|
|
|
// record segment being restored by a timer while the
|
|
|
|
// record segment being restored by a timer while the
|
|
|
@ -676,7 +676,7 @@ SequenceManager::record(bool toggled)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (m_transportStatus == PLAYING) {
|
|
|
|
if (m_transportStatus == PLAYING) {
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::record - punch in recording\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::record - punch in recording\n";
|
|
|
|
punchIn = true;
|
|
|
|
punchIn = true;
|
|
|
|
goto punchin;
|
|
|
|
goto punchin;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -767,7 +767,7 @@ punchin:
|
|
|
|
InstrumentId iid = comp.getTrackById(*i)->getInstrument();
|
|
|
|
InstrumentId iid = comp.getTrackById(*i)->getInstrument();
|
|
|
|
Instrument *inst = studio.getInstrumentById(iid);
|
|
|
|
Instrument *inst = studio.getInstrumentById(iid);
|
|
|
|
if (inst && (inst->getType() != Instrument::Audio)) {
|
|
|
|
if (inst && (inst->getType() != Instrument::Audio)) {
|
|
|
|
SETQMAN_DEBUG << "SequenceManager: mdoc->addRecordMIDISegment(" << *i << ")" << endl;
|
|
|
|
SEQMAN_DEBUG << "SequenceManager: mdoc->addRecordMIDISegment(" << *i << ")" << endl;
|
|
|
|
m_doc->addRecordMIDISegment(*i);
|
|
|
|
m_doc->addRecordMIDISegment(*i);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -778,10 +778,10 @@ punchin:
|
|
|
|
m_transport->PlayButton()->setOn(true);
|
|
|
|
m_transport->PlayButton()->setOn(true);
|
|
|
|
|
|
|
|
|
|
|
|
if (comp.getCurrentTempo() == 0) {
|
|
|
|
if (comp.getCurrentTempo() == 0) {
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::play() - setting Tempo to Default value of 120.000\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::play() - setting Tempo to Default value of 120.000\n";
|
|
|
|
comp.setCompositionDefaultTempo(comp.getTempoForQpm(120.0));
|
|
|
|
comp.setCompositionDefaultTempo(comp.getTempoForQpm(120.0));
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::record() - starting to record\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::record() - starting to record\n";
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// set the tempo in the transport
|
|
|
|
// set the tempo in the transport
|
|
|
@ -950,7 +950,7 @@ SequenceManager::processAsynchronousMidi(const MappedComposition &mC,
|
|
|
|
if ((*i)->getType() >= MappedEvent::Audio) {
|
|
|
|
if ((*i)->getType() >= MappedEvent::Audio) {
|
|
|
|
if ((*i)->getType() == MappedEvent::AudioStopped) {
|
|
|
|
if ((*i)->getType() == MappedEvent::AudioStopped) {
|
|
|
|
/*
|
|
|
|
/*
|
|
|
|
SETQMAN_DEBUG << "AUDIO FILE ID = "
|
|
|
|
SEQMAN_DEBUG << "AUDIO FILE ID = "
|
|
|
|
<< int((*i)->getData1())
|
|
|
|
<< int((*i)->getData1())
|
|
|
|
<< " - FILE STOPPED - "
|
|
|
|
<< " - FILE STOPPED - "
|
|
|
|
<< "INSTRUMENT = "
|
|
|
|
<< "INSTRUMENT = "
|
|
|
@ -971,7 +971,7 @@ SequenceManager::processAsynchronousMidi(const MappedComposition &mC,
|
|
|
|
|
|
|
|
|
|
|
|
if ((*i)->getType() ==
|
|
|
|
if ((*i)->getType() ==
|
|
|
|
MappedEvent::AudioGeneratePreview) {
|
|
|
|
MappedEvent::AudioGeneratePreview) {
|
|
|
|
SETQMAN_DEBUG << "Received AudioGeneratePreview: data1 is " << int((*i)->getData1()) << ", data2 " << int((*i)->getData2()) << ", instrument is " << (*i)->getInstrument() << endl;
|
|
|
|
SEQMAN_DEBUG << "Received AudioGeneratePreview: data1 is " << int((*i)->getData1()) << ", data2 " << int((*i)->getData2()) << ", instrument is " << (*i)->getInstrument() << endl;
|
|
|
|
|
|
|
|
|
|
|
|
m_doc->finalizeAudioFile((int)(*i)->getData1() +
|
|
|
|
m_doc->finalizeAudioFile((int)(*i)->getData1() +
|
|
|
|
(int)(*i)->getData2() * 256);
|
|
|
|
(int)(*i)->getData2() * 256);
|
|
|
@ -994,7 +994,7 @@ SequenceManager::processAsynchronousMidi(const MappedComposition &mC,
|
|
|
|
m_transportStatus == RECORDING) {
|
|
|
|
m_transportStatus == RECORDING) {
|
|
|
|
if ((*i)->getType() == MappedEvent::SystemFailure) {
|
|
|
|
if ((*i)->getType() == MappedEvent::SystemFailure) {
|
|
|
|
|
|
|
|
|
|
|
|
SETQMAN_DEBUG << "Failure of some sort..." << endl;
|
|
|
|
SEQMAN_DEBUG << "Failure of some sort..." << endl;
|
|
|
|
|
|
|
|
|
|
|
|
bool handling = true;
|
|
|
|
bool handling = true;
|
|
|
|
|
|
|
|
|
|
|
@ -1041,7 +1041,7 @@ SequenceManager::processAsynchronousMidi(const MappedComposition &mC,
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
|
|
|
|
|
|
|
|
if (!m_canReport) {
|
|
|
|
if (!m_canReport) {
|
|
|
|
SETQMAN_DEBUG << "Not reporting it to user just yet"
|
|
|
|
SEQMAN_DEBUG << "Not reporting it to user just yet"
|
|
|
|
<< endl;
|
|
|
|
<< endl;
|
|
|
|
continue;
|
|
|
|
continue;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1212,7 +1212,7 @@ SequenceManager::processAsynchronousMidi(const MappedComposition &mC,
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
if ((*i)->getRecordedDevice() == Device::CONTROL_DEVICE) {
|
|
|
|
if ((*i)->getRecordedDevice() == Device::CONTROL_DEVICE) {
|
|
|
|
SETQMAN_DEBUG << "controllerDeviceEventReceived" << endl;
|
|
|
|
SEQMAN_DEBUG << "controllerDeviceEventReceived" << endl;
|
|
|
|
emit controllerDeviceEventReceived(*i);
|
|
|
|
emit controllerDeviceEventReceived(*i);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1221,14 +1221,14 @@ SequenceManager::processAsynchronousMidi(const MappedComposition &mC,
|
|
|
|
void
|
|
|
|
void
|
|
|
|
SequenceManager::rewindToBeginning()
|
|
|
|
SequenceManager::rewindToBeginning()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::rewindToBeginning()\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::rewindToBeginning()\n";
|
|
|
|
m_doc->slotSetPointerPosition(m_doc->getComposition().getStartMarker());
|
|
|
|
m_doc->slotSetPointerPosition(m_doc->getComposition().getStartMarker());
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void
|
|
|
|
void
|
|
|
|
SequenceManager::fastForwardToEnd()
|
|
|
|
SequenceManager::fastForwardToEnd()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::fastForwardToEnd()\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::fastForwardToEnd()\n";
|
|
|
|
|
|
|
|
|
|
|
|
Composition &comp = m_doc->getComposition();
|
|
|
|
Composition &comp = m_doc->getComposition();
|
|
|
|
m_doc->slotSetPointerPosition(comp.getDuration());
|
|
|
|
m_doc->slotSetPointerPosition(comp.getDuration());
|
|
|
@ -1291,7 +1291,7 @@ SequenceManager::checkSoundDriverStatus(bool warnUser)
|
|
|
|
m_soundDriverStatus = result;
|
|
|
|
m_soundDriverStatus = result;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
SETQMAN_DEBUG << "Sound driver status is: " << m_soundDriverStatus << endl;
|
|
|
|
SEQMAN_DEBUG << "Sound driver status is: " << m_soundDriverStatus << endl;
|
|
|
|
|
|
|
|
|
|
|
|
if (!warnUser) return;
|
|
|
|
if (!warnUser) return;
|
|
|
|
|
|
|
|
|
|
|
@ -1432,7 +1432,7 @@ SequenceManager::sendAudioLevel(MappedEvent *mE)
|
|
|
|
void
|
|
|
|
void
|
|
|
|
SequenceManager::resetControllers()
|
|
|
|
SequenceManager::resetControllers()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::resetControllers - resetting\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::resetControllers - resetting\n";
|
|
|
|
|
|
|
|
|
|
|
|
// Should do all Midi Instrument - not just guess like this is doing
|
|
|
|
// Should do all Midi Instrument - not just guess like this is doing
|
|
|
|
// currently.
|
|
|
|
// currently.
|
|
|
@ -1459,7 +1459,7 @@ SequenceManager::resetControllers()
|
|
|
|
void
|
|
|
|
void
|
|
|
|
SequenceManager::resetMidiNetwork()
|
|
|
|
SequenceManager::resetMidiNetwork()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::resetMidiNetwork - resetting\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::resetMidiNetwork - resetting\n";
|
|
|
|
MappedComposition mC;
|
|
|
|
MappedComposition mC;
|
|
|
|
|
|
|
|
|
|
|
|
// Should do all Midi Instrument - not just guess like this is doing
|
|
|
|
// Should do all Midi Instrument - not just guess like this is doing
|
|
|
@ -1492,7 +1492,7 @@ SequenceManager::sendMIDIRecordingDevice(const TQString recordDeviceStr)
|
|
|
|
MidiByte(true));
|
|
|
|
MidiByte(true));
|
|
|
|
|
|
|
|
|
|
|
|
StudioControl::sendMappedEvent(mE);
|
|
|
|
StudioControl::sendMappedEvent(mE);
|
|
|
|
SETQMAN_DEBUG << "set MIDI record device to "
|
|
|
|
SEQMAN_DEBUG << "set MIDI record device to "
|
|
|
|
<< recordDevice << endl;
|
|
|
|
<< recordDevice << endl;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1558,7 +1558,7 @@ SequenceManager::reinitialiseSequencerStudio()
|
|
|
|
void
|
|
|
|
void
|
|
|
|
SequenceManager::panic()
|
|
|
|
SequenceManager::panic()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SETQMAN_DEBUG << "panic button\n";
|
|
|
|
SEQMAN_DEBUG << "panic button\n";
|
|
|
|
|
|
|
|
|
|
|
|
stopping();
|
|
|
|
stopping();
|
|
|
|
|
|
|
|
|
|
|
@ -1628,7 +1628,7 @@ SequenceManager::applyFiltering(const MappedComposition &mC,
|
|
|
|
|
|
|
|
|
|
|
|
void SequenceManager::resetCompositionMmapper()
|
|
|
|
void SequenceManager::resetCompositionMmapper()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::resetCompositionMmapper()\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::resetCompositionMmapper()\n";
|
|
|
|
delete m_compositionMmapper;
|
|
|
|
delete m_compositionMmapper;
|
|
|
|
m_compositionMmapper = new CompositionMmapper(m_doc);
|
|
|
|
m_compositionMmapper = new CompositionMmapper(m_doc);
|
|
|
|
|
|
|
|
|
|
|
@ -1640,7 +1640,7 @@ void SequenceManager::resetCompositionMmapper()
|
|
|
|
|
|
|
|
|
|
|
|
void SequenceManager::resetMetronomeMmapper()
|
|
|
|
void SequenceManager::resetMetronomeMmapper()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::resetMetronomeMmapper()\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::resetMetronomeMmapper()\n";
|
|
|
|
|
|
|
|
|
|
|
|
delete m_metronomeMmapper;
|
|
|
|
delete m_metronomeMmapper;
|
|
|
|
m_metronomeMmapper = SegmentMmapperFactory::makeMetronome(m_doc);
|
|
|
|
m_metronomeMmapper = SegmentMmapperFactory::makeMetronome(m_doc);
|
|
|
@ -1648,7 +1648,7 @@ void SequenceManager::resetMetronomeMmapper()
|
|
|
|
|
|
|
|
|
|
|
|
void SequenceManager::resetTempoSegmentMmapper()
|
|
|
|
void SequenceManager::resetTempoSegmentMmapper()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::resetTempoSegmentMmapper()\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::resetTempoSegmentMmapper()\n";
|
|
|
|
|
|
|
|
|
|
|
|
delete m_tempoSegmentMmapper;
|
|
|
|
delete m_tempoSegmentMmapper;
|
|
|
|
m_tempoSegmentMmapper = SegmentMmapperFactory::makeTempo(m_doc);
|
|
|
|
m_tempoSegmentMmapper = SegmentMmapperFactory::makeTempo(m_doc);
|
|
|
@ -1656,7 +1656,7 @@ void SequenceManager::resetTempoSegmentMmapper()
|
|
|
|
|
|
|
|
|
|
|
|
void SequenceManager::resetTimeSigSegmentMmapper()
|
|
|
|
void SequenceManager::resetTimeSigSegmentMmapper()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::resetTimeSigSegmentMmapper()\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::resetTimeSigSegmentMmapper()\n";
|
|
|
|
|
|
|
|
|
|
|
|
delete m_timeSigSegmentMmapper;
|
|
|
|
delete m_timeSigSegmentMmapper;
|
|
|
|
m_timeSigSegmentMmapper = SegmentMmapperFactory::makeTimeSig(m_doc);
|
|
|
|
m_timeSigSegmentMmapper = SegmentMmapperFactory::makeTimeSig(m_doc);
|
|
|
@ -1664,7 +1664,7 @@ void SequenceManager::resetTimeSigSegmentMmapper()
|
|
|
|
|
|
|
|
|
|
|
|
void SequenceManager::resetControlBlockMmapper()
|
|
|
|
void SequenceManager::resetControlBlockMmapper()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::resetControlBlockMmapper()\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::resetControlBlockMmapper()\n";
|
|
|
|
|
|
|
|
|
|
|
|
m_controlBlockMmapper->setDocument(m_doc);
|
|
|
|
m_controlBlockMmapper->setDocument(m_doc);
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1672,9 +1672,9 @@ void SequenceManager::resetControlBlockMmapper()
|
|
|
|
bool SequenceManager::event(TQEvent *e)
|
|
|
|
bool SequenceManager::event(TQEvent *e)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
if (e->type() == TQEvent::User) {
|
|
|
|
if (e->type() == TQEvent::User) {
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::event() with user event\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::event() with user event\n";
|
|
|
|
if (m_updateRequested) {
|
|
|
|
if (m_updateRequested) {
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::event(): update requested\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::event(): update requested\n";
|
|
|
|
checkRefreshStatus();
|
|
|
|
checkRefreshStatus();
|
|
|
|
m_updateRequested = false;
|
|
|
|
m_updateRequested = false;
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -1686,7 +1686,7 @@ bool SequenceManager::event(TQEvent *e)
|
|
|
|
|
|
|
|
|
|
|
|
void SequenceManager::update()
|
|
|
|
void SequenceManager::update()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::update()\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::update()\n";
|
|
|
|
// schedule a refresh-status check for the next event loop
|
|
|
|
// schedule a refresh-status check for the next event loop
|
|
|
|
TQEvent *e = new TQEvent(TQEvent::User);
|
|
|
|
TQEvent *e = new TQEvent(TQEvent::User);
|
|
|
|
m_updateRequested = true;
|
|
|
|
m_updateRequested = true;
|
|
|
@ -1695,7 +1695,7 @@ void SequenceManager::update()
|
|
|
|
|
|
|
|
|
|
|
|
void SequenceManager::checkRefreshStatus()
|
|
|
|
void SequenceManager::checkRefreshStatus()
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::checkRefreshStatus()\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::checkRefreshStatus()\n";
|
|
|
|
|
|
|
|
|
|
|
|
// Look at trigger segments first: if one of those has changed, we'll
|
|
|
|
// Look at trigger segments first: if one of those has changed, we'll
|
|
|
|
// need to be aware of it when scanning segments subsequently
|
|
|
|
// need to be aware of it when scanning segments subsequently
|
|
|
@ -1725,11 +1725,11 @@ void SequenceManager::checkRefreshStatus()
|
|
|
|
|
|
|
|
|
|
|
|
m_triggerSegments = newTriggerMap;
|
|
|
|
m_triggerSegments = newTriggerMap;
|
|
|
|
|
|
|
|
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::checkRefreshStatus: segments modified by changes to trigger segments are:" << endl;
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::checkRefreshStatus: segments modified by changes to trigger segments are:" << endl;
|
|
|
|
int x = 0;
|
|
|
|
int x = 0;
|
|
|
|
for (TriggerSegmentRec::SegmentRuntimeIdSet::iterator i = ridset.begin();
|
|
|
|
for (TriggerSegmentRec::SegmentRuntimeIdSet::iterator i = ridset.begin();
|
|
|
|
i != ridset.end(); ++i) {
|
|
|
|
i != ridset.end(); ++i) {
|
|
|
|
SETQMAN_DEBUG << x << ": " << *i << endl;
|
|
|
|
SEQMAN_DEBUG << x << ": " << *i << endl;
|
|
|
|
++x;
|
|
|
|
++x;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -1741,7 +1741,7 @@ void SequenceManager::checkRefreshStatus()
|
|
|
|
}
|
|
|
|
}
|
|
|
|
m_removedSegments.clear();
|
|
|
|
m_removedSegments.clear();
|
|
|
|
|
|
|
|
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::checkRefreshStatus: we have "
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::checkRefreshStatus: we have "
|
|
|
|
<< m_segments.size() << " segments" << endl;
|
|
|
|
<< m_segments.size() << " segments" << endl;
|
|
|
|
|
|
|
|
|
|
|
|
// then the ones which are still there
|
|
|
|
// then the ones which are still there
|
|
|
@ -1763,11 +1763,11 @@ void SequenceManager::checkRefreshStatus()
|
|
|
|
|
|
|
|
|
|
|
|
void SequenceManager::segmentModified(Segment* s)
|
|
|
|
void SequenceManager::segmentModified(Segment* s)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::segmentModified(" << s << ")\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::segmentModified(" << s << ")\n";
|
|
|
|
|
|
|
|
|
|
|
|
bool sizeChanged = m_compositionMmapper->segmentModified(s);
|
|
|
|
bool sizeChanged = m_compositionMmapper->segmentModified(s);
|
|
|
|
|
|
|
|
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::segmentModified() : size changed = "
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::segmentModified() : size changed = "
|
|
|
|
<< sizeChanged << endl;
|
|
|
|
<< sizeChanged << endl;
|
|
|
|
|
|
|
|
|
|
|
|
if ((m_transportStatus == PLAYING) && sizeChanged) {
|
|
|
|
if ((m_transportStatus == PLAYING) && sizeChanged) {
|
|
|
@ -1777,7 +1777,7 @@ void SequenceManager::segmentModified(Segment* s)
|
|
|
|
streamOut << (TQString)m_compositionMmapper->getSegmentFileName(s);
|
|
|
|
streamOut << (TQString)m_compositionMmapper->getSegmentFileName(s);
|
|
|
|
streamOut << (size_t)m_compositionMmapper->getSegmentFileSize(s);
|
|
|
|
streamOut << (size_t)m_compositionMmapper->getSegmentFileSize(s);
|
|
|
|
|
|
|
|
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::segmentModified() : DCOP-call sequencer remapSegment"
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::segmentModified() : DCOP-call sequencer remapSegment"
|
|
|
|
<< m_compositionMmapper->getSegmentFileName(s) << endl;
|
|
|
|
<< m_compositionMmapper->getSegmentFileName(s) << endl;
|
|
|
|
|
|
|
|
|
|
|
|
rgapp->sequencerSend("remapSegment(TQString, size_t)", data);
|
|
|
|
rgapp->sequencerSend("remapSegment(TQString, size_t)", data);
|
|
|
@ -1786,13 +1786,13 @@ void SequenceManager::segmentModified(Segment* s)
|
|
|
|
|
|
|
|
|
|
|
|
void SequenceManager::segmentAdded(const Composition*, Segment* s)
|
|
|
|
void SequenceManager::segmentAdded(const Composition*, Segment* s)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::segmentAdded(" << s << ")\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::segmentAdded(" << s << ")\n";
|
|
|
|
m_addedSegments.push_back(s);
|
|
|
|
m_addedSegments.push_back(s);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void SequenceManager::segmentRemoved(const Composition*, Segment* s)
|
|
|
|
void SequenceManager::segmentRemoved(const Composition*, Segment* s)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::segmentRemoved(" << s << ")\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::segmentRemoved(" << s << ")\n";
|
|
|
|
m_removedSegments.push_back(s);
|
|
|
|
m_removedSegments.push_back(s);
|
|
|
|
std::vector<Segment*>::iterator i = find(m_addedSegments.begin(), m_addedSegments.end(), s);
|
|
|
|
std::vector<Segment*>::iterator i = find(m_addedSegments.begin(), m_addedSegments.end(), s);
|
|
|
|
if (i != m_addedSegments.end())
|
|
|
|
if (i != m_addedSegments.end())
|
|
|
@ -1801,19 +1801,19 @@ void SequenceManager::segmentRemoved(const Composition*, Segment* s)
|
|
|
|
|
|
|
|
|
|
|
|
void SequenceManager::segmentRepeatChanged(const Composition*, Segment* s, bool repeat)
|
|
|
|
void SequenceManager::segmentRepeatChanged(const Composition*, Segment* s, bool repeat)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::segmentRepeatChanged(" << s << ", " << repeat << ")\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::segmentRepeatChanged(" << s << ", " << repeat << ")\n";
|
|
|
|
segmentModified(s);
|
|
|
|
segmentModified(s);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void SequenceManager::segmentRepeatEndChanged(const Composition*, Segment* s, timeT newEndTime)
|
|
|
|
void SequenceManager::segmentRepeatEndChanged(const Composition*, Segment* s, timeT newEndTime)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::segmentRepeatEndChanged(" << s << ", " << newEndTime << ")\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::segmentRepeatEndChanged(" << s << ", " << newEndTime << ")\n";
|
|
|
|
segmentModified(s);
|
|
|
|
segmentModified(s);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void SequenceManager::segmentEventsTimingChanged(const Composition*, Segment * s, timeT t, RealTime)
|
|
|
|
void SequenceManager::segmentEventsTimingChanged(const Composition*, Segment * s, timeT t, RealTime)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::segmentEventsTimingChanged(" << s << ", " << t << ")\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::segmentEventsTimingChanged(" << s << ", " << t << ")\n";
|
|
|
|
segmentModified(s);
|
|
|
|
segmentModified(s);
|
|
|
|
if (s && s->getType() == Segment::Audio && m_transportStatus == PLAYING) {
|
|
|
|
if (s && s->getType() == Segment::Audio && m_transportStatus == PLAYING) {
|
|
|
|
TQByteArray data;
|
|
|
|
TQByteArray data;
|
|
|
@ -1823,13 +1823,13 @@ void SequenceManager::segmentEventsTimingChanged(const Composition*, Segment * s
|
|
|
|
|
|
|
|
|
|
|
|
void SequenceManager::segmentTransposeChanged(const Composition*, Segment *s, int transpose)
|
|
|
|
void SequenceManager::segmentTransposeChanged(const Composition*, Segment *s, int transpose)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::segmentTransposeChanged(" << s << ", " << transpose << ")\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::segmentTransposeChanged(" << s << ", " << transpose << ")\n";
|
|
|
|
segmentModified(s);
|
|
|
|
segmentModified(s);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void SequenceManager::segmentTrackChanged(const Composition*, Segment *s, TrackId id)
|
|
|
|
void SequenceManager::segmentTrackChanged(const Composition*, Segment *s, TrackId id)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::segmentTrackChanged(" << s << ", " << id << ")\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::segmentTrackChanged(" << s << ", " << id << ")\n";
|
|
|
|
segmentModified(s);
|
|
|
|
segmentModified(s);
|
|
|
|
if (s && s->getType() == Segment::Audio && m_transportStatus == PLAYING) {
|
|
|
|
if (s && s->getType() == Segment::Audio && m_transportStatus == PLAYING) {
|
|
|
|
TQByteArray data;
|
|
|
|
TQByteArray data;
|
|
|
@ -1839,13 +1839,13 @@ void SequenceManager::segmentTrackChanged(const Composition*, Segment *s, TrackI
|
|
|
|
|
|
|
|
|
|
|
|
void SequenceManager::segmentEndMarkerChanged(const Composition*, Segment *s, bool)
|
|
|
|
void SequenceManager::segmentEndMarkerChanged(const Composition*, Segment *s, bool)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::segmentEndMarkerChanged(" << s << ")\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::segmentEndMarkerChanged(" << s << ")\n";
|
|
|
|
segmentModified(s);
|
|
|
|
segmentModified(s);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void SequenceManager::processAddedSegment(Segment* s)
|
|
|
|
void SequenceManager::processAddedSegment(Segment* s)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::processAddedSegment(" << s << ")\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::processAddedSegment(" << s << ")\n";
|
|
|
|
|
|
|
|
|
|
|
|
m_compositionMmapper->segmentAdded(s);
|
|
|
|
m_compositionMmapper->segmentAdded(s);
|
|
|
|
|
|
|
|
|
|
|
@ -1869,7 +1869,7 @@ void SequenceManager::processAddedSegment(Segment* s)
|
|
|
|
|
|
|
|
|
|
|
|
void SequenceManager::processRemovedSegment(Segment* s)
|
|
|
|
void SequenceManager::processRemovedSegment(Segment* s)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::processRemovedSegment(" << s << ")\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::processRemovedSegment(" << s << ")\n";
|
|
|
|
|
|
|
|
|
|
|
|
TQString filename = m_compositionMmapper->getSegmentFileName(s);
|
|
|
|
TQString filename = m_compositionMmapper->getSegmentFileName(s);
|
|
|
|
m_compositionMmapper->segmentDeleted(s);
|
|
|
|
m_compositionMmapper->segmentDeleted(s);
|
|
|
@ -1893,7 +1893,7 @@ void SequenceManager::processRemovedSegment(Segment* s)
|
|
|
|
|
|
|
|
|
|
|
|
void SequenceManager::endMarkerTimeChanged(const Composition *, bool /*shorten*/)
|
|
|
|
void SequenceManager::endMarkerTimeChanged(const Composition *, bool /*shorten*/)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::endMarkerTimeChanged()\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::endMarkerTimeChanged()\n";
|
|
|
|
m_compositionMmapperResetTimer->start(500, true); // schedule a composition mmapper reset in 0.5s
|
|
|
|
m_compositionMmapperResetTimer->start(500, true); // schedule a composition mmapper reset in 0.5s
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -1904,7 +1904,7 @@ void SequenceManager::timeSignatureChanged(const Composition *)
|
|
|
|
|
|
|
|
|
|
|
|
void SequenceManager::trackChanged(const Composition *, Track* t)
|
|
|
|
void SequenceManager::trackChanged(const Composition *, Track* t)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::trackChanged(" << t << ", " << (t ? t->getPosition() : -1) << ")\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::trackChanged(" << t << ", " << (t ? t->getPosition() : -1) << ")\n";
|
|
|
|
m_controlBlockMmapper->updateTrackData(t);
|
|
|
|
m_controlBlockMmapper->updateTrackData(t);
|
|
|
|
|
|
|
|
|
|
|
|
if (m_transportStatus == PLAYING) {
|
|
|
|
if (m_transportStatus == PLAYING) {
|
|
|
@ -1924,7 +1924,7 @@ void SequenceManager::metronomeChanged(InstrumentId id,
|
|
|
|
// This method is called when the user has changed the
|
|
|
|
// This method is called when the user has changed the
|
|
|
|
// metronome instrument, pitch etc
|
|
|
|
// metronome instrument, pitch etc
|
|
|
|
|
|
|
|
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::metronomeChanged (simple)"
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::metronomeChanged (simple)"
|
|
|
|
<< ", instrument = "
|
|
|
|
<< ", instrument = "
|
|
|
|
<< id
|
|
|
|
<< id
|
|
|
|
<< endl;
|
|
|
|
<< endl;
|
|
|
@ -1949,7 +1949,7 @@ void SequenceManager::metronomeChanged(const Composition *)
|
|
|
|
// This method is called when the muting status in the composition
|
|
|
|
// This method is called when the muting status in the composition
|
|
|
|
// has changed -- the metronome itself has not actually changed
|
|
|
|
// has changed -- the metronome itself has not actually changed
|
|
|
|
|
|
|
|
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::metronomeChanged "
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::metronomeChanged "
|
|
|
|
<< ", instrument = "
|
|
|
|
<< ", instrument = "
|
|
|
|
<< m_metronomeMmapper->getMetronomeInstrument()
|
|
|
|
<< m_metronomeMmapper->getMetronomeInstrument()
|
|
|
|
<< endl;
|
|
|
|
<< endl;
|
|
|
@ -1982,7 +1982,7 @@ void SequenceManager::soloChanged(const Composition *, bool solo, TrackId select
|
|
|
|
|
|
|
|
|
|
|
|
void SequenceManager::tempoChanged(const Composition *c)
|
|
|
|
void SequenceManager::tempoChanged(const Composition *c)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
SETQMAN_DEBUG << "SequenceManager::tempoChanged()\n";
|
|
|
|
SEQMAN_DEBUG << "SequenceManager::tempoChanged()\n";
|
|
|
|
|
|
|
|
|
|
|
|
// Refresh all segments
|
|
|
|
// Refresh all segments
|
|
|
|
//
|
|
|
|
//
|
|
|
|