summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNil Geisweiller <a-lin@sourceforge.net>2006-12-27 18:39:21 +0000
committerNil Geisweiller <a-lin@sourceforge.net>2006-12-27 18:39:21 +0000
commitfde27296b934fde533cdc47a8db7f7db50290922 (patch)
treeb5efe12eb644793ff209ada5d51b1246dd963516
parent5b06fb508f8cff70613a67453d40dad78570c1dc (diff)
see ChangeLog
-rw-r--r--muse/ChangeLog3
-rw-r--r--muse/muse/arranger/canvas.cpp28
-rw-r--r--muse/muse/synth.cpp35
-rw-r--r--muse/synti/deicsonze/deicsonze.cpp29
-rw-r--r--muse/synti/deicsonze/deicsonze.h1
-rw-r--r--muse/synti/libsynti/mess.h1
-rw-r--r--muse/synti/zynaddsubfx/main.cpp79
7 files changed, 77 insertions, 99 deletions
diff --git a/muse/ChangeLog b/muse/ChangeLog
index 125af619..3d124340 100644
--- a/muse/ChangeLog
+++ b/muse/ChangeLog
@@ -1,3 +1,6 @@
+27.12 (ng)
+ - deleted getBankName and getPatchInfo of zynaddsubfx
+ - add gradient color for the tracks
26.12 (ng)
- changed MessSynthIF::populatePatchPopup to make is work with banks
- added getPatchInfo of DeicsOnze
diff --git a/muse/muse/arranger/canvas.cpp b/muse/muse/arranger/canvas.cpp
index 655607fc..a5a75058 100644
--- a/muse/muse/arranger/canvas.cpp
+++ b/muse/muse/arranger/canvas.cpp
@@ -161,7 +161,7 @@ void PartCanvas::drawWavePart(QPainter& p, Part* wp, int y0, int th, int from, i
void PartCanvas::paint(QPainter& p, QRect r)
{
-// printf("canvas paint %d %d %d %d\n", r.x(), r.y(), r.width(), r.height());
+ //printf("canvas paint %d %d %d %d\n", r.x(), r.y(), r.width(), r.height());
QFont f = font();
f.setPointSize(8);
p.setFont(f);
@@ -193,23 +193,31 @@ void PartCanvas::paint(QPainter& p, QRect r)
break;
QRect pr(x1, y, len, h - partBorderWidth);
- bool clone = part->isClone();
+ bool clone = part->isClone();
QPen pen(Qt::black, partBorderWidth, clone ? Qt::DashLine : Qt::SolidLine);
- QBrush brush(Qt::SolidPattern);
- if (part->mute()) {
- pen.setColor(Qt::red);
- brush.setColor(Qt::gray);
- }
- else if (part->selected()) {
+ QBrush brush(Qt::SolidPattern);
+ QLinearGradient lg(0, pr.y() - wpos.y()-r.y(),
+ 0, pr.y()+ 2*pr.height() -wpos.y()-r.y());
+ lg.setColorAt(0, part->selected()?Qt::gray
+ :config.partColors[part->colorIndex()]);
+ lg.setColorAt(1, Qt::white);
+ QBrush brushLG(lg);
+ if (part->selected()) {
pen.setColor(config.partColors[part->colorIndex()]);
brush.setColor(config.selectPartBg);
+ p.setBrush(brushLG);
+ }
+ else if (part->mute()) {
+ pen.setColor(Qt::red);
+ brush.setColor(Qt::gray);
+ p.setBrush(brush);
}
else {
- brush.setColor(config.partColors[part->colorIndex()]);
+ //brush.setColor(config.partColors[part->colorIndex()]);
+ p.setBrush(brushLG);
}
p.setPen(pen);
- p.setBrush(brush);
//
// we want to draw the rectangle without transformation
// to get equal border width horizontal and vertical
diff --git a/muse/muse/synth.cpp b/muse/muse/synth.cpp
index e9650209..bf309877 100644
--- a/muse/muse/synth.cpp
+++ b/muse/muse/synth.cpp
@@ -473,35 +473,10 @@ QString MessSynthIF::getPatchName(int channel, int prog)
void MessSynthIF::populatePatchPopup(QMenu* menu, int ch)
{
menu->clear();
- const char* bank = _mess->getBankName(0);
- int idx = 0;
- if (bank) {
- while (bank) {
- // synthesizer has banks
- QMenu* a = menu->addMenu(QString(bank));
-
- MidiPatch patch;
- patch.typ = 0;
- patch.hbank = idx << 8;
- patch.lbank = idx;
- patch.prog = 0;
- const MidiPatch* mp = _mess->getPatchInfo(ch, &patch);
- while (mp) {
- int id = ((mp->hbank & 0xff) << 16)
- + ((mp->lbank & 0xff) << 8) + mp->prog;
- QAction* aa = a->addAction(QString(mp->name));
- aa->setData(id);
- mp = _mess->getPatchInfo(ch, mp);
- }
- ++idx;
- bank = _mess->getBankName(idx);
- }
- }
- else {
- const MidiPatch* mp = _mess->getPatchInfo(ch, 0);
- QMenu *hm = NULL, *lm = NULL;
- while (mp) {
- switch(mp->typ) {
+ const MidiPatch* mp = _mess->getPatchInfo(ch, 0);
+ QMenu *hm = NULL, *lm = NULL;
+ while (mp) {
+ switch(mp->typ) {
case MP_TYPE_HBANK :
hm = menu->addMenu(QString(mp->name));
break;
@@ -520,10 +495,10 @@ void MessSynthIF::populatePatchPopup(QMenu* menu, int ch)
}
mp = _mess->getPatchInfo(ch, mp);
}
- }
}
+
//---------------------------------------------------------
// getData
//---------------------------------------------------------
diff --git a/muse/synti/deicsonze/deicsonze.cpp b/muse/synti/deicsonze/deicsonze.cpp
index a615a1bd..d6620bec 100644
--- a/muse/synti/deicsonze/deicsonze.cpp
+++ b/muse/synti/deicsonze/deicsonze.cpp
@@ -3403,34 +3403,6 @@ const char* DeicsOnze::getPatchName(int ch, int val, int) const {
}
//---------------------------------------------------------
-// getBankName
-//---------------------------------------------------------
-const char* DeicsOnze::getBankName(int /*val*/) const {
- /*QString catstr, substr, retstr;
- Category* c;
- Subcategory* s;
- int hbank = (val & 0xff00) >> 8;
- int lbank = val & 0x7f;
- if (hbank > 127) // map "dont care" to 0
- hbank = 0;
- if (lbank > 127)
- lbank = 0;
- c = _set->findCategory(hbank);
- if(c) {
- catstr = QString(c->_categoryName.c_str());
- s = c->findSubcategory(lbank);
- if(s) {
- substr = QString(s->_subcategoryName.c_str());
- retstr = catstr + QString("->") + substr;
- return retstr.toAscii().data();
- }
- else return NULL;
- }
- else*/
- return NULL;
-}
-
-//---------------------------------------------------------
// getPatchInfo
//---------------------------------------------------------
const MidiPatch* DeicsOnze::getPatchInfo(int /*ch*/, const MidiPatch* p) const {
@@ -3515,6 +3487,7 @@ const MidiPatch* DeicsOnze::getPatchInfo(int /*ch*/, const MidiPatch* p) const {
return &_patch;
}
else {
+ _patch.hbank++;
return getPatchInfo(0, &_patch);
}
}
diff --git a/muse/synti/deicsonze/deicsonze.h b/muse/synti/deicsonze/deicsonze.h
index 48b2c7f6..6102eb34 100644
--- a/muse/synti/deicsonze/deicsonze.h
+++ b/muse/synti/deicsonze/deicsonze.h
@@ -538,7 +538,6 @@ class DeicsOnze : public Mess {
virtual const char* getPatchName(int ch, int number, int) const;
virtual const MidiPatch* getPatchInfo(int, const MidiPatch *) const;
- virtual const char* getBankName(int) const;
virtual int getControllerInfo(int arg1, const char** arg2,
int* arg3, int* arg4, int* arg5);
diff --git a/muse/synti/libsynti/mess.h b/muse/synti/libsynti/mess.h
index 7f96db18..c407d17e 100644
--- a/muse/synti/libsynti/mess.h
+++ b/muse/synti/libsynti/mess.h
@@ -68,7 +68,6 @@ class Mess {
virtual int getControllerInfo(int, const char**, int*, int*, int*) {return 0;}
virtual const char* getPatchName(int, int, int) const { return "?"; }
virtual const MidiPatch* getPatchInfo(int, const MidiPatch*) const { return 0; }
- virtual const char* getBankName(int) const { return 0; }
// synthesizer -> host communication
void sendEvent(MidiEvent); // called from synti
diff --git a/muse/synti/zynaddsubfx/main.cpp b/muse/synti/zynaddsubfx/main.cpp
index ebe18274..10f968bd 100644
--- a/muse/synti/zynaddsubfx/main.cpp
+++ b/muse/synti/zynaddsubfx/main.cpp
@@ -48,7 +48,6 @@ class Zynadd : public Mess, public Master
virtual void getInitData(int*, const unsigned char**);
virtual int getControllerInfo(int, const char**, int*, int*, int*);
virtual const char* getPatchName(int, int, int) const;
- virtual const char* getBankName(int) const;
virtual const MidiPatch* getPatchInfo(int, const MidiPatch*) const;
virtual bool hasGui() const { return true; }
virtual bool guiVisible() const { return _guiVisible; }
@@ -187,17 +186,6 @@ bool Zynadd::loadBank(int n)
}
//---------------------------------------------------------
-// getBankName
-//---------------------------------------------------------
-
-const char* Zynadd::getBankName(int n) const
- {
- n += 1; // bank 0 is always empty ?!
-// printf("Zyn: getBankName %d <%s>\n", n, bank.banks[n].name);
- return bank.banks[n].name;
- }
-
-//---------------------------------------------------------
// getControllerInfo
//---------------------------------------------------------
@@ -260,7 +248,7 @@ int Zynadd::getControllerInfo(int i, const char** name, int* num, int* min, int*
//---------------------------------------------------------
const char* Zynadd::getPatchName(int, int val, int) const
- {
+ {
int bankNo = (val >> 8) + 1;
int program = val & 0x7f;
return messPatch[bankNo][program];
@@ -270,23 +258,56 @@ const char* Zynadd::getPatchName(int, int val, int) const
// getPatchInfo
//---------------------------------------------------------
-const MidiPatch* Zynadd::getPatchInfo(int, const MidiPatch* p) const
- {
- if (!p)
- return 0;
- int bn = ((p->hbank << 8) & 0xff) + ((p->lbank) & 0xff) + 1;
- for (unsigned int i = p->prog + 1; i < 128; ++i) {
- if (messPatch[bn][i]) {
- patch.name = messPatch[bn][i];
- patch.typ = 0xff;
- patch.prog = i;
- patch.hbank = p->hbank;
- patch.lbank = p->lbank;
- return &patch;
- }
- }
- return 0;
+const MidiPatch* Zynadd::getPatchInfo(int, const MidiPatch* p) const {
+ if(p) {
+ patch.hbank = p->hbank;
+ patch.lbank = p->lbank;
+ patch.prog = p->prog;
+ int bn = ((patch.hbank << 7) + patch.lbank); //7 because lbank is signed
+ switch(p->typ) {
+ case MP_TYPE_LBANK :
+ patch.typ = 0;
+ patch.name = messPatch[bn + 1][patch.prog];
+ if(patch.name) return &patch;
+ else return getPatchInfo(0, &patch);
+ break;
+ default :
+ if(patch.prog + 1 < 128) {
+ patch.prog++;
+ patch.name = messPatch[bn + 1][patch.prog];
+ if(patch.name) return &patch;
+ else return getPatchInfo(0, &patch);
+ }
+ else {
+ patch.prog = 0;
+ if(bn + 1 < MAX_NUM_BANKS - 1) {
+ bn++;
+ patch.name = bank.banks[bn + 1].name;
+ patch.hbank = bn / 128;
+ patch.lbank = bn % 128;
+ patch.typ = MP_TYPE_LBANK;
+ if(patch.name) return &patch;
+ else return getPatchInfo(0, &patch);
+ }
+ else return NULL;
}
+ break;
+ }
+ }
+ else {
+ patch.typ = MP_TYPE_LBANK;
+ patch.hbank = 0;
+ patch.lbank = 0;
+ patch.prog = 0;
+ patch.name = bank.banks[(patch.hbank << 7) + patch.lbank + 1].name;
+ if(patch.name) return &patch;
+ else {
+ patch.typ = 0;
+ patch.prog = 127; //hack to go faster
+ return getPatchInfo(0, &patch);
+ }
+ }
+}
//---------------------------------------------------------
// getInitData