Update of /cvsroot/lmuse/muse/muse In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv23210/muse Modified Files: app.cpp audio.cpp confmport.cpp midi.cpp song.cpp song.h songfile.cpp synth.cpp synth.h ticksynth.cpp Log Message: misc Index: ticksynth.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/ticksynth.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** ticksynth.cpp 25 Aug 2004 18:36:41 -0000 1.5 --- ticksynth.cpp 30 Aug 2004 18:19:05 -0000 1.6 *************** *** 61,65 **** virtual MidiPlayEvent receiveEvent() { return MidiPlayEvent(); } virtual int eventsPending() const { return 0; } - // bool init(Synth*) { return true; } virtual int channels() const { return 1; } virtual void deactivate2() {} --- 61,64 ---- Index: song.h =================================================================== RCS file: /cvsroot/lmuse/muse/muse/song.h,v retrieving revision 1.37 retrieving revision 1.38 diff -C2 -d -r1.37 -r1.38 *** song.h 28 Jul 2004 10:17:17 -0000 1.37 --- song.h 30 Aug 2004 18:19:05 -0000 1.38 *************** *** 128,131 **** --- 128,139 ---- void readMarker(Xml&); + bool _showMidiTracks; + bool _showOutputTracks; + bool _showWaveTracks; + bool _showGroupTracks; + bool _showInputTracks; + bool _showAuxTracks; + bool _showSyntiTracks; + public: Song(const char* name = 0); *************** *** 241,244 **** --- 249,253 ---- SettingsList* settingsList() { return esettingsList; } + //----------------------------------------- // track manipulations *************** *** 302,307 **** //----------------------------------------- - SynthI* createSynthI(const QString& sclass); void rescanAlsaPorts(); //----------------------------------------- --- 311,330 ---- //----------------------------------------- void rescanAlsaPorts(); + bool showMidiTracks() const { return _showMidiTracks; } + bool showOutputTracks() const { return _showOutputTracks; } + bool showWaveTracks() const { return _showWaveTracks; } + bool showGroupTracks() const { return _showGroupTracks; } + bool showInputTracks() const { return _showInputTracks; } + bool showAuxTracks() const { return _showAuxTracks; } + bool showSyntiTracks() const { return _showSyntiTracks; } + + void setShowMidiTracks(bool val) { _showMidiTracks = val; } + void setShowOutputTracks(bool val) { _showOutputTracks = val; } + void setShowWaveTracks(bool val) { _showWaveTracks = val; } + void setShowGroupTracks(bool val) { _showGroupTracks = val; } + void setShowInputTracks(bool val) { _showInputTracks = val; } + void setShowAuxTracks(bool val) { _showAuxTracks = val; } + void setShowSyntiTracks(bool val) { _showSyntiTracks = val; } //----------------------------------------- Index: synth.h =================================================================== RCS file: /cvsroot/lmuse/muse/muse/synth.h,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -d -r1.30 -r1.31 *** synth.h 29 Aug 2004 16:01:44 -0000 1.30 --- synth.h 30 Aug 2004 18:19:05 -0000 1.31 *************** *** 198,201 **** --- 198,203 ---- extern std::vector<Synth*> synthis; // array of available synthis + extern Synth* findSynth(const QString& sclass); + #endif Index: synth.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/synth.cpp,v retrieving revision 1.49 retrieving revision 1.50 diff -C2 -d -r1.49 -r1.50 *** synth.cpp 25 Aug 2004 18:36:41 -0000 1.49 --- synth.cpp 30 Aug 2004 18:19:05 -0000 1.50 *************** *** 108,112 **** //--------------------------------------------------------- ! static Synth* findSynth(const QString& sclass) { for (std::vector<Synth*>::iterator i = synthis.begin(); --- 108,112 ---- //--------------------------------------------------------- ! Synth* findSynth(const QString& sclass) { for (std::vector<Synth*>::iterator i = synthis.begin(); *************** *** 120,157 **** //--------------------------------------------------------- - // createSynthI - // create a synthesizer instance of class "label" - //--------------------------------------------------------- - - static SynthI* createSynthI(const QString& sclass) - { - Synth* s = findSynth(sclass); - SynthI* si = 0; - if (s) { - si = new SynthI(); - QString n; - n.setNum(s->instances()); - QString instance_name = s->baseName() + "-" + n; - if (si->initInstance(s, instance_name)) { - delete si; - return 0; - } - // - // assign next free midi port - // - for (int port = 0; port < MIDI_PORTS; ++port) { - MidiPort* mp = &midiPorts[port]; - if (mp->device() == 0) { - midiSeq->msgSetMidiDevice(mp, si); - break; - } - } - } - else - printf("synthi class <%s> not found\n", sclass.latin1()); - return si; - } - - //--------------------------------------------------------- // Synth //--------------------------------------------------------- --- 120,123 ---- *************** *** 393,417 **** //--------------------------------------------------------- - // createSynthI - // create a synthesizer instance of class "label" - //--------------------------------------------------------- - - SynthI* Song::createSynthI(const QString& sclass) - { - SynthI* si = ::createSynthI(sclass); - insertTrack1(si, -1); - msgInsertTrack(si, -1, true); // add to instance list - insertTrack3(si, -1); - - OutputList* ol = song->outputs(); - // add default route to master (first audio output) - if (!ol->empty()) { - AudioOutput* ao = ol->front(); - audio->msgAddRoute(Route(si, -1), Route(ao, -1)); - } - return si; - } - - //--------------------------------------------------------- // write //--------------------------------------------------------- --- 359,362 ---- Index: songfile.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/songfile.cpp,v retrieving revision 1.28 retrieving revision 1.29 diff -C2 -d -r1.28 -r1.29 *** songfile.cpp 23 Aug 2004 17:54:24 -0000 1.28 --- songfile.cpp 30 Aug 2004 18:19:05 -0000 1.29 *************** *** 590,593 **** --- 590,607 ---- else if (tag == "follow") _follow = FollowMode(xml.parseInt()); + else if (tag == "showMidiTracks") + _showMidiTracks = xml.parseInt(); + else if (tag == "showWaveTracks") + _showWaveTracks = xml.parseInt(); + else if (tag == "showOutputTracks") + _showOutputTracks = xml.parseInt(); + else if (tag == "showGroupTracks") + _showGroupTracks = xml.parseInt(); + else if (tag == "showInputTracks") + _showInputTracks = xml.parseInt(); + else if (tag == "showAuxTracks") + _showAuxTracks = xml.parseInt(); + else if (tag == "showSyntiTracks") + _showSyntiTracks = xml.parseInt(); else if (tag == "tempolist") { tempomap.read(xml); *************** *** 763,766 **** --- 777,787 ---- xml.intTag(level, "len", _len); xml.intTag(level, "follow", _follow); + xml.intTag(level, "showMidiTracks", _showMidiTracks); + xml.intTag(level, "showOutputTracks", _showOutputTracks); + xml.intTag(level, "showWaveTracks", _showWaveTracks); + xml.intTag(level, "showGroupTracks", _showGroupTracks); + xml.intTag(level, "showInputTracks", _showInputTracks); + xml.intTag(level, "showAuxTracks", _showAuxTracks); + xml.intTag(level, "showSyntiTracks", _showSyntiTracks); if (_globalPitchShift) Index: midi.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/midi.cpp,v retrieving revision 1.50 retrieving revision 1.51 diff -C2 -d -r1.50 -r1.51 *** midi.cpp 25 Aug 2004 12:17:02 -0000 1.50 --- midi.cpp 30 Aug 2004 18:19:05 -0000 1.51 *************** *** 760,764 **** int port = track->outPort(); MidiDevice* md = midiPorts[port].device(); - // if (track->isMute() || md == 0) if (track->isMute()) continue; --- 760,763 ---- Index: confmport.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/confmport.cpp,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** confmport.cpp 25 Apr 2004 17:20:52 -0000 1.9 --- confmport.cpp 30 Aug 2004 18:19:05 -0000 1.10 *************** *** 330,334 **** if (item == 0) return; ! song->createSynthI(item->text(2)); } --- 330,341 ---- if (item == 0) return; ! int idx = 1000; ! for (std::vector<Synth*>::iterator i = synthis.begin(); ! i != synthis.end(); ++i, ++idx) { ! if ((*i)->baseName() == item->text(2)) { ! song->addTrack(idx); ! break; ! } ! } } Index: song.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/song.cpp,v retrieving revision 1.67 retrieving revision 1.68 diff -C2 -d -r1.67 -r1.68 *** song.cpp 24 Aug 2004 16:50:17 -0000 1.67 --- song.cpp 30 Aug 2004 18:19:05 -0000 1.68 *************** *** 39,49 **** :QObject(0, name) { ! noteFifoSize = 0; ! noteFifoWindex = 0; ! noteFifoRindex = 0; ! undoList = new UndoList; ! redoList = new UndoList; ! _markerList = new MarkerList; ! esettingsList = new SettingsList(); _globalPitchShift = 0; clear(false); --- 39,56 ---- :QObject(0, name) { ! _showMidiTracks = true; ! _showOutputTracks = true; ! _showWaveTracks = true; ! _showGroupTracks = true; ! _showInputTracks = true; ! _showAuxTracks = true; ! _showSyntiTracks = true; ! noteFifoSize = 0; ! noteFifoWindex = 0; ! noteFifoRindex = 0; ! undoList = new UndoList; ! redoList = new UndoList; ! _markerList = new MarkerList; ! esettingsList = new SettingsList(); _globalPitchShift = 0; clear(false); *************** *** 104,146 **** Track* Song::addTrack(int t) { ! Track::TrackType type = (Track::TrackType) t; Track* track = 0; ! int lastAuxIdx = _auxs.size(); ! switch(type) { ! case Track::MIDI: ! track = new MidiTrack(); ! track->setType(Track::MIDI); ! break; ! case Track::DRUM: ! track = new MidiTrack(); ! track->setType(Track::DRUM); ! break; ! case Track::WAVE: ! track = new WaveTrack(); ! ((AudioTrack*)track)->addAuxSend(lastAuxIdx); ! break; ! case Track::AUDIO_OUTPUT: ! track = new AudioOutput(); ! break; ! case Track::AUDIO_GROUP: ! track = new AudioGroup(); ! ((AudioTrack*)track)->addAuxSend(lastAuxIdx); ! break; ! case Track::AUDIO_AUX: ! track = new AudioAux(); ! break; ! case Track::AUDIO_INPUT: ! track = new AudioInput(); ! ((AudioTrack*)track)->addAuxSend(lastAuxIdx); ! break; ! case Track::AUDIO_SOFTSYNTH: ! printf("not implemented: Song::addTrack(SOFTSYNTH)\n"); ! // ((AudioTrack*)track)->addAuxSend(lastAuxIdx); ! break; ! default: ! printf("Song::addTrack() illegal type %d\n", type); ! abort(); } ! track->setDefaultName(); insertTrack1(track, -1); msgInsertTrack(track, -1, true); --- 111,186 ---- Track* Song::addTrack(int t) { ! deselectTracks(); Track* track = 0; ! ! if (t >= 1000) { ! QString sclass = synthis[t-1000]->baseName(); ! ! Synth* s = findSynth(sclass); ! if (s == 0) { ! printf("synthi class <%s> not found\n", sclass.latin1()); ! return 0; ! } ! ! SynthI* si = new SynthI(); ! QString n; ! n.setNum(s->instances()); ! QString instance_name = s->baseName() + "-" + n; ! if (si->initInstance(s, instance_name)) { ! delete si; ! return 0; ! } ! // ! // assign next free midi port ! // ! for (int port = 0; port < MIDI_PORTS; ++port) { ! MidiPort* mp = &midiPorts[port]; ! if (mp->device() == 0) { ! midiSeq->msgSetMidiDevice(mp, si); ! break; ! } ! } ! track = si; } ! else { ! Track::TrackType type = (Track::TrackType) t; ! int lastAuxIdx = _auxs.size(); ! switch(type) { ! case Track::MIDI: ! track = new MidiTrack(); ! track->setType(Track::MIDI); ! break; ! case Track::DRUM: ! track = new MidiTrack(); ! track->setType(Track::DRUM); ! break; ! case Track::WAVE: ! track = new WaveTrack(); ! ((AudioTrack*)track)->addAuxSend(lastAuxIdx); ! break; ! case Track::AUDIO_OUTPUT: ! track = new AudioOutput(); ! break; ! case Track::AUDIO_GROUP: ! track = new AudioGroup(); ! ((AudioTrack*)track)->addAuxSend(lastAuxIdx); ! break; ! case Track::AUDIO_AUX: ! track = new AudioAux(); ! break; ! case Track::AUDIO_INPUT: ! track = new AudioInput(); ! ((AudioTrack*)track)->addAuxSend(lastAuxIdx); ! break; ! case Track::AUDIO_SOFTSYNTH: ! default: ! printf("Song::addTrack() illegal type %d\n", type); ! abort(); ! } ! if (track == 0) ! return 0; ! track->setDefaultName(); ! } ! track->setSelected(true); insertTrack1(track, -1); msgInsertTrack(track, -1, true); *************** *** 154,158 **** if (!ol->empty()) { AudioOutput* ao = ol->front(); ! switch(type) { case Track::MIDI: case Track::DRUM: --- 194,200 ---- if (!ol->empty()) { AudioOutput* ao = ol->front(); ! if (t >= 1000) ! t = Track::AUDIO_SOFTSYNTH; ! switch (t) { case Track::MIDI: case Track::DRUM: *************** *** 180,183 **** --- 222,227 ---- } } + deselectTracks(); + track->setSelected(true); return track; } Index: app.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/app.cpp,v retrieving revision 1.121 retrieving revision 1.122 diff -C2 -d -r1.121 -r1.122 *** app.cpp 28 Aug 2004 21:36:21 -0000 1.121 --- app.cpp 30 Aug 2004 18:19:04 -0000 1.122 *************** *** 293,296 **** --- 293,297 ---- void populateAddTrack(QPopupMenu* addTrack) { + addTrack->clear(); addTrack->insertItem(QIconSet(*addtrack_addmiditrackIcon), QT_TR_NOOP("Add Midi Track"), Track::MIDI); *************** *** 307,311 **** --- 308,319 ---- addTrack->insertItem(QIconSet(*addtrack_auxsendIcon), QT_TR_NOOP("Add Aux Send"), Track::AUDIO_AUX); + QPopupMenu* ps = new QPopupMenu(addTrack); + int idx = 1000; + for (std::vector<Synth*>::iterator is = synthis.begin(); is != synthis.end(); ++is, ++idx) { + ps->insertItem((*is)->baseName(), idx); + } + addTrack->insertItem(QPopupMenu::tr("Add Soft Synth"), ps); addTrack->connect(addTrack, SIGNAL(activated(int)), song, SLOT(addTrack(int))); + ps->connect(ps, SIGNAL(activated(int)), song, SLOT(addTrack(int))); } *************** *** 533,536 **** --- 541,545 ---- addTrack = new QPopupMenu(this); populateAddTrack(addTrack); + menuEdit->insertItem(QIconSet(*edit_track_addIcon), tr("Add Track"), addTrack); Index: audio.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/audio.cpp,v retrieving revision 1.68 retrieving revision 1.69 diff -C2 -d -r1.68 -r1.69 *** audio.cpp 30 Aug 2004 08:22:03 -0000 1.68 --- audio.cpp 30 Aug 2004 18:19:05 -0000 1.69 *************** *** 288,294 **** // if ((curTickPos >= song->len()) ! && !(song->record() ! || _bounce ! || song->loop())) { audioDevice->stopTransport(); return; --- 288,292 ---- // if ((curTickPos >= song->len()) ! && !(song->record() || _bounce || song->loop())) { audioDevice->stopTransport(); return; |