Linux Issues

From Audacity Wiki
Revision as of 14:23, 20 January 2006 by MattBrubeck (talk) (remove spam)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
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.

$ 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. 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. 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 this page.

  • "./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

Compiling Audacity

There's a whole separate page on this: CompilingAudacity