Page 1 of 1
Posted: 06-29-11 6:21 am
by jayl
Hello, since linux isn't officially supported I decided to not file this under bug reports.

Synthesia initially worked perfectly for me with wine 1.2 under ubuntu 11.04 after I followed some of the suggestions from the wiki page. I noticed an issue though after I decided to try to change some settings and enter my learning pack key. After each program close, all of my configuration settings are lost and I'm asked to re-enter my key again. Is anyone aware of a workaround for this issue? It's not too terrible but it's just a bit annoying.

Also, I don't know if how many times a key is used is tracked at all, but if it is, I'd just like the developer to be aware that at least in my case I have a legitimate reason for continuously re-entering my key.

Posted: 06-29-11 7:04 am
by kickininthefrontsea
can't help sorry, just adding info,
my key is retained
some config settings aren't, eg bookmarks, however a lot are

Posted: 06-29-11 7:15 pm
by Nicholas
kickininthefrontsea wrote:some config settings aren't, eg bookmarks, however a lot are
I'm surprised by this. Everything uses the exact same code to write the same type of XML files in the same location. If one works, they should all work. How strange.

Posted: 06-29-11 11:28 pm
by jayl
Nicholas wrote:
kickininthefrontsea wrote:some config settings aren't, eg bookmarks, however a lot are
I'm surprised by this. Everything uses the exact same code to write the same type of XML files in the same location. If one works, they should all work. How strange.
Hey Nicholas, thanks for this info. So here's what I've managed to figure out so far. The Synthesia Configuration program did not work, but the values in it and your info helped me figure out what I needed to do. It seems like, at least in my case, Synthesia does not have a problem with reading these xml files, but for whatever reason there's some problem with saving values to them under wine?

Here's the run down for anyone having the same issue.

Go browse wine's "C:\" file system, and head over to "C:\users\YOURUSERNAME\Application Data\Synthesia". You can edit the xml files in here using your favourite text editor.

Open up settings.xml and add <setting key="System.UnlockKey">YOURKEYGOESHERE</setting>

Synthesia is no longer asking me for a key every time I start up. For the bookmarks, I was able to edit this by opening up folders.xml. It seems like the format is something like this: <Folder version="1" path="C:\stuff\goodmusic\blahblah" recursive="0" />

Edit the value of recursive to 1 for ON, and 0 for OFF. The path is to whatever directory you want to keep bookmarked and you can add more than one of these lines. If its on it will search the subdirectories within the place you specific, if it's off it won't.

My folders.xml file looks like this:

Code: Select all

<WatchedFolderList version="1" addDefaultFolders="0">
  <Folder version="1" path="C:\users\jay\Desktop\" recursive="0" />
  <Folder version="1" path="C:\users\jay\My Documents\" recursive="0" />
  <Folder version="1" path="C:\users\jay\My Music\" recursive="1" />
</WatchedFolderList>
Many of the settings available can be figured out by looking at the configuration program's names. These can be added to settings.xml

Here are examples from what I chose. What your particular case needs may differ.

Code: Select all

<setting key="Graphics.Renderer">opengl</setting>
<setting key="Graphics.Particles">0</setting>
<setting key="Midi.BankSelectFix">0</setting>
<setting key="Midi.AllowSysEx">0</setting>
<setting key="Midi.DiscardUnclosed">1</setting>
<setting key="Midi.InputDevice">YOURDEVICE</setting>
<setting key="Midi.OutputDevice">YOURDEVICE</setting>
For midi input and output, just select your keyboard's name as it appears when Synthesia is opened up. In my case it was "CASIO USB-MIDI MIDI 1". My experience was much more pleasant after all of this.

The only settings I wanted to change, but couldn't figure out, were for setting the highest and lowest notes on the keyboard and changing the default behaivor when a note is out of range.

I imagine it's something related to Keyboard.RangeMode / Keyboard.RangeLow / Keyboard.RangeHigh, but I don't know what kind of values are expected.

I couldn't find any documentation about these values, could you perhaps explain how to set them through the xml files Nicholas?

Posted: 06-30-11 1:05 am
by Nicholas
Wow, you figured out a lot on your own. If you had a Windows machine laying around someplace, that probably would have been an easier process. Sorry for all the trouble.

Regarding the device boundaries, try the latest 0.8.2 preview. I just dropped the global keyboard range in favor of a new devices.xml file where you can set those options per-device:

Code: Select all

<DeviceInfoList version="1">
  <InputDevice version="1" name="USB MIDI keyboard" lower-bound="20" upper-bound="56" />
  <InputDevice version="1" name="Synthesia Software Keyboard" />
  <InputDevice version="1" name="E-MU XMidi1X1" />
  <OutputDevice version="1" name="Microsoft GS Wavetable Synth" />
  <OutputDevice version="1" name="BASSMIDI Driver" />
  <OutputDevice version="1" name="USB MIDI keyboard" />
  <OutputDevice version="1" name="[no output device]" />
  <OutputDevice version="1" name="E-MU XMidi1X1" lighted-key-mode="1" />
</DeviceInfoList>
lower-bound and upper-bound are both zero-based, where 0 is A0 (the lowest note on an 88-key keyboard) and 87 is C8 or whatever is the highest note.

lighted-key-mode maps to an enumeration, ordered the same as it is on the sub-keyboard-setup screen. (Also zero-based.)

Ordering in the list is significant (though Input/Output can be mixed freely) and the active device picked will be the first found. This is so if you start Synthesia up when a device is missing, it will no longer forget all about that device the next time it's present.

As you can imagine, devices.xml has obsoleted the following lines from settings.xml:
  • Keyboard.RangeLow
  • Keyboard.RangeHigh
  • Keyboard.LightedKeyMode
  • Midi.InputDevice
  • Midi.OutputDevice

Posted: 06-30-11 2:13 am
by jayl
Nicholas wrote:Wow, you figured out a lot on your own. If you had a Windows machine laying around someplace, that probably would have been an easier process. Sorry for all the trouble.

Regarding the device boundaries, try the latest 0.8.2 preview. I just dropped the global keyboard range in favor of a new devices.xml file where you can set those options per-device:
Thanks Nicholas, I just gave that a try and everything seems to be working perfectly now. :)

For anyone else who follows along on this thread, I'll go through what I did. I got a copy of 0.8.2 and then I removed the following lines from settings.xml that I showed in my previous post:

Code: Select all

<setting key="Midi.InputDevice">YOURDEVICE</setting>
<setting key="Midi.OutputDevice">YOURDEVICE</setting>
Then I added the file devices.xml and wrote in:

Code: Select all

<DeviceInfoList version="1">
  <InputDevice version="1" name="CASIO USB-MIDI MIDI 1" lower-bound="15" upper-bound="75" />
  <OutputDevice version="1" name="CASIO USB-MIDI MIDI 1" />
</DeviceInfoList>
I obtained the lower-bound and upper-bound values from experimentation. (1. Set values, 2. Open up synthesia, then "Keyboard Setup", then "Change keyboard size and settings" 3. Check if everything looks good, if not 4. Close synthesia and repeat!)

Then I popped open "Sonatina in C" and happily played through a few times. ;)

Posted: 12-25-12 7:30 pm
by viorels
It may be too late but I've also had this problem and I've noticed that switching video settings from DirectX to OpenGL allows Synthesia to save the settings. For some people changing video settings the other way around worked though. Not sure how settings saving and video output are related, maybe Nicholas can tell us more about it, but it may help ...

Posted: 05-07-13 3:41 pm
by Nicholas
viorels wrote:Not sure how settings saving and video output are related, maybe Nicholas can tell us more about it...
Well, the run loops for each renderer are a little different and the settings are saved after each terminates. All I can think is that one isn't shutting down cleanly so the setting-saving code is never getting called. Why it's not shutting down cleanly, I'm not sure.