From: werner s. <wsc...@us...> - 2004-08-25 12:17:27
|
Update of /cvsroot/lmuse/muse/muse/arranger In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv22682/muse/arranger Modified Files: Makefile.am arranger.cpp arranger.h trackinfo.cpp Added Files: miditrackinfo.h Log Message: see ChangeLog Index: trackinfo.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/arranger/trackinfo.cpp,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** trackinfo.cpp 28 Jul 2004 10:17:17 -0000 1.11 --- trackinfo.cpp 25 Aug 2004 12:17:03 -0000 1.12 *************** *** 18,21 **** --- 18,22 ---- #include "config.h" + #include "miditrackinfo.h" #include "arranger.h" #include "intlabel.h" *************** *** 24,28 **** #include "utils.h" #include "tlist.h" - #include "mtrackinfobase.h" #include "alayout.h" #include "audio.h" --- 25,28 ---- *************** *** 37,44 **** //--------------------------------------------------------- ! class MidiTrackInfo : public MidiTrackInfoBase { ! public: ! MidiTrackInfo(QWidget* parent) : MidiTrackInfoBase(parent) {} ! }; //--------------------------------------------------------- --- 37,148 ---- //--------------------------------------------------------- ! MidiTrackInfo::MidiTrackInfo(QWidget* parent) ! : MidiTrackInfoBase(parent) ! { ! track = 0; ! volume = CTRL_VAL_UNKNOWN; ! pan = CTRL_VAL_UNKNOWN; ! program = CTRL_VAL_UNKNOWN; ! connect(iHBank, SIGNAL(valueChanged(int)), SLOT(programChanged())); ! connect(iLBank, SIGNAL(valueChanged(int)), SLOT(programChanged())); ! connect(iProgram, SIGNAL(valueChanged(int)), SLOT(programChanged())); ! connect(heartBeatTimer, SIGNAL(timeout()), SLOT(heartBeat())); ! } ! ! //--------------------------------------------------------- ! // heartBeat ! //--------------------------------------------------------- ! ! void MidiTrackInfo::heartBeat() ! { ! if (track == 0) ! return; ! AutomationType t = track->automationType(); ! ! int port = track->outPort(); ! int channel = track->outChannel(); ! if (automation && ((t == AUTO_READ) || (t == AUTO_TOUCH))) { ! int val; ! val = midiPorts[port].hwCtrlState(channel, CTRL_VOLUME); ! if (val != CTRL_VAL_UNKNOWN && val != volume) { ! volume = val; ! iLautst->blockSignals(true); ! iLautst->setValue(volume); ! iLautst->blockSignals(false); ! } ! val = midiPorts[port].hwCtrlState(channel, CTRL_PANPOT); ! if (val != CTRL_VAL_UNKNOWN && val != pan) { ! pan = val; ! iPan->blockSignals(true); ! iPan->setValue(pan - 65); ! iPan->blockSignals(false); ! } ! val = midiPorts[port].hwCtrlState(channel, CTRL_PROGRAM); ! if (val != program) { ! program = val; ! int hb, lb, pr; ! if (program == CTRL_VAL_UNKNOWN) { ! hb = lb = pr = 0; ! iPatch->setText("---"); ! } ! else { ! MidiInstrument* instr = midiPorts[port].instrument(); ! const char* name = instr->getPatchName(channel, program, song->mtype()); ! iPatch->setText(QString(name)); ! ! hb = ((program >> 16) & 0xff) + 1; ! if (hb == 0x100) ! hb = 0; ! lb = ((program >> 8) & 0xff) + 1; ! if (lb == 0x100) ! lb = 0; ! pr = (program & 0xff) + 1; ! if (pr == 0x100) ! pr = 0; ! } ! iHBank->blockSignals(true); ! iLBank->blockSignals(true); ! iProgram->blockSignals(true); ! ! iHBank->setValue(hb); ! iLBank->setValue(lb); ! iProgram->setValue(pr); ! ! iHBank->blockSignals(false); ! iLBank->blockSignals(false); ! iProgram->blockSignals(false); ! } ! } ! } ! ! //--------------------------------------------------------- ! // programChanged ! //--------------------------------------------------------- ! ! void MidiTrackInfo::programChanged() ! { ! int channel = track->outChannel(); ! int port = track->outPort(); ! int hbank = iHBank->value(); ! int lbank = iLBank->value(); ! int prog = iProgram->value(); ! ! if (hbank > 0 && hbank < 129) ! hbank -= 1; ! else ! hbank = 0xff; ! if (lbank > 0 && lbank < 129) ! lbank -= 1; ! else ! lbank = 0xff; ! if (prog > 0 && prog < 129) ! prog -= 1; ! else ! prog = 0xff; ! ! program = (hbank << 16) + (lbank << 8) + prog; ! MidiPlayEvent ev(0, port, channel, ME_CONTROLLER, CTRL_PROGRAM, program); ! audio->msgPlayMidiEvent(&ev); ! } //--------------------------------------------------------- *************** *** 60,65 **** void Arranger::genTrackInfo(QWidget* parent) { ! trackInfo = new WidgetStack(parent, "trackInfoStack"); ! noTrackInfo = new QWidget(trackInfo); QPixmap *noInfoPix = new QPixmap(160, 1000); //muse_leftside_logo_xpm); --- 164,168 ---- void Arranger::genTrackInfo(QWidget* parent) { ! trackInfo = new WidgetStack(parent, "trackInfoStack"); noTrackInfo = new QWidget(trackInfo); QPixmap *noInfoPix = new QPixmap(160, 1000); //muse_leftside_logo_xpm); *************** *** 119,123 **** --- 222,229 ---- tgrid->activate(); } + midiTrackInfo->setTrack(0); } + else if (n == 1) + midiTrackInfo->setTrack((MidiTrack*)selected); if (trackInfo->curIdx() == n) return; *************** *** 196,234 **** //--------------------------------------------------------- - // iProgramChanged - //--------------------------------------------------------- - - void Arranger::iProgramChanged() - { - MidiTrack* track = (MidiTrack*)selected; - int channel = track->outChannel(); - int port = track->outPort(); - int hbank = midiTrackInfo->iHBank->value(); - int lbank = midiTrackInfo->iLBank->value(); - int prog = midiTrackInfo->iProgram->value(); - - if (hbank > 0 && hbank < 129) - hbank -= 1; - else - hbank = 0xff; - if (lbank > 0 && lbank < 129) - lbank -= 1; - else - lbank = 0xff; - if (prog > 0 && prog < 129) - prog -= 1; - else - prog = 0xff; - - program = (hbank << 16) + (lbank << 8) + prog; - MidiPlayEvent ev(0, port, channel, ME_CONTROLLER, CTRL_PROGRAM, program); - audio->msgPlayMidiEvent(&ev); - MidiInstrument* instr = midiPorts[port].instrument(); - const char* name = instr->getPatchName(channel, program, song->mtype()); - midiTrackInfo->iPatch->setText(QString(name)); - // updateTrackInfo(); - } - - //--------------------------------------------------------- // iLautstChanged //--------------------------------------------------------- --- 302,305 ---- *************** *** 242,246 **** ME_CONTROLLER, CTRL_VOLUME, val); audio->msgPlayMidiEvent(&ev); - //TODO song->update(SC_MIDI_CONTROLLER); } --- 313,316 ---- *************** *** 308,315 **** // Realtime Change: ! MidiPlayEvent ev(0, port, channel, ! ME_CONTROLLER, CTRL_PANPOT, val + 65); audio->msgPlayMidiEvent(&ev); - //TODO song->update(SC_MIDI_CONTROLLER); } --- 378,383 ---- // Realtime Change: ! MidiPlayEvent ev(0, port, channel, ME_CONTROLLER, CTRL_PANPOT, val + 65); audio->msgPlayMidiEvent(&ev); } *************** *** 330,334 **** MidiPlayEvent ev(0, port, channel, ME_CONTROLLER, CTRL_PROGRAM, rv); audio->msgPlayMidiEvent(&ev); - updateTrackInfo(); } } --- 398,401 ---- *************** *** 348,354 **** connect(midiTrackInfo->iOutputChannel, SIGNAL(valueChanged(int)), SLOT(iOutputChannelChanged(int))); connect(midiTrackInfo->iInputChannel, SIGNAL(textChanged(const QString&)), SLOT(iInputChannelChanged(const QString&))); - connect(midiTrackInfo->iHBank, SIGNAL(valueChanged(int)), SLOT(iProgramChanged())); - connect(midiTrackInfo->iLBank, SIGNAL(valueChanged(int)), SLOT(iProgramChanged())); - connect(midiTrackInfo->iProgram, SIGNAL(valueChanged(int)), SLOT(iProgramChanged())); connect(midiTrackInfo->iLautst, SIGNAL(valueChanged(int)), SLOT(iLautstChanged(int))); connect(midiTrackInfo->iTransp, SIGNAL(valueChanged(int)), SLOT(iTranspChanged(int))); --- 415,418 ---- *************** *** 398,403 **** midiTrackInfo->iInputChannel->setText(bitmap2String(inChannel)); - seek(); - midiTrackInfo->iTransp->setValue(track->transposition); midiTrackInfo->iAnschl->setValue(track->velocity); --- 462,465 ---- *************** *** 407,496 **** } - //--------------------------------------------------------- - // seek - // change values akkording to seek position - //--------------------------------------------------------- - - void Arranger::seek() - { - if (!showTrackinfoFlag || !selected) - return; - switch(selected->type()) { - case Track::MIDI: - case Track::DRUM: - { - MidiTrack* track = (MidiTrack*)selected; - int outPort = track->outPort(); - int outChannel = track->outChannel(); - MidiPort* mp = &midiPorts[outPort]; - - // int nprogram = mp->getCtrl(outChannel, tick, CTRL_PROGRAM); - int nprogram = mp->hwCtrlState(outChannel, CTRL_PROGRAM); - if (program != nprogram) { - program = nprogram; - - int hb, lb, pr; - if (program == CTRL_VAL_UNKNOWN) { - hb = lb = pr = 0; - midiTrackInfo->iPatch->setText("---"); - } - else { - MidiInstrument* instr = midiPorts[outPort].instrument(); - const char* name = instr->getPatchName(outChannel, program, song->mtype()); - midiTrackInfo->iPatch->setText(QString(name)); - - hb = ((program >> 16) & 0xff) + 1; - if (hb == 0x100) - hb = 0; - lb = ((program >> 8) & 0xff) + 1; - if (lb == 0x100) - lb = 0; - pr = (program & 0xff) + 1; - if (pr == 0x100) - pr = 0; - } - midiTrackInfo->iHBank->blockSignals(true); - midiTrackInfo->iLBank->blockSignals(true); - midiTrackInfo->iProgram->blockSignals(true); - - midiTrackInfo->iHBank->setValue(hb); - midiTrackInfo->iLBank->setValue(lb); - midiTrackInfo->iProgram->setValue(pr); - - midiTrackInfo->iHBank->blockSignals(false); - midiTrackInfo->iLBank->blockSignals(false); - midiTrackInfo->iProgram->blockSignals(false); - } - - //int nvolume = midiPorts[outPort].getCtrl(outChannel, tick, CTRL_VOLUME); - int nvolume = midiPorts[outPort].hwCtrlState(outChannel, CTRL_VOLUME); - if (nvolume == CTRL_VAL_UNKNOWN) - nvolume = -1; - // int npan = midiPorts[outPort].getCtrl(outChannel, tick, CTRL_PANPOT); - int npan = midiPorts[outPort].hwCtrlState(outChannel, CTRL_PANPOT); - if (npan == CTRL_VAL_UNKNOWN) - npan = -66; - if (nvolume != volume) { - volume = nvolume; - midiTrackInfo->iLautst->blockSignals(true); - midiTrackInfo->iLautst->setValue(volume); - midiTrackInfo->iLautst->blockSignals(false); - } - if (npan != pan) { - pan = npan; - midiTrackInfo->iPan->blockSignals(true); - midiTrackInfo->iPan->setValue(pan - 65); - midiTrackInfo->iPan->blockSignals(false); - } - } - break; - case Track::WAVE: - case Track::AUDIO_OUTPUT: - case Track::AUDIO_INPUT: - case Track::AUDIO_GROUP: - case Track::AUDIO_AUX: - case Track::AUDIO_SOFTSYNTH: - break; - } - } - --- 469,470 ---- Index: arranger.h =================================================================== RCS file: /cvsroot/lmuse/muse/muse/arranger/arranger.h,v retrieving revision 1.17 retrieving revision 1.18 diff -C2 -d -r1.17 -r1.18 *** arranger.h 1 Jun 2004 14:25:48 -0000 1.17 --- arranger.h 25 Aug 2004 12:17:03 -0000 1.18 *************** *** 32,37 **** class QCheckBox; class QSpinBox; ! class MidiTrackInfoBase; ! class WaveTrackInfoBase; class TLLayout; class WidgetStack; --- 32,36 ---- class QCheckBox; class QSpinBox; ! class MidiTrackInfo; class TLLayout; class WidgetStack; *************** *** 88,92 **** WidgetStack* trackInfo; QScrollBar* infoScroll; ! MidiTrackInfoBase* midiTrackInfo; AudioStrip* waveTrackInfo; QWidget* noTrackInfo; --- 87,91 ---- WidgetStack* trackInfo; QScrollBar* infoScroll; ! MidiTrackInfo* midiTrackInfo; AudioStrip* waveTrackInfo; QWidget* noTrackInfo; *************** *** 125,129 **** void iInputPortChanged(const QString&); void iOutputPortChanged(int); - void iProgramChanged(); void iLautstChanged(int); void iTranspChanged(int); --- 124,127 ---- *************** *** 143,147 **** void setTempo100(); void setTempo200(); - void seek(); void recordClicked(); --- 141,144 ---- Index: arranger.cpp =================================================================== RCS file: /cvsroot/lmuse/muse/muse/arranger/arranger.cpp,v retrieving revision 1.33 retrieving revision 1.34 diff -C2 -d -r1.33 -r1.34 *** arranger.cpp 14 Jun 2004 20:25:24 -0000 1.33 --- arranger.cpp 25 Aug 2004 12:17:03 -0000 1.34 *************** *** 47,51 **** #include "tlist.h" #include "icons.h" ! #include "mtrackinfobase.h" #include "header.h" #include "utils.h" --- 47,51 ---- #include "tlist.h" #include "icons.h" ! #include "miditrackinfo.h" #include "header.h" #include "utils.h" *************** *** 323,328 **** connect(canvas, SIGNAL(toolChanged(int)), SIGNAL(toolChanged(int))); - connect(song, SIGNAL(posChanged(int, unsigned, bool)), SLOT(seek())); - connect(time, SIGNAL(addMarker(int)), SIGNAL(addMarker(int))); configChanged(); // set configuration values --- 323,326 ---- Index: Makefile.am =================================================================== RCS file: /cvsroot/lmuse/muse/muse/arranger/Makefile.am,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** Makefile.am 2 Apr 2004 12:47:29 -0000 1.3 --- Makefile.am 25 Aug 2004 12:17:03 -0000 1.4 *************** *** 12,19 **** tlist.cpp tlist.h \ alayout.cpp alayout.h \ ! trackinfo.cpp nodist_libarranger_a_SOURCES = \ moc_arranger.cpp \ moc_pcanvas.cpp \ ! moc_tlist.cpp --- 12,20 ---- tlist.cpp tlist.h \ alayout.cpp alayout.h \ ! trackinfo.cpp miditrackinfo.h nodist_libarranger_a_SOURCES = \ moc_arranger.cpp \ moc_pcanvas.cpp \ ! moc_tlist.cpp \ ! moc_miditrackinfo.cpp --- NEW FILE: miditrackinfo.h --- //========================================================= // MusE // Linux Music Editor // $Id: miditrackinfo.h,v 1.1 2004/08/25 12:17:03 wschweer Exp $ // (C) Copyright 2004 Werner Schweer (ws...@se...) //========================================================= #ifndef __MIDITRACKINFO_H__ #define __MIDITRACKINFO_H__ #include "mtrackinfobase.h" class MidiTrack; //--------------------------------------------------------- // MidiTrackInfo //--------------------------------------------------------- class MidiTrackInfo : public MidiTrackInfoBase { Q_OBJECT MidiTrack* track; int volume, pan, program; private slots: virtual void heartBeat(); void programChanged(); public: MidiTrackInfo(QWidget* parent); void setTrack(MidiTrack* t) { track = t; } }; #endif |