Each client remotely controls a personal mixer running at the server. Each client controls the level at which their audio is sent to the server. Let's say that all clients have set their microphone gains and sing at levels that result in peaks not exceeding -12 dBFS (decibels relative to the maximum beyond which clipping of peaks and consequent distortions commence). With mixer faders at 100% which I assume is unity gain, the combined output from two such singers could have peaks that are 3 to 6 dB higher than a singer alone thus the headroom before clipping is reduced to 6-9dB. Every doubling of the number of singers could degrade the headroom by 3-6dB. The higher range is for highly correlated signals. At 6dB per doubling of singers, the initial 12 dB headroom for one singer is used up by 4 singers with faders at 100%; if they are uncorrelated (more like random noise and who sings like that?), the headroom is gone with 16 singers.
Of course we know that singers do not control their singing volumes, microphone spacings and gains uniformly. All it takes is one to overload the chain somewhere and cause distortion for some, if not all others. If headroom has already been lost due to the number of simultaneous voices, peak distortion could happen without anyone's clip indicators turning on. So I think that attention to fader settings being proportional to the size of the chorus is useful in reducing the risk of peak distortion on the mixer output.
The fader travel range from 100% to just greater than 0% is 35 dB (rounded). At 0%, the channel is muted. And a 10% travel change corresponds to a gain change of 3.5dB. The mid-point (50%) is a gain of -17.5 dB (or attenuation of 17.5 dB). If we use 4.5dB of fader attenuation (midway between 3 and 6) for each doubling of the size of the choir to protect mixer headroom, a 50% fader setting would be suitable for about 16 singers. For a 64 voice choir, a good starting point would be -log2(64)x4.5 = -6x4.5 = -27 dB, equivalent to a fader setting of about 20%.
That seems shockingly low, given the number of large choirs that have been assembled on Jamulus. So is my starting assumption that 100% on the fader is unity gain? Does the math in the mixer already build in some headroom for mixing such that 100% on the fader is a gain of, say , 0.25 or -12 dB?
Last edit: VE3MEO 2021-01-29
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I can't actually answer your question, but have you experienced this phenomenon of (as it were) "aggregate clipping" without any individual channels doing that clipping?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
This is a problem that every mixer will have, be it analogue or digital. There is a technical solution as big mixers of all types work. I do not know the details, but I am sure that it is covered in Jamulus having seen no difference in the behaviour in groups of 2 to 25 users.
(a pleasant afternoon looking through the source code of Jamulus will certainly show you the answer if you are that interested)
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
My analysis seems correct, having done a subjective test with three clients on two computers. One client sends 400 Hz sine at the threshold of clipping. The second sends 410 Hz at the same level. The third receives and that is what I listen to. With its faders at 100%, each sender's level is adjusted to the audible clipping threshold individually. In a linear system, the addition of the two equal amplitude sines will result in a complex waveform with a peak 6dB higher than one alone at a rate of 10 Hz but without peak distortion. In Jamulus, I hear gross clipping or peak distortion at 100% faders diminishing as the faders are reduced to below ~84%. That corresponds to approximately -6dB loss of headroom as I predicted.
So I am going to modify my practice in mixing for Zoom to ensure I've allowed enough headroom in Jamulus. However, that means lower fader settings than I have been using which, while fine for the choral sound, is too low for a single talker or discussion. That calls for another gain device and control inserted in the link between Jamulus and Zoom since the one in Zoom is in the always-on-top Audio Settings window.
Digital mixers designed for a large number of channels will have a 'mix bus' supporting larger samples, e.g. 32 bits. A 16 bit input signal can be mapped to fit within that range with surplus bits on either side (headroom and footroom) to avoid truncation of either its Most Significant Bits or its Least Significant Bits over a wide range of fader settings. Adding more 16 bit inputs has the effect I described and the numbers add up to use more of the mix bus's 32 bit range without loss of significant bits. The output of the mix bus then goes through a multiplier controlled by the Master fader to map the resulting bits into the width (16 bits, for example) of the destination port. It appears to me that each client's mixer in the Jamulus server has 16 bit inputs with multiplers having a range of 0-1 (no positive gain for low signals) and a 16 bit mix bus (adder) with no output multiplier at all.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Each client remotely controls a personal mixer running at the server. Each client controls the level at which their audio is sent to the server. Let's say that all clients have set their microphone gains and sing at levels that result in peaks not exceeding -12 dBFS (decibels relative to the maximum beyond which clipping of peaks and consequent distortions commence). With mixer faders at 100% which I assume is unity gain, the combined output from two such singers could have peaks that are 3 to 6 dB higher than a singer alone thus the headroom before clipping is reduced to 6-9dB. Every doubling of the number of singers could degrade the headroom by 3-6dB. The higher range is for highly correlated signals. At 6dB per doubling of singers, the initial 12 dB headroom for one singer is used up by 4 singers with faders at 100%; if they are uncorrelated (more like random noise and who sings like that?), the headroom is gone with 16 singers.
Of course we know that singers do not control their singing volumes, microphone spacings and gains uniformly. All it takes is one to overload the chain somewhere and cause distortion for some, if not all others. If headroom has already been lost due to the number of simultaneous voices, peak distortion could happen without anyone's clip indicators turning on. So I think that attention to fader settings being proportional to the size of the chorus is useful in reducing the risk of peak distortion on the mixer output.
The fader travel range from 100% to just greater than 0% is 35 dB (rounded). At 0%, the channel is muted. And a 10% travel change corresponds to a gain change of 3.5dB. The mid-point (50%) is a gain of -17.5 dB (or attenuation of 17.5 dB). If we use 4.5dB of fader attenuation (midway between 3 and 6) for each doubling of the size of the choir to protect mixer headroom, a 50% fader setting would be suitable for about 16 singers. For a 64 voice choir, a good starting point would be -log2(64)x4.5 = -6x4.5 = -27 dB, equivalent to a fader setting of about 20%.
That seems shockingly low, given the number of large choirs that have been assembled on Jamulus. So is my starting assumption that 100% on the fader is unity gain? Does the math in the mixer already build in some headroom for mixing such that 100% on the fader is a gain of, say , 0.25 or -12 dB?
Last edit: VE3MEO 2021-01-29
I can't actually answer your question, but have you experienced this phenomenon of (as it were) "aggregate clipping" without any individual channels doing that clipping?
This is a problem that every mixer will have, be it analogue or digital. There is a technical solution as big mixers of all types work. I do not know the details, but I am sure that it is covered in Jamulus having seen no difference in the behaviour in groups of 2 to 25 users.
(a pleasant afternoon looking through the source code of Jamulus will certainly show you the answer if you are that interested)
My analysis seems correct, having done a subjective test with three clients on two computers. One client sends 400 Hz sine at the threshold of clipping. The second sends 410 Hz at the same level. The third receives and that is what I listen to. With its faders at 100%, each sender's level is adjusted to the audible clipping threshold individually. In a linear system, the addition of the two equal amplitude sines will result in a complex waveform with a peak 6dB higher than one alone at a rate of 10 Hz but without peak distortion. In Jamulus, I hear gross clipping or peak distortion at 100% faders diminishing as the faders are reduced to below ~84%. That corresponds to approximately -6dB loss of headroom as I predicted.
So I am going to modify my practice in mixing for Zoom to ensure I've allowed enough headroom in Jamulus. However, that means lower fader settings than I have been using which, while fine for the choral sound, is too low for a single talker or discussion. That calls for another gain device and control inserted in the link between Jamulus and Zoom since the one in Zoom is in the always-on-top Audio Settings window.
Digital mixers designed for a large number of channels will have a 'mix bus' supporting larger samples, e.g. 32 bits. A 16 bit input signal can be mapped to fit within that range with surplus bits on either side (headroom and footroom) to avoid truncation of either its Most Significant Bits or its Least Significant Bits over a wide range of fader settings. Adding more 16 bit inputs has the effect I described and the numbers add up to use more of the mix bus's 32 bit range without loss of significant bits. The output of the mix bus then goes through a multiplier controlled by the Master fader to map the resulting bits into the width (16 bits, for example) of the destination port. It appears to me that each client's mixer in the Jamulus server has 16 bit inputs with multiplers having a range of 0-1 (no positive gain for low signals) and a 16 bit mix bus (adder) with no output multiplier at all.