From: werner s. <wsc...@us...> - 2005-05-19 13:26:47
|
Update of /cvsroot/lmuse/muse/muse/arranger In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv20888/muse/arranger Modified Files: arranger.cpp configmidictrl.cpp tlwidget.cpp tlwidget.h trackinfo.cpp trackinfo.h Log Message: midi updates Index: tlwidget.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/arranger/tlwidget.cpp,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** tlwidget.cpp 17 May 2005 15:07:57 -0000 1.26 --- tlwidget.cpp 19 May 2005 13:26:37 -0000 1.27 *************** *** 213,223 **** case TR_INSTRUMENT: { ! MidiInstrument* mi = ((MidiOutPort*)_track)->instrument(); ! QComboBox* ic = new QComboBox(this); ! ic->insertItem(mi->iname()); ! ic->setCurrentItem(0); ! l->add(ic, grp); ! ic->show(); ! wlist.push_back(ic); } break; --- 213,232 ---- case TR_INSTRUMENT: { ! instrument = new QComboBox(this); ! MidiOutPort* op = (MidiOutPort*)_track; ! MidiInstrument* mi = op->instrument(); ! int idx = 0; ! int curIdx = 0; ! for (iMidiInstrument i = midiInstruments.begin(); i != midiInstruments.end(); ++i, ++idx) { ! instrument->insertItem((*i)->iname()); ! if ((*i)->iname() == mi->iname()) ! curIdx = idx; ! } ! instrument->setCurrentItem(curIdx); ! connect(instrument, SIGNAL(activated(int)), SLOT(instrumentSelected(int))); ! connect(op, SIGNAL(instrumentChanged()), SLOT(instrumentChanged())); ! l->add(instrument, grp); ! instrument->show(); ! wlist.push_back(instrument); } break; *************** *** 509,510 **** --- 518,553 ---- } + //--------------------------------------------------------- + // instrumentSelected + //--------------------------------------------------------- + + void TLWidget::instrumentSelected(int n) + { + MidiOutPort* op = (MidiOutPort*)_track; + int idx = 0; + for (iMidiInstrument i = midiInstruments.begin(); i != midiInstruments.end(); ++i, ++idx) { + if (idx == n) { + op->setInstrument(*i); + break; + } + } + } + + //--------------------------------------------------------- + // instrumentChanged + //--------------------------------------------------------- + + void TLWidget::instrumentChanged() + { + MidiOutPort* op = (MidiOutPort*)_track; + MidiInstrument* mi = op->instrument(); + int idx = 0; + for (iMidiInstrument i = midiInstruments.begin(); i != midiInstruments.end(); ++i, ++idx) { + if (*i == mi) { + instrument->setCurrentItem(idx); + break; + } + } + } + + Index: trackinfo.h =================================================================== RCS file: /cvsroot/lmuse/muse/muse/arranger/trackinfo.h,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** trackinfo.h 18 May 2005 17:11:47 -0000 1.6 --- trackinfo.h 19 May 2005 13:26:37 -0000 1.7 *************** *** 69,72 **** --- 69,73 ---- void patchClicked(); void instrumentSelected(int); + void instrumentChanged(); void autoChanged(Track*,bool); *************** *** 149,154 **** --- 150,162 ---- Q_OBJECT + QComboBox* instrument; + + private slots: + void instrumentSelected(int); + void instrumentChanged(); + public: MidiOutPortInfo(MidiOutPort* t, QWidget* parent); + virtual void init(Track*); }; Index: tlwidget.h =================================================================== RCS file: /cvsroot/lmuse/muse/muse/arranger/tlwidget.h,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** tlwidget.h 24 Jan 2005 14:32:34 -0000 1.8 --- tlwidget.h 19 May 2005 13:26:37 -0000 1.9 *************** *** 50,53 **** --- 50,54 ---- std::vector<QWidget*> wlist; SelectFilter* filter; + QComboBox* instrument; virtual void mousePressEvent(QMouseEvent*); *************** *** 72,75 **** --- 73,78 ---- void autoReadToggled(bool val); void autoWriteToggled(bool val); + void instrumentSelected(int); + void instrumentChanged(); public slots: Index: trackinfo.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/arranger/trackinfo.cpp,v retrieving revision 1.30 retrieving revision 1.31 diff -C2 -d -r1.30 -r1.31 *** trackinfo.cpp 18 May 2005 17:11:47 -0000 1.30 --- trackinfo.cpp 19 May 2005 13:26:37 -0000 1.31 *************** *** 167,171 **** instrument = new QComboBox(this); instrument->setFixedWidth(INFO_WIDTH); - QToolTip::add(instrument, tr("Midi Device")); grid->addMultiCellWidget(instrument, 12, 12, 0, 1); --- 167,170 ---- *************** *** 198,203 **** --- 197,205 ---- MidiChannel* mc = ((MidiTrack*)track)->channel(); + disconnect(SIGNAL(instrumentChanged()), this, SLOT(instrumentChanged())); + instrument->clear(); if (mc) { MidiOutPort* op = mc->port(); + connect(op, SIGNAL(instrumentChanged()), SLOT(instrumentChanged())); channelName->setText(mc->name()); portName->setText(op->name()); *************** *** 205,209 **** int idx = 0; int curIdx = 0; - instrument->clear(); for (iMidiInstrument i = midiInstruments.begin(); i != midiInstruments.end(); ++i, ++idx) { instrument->insertItem((*i)->iname()); --- 207,210 ---- *************** *** 217,220 **** --- 218,247 ---- channelName->setText("??"); portName->setText("??"); + instrument->insertItem("??"); + instrument->setCurrentItem(0); + } + } + + //--------------------------------------------------------- + // instrumentChanged + //--------------------------------------------------------- + + void MidiTrackInfo::instrumentChanged() + { + MidiChannel* mc = ((MidiTrack*)track)->channel(); + if (mc) { + MidiOutPort* op = mc->port(); + MidiInstrument* mi = op->instrument(); + int idx = 0; + for (iMidiInstrument i = midiInstruments.begin(); i != midiInstruments.end(); ++i, ++idx) { + if (*i == mi) { + instrument->setCurrentItem(idx); + break; + } + } + } + else { + instrument->clear(); + instrument->setCurrentItem(0); } } *************** *** 486,490 **** --- 513,579 ---- : TrackInfo(t, parent) { + instrument = new QComboBox(this); + instrument->setFixedWidth(INFO_WIDTH); + QToolTip::add(instrument, tr("Midi Device")); + grid->addMultiCellWidget(instrument, 2, 2, 0, 1); + grid->setRowStretch(grid->numRows(), 100); + + connect(instrument, SIGNAL(activated(int)), SLOT(instrumentSelected(int))); + connect(t, SIGNAL(instrumentChanged()), SLOT(instrumentChanged())); + } + + //--------------------------------------------------------- + // init + //--------------------------------------------------------- + + void MidiOutPortInfo::init(Track* t) + { + TrackInfo::init(t); + + MidiOutPort* op = (MidiOutPort*)track; + MidiInstrument* mi = op->instrument(); + int idx = 0; + int curIdx = 0; + instrument->clear(); + for (iMidiInstrument i = midiInstruments.begin(); i != midiInstruments.end(); ++i, ++idx) { + instrument->insertItem((*i)->iname()); + if ((*i)->iname() == mi->iname()) + curIdx = idx; + } + instrument->setCurrentItem(curIdx); + } + + //--------------------------------------------------------- + // instrumentChanged + //--------------------------------------------------------- + + void MidiOutPortInfo::instrumentChanged() + { + MidiOutPort* op = (MidiOutPort*)track; + MidiInstrument* mi = op->instrument(); + int idx = 0; + for (iMidiInstrument i = midiInstruments.begin(); i != midiInstruments.end(); ++i, ++idx) { + if (*i == mi) { + instrument->setCurrentItem(idx); + break; + } + } + } + + //--------------------------------------------------------- + // instrumentSelected + //--------------------------------------------------------- + + void MidiOutPortInfo::instrumentSelected(int n) + { + MidiOutPort* op = (MidiOutPort*)track; + int idx = 0; + for (iMidiInstrument i = midiInstruments.begin(); i != midiInstruments.end(); ++i, ++idx) { + if (idx == n) { + op->setInstrument(*i); + break; + } + } } Index: configmidictrl.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/arranger/configmidictrl.cpp,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** configmidictrl.cpp 5 May 2005 13:34:15 -0000 1.5 --- configmidictrl.cpp 19 May 2005 13:26:37 -0000 1.6 *************** *** 20,49 **** : ConfigMidiCtrlBase(parent, name) { - #if 0 //TODO3 track = t; ! int portno = track->outPort(); ! MidiPort* port = &midiPorts[portno]; ! QString portname("Port %1"); ! portName->setText(portname.arg(portno)); ! // ! // populate popup with all controllers available for ! // current instrument ! // ! ControllerNameList* cn = track->controllerNames(); ! MidiControllerList* mcl = port->instrument()->controller(); ! for (iMidiController ci = mcl->begin(); ci != mcl->end(); ++ci) { ! iControllerName i; ! for (i = cn->begin(); i != cn->end(); ++i) { ! if (i->name == (*ci)->name()) ! break; } - if (i == cn->end()) - availableController->insertItem((*ci)->name()); - } ! for (iControllerName i = cn->begin(); i != cn->end(); ++i) ! managedController->insertItem(i->name); ! delete cn; ! #endif buttonAdd->setEnabled(false); buttonRemove->setEnabled(false); --- 20,49 ---- : ConfigMidiCtrlBase(parent, name) { track = t; ! ! if (track->type() == Track::MIDI_CHANNEL) { ! MidiChannel* mc = (MidiChannel*)track; ! MidiOutPort* mp = mc->port(); ! portName->setText(mp->name()); ! // ! // populate popup with all controllers available for ! // current instrument ! // ! ControllerNameList* cn = track->controllerNames(); ! MidiControllerList* mcl = mp->instrument()->controller(); ! for (iMidiController ci = mcl->begin(); ci != mcl->end(); ++ci) { ! iControllerName i; ! for (i = cn->begin(); i != cn->end(); ++i) { ! if (i->name == (*ci)->name()) ! break; ! } ! if (i == cn->end()) ! availableController->insertItem((*ci)->name()); } ! for (iControllerName i = cn->begin(); i != cn->end(); ++i) ! managedController->insertItem(i->name); ! delete cn; ! } buttonAdd->setEnabled(false); buttonRemove->setEnabled(false); *************** *** 112,120 **** void ConfigMidiCtrl::done(int code) { ! #if 0 //TODO3 ! if (code) { ! MidiPort* port = &midiPorts[track->outPort()]; ! ControllerNameList* cn = track->controllerNames(); ! MidiInstrument* instr = port->instrument(); MidiControllerList* mcl = instr->controller(); --- 112,125 ---- void ConfigMidiCtrl::done(int code) { ! if (!code) { ! ConfigMidiCtrlBase::done(code); ! return; ! } ! ! if (track->type() == Track::MIDI_CHANNEL) { ! MidiChannel* mc = (MidiChannel*)track; ! MidiOutPort* port = mc->port(); ! ControllerNameList* cn = track->controllerNames(); ! MidiInstrument* instr = port->instrument(); MidiControllerList* mcl = instr->controller(); *************** *** 157,161 **** delete cn; } - #endif ConfigMidiCtrlBase::done(code); } --- 162,165 ---- Index: arranger.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/arranger/arranger.cpp,v retrieving revision 1.85 retrieving revision 1.86 diff -C2 -d -r1.85 -r1.86 *** arranger.cpp 18 May 2005 17:11:47 -0000 1.85 --- arranger.cpp 19 May 2005 13:26:37 -0000 1.86 *************** *** 48,53 **** Track* track; bool subtrack; ! QWidget* tw; ! QWidget* cw; SFrame* l1; SFrame* l2; --- 48,53 ---- Track* track; bool subtrack; ! QWidget* tw; // tracklist widget ! QWidget* cw; // canvas widget SFrame* l1; SFrame* l2; *************** *** 925,932 **** n = n.nextSibling(); } ! insertTrack(*it++, idx); ! tracks[idx]->tw->setFixedHeight(h); ! tracks[idx]->cw->setFixedHeight(h); ! ++idx; } --- 925,936 ---- n = n.nextSibling(); } ! if (it == tl->end()) ! printf("internal error 987\n"); ! else { ! insertTrack(*it++, idx); ! tracks[idx]->tw->setFixedHeight(h); ! tracks[idx]->cw->setFixedHeight(h); ! ++idx; ! } } *************** *** 988,993 **** { xml.tag("arranger"); ! xml.intTag("namesize", Arranger::trackNameWidth); ! int idx = 0; for (int i = 0; i < Track::TRACK_TYPES; ++i) { --- 992,996 ---- { xml.tag("arranger"); ! // xml.intTag("namesize", Arranger::trackNameWidth); for (int i = 0; i < Track::TRACK_TYPES; ++i) { *************** *** 1004,1008 **** } ! for (iArrangerTrack i = tracks.begin(); i != tracks.end(); ++i, ++idx) { if ((*i)->subtrack) { xml.tag("subtrack"); --- 1007,1011 ---- } ! for (iArrangerTrack i = tracks.begin(); i != tracks.end(); ++i) { if ((*i)->subtrack) { xml.tag("subtrack"); |