ESFM: documentation
This commit is contained in:
parent
912c249a50
commit
c1bf577ccf
2 changed files with 178 additions and 0 deletions
101
doc/7-systems/esfm.md
Normal file
101
doc/7-systems/esfm.md
Normal file
|
|
@ -0,0 +1,101 @@
|
|||
# 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.
|
||||
Loading…
Add table
Add a link
Reference in a new issue