cspctl(1)
π cspctl β the Sound Blaster 16 ASP/CSP control program, bestie π
okay so this little cutie lives in the General Commands Manual section, and honestly? it's giving "tiny tool, big job." let's get into it π
β¨ SYNOPSIS β¨
cspctl command [-options] <filename>
πΈ DESCRIPTION πΈ
cspctl is a simple CSP microcode loader for Creative Sound Blaster 16ASP, plus some Sound Blaster AWE32 sound cards that have the Creative Signal Processor (CSP) chip (CT1748A) installed. no cap, that's the whole personality. π
it can also do double duty as a post-install function to snd-sb16-csp module, loading the default codec at module installation. like, it shows up to work on day one, iconic behavior.
if the CSP chip gets successfully detected and initialized, it gets installed as a hardware dependent device hwC0D2 into the /dev/snd directory. it's literally moving into /dev/snd, bestie. π β¨
rn, these are the codecs you can load onto the CSP device:
wfm0001a.csp QSound decoder
wfm0006a.csp A-law codec
wfm0007a.csp u-law codec
wfm0011a.csp IMA ADPCM codec (distorted output for IMA test files)
wfm0200a.csp Creative ADPCM codec (sounds like Intel/DVI IMA ADPCM compatible)
wfm0202a.csp Fast Speech 8 codec
wfm0203a.csp Fast Speech 10 codec
and these ones? not yet supported by ALSA π₯² (they're on the waitlist, manifesting for them):
wfm0201a.csp Text2Speech decoder
π¦ the QSound tea π¦
the QSound microcode file has four functions, and every single one is a decoder for a different sample rate. the rates for QSound functions #1, #2, #3 and #4 are 44100, 22050, 11025 and 8000Hz respectively. four functions, four vibes, four sample rates. π«
IMA ADPCM and FastSpeech codecs are formed of two functions β the first one is for capture, the second one is for playback. duo codecs, main character energy both of them. and A-law and u-law codecs have only one function. solo acts. no notes.
so, say you wanna load function #2 from the QSound microcode file (that's the decoder for 22050Hz)? run it like this:
% cspctl load -f 2 -d QSound wfm0001a.csp
after a successful load, /proc/asound/SB16/cspD2 will show you this:
Creative Signal Processor [v1.0]
State: -x--L
Codec: QSound [func #2]
Sample rates: 22050Hz
QSound decoder disabled
look at that state. -x--L. obsessed. π
with the QSound decoder microcode loaded, all simple PCM file formats can be played with QSound 180 degree positioning applied. the QSound element gets dynamically added into the mixer structure as a 3DEffect1-space element. π
it will only show up if all three of these are true: support for CSP has been compiled into ALSA drivers, the CSP chip has been found, and the QSound codec is loaded into the CSP. three checks, no shortcuts. π
when it's enabled, the QSound position can be dynamically changed by mixer slider, and the proc interface should follow the state of the CSP chip and its current QSound position:
Creative Signal Processor [v1.0]
State: Qx-RL
Codec: QSound [func #2]
Sample rates: 22050Hz
QSound decoder enabled
Processing 16bit mono PCM samples
Qsound position: left = 0x9, right = 0x9
Processing 16bit mono PCM samples?? it's out here living its best life. π₯
π autoloading + unloading π
the driver supports autoloading of u-Law, A-Law and Ima-ADPCM hardware codecs. autoloading is active only when there is no microcode loaded to CSP, and there's no need to preload appropriate *.csp files β the driver handles it, periodt.
but if you wanna unload manually loaded microcode, you gotta run:
% cspctl unload
and here's the important bit, bestie, don't skip this: if hardware codec microcode has been manually loaded, then the CSP will support only the loaded PCM format and autoloading will be disabled. in that case, the proc interface will show the loaded codec properties:
Creative Signal Processor [v1.0]
State: -x--L
Codec: IMA-ADPCM [func #2]
Sample rates: All
PCM format ID: 0x400000 (16bit/-) [mono/stereo] [playback/-]
Sample rates: All π she's flexible, she's adaptable, she's everything.
β COMMANDS β
loadβ load microcode from filename to the CSP. πunloadβ unload microcode from the CSP. bye bestie π«Ά
π OPTIONS π
-h,--helpβ display a short help. short and sweet, we love a helpful queen.-ccard β select a card number. option defaults to 0.-ffunction β select a function from the microcode file. option defaults to 1.-ddescription β optional microcode description string. (it's optional, so no pressure, but it is cute.)
π AUTHOR π
Uros Bizjak <uros@kss-loka.si>. legend behavior, thank you for your service. π«‘
and that's the whole page, bestie!! this was the cspctl(1) page, dated April 27, 2000 β yeah, she's vintage, she's retro, she's still slaying. mwah πβ¨πΈ
π¦ where this page comes from
- alpine 3.24: alsa-tools-doc 1.2.15-r1 Β· GPL-2.0-or-later
- arch rolling: alsa-tools 1.2.15-3 Β· GPL-2.0-or-later
- debian bookworm: alsa-firmware-loaders 1.2.5-3 Β· GPL-2.0-only
- debian trixie: alsa-firmware-loaders 1.2.14-1 Β· GPL-2.0-only
- fedora 43: alsa-tools 1.2.14-2.fc43 Β· GPL-2.0-or-later
- fedora 43: alsa-tools 1.2.15-1.fc43 Β· GPL-2.0-or-later
- fedora 44: alsa-tools 1.2.15-4.fc44 Β· GPL-2.0-or-later
- nixos 26.05: alsa-tools 1.2.14
- nixpkgs unstable: alsa-tools 1.2.15
- ubuntu jammy: alsa-firmware-loaders 1.2.5-2 Β· GPL-2.0-only
- ubuntu noble: alsa-firmware-loaders 1.2.11-1build2 Β· GPL-2.0-only
- ubuntu questing: alsa-firmware-loaders 1.2.14-1
- ubuntu resolute: alsa-firmware-loaders 1.2.15-1 Β· GPL-2.0-only
- ubuntu stonking: alsa-firmware-loaders 1.2.15-3 Β· GPL-2.0-only
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms