FLDIGI Users Manual  3.21
Sound Card Configuration

Table of Contents

A few words about sound I/O on the PC. "You are in a maze of twisty little passages, all alike".

PortAudio, PulseAudio and OSS are different ways in which fldigi can access your sound card through the various sound systems.

OSS was the first audio backend in fldigi. It works with the Linux sound system of the same name, which has now been replaced by ALSA but is still supported via an emulation layer. Its only advantage, as an audio backend, is that it's simple and doesn't require any external libraries.


The PortAudio backend was written subsequently to support OSS on Linux and FreeBSD, ALSA and JACK on Linux, CoreAudio on OS X, and also the various sound APIs on Windows – all through the same PortAudio library.

PulseAudio is more than an audio hardware access layer; refer to its website for a summary of what it does. Fldigi supports it mainly because many Linux distributions are now integrating it with their desktops, but also because it has a few interesting features:

In the future it might be possible to replace all of these with a single backend, without any loss of functionality, performance, sound system or platform support. That'll be the day! Until then:

config-audio-devices.png
Audio Devices

On Linux:

On Windows:

Use the PortAudio and select the device from the list(s).

Select the SndCrd tab on the configuration dialog.

On Linux Fldigi can interface to the sound card using either the OSS, the Portaudio, or the PulseAudio. Each of the appropriate libraries must be present on the computer to use that particular sound i/o.

On Windows Fldigi uses the Portaudio sound driver only.

It is also possible to configure Fldigi with File I/O only, which is useful for testing the application without an interface to the sound card. In the File I/O only configuration you can record and playback audio files in a number of different formats including the "wav" format associated with the Windows operating system.

The program will find all active sound cards and the associated drivers for both. Select the sound card and driver type that will be used with the program. I recommend using the Pulseudio device driver if that is available on your Linux distribution.

config-audio-settings.png
Config Audio Settings

If Pulse or Port audio is selected then you can either allow the program to use the auto detect to determine the best sound card sampling rate, or you can pick from the drop down list. If you know your RX and TX sound card oscillator correction factors you can enter them now. If not you can determine the RX rate correction using a special WWV modem built into Fldigi. The decoder and encoder logic for each of the various modems require a specific sound card sample rate which may not be the the actual sound card sample rate. The conversion between the modem sample rate and the sound card sample rate is accomplished by one of a set of sample rate converters.

Sound card oscillators may have a slight error in frequency that causes their sampling rate to not be the value specified. This error is usually small enough to be measured in a parts per million. Fldigi uses a technique called rate conversion to correct the sampled waveform for this error. The error can be measured and the correction factor determined by using the WWV calibration modem. The supporting library used for the converter provides several different levels of conversion, Best, Medium, Fastest and Linear Interpolator. The default, Medium interpolator, will be satisfactory for most sound cards. If you are running fldigi on a computer with limited cpu power you might find it necessary to select one of the more cpu efficient converters, either Fastest or Linear. Each gives progressively poorer performance but use fewer cpu cycles to perform the frequency conversion. You should also be sure that the cpu type is set to Slow cpu on the miscellaneous configuration tab.

config-audio-mixer.png
Audio Mixer

Mixer controls are only active on Linux using OSS, ALSA backends and if the distribution provides application layer mixer support. Select whether you will be using Line-In or Mic-In for the audio connection from the receiver output. Fldigi ALWAYS expects to use the Line-Out for driving the transmitter audio. Set the PCM level for your sound card. If you check "Manage mixer" then the Tx and Rx "volume" controls on the main fldigi dialog will be active.

Right Channel Audio Output

config-audio-right.png
Right Audio Channel

You may elect to make the right and left channels both contain the modem signal. Or, you may reverse the right and left channel audio signals. These two controls only change the function of the audio output.

stereo-plug.png
Stereo Plug

  1. Sleeve: usually ground
  2. Ring: Right-hand channel for stereo signals, negative polarity for balanced mono signals. Fldigi uses this channel for special controls signals.
  3. Tip: Left-hand channel for stereo signals, positive polarity for balanced mono signals. Fldigi uses this channel for Rx and Tx audio.


The PTT, CW QSK and Pseudo-FSK items are found on their respective configuration tabs. They are replicated here for your convenience and these controls may be changed on this or the other tabs.

WAV File Sample Rate

SavedWAVFileSampleRate.png
Sample Rate of Saved WAV Files

User selectable WAV file sample rate.

Multiple sound cards

In systems with multiple sound cards they will not always be in the correct sort order on boot. This may cause problems not only with fldigi, but other apps that depend on a certain sound card. The work around is not that difficult and will reliably place the preferred sound card in the correct slot. Sound cards are numbered from 0 on to however many cards you have in your computer. Usually its only 2.

The 1st step is to determine the correct id of the cards in your system. Open a terminal and issue the following :: aplay -l

Here is an example of what you may see.

**** List of PLAYBACK Hardware Devices ****
card 0: ICH6 [Intel ICH6], device 0: Intel ICH [Intel ICH6]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: ICH6 [Intel ICH6], device 4: Intel ICH - IEC958 [Intel ICH6 -
IEC958]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: AudioPCI [Ensoniq AudioPCI], device 0: ES1371/1 [ES1371
DAC2/ADC]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: AudioPCI [Ensoniq AudioPCI], device 1: ES1371/2 [ES1371 DAC1]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

If it does not already exist you will need to create the following file:

/etc/modprobe.d/alsa-options

You will have to root privileges to create the file, so a system such as Ubuntu that depends on sudo you would enter

$ sudo touch /etc/modprobe.d/alsa-options

Using the above example, you edit that file so that it's contents contain

# Set preferred order of the sound cards

options snd-ICH6 index=0
options snd-AudioPCI index=1


The simplest terminal editor that is on just about every distribution is
"nano" so to edit the file you just created you can again use sudo

$ sudo nano /etc/modprobe.d/alsa-options

If you want to test this new file, reboot and open a terminal and again issue the command :: aplay -l

You will normally find that your internet browser and/or Flash want to use card 0, so you then may want to consider using card 1 for fldigi

Here is another example with 3 sound systems; mother board ALC1200, a thumb-drive audio codec, and a SignaLink USB:

**** List of PLAYBACK Hardware Devices ****
card 0: NVidia [HDA NVidia], device 0: ALC1200 Analog [ALC1200 Analog]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Set [USB Headphone Set], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 2: default [USB Audio CODEC ], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

The /etc/modprobe.d/alsa-options contains these lines

options snd-NVidia index=0
options snd-Set index=1
options snd-CODEC index=2

Notice that each line is uniquely related to the aplay -l report


Return to Top of Page
Return to Main Page