Forums › Forums › SQ Forums › SQ general discussions › dB to Linear Taper Sum
Tagged: midi taper sum maths
- This topic has 4 replies, 2 voices, and was last updated 3 years, 8 months ago by SignalAudio.
-
AuthorPosts
-
2021/03/29 at 11:07 am #100224SignalAudioParticipant
Hi there,
I use the TCP MIDI protocol a lot for automation from third party devices, and often need to fade up and down different sources. This ends up being quite a clunky thing to code into the controlling device as differences in fade duration require different arrays of 16-bit preset values (per the linear taper in the MIDI protocol documentation).
What would help greatly is knowing the mathematical relationship between the decibel value and the 16-bit linear taper value. This would mean I could program my devices to calculate the target value on the run. I’ve tried to suss it out and my wife – a statistician – couldn’t even get a particularly accurate coefficient with her clever software.
Would A&H be happy to furnish us with this? It would apply more broadly than SQ of course.
Many thanks!
2021/03/29 at 12:23 pm #100226MaxKiussoParticipantThe linear taper value is a decimal integer value between 0 and 16,383 and divided into two hexadecimal values that are both part of the value in binary mode: VC and VF.
VF is the last 7 bits of the value and VC is what remains after removing the last 7 bits.
Example: if you have a value of 15.196 (0 dB) the binary (max 14 bits) representation is 11101101011100 and hexadecima values are
VC = 1110110 = 0x76
VF = 1011100 = 0x5COther example: value 8,056 (about -60 dB) is 1111101111000 so
VC = 111110 = 0x3E
VF = 1111000 = 0x78I’ve developed a formula that returns decimal values from dB level:
decimal = integer_part(15196 + (db_level * 119))
I use this logical into my Companion module for SQ. I hope it will be useful to you.
2021/03/29 at 12:57 pm #100227SignalAudioParticipantHi Max,
This is very cool. I just sussed the 14-bit structure as I got the notification of your post – it was fishy that the LSB never rose above 127. I like your formula, but it does have a little – almost insignificant – error against A&H’s own table, so it’s not the sum they use, seemingly.
I recreated their hex table in the B column of a spreadsheet and wrote this function to strip the 8th bit of the LSB and shift the MSB down: =BITOR(BITRSHIFT(HEX2DEC(LEFT($B2,2))*256,1),HEX2DEC(RIGHT($B2,2)))
Your sum, working the other way from decibels (the A column in the same spreadsheet) is out by 1 at -2dB and 10 at -35dB. I wondered if it was a rounding error (integers always rounding down to the whole number), but it appears not to be, or not with your sum in this case.
Definitely not a criticism, your sum is very, very close!
Cheers..
2021/03/29 at 1:45 pm #100230MaxKiussoParticipantI know that my formula has a bit error, only for average I using. I arrived to write “db_level * 119” because the average distance from one dB to another is “119” (0111), sometimes 118 and sometimes 120.
I think A&H’s calculations are also not accurate and in some cases what you send is not always interpreted correctly by SQ. Ad example, I send pan level to SQ for centering (3F & 7F like indicated in table of the manual) and after 200 ms I ask to it for that value: it reply with “3E & 22” (difference of 0xDD) that it is about “Left 3%”.
If I will find a way to improve the formula, I’ll share it with you. Hope you will do the same! (or A&H technicians unravel the mystery)
2021/03/29 at 9:34 pm #100241SignalAudioParticipantI will gladly do the same! 118.725 is almost perfect if you use conventional rounding to zero decimal places, and within +1 with integer rounding, FWIW.
Cheers.
-
AuthorPosts
- You must be logged in to reply to this topic.