Simple Phase Modulation Oscillator



PMOsc is a simple lightweight phase-modulated oscillator. The carrier and modulators are all sine waveforms. The oscillator has six modulators at fixed ratios of 0.5, 1, 2, 3, 4, and 5 times the carrier. Each modulator below the first has a level control and a toggle switch. When the switch is on, the modulator is modulates the one above it and when off it modulates the carrier directly. The 0.5 modulator always modulates the carrier. The oscillator has a 1 per octave input, sync input, external phase modulation input and a main carrier audio output as well as outputs from each modulator.

Version History

Revision File Date Notes
1.1 PM Oscillator V1.1.audulus (35.4 KB) 11/11/2018 replaced clamped knobs (for Windows users) added sync and external phase modulation input
1.0 PM Oscillator V1.0.audulus (34.2 KB) 11/10/2018 initial upload to Forum


Revision File Date Notes
1.1 PMOsc.demo V1.1.audulus (510.2 KB) 11/11/2018 updated PMOsc and spline AR versions
1.0 PMOsc.demo V1.0 audulus.audulus (508.9 KB) 11/10/2018 initial upload to Forum


Might you upload a version with old-school knobs? I’m on windows ATM


no problem


Excellent! This is pretty awesome when you just want straight ratios. The button routing is a great way to make branch and stack algorithms.

I think it would be pretty easy to set the ratio per each “operator” and chain them, now that there is a phase modulation input you can easily make basic DX-FM patches.


I found myself using integral ratios more often than not, and by using fixed ratios I was able to keep the expressions simple and reduce the CPU load. The toggles were also a simple way to introduce some different algorithms. Not really a replacement for a full blown PM operator, but a nice way to create some harmonic variation by varying the modulator levels. I was able to get a pretty wide range of timbres out of the module


And of course phase locking is a breeze with this method.


I took the individual outs on the vco and sent them though a hardware mixer, then took that source and drove the FM input on my vcf. It made the bassline just that much meaner.


You can get some really nice tones if you send each output to a mixer, so that you can adjust the level of significance that each oscillator plays in the chorus. I ran it out of the ES-8 and split the signal 3x3 (2 x 3>1 mixers to separate VCAs to stereo VCF) to get a stereo grouping that would be noticeably differentiated. Some reverb at the end to let it breathe, obviously.

PM Oscillator to ES-8.audulus (63.7 KB)

Any ideas on how the external phase modulation and sync inputs are best used? I am foggy on this.


The frequency of the primary oscillator is determined by the o input. Each of the six modulators is a multiple of the primary frequency. Depending on the toggle, each modulator phase modulates either the primary or the modulator above it at the level set by the knob. The outputs are all at full level. In your example a pure sine at 5x the base frequency is output on 5. Because the switch is on, this is also used to phase modulate the sine at 4x. The modulated signal is output on 4. This signal also phase modulates the sine at 3x, etc. Because the switch at 1 is off, the signal at 1 is used to modulate the primary oscillator instead of the 0.5 oscillator. So the primary oscillator is being modulated by both the 0.5 oscillator and the modulated signal at 1. This is the primary output of the oscillator which in your case is unconnected.
Like many oscillators, the sync can be used to phase-align the oscillator with another external oscillator or used for hard sync modulation. A high on the s input will reset the phase on the primary oscillator to 0. The external phase modulation input is added to the modulation signal applied to the primary oscillator so that it can also be modulated by an external oscillator.


So this is like the application of reseting an LFO. I feed it a gate. While for phase alignment, I feed it the steady output of another oscillator?


Since the oscillators in Audulus are digital they don’t ordinarily drift. If two oscillators are set to the same frequency you can send a sync pulse to both to phase align them. Sending the output from one to the sync input of the other will also phase align them. The sync input is simply a way to reset the phase of the oscillator to zero. By sending a sync at a different frequency you get a “hard” sync modulation


Thanks for all of the info, I have reread this thread about 15 times. Unfortunately the state of the patch I uploaded could have been better, but that has little to do with the design. This is where it would be nice to get into snapshots or presets, so that more possibilities can be shared without 10 iterations of the same file. The design is really nice because of how it fits so well with the ES-8 receiving all the outputs, then also fun to split into stereo as I mentioned.

Perhaps one day you will grace us with a ‘complex’ phase modulation oscillator. Really cool to be in on the difference between FM and PM, but also how yourself and @robertsyrett have juggled various module configurations with respect to CPU strain and usability.

I will probably continue to reread this.


Have a look at this: uPop DX Phase Modulation Operator. This is a single PM operator based on the Yamaha DX 7 operator. It is intended to be combined in various algorithms in the same way you can select various algorithms on a DX 7. It’s modular, so you can use as many operators as you like (CPU permitting) in parallel, serial or combination configurations. I built a variety of other PM based modules with built in envelopes, key tracking etc. which were posted on the old forum.
There’s a good PM tutorial available at It uses a free DX-7 emulator called Dexed which would be good to install (PC or Mac) before starting the tutorial. I believe there are also free DX-7 apps for the iPad, although I haven’t played with any. Yamaha introduced the first PM synth and the DX-7 was probably their most successful model. They continue to use PM synthesis in the current Montage line.