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.
  • -c card β€” select a card number. option defaults to 0.
  • -f function β€” select a function from the microcode file. option defaults to 1.
  • -d description β€” 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 πŸ’‹βœ¨πŸŒΈ