Sound mixer improvements

FreeBSD's default mixer utilities are not the best; mixer(8) is very basic and outdated, end users have to tweak sysctl(8) values to do simple things and programmers have to write DIY implementations for their programs (e.g audio/mixertui). This project aims to improve mixer handling for OSS on FreeBSD and make life for both programmers and users easier.

  • A mixer(3) library.
    • Read all devices and knobs.
    • Extend knob capabilities:
      • 32-bit floating point left-right volume knobs.
      • Muting.
      • Recording input selector.
    • Select default sound card (not really a mixer feature, but really useful to have).
    • Provide as much information as possible about the mixer.
    • Use the more modern OSSv4's ioctls.
  • Rewrite mixer(8).
    • Use mixer(3) and its new features.
    • Get rid of the old codebase completely.
    • Add more command line options.
    • Control-oriented interface like in sysctl(8).
  • Implement some missing but useful for mixer(3) OSS ioctls in the kernel.
  • Implement sound device playback/recording status sysctl.
  • Update /etc/rc.d/mixer to work with the new version of mixer(8).
  • Make /dev/sndstat “useless” by containing its information in the output of mixer(8).
  • Panning capabilities in mixer(3), but it should be easy to write a DIY handler using the mix_ctl_t interface.

Since a new version of mixer(8) is one of the delievarables, it'll also serve as a testing ground for the library. Me and the mentor will also test the library with various sound devices we own.

Email archive
Week 1
Week 2
Week 3
Week 4
Week 5
Week 6
Week 7 (Vacation)
Week 8
Week 9
Week 10
  • summerofcode2021projects/soundmixerimprovements.txt
  • Last modified: 2021/11/21 21:14
  • by ChristosMargiolis