summaryrefslogtreecommitdiff
path: root/muse2/muse/conf.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'muse2/muse/conf.cpp')
-rw-r--r--muse2/muse/conf.cpp148
1 files changed, 70 insertions, 78 deletions
diff --git a/muse2/muse/conf.cpp b/muse2/muse/conf.cpp
index 26f96bf1..5376734c 100644
--- a/muse2/muse/conf.cpp
+++ b/muse2/muse/conf.cpp
@@ -220,7 +220,7 @@ static void readPortChannel(Xml& xml, int midiPort)
// readConfigMidiPort
//---------------------------------------------------------
-static void readConfigMidiPort(Xml& xml)
+static void readConfigMidiPort(Xml& xml, bool skipConfig)
{
int idx = 0;
QString device;
@@ -234,11 +234,9 @@ static void readConfigMidiPort(Xml& xml)
// FIXME: TODO: Make this user-configurable!
QString instrument("GM");
+ int rwFlags = 3;
int openFlags = 1;
- bool thruFlag = false;
- //int dic = 0;
- //int doc = 0;
- int dic = -1; // p4.0.17
+ int dic = -1;
int doc = -1;
MidiSyncInfo tmpSi;
@@ -251,6 +249,19 @@ static void readConfigMidiPort(Xml& xml)
QString tag = xml.s1();
switch (token) {
case Xml::TagStart:
+
+ // skipConfig added so it doesn't overwrite midi ports. p4.0.41 Tim.
+ // Try to keep the controller information. But, this may need to be moved below.
+ // Also may want to try to keep sync info, but that's a bit risky, so let's not for now.
+ if (tag == "channel") {
+ readPortChannel(xml, idx);
+ break;
+ }
+ else if (skipConfig){
+ xml.skip(tag);
+ break;
+ }
+
if (tag == "name")
device = xml.parse1();
else if (tag == "type")
@@ -262,6 +273,8 @@ static void readConfigMidiPort(Xml& xml)
}
else if (tag == "openFlags")
openFlags = xml.parseInt();
+ else if (tag == "rwFlags") // Jack midi devs need this. p4.0.41
+ rwFlags = xml.parseInt();
else if (tag == "defaultInChans")
dic = xml.parseInt();
else if (tag == "defaultOutChans")
@@ -270,16 +283,15 @@ static void readConfigMidiPort(Xml& xml)
tmpSi.read(xml);
else if (tag == "instrument") {
instrument = xml.parse1();
- // Moved by Tim.
- //MusEGlobal::midiPorts[idx].setInstrument(
+ //MusEGlobal::midiPorts[idx].setInstrument( // Moved below
// registerMidiInstrument(instrument)
// );
}
else if (tag == "midithru")
- thruFlag = xml.parseInt(); // obsolete
- else if (tag == "channel") {
- readPortChannel(xml, idx);
- }
+ xml.parseInt(); // obsolete
+ //else if (tag == "channel") {
+ // readPortChannel(xml, idx); // Moved above
+ // }
else
xml.unknown("MidiDevice");
break;
@@ -290,6 +302,10 @@ static void readConfigMidiPort(Xml& xml)
break;
case Xml::TagEnd:
if (tag == "midiport") {
+
+ if(skipConfig) // p4.0.41
+ return;
+
//if (idx > MIDI_PORTS) {
if (idx < 0 || idx >= MIDI_PORTS) {
fprintf(stderr, "bad midi port %d (>%d)\n",
@@ -305,9 +321,8 @@ static void readConfigMidiPort(Xml& xml)
if(!dev && type == MidiDevice::JACK_MIDI)
{
if(MusEGlobal::debugMsg)
- fprintf(stderr, "readConfigMidiPort: creating jack midi device %s\n", device.toLatin1().constData());
- //dev = MidiJackDevice::createJackMidiDevice(device, openFlags);
- dev = MidiJackDevice::createJackMidiDevice(device); // p3.3.55
+ fprintf(stderr, "readConfigMidiPort: creating jack midi device %s with rwFlags:%d\n", device.toLatin1().constData(), rwFlags);
+ dev = MidiJackDevice::createJackMidiDevice(device, rwFlags);
}
if(MusEGlobal::debugMsg && !dev)
@@ -315,7 +330,7 @@ static void readConfigMidiPort(Xml& xml)
MidiPort* mp = &MusEGlobal::midiPorts[idx];
- mp->setInstrument(registerMidiInstrument(instrument)); // By Tim.
+ mp->setInstrument(registerMidiInstrument(instrument));
if(dic != -1) // p4.0.17 Leave them alone unless set by song.
mp->setDefaultInChannels(dic);
if(doc != -1)
@@ -480,7 +495,7 @@ static void loadConfigMetronom(Xml& xml)
// readSeqConfiguration
//---------------------------------------------------------
-static void readSeqConfiguration(Xml& xml)
+static void readSeqConfiguration(Xml& xml, bool skipConfig)
{
for (;;) {
Xml::Token token = xml.parse();
@@ -492,7 +507,7 @@ static void readSeqConfiguration(Xml& xml)
if (tag == "metronom")
loadConfigMetronom(xml);
else if (tag == "midiport")
- readConfigMidiPort(xml);
+ readConfigMidiPort(xml, skipConfig);
else if (tag == "rcStop")
MusEGlobal::rcStopNote = xml.parseInt();
else if (tag == "rcEnable")
@@ -542,7 +557,7 @@ void readConfiguration(Xml& xml, bool readOnlySequencer, bool doReadGlobalConfig
midiport configuration and VOLUME.
*/
if (tag == "sequencer") {
- readSeqConfiguration(xml);
+ readSeqConfiguration(xml, readOnlySequencer);
break;
}
else if (readOnlySequencer) {
@@ -580,8 +595,10 @@ void readConfiguration(Xml& xml, bool readOnlySequencer, bool doReadGlobalConfig
MidiTrack::setVisible((bool)xml.parseInt());
else if (tag == "inputTracksVisible")
AudioInput::setVisible((bool)xml.parseInt());
- else if (tag == "outputTracksVisible")
+ else if (tag == "outputTracksVisible") {
+ printf("output track set from config!\n");
AudioOutput::setVisible((bool)xml.parseInt());
+ }
else if (tag == "synthTracksVisible")
SynthI::setVisible((bool)xml.parseInt());
else if (tag == "bigtimeVisible")
@@ -624,7 +641,18 @@ void readConfiguration(Xml& xml, bool readOnlySequencer, bool doReadGlobalConfig
MusEGlobal::config.geometryTransport = readGeometry(xml, tag);
else if (tag == "geometryBigTime")
MusEGlobal::config.geometryBigTime = readGeometry(xml, tag);
-
+ else if (tag == "Mixer") {
+ if(mixers == 0)
+ MusEGlobal::config.mixer1.read(xml);
+ else
+ MusEGlobal::config.mixer2.read(xml);
+ ++mixers;
+ }
+ else if (tag == "geometryMain")
+ MusEGlobal::config.geometryMain = readGeometry(xml, tag);
+
+ // don't insert else if(...) clauses between
+ // this line and "Global config stuff begins here".
else if (!doReadGlobalConfig) {
xml.skip(tag);
break;
@@ -636,9 +664,6 @@ void readConfiguration(Xml& xml, bool readOnlySequencer, bool doReadGlobalConfig
// ---- Global config stuff begins here ----
- else if (tag == "geometryMain")
- MusEGlobal::config.geometryMain = readGeometry(xml, tag);
-
else if (tag == "theme")
MusEGlobal::config.style = xml.parse1();
else if (tag == "styleSheetFile")
@@ -851,20 +876,6 @@ void readConfiguration(Xml& xml, bool readOnlySequencer, bool doReadGlobalConfig
MusEGlobal::config.canvasBgPixmap = xml.parse1();
else if (tag == "canvasCustomBgList")
MusEGlobal::config.canvasCustomBgList = xml.parse1().split(";", QString::SkipEmptyParts);
-
- //else if (tag == "mixer1")
- // MusEGlobal::config.mixer1.read(xml);
- //else if (tag == "mixer2")
- // MusEGlobal::config.mixer2.read(xml);
- else if (tag == "Mixer")
- {
- if(mixers == 0)
- MusEGlobal::config.mixer1.read(xml);
- else
- MusEGlobal::config.mixer2.read(xml);
- ++mixers;
- }
-
else if (tag == "bigtimeForegroundcolor")
MusEGlobal::config.bigTimeForegroundColor = readColor(xml);
else if (tag == "bigtimeBackgroundcolor")
@@ -936,8 +947,8 @@ void readConfiguration(Xml& xml, bool readOnlySequencer, bool doReadGlobalConfig
MusEGlobal::config.minControlProcessPeriod = xml.parseUInt();
else if (tag == "guiRefresh")
MusEGlobal::config.guiRefresh = xml.parseInt();
- else if (tag == "userInstrumentsDir")
- MusEGlobal::config.userInstrumentsDir = xml.parse1();
+ else if (tag == "userInstrumentsDir") // Obsolete
+ MusEGlobal::config.userInstrumentsDir = xml.parse1(); // Keep for compatibility
else if (tag == "startMode")
MusEGlobal::config.startMode = xml.parseInt();
else if (tag == "startSong")
@@ -956,6 +967,10 @@ void readConfiguration(Xml& xml, bool readOnlySequencer, bool doReadGlobalConfig
MusEGlobal::config.leftMouseButtonCanDecrease = xml.parseInt();
else if (tag == "rangeMarkerWithoutMMB")
MusEGlobal::config.rangeMarkerWithoutMMB = xml.parseInt();
+ else if (tag == "addHiddenTracks")
+ MusEGlobal::config.addHiddenTracks = xml.parseInt();
+ else if (tag == "unhideTracks")
+ MusEGlobal::config.unhideTracks = xml.parseInt();
// ---- the following only skips obsolete entries ----
else if ((tag == "arranger") || (tag == "geometryPianoroll") || (tag == "geometryDrumedit"))
@@ -1179,7 +1194,6 @@ static void writeSeqConfiguration(int level, Xml& xml, bool writePortInfo)
if (dev) {
xml.strTag(level, "name", dev->name());
- // p3.3.38
//if(dynamic_cast<MidiJackDevice*>(dev))
if(dev->deviceType() != MidiDevice::ALSA_MIDI)
//xml.intTag(level, "type", MidiDevice::JACK_MIDI);
@@ -1189,6 +1203,9 @@ static void writeSeqConfiguration(int level, Xml& xml, bool writePortInfo)
// openFlags was read before, but never written here.
//xml.intTag(level, "record", dev->rwFlags() & 0x2 ? 1 : 0);
xml.intTag(level, "openFlags", dev->openFlags());
+
+ if(dev->deviceType() == MidiDevice::JACK_MIDI)
+ xml.intTag(level, "rwFlags", dev->rwFlags()); // Need this. Jack midi devs are created by app. p4.0.41
}
mport->syncInfo().write(level, xml);
// write out registered controller for all channels
@@ -1255,9 +1272,8 @@ void MusE::writeGlobalConfiguration(int level, MusECore::Xml& xml) const
xml.intTag(level, "dummyAudioBufSize", MusEGlobal::config.dummyAudioBufSize);
xml.intTag(level, "dummyAudioSampleRate", MusEGlobal::config.dummyAudioSampleRate);
xml.uintTag(level, "minControlProcessPeriod", MusEGlobal::config.minControlProcessPeriod);
-
xml.intTag(level, "guiRefresh", MusEGlobal::config.guiRefresh);
- xml.strTag(level, "userInstrumentsDir", MusEGlobal::config.userInstrumentsDir);
+
// Removed by Orcan. 20101220
//xml.strTag(level, "helpBrowser", config.helpBrowser);
xml.intTag(level, "extendedMidi", MusEGlobal::config.extendedMidi);
@@ -1294,6 +1310,17 @@ void MusE::writeGlobalConfiguration(int level, MusECore::Xml& xml) const
xml.intTag(level, "leftMouseButtonCanDecrease", MusEGlobal::config.leftMouseButtonCanDecrease);
xml.intTag(level, "rangeMarkerWithoutMMB", MusEGlobal::config.rangeMarkerWithoutMMB);
+ xml.intTag(level, "unhideTracks", MusEGlobal::config.unhideTracks);
+ xml.intTag(level, "addHiddenTracks", MusEGlobal::config.addHiddenTracks);
+
+ xml.intTag(level, "waveTracksVisible", MusECore::WaveTrack::visible());
+ xml.intTag(level, "auxTracksVisible", MusECore::AudioAux::visible());
+ xml.intTag(level, "groupTracksVisible", MusECore::AudioGroup::visible());
+ xml.intTag(level, "midiTracksVisible", MusECore::MidiTrack::visible());
+ xml.intTag(level, "inputTracksVisible", MusECore::AudioInput::visible());
+ xml.intTag(level, "outputTracksVisible", MusECore::AudioOutput::visible());
+ xml.intTag(level, "synthTracksVisible", MusECore::SynthI::visible());
+
//for (int i = 0; i < 6; ++i) {
for (int i = 0; i < NUM_FONTS; ++i) {
char buffer[32];
@@ -1348,7 +1375,6 @@ void MusE::writeGlobalConfiguration(int level, MusECore::Xml& xml) const
xml.colorTag(level, "auxTrackBg", MusEGlobal::config.auxTrackBg);
xml.colorTag(level, "synthTrackBg", MusEGlobal::config.synthTrackBg);
- // Removed by Tim. p3.3.6
//xml.intTag(level, "txSyncPort", txSyncPort);
//xml.intTag(level, "rxSyncPort", rxSyncPort);
xml.intTag(level, "mtctype", MusEGlobal::mtcType);
@@ -1375,11 +1401,8 @@ void MusE::writeGlobalConfiguration(int level, MusECore::Xml& xml) const
xml.intTag(level, "bigtimeVisible", MusEGlobal::config.bigTimeVisible);
xml.intTag(level, "transportVisible", MusEGlobal::config.transportVisible);
- //xml.intTag(level, "mixerVisible", MusEGlobal::config.mixerVisible); // Obsolete
xml.intTag(level, "mixer1Visible", MusEGlobal::config.mixer1Visible);
xml.intTag(level, "mixer2Visible", MusEGlobal::config.mixer2Visible);
- //MusEGlobal::config.mixer1.write(level, xml, "mixer1");
- //MusEGlobal::config.mixer2.write(level, xml, "mixer2");
MusEGlobal::config.mixer1.write(level, xml);
MusEGlobal::config.mixer2.write(level, xml);
@@ -1432,20 +1455,9 @@ void MusE::writeConfiguration(int level, MusECore::Xml& xml) const
xml.intTag(level, "midiFilterCtrl3", MusEGlobal::midiFilterCtrl3);
xml.intTag(level, "midiFilterCtrl4", MusEGlobal::midiFilterCtrl4);
- xml.intTag(level, "waveTracksVisible", MusECore::WaveTrack::visible());
- xml.intTag(level, "auxTracksVisible", MusECore::AudioAux::visible());
- xml.intTag(level, "groupTracksVisible", MusECore::AudioGroup::visible());
- xml.intTag(level, "midiTracksVisible", MusECore::MidiTrack::visible());
- xml.intTag(level, "inputTracksVisible", MusECore::AudioInput::visible());
- xml.intTag(level, "outputTracksVisible", MusECore::AudioOutput::visible());
- xml.intTag(level, "synthTracksVisible", MusECore::SynthI::visible());
- // Removed by Tim. p3.3.6
-
//xml.intTag(level, "txDeviceId", txDeviceId);
//xml.intTag(level, "rxDeviceId", rxDeviceId);
- // Changed by Tim. p3.3.6
-
//xml.intTag(level, "txSyncPort", txSyncPort);
/*
// To keep old muse versions happy...
@@ -1467,8 +1479,6 @@ void MusE::writeConfiguration(int level, MusECore::Xml& xml) const
}
*/
- // Added by Tim. p3.3.6
-
//xml.tag(level++, "midiSyncInfo");
//for(iMusECore::MidiDevice id = MusECore::MusEGlobal::midiDevices.begin(); id != MusECore::MusEGlobal::midiDevices.end(); ++id)
//{
@@ -1496,8 +1506,6 @@ void MusE::writeConfiguration(int level, MusECore::Xml& xml) const
xml.intTag(level, "bigtimeVisible", viewBigtimeAction->isChecked());
xml.intTag(level, "transportVisible", viewTransportAction->isChecked());
- //xml.intTag(level, "markerVisible", viewMarkerAction->isChecked()); // Obsolete (done by song's toplevel list)
- //xml.intTag(level, "mixerVisible", menuView->isItemChecked(aid1)); // Obsolete
xml.geometryTag(level, "geometryMain", this); // FINDME: maybe remove this? do we want
// the main win to jump around when loading?
@@ -1506,18 +1514,13 @@ void MusE::writeConfiguration(int level, MusECore::Xml& xml) const
if (bigtime)
xml.geometryTag(level, "geometryBigTime", bigtime);
- //if (audioMixer)
- // xml.geometryTag(level, "geometryMixer", audioMixer); // Obsolete
xml.intTag(level, "mixer1Visible", viewMixerAAction->isChecked());
xml.intTag(level, "mixer2Visible", viewMixerBAction->isChecked());
if (mixer1)
- //mixer1->write(level, xml, "mixer1");
mixer1->write(level, xml);
if (mixer2)
- //mixer2->write(level, xml, "mixer2");
mixer2->write(level, xml);
- //_arranger->writeStatus(level, xml); // Obsolete. done by song's toplevel list. arrangerview also handles arranger.
writeSeqConfiguration(level, xml, true);
MusEGui::write_function_dialog_config(level, xml);
@@ -1658,18 +1661,12 @@ namespace MusEGlobal {
// write
//---------------------------------------------------------
-//void MixerConfig::write(MusECore::Xml& xml, const char* name)
void MixerConfig::write(int level, MusECore::Xml& xml)
-//void MixerConfig::write(int level, MusECore::Xml& xml, const char* name)
{
- //xml.stag(QString(name));
- //xml.tag(level++, name.toLatin1().constData());
xml.tag(level++, "Mixer");
- //xml.tag(level++, name);
-
+
xml.strTag(level, "name", name);
- //xml.tag("geometry", geometry);
xml.qrectTag(level, "geometry", geometry);
xml.intTag(level, "showMidiTracks", showMidiTracks);
@@ -1682,19 +1679,14 @@ void MixerConfig::write(int level, MusECore::Xml& xml)
xml.intTag(level, "showAuxTracks", showAuxTracks);
xml.intTag(level, "showSyntiTracks", showSyntiTracks);
- //xml.etag(name);
- //xml.etag(level, name.toLatin1().constData());
xml.etag(level, "Mixer");
- //xml.etag(level, name);
}
//---------------------------------------------------------
// read
//---------------------------------------------------------
-//void MixerConfig::read(QDomNode node)
void MixerConfig::read(MusECore::Xml& xml)
-//void MixerConfig::read(MusECore::Xml& xml, const QString& name)
{
for (;;) {
MusECore::Xml::Token token(xml.parse());