Software Mixer - nesciens/xmms2-wiki GitHub Wiki

Sofware Mixer

What should the software mixer do and how should it be implemented?

implementation

  • xform
    • can be inserted as an effect
    • API is already there
  • special xform
    • like the ringbuffer, inserted by the server
    • probably good to support software volume fallback, but maybe not using current volume API
  • internal
    • can do more funky stuff than xforms
    • can silently replace hardware volume using current volume API

format support

  • signed/unsigned 8-, 16-, and 32-bit
  • float/double

input range

  • 0-100%
    • fits in well with hardware volume range
    • imits us to maximum and minimum range of the hardware
  • 0->100%
    • overlaps with hardware volume range
    • allows increasing volume of faint songs or normalization
  • -<100%->100%
    • overlaps with hardware volume range
    • allows phase inversion
    • allows increasing volume of faint songs or normalization

channel support

  • multiple channels should be supported separately

usage

  • always-on - user can just drop this in the chain and have software volume support all the time
    • controlled using xforms API, or
    • controlled using (new) softvol API
  • fallback - used only when there is no hardware volume support
    • controlled using xforms API, or
    • controlled using volume API