The development of GNU Solfege has moved to Savannah because tca@gnu.org (main author) is stepping down as the only maintainer of the program. Please contact maintainers@gnu.org if you want to take over the job.

Sound setup

Most of GNU Solfeges exercises will create the music to play note by note, and feed it to a module that can play the music. That module can either play the music using the ALSA/OSS/Windows sequencer if available or save the music as a MIDI file and let another program play the file. The latter is the default in Solfege 3.20.0 and later

In addition, exercises can be written that will play MIDI/WAV/OGG/MP3 files. For these exercises to work, you must tell Solfege which programs to use to play these files. This can be set in the preferences window, available on the File menu. You will get a dialog telling you if Solfege need one of the player programs but cannot find then.

Minimal GNU/Linux setup

If you run Solfege on a GNU/Linux distro and have problems gettings sound, the easiest way to get sound is as follows:

  • install timidity and verify that you can play and hear MIDI files:

    $ timidity somefile.midi
    
  • set the path to the program in the External Programs sections of the Preferences window

  • select Use external MIDI player on the Sound Setup section of the Preferences window

Timidity as an ALSA software sequencer

If you are running GNU/Linux and your timidity program has been compiled with ALSA support, you can set up timidity as an ALSA sequencer client:

$ timidity -iA

-iA is the command line option that make timidity an ALSA synth. Solfege can then write directly to the ALSA sequencer even if your soundcard is missing a hardware synth. If your linux distro don't include the required pyalsa modules, you can make Solfege download and build the modules. Select Download and compile ALSA modules from the Help menu.

Software synths on MS Windows

This document states that MS Windows XP Pro has a software synth included. What about other versions of MS Windows?

Anyway, if you get no sound selecting ''Windows multimedia output'' on the ''MIDI setup'' page of the preferences window, you should install timidity (as described in the download page and select ''Use external MIDI player''.

Using a OSS device file

Solfege can write directly to /dev/music (aka /dev/sequencer2) or /dev/sequencer if your computer is set up to use the OSS sound system insteas of ALSA. If you try to do this but get no sound and no error messages, it is possible that you have to load some data onto the sound card. If you own a card that use the awe32 driver, for example SoundBlaster Live, you have to use sfxload to load a SoundFont file:

$ sfxload 8mbgmsfx.sf2

There might be other sound cards that require a similar setup, but I don't know.

Improve timidity sound quality

People have different opinions on sound quality, and it also depends on the sound chip and speakers of your computer. One user say these options work fine when he had problems with scratchy sound in poliphonic passages:

/usr/bin/timidity -idq -p 5 -Os %s

Others have suggested this:

/usr/bin/timidity -B2,8 -Os -EFreverb=0

Using Solfege with software Samplers

Why software samplers

Software samplers such as LinuxSampler (linux) and GigaStudio, Kontakt, Halion (Windows) play MIDI signals using recorded sounds. This allows your PC to sound as close as possible to a real instrument.

GNU/Linux: LinuxSampler for .gig gigastudio files (using JACK audio connection kit)

Note: the following procedure describes my setup. I use JACK, so the instructions include it, but I don't know if it is required, there might be a way to use linuxsampler without JACK, I don't know. What follows is simply what worked for me.

  1. If you don't have jack already, install jack and qjackctl, a gui for controlling jack. Start qjackctl and press start button to start jack server. There is an option to start jack server automatically on startup of qjackctl, you may want to use it.

  2. Install linuxsampler and qsampler. You may want to use your distro's package manager to install packages specifically made for your distro, if available; or you can compile from source and install yourself - check http://www.linuxsampler.org. Launch qsampler. Qsampler is a control interface for linuxsampler, so you have to either start linuxsampler first, or select within qsampler the option to "start server locally" in the options dialogue, or you can specify -s option in commandline to launch linuxsampler automatically on qsampler startup. Within qsampler you have to load a .gig instrument bank and choose to use jack as output. linuxsampler doesn't connect by default to alsa output, so you should go to qjackctl, press "connect" button an within the "Audio" tab connect the linuxsampler readable client to the alsa_pcm writable client.

  3. Install pmidi, a midi file player. Or try aplaymidi if you have problems with pmidi. http://www.parabola.demon.co.uk/alsa/pmidi.html

  4. In solfege, go to File > Preferences > Sound Setup and select "use external midiplayer" option. Type /usr/bin/pmidi -p 129:0 %s in the midi file player box. This command tells Solfege to send output as a midi file to pmidi, which reads the midi file and sends midi data to linuxsampler (listening on alsa port 129:0 by default, as far as I know). Linuxsampler will then play the file. You need to make sure that you have an instrument loaded in linuxsampler, and that linuxsampler is connected to alsa_pcm for output, as said in step 2.

    Press "apply changes and play test sound"...

GNU/Linux: qsynth for Soundfont files (using JACK and alsa midi)

qsynth is a front-end for fluidsynth, a software synthesiser based on the Soundfont specification. It can use alsa-seq as the MIDI driver and jack for audio. It can be used as an alternative to timidity when we want to use jack as our main sound server and linuxsampler+qsampler+gig files sounds overkilling.

  1. Make sure you have jack and qjackctl (see above).

  2. Install qsynth from your distro's package manager (recommended for end users, I am almost sure that any modern distro will have a functional qsynth package) or compile it and install it yourself following instructions in http://qsynth.sourceforge.net. Launch qjackctl and qsynth. In the audio tab of qsynth setup check that jack is the audio server and in the MIDI tab that you have alsa-seq for MIDI and that MIDI input is enabled. In the Soundfonts tab, load (open) a soundfont you may have in your disk or get a nice one. In the connect window of qjackctl, audio tab, make sure you have connections from the qsynth output to the system:playbacks.

  3. Install pmidi (see 3) above), and type in a terminal:

    $ pmidi -l
    

    to see the midi devices. You might see something like:

    Port      Client name         Port name
    14:0      Midi Through        Midi Through Port-0
    128:0     Client-128          qjackctl
    129:0     FLUID Synth (18119) Synth input port (18119:0)
    

    You can also check the ALSA (midi) tab of qjackctl to see the client and port numbers. Note that in recent versions there are three tabs, audio and two more, both related to midi: ALSA means 'alsa midi' and MIDI means 'jack midi'. Jack midi is not (at least currently) used by qsynth nor pmidi.

    Here FluidSynth is client 129, port 0. If you have a *.mid file handy, you can check the sound by typing in the terminal:

    pmidi -p 129:0 /path/to/foo.mid
    
  4. In solfege, go to File > Preferences > Sound Setup and select "use external midiplayer" option. Type /usr/bin/pmidi -p 129:0 %s in the midi file player box. This command tells Solfege to send output as a midi file to pmidi, which reads the midi file and sends midi data to fluidsynth (listening on alsa port 129:0). You can change the instrument from solfege itself.

MS-Windows

I have succesfully tried the config below. The same idea should work for most software synths / samplers out there.

  1. In Solfege: Edit > Preferences > Midi Setup, select 'windows multimedia output, synth number' and set the number to 1.
  2. Use a sequencer (I used Cubase SX 2) to receive the midi signal: add a midi track and set the input to MIDI IN, the output to the sampler (I used KONTAKT 2 as a VST insrument)
  3. Load the instrument into the sampler and enjoy!!!

Troubleshooting

Errors

ALSA lib pcm_hw.c:1172:(snd_pcm_hw_open) open /dev/snd/pcmC0D0p failed: Device or resource busy
ALSA lib pcm_dmix.c:868:(snd_pcm_dmix_open) unable to open slave
Can't open pcm device 'default'.
Couldn't open ALSA pcm device (`s')

If you see a message similar to the above one, it is possible that you have esd running using the OSS emulation module. You should run a version of esd that has native ALSA drivers. On Debian you should install the package libesd-alsa0 instead of libesd0.

pmidi and timidity

The combination pmidi as an external midi player and timidity as a software synth is not working on my Amilo 7400 laptop. The music is playing, but the rhythm is wrong. (Tom Cato)

No sound on MS Windows

One user had a problem that she solved herself:

I found the solution to the complete silence. Very simple. The volume control for SW Synth had somehow got set to 0. Since Wave and Master volume were OK, it seemed like the sound system was working. This was easily corrected by adjusting the SW Synth volume.

Troubleshooting sound on GNU/Linux

I think the most common question asked on the mailing list is what to do when there is no sound. This page tries to give people a list of things to check to find out what the real problem is. Often, but not always, the problem is your sound setup and not Solfege.

Some urls that might help:

Right now, there are not many 'solutions' on this page. But this list should give you an idea what to look for.

Can you play .wav files? Try to run:

$ aplay somewavfile.wav

or:

$ esdplay somewavfile.wav

Any program that can play .wav files will do.

You have to get this to work. Check that the sound card is not muted and the volume is turned up (alsamixer). There are many other controls in alsamixer, for example PCM, that you also have to check. Check also that you have plugged in the speaker cable at the correct place. :-)

If this works, the next step is to get timidity to work. Find a MIDI file and try to play it:

$ timidity somefile.mid

If this works, you can select "timidity %s" to be used as an external midi player on the Sound page of the Preferences window.

If this gives no sound, but you can play .wav files, there is something wrong with you timidity setup. /etc/timidity.conf needs to point to the patch files. And not every GNU/Linux distro sets this up correctly. Please read the timidity docs or search on http://www.google.com.

In Debian (and possibly other distro's) installing freepats (apt-get install freepats) automagically takes care of the timidity configuration.

This sounds pretty horrible though, the standard freepats are of very low quality compared to the free soundfonts you can use with timidity. A working config using a free high quality steinway piano sf looks like this:

opt -s 44100
opt -EFchorus=d
opt -EFresamp=g
opt -EFreverb=f
opt -EFvlpf=c
opt --no-anti-alias
soundfont /home/username/soundfonts/WST25FStein_00Sep22.SF2

User comments

Posted by Mike on Aug. 22, 2011, 10:40 a.m.

New user of GNU solfege, excellent program! However, I don't seem to get Timidity working for the 'Harmonic Progressions' - exercises. Although I tried to enter several paths via Ctrl-12, I keep receiving the error message that GNU can't find the Timidity path.
Any suggestions? Screen shots available.

Posted by Tom Cato on Aug. 22, 2011, 3:04 p.m.

Send an email to solfege-devel@lists.sourceforge.net, and say where you have installed Solfege, timidity and what you enter about timidity in the preferences window, and I'll help you.

Add your own comment