at a certain point i lost the interest in making music - somewhere in my early 30's.
-
@aeva it would probably be easier to enumerate the shit ways to do audio math in datalog and by that figure it out.
but first, i need crepes in my stomach.
@aeva name one specific kind of audio math
-
@aeva name one specific kind of audio math
-
-
-
-
-
-
-
-
-
-
-
@TomF @lritter @Farbs @aeva I’m not so sure float is actually improving anything. 14-bits is all you need for the final mix. 24-bits lets you record a whisper and a jet engine without having to adjust the gain between takes. 32-bit lets you have all that plus room to cover accumulating quantization error in you DSP chain. Fixed point is fine. I think it’s more about hardware performance or developer convenience than sound quality.
-
@TomF @lritter @Farbs @aeva I’m not so sure float is actually improving anything. 14-bits is all you need for the final mix. 24-bits lets you record a whisper and a jet engine without having to adjust the gain between takes. 32-bit lets you have all that plus room to cover accumulating quantization error in you DSP chain. Fixed point is fine. I think it’s more about hardware performance or developer convenience than sound quality.
@jkaniarz @Farbs @lritter @aeva @TomF I think your comments around performance and developer convenience are spot on, but writing fixed point code is awful for anything of significant complexity. Cascading IIR filters with low frequency poles leads to complexities in analysing headroom requirements. Mixing large numbers of channels requires level analysis. And if processing is occurring in some filterbank domain, then you have to consider fixed point FFTs.
-
@jkaniarz @Farbs @lritter @aeva @TomF I think your comments around performance and developer convenience are spot on, but writing fixed point code is awful for anything of significant complexity. Cascading IIR filters with low frequency poles leads to complexities in analysing headroom requirements. Mixing large numbers of channels requires level analysis. And if processing is occurring in some filterbank domain, then you have to consider fixed point FFTs.
-
@nickappleton @jkaniarz @lritter @aeva @Farbs Right. I'm normally "Mr Fixed Point" but in this case zero has a very good meaning, and having highly dynamic range around it is very valid and useful and solves a lot of annoying problems.
-
@nickappleton @jkaniarz @lritter @aeva @Farbs Right. I'm normally "Mr Fixed Point" but in this case zero has a very good meaning, and having highly dynamic range around it is very valid and useful and solves a lot of annoying problems.
@TomF @nickappleton @aeva @Farbs what @jkaniarz said is part of what i was thinking of.
use 32 bit integers. for n channels being added, keep log2(n) msb free. scaling down is lossy, so pre-aggregate factors in the entire processing pipeline: normalise all volume levels in a partition of unity, so in combination they use maximum range. apply 1 post scale.
but tom and nick are right in that floats are just convenient. the by far nicest option on x64 is to just set the CPU to zero denormals
-
@TomF @nickappleton @aeva @Farbs what @jkaniarz said is part of what i was thinking of.
use 32 bit integers. for n channels being added, keep log2(n) msb free. scaling down is lossy, so pre-aggregate factors in the entire processing pipeline: normalise all volume levels in a partition of unity, so in combination they use maximum range. apply 1 post scale.
but tom and nick are right in that floats are just convenient. the by far nicest option on x64 is to just set the CPU to zero denormals
@lritter @aeva @jkaniarz @TomF @Farbs 32-bits is usually enough for most things. I’m still scarred from working on 24-bit DSPs which are utter pricks for complex (I.e. involve FFTs) signal paths and the quality can noticeably drop. Regarding saturation, many DSPs have saturating ops and ARM NEON has some basic ones for additive operations.
-
@lritter @aeva @jkaniarz @TomF @Farbs 32-bits is usually enough for most things. I’m still scarred from working on 24-bit DSPs which are utter pricks for complex (I.e. involve FFTs) signal paths and the quality can noticeably drop. Regarding saturation, many DSPs have saturating ops and ARM NEON has some basic ones for additive operations.
@nickappleton @aeva @jkaniarz @TomF @Farbs could also escape to 64 bit int ops and saturate there but this limits cpu targets. there's also the tiny teensy matter of emulating transcendentals.
anyway. all this is low level hell. we were talking about high level heaven - the reason why we do all of this: blessed emergence.
-
@TomF @nickappleton @aeva @Farbs what @jkaniarz said is part of what i was thinking of.
use 32 bit integers. for n channels being added, keep log2(n) msb free. scaling down is lossy, so pre-aggregate factors in the entire processing pipeline: normalise all volume levels in a partition of unity, so in combination they use maximum range. apply 1 post scale.
but tom and nick are right in that floats are just convenient. the by far nicest option on x64 is to just set the CPU to zero denormals
@lritter @TomF @nickappleton @Farbs @jkaniarz i just put all the sound numbers in the float32 hole 🤓