Simple Multitrack 0.6.5
Simple Multitrack contains a set of programs that allows the simultaneous recording of an audio track.
This software uses the OSS audio drivers found in the Linux kernel or the
CoreAudio API on Mac OS X. It has been tested on
Linux 2.4.20 on a Pentium III 1.4GHz with a SBLive soundcard, and
Linux 2.4.20 on a Pentium I 120MHz laptop with a Crystal soundcard.
Mac OS 10.3.3 on a PowerBook G4.
Both Linux machines are running Slackware, so please tell me about your successes or problems on other distros.
Please read the BUGS section of this document. If you have bug reports, bug fixes, questions, comments, criticism, improvements, or documentation corrections please e-mail me.
This will compile the programs and put them in your path.
It will also make your shell prompt shorter, so you have room.
It will also define a little function that is explained below.
to record initial track:
srp < /dev/zero > my_file
to listen to a track:
mix 2 1 1 1 my_file | srp > /dev/null
to listen to one track while recording a new track:
mix 2 1 1 1 file_1 | srp > file_2
to listen to two tracks while recording a new track:
mix 2 1 .5 .5 file_1 .5 .5 file_2 | srp > file_3
Simple Multitrack is basically two programs. They were designed to be used together, but they might be useful on their own. I will describe each program separately before discussing them together.
mix is a command line program. It mixes one or more monophonic audio files into a single output stream. The output stream can have any number of channels: mono, stereo, quad, whatever you like. The output stream is written to standard out.
The input files are specified as command line arguments, as are the gain settings for each input. Invocation goes like this (in stereo mode):
mix nocs mgain l_gain_1 r_gain_1 file_1 l_gain_2 r_gain_2 file_2 ...
where nocs is the number of output channels, and mgain is the master gain.
Command line arguments to mix after the nocs and mgain arguments are the channels. For N output channels, you will have N gain arguments and then the name of the file. Therefore, the arguments after nocs and mgain must appear in (nocs+1)-tuples.
mix will continue to pump out an endless stream of silence after the end of the input files is reached. This behavior is different from most UNIX command line programs, which exit at the end of their input data, which closes their stdout.
mix can be exited with the keyboard interrupt, ctrl-c. The input files must be 16-bit 44100 samples/sec monophonic raw signed word files. The output stream is in 16-bit 44100 samples/sec stereo raw signed word format. (Thank God, it's in word format!) The program sox can be used to convert from most audio formats to and from most other audio formats.
mix 2 1 0 1 my_file
This pans my_file completely to the right.
mix 2 1 1 1 my_file
This centers my_file.
mix 2 .5 1 0 flute 0 1 viola
This puts the flute completely to the left and viola completely to the right.
The master_gain is set to .5 to reduce the overall level of the mix by 3dB.
mix 2 .5 1 .3 flute .2 .9 viola
This is similar but gentler.
mix 2 .5 2 .6 flute .2 .9 viola
This is the same but the flute is louder.
mix 2 1 2 .6 flute .2 .9 viola .3 .3 violin
The violin is added in the center.
Note: If you get clipping errors when using mix, you can lower the mgain factor instead of adjusting all of the individual channel gains, although that works too.
srp is a command line program. It enables simultaneous recording and playback of audio using a sound card. It will only work if your sound card and its driver support full-duplex operation correctly.
srp reads a stream of stereo 16-bit 44100 samples/sec raw signed word data on standard in and plays that stream out on the soundcard. Meanwhile, it reads from the left channel of the soundcard and writes a mono 16-bit 44100 samp/sec stream on standard out.