SID → faux-stereo WAV converter
Left channel → MOS 6581 (warm, gritty, classic distortion)
Right channel → MOS 8580 (clean, precise, refined filters)
unsid renders the same Commodore 64 .sid file simultaneously through
multiple independent emulation engines to create an organic stereo width
or isolated per-voice stems.
- Stereo Mode: Renders the SID through a 6581 and 8580 simultaneously.
- Stems Mode: Parallel rendering of individual voices (3 per chip) as separate mono WAVs.
- Flexible Duration: Supports seconds or
M:SSformat (e.g.,6:12). - Robust Detection: Automatically detects song duration via MD5, with fallback to filename lookup.
| Requirement | Notes |
|---|---|
| libsidplayfp ≥ 2.0 | apt install libsidplayfp-dev / brew install libsidplayfp |
| Rust ≥ 1.70 | |
| C++ toolchain | g++ or clang++ (needed by the sys crate's build script) |
unsid [OPTIONS] <INPUT>
Arguments:
<INPUT> Input .sid (or .mus) file
Options:
-o, --output <PATH> Output WAV file [default: <input>.wav]
-n, --tune <N> Sub-tune number (0 = file default) [default: 0]
-r, --rate <HZ> Sample rate in Hz [default: 44100]
-d, --duration <DUR> Max duration in seconds or M:SS [default: 0]
--stems Render 6 individual voice stems (3x2)
--chunk <SAMPLES> Render chunk size [default: 4096]
--filter-6581 <F> 6581 filter curve 0.0–1.0 [default: 0.5]
--filter-8580 <F> 8580 filter curve 0.0–1.0 [default: 0.5]
-h, --help
-V, --version
# Convert to stereo — output is 'song.wav'
unsid song.sid
# Convert with duration as M:SS
unsid song.sid -o out.wav --duration 6:12
# Generate 6 parallel stem files (3 voices x 2 chips)
unsid song.sid --stemsunsid automatically downloads the Songlengths.txt database if it is missing. Once present, it detects the duration of your SID files using the database:
- MD5 Lookup: The tool calculates the MD5 hash of your
.sidfile and searches for a match in the database. - Filename Fallback: If the MD5 hash is not found, it attempts to match the file's name against the database entries.
The 6581/8580 difference is most pronounced in:
- Filter-heavy tunes — the 6581 filter distorts warmly; the 8580 stays transparent.
- Digi-samples (4th-voice tricks) — the 6581 passes them clearly; the 8580 nearly mutes them without the "digiboost" mod.
- Combined waveforms — slightly thinner on 8580, adding airiness to the right channel.
Use a pair of headphones or a stereo-imager plugin to best appreciate the width.
unsid depends on
sidplayfp-sys for the Rust FFI
bindings to libsidplayfp, plus:
| Crate | Purpose |
|---|---|
clap 4 |
CLI argument parsing |
hound 3 |
Pure-Rust WAV writer |
anyhow 1 |
Ergonomic error handling |
MIT