102 lines
4.3 KiB
Markdown
102 lines
4.3 KiB
Markdown
![]() |
# ESS ESFM
|
||
|
|
||
|
an enhanced version of Yamaha's OPL3, adding many features which weren't present on the original chip, such as 4-op on all channels, coarse/fine detune, per-op panning, envelope delay, noise generator and advanced modulation routing (no more algorithms!).
|
||
|
|
||
|
the technology was present in many of ESS' sound cards (the ES1xxx series in particular).
|
||
|
|
||
|
## effects
|
||
|
|
||
|
- `10xy`: **set AM depth.**
|
||
|
- `x` is the operator from 1 to 4. a value of `0` means "all operators".
|
||
|
- `y` is either `0` (1dB, shallow) or `1` (4.8dB, deep).
|
||
|
- `12xx`: **set operator 1 level.**
|
||
|
- `13xx`: **set operator 2 level.**
|
||
|
- `14xx`: **set operator 3 level.**
|
||
|
- `15xx`: **set operator 4 level.**
|
||
|
- `16xy`: **set multiplier of operator.**
|
||
|
- `x` is the operator (1-4).
|
||
|
- `y` is the new MULT value..
|
||
|
- `17xy`: **set vibrato depth.**
|
||
|
- `x` is the operator from 1 to 4. a value of `0` means "all operators".
|
||
|
- `y` is either `0` (normal) or `1` (double).
|
||
|
- `19xx`: **set attack of all operators.**
|
||
|
- `1Axx`: **set attack of operator 1.**
|
||
|
- `1Bxx`: **set attack of operator 2.**
|
||
|
- `1Cxx`: **set attack of operator 3.**
|
||
|
- `1Dxx`: **set attack of operator 4.**
|
||
|
- `20xy`: **set panning of operator 1.**
|
||
|
- `x` determines whether to output on left.
|
||
|
- `y` determines whether to output on right.
|
||
|
- `21xy`: **set panning of operator 2.**
|
||
|
- `x` determines whether to output on left.
|
||
|
- `y` determines whether to output on right.
|
||
|
- `22xy`: **set panning of operator 3.**
|
||
|
- `x` determines whether to output on left.
|
||
|
- `y` determines whether to output on right.
|
||
|
- `23xy`: **set panning of operator 4.**
|
||
|
- `x` determines whether to output on left.
|
||
|
- `y` determines whether to output on right.
|
||
|
- `24xy`: **set output level of operator.**
|
||
|
- `x` is the operator from 1 to 4. a value of `0` means "all operators".
|
||
|
- `y` is the value.
|
||
|
- `25xy`: **set modulation input level of operator.**
|
||
|
- `x` is the operator from 1 to 4. a value of `0` means "all operators".
|
||
|
- `y` is the value.
|
||
|
- `26xy`: **set envelope delay of operator.**
|
||
|
- `x` is the operator from 1 to 4. a value of `0` means "all operators".
|
||
|
- `y` is the value.
|
||
|
- `27xx`: **set operator 4 noise mode.**
|
||
|
- `0`: noise off
|
||
|
- `1`: square + noise
|
||
|
- `2`: ring mod from operator 3 + noise
|
||
|
- `3`: ring mod from operator 3 + double pitch modulation input
|
||
|
- note: emulation issues. subject to change!
|
||
|
- `2Axy`: **set waveform of operator.**
|
||
|
- `x` is the operator from 1 to 4. a value of `0` means "all operators".
|
||
|
- `y` is the value.
|
||
|
- `2Exx`: **enable envelope hard reset.**
|
||
|
- `2Fxy`: **set fixed frequency block (octave).**
|
||
|
- `x` is the operator from 1 to 4.
|
||
|
- `y` is the block/octave from 0 to 7.
|
||
|
- `3xyy`: **set fixed frequency f-num.**
|
||
|
- `x` contains operator number and high bits of f-num may be any of the following:
|
||
|
- `0` to `3` for operator 1
|
||
|
- `4` to `7` for operator 2
|
||
|
- `8` to `B` for operator 3
|
||
|
- `C` to `F` for operator 4
|
||
|
- `y` are the lower bits of f-num.
|
||
|
- `40xx`: **set operator 1 detune.**
|
||
|
- `41xx`: **set operator 1 detune.**
|
||
|
- `42xx`: **set operator 1 detune.**
|
||
|
- `43xx`: **set operator 1 detune.**
|
||
|
- `50xy`: **set AM of operator.**
|
||
|
- `x` is the operator from 1 to 4. a value of `0` means "all operators".
|
||
|
- `y` determines whether AM is on.
|
||
|
- `51xy`: **set SL of operator.**
|
||
|
- `x` is the operator from 1 to 4. a value of `0` means "all operators".
|
||
|
- `y` is the value.
|
||
|
- `52xy`: **set RR of operator.**
|
||
|
- `x` is the operator from 1 to 4. a value of `0` means "all operators".
|
||
|
- `y` is the value.
|
||
|
- `53xy`: **set VIB of operator.**
|
||
|
- `x` is the operator from 1 to 4. a value of `0` means "all operators".
|
||
|
- `y` determines whether VIB is on.
|
||
|
- `54xy`: **set KSL of operator.**
|
||
|
- `x` is the operator from 1 to 4. a value of `0` means "all operators".
|
||
|
- `y` is the value.
|
||
|
- `55xy`: **set SUS of operator.**
|
||
|
- `x` is the operator from 1 to 4. a value of `0` means "all operators".
|
||
|
- `y` determines whether SUS is on.
|
||
|
- `56xx`: **set DR of all operators.**
|
||
|
- `57xx`: **set DR of operator 1.**
|
||
|
- `58xx`: **set DR of operator 2.**
|
||
|
- `59xx`: **set DR of operator 3.**
|
||
|
- `5Axx`: **set DR of operator 4.**
|
||
|
- `5Bxy`: **set KSR of operator.**
|
||
|
- `x` is the operator from 1 to 4. a value of `0` means "all operators".
|
||
|
- `y` determines whether KSR is on.
|
||
|
|
||
|
## info
|
||
|
|
||
|
this chip uses the [FM (ESFM)](../4-instrument/fm-esfm.md) instrument editor.
|