Phase modulation with ADAU1701
I need to design a sinusoidal VCO with very deep phase modulation (multiples of 2*PI range). The VCO block under Sources/Voltage Controlled doesn't have phase input, hence I hoped to use trigonometric equations with the Quadrature sin/cos oscillator to modulate the generated signal using the trig equations for sum of angles. Unfortunately, it turns out the Trigonometric block is not available for SigmaDSP series (sic!). Another idea was to approximate the sin and cos functions with an interpolated LUT, but I would need to wrap the angle around 2pi, and there is no Modulo block as well. I am really disappointed how much the SigmaDsp series is lacking in terms of really basic blocks. Can anybody help, please?
Audio Signal Processors
sigma studio
4.5.1
software
sine generator
SigmaDSP Audio Processors
vco
phase modulation
adau1701
Show More
Hello,
The limitation may be with the -1701, not SigmaStudio itself. Other DSPs like the Sigma 300 / 350 models (ADAU1452, etc.) include more math functions. The ADAU1787 has a math package rivaling any C compiler! Unfortunately, it's made for noise-cancelling headphones and thus has a tiny package which is a bear to handle. And none other than the -1701 is truly convenient to use, with analog in-out, self-booting, and pot inputs. I'd love to see AD make a "super 1701" -- yet in the meantime, what can we do with what we got?
You could design your own modulo arithmetic with ABCD Comparators and / or lookup tables. However, for the example below I just brute-forced the Linear Interpolators to cover the whole 2-pi range. With 65 points each at least they appear pretty good -- depending upon what accuracy you need. And you can expand them to 128 or even 256 points, because doing so uses no more instructions, only parameter memory. Or with some simple logic you can flip them for negative inputs (the first step of going to modulo math). Through headphones this thing has a unique sound, like a bell that never dies down. Or, with the headphones a few feet away and a fan running nearby -- it sounds like you're inside the cabin of a 737 waiting on the runway.
I made the tables with a spreadsheet, then simply copied and pasted each trig column into its own text file for loading into the interpolators.
Best regards,
Bob
Thank you very much, Bob. Your response inspired me to implement this by cascading two LUTs: first one just gets the folding done with simple linear segments, the second one shapes within +/- PI/2 range :D
Please log in to reply.
