2011-10-21: 0.5 is probably the last release.


Songs is a little tool used to record and mix audio files.

Here is a picture of it in action with the famous fvwm window manager. (click to enlarge, huge image, 1280x1024).

A desktop of Songs in action.

Songs works under Linux, for little endian machines (it may work with big endian ones, but some features may not work). It uses gtk 2.0. The sound is handled using OSS.

Songs is a hacker tool. The 0.1 version was born in a little more than two weeks of hard coding. Its main and ultimate goal is to help me making music. If other people find it useful, that's perfect, let them use it. If no, well, I'll still use and enjoy it.

Songs is released in the public domain, because freedom has no licence.


One important motivation for Songs was the need of a recording tool under Linux. There are some already existing (see the links below), but these are too complex, too huge, eat too much memory and resources. Small machines can be used to record and mix audio files, even with a graphical interface. Songs is trying to prove it.

The recording is done directly to disk, so that with small machines, having not too much memory, you still can do some recording.

There is a full duplex mode, but full duplex is not very well handled with OSS. You don't really know if your two streams of samples are synchronized or not, and the interface provided by OSS does not help much with that. So, currently, take the full duplex mode as is. You probably will need to move by hand audio tracks to let them be synchronized.

Graphical interface

Another motivation was the need for an easy to use graphical interface. With command line oriented tools (mainly your own, very easy to code and run, but limited in what the user can do), every task takes a lot of time and is subject to errors of manipulation, leading to destruction of data (how many time did I lost a track by overwriting it with a new recorded one?). A graphical interface lets you click here and there and do the magic tricks behind, saving the user time and not destroying everything if she does something wrong by mistake. A graphical interface abstracts a lot of things. You now can do what you want, which is to mix, add effects, think about your music.

Features of Songs

For the moment, Songs is a beta software. It has not been hardly tested, and may behave in a strange way or even crash. Any strange behavior should be reported to the programmers, for future versions to be more stable. Any missing feature should be reported, so that it can be added too. Anyone who wants to join the project is welcome.

Known bugs

About low latency

Songs is not, and will never be, a realtime tool. You can change settings in a "live" fashion, but your goal should be to adjust parameters for the whole duration of a mix, not for a short effect. So, it is perfectly correct for the change to come let's say 250 ms after you asked for it, which is far from a 4 to 6 ms people want for realtime.

If you need a realtime tool, give a try to Ardour (see the links).

Download, install

First, download it. (Ah, 0.4 has never been released as it seems...)

Then, put it in some of your directories, and do tar -xvzf songs-0.3.tar.gz, then go in the songs-0.3 directory and do make, then copy the file songs where you want.

If you have troubles with the installation process, contact me.

To use the program, run songs (on a command line, or by clicking on it with your favorite graphical interface).

Inside Songs

Here is a very basic documentation.

Loading a file

The first step in Songs is to load a new file. To do it, go in the menu Tool and select New track. Then, choose your file. It will be loaded into Songs (one or two tracks, depending if the file is a mono or a stereo file). Only WAV files are currently supported, so using Songs with an mp3 or an ogg file is a bad idea (you still can, but you won't hear what you expect).

Repeat the process, loading all the audio files you want to mix together.

The next step is to apply effects, put the audio data in the right place, select what you want to hear, etc.

Applying effects

Moving audio data

One first thing is to place the audio data relative to the rest of the mix. You can do it using your mouse. Click on the Move button, then go on the track view. You will see a new cursor. Click an audio track, and go left/right with the button of the mouse still clicked. You will then see the track move. (Note that if you have only one track, you won't see any move, even if the time start and end do change. Load another file to see it.)

Selecting parts of an audio track

One common need is to remove some part of an audio file. The most important case is with the beginning and ending of the file. With Songs, you can select some part of an audio track to become silent. Click the Left and Right buttons, then click on a audio track and see what happens. The grey data won't be played.

How to use it to remove various part of an audio file? Simply load the file several times in Songs, and for each track, select a part you want to hear. The final mix will only play the selected parts. (You will say it would be much simpler to have a multiple selection tool. You are right, in a way. But wrong, in another way. Because a multiple selection tool is something tricky to code and to learn. With a very simple tool like the selector available in Songs, the code is much simpler and the user has to learn fewer things.)

Rendering audio data

Then, one wants to control the left/right panning of a track, its volume, its harmonical color, etc.

To control this, click the menu Tool, then select Effects. A new window will appear, from where you can control the effects you want to apply to a track.

You first can control effects for the global mix, like the global volume (gain) or global panning.

Then you can control each track, and set its gain, panning, position in time, etc.

The current version of Songs only supports gain, panning, position and compressor. Future releases will include other effects.

To understand how the effects work, look the effects window. In the bottom is the input (the audio file), then, while it goes up, in passes through various effects (like position, panning, gain, compressor), which modify the sound. You can control the parameters of each effect by clicking the "view" button. A settings window will appear, which will let you set the value you want.

The "position" effect is the one you can control with the mouse and the Move, Left and Right buttons we mentionned earlier.

You can bypass an effect, and you can change the order in which they will be applied to the audio sound. The "position" effect cannot be bypassed and cannot be moved, though. Of course, you can delete effects too (once again, except the "position" one).

All the effects can be changed while you play the mix. You have a mix preview window available through Tool and Mix preview in the menu, which can help you detect when there is an overload. An overload is when the audio data is too heavy and is distorted when played back to a 16 bits device (like your soundcard or if you plan to burn your songs into an audio digital compact disk). It will be notified by a red color.

Songs is not realtime, and is not supposed to be so. If you modify a parameter while playing, the change will come a bit later in time. The goal of Songs is to create a mix, not to play live with your audio files.

The effects

Here comes a description of the available effects, and how to use them.


Position is not really an effect. It just gives you the control over a track, to decide where to start it in time, where to end it, and what part of the audio file to play (you can remove some of the beginning and/or some of the ending of it; usefull when you record, because you may get garbage at the begin/end of the audio).


Gain let's you control the volume of a track. You have to adjust the volume of all your tracks to get a nice mix, with all tracks sounding together, and not having one much louder than the others. How to achieve this perfectly is a matter of taste and time spent in the mixing business. It's not very easy at first.


Panning let's you control where in the left/right balance to put a track. Most of the time, when I record, I do two tracks for a rock guitar, one put to the left, the other one to the right, to get a rich sound, that fills your ears. Some people do the same for human voices. It's a matter of taste.


A compressor is an effect that minimize the volume variations of a track. You can control how much minimization you want (the ratio control, the bigger, the more minimization), and when to start it (the threshold control). A sound which will have more power than the threshold will be minimized. Because your ear might notice this and feel uncomfortable with it, you have to adjust the time it takes for the compressor to reach its compression level (attack), and the time it takes for it to release it to a normal level (release). I don't know what the knee control is, it was in the original code of the compressor, so I let it there. I use a value of 1, and I am happy with it. When you compress a sound, you will reduce its volume, so you may want to use the last control (makeup gain) to increase it.

I mostly use a compressor for my voice, which variates a lot in time. I sometimes move a lot in front of the microphone. And as I am not a professional singer, I sometimes sings loud and sometimes not that loud, so the recorded data is not continuous, it's not pleasing to hear. So I put a compressor with a low threshold (-20 to -30dB) and a huge ratio (10 or very close to it). I use a small attack (2ms) and a huge release (600 to 800ms). I put some makeup gain too, for the volume to be OK with the rest of the mix.

I use some compression for the global mix, let's say a ratio of 2 and a not too low threshold (-10 to -20dB), but I am not really sure if it is usefull or not. Some people put some compression over guitars and drums too.

Dig the web for more information on the compression business. It's probably a little more complicated than the way I use it.


When you make music, you may want to record yourself. Sometimes, you play some guitar, then sing, then add some other guitar, etc. You could simply record all these differents parts separately and then mix them. Songs can let you do this.

But you might want to have some feedback, and listen to a previous recorded track, so that you feel better with the new one, and they fit better together later in the mix. Songs lets you do that too (if your audio soundcard supports full duplex).

Click on the record button (or launch it from the menu), and you will see the record window.

Adjusting the input level

When you record, the first step is to adjust the input level of your soundcard. Use your favorite mixer program to do it. In the recorder, you have a little utility (the Adjust level input button) which lets you see how loud is the data that comes to the soundcard. It is highly recommended to have as much loudness as possible (without having distortion) to reduce the noise.

After you adjusted your input level, you are ready to record. Select the starting point (from an absolute sample or from a mark) and click the Go button. When you are done, stop everything and click OK. A new track will be created and your audio data will have been saved on disk. The recorder directly writes data to the disk, so that you can record long stuff with no memory limitation. But you have to have enough free disk space. Songs cannot use more disk space than available.

Currently, you only can record mono data. If you want stereo, or if you have a multiple input audio card, and would like to use Songs to record with it, contact the authors. If they can add support for it (if they have time and skill), they will do it.


Most of the time, you need to know what part of your mix means what. Songs has marks to help you doing it.

The most simple way to create a mark is to click the button Mark then to click in the track window at the position you want to put a new mark. A window will appear asking you a name for the mark. After what, in the mark window, above the track window, you will see a little button representing the mark.

You can click this button to move it left or right.

On the left of the mark window, you have the list of your marks. You can select one, and then press the Go to button to go to this mark (very useful with huge mixes). You of course can edit the mark to modify its name and position. And you can delete it too.

Marks are used in the recorder too. So if you want to start to record from a particular place of your mix, create a mark at that place, then launch the recorder and start the record from this mark. This is especially useful when recording in full duplex mode.

Full duplex mode is not accurate, due to OSS limitations (or bad skills from the authors) as explained above.

Saving your work

When the day finishes, you may not be over with your mixing job. And you want to save your work. Songs, of course, lets you do it.

As it is a beta software, it is suggested that you save your work as often as possible. You can do it very simply, by using the keyboard shortcut CONTROL+S.

The file format is very simple, and you can edit it by hand, if something goes wrong. (Note: here should come a description of the file format.)

And when you are done with your mix, that all the tracks are well positionned the ones relatively to the others, that their volume/panning/etc. is correct, that the overall settings is done, you can save your mix into an audio file.

Currently, only WAV files are supported, and raw float files. Raw float files can be used to save resources. Audio mixing takes a lot of resources. The manipulated data are huge, and you may run out of cpu or your harddisk may be too slow to let you hear your mix live. By dumping to a float file your current work (the part of it which won't change because all the settings are perfect), and using this float file instead of the various files you used before, you can save cpu and harddisk bandwidth. You can keep your tracks if you want to modify something in them later in time. Simply click the "mute" toggle, and the mixer won't take them into account.

A lot of audio applications for linux, a good start if you plan to do some audio with linux.

Ardour is conceptually close to Songs. It has much more features, and is probably much more professional than Songs. My problem with it is that it is too huge. (But you should give it a try, really.)

A nice audio manipulation application.



Minijack is a little tool to use songs with guitarix, without jack.

Probably useless for anyone but me, but there it is.


How to use?

Let me show you an example session:

/tmp/ex> mknod command p
/tmp/ex> mknod data p
/tmp/ex> tar xf ~/backup/songs/songs-0.5.tar.gz
/tmp/ex> cd songs-0.5/
/tmp/ex/songs-0.5> make
/tmp/ex/songs-0.5> cd ..
/tmp/ex> tar xf ~/backup/songs/minijack-0.1.tar.gz
/tmp/ex> cd minijack-0.1/
/tmp/ex/minijack-0.1> make
/tmp/ex/minijack-0.1> cd ..
/tmp/ex> export SONGS_DATA=/tmp/ex/data
/tmp/ex> export SONGS_COMMAND=/tmp/ex/command
/tmp/ex> songs-0.5/songs -data /tmp/ex/data -command /tmp/ex/command &
/tmp/ex> LD_LIBRARY_PATH=/tmp/ex/minijack-0.1 ~/guitarx/bin/gx_head

Guitarix must be modified. Dig for "Convproc::configure" and change the last parameter to be equal to the one before it. If you don't do that and if there is a delay in your system, guitarix may stop the "cabinet" processing and your sound will change. I am using guitarix 0.14.0. Maybe all works fine with a newer guitarix. (Thanks fly to Fons Adriaensen for the fix.)

You click in the minijack window to start/stop the record/playback. And you delete the audio track or import it in songs after that. Two files are created if you accept the track: processed one (imported in songs) and unprocessed one, to be used as you wish. When accepting the track you will see that it is automatically imported into songs. The audio files are named "gx-head-xxxxx.raw" (processed) and "hx-head-xxxxx.raw" (unprocessed) with "xxxxx" an increasing number at each take.

Note that the playback and recording are done with very specific settings. You must edit the source code if the settings don't work for you.

Well, it's just a hack...



How to use?

To play an audio file into guitarix, still without jack.


export MINIPLAY=/file/to/play.raw

Then run guitarix (with LD_LIBRARY_PATH set as necessary).

And the file will be played. It must be a raw file, containing float audio. Result saved in a file "gx-head-replay-xxxxx.raw" with "xxxxx" an increasing number at each take.

I made it so I could reprocess the guitar tracks I recorded with minijack later in time, still with guitarix and still without jack.

(Same remark as for minijack for the settings.)


Creation time: Tue, 6 Jan 2004 20:49:22 +0100
Last update: Fri, 21 Oct 2011 11:25:01 +0200

Powered by a human brain, best viewed with your eyes (or your fingers if you are blind).