Whilst we can use the audio (Volts) feedback module for FM feedback oscillators in Synthedit, because of the limitations of the feedback modules in SynthEdit it’s not quite right.
However there’s a much better approach using the ED Shape Osc 2. This uses internal feedback in the module itself removing the need for a feedback module and it’s inherent frequency limitations.
You can define the shape of the oscillator’s output waveform as a sine wave using the shape plug, we will use a sine wave.
Using the ED Shape Osc 2.
This module works a little differently to the usual VCO modules, in that by supplying it with some parameters in the special BLOB format (don’t worry, there’s a converter module so that we can convert a standard text string to a BLOB format automatically). This is important, because as I found out the hard way if the Shape instruction is in the wrong format… no output at all.
For our purposes the Pitch Units in the properties panel should be left as the default 1V/Octave. We need to set the interpolation in properties to Curve 1 to get the nearest to a pure sine wave, Linear will give us a triangle wave, and Curve 2 has a few more harmonics in the output.
Phase feedback sets the amount of internal feedback applied to the phase modulation, this has the range of -10V to +10V.
Phase range controls the level of external phase modulation (thus having no effect on the internal feedback).
A basic single PM oscillator synthesizer.
As you can see for a basic PM synthesizer the setup is quite simple, the only bit that needs care is getting the correct information to the shape input using the ED Shape String -> BLOB module.
I have included a Level Adj module with the Input 2 plug set to 5V to reduce the signal level to prevent slipping when playing more than one note.
The Fixed Values (Text) module needs the text string which needs the following information sent to the Shape plug: (-5,0)(-2,5)(2,-5)(5,0) entered in the properties panel to define a sine wave (or very close to one).
ED Shape Osc 2 “read me file”.
I’m including this because some of it is important information when using the oscillator in our PM emulations, so please do read this.
This is a Look-Up-Table (LUT) based oscillator whose waveform can be drawn and supplied in form of a standard ED Shape.
1) The oscillator supports a Sync signal to reset the phase as well as Phase Modulation of adjustable width and feedback.
2) The total phase modulation amount is the sum of the Phase plug value scaled by the Phase Amount value and summed to the oscillator’s signed output scaled by the Phase Feedback value.
3) The internal waveform LUT is computed by interpolating through the x and y Shape nodes according to the selected Interpolation Type; Linear, Curve 1, Curve 2.
4) Shapes can be modulated by the various means currently provided by ED Shape Modules (eg. by usage of a Shape Morpher or Shape Node Modulator) without any clicks or artefacts.
5) Important: Custom drawn waveforms are more than often vertically unbalanced, for this reason an optional DC filter is provided, which automatically remove any bias from every LUT.
6) Oversampling: Optional oversampling (up to x32) for reducing aliasing is also provided.
7) Junction Points: When drawing waveforms, especially when using curve interpolations, the user is responsible to set the junction points properly, in order to preserve waveform continuity (unless desired otherwise). It may also be useful to set the first and last node to zero in the Shape Editor and disable their editing.
8) Level Fluctuations:
Curve interpolation types may cause level excursions over the clipping level (+/- 10V). Internally, LUTs are therefore always clipped at -10 and +10 V.
9) Anti-Aliasing: Waveforms containing sharp edges will naturally produce aliasing at higher pitches, which can be detected in the Frequency Analyzer and heard as a nasty inharmonic component.
10) Oversampling: The internal oversampler can be set up to a factor of x32. So as not to sacrifice CPU efficiency, a simple averaging filter is used for the decimation stage. It can’t offer the accuracy of SynthEdit oversampling or of an actual long Sinc filter, but it is effective at reducing aliasing below the audible threshold and at a fraction of the CPU load cost (at least 10x less CPU load). Keep in mind that anti-aliasing measures may not be required unless your shapes (or the result of shape modulation) contain sharp edges.
Important: In case you really want to use SynthEdit oversampling, please disable the internal oversampler so as not to waste CPU un-necessarily.
11) Shape Modulation: To modulate the input shape with the provided Shape Modifier modules, it is mandatory to use the stock Volts 2 Float converter module to drive the control float pins of the modifiers with an audio signal (e.g. from an LFO, Envelope or MIDI control), and to set the conversion rate to its maximum value (currently 60 Hz).
Important! Connecting a Volts line to a Float pin without using data type conversion will result in a much lower conversion rate, with disappointing and possibly erratic results.
Actually nothing prevents shape modulation up to (at least theoretically) audio rate by using a custom volts to float conversion module or other exotic means however, despite this transmitting blobs at sample rate or close to it is highly inefficient and is strongly discouraged.
Important! No shape will be parsed and rendered to a LUT at a rate of more than 60 Hz in any eventuality.
The Shape Osc Plugs:
Off/On:- (Boolean) Turns the oscillator On or Off. Please note that, when an oscillator is used in polyphonic mode, there is usually no reason to turn it off, since it is disabled automatically by SynthEdit when no notes are playing.
Shape:- (BLOB) The input for defining the waveform Shape in standard BLOB format (-5 to 5 Volts). Values larger than +/- 5V are internally still allowed but the curve may be clipped depending on your Shape Editor settings. The curve is still clipped at -/+ 10 V internally though.
DC Filter:- (Boolean) Turns on or off the built-in DC filter. Unless you are using a “drawn” waveform this is not needed (especially in our FM emulation)
Pitch:- (Volts) Sets the volts to oscillator frequency conversion (LUTs for seconds), in Hz or Octaves as specified by the Pitch Units pin. The allowed range is from zero Hz (or zero Octaves, which still corresponds to a non-zero frequency) up to half Nyquist frequency (10 Octaves = 14080 Hz) depending on the Pitch Unit setting.
Sync:- (Boolean) Resets the oscillator phase to zero i.e. to the start of the LUT, unless any additional Phase modulation is specified
Phase:- (Volts -10V to +10V) The audio input for oscillator phase shift modulation, this can be used at audio frequencies for phase modulation. 5V represent a phase phase shift of half a wave period forward (+PI) while -5V is a half period backwards (-PI)
Phase Range:- (Volts 0V to +10V) Controls the depth of phase modulation applied via the Phase plug.
Phase Feedback:- (Volts -10V to +10V) The amount of oscillator output sent back and summed at the Phase input to achieve Yamaha DX7 -like feedback. -10V = 100% 180- degrees out of phase, and +10 V gives 100% in phase feedback.
Properties settings:
Shape ITP:- (List) Defines how the shape nodes will be interpolated; Linear, Curve 1, Curve 2.
Oversampling:- Selects the internal oversampling factor; Off, x2 ,x4, x8, x16, x32.
Pitch Units:- selects whether pitch shall be interpreted in Octaves or Hz