summaryrefslogtreecommitdiff
path: root/muse2/muse/song.cpp
diff options
context:
space:
mode:
authorFlorian Jung <flo@windfisch.org>2012-03-15 18:21:23 +0000
committerFlorian Jung <flo@windfisch.org>2012-03-15 18:21:23 +0000
commit27b7bf6815cda7abb67026c37b3e44daee1803cb (patch)
tree0b9d1c0bc84ac7ff8032e707f2b5fb4e0aaabb5c /muse2/muse/song.cpp
parent2d6f113a10eb485694e20a78500f650776d701e3 (diff)
merged with trunk
Diffstat (limited to 'muse2/muse/song.cpp')
-rw-r--r--muse2/muse/song.cpp443
1 files changed, 99 insertions, 344 deletions
diff --git a/muse2/muse/song.cpp b/muse2/muse/song.cpp
index 6d7e419e..1b7354f2 100644
--- a/muse2/muse/song.cpp
+++ b/muse2/muse/song.cpp
@@ -59,11 +59,9 @@
#include "menutitleitem.h"
#include "tracks_duplicate.h"
#include "midi.h"
-///#include "sig.h"
#include "al/sig.h"
#include "keyevent.h"
#include <sys/wait.h>
-//#include "utils.h"
namespace MusEGlobal {
MusECore::Song* song = 0;
@@ -158,7 +156,6 @@ void Song::setSig(const AL::TimeSignature& sig)
Track* Song::addNewTrack(QAction* action, Track* insertAt)
{
-printf("Song::addNewTrack\n");
int n = action->data().toInt();
// Ignore negative numbers since this slot could be called by a menu or list etc. passing -1.
if(n < 0)
@@ -176,7 +173,9 @@ printf("Song::addNewTrack\n");
if(n >= (int)MusEGlobal::synthis.size())
return 0;
- //printf("Song::addNewTrack synth: type:%d idx:%d class:%s label:%s\n", ntype, n, MusEGlobal::synthis[n]->baseName().toLatin1().constData(), MusEGlobal::synthis[n]->name().toLatin1().constData());
+ if (MusEGlobal::debugMsg)
+ printf("Song::addNewTrack synth: type:%d idx:%d class:%s label:%s\n", ntype, n, MusEGlobal::synthis[n]->baseName().toLatin1().constData(), MusEGlobal::synthis[n]->name().toLatin1().constData());
+
SynthI* si = createSynthI(MusEGlobal::synthis[n]->baseName(), MusEGlobal::synthis[n]->name(), (Synth::Type)ntype, insertAt);
if(!si)
return 0;
@@ -234,9 +233,8 @@ printf("Song::addNewTrack\n");
// If insertAt is valid, inserts before insertAt. Else at the end after all tracks.
//---------------------------------------------------------
-Track* Song::addTrack(Undo& operations, Track::TrackType type, Track* insertAt)
+Track* Song::addTrack(Undo& /*operations*/, Track::TrackType type, Track* insertAt)
{
- printf("Song::addTrack\n");
Track* track = 0;
int lastAuxIdx = _auxs.size();
switch(type) {
@@ -292,10 +290,12 @@ Track* Song::addTrack(Undo& operations, Track::TrackType type, Track* insertAt)
int idx = insertAt ? _tracks.index(insertAt) : -1;
- // insertTrack1(track, idx); // this and the below are replaced
- // msgInsertTrack(track, idx, true); // by the UndoOp-operation
- // insertTrack3(track, idx); // does nothing
- operations.push_back(UndoOp(UndoOp::AddTrack, idx, track));
+ insertTrack1(track, idx); // this and the below are replaced
+ msgInsertTrack(track, idx, true); // by the UndoOp-operation
+ insertTrack3(track, idx); // does nothing
+ // No, can't do this. insertTrack2 needs to be called now, not later, otherwise it sees
+ // that the track may have routes, and reciprocates them, causing duplicate routes.
+ ///operations.push_back(UndoOp(UndoOp::AddTrack, idx, track));
// Add default track <-> midiport routes.
if(track->isMidiTrack())
@@ -354,18 +354,8 @@ Track* Song::addTrack(Undo& operations, Track::TrackType type, Track* insertAt)
if (!ol->empty()) {
AudioOutput* ao = ol->front();
switch(type) {
- //case Track::MIDI:
- //case Track::DRUM:
- //case Track::NEW_DRUM:
- //case Track::AUDIO_OUTPUT:
- // break;
-
case Track::WAVE:
- //case Track::AUDIO_GROUP: // Removed by Tim.
case Track::AUDIO_AUX:
- //case Track::AUDIO_INPUT: // Removed by Tim.
- // p3.3.38
- //case Track::AUDIO_SOFTSYNTH:
MusEGlobal::audio->msgAddRoute(Route((AudioTrack*)track, -1), Route(ao, -1));
updateFlags |= SC_ROUTE;
break;
@@ -465,7 +455,9 @@ void Song::duplicateTracks()
// required for fine-grained control over initializing various track types.
//
- // Set to 0 to use the copy constructor. Set to 1 to use new + assign().
+ // Set to 0 to use the copy constructor. Set to 1 to use new + assign().
+ // DELETETHIS is this still necessary to keep around?
+ // also consider removing and adding a hint to a revision number instead
#if 0
Track* new_track = 0;
@@ -473,7 +465,7 @@ void Song::duplicateTracks()
switch(track->type())
{
case Track::AUDIO_SOFTSYNTH: // TODO: Handle synths. p4.0.47
- // ((AudioTrack*)new_track)->addAuxSend(lastAuxIdx);
+ // ((AudioTrack*)new_track)->addAuxSend(lastAuxIdx); DELETETHIS?
break;
case Track::MIDI:
@@ -483,25 +475,25 @@ void Song::duplicateTracks()
case Track::DRUM:
new_track = new MidiTrack();
new_track->setType(Track::DRUM);
- //((MidiTrack*)new_track)->setOutChannel(9);
+ //((MidiTrack*)new_track)->setOutChannel(9); DELETETHIS?
break;
case Track::WAVE:
new_track = new MusECore::WaveTrack();
- //((AudioTrack*)new_track)->addAuxSend(lastAuxIdx);
+ //((AudioTrack*)new_track)->addAuxSend(lastAuxIdx); DELETETHIS?
break;
case Track::AUDIO_OUTPUT:
new_track = new AudioOutput();
break;
case Track::AUDIO_GROUP:
new_track = new AudioGroup();
- //((AudioTrack*)new_track)->addAuxSend(lastAuxIdx);
+ //((AudioTrack*)new_track)->addAuxSend(lastAuxIdx); DELETETHIS?
break;
case Track::AUDIO_AUX:
new_track = new AudioAux();
break;
case Track::AUDIO_INPUT:
new_track = new AudioInput();
- //((AudioTrack*)new_track)->addAuxSend(lastAuxIdx);
+ //((AudioTrack*)new_track)->addAuxSend(lastAuxIdx); DELETETHIS?
break;
default:
printf("Song::duplicateTracks: Illegal type %d\n", track->type());
@@ -535,13 +527,6 @@ void Song::duplicateTracks()
update_flags |= SC_ROUTE;
MusEGlobal::song->endUndo(update_flags);
MusEGlobal::audio->msgUpdateSoloStates();
-
- //if (t->isVisible())
- //{
- ////deselectTracks();
- //t->setSelected(true);
- ////update(SC_SELECTION);
- //}
}
//---------------------------------------------------------
@@ -585,7 +570,7 @@ void Song::deselectTracks()
(*t)->setSelected(false);
}
-/*
+/* DELETETHIS 17
//---------------------------------------------------------
// changeTrack
// oldTrack - copy of the original track befor modification
@@ -636,9 +621,7 @@ void Song::changeEvent(Event& oldEvent, Event& newEvent, Part* part)
// This can be normal for some (redundant) operations.
if(MusEGlobal::debugMsg)
printf("Song::changeEvent event not found in part:%s size:%zd\n", part->name().toLatin1().constData(), part->events()->size());
- // Removed by T356. Allow it to add the new event.
- // (And remove the old one from the midi port controller!)
- //return;
+ // no "return;" because: Allow it to add the new event. (And remove the old one from the midi port controller!) (tim)
}
else
part->events()->erase(i);
@@ -684,16 +667,9 @@ void Song::remapPortDrumCtrlEvents(int mapidx, int newnote, int newchan, int new
{
MidiPart* part = (MidiPart*)(ip->second);
const EventList* el = part->cevents();
- // unsigned len = part->lenTick(); // Commented out by flo, see below
for(ciEvent ie = el->begin(); ie != el->end(); ++ie)
{
const Event& ev = ie->second;
- // Added by T356. Do not handle events which are past the end of the part.
- // Commented out by flo: yes, DO handle them! these are "hidden events"
- // which may be revealed later again!
- // if(ev.tick() >= len)
- // break;
-
if(ev.type() != Controller)
continue;
@@ -834,9 +810,6 @@ void Song::cmdAddRecordedEvents(MidiTrack* mt, EventList* events, unsigned start
iEvent e;
unsigned endTick;
- // Changed by Tim. p3.3.8
-
- //if (punchin())
if((MusEGlobal::audio->loopCount() > 0 && startTick > lPos().tick()) || (punchin() && startTick < lPos().tick()))
{
startTick = lpos();
@@ -845,28 +818,17 @@ void Song::cmdAddRecordedEvents(MidiTrack* mt, EventList* events, unsigned start
else
{
s = events->begin();
-// startTick = s->first;
}
- // Changed by Tim. p3.3.8
-
- //if (punchout())
- //{
- // endTick = rpos();
- // e = events->lower_bound(endTick);
- //}
- //else
- //{
- // search for last noteOff:
- endTick = 0;
- for (iEvent i = events->begin(); i != events->end(); ++i) {
- Event ev = i->second;
- unsigned l = ev.endTick();
- if (l > endTick)
- endTick = l;
- }
- // e = events->end();
- //}
+ // search for last noteOff:
+ endTick = 0;
+ for (iEvent i = events->begin(); i != events->end(); ++i) {
+ Event ev = i->second;
+ unsigned l = ev.endTick();
+ if (l > endTick)
+ endTick = l;
+ }
+
if((MusEGlobal::audio->loopCount() > 0) || (punchout() && endTick > rPos().tick()) )
{
endTick = rpos();
@@ -904,11 +866,6 @@ void Song::cmdAddRecordedEvents(MidiTrack* mt, EventList* events, unsigned start
// create new part
part = new MidiPart(mt);
- // Changed by Tim. p3.3.8
-
- // Honour the Arranger snap settings. (Set to bar by default).
- //startTick = roundDownBar(startTick);
- //endTick = roundUpBar(endTick);
// Round the start down using the Arranger part snap raster value.
startTick = AL::sigmap.raster1(startTick, arrangerRaster());
// Round the end up using the Arranger part snap raster value.
@@ -949,23 +906,25 @@ void Song::cmdAddRecordedEvents(MidiTrack* mt, EventList* events, unsigned start
// Round the end up (again) using the Arranger part snap raster value.
endTick = AL::sigmap.raster2(endTick, arrangerRaster());
- // Remove all of the part's port controller values. Indicate do not do clone parts.
- removePortCtrlEvents(part, false);
+
+ removePortCtrlEvents(part, false); // Remove all of the part's port controller values. Don't do clone parts.
+
// Clone the part. This doesn't increment aref count, and doesn't chain clones.
// It also gives the new part a new serial number, but it is
// overwritten with the old one by Song::changePart(), below.
Part* newPart = part->clone();
- // Set the new part's length.
- newPart->setLenTick(endTick);
- // Change the part.
- changePart(part, newPart);
- // Manually adjust reference counts.
- part->events()->incARef(-1);
+
+ newPart->setLenTick(endTick); // Set the new part's length.
+ changePart(part, newPart); // Change the part.
+
+ part->events()->incARef(-1); // Manually adjust reference counts. HACK!
newPart->events()->incARef(1);
- // Replace the part in the clone chain with the new part.
- replaceClone(part, newPart);
+
+ replaceClone(part, newPart); // Replace the part in the clone chain with the new part.
+
// Now add all of the new part's port controller values. Indicate do not do clone parts.
addPortCtrlEvents(newPart, false);
+
// Create an undo op. Indicate do port controller values but not clone parts.
addUndo(UndoOp(UndoOp::ModifyPart, part, newPart, true, false));
updateFlags |= SC_PART_MODIFIED;
@@ -977,7 +936,7 @@ void Song::cmdAddRecordedEvents(MidiTrack* mt, EventList* events, unsigned start
for (iEvent i = si; i != ei; ++i)
{
Event event = i->second;
- // Create an undo op. Indicate do port controller values and clone parts.
+ // Indicate do port controller values and clone parts.
addUndo(UndoOp(UndoOp::DeleteEvent, event, newPart, true, true));
// Remove the event from the new part's port controller values, and do all clone parts.
removePortCtrlEvents(event, newPart, true);
@@ -1006,8 +965,7 @@ void Song::cmdAddRecordedEvents(MidiTrack* mt, EventList* events, unsigned start
for (iEvent i = si; i != ei; ++i) {
Event event = i->second;
- // Create an undo op. Indicate that controller values and clone parts were handled.
- //addUndo(UndoOp(UndoOp::DeleteEvent, event, part));
+ // Indicate that controller values and clone parts were handled.
addUndo(UndoOp(UndoOp::DeleteEvent, event, part, true, true));
// Remove the event from the part's port controller values, and do all clone parts.
removePortCtrlEvents(event, part, true);
@@ -1019,11 +977,9 @@ void Song::cmdAddRecordedEvents(MidiTrack* mt, EventList* events, unsigned start
int tick = event.tick() - partTick;
event.setTick(tick);
- // Create an undo op. Indicate that controller values and clone parts were handled.
- //addUndo(UndoOp(UndoOp::AddEvent, event, part));
+ // Indicate that controller values and clone parts were handled.
addUndo(UndoOp(UndoOp::AddEvent, event, part, true, true));
- //addEvent(event, part);
if(part->events()->find(event) == part->events()->end())
part->events()->add(event);
@@ -1108,7 +1064,7 @@ void Song::setRecord(bool f, bool autoRecEnable)
Track *selectedTrack = 0;
// loop through list and check if any track is rec enabled
// if not then rec enable the selected track
- MusECore::WaveTrackList* wtl = waves();
+ MusECore::WaveTrackList* wtl = waves();
for (MusECore::iWaveTrack i = wtl->begin(); i != wtl->end(); ++i) {
if((*i)->recordFlag())
{
@@ -1152,6 +1108,7 @@ void Song::setRecord(bool f, bool autoRecEnable)
}
}
+// DELETETHIS? 14
#if 0
// check for midi devices suitable for recording
bool portFound = false;
@@ -1239,11 +1196,8 @@ void Song::setMasterFlag(bool val)
_masterFlag = val;
if (MusEGlobal::tempomap.setMasterFlag(cpos(), val))
{
- //MusEGlobal::audioDevice->setMaster(val);
emit songChanged(SC_MASTER);
}
- // Removed. p3.3.26
- //MusEGlobal::audioDevice->setMaster(val);
}
//---------------------------------------------------------
@@ -1324,31 +1278,31 @@ void Song::seekTo(int tick)
void Song::setPos(int idx, const Pos& val, bool sig,
bool isSeek, bool adjustScrollbar)
{
-// printf("setPos %d sig=%d,seek=%d,scroll=%d ",
-// idx, sig, isSeek, adjustScrollbar);
-// val.dump(0);
-// printf("\n");
- //printf("Song::setPos before MusEGlobal::audio->msgSeek idx:%d isSeek:%d frame:%d\n", idx, isSeek, val.frame());
+ if (MusEGlobal::heavyDebugMsg)
+ {
+ printf("setPos %d sig=%d,seek=%d,scroll=%d ",
+ idx, sig, isSeek, adjustScrollbar);
+ val.dump(0);
+ printf("\n");
+ printf("Song::setPos before MusEGlobal::audio->msgSeek idx:%d isSeek:%d frame:%d\n", idx, isSeek, val.frame());
+ }
- // If seeking audio, ensure frame resolution CAN be kept throughout. This compares apples and oranges. Moved below. p4.0.33
- //if (pos[idx] == val)
- // return;
if (idx == CPOS) {
_vcpos = val;
if (isSeek && !MusEGlobal::extSyncFlag.value()) {
if (val == MusEGlobal::audio->pos())
{
- //printf("Song::setPos seek MusEGlobal::audio->pos already == val tick:%d frame:%d\n", val.tick(), val.frame());
+ if (MusEGlobal::heavyDebugMsg) printf("Song::setPos seek MusEGlobal::audio->pos already == val tick:%d frame:%d\n", val.tick(), val.frame());
return;
}
MusEGlobal::audio->msgSeek(val);
- //printf("Song::setPos after MusEGlobal::audio->msgSeek idx:%d isSeek:%d frame:%d\n", idx, isSeek, val.frame());
+ if (MusEGlobal::heavyDebugMsg) printf("Song::setPos after MusEGlobal::audio->msgSeek idx:%d isSeek:%d frame:%d\n", idx, isSeek, val.frame());
return;
}
}
if (val == pos[idx])
{
- //printf("Song::setPos MusEGlobal::song->pos already == val tick:%d frame:%d\n", val.tick(), val.frame());
+ if (MusEGlobal::heavyDebugMsg) printf("Song::setPos MusEGlobal::song->pos already == val tick:%d frame:%d\n", val.tick(), val.frame());
return;
}
pos[idx] = val;
@@ -1433,13 +1387,7 @@ void Song::rewind()
void Song::rewindStart()
{
- // Added by T356
- //MusEGlobal::audio->msgIdle(true);
-
MusEGlobal::audio->msgSeek(Pos(0, true));
-
- // Added by T356
- //MusEGlobal::audio->msgIdle(false);
}
//---------------------------------------------------------
@@ -1576,15 +1524,6 @@ PartList* Song::getSelectedMidiParts() const
{
PartList* parts = new PartList();
- //------------------------------------------------------
- // wenn ein Part selektiert ist, diesen editieren
- // wenn ein Track selektiert ist, den Ersten
- // Part des Tracks editieren, die restlichen sind
- // 'ghostparts'
- // wenn mehrere Parts selektiert sind, dann Ersten
- // editieren, die restlichen sind 'ghostparts'
- //
- // Rough translation:
/*
If a part is selected, edit that.
If a track is selected, edit the first
@@ -1628,16 +1567,16 @@ PartList* Song::getSelectedWaveParts() const
{
PartList* parts = new PartList();
- //------------------------------------------------------
- // wenn ein Part selektiert ist, diesen editieren
- // wenn ein Track selektiert ist, den Ersten
- // Part des Tracks editieren, die restlichen sind
- // 'ghostparts'
- // wenn mehrere Parts selektiert sind, dann Ersten
- // editieren, die restlichen sind 'ghostparts'
- //
+ /*
+ If a part is selected, edit that.
+ If a track is selected, edit the first
+ part of the track, the rest are
+ 'ghost parts'
+ When multiple parts are selected, then edit the first,
+ the rest are 'ghost parts'
+ */
- // markierte Parts sammeln
+ // collect selected parts
for (ciTrack t = _tracks.begin(); t != _tracks.end(); ++t) {
MusECore::WaveTrack* track = dynamic_cast<MusECore::WaveTrack*>(*t);
if (track == 0)
@@ -1649,8 +1588,8 @@ PartList* Song::getSelectedWaveParts() const
}
}
}
- // wenn keine Parts selektiert, dann markierten Track suchen
- // und alle Parts dieses Tracks zusammensuchen
+ // if no parts are selected, then search the selected track
+ // and collect all parts in this track
if (parts->empty()) {
for (ciTrack t = _tracks.begin(); t != _tracks.end(); ++t) {
@@ -1670,9 +1609,8 @@ PartList* Song::getSelectedWaveParts() const
void Song::setMType(MType t)
{
-// printf("set MType %d\n", t);
_mtype = t;
- MusEGlobal::song->update(SC_SONG_TYPE); // p4.0.7 Tim.
+ MusEGlobal::song->update(SC_SONG_TYPE);
}
//---------------------------------------------------------
@@ -1681,6 +1619,7 @@ void Song::setMType(MType t)
void Song::beat()
{
+ // DELETETHIS 15
#if 0
// Just a rate test...
static double _heartbeatRateTimer = 0.0;
@@ -1699,21 +1638,13 @@ void Song::beat()
// Keep the sync detectors running...
for(int port = 0; port < MIDI_PORTS; ++port)
- {
- // Must keep them running even if there's no device...
- //if(MusEGlobal::midiPorts[port].device())
MusEGlobal::midiPorts[port].syncInfo().setTime();
- }
- //int tick = MusEGlobal::audio->tickPos();
if (MusEGlobal::audio->isPlaying())
- {
- //Pos tick(MusEGlobal::audio->tickPos());
- //setPos(0, tick, true, false, true);
setPos(0, MusEGlobal::audio->tickPos(), true, false, true);
- }
- // p3.3.40 Update synth native guis at the heartbeat rate.
+
+ // Update synth native guis at the heartbeat rate.
for(ciSynthI is = _synthIs.begin(); is != _synthIs.end(); ++is)
(*is)->guiHeartBeat();
@@ -1771,11 +1702,9 @@ Marker* Song::getMarkerAt(int t)
{
iMarker markerI;
for (markerI=_markerList->begin(); markerI != _markerList->end(); ++markerI) {
-// if (i1->second.current())
- if (unsigned(t) == markerI->second.tick())//prevent of copmiler warning: comparison signed/unsigned
+ if (unsigned(t) == markerI->second.tick()) //prevent of compiler warning: comparison signed/unsigned
return &markerI->second;
}
- //Marker* marker = _markerList->add(s, t, lck);
return NULL;
}
@@ -1813,23 +1742,6 @@ Marker* Song::setMarkerLock(Marker* m, bool f)
return m;
}
-// kommer inte att gå göra undo på, kanske skulle fixa det.
-
-//void Song::moveMarkers(int startOffset, int ticks)
-//{
-// iMarker markerI;
-// for (markerI=_markerList->rbegin(); markerI != _markerList->rend(); ++markerI) {
-// if (markerI->second.tick() > startOffset) {
-// if (markerI-> )
-// }
-//
-//
-//
-// if (unsigned(t) == markerI->second.tick())//prevent of copmiler warning: comparison signed/unsigned
-// return &markerI->second;
-// }
-//
-//}
//---------------------------------------------------------
// setRecordFlag
@@ -1847,7 +1759,6 @@ void Song::setRecordFlag(Track* track, bool val)
track->setRecordFlag1(val);
track->setRecordFlag2(val);
}
-// updateFlags |= SC_RECFLAG;
update(SC_RECFLAG);
}
@@ -1868,8 +1779,7 @@ void Song::rescanAlsaPorts()
void Song::endMsgCmd()
{
if (updateFlags) {
- //redoList->clear(); // TODO: delete elements in list
- redoList->clearDelete(); // p4.0.46 Tim. NOTE Hm, shouldn't this be above?
+ redoList->clearDelete();
MusEGlobal::undoAction->setEnabled(true);
MusEGlobal::redoAction->setEnabled(false);
emit songChanged(updateFlags);
@@ -1950,7 +1860,6 @@ void Song::processMsg(AudioMsg* msg)
updateFlags = SC_EVENT_INSERTED;
if (addEvent(msg->ev1, (MidiPart*)msg->p2)) {
Event ev;
- //addUndo(UndoOp(UndoOp::AddEvent, ev, msg->ev1, (Part*)msg->p2));
addUndo(UndoOp(UndoOp::AddEvent, ev, msg->ev1, (Part*)msg->p2, msg->a, msg->b));
}
else
@@ -1965,7 +1874,6 @@ void Song::processMsg(AudioMsg* msg)
if(msg->a)
removePortCtrlEvents(event, part, msg->b);
Event e;
- //addUndo(UndoOp(UndoOp::DeleteEvent, e, event, (Part*)part));
addUndo(UndoOp(UndoOp::DeleteEvent, e, event, (Part*)part, msg->a, msg->b));
deleteEvent(event, part);
updateFlags = SC_EVENT_REMOVED;
@@ -1977,7 +1885,6 @@ void Song::processMsg(AudioMsg* msg)
changeEvent(msg->ev1, msg->ev2, (MidiPart*)msg->p3);
if(msg->a)
addPortCtrlEvents(msg->ev2, (Part*)msg->p3, msg->b);
- //addUndo(UndoOp(UndoOp::ModifyEvent, msg->ev2, msg->ev1, (Part*)msg->p3));
addUndo(UndoOp(UndoOp::ModifyEvent, msg->ev2, msg->ev1, (Part*)msg->p3, msg->a, msg->b));
updateFlags = SC_EVENT_MODIFIED;
break;
@@ -1987,10 +1894,9 @@ void Song::processMsg(AudioMsg* msg)
insertTrack2(msg->track, msg->ival);
break;
case SEQM_REMOVE_TRACK:
- //removeTrack2(msg->track);
cmdRemoveTrack(msg->track);
break;
- //case SEQM_CHANGE_TRACK:
+ //case SEQM_CHANGE_TRACK: DELETETHIS 3
// changeTrack((Track*)(msg->p1), (Track*)(msg->p2));
// break;
case SEQM_ADD_PART:
@@ -2000,7 +1906,6 @@ void Song::processMsg(AudioMsg* msg)
cmdRemovePart((Part*)msg->p1);
break;
case SEQM_CHANGE_PART:
- //cmdChangePart((Part*)msg->p1, (Part*)msg->p2);
cmdChangePart((Part*)msg->p1, (Part*)msg->p2, msg->a, msg->b);
break;
@@ -2076,7 +1981,6 @@ void Song::cmdRemovePart(Part* part)
removePart(part);
addUndo(UndoOp(UndoOp::DeletePart, part));
part->events()->incARef(-1);
- //part->unchainClone();
unchainClone(part);
updateFlags = SC_PART_REMOVED;
}
@@ -2087,14 +1991,11 @@ void Song::cmdRemovePart(Part* part)
void Song::cmdChangePart(Part* oldPart, Part* newPart, bool doCtrls, bool doClones)
{
- //printf("Song::cmdChangePart before changePart oldPart:%p events:%p refs:%d Arefs:%d sn:%d newPart:%p events:%p refs:%d Arefs:%d sn:%d\n", oldPart, oldPart->events(), oldPart->events()->refCount(), oldPart->events()->arefCount(), oldPart->sn(), newPart, newPart->events(), newPart->events()->refCount(), newPart->events()->arefCount(), newPart->sn());
-
if(doCtrls)
removePortCtrlEvents(oldPart, doClones);
changePart(oldPart, newPart);
- //addUndo(UndoOp(UndoOp::ModifyPart, oldPart, newPart));
addUndo(UndoOp(UndoOp::ModifyPart, oldPart, newPart, doCtrls, doClones));
// Changed by T356. Do not decrement ref count if the new part is a clone of the old part, since the event list
@@ -2102,17 +2003,11 @@ void Song::cmdChangePart(Part* oldPart, Part* newPart, bool doCtrls, bool doClon
if(oldPart->cevents() != newPart->cevents())
oldPart->events()->incARef(-1);
- //oldPart->replaceClone(newPart);
-
- //printf("Song::cmdChangePart before repl/unchClone oldPart:%p events:%p refs:%d Arefs:%d sn:%d newPart:%p events:%p refs:%d Arefs:%d sn:%d\n", oldPart, oldPart->events(), oldPart->events()->refCount(), oldPart->events()->arefCount(), oldPart->sn(), newPart, newPart->events(), newPart->events()->refCount(), newPart->events()->arefCount(), newPart->sn());
-
replaceClone(oldPart, newPart);
if(doCtrls)
addPortCtrlEvents(newPart, doClones);
- //printf("Song::cmdChangePart after repl/unchClone oldPart:%p events:%p refs:%d Arefs:%d sn:%d newPart:%p events:%p refs:%d Arefs:%d sn:%d\n", oldPart, oldPart->events(), oldPart->events()->refCount(), oldPart->events()->arefCount(), oldPart->sn(), newPart, newPart->events(), newPart->events()->refCount(), newPart->events()->arefCount(), newPart->sn());
-
updateFlags = SC_PART_MODIFIED;
}
@@ -2174,7 +2069,6 @@ void Song::clear(bool signal, bool clear_all)
loop = false;
for(iMidiDevice imd = MusEGlobal::midiDevices.begin(); imd != MusEGlobal::midiDevices.end(); ++imd)
{
- //if((*imd)->deviceType() == MidiDevice::JACK_MIDI)
if(dynamic_cast< MidiJackDevice* >(*imd))
{
if(clear_all) // Allow not touching devices. p4.0.17 TESTING: Maybe some problems...
@@ -2190,9 +2084,7 @@ void Song::clear(bool signal, bool clear_all)
break;
}
}
- else
- //if((*imd)->deviceType() == MidiDevice::ALSA_MIDI)
- if(dynamic_cast< MidiAlsaDevice* >(*imd))
+ else if(dynamic_cast< MidiAlsaDevice* >(*imd))
{
// With alsa devices, we must not delete them (they're always in the list). But we must
// clear all routes. They point to non-existant midi tracks, which were all deleted above.
@@ -2208,6 +2100,7 @@ void Song::clear(bool signal, bool clear_all)
MusEGlobal::keymap.clear();
undoList->clearDelete();
+ // DELETETHIS
//redoList->clear(); // Check this - Should we do a clearDelete? IIRC it was OK this way - no clearDelete in case of same items in both lists.
redoList->clearDelete(); // p4.0.46 Tim
if(MusEGlobal::undoAction)
@@ -2245,7 +2138,6 @@ void Song::clear(bool signal, bool clear_all)
_quantize = false;
_len = 0; // song len in ticks
_follow = JUMP;
- // _tempo = 500000; // default tempo 120
dirty = false;
initDrumMap();
initNewDrumMap();
@@ -2305,6 +2197,7 @@ void Song::cleanupForQuit()
if(MusEGlobal::debugMsg)
printf("deleting undoList, clearing redoList\n");
undoList->clearDelete();
+ //DELETETHIS
//redoList->clear(); // Check this - Should we do a clearDelete? IIRC it was OK this way - no clearDelete in case of same items in both lists.
redoList->clearDelete(); // p4.0.46 Tim
@@ -2317,12 +2210,12 @@ void Song::cleanupForQuit()
if(MusEGlobal::debugMsg)
printf("deleting midiport controllers\n");
+
// Clear all midi port controllers and values.
for(int i = 0; i < MIDI_PORTS; ++i)
- // Remove the controllers and the values.
- MusEGlobal::midiPorts[i].controller()->clearDelete(true);
+ MusEGlobal::midiPorts[i].controller()->clearDelete(true); // Remove the controllers and the values.
- // Can't do this here. Jack isn't running. Fixed. Test OK so far.
+ // Can't do this here. Jack isn't running. Fixed. Test OK so far. DELETETHIS (the comment and #if/#endif)
#if 1
if(MusEGlobal::debugMsg)
printf("deleting midi devices except synths\n");
@@ -2340,6 +2233,7 @@ void Song::cleanupForQuit()
if(MusEGlobal::debugMsg)
printf("deleting global available synths\n");
+
// Delete all synths.
std::vector<Synth*>::iterator is;
for(is = MusEGlobal::synthis.begin(); is != MusEGlobal::synthis.end(); ++is)
@@ -2392,7 +2286,6 @@ void Song::seqSignal(int fd)
return;
}
for (int i = 0; i < n; ++i) {
-// printf("seqSignal to gui:<%c>\n", buffer[i]);
switch(buffer[i]) {
case '0': // STOP
stopRolling();
@@ -2436,7 +2329,7 @@ void Song::seqSignal(int fd)
"click on the Restart button."), "restart", "cancel");
if (btn == 0) {
printf("restarting!\n");
- MusEGlobal::muse->seqRestart();
+ MusEGlobal::muse->seqRestart();
}
}
@@ -2458,7 +2351,7 @@ void Song::seqSignal(int fd)
MusEGlobal::audioDevice->setFreewheel(false);
MusEGlobal::audio->msgPlay(false);
-#if 0
+#if 0 // DELETETHIS
if (record())
MusEGlobal::audio->recordStop();
setStopPlay(false);
@@ -2511,7 +2404,6 @@ void Song::recordEvent(MidiTrack* mt, Event& event)
// create new part
part = new MidiPart(mt);
int startTick = roundDownBar(tick);
- //int endTick = roundUpBar(tick);
int endTick = roundUpBar(tick + 1);
part->setTick(startTick);
part->setLenTick(endTick - startTick);
@@ -2532,15 +2424,9 @@ void Song::recordEvent(MidiTrack* mt, Event& event)
for(iEvent i = range.first; i != range.second; ++i)
{
ev = i->second;
- // At the moment, Song::recordEvent() is only called by the 'Rec' buttons in the
- // midi track info panel. So only controller types are fed to it. If other event types
- // are to be passed, we will have to expand on this to check if equal. Instead, maybe add an isEqual() to Event class.
- //if((ev.type() == Controller && event.type() == Controller || ev.type() == Controller && event.type() == Controller)
- // && ev.dataA() == event.dataA() && ev.dataB() == event.dataB())
if(ev.type() == Controller && ev.dataA() == event.dataA())
{
- // Don't bother if already set.
- if(ev.dataB() == event.dataB())
+ if(ev.dataB() == event.dataB()) // Don't bother if already set.
return;
// Indicate do undo, and do port controller values and clone parts.
MusEGlobal::audio->msgChangeEvent(ev, event, part, true, true, true);
@@ -2550,7 +2436,6 @@ void Song::recordEvent(MidiTrack* mt, Event& event)
}
// Indicate do undo, and do port controller values and clone parts.
- //MusEGlobal::audio->msgAddEvent(event, part);
MusEGlobal::audio->msgAddEvent(event, part, true, true, true);
}
@@ -2575,17 +2460,11 @@ int Song::execAutomationCtlPopup(AudioTrack* track, const QPoint& menupos, int a
CtrlList *cl = icl->second;
canAdd = true;
- //int frame = pos[0].frame();
- int frame = MusEGlobal::audio->pos().frame(); // Try this. p4.0.33
-
- //printf("pos[0]:%d f:%d tickPos:%d f:%d\n", pos[0].tick(), pos[0].frame(), MusEGlobal::audio->tickPos(), Pos(MusEGlobal::audio->tickPos(), true).frame());
+ //int frame = pos[0].frame(); DELETETHIS
+ int frame = MusEGlobal::audio->pos().frame(); // Try this. p4.0.33 DELETETHIS
- //ctlval = cl->curVal();
- //AutomationType at = track->MusEGlobal::automationType();
- //if(!MusEGlobal::automation || track->MusEGlobal::automationType() == AUTO_OFF)
- ctlval = cl->curVal();
- //else
- // ctlval = cl->value(frame);
+ ctlval = cl->curVal();
+
count = cl->size();
if(count)
{
@@ -2639,16 +2518,12 @@ int Song::execAutomationCtlPopup(AudioTrack* track, const QPoint& menupos, int a
clearAction->setEnabled((bool)count);
QAction* act = menu->exec(menupos);
- //delete menu;
if (!act || !track)
{
delete menu;
return -1;
}
- //if(!track)
- // return -1;
-
int sel = act->data().toInt();
delete menu;
@@ -2697,15 +2572,10 @@ int Song::execMidiAutomationCtlPopup(MidiTrack* track, MidiPart* part, const QPo
if(!track && !part)
return -1;
- //enum { PREV_EVENT, NEXT_EVENT, ADD_EVENT, CLEAR_EVENT, CLEAR_RANGE, CLEAR_ALL_EVENTS };
enum { ADD_EVENT, CLEAR_EVENT };
QMenu* menu = new QMenu;
- //int count = 0;
bool isEvent = false;
- //bool canSeekPrev = false, canSeekNext = false, canEraseRange = false;
- //bool canAdd = false;
- //double ctlval = 0.0;
MidiTrack* mt;
if(track)
@@ -2729,8 +2599,6 @@ int Song::execMidiAutomationCtlPopup(MidiTrack* track, MidiPart* part, const QPo
dctl |= MusEGlobal::drumMap[note].anote;
}
- //printf("Song::execMidiAutomationCtlPopup ctlnum:%d dctl:%d anote:%d\n", ctlnum, dctl, MusEGlobal::drumMap[ctlnum & 0x7f].anote);
-
unsigned tick = cpos();
if(!part)
@@ -2771,9 +2639,6 @@ int Song::execMidiAutomationCtlPopup(MidiTrack* track, MidiPart* part, const QPo
ev = i->second;
if(ev.type() == Controller)
{
- //printf("Song::execMidiAutomationCtlPopup ev.dataA:%d\n", ev.dataA());
-
- //if(ev.dataA() == dctl)
if(ev.dataA() == ctlnum)
{
isEvent = true;
@@ -2793,31 +2658,19 @@ int Song::execMidiAutomationCtlPopup(MidiTrack* track, MidiPart* part, const QPo
else
addEvent->setText(tr("add event"));
addEvent->setData(ADD_EVENT);
- //addEvent->setEnabled(canAdd);
addEvent->setEnabled(true);
QAction* eraseEventAction = menu->addAction(tr("erase event"));
eraseEventAction->setData(CLEAR_EVENT);
eraseEventAction->setEnabled(isEvent);
-// menu->insertItem(tr("erase range"), CLEAR_RANGE, CLEAR_RANGE);
-// menu->setItemEnabled(CLEAR_RANGE, canEraseRange);
-
-// menu->insertItem(tr("clear automation"), CLEAR_ALL_EVENTS, CLEAR_ALL_EVENTS);
-// menu->setItemEnabled(CLEAR_ALL_EVENTS, (bool)count);
-
-
QAction* act = menu->exec(menupos);
- //delete menu;
if (!act)
{
delete menu;
return -1;
}
- //if(!part)
- // return -1;
-
int sel = act->data().toInt();
delete menu;
@@ -2825,19 +2678,16 @@ int Song::execMidiAutomationCtlPopup(MidiTrack* track, MidiPart* part, const QPo
{
case ADD_EVENT:
{
- //int val = mp->hwCtrlState(channel, ctlnum);
int val = mp->hwCtrlState(channel, dctl);
if(val == CTRL_VAL_UNKNOWN)
return -1;
Event e(Controller);
- //e.setA(dctl);
e.setA(ctlnum);
e.setB(val);
// Do we replace an old event?
if(isEvent)
{
- // Don't bother if already set.
- if(ev.dataB() == val)
+ if(ev.dataB() == val) // Don't bother if already set.
return -1;
e.setTick(tick - part->tick());
@@ -2875,25 +2725,6 @@ int Song::execMidiAutomationCtlPopup(MidiTrack* track, MidiPart* part, const QPo
MusEGlobal::audio->msgDeleteEvent(ev, part, true, true, true);
break;
- //case CLEAR_RANGE:
- //MusEGlobal::audio->msgEraseRangeACEvents(track, acid, pos[1].frame(), pos[2].frame());
- //break;
-
- //case CLEAR_ALL_EVENTS:
- //if(QMessageBox::question(MusEGlobal::muse, QString("Muse"),
- // tr("Clear all controller events?"), tr("&Ok"), tr("&Cancel"),
- // QString::null, 0, 1 ) == 0)
- //MusEGlobal::audio->msgClearControllerEvents(track, acid);
- //break;
-
- //case PREV_EVENT:
- //MusEGlobal::audio->msgSeekPrevACEvent(track, acid);
- //break;
-
- //case NEXT_EVENT:
- //MusEGlobal::audio->msgSeekNextACEvent(track, acid);
- //break;
-
default:
return -1;
break;
@@ -3053,7 +2884,7 @@ void Song::connectJackRoutes(AudioTrack* track, bool disconnect)
void Song::insertTrack0(Track* track, int idx)
{
insertTrack1(track, idx);
- insertTrack2(track, idx); // MusEGlobal::audio->msgInsertTrack(track, idx, false);
+ insertTrack2(track, idx); // MusEGlobal::audio->msgInsertTrack(track, idx, false); DELETETHIS or is this somehow explanatory?
insertTrack3(track, idx);
}
@@ -3064,8 +2895,6 @@ void Song::insertTrack0(Track* track, int idx)
void Song::insertTrack1(Track* track, int /*idx*/)
{
- //printf("Song::insertTrack1 track:%lx\n", track);
-
switch(track->type()) {
case Track::AUDIO_SOFTSYNTH:
{
@@ -3079,9 +2908,6 @@ void Song::insertTrack1(Track* track, int /*idx*/)
default:
break;
}
-
- //printf("Song::insertTrack1 end of function\n");
-
}
//---------------------------------------------------------
@@ -3091,16 +2917,12 @@ void Song::insertTrack1(Track* track, int /*idx*/)
void Song::insertTrack2(Track* track, int idx)
{
- //printf("Song::insertTrack2 track:%lx\n", track);
-
int n;
switch(track->type()) {
case Track::MIDI:
case Track::DRUM:
case Track::NEW_DRUM:
_midis.push_back((MidiTrack*)track);
- // Added by T356.
- //((MidiTrack*)track)->addPortCtrlEvents();
addPortCtrlEvents(((MidiTrack*)track));
break;
@@ -3137,14 +2959,10 @@ void Song::insertTrack2(Track* track, int idx)
return;
}
- //
// initialize missing aux send
- //
iTrack i = _tracks.index2iterator(idx);
- //printf("Song::insertTrack2 inserting into _tracks...\n");
_tracks.insert(i, track);
- //printf("Song::insertTrack2 inserted\n");
n = _auxs.size();
for (iTrack i = _tracks.begin(); i != _tracks.end(); ++i) {
@@ -3156,18 +2974,13 @@ void Song::insertTrack2(Track* track, int idx)
}
}
- //
// add routes
- //
if (track->type() == Track::AUDIO_OUTPUT)
{
const RouteList* rl = track->inRoutes();
for (ciRoute r = rl->begin(); r != rl->end(); ++r)
{
- //if(r->track == track)
- // r->track->outRoutes()->push_back(*r);
- // p3.3.50
Route src(track, r->channel, r->channels);
src.remoteChannel = r->remoteChannel;
r->track->outRoutes()->push_back(src);
@@ -3175,8 +2988,7 @@ void Song::insertTrack2(Track* track, int idx)
// Update the Audio Output track's aux ref count. p4.0.37
if(r->track->auxRefCount())
track->updateAuxRoute( r->track->auxRefCount(), NULL );
- else
- if(r->track->type() == Track::AUDIO_AUX)
+ else if(r->track->type() == Track::AUDIO_AUX)
track->updateAuxRoute( 1, NULL );
}
}
@@ -3185,9 +2997,6 @@ void Song::insertTrack2(Track* track, int idx)
const RouteList* rl = track->outRoutes();
for (ciRoute r = rl->begin(); r != rl->end(); ++r)
{
- //if(r->track == track)
- // r->track->inRoutes()->push_back(*r);
- // p3.3.50
Route src(track, r->channel, r->channels);
src.remoteChannel = r->remoteChannel;
r->track->inRoutes()->push_back(src);
@@ -3195,8 +3004,7 @@ void Song::insertTrack2(Track* track, int idx)
// Update the other track's aux ref count and all tracks it is connected to. p4.0.37
if(track->auxRefCount())
r->track->updateAuxRoute( track->auxRefCount(), NULL );
- else
- if(track->type() == Track::AUDIO_AUX)
+ else if(track->type() == Track::AUDIO_AUX)
r->track->updateAuxRoute( 1, NULL );
}
}
@@ -3205,14 +3013,12 @@ void Song::insertTrack2(Track* track, int idx)
const RouteList* rl = track->inRoutes();
for (ciRoute r = rl->begin(); r != rl->end(); ++r)
{
- //printf("Song::insertTrack2 %s in route port:%d\n", track->name().toLatin1().constData(), r->midiPort);
Route src(track, r->channel);
MusEGlobal::midiPorts[r->midiPort].outRoutes()->push_back(src);
}
rl = track->outRoutes();
for (ciRoute r = rl->begin(); r != rl->end(); ++r)
{
- //printf("Song::insertTrack2 %s out route port:%d\n", track->name().toLatin1().constData(), r->midiPort);
Route src(track, r->channel);
MusEGlobal::midiPorts[r->midiPort].inRoutes()->push_back(src);
}
@@ -3222,9 +3028,6 @@ void Song::insertTrack2(Track* track, int idx)
const RouteList* rl = track->inRoutes();
for (ciRoute r = rl->begin(); r != rl->end(); ++r)
{
- //if(r->track == track)
- // r->track->outRoutes()->push_back(*r);
- // p3.3.50
Route src(track, r->channel, r->channels);
src.remoteChannel = r->remoteChannel;
r->track->outRoutes()->push_back(src);
@@ -3232,16 +3035,12 @@ void Song::insertTrack2(Track* track, int idx)
// Update this track's aux ref count. p4.0.37
if(r->track->auxRefCount())
track->updateAuxRoute( r->track->auxRefCount(), NULL );
- else
- if(r->track->type() == Track::AUDIO_AUX)
+ else if(r->track->type() == Track::AUDIO_AUX)
track->updateAuxRoute( 1, NULL );
}
rl = track->outRoutes();
for (ciRoute r = rl->begin(); r != rl->end(); ++r)
{
- //if(r->track == track)
- // r->track->inRoutes()->push_back(*r);
- // p3.3.50
Route src(track, r->channel, r->channels);
src.remoteChannel = r->remoteChannel;
r->track->inRoutes()->push_back(src);
@@ -3249,14 +3048,10 @@ void Song::insertTrack2(Track* track, int idx)
// Update the other track's aux ref count and all tracks it is connected to. p4.0.37
if(track->auxRefCount())
r->track->updateAuxRoute( track->auxRefCount(), NULL );
- else
- if(track->type() == Track::AUDIO_AUX)
+ else if(track->type() == Track::AUDIO_AUX)
r->track->updateAuxRoute( 1, NULL );
}
}
-
- //printf("Song::insertTrack2 end of function\n");
-
}
//---------------------------------------------------------
@@ -3278,7 +3073,6 @@ void Song::removeTrack0(Track* track)
removeTrack1(track);
MusEGlobal::audio->msgRemoveTrack(track);
removeTrack3(track);
- //delete track;
update(SC_TRACK_REMOVED);
}
@@ -3330,21 +3124,16 @@ void Song::removeTrack1(Track* track)
void Song::removeTrack2(Track* track)
{
- //printf("Song::removeTrack2 track:%s\n", track->name().toLatin1().constData());
-
switch(track->type()) {
case Track::MIDI:
case Track::DRUM:
case Track::NEW_DRUM:
- // Added by T356.
- //((MidiTrack*)track)->removePortCtrlEvents();
removePortCtrlEvents(((MidiTrack*)track));
unchainTrackParts(track, true);
_midis.erase(track);
break;
case Track::WAVE:
- // Added by T356.
unchainTrackParts(track, true);
_waves.erase(track);
@@ -3371,19 +3160,13 @@ void Song::removeTrack2(Track* track)
}
_tracks.erase(track);
- //
// remove routes
- //
if (track->type() == Track::AUDIO_OUTPUT)
{
const RouteList* rl = track->inRoutes();
for (ciRoute r = rl->begin(); r != rl->end(); ++r)
{
- //if(r->track == track)
- // r->track->outRoutes()->removeRoute(*r);
- //printf("Song::removeTrack2 %s audio out track:%s\n", track->name().toLatin1().constData(), r->track->name().toLatin1().constData());
- // p3.3.50
Route src(track, r->channel, r->channels);
src.remoteChannel = r->remoteChannel;
r->track->outRoutes()->removeRoute(src);
@@ -3391,8 +3174,7 @@ void Song::removeTrack2(Track* track)
// Update the Audio Output track's aux ref count. p4.0.37
if(r->track->auxRefCount())
track->updateAuxRoute( -r->track->auxRefCount(), NULL );
- else
- if(r->track->type() == Track::AUDIO_AUX)
+ else if(r->track->type() == Track::AUDIO_AUX)
track->updateAuxRoute( -1, NULL );
}
}
@@ -3401,10 +3183,6 @@ void Song::removeTrack2(Track* track)
const RouteList* rl = track->outRoutes();
for (ciRoute r = rl->begin(); r != rl->end(); ++r)
{
- //if(r->track == track)
- // r->track->inRoutes()->removeRoute(*r);
- //printf("Song::removeTrack2 %s audio in track:%s\n", track->name().toLatin1().constData(), r->track->name().toLatin1().constData());
- // p3.3.50
Route src(track, r->channel, r->channels);
src.remoteChannel = r->remoteChannel;
r->track->inRoutes()->removeRoute(src);
@@ -3412,8 +3190,7 @@ void Song::removeTrack2(Track* track)
// Update the other track's aux ref count and all tracks it is connected to. p4.0.37
if(track->auxRefCount())
r->track->updateAuxRoute( -track->auxRefCount(), NULL );
- else
- if(track->type() == Track::AUDIO_AUX)
+ else if(track->type() == Track::AUDIO_AUX)
r->track->updateAuxRoute( -1, NULL );
}
}
@@ -3422,14 +3199,12 @@ void Song::removeTrack2(Track* track)
const RouteList* rl = track->inRoutes();
for (ciRoute r = rl->begin(); r != rl->end(); ++r)
{
- //printf("Song::removeTrack2 %s in route port:%d\n", track->name().toLatin1().constData(), r->midiPort);
Route src(track, r->channel);
MusEGlobal::midiPorts[r->midiPort].outRoutes()->removeRoute(src);
}
rl = track->outRoutes();
for (ciRoute r = rl->begin(); r != rl->end(); ++r)
{
- //printf("Song::removeTrack2 %s out route port:%d\n", track->name().toLatin1().constData(), r->midiPort);
Route src(track, r->channel);
MusEGlobal::midiPorts[r->midiPort].inRoutes()->removeRoute(src);
}
@@ -3439,10 +3214,6 @@ void Song::removeTrack2(Track* track)
const RouteList* rl = track->inRoutes();
for (ciRoute r = rl->begin(); r != rl->end(); ++r)
{
- //if(r->track == track)
- // r->track->outRoutes()->removeRoute(*r);
- //printf("Song::removeTrack2 %s in route track:%s\n", track->name().toLatin1().constData(), r->track->name().toLatin1().constData());
- // p3.3.50
Route src(track, r->channel, r->channels);
src.remoteChannel = r->remoteChannel;
r->track->outRoutes()->removeRoute(src);
@@ -3450,17 +3221,12 @@ void Song::removeTrack2(Track* track)
// Update this track's aux ref count. p4.0.37
if(r->track->auxRefCount())
track->updateAuxRoute( -r->track->auxRefCount(), NULL );
- else
- if(r->track->type() == Track::AUDIO_AUX)
+ else if(r->track->type() == Track::AUDIO_AUX)
track->updateAuxRoute( -1, NULL );
}
rl = track->outRoutes();
for (ciRoute r = rl->begin(); r != rl->end(); ++r)
{
- //if(r->track == track)
- // r->track->inRoutes()->removeRoute(*r);
- //printf("Song::removeTrack2 %s out route track:%s\n", track->name().toLatin1().constData(), r->track->name().toLatin1().constData());
- // p3.3.50
Route src(track, r->channel, r->channels);
src.remoteChannel = r->remoteChannel;
r->track->inRoutes()->removeRoute(src);
@@ -3468,8 +3234,7 @@ void Song::removeTrack2(Track* track)
// Update the other track's aux ref count and all tracks it is connected to. p4.0.37
if(track->auxRefCount())
r->track->updateAuxRoute( -track->auxRefCount(), NULL );
- else
- if(track->type() == Track::AUDIO_AUX)
+ else if(track->type() == Track::AUDIO_AUX)
r->track->updateAuxRoute( -1, NULL );
}
}
@@ -3518,7 +3283,6 @@ void Song::executeScript(const char* scriptfile, PartList* parts, int quant, boo
fprintf(fp, "BEATLEN %d\n", AL::sigmap.ticksBeat(0));
fprintf(fp, "QUANTLEN %d\n", quant);
- //for (iCItem i = items.begin(); i != items.end(); ++i) {
for (iEvent e = part->events()->begin(); e != part->events()->end(); e++) {
Event ev = e->second;
@@ -3582,7 +3346,6 @@ void Song::executeScript(const char* scriptfile, PartList* parts, int quant, boo
QStringList sl = line.split(" ");
Event e(Controller);
- //int tick = sl[1].toInt();
int a = sl[2].toInt();
int b = sl[3].toInt();
int c = sl[4].toInt();
@@ -3606,11 +3369,8 @@ void Song::executeScript(const char* scriptfile, PartList* parts, int quant, boo
void Song::populateScriptMenu(QMenu* menuPlugins, QObject* receiver)
{
- //
// List scripts
- //
QString distScripts = MusEGlobal::museGlobalShare + "/scripts";
-
QString userScripts = MusEGlobal::configPath + "/scripts";
QFileInfo distScriptsFi(distScripts);
@@ -3630,13 +3390,9 @@ void Song::populateScriptMenu(QMenu* menuPlugins, QObject* receiver)
QSignalMapper* userSignalMapper = new QSignalMapper(this);
if (deliveredScriptNames.size() > 0 || userScriptNames.size() > 0) {
- //menuPlugins = new QPopupMenu(this);
- //menuBar()->insertItem(tr("&Plugins"), menuPlugins);
int id = 0;
if (deliveredScriptNames.size() > 0) {
for (QStringList::Iterator it = deliveredScriptNames.begin(); it != deliveredScriptNames.end(); it++, id++) {
- //menuPlugins->insertItem(*it, this, SLOT(execDeliveredScript(int)), 0, id);
- //menuPlugins->insertItem(*it, this, slot_deliveredscripts, 0, id);
QAction* act = menuPlugins->addAction(*it);
connect(act, SIGNAL(triggered()), distSignalMapper, SLOT(map()));
distSignalMapper->setMapping(act, id);
@@ -3645,7 +3401,6 @@ void Song::populateScriptMenu(QMenu* menuPlugins, QObject* receiver)
}
if (userScriptNames.size() > 0) {
for (QStringList::Iterator it = userScriptNames.begin(); it != userScriptNames.end(); it++, id++) {
- //menuPlugins->insertItem(*it, this, slot_userscripts, 0, id);
QAction* act = menuPlugins->addAction(*it);
connect(act, SIGNAL(triggered()), userSignalMapper, SLOT(map()));
userSignalMapper->setMapping(act, id);