Overview
Real-time audio is minimodem’s primary mode of operation, allowing live transmission and reception of FSK signals through your computer’s audio hardware. minimodem supports multiple audio backends for maximum compatibility across different operating systems and audio subsystems.Audio Backends
minimodem supports several audio backends (src/simpleaudio.c:69-117):System Default
Automatically selects the best available backend for your system:
- Linux: PulseAudio → ALSA → sndio
- BSD: sndio → PulseAudio
PulseAudio
Modern Linux audio server with network support
ALSA
Low-level Linux audio interface for direct hardware access
sndio
OpenBSD’s audio and MIDI framework
Backend Selection: If no backend is specified, minimodem uses
SA_BACKEND_SYSDEFAULT which automatically selects PulseAudio on most Linux systems, ALSA if PulseAudio is unavailable, or sndio on BSD systems.System Default Backend
The simplest way to use minimodem is with the default backend:Transmit with Default Backend
- PulseAudio if available (most Linux desktops)
- ALSA if PulseAudio unavailable (Linux)
- sndio if neither available (BSD systems)
PulseAudio Backend
PulseAudio is the default on most modern Linux systems and provides the most user-friendly experience:Basic PulseAudio Usage
PulseAudio Features
Network Transparency
Send audio to remote PulseAudio servers over network
Application Mixing
Multiple applications can use audio simultaneously
Per-App Volume
Control minimodem’s volume independently using
pavucontrolDevice Hotplug
Handles USB audio devices connecting/disconnecting
Checking PulseAudio
ALSA Backend
ALSA provides direct hardware access and lower latency, useful for embedded systems or when PulseAudio is unavailable:Basic ALSA Usage
Specifying ALSA Devices
ALSA devices are specified using the formathw:X,Y or plughw:X,Y:
- Hardware Device (hw)
- Plugin Device (plughw)
- Named Device
hw vs plughw:
hw:X,Y- Direct hardware access, no format conversionplughw:X,Y- Plugin device with automatic format/rate conversion (recommended)
Listing ALSA Devices
Example ALSA Output
hw:0,0 for built-in audio or hw:1,0 for USB device.
sndio Backend
Used primarily on OpenBSD and other BSD systems:Basic sndio Usage
Specifying sndio Devices
Checking sndio Devices
Audio Configuration
Sample Rate
minimodem defaults to 48000 Hz, but you can change it:Sample Format
minimodem supports two sample formats (src/simpleaudio.c:54-67):- S16 (16-bit Signed)
- FLOAT (32-bit Float)
Receive Mode: Always uses FLOAT format internally for FFT processing (src/minimodem.c:786-788), regardless of the
--float-samples flag.Volume Control
Adjust transmit volume:Interactive Transmission
When transmitting to real-time audio (not a file), minimodem enables interactive features:Interactive Features
Leader tone
Transmits 2 bits of mark tone before data beginsAllows receivers to lock onto the carrier before data arrives
Trailer tone
Transmits 2 bits of mark tone after data endsEnsures the last data bit is fully transmitted
Example Interactive Session
Real-Time Reception
Basic Reception
Monitoring Reception
Troubleshooting
No audio output
No audio output
Symptoms: No sound when transmittingSolutions:
No audio input
No audio input
Symptoms: Carrier never detectedSolutions:
Audio device busy
Audio device busy
Error:
Device or resource busySolutions:Audio glitches/dropouts
Audio glitches/dropouts
Symptoms: Crackling, pops, or buffer underrunsSolutions:
- Reduce system load (close other applications)
- Increase audio buffer size (PulseAudio configuration)
- Use ALSA for lower latency
- Reduce sample rate:
--samplerate 44100 - Check
dmesgfor hardware errors
Wrong audio device selected
Wrong audio device selected
Symptoms: Audio goes to/from wrong deviceSolutions:
Backend not available
Backend not available
Error:
no such sa_backend. not configured at build?Solutions:- Check build configuration:
minimodem --version - Install required backend:
- Use available backend (system default usually works)
Advanced Configuration
ALSA Configuration File
Create~/.asoundrc for custom ALSA configuration:
PulseAudio Configuration
Edit/etc/pulse/daemon.conf for system-wide settings:
USB Audio Devices
USB audio devices typically appear as card 1:Performance Optimization
Use ALSA for Low Latency
Use PulseAudio for Convenience
Lower Sample Rate
Optimize Search Limit
See Also
- Transmit Mode - Transmit data via audio
- Receive Mode - Receive data from audio
- Audio Files - Work with audio files
- Data Transfer - Complete transfer examples