sigma studio sub harmonic synth documentation missing
Hi I have tried using these blocks in an ADAU1701 without any apparent success, In desperation I went hunting for any documentation but there is NONE!! not even in https://wiki.analog.com/resources/tools-software/sigmastudio/toolbox
I am actually very interested in using these blocks instead of having to create one from scratch, so a useable description would be very helpful
Many thanks in advance
Audio Signal Processors
sub harmonic
SigmaDSP Audio Processors
adau1701
I wish someone knew about this function, from what i see it completely suppresses the fundamental, generates a single sub-harmonic one octave below and generates strong odd harmonics of that as if the output is square or semi square wave. My biggest problem is the fundamental suppression as its difficult to add back due to the delays inherent in the block. I am not looking for a chapter and verse user guide but a few pointers would be very nice.
Not being a professional DSP programmer I am not finding it easy to see any ways of replicating this function using other blocks available on the ADAU1701, any clues welcome
Hello fourtytwo,
So far I've played a bit with one flavor of the Sub-Harmonic Synth, the non low-frequency version -- using the test circuit below:
Here's what it apparently does: Each time its input crosses zero while rising, the block toggles a divide-by-2 counter that either flips the synth's output or not. Thus the output appears as half-frequency and harmonic-rich, as you noted, though not exactly a square wave:
Because it only recognizes zero crossings, the block behaves much like early attempts at this effect made with logic chips and such. Fortunately it's not affected by DC present at its input. However, it does become confused in the presence of input harmonics sufficient to upset the fundamental's zero crossings. For example, it still produces a correct result with an input containing a second harmonic at 6 dB down:
Including an equal second harmonic introduces extra zero crossings. In effect the Synth chooses the higher input frequency:
This version of the Synth does not appear to have a measurable delay (at least not visible at 5 mS / division). However, to use it effectively you may need to filter out harmonics ahead of it, as well as filter out its own harmonics afterward -- which may add some perceived delay.
Of course none of this substitutes for source documentation, but I hope this characterization helps!
Two more thoughts:
How might the Pitch Transposer set to 50% do as an alternative (it does have a delay though)
The ADAU1452 likely could make a much better Sub-Harmonic Synth working in the frequency domain, although such a block has not yet been made.
Best regards,
Bob
Ahh wonderful Bob thank you so much, I lack a scope to put on it so now I can see what it does especially with your explanation, thank you so much for your time It's actually quite good, I dont know why I was having trouble adding back the original I think at the time I didnt realize what the problem was and thought the delay in the Synth was causing a flanging effect! I did try the pitch block but it produces a fixed frequency offset rather than the desirable octave. Now I understand how the Synth works I can set to work with some filters.....being careful of differential delays of course!
Many many thanks for your time in explaining this to me Bob
John
Hello once more,
It has just occurred to me that you might try a Crossover filter to route the low frequencies to your Sub-harmonic synth and the high frequencies elsewhere. Its advantage is that filter phasing issues are easily handled within the crossover's GUI -- you can see whether the sections add up to a flat response.
Best regards,
Bob
Bob, what about squaring the input and subtracting that from the subharmonic output? I don't have an analog rig I can set up easily to test at the moment
Jon: Do you mean using the frequency-doubling property of the square function
(sin(x))^2 = 0.5[1 - cos(2x)]
and inverting it to produce a half-frequency output? Interesting idea! My limited intuition suggests that the result may behave more like a square-rooter than a frequency divider -- but really the math involved is beyond me. I hope to try it out when time permits.
Fortytwo: you had mentioned above that you're "not a professional DSP programmer." You've come to the right place! I'm nothing like a DSP programmer, and we need not be such in Sigma-Land. We happily use familiar analog and discrete logic techniques here. On the other hand, a rudimentary understanding of DSP principles is helpful when things go wrong. ADI and its author has thoughtfully made a DSP book available for download from their main site. I can't link to it now because doing so would send this post into moderation over the long weekend.
Best regards,
Bob
Hello fourtytwo,
The Low-Frequency version appears to place internal filters before and after the simpler General version. Thus it behaves a bit differently:
It's less sensitive to input harmonics than the General synth.
Its output waveform is smoother, but is noticeably delayed.
All the waveforms shown are with its Max Harmonic control set to 120 (Hz?). I didn't notice this control having much effect.
100 Hz In, showing the 50 Hz output waveform and its delay:
Here's the result with a 100 Hz + 200 Hz input added (the output isn't unduly affected, remaining at 50 Hz)
I also tried running a feedback subtraction around a squarer function, but could not obtain the desired half-frequency output:
Best regards,
Bob
Sorry Bob, I was getting my even and odd harmonics confused last night, the approach I suggested won't work.
What about something like your PLL module? Run the subharmonic output to a clipper, then feed that to a PLL that outputs a control voltage to a VCO module, which is then added (after an envelope triggered by the original input signal) to the original signal? That avoids the need to filter the subharmonic output, which would limit its useful range to about an octave.
Or perhaps just trigger the PLL with the input signal and divide the control voltage output by two?
That's a lot of instructions and I don't have time to sketch it this week, but that's the best I can think of.
Good morning all well thanks to your help I came up with the following circuit that seems to perform ok both with REW testing and listening, remember this a sub! The top path is the sub low pass followed by a dummy low pass to equalize the number of filters in each path. The lower path 1st filter selects the input frequency range for the harmoniser, then the harmoniser itself followed by a low pass to get rid of its harmonics. Finally the output is mixed back to the original, the mux is for fast A/B testing. All filters are 48dB/Octave, I use crossovers that may be more expensive in instructions but all the other filter type leave me numb wondering how to achieve steep slopes!
I will try to add the schematic and some REW plots....... Ok will have to tr later with schematic i dont think it likes pdf here! this plot shows it with a 110hZ pure tone input
Here it is, what a rigmarol
Hello fourtytwo,
Good to hear you've obtained satisfactory results. Likely you added the second crossover on top to match the phase delay. If your sub needs a phase control, you'll find several examples on EZ. Those using the Hilbert Transform demonstrate how DSP can do what analog simply could not. And yet, here we are drawing our analog-like circuits in SigmaStudio! It reminds me of the tag line for HP's earlier digital scopes (I'm still using one at work, CRT and all):
"The look and feel of analog, the power of digital"
Speaking of scopes, for basic audio work you can pick up a Hantek or similar USB scope for a song. I made the photos above with their low-end 20 MHz model. It does have some annoying limitations, but it works!
Jon -- No need to apologize for offering a creative idea! Mine don't always work either. As for the PLL, I've been wanting to make it wideband somehow. With its choice of phase detectors, the CD4046 PLL could be a model for this. A very few early -4046 data sheets showed the logic within its wideband phase detector. I just haven't gotten around to emulating this within a ADAU1701.
Best regards,
Bob
Thanks once again Bob, your right about the extra filter and it seems to do the job nicely! Yup guess I grew up in analogue too and that's why I like SigmaStudio! Nice tip about the USB scope I have a very elderly TEK 465 with a few faults but still just about useable if things get serious enough! I guess I should have thought of scoping that block like you did but I wasn't expecting it to tell me much! Thanks for the info about phasing, ATM I choose 0 or 180 by the speaker connector, guess some fine tuning would be nice. As for the result, on old vinyl its amazing especially adding a 10hZ cut for the rumble as well, may thanks once more for your help people
John
If only subharmonic synth was the only missing topic in the SigmaStudio documentation/help file... Here are some others which are still missing in 3.12 (they were already missing in 3.10 and 3.11) :
- VCO with flexible phase
- VCO with reset
- Karplus-Strong algorithm
- Signal Detector
- Dynamic Mixers
- Sample/Hold
etc, etc...
As far as I can see, the help files are still from 2011 or 2012 (SigmaStudio V3.9), they have not been updated for V3.12. ADI should make a real effort to update their documentation/wiki/help files, because they are slowly becoming out of phase and lead developers to loose a huge amount of time to understand how the blocks are working (to finally discover that they do not perform what you are expecting... like me when I tried to use the phase reset VCO)
I have done that for my own use (to help the people working with me), but ADI does not seem to realize that they could get serious help from developers using their product (yes, I am angry after them, because they make me lose a lot of time on my SigmaDSP based projects for my company...)
Hello Ben,
I'm afraid that what you're saying about the documentation is substantially true. ADI stopped updating SigmaStudio's built-in help files some time ago in favor of the wiki, yet even this has fallen behind. I suspect there's several difficulties:
It's getting tougher to correctly document everything, because some blocks exhibit differing behavior with the Sigma300 chips (ADAU145x) compared to the others. Its 8.24 decimal format (instead of 5.23) is responsible for many, but not all, of these differences.
Customer demand for new blocks / functions may be pushing documentation onto the back burner.
Many companies (not necessarily ADI) view documentation activity as an expense, not a vital function.
Good technical writing is increasingly rare. If you don't believe me, have a look at the "documentation" that comes with a typical C compiler! Contrast this with the data sheet for one of AD's older (i.e. real analog) parts, such as the AD636. It's art!
Hopefully the docs issue will resolve someday. In the meantime, try searching EZ for user-provided docs and applications. I've tested and reported on a few function blocks myself -- either because I needed them, another user needed them, or just for fun. Any user can update the wiki (just as with Wikipedia), but I publish my reports here because they count toward points in EZ (it's that old saying: "What gets done is what gets rewarded."). When all else fails, do what you'd likely do with an unfamiliar C function -- code a simple project around the block in question, try it out, and see what it does.
Best regards,
Bob
Hi Bob,
in a way, I am happy to see that I am not the only one feeling bad about that...
I could say "if only they could publish some information about the assembler, so we can understand more easily how these blocks are working"...
To give you an idea of what I do with the SigmaDSP chips, you can take a look to my website (http://www.imodular-synth.com), you will understand my problem. I am crazy enough to use SigmaDSP to make synthesizer's modules... (and it works )
Now, I did not know that the wiki was also open to us for modification. I was convinced that only ADI team could edit it (don't ask me why... probably too lazy to check if it was possible or not)
And basically, what you describe about the way to understand how some blocks are working is exactly what I do, even if I consider it's the worst way to work (it's like getting in a plane and push all buttons, and expect that the plane will fly correctly sooner or later)
Benoit
This question has been assumed as answered either offline via email or with a multi-part answer. This question has now been closed out. If you have an inquiry related to this topic please post a new question in the applicable product forum.
Thank you,
EZ Admin
Please log in to reply.



















