Skip to content

Conversation

@AliceLR
Copy link
Contributor

@AliceLR AliceLR commented Jan 29, 2026

Patches necessary to actually use the 32-bit output support added by libxmp/libxmp#964 (see libxmp/libxmp#924). This is a work in progress and can be finished after libxmp 4.7.0 is out.

Drivers with 24-bit and 32-bit audio support:

  • ALSA
  • BSD
  • CoreAudio
  • NetBSD
  • OSS
  • PulseAudio
  • sndio
  • WinMM
  • Raw file
  • WAV file

Drivers that do not support 24-bit or 32-bit:

  • Sound Blaster

Drivers to verify:

  • AHI
  • AIFF file
  • AIX
  • ALSA 0.5
  • BeOS
  • DART
  • HP-UX
  • QNX
  • SGI
  • Solaris

@AliceLR AliceLR added this to the 4.2.1 milestone Jan 29, 2026
@AliceLR AliceLR marked this pull request as draft January 29, 2026 09:46
@sezero
Copy link
Collaborator

sezero commented Jan 29, 2026

Drivers with 24-bit and 32-bit audio support:

* [ ]  OSS

I think it's possible with new (4.x) oss versions, e.g. freebsd: See their sys/soundcard. h at https://cgit.freebsd.org/src/tree/sys/sys/soundcard.h#n175 for AFMT_S32_NE and AFMT_S24_NE, for e.g.

* [ ]  ALSA 0.5

Can't we just remove that prehistoric backend?

@AliceLR
Copy link
Contributor Author

AliceLR commented Jan 29, 2026

I think it's possible with new (4.x) oss versions, e.g. freebsd: See their sys/soundcard. h at https://cgit.freebsd.org/src/tree/sys/sys/soundcard.h#n175 for AFMT_S32_NE and AFMT_S24_NE, for e.g.

I think this is correct, but I didn't look that closely. The current lists were kind of just guessing based on the defines I could easily search. The only drivers I looked at with any depth are the ones that are updated and working, so far. (Also, I forgot to put WinMM in the list—seems that like WAV, it works but you need to use WAVEFORMATEXTENSIBLE?)

Can't we just remove that prehistoric backend?

Not sure; I think if that happens, it should wait for a later release. (I think anything that only supports ancient ALSA should also have OSS?)

fmt = format & XMP_FORMAT_8BIT ?
SND_PCM_FORMAT_S8 : SND_PCM_FORMAT_S16;
fmt = format & XMP_FORMAT_UNSIGNED ?
SND_PCM_FORMAT_U8 : SND_PCM_FORMAT_S8;
Copy link
Contributor Author

@AliceLR AliceLR Jan 29, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

SND_PCM_FORMAT_S8 played as if it was using the wrong signedness the last time I tested it, may need investigation. (This may be a PipeWire bug or something else, though.)

@AliceLR AliceLR force-pushed the add-32bit-output branch 2 times, most recently from 8172066 to 485b271 Compare February 11, 2026 00:19
@AliceLR
Copy link
Contributor Author

AliceLR commented Feb 11, 2026

AFMT_S32_NE

Confirmed that this works in NetBSD. I will try the other BSDs too once I'm done with NetBSD (if only to see if anything actually supports AFMT_S24_NE...).

@AliceLR AliceLR force-pushed the add-32bit-output branch 3 times, most recently from cf9fe99 to 6f52485 Compare February 11, 2026 01:39
Drivers with 24-bit and 32-bit audio support:
- [x] ALSA
- [ ] BSD
- [ ] CoreAudio
- [x] NetBSD
- [x] OSS
- [x] PulseAudio
- [ ] sndio
- [x] Raw file
- [x] WAV file

Drivers that do not support 24-bit or 32-bit:
- [ ] Sound Blaster

Drivers to verify:
- [ ] AHI
- [ ] AIFF file
- [ ] AIX
- [ ] ALSA 0.5
- [ ] BeOS
- [ ] DART
- [ ] HP-UX
- [ ] QNX
- [ ] SGI
- [ ] Solaris
@AliceLR
Copy link
Contributor Author

AliceLR commented Feb 12, 2026

* [ ]  sndio

You need to use model=ac97 to even get this to work out of the box running in QEMU??? 🤨

Is there anything modern that supports the "BSD" driver or should I dig up older BSD releases?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants