Linux Issues

From Audacity Wiki
Revision as of 11:24, 17 July 2006 by Mathiasf (talk | contribs) (OSS vs ALSA)
Jump to: navigation, search

Error Opening Sound Device

  • If you get an error like this "Error Initializing Audio: There was an error initializing the audio i/o layer. You will not be able to play or record audio. Error: Host error." then audacity cannot access your sound card. Audacity cannot use the audio i/o layer when it is in use by another application. If you are using Gnome, KDE or another window manager, be sure to disable the system sounds before starting Audacity.
    • If this still happens when nothing else is using audacity then you may have a sample rate selected that your card does not support. You can alter this by changing the Project Rate at the bottom left of the screen.
    • Another possibility is that somehow, the link to /dev/dsp, or its permissions, were changed without your knowledge by an unknown process. What you should do (as root) is:
       $ rm /dev/dsp;ln -s /dev/dsp0 /dev/dsp  #also try /dev/dsp1,2,etc.
       $ chmod 666 /dev/dsp0
       $ chmod 666 /dev/dsp 

If you are using udev in the 2.6 kernel then you may need to alter /etc/udev/rules.d/*.rules to set the correct permisions up permanently.

  • If you are running a sound server as eSound, asd or aRts you will have to disable it before using Audacity. Check the last part of this URL: http://audacity.sourceforge.net/unix.php For users with OSS builds of audacity and aRts, you can also use the wrapper provided by aRts and run:
$ artsdsp audacity
to launch audacity.

OSS vs ALSA

One issue with using Audacity on Linux is that there are two different audio systems:

  • OSS (Open Sound System) has been around for a long time and is built-in to most Linux kernels. It works fine for 44100 Hz, stereo, 16-bit audio with ordinary sound cards and typical requirements. It's rather inadequate for professional audio work(*1). Audacity fully supports OSS by default.
  • ALSA (Advanced Linux Sound Architecture) is newer, and doesn't support quite as many older sound cards, but it supports many newer ones and supports many advanced and professional features(*1). It is standard in the current 2.6 kernel. Audacity supports ALSA in two ways:
  • ALSA comes with an OSS emulation layer. This is what Audacity will use by default if you don't do anything special. Unfortunately the OSS emulation layer is buggy on some systems, and so performance will typically be worse than if you use ALSA or OSS natively. If your system doesn't load OSS emulation at boot-up, you may have to load it manaually by running audacity as
$ aoss audacity
  • Audacity can use ALSA natively if you compile it to use PortAudio v19 instead of the default, v18. Note that v19 is still evolving and not as well tested, but it is the only way that Audacity supports ALSA. Many users have reported good experiences with it. To use it, reconfigure Audacity like this:
./configure --with-portaudio=v19 --without-portmixer
  • If configure fails, with errors like:
$ configure: warning: CC=gcc: invalid host type
$ configure: error: can only configure for one host and one target at a time
$ configure: error: /bin/sh './configure' failed for lib-src/portaudio-v19
then put "env -i" in front of the command to supress the CC and CXX environment variables.
$ env -i ./configure --with-portaudio=v19 --without-portmixer
You may also need to make clean before re-compiling if you have already built audacity with different configure options.

If you are having issues, try a newer portaudio snapshot:

  • clear audacity-src-1.2.x/lib-src/portaudio-v19/
  • download pa_snapshot_v19.tar.gz from http://www.portaudio.com
  • untar into directory mentioned above
  • go back to audacity-src and run ./configure..., make, make install again

Please post your experiences with Audacity and PortAudio v19 directly to Audacity_PortAudio_v19.

  • "./configure --with-portaudio=v19 --without-portmixer" works. --without-portmixer is critical to getting a compilable configuration, just using --with-portaudio=v19 will configure but not compile.

On kernel 2.6.12, ALSA 1.0.9, audacity 1.2.3/4, this seems to be stable and reliable if the current (Sept 05) snapshot of portaudio is used.

  • compile failure: kernel 2.6.3, audacity 1.2.0, alsa 1.0.2, Slackware 9.1(and other distros: debian, mdk, ...)
configure --with-portaudio=v19 --without-portmixer
does not compile:
pa_linux_alsa/pa_linux_alsa.c: In function `BuildDeviceList':
pa_linux_alsa/pa_linux_alsa.c:272: too few arguments to function `snd_pcm_hw_params_get_channels_max'
pa_linux_alsa/pa_linux_alsa.c:306: too few arguments to function `snd_pcm_hw_params_get_channels_max'
make[2]: *** [pa_linux_alsa/pa_linux_alsa.o] Error 1
make[2]: Leaving directory `/usr/local/src/audacity-src-1.2.0/lib-src/portaudio-v19'
make[1]: *** [portaudio-v19/lib/libportaudio.a] Error 2
make[1]: Leaving directory `/usr/local/src/audacity-src-1.2.0/lib-src'
make: *** [audacity] Error 2
    • This is an issue with a version of portaudio intended for ALSA 0.9.x being build against a different API in ALSA 1.0.x. It is fixed in the versions 1.2.1 and newer.
  • this still doesn't link for me on Linux - I need to add -ljack -lasound to the end of the link command if I have PortAudio configured with jack and ALSA.
  • Results of using snapshot portaudio v19:
    • Now I have two i/o devices in audacity: Aside from /dev/dsp there is 'TerraTec DMX6Fire', but this seems to be unusable.
    • Tried it, now shows both oss and alsa device: /dev/dsp/, sis7012. Neither produce audio, the alsa one gives gui error: :"Error while opening sound device. Please check the input device settings and the project sample rate." The console spawns: "Illegal combination of i/o devices".
    • I (Ah) have exactly the same error with Audacity-1.2.3 (compiled w/wo --with-portmixer=no, makes no difference) and ALSA-0.9.6 (vanilla Suse-9.0) and ALSA-1.0.6. I debugged this down to a failed ALSA-call in OpenStream () in pa_linux_alsa/pa_linux_alsa.c:
snd_pcm_hw_params_set_channels returns -22(invalid argument)
which results in:
Pa_OpenStream: hostApi->OpenStream returns -9993 (Illegal combination of I/O devices)
This happens with a M-Audio Delta Audiophile 2496 trying to play 44.1/16 stereo wav file.
  • I too tried this - /dev/dsp does produce output! "Sound Blaster Live!" doesn't...
    • This usually means that OSS emulation (which includes resample on the fly etc) works but native ALSA doesn't. Newer audacity versions show the API used in the prferences as well. It may well be the hardware / ALSA only supports one or a few sample rates, but the OSS emulation software resamples to support others. Trying other sample rates in audacity with the ALSA device should reveal at least one that works.

__and there is still an open bug on portaudio 19 compilations for ac97 cards (common) under linux.... so you might be stuffed!__

  • Not completely - it works but the cursor speed is wrong so the playback cursor isn't over the audio being played. Anyway, the bug only affects portaudio v19 using OSS emulation over ALSA, which is pointless if native ALSA support is available.
  • Given that the 2.6 Linux kernel is released and ALSA has hit 1.0, with support for many more sound cards, isn't it time to make native ALSA the default configuration? -Henrik
    • This will happen when portaudio v19 goes stable - it is still offically beta code, although seems to be quite good.

unix version, PlaYingTrackWhileRecording


(*1)- This is actually incorrect, ALSA does not provide support, yet, for highend professional audio cards that have both 4dB and 10dB stepping. ALSA only currently supports 10dB stepping, this is a well known ALSA mixer issue and frequently addressed on ALSA's forums. Search for envy24 or any of the M-audio cards)

Compiling Audacity

There's a whole separate page on this: CompilingAudacity.

A more basic approach to the compiling business can be found at CompilingAudacityForBeginners

USB microphone

If you have troubles with recording audio through your USB-microphone, go here:

VST plugins in Linux

If you are really keen on trying VST plugins in Linux, you should check out this site:

Although it is a little outdated, perhaps it is possible to get something up and running.


Testing Audacity 1.3.0b or CVS Head

Audacity 1.3.0 beta is not a stable release. However, it contains a number of improvements, among others; native ALSA support using portaudio v.19. If you have issues trying to compile Audacity beta versions take a look at Audacity_1.3_beta_testing.