Page 1 of 1

Analog oscillator qualities

Posted: Sun Apr 26, 2020 5:57 am
by andro
I am not sure if this is an appropriate forum to ask, but here goes. I have started in earnest developing modules. I have very long experience in software development, and a background in mathematics, so I understand DSP concepts. I'm delighted to have my own Java oscillator code running nicely in modules. But something I lack experience in is how to make a precision sine oscillator have the analog attributes that are desirable. What sort of approach does one take to achieve this? What parameters should vary, and how?

I notice the library Analog Oscillator has a GetSineValue method as well as a GetPureSineValue method, so the question is also, what exactly is going on in the sine method? Listening carefully I can hear slow pitch drift, but I am not sure if there are phase and distortion artefacts introduced as well.

Any pointers most gratefully received!

Re: Analog oscillator qualities

Posted: Mon Apr 27, 2020 12:22 pm
by Captain
Good question! :D Without any deep analysis of MD’s ”analog” sine wave, here’s some quick ideas off the top of my amateur head. In general, I don’t think there’s any strict rules or steps for making an oscillator more ”analog”, especially since there could be an infinite amount of analog sine oscillators that all sound different. But as you already seemed to suggest, making everything ”less than perfect” is a good starting point:

- Small imperfections and random drifting in pitch/phase and amplitude are always a beautiful thing (something that my Drift Pack modules are designed to do :mrgreen: )

- Subtle saturation to add extra harmonics to the pure fundamental frequency

- A touch of good ol’ noise never does any harm

- More esoteric stuff, like simulated crosstalk from other oscillators, some electrical disturbance, small dropouts, etc... there’s an infinite amount of things that could be happening in the analog world :)

Which of these qualities are ”desirable” is up to discussion.... But might be worth trying them all, and see how they work in different contexts!