summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWerner Schweer <ws.seh.de>2006-10-31 18:07:55 +0000
committerWerner Schweer <ws.seh.de>2006-10-31 18:07:55 +0000
commit6cde69b0213447305ec68465f903f96923a9dbe6 (patch)
treeb3d887a198c2fd6bb7563e6b5182a1abb8e24b71
parentcc4fafa6aa1a3f252e16946ee0e5c790798160eb (diff)
updates
-rw-r--r--muse/muse/midichannel.cpp2
-rw-r--r--muse/muse/synth.cpp30
-rw-r--r--muse/synti/zynaddsubfx/main.cpp17
3 files changed, 39 insertions, 10 deletions
diff --git a/muse/muse/midichannel.cpp b/muse/muse/midichannel.cpp
index 40294b2a..044c8a0a 100644
--- a/muse/muse/midichannel.cpp
+++ b/muse/muse/midichannel.cpp
@@ -51,6 +51,8 @@ MidiChannel::MidiChannel(MidiOut* p, int ch)
addMidiController(mi, CTRL_REVERB_SEND);
addMidiController(mi, CTRL_CHORUS_SEND);
addMidiController(mi, CTRL_VARIATION_SEND);
+
+ // TODO: setDefault Values
}
//---------------------------------------------------------
diff --git a/muse/muse/synth.cpp b/muse/muse/synth.cpp
index a58a7736..ebdbc10f 100644
--- a/muse/muse/synth.cpp
+++ b/muse/muse/synth.cpp
@@ -373,6 +373,11 @@ void SynthI::write(Xml& xml) const
AudioTrack::writeProperties(xml);
xml.strTag("class", synth()->name());
+ for (int i = 0; i < MIDI_CHANNELS; ++i) {
+ if (!_channel[i]->noInRoute())
+ _channel[i]->write(xml);
+ }
+
//---------------------------------------------
// if soft synth is attached to a midi port,
// write out port number
@@ -387,9 +392,9 @@ void SynthI::write(Xml& xml) const
if (h || w)
xml.qrectTag("geometry", QRect(x, y, w, h));
}
-
_sif->write(xml);
xml.etag("SynthI");
+
}
void MessSynthIF::write(Xml& xml) const
@@ -432,25 +437,30 @@ void SynthI::read(QDomNode node)
bool startGui = false;
QRect r;
- while (!node.isNull()) {
+ for (; !node.isNull(); node = node.nextSibling()) {
QDomElement e = node.toElement();
- if (e.tagName() == "class")
+ QString tag(e.tagName());
+ if (tag == "class")
sclass = e.text();
- else if (e.tagName() == "port")
+ else if (tag == "port")
port = e.text().toInt();
- else if (e.tagName() == "guiVisible")
+ else if (tag == "guiVisible")
startGui = e.text().toInt();
- else if (e.tagName() == "midistate")
+ else if (tag == "midistate")
readMidiState(node.firstChild());
- else if (e.tagName() == "param") {
+ else if (tag == "param") {
float val = e.text().toFloat();
initParams.push_back(val);
}
- else if (e.tagName() == "geometry")
+ else if (tag == "geometry")
r = AL::readGeometry(node);
- else if (AudioTrack::readProperties(node))
+ else if (tag == "MidiChannel") {
+ int idx = e.attribute("idx", "0").toInt();
+ _channel[idx]->read(node.firstChild());
+ }
+ else if (AudioTrack::readProperties(node)) {
printf("MusE:SynthI: unknown tag %s\n", e.tagName().toLatin1().data());
- node = node.nextSibling();
+ }
}
Synth* s = findSynth(sclass);
if (s == 0)
diff --git a/muse/synti/zynaddsubfx/main.cpp b/muse/synti/zynaddsubfx/main.cpp
index 7fd863d2..92612f45 100644
--- a/muse/synti/zynaddsubfx/main.cpp
+++ b/muse/synti/zynaddsubfx/main.cpp
@@ -208,6 +208,23 @@ struct ZynCtrl {
int max;
};
+//
+// NRPN
+// 0x04 0 // System Effects
+// 0x04 1
+// 0x04 2
+// 0x04 3
+//
+// 0x08 0 // Insertion Effects
+// 0x08 1
+// 0x08 2
+// 0x08 3
+// 0x08 4
+// 0x08 5
+// 0x08 6
+// 0x08 7
+// 0x08 8
+
int Zynadd::getControllerInfo(int i, const char** name, int* num, int* min, int* max)
{
static const ZynCtrl ctrl[] = {