Avatar

Please consider registering
Guest

sp_LogInOut Log In sp_Registration Register

Register | Lost password?
Advanced Search

— Forum Scope —




— Match —





— Forum Options —





Minimum search word length is 3 characters - maximum search word length is 84 characters

sp_Feed sp_TopicIcon
Ch. 9 - Stability problems with the Direct Oscillator
No permission to create posts
January 11, 2016
10:14 pm
Avatar
gspark
New Member
Members
Forum Posts: 2
Member Since:
August 29, 2014
sp_UserOfflineSmall Offline

Hi,

I have noticed that the improved version of the Direct-Form Oscillator (§ 9.2.5 in the FX book) can easily get locked into a non-oscillating state (constant DC output of 1s) after trying changing the oscillating frequency a few times (especially when one tries moving the slider up and down quickly). This is because of the arcsine function giving a NaN result ("-1.#IND000") for values m_f_z1 > 1.0 in cookFrequency(), resulting into NaN values in the output (I assume that the NaN values are then converted into 1s by RackAFX).

Although I have not done any rigorous experimentation, it appears that if I turn on the oscillator and keep the frequency as is, the absolute maximum signal values seem to be sliding slowly above 1.0 after a while.

This is also the case for the original Direct Oscillator design, although in this case it never gets locked into a DC output because both m_f_z1 and m_f_z2 are explicitly updated with new sine values based on f_wT.

My question is: is it expected that the absolute maximum output values > 1.0 for this design? As far as I can tell, the design does not theoretically allow for this. So does this effect have to do with signal quantisation effects/truncation errors?

Thanks.

January 12, 2016
8:11 pm
Avatar
W Pirkle
Admin
Forum Posts: 140
Member Since:
January 28, 2017
sp_UserOnlineSmall Online

Hi

I have not noticed stability issues with the Direct Form oscillator, but I did not generally yank the slider control around.

The sinusoidal oscillator in RackAFX is the same Direct Form algorithm. In the latest release of RackAFX (v6.6), I used parameter smoothing to disallow rapid jumps in the controls for the frequency and amplitude sliders. See the post by Alexirae here:

http://www.willpirkle.com/foru.....per-noise/

His solution is elegant and simple. The MMA recommends using ramp-smoothing (see the DLS Level 1 and 2 specs) but I've found the LPF solution is simpler to implement.

The Direct Form oscillator works by placing poles directly on the unit circle. Any rounding/truncation errors in the calculation of the coefficients will affect the ultimate location of these poles, either just barely inside or outside the unit circle. This will have a long-term effect of gradually increasing, or decreasing of the signal amplitude, though it generally takes quite a while for this to occur.

You can get more oscillator algorithms (and great references) here:

https://ccrma.stanford.edu/~dattorro/EffectDesignPart3.pdf

All the best,

Will

January 15, 2016
2:38 am
Avatar
gspark
New Member
Members
Forum Posts: 2
Member Since:
August 29, 2014
sp_UserOfflineSmall Offline

Thanks for this. I had read the Datorro paper - indeed one with very useful references. In fact, my explanation for the instability that I noticed was based on this text. Regarding the Direct-Form oscillator, the paper says that "[a]ny instability in the sinusoidal waveform can only be attributed to signal quantization effects, primarily in the form of truncation error in this recursive topology."

Thanks also for pointing me to the zipper noise code.

Forum Timezone: America/New_York

Most Users Ever Online: 36

Currently Online: W Pirkle
4 Guest(s)

Currently Browsing this Page:
1 Guest(s)

Top Posters:

Skyler: 47

Derek: 41

Peter: 41

clau_ste: 39

Frodson: 38

Gwen: 32

EZB: 24

lppier: 23

Msaldaña: 18

Jorge: 17

Member Stats:

Guest Posters: 1

Members: 478

Moderators: 1

Admins: 4

Forum Stats:

Groups: 11

Forums: 29

Topics: 479

Posts: 1870

Newest Members:

certvalue111, sobhana s, sam, annaharris, Marie Weaver, kev, Steven, Mr Anderson, mguy, omelc

Moderators: W Pirkle: 140

Administrators: Tom: 65, JD Young: 80, Will Pirkle: 0, W Pirkle: 140