DDS using Function Generator and Formulae w/ User Freq Control

  • Software
  • DDS using Function Generator and Formulae w/ User Freq Control
John Yaron

Posted on 09.09.2021 23:08

Can you provide the best way to implement a multi-frequency phase-continuous direct digital synthesizer (DDS) with real-time user frequency control using formulae linked to the function generator?


The goal is to create a summed Fourier series of sinusoids which can have non-integer related frequencies (example.. 1.3Hz + 7.1Hz + 17.9Hz ... etc) and the individual sinusoid frequencies (and amplitudes) can be changed in real-time by user GUI control knobs. Any individual sinusoid changes are phase continuous to avoid any waveform glitching during the desired frequency knob changes.


Can the SIRIUS FG module support a phase accumulator (clocked at perhaps the output sampling rate) for each of the desired sinusoids and sum the individual sine waves together before output on an analog channel BNC connector? Thanks.

John Yaron

Posted on 10.09.2021 17:51

UPDATE: I was able to implement the function generator combined with the sequencer to perform this continuous phase multi-freq synthesizer.


The only remaining question is: Is the 'frequency multiplier' property for each channel available as a control channel?


Gregor Šmit

Posted on 14.09.2021 15:17

Dear John,


thank you for contacting us. Unfortunately there is no control channel for the 'Frequency multiplier' property in function generator. Do the frequencies in the example.. 1.3Hz + 7.1Hz + 17.9Hz ... have the same divider for all the frequency range or are they just specific numbers not correlated to each other?


I will talk to our developers to see if the 'Frequency multiplier' can be accessed and will get back to you as soon as possible.


Kind regards.

John Yaron

Posted on 14.09.2021 18:44

Thanks Gregor.


I am able to implement overall frequency control of the composite summed sinusoid series with an input control widget via the available A0/Ctrl/Freq property. This is sufficient for sinusoids with fixed relative freq ratios to emulate ideal rotating machines.


However, I would ideally like to be able to independently change each 'Freq Multiplier' in real-time (and also amplitude) with linear phase transitions to provide a smoothed signal output with 'skewing' non-integer harmonics. Using an absolute time reference (ie.. sin(Fn * time + phase)) is awkward and requires tracking of the apppropriate phase value to provide for each change to avoid phase discontinuities. This is why I was asking if the function generator can implement multiple 'phase accumulators' w/ subsequent sine table lookup for each accumulator output and final summation of all sinusoids (ie.. multiple direct digital synthesizers - DDS).


I assume this fourier series sum would be implemented in real-time in DewesoftX and streamed in real-time to the SIRIUS unit... or something. Is it possible to write code somehow within DewesoftX to implement the multiple phase accumulators w/ sine lookup and implement this type of real-time phase-continuous fourier series generator?


Here is my current implementation (Note: ~63MByte video file size)

http://www.yashu.com/PartialFSS_using_DewesoftX.avi


Gregor Šmit

Posted on 15.09.2021 08:57

Dear John,


thank you for the information and the video. After talking to our developers there is unfortunately no option to change the 'Frequency multiplier' option in the Function generator. It is not possible to write a code inside DewesoftX to implement multiple phase accumulators w/ sine lookup and implement it in real time. The fourier series sum implementation also can not be done in real-time, because the Windows operating system is not working in real-time.


Kind regards.

Login to reply to this topic. If you don't have account yet, you can signup for free account .