Moselle has a Stored Waveform Oscillator (SWO) which is bandwidth-limited and simply has no aliasing, no matter what frequency you use it at. It had a lot of power but not a lot of flexibility for crazy things (sync, FM, changing waveform based on phase, etc.).
So there's also a "naive" oscillator which simply outputs a real square squarewave, a simple-slope sawtooth, and so on, as you'd draw with a ruler on graph paper. In the digital realm, such waveforms actually sound terrible especially at higher frequencies as they have strong harmonics over the Nyquist frequency, which alias. Much over middle C, they start to sound atonal, and if there's a gentle slow pitch bend you hear the aliases bending the opposite way of the note itself.
As cleanup, I'm just generating 1 sample right where the waveform changes from -1 to 1 or vice versa, as an AVERAGE value of all values of the theoretical waveform from -1/2 to +1/2 sample around the actual sample.
This single average sample seems to cut aliasing 15dB! For instance, with an A6 sawtooth, the strongest alias an octave or more below the fundamental is -42dB just below A2. By changing one generated sample, it goes to -57dB. At that point it is audible... if there's no other music, just a test tone... with no filtering... if either you know what to listen for or bend the note.
I've written a test patch that compares the SWO, with the Oscillator in averaging mode, and in old mode.
I've got Sawtooth working, it seems, so next I'll do Square/Pulse and SawPulse. Should just be an hour or two. Then a couple other tiny cleanups for the Oscillator, and on to the next project. I think I'll be releasing alpha-09 weekly, since most of these projects are very small, with local effect, no entanglements, and easy to test.
Alpha-09 proj 1 of 56: better waveform shapes for the "simple" Oscillator
-
- Site Admin
- Posts: 74
- Joined: Fri Jun 17, 2016 3:39 am [phpBB Debug] PHP Warning: in file [ROOT]/vendor/twig/twig/lib/Twig/Extension/Core.php on line 1266: count(): Parameter must be an array or an object that implements Countable
Re: Alpha-09 proj 1 of 56: better waveform shapes for the "simple" Oscillator
Given that the vast majority of the tutorial patches use the simple Oscillator without filtering, this one change alone will probably do more to improve the fidelity of Moselle as perceived by someone learning it, than anything else I've done since 2010.
Who is online
Users browsing this forum: No registered users and 6 guests