-
Notifications
You must be signed in to change notification settings - Fork 34
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Limiter / Crossover Module? #43
Comments
Hi! Anything can be changed using this library. It gives you full R/W access to the DSP. However, the tricky part is to "crack" the algorithm so that you're sending the correct values. Can you send a screenshot + a description of where I can find this exact block in Sigma Studio? |
Wow, that was a quick reply! :)
i attached two screenshots showing the Blocks i am most interested in,
Limiter-Block is in: Dynamics Processors -> RMS -> Limiter
Crossover-Block is in: Filters -> Crossover -> Single Precision / Double
Precision -> 3-Way -> Crossover
Thanks a Lot in advance!
Greetings from Germany,
Patrick
Am Di., 6. Aug. 2024 um 13:58 Uhr schrieb Hans ***@***.***>:
… Hi!
Anything can be changed using this library. It gives you full R/W access
to the DSP. However, the tricky part is to "crack" the algorithm so that
you're sending the correct values. Can you send a screenshot + a
description of where I can find this exact block in Sigma Studio?
—
Reply to this email directly, view it on GitHub
<#43 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BKLI3WS5LNU4NEWOGU6CN7LZQC277AVCNFSM6AAAAABMCFKXD6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENZRGEYTMOJQGY>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
I have not used these blocks myself, but everything is possible as long as you know what to send, and to which DSP addresses. I've used the the I'm sure you can find a similar RMS compressor block that will work with I have never used the three-way crossover, but it seems to me like you can use the same algorithm as used in So for the four "bands" use:
Lines 13 to 28 in ad35ebe
Play around with the Capture window in Sigma Studio to figure out what happens with the various addresses when changing the settings. |
So, If i understand you correctly, i could Just do a Safeload-Write to the
corresponding Address to Set the Value i desire? The conversion Formula for
the value would be pow(10, dB / 20)?
Greetings
Hans ***@***.***> schrieb am Di., 6. Aug. 2024, 14:42:
… I have not used these blocks myself, but everything is possible as long as
you know what to send, and to which DSP addresses.
This library offers full, low level access to everything, but does not add
support for every DSP block SIgma Studio offers.
I've used the the compressorPeak
<https://github.com/MCUdude/SigmaDSP/blob/ad35ebe7b3f35d3b56e82cdb055ca535708b6cbd/src/SigmaDSP.cpp#L932>
function in this library with
Dynamics Processors -> Peak -> Standard Resolution -> Lower Range (-90 to
+6dB) -> Post Gain -> Stereo -> No Ext Detector Input > Peak (gain).
I'm sure you can find a similar RMS compressor block that will work with
compressorRMS
<https://github.com/MCUdude/SigmaDSP/blob/ad35ebe7b3f35d3b56e82cdb055ca535708b6cbd/src/SigmaDSP.cpp#L846C16-L846C29>.
And you can always just copy the function from the library, paste it in
your sketch and modify it to fit your needs if necessary.
I have never used the three-way crossover, but it seems to me like you can
use the same algorithm as used in EQsecondOrder
<https://github.com/MCUdude/SigmaDSP/blob/ad35ebe7b3f35d3b56e82cdb055ca535708b6cbd/src/SigmaDSP.cpp#L576>
for each of the four controllers, if you're using Butterworth 12 or Bessel
12 in the crossover. And 12 means 12 dB or 2nd order.
So for the four "bands" use:
Band 1 (Low) Band 2 (Mid Low) Band 3 (Mid High) Band 4 (High)
Butterworth 12 Butterworth 12 Butterworth 12 Butterworth 12
Bessel 12 Bessel 12 Bessel 12 Bessel 12
https://github.com/MCUdude/SigmaDSP/blob/ad35ebe7b3f35d3b56e82cdb055ca535708b6cbd/src/parameters.h#L13-L28
Play around with the Capture window in Sigma Studio to figure out what
happens with the various addresses when changing the settings.
—
Reply to this email directly, view it on GitHub
<#43 (comment)>,
or unsubscribe
<https://github.com/notifications/unsubscribe-auth/BKLI3WUJHSNFDR2DZG6YOFLZQDAB5AVCNFSM6AAAAABMCFKXD6VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDENZRGE4TOMZQGA>
.
You are receiving this because you authored the thread.Message ID:
***@***.***>
|
Yes, just use safeload_write. But you'll have to do some math first. Either by rolling your own function, or using the functions I mentioned in my previous post. FYI I'll recommend you to reply on the Github page, and not by email. There may be things like embedded code and tables that may or may not be present in the email Github sends you. |
Hello, i quickly whipped up some Code yesterday for the Limiter Block: void SigmaDSP::dynamics_limiter(uint16_t startMemoryAddress, int threshold) Could you have a quick look if anything looks off? The Values of the array are directly taken from SigmaStudio, ranging from 0dB to -24db, thus the 'threshold*-1' to select the correct index. |
Give it a try and see how it works!
THe compiler will probably optimize this, but why not do I would probably use |
Hello, thats really a great Library you have written here, thank you!
Now on to my questions: is it possible to change settings of a RMS-Limiter-Block with your Library? also can Crossover-Values be adjusted?
A quick example or Explanation would help me a lot to go on with my Project!
Thanks in Advance,
Patrick
The text was updated successfully, but these errors were encountered: