mixxxdj / mixxx

Mixxx is Free DJ software that gives you everything you need to perform live mixes.
http://mixxx.org
Other
4.26k stars 1.24k forks source link

192kHz sample rate for FM-broadcast #12529

Open pauluzs opened 6 months ago

pauluzs commented 6 months ago

Feature Description

In order to create MPX audio to feed a FM broadcast transmitter the audio hardware needs to run at a sample rate of 192kHz to be able of including RDS and SCA. For creating this MPX the Stereotool software is used.

The setup used is linux (ubuntu studio) running with pipewire / jack The audio chain would be like:

Audio HW inputs ---- (jack plugins) ----|---------------|---(jack plugins) --- Audio HW outputs ------------------------------------------------------|---Mixxx---| Application inputs --- (jack plugins) ---|---------------|---(jack plugins) --- Stereotool --- Audio HW outputs

Unfortunately jack needs to run at a fixed 192000 for this , which is not supported by Mixxx

daschuer commented 6 months ago

Can you add links with to a reference that describe the 192 kHz requirement?

We have considered the extra CPU and Memory required for these useless extra frequency range, a waste of resources and like to avoid the related maintenance effort.

There is no technical reason that Mixxx can't do 192 kHz, so you may enabled it in the source code.

pauluzs commented 6 months ago

As seen in the spectrum picture on i.e. https://en.wikipedia.org/wiki/FM_broadcasting the multiplex contains:

0-15 Khz L+R audio (mono) 19 Khz stereo pilot tone 38 +/- 15 Khz L-R audio (stereo, around stereo pilot 2 harmonic) 57 +/- 1,187.5 kHz R(B)DS (Radio data, service around stereo pilot 2 harmonic) 67.65 +/- 9Khz SCA (audio subcarier/ HD audio) 92 kHz audos

Granted SDA and audos are not widely used, NyQuist still requires double the highest frequency used, that's the reasoning behind the 192kHz.

Tools like stereotool and Breakaway One are frequently used. MPXGEN , JMPX and JMPXRDS are some lesser known open source alternatives.

It should be possible to do this even as plugin to mixxx, ditching the need for external programs or plugins.

A while ago i tried compiling mixxx for 192kHz only failed to alter it the correct way to do this. Some hints and tips where and what to alter would be greatly appreciated.