VOPM: The Unofficial Manual
VOPM is a VST instrument (VSTi) which emulates the OPM (Yamaha YM2151) chip. It was developed by Sharp X68000 (X68K) home-computer enthusiast Sam. VOPM has been used in such high-profile releases as the “Darius Remix” album and the “Omega Five” game soundtrack.
About Yamaha OPM
OPM, or Yamaha YM2151, is a four-operator FM chip which was popular in the 1980s and early ’90s. American and European videogame fans will most likely be familiar with Sega Genesis (Mega Drive), whose OPN2 sound chip is a slight variation on OPM. The chip has also been used in countless arcade games including “Paperboy”, “Outrun”, “Street Fighter II”, and the “Metal Slug” series. MIDI fanatics may remember Yamaha OPM from entry-level Yamaha gear such as FB-01 and DX100, the latter of which was used with a talkbox for some of “Zapp & Roger” hits.
OPM features four oscillators. As in other Yamaha synthesizers, these are referred to as operators. They are labeled C1, C2, M1, and M2, and each produces a sine-wave output and features an ADSR envelope. There are eight different ways in which the operators can be hooked together, which are referred to as connection algorithms and abbreviated “Con”.
The output of each individual operator may be amplitude-modulated by the LFO which features four different waveforms. In addition, the pitch of every operator can be frequency-modulated by the LFO. The operator M1 can also modulate itself, while the operator C2 can produce pitched noise output instead of a sine wave. The synthesizer’s features are discussed in more detail below.
Envelopes in VOPM are a variation on the ADSR envelope. The volume of an operator will start at 0 and rise to the maximum volume (TL) in a time specified by the attack rate (AR). It will then decay to the sustain level (D1L) in a time specified by the first decay rate (D1R). As the note is sustained, it decays to 0 at the rate specified by the second decay rate (D2R). When the note is released, it immediately decays at the rate specified by the release rate (RR). The graph to the right of the algorithm display (EG) shows a graphical representation of the envelopes.
The topmost position of the TL slider corresponds to zero output level of the operator while the bottommost position corresponds to maximum level.
Sometimes it’s useful to detune the operators, either to add roughness or a chorusing effect to the sound. There are two kinds of detuning in OPM: coarse (DT2) and fine (DT1). DT2 produces the most obvious effects, and will add either a rough tone or a gong-like tone to the sound when used as a modulator.
Fine detuning is more useful for carriers than coarse detuning is, and can also add a sharp and interesting texture when used with a modulator. This setting works in an unusual way in OPM. The fine detune amount ranges from 0 to 7. Values 1 through 3 cause the pitch to bend upwards, while values 5 through 7 cause the pitch to bend downwards. Values 0 and 4 are equivalent — they produce no change in pitch. So to achieve the maximum amount of fine detuning between two operators, set one to 3 (maximum positive value) and the other to 7 (maximum negative value).
Algorithms and Operator Masking
When editing patches, users can choose from 8 different connection algorithms. These are selected by clicking on the numbered buttons (0–7). The current algorithm is shown graphically in the space immediately above the buttons (“Con”).
The graph describes the connection algorithm as follows: where operators modulate another’s phase, an arrow is drawn from one operator (the modulator) to another (the carrier). Where operators mix (add), a “+” symbol is shown. The last operator, M1, is the only one with feedback, and this is shown by a feedback-loop path labeled “FL”. Finally, an arrow going to the right into blank space is shown to represent output. Operators may be turned on and off by using the operator-mask button found right underneath the “ProgNum” display.
VOPM has a single LFO which can be used to modulate pitch, amplitude, or both. Users can choose between a saw, square, triangle, or noise waveform. The saw is a ramp-up when used for pitch modulation and a ramp-down when used for amplitude modulation. Similarly, the triangle starts as a ramp-up in the phase-modulation mode and starts as a ramp-down in the amplitude-modulation mode.
The LFO runs at the rate specified by FRQ, and the maximum depths for pitch and amplitude modulation are set by PMS and AMS respectively. Amplitude modulation may be enabled or disabled for each operator by setting the “AMS Enabled” parameter (AMS-En) found immediately below the operator mask (OpMsk). The current depth of the amplitude or pitch modulation may be set either as a part of the patch (AMD or PMD), or via a MIDI CC message. The coarse amplitude-modulation level is set by sending CC #1 or #12 and the fine amplitude-modulation level is set with CC #33 or #44. Similarly, the coarse pitch-modulation level is set by sending CC #2 or #13, and the fine pitch-modulation level is set by sending CC #34 or #45.
An LFO delay may also be set by sending MIDI CC #78. When this delay is set, the LFO will not kick in for a period of time after the note-on event. This is useful for writing leads in a tracker or a step sequencer without manually entering CC data for each note’s AMD or PMD.
To simulate the behavior of a musical instrument, it’s sometimes useful to have the envelopes speed up as the pitch played is higher. For example, string instruments decay more quickly the higher the note played. In VOPM, this is done by setting an operator’s “Key Scaling” (KS) amount.
Multiplier (MUL) is an integer number that the basic frequency of the operator output is multiplied by.
The displayed value of zero corresponds to the real multiplier of 1 (i. e. no multiplication). For positive displayed values, the real multiplier is twice greater than the displayed one: a displayed value of 1 corresponds to the real multiplier of 2, a displayed value of 2 — the multiplier of 4, and so on; using an uneven multiplier is impossible.
In addition to being able to generate noise with high feedback levels, VOPM also has a noise generator. If “Noise” is enabled, the operator C2 will generate noise instead of a sine wave. The frequency of the noise generated can be set with the “NFRQ” slider found immediately beneath the “Noise” button.
One feature of VOPM is that the parameters can be displayed in hexadecimal (hex) notation rather than decimal (the default). This is changed by clicking on the “Dec” button directly under the “Import” and “Export” buttons.
|C1/C2||Carrier 1, Carrier 2|
|D1L||Decay Level 1|
|D1R/D2R||Decay Rate 1, Decay Rate 2|
|M1/M2||Modulator 1, Modulator 2|
|TL||Total Level (operator level)|
Monophonic Mode and Portamento
VOPM defaults to polyphonic mode, but can be switched to act as a monophonic instrument. This is done by sending MIDI CC #126. The instrument can be set back to polyphonic mode by sending CC #127. During monophonic operation, when two notes overlap, the first note glides to the frequency of the second note at the portamento rate. The portamento rate is set with CC #5. Note that if both notes are not held, one note will replace the other with no portamento.
Portamento can also be used in polyphonic mode. To turn portamento on, send MIDI CC #65 with a value of 64 or greater. In this mode, every note will glide into the next. This only needs to be set in polyphonic mode. The portamento starting note may also be controlled with MIDI CC #84.
A related feature is pitch bending. This is done by sending a pitch-wheel signal to VOPM. VOPM defaults to a ±2 semitones pitch-bend range, but this can be set by sending the standard RPN pitch-range change. That is done like this: first, send MIDI CC #100 and #101 with a value of 0. This selects the “pitch bend” command. Then send the “set data (hi)” CC #6 with values in the range from 0 to 96.
OPM clock speed may also be set. It defaults to a rate of 3.58 MHz, but can be set to 3.57 or 4 MHz. This is done via NRPN commands: first, send MIDI CC #98 and #99 with a value of 0. Then the range of MIDI CC #6 from 0–63 selects 3.58 MHz, 64–111 selects 3.57 MHz, and values 112 and greater select a 4 MHz clock. Setting the clock speed affects the envelope rates.
If VOPM is too quiet, the output volume can be changed with NRPN #1. Be careful with this setting: it bitshifts the output (each value is double the amplitude of the previous one), and only a value of 0 or 1 yields generally unclipped results. Playing with this setting can lead to extremely loud volumes and clipping easily. To set the output volume, first send MIDI CC #98 with a value of 1 and CC #99 with a value of 0. CC #6 will then set the output volume.
Finally, OPM also has a lowpass filter which defaults to “on”. This is set with NRPN #2. Do this by sending MIDI CC #98 with a value of 2 and CC #99 with a value of 0. Then CC #6 will turn the filter off with values from 0 to 63, and on with values from 64 to 127.
Full CC List
The following is a list of CCs that VOPM will respond to.
|$1||1||AM LFO Depth (hi)|
|$2||2||Freq. LFO Depth (hi)|
|$3||3||LFO Rate (hi)|
|$6||6||Set Data (hi)|
|$C||12||AM LFO Depth (hi)|
|$D||13||Freq. LFO Depth (hi)|
|$10||16||TL0 Volume (hi)|
|$11||17||TL1 Volume (hi)|
|$12||18||TL2 Volume (hi)|
|$13||19||TL3 Volume (hi)|
|$21||33||AM LFO Depth (lo)|
|$22||34||Freq. LFO Depth (lo)|
|$23||35||LFO Rate (lo)|
|$2C||44||AM LFO Depth (lo)|
|$2D||45||Freq. LFO Depth (lo)|
|$30||48||TL0 Volume (lo)|
|$31||49||TL1 Volume (lo)|
|$32||50||TL2 Volume (lo)|
|$33||51||TL3 Volume (lo)|
|$62||98||NRPN Data (lo)|
|$63||99||NRPN Data (hi)|
|$64||100||RPN Data (lo)|
|$65||101||RPN Data (hi)|
|$78||120||Force all off|
Importing and Exporting Patches
VOPM can import patches from MDX files, which is a format designed for the Sharp X68000 home computer. In order to import instruments, these files must be converted to the OPM format by using the MDXPG tool. VOPM also supports exporting patches in the OPM format.