Skip to content

Instantly share code, notes, and snippets.

@bryc

bryc/YamahaFM.md

Last active Jun 1, 2021
Embed
What would you like to do?
Collecting info on Yamaha FM soundchips

Yamaha GS1 / GS2 (1981)

  • GS1: 8 operators per voice: 4 carriers with one modulator each (crossmodulation between 2 modulators), 88-key velocity and poly-pressure sensitive weighted keyboard
  • GS2: 4 operators per voice: 2 carriers with one modulator each (crossmodulation between 2 modulators), 73-key velocity sensitive weighted keyboard
  • Non-programmable, uses magnetic "voice cards" to load new sounds. Has vibrato, tremolo, ensemble and equalizer controls.
  • 2x OPC (YM34501) "Operator-Carrier", 2x OPM (YM34502) "Operator-Modulator", 4x EC (YM322) "Envelope Controller", 4x PG (YM344) "Phase Generator"

Yamaha CE20 / CE25 (1982)

  • Uses two 2-op layers per voice (Same as GS2?)
  • 2x OP1/OP2 (YM2011) "Operator", 1x PA (YM2010) "Phase Accumulator"

DX7: YM2128(0) (OPS, FM Operator Type-S) and YM2129(0) (EGS)

  • mid 1983, the original FM synthesizer, direct predecessor to YM2151/YM2612 etc.
  • 16 voices (6-op) (32 in DX1/DX5)
  • Used in DX7, DX9 (firmware reduces it to 4-op, 8 algo), TX7, DX1/DX5 (Dual)
  • DX9 defines algorithms 1-8 as 1,14,8,7,5,22,31,32 (with removed OP 1 and 2). These algorithms are shared in OPN/OPM/OPZ series.
  • Requires two chips, one for operators and one for envelopes

YM2604 (OPS2) and YM3609 (EGM)

  • 1986, Used in DX7 mark II, TX802
  • 16 voices (6-op)
  • Requires two chips, one for operators and one for envelopes

YM2164 (OPP, FM Operator Type P)

  • 1985, Used in DX21, DX27, DX100, FB-01, SFG-05, Korg DS-8, Korg 707, IBM Music Feature Card
  • 8 voices (4-op)
  • The supposedly improved successor to OPM. It is VERY similar. Same pinout and is backwards compatible. In fact, any differences may not affect sound.
  • Most differences are probably firmware-bound. For example DX21 has a "Pitch EG" which DX27/100/FB-01 do not. FB-01 has weird stuff like "AR Velocity Sensitivity". This is all probably specific to the firmware and not the chip. Velocity Sensitivity for example is fully controlled in firmware when processing MIDI.

YM2414 (OPZ, FM Operator Type-Z)

  • 1987, used in synths TX81Z, DX11, YS100, YS200, PortaTone PSR-6300 and PSR-80
  • 8 channels (4-op), 8 waveforms, two LFOs
  • combines the 8 algorithms of YM2151/OPM with 8 waveforms, allowing for sophisticated sounds. Interestingly, borrows the waveform concept from OPL series but uses custom list of waveforms.

YM2424 (OPZII, FM Operator Type-Z-II)

  • 1989, only known to be used in V50 (uses 2xYM2424 for 16 note polyphony)
  • 8 channels (4-op), 8 waveforms, two LFOs
  • Identical to OPZ but has fixed frequencies down to 0 Hz.

YMF292 (SCSP)

  • 1994, used in Sega Saturn, Sega Model 2/3
  • hybrid FM/PCM, uses 32 channels (4-op, but configurable). Mostly PCM was used.

YMF271 (OPX)

  • 1994?, used in Seibu SPI arcade board
  • FM: 9 channels? - 2 operators (4 algorithms), 3 operators (8 algorithms), 4 operators (16 algorithms)
  • PCM: 3 channels?

OPM

YM2151 (OPM, FM Operator Type-M)

  • Year of release: 1983
  • FM: 8 channels (4-op)
  • Used in: Yamaha CX5M SFG-01 (Yamaha PC, 1983), Arcade, Sharp X1 Turbo (1984), Sharp X68000 (1987)
  • Related to: Yamaha YM2164 (aka OPP/FM Operator Type P, derivative used in DX21/27)

Notes

Datasheet. 4 operators per channel, using same algorithms in DX21. The chip is possibly stereo. Channel 3 mode is absent.

Example music

  1. BGM - Enduro Racer (1985) (Arcade, YM2151, SegaPCM)
  2. Passing Breeze - Out Run (1986) (Arcade, YM2151, SegaPCM)
  3. The Heat Waves - Super Monaco GP (1989) (Arcade, YM2151, SegaPCM)
  4. Ending - "Last Drive" - Knight Arms: The Hyblid Framer (X68000, YM2151, OKIM6258)
  5. Time Attack - GP Rider (1990) (Arcade, YM2151, SegaPCM)
  6. Red-Hot Desert - R-Type Leo (1992) (Arcade, YM2151, GA20)
  7. Photonic - Room Service (VOPM VST)
  8. pedalsteeldrummer - Strawberries and Cream (VOPM VST)
  9. Keishi Yonao - Eusion (iYM2151 Demo song, composer of Yu-No)

OPN

YM2203 (OPN, FM Operator Type-N)

  • Year of release: 1984
  • FM: 3 channels (4-op)
  • SSG: 3 channels (YM2149 PSG(?), register-compatible with AY-3-8910)
  • Used in: Arcade, Certain models of NEC PC-6001 (1984)/PC-6601 (1984)/PC-8001 (1985)/PC-8801 (1985)/PC-9801 (1986)
  • Related to: YM2608/OPNA (enhanced version of OPN), YM2612/OPN2 (also based on OPN, but no SSG)

Notes

Datasheet. 4 operators per channel, using same algorithms in DX21 and OPM. The chip is possibly mono. Channel 3 has two special modes:

  1. Sound effect mode: Allows for individual freq control of each operator, and can mute operators for additional polyphony.
  2. CSM (Composite Sine Mode): for speech synthesis (?)

Example music

  1. Main Theme - Space Harrier (1985) (Arcade, YM2203 + SegaPCM)
  2. Opening - Silpheed (1986) (PC-8801, YM2203)
  3. First Step Towards Wars - Ys I: Ancient Ys Vanished (1987) (PC-8801, YM2203)
  4. Opening - Dragon Slayer: The Legend of Heroes (1990) (PC-8801, YM2203)
  5. Title Theme - Rusty (1993) (PC-9801, YM2203 using special Ch3 mode)

YM2608 (OPNA, FM Operator Type N-A)

  • Year of release: 1985
  • FM: 6 channels (4-op)
  • SSG: 3 channels (YM2149 PSG(?), register-compatible with AY-3-8910)
  • ADPCM: 1 channel (8-bit ADPCM format at a sampling rate between 2–16 kHz)
  • RHY: 6 channel (enabling playback of six percussion ADPCM samples/"rhythm tones" from a built-in ROM)
  • Used in: Certain models of PC-8801 (1985)/PC-9801 (1986)
  • Related to: YMF288/OPN3 (stripped down version of OPNA), YM2203/OPN (predecessor), YM2612/OPN2 (very similar, no SSG etc.)

Notes

Datasheet. 4 operators per channel, using same algorithms in DX21 and OPM. The chip is possibly stereo.

Channel 3 has two special modes:

  1. Sound effect mode: Allows for individual freq control of each operator, and can mute operators for additional polyphony.
  2. CSM (Composite Sine Mode): for speech synthesis (?)

Example music

  1. Kono yo no hate de koi o utau Shōjo YU-NO (1996) (PC-9801, YM2608)
  2. Only You - Seikimatsu no Juliet to tachi (1995) (PC-9801, YM2608)
  3. Level 7 - Revival Xanadu II: Remix (1995) (PC-9801, YM2608)
  4. Shout Down - The Scheme (1988) (PC-8801, YM2608)

YM2612 (OPN2, FM Operator type N-2)

  • Year of release: 1988
  • FM: 6 channels (4-op)
  • Used in: Arcade, Sega Mega Drive/Genesis (1988), Fujitsu FM Towns (1989)
  • Related to: YM2608 (enhanced version), YM2203/OPN (predecessor)

Notes

SMSPower documentation. Stripped down/low-cost version of YM2608. 4 operators per channel, using same algorithms in DX21 and OPM. Paired with a 4-channel SN76489 on the Mega Drive/Genesis. One FM channel can be converted to 8-bit ADPCM channel. The chip is possibly stereo.

Channel 3 has two special modes:

  1. Sound effect mode: Allows for individual freq control of each operator, and can mute operators for additional polyphony.
  2. CSM (Composite Sine Mode): for speech synthesis (?)

Example music

  1. BGM - Vapor Trail (1991) (Mega Drive, YM2612, No PSG usage)
  2. Because You're the Number One - Thunder Force IV (1992) (Mega Drive, YM2612 + PSG)
  3. Dreamer - Streets of Rage 2 (1992) (Mega Drive, YM2612 + PSG)
  4. Sortie - Gauntlet IV (1993) (Mega Drive, YM2612 + PSG)
  5. Reincarnated Soul, Part 2 - Castlevania Bloodlines (1994) (Mega Drive, YM2612, No PSG usage)

OPL

YM3526 (OPL, FM Operator Type-L)

  • Year of release: 1984
  • FM: 9 channels (2-op, 1 waveform)
  • Used in: C64 Sound Expander and Arcade games (Bubble Bobble)
  • Related to: Y8950 (additional ADPCM channels, used in MSX expansion cart)

Notes

Datasheet.

Example music

  1. Theme of Terracresta - Terra Cresta (1985) (Arcade, YM3526)
  2. Wonder Flight - Wonder Planet (1987) (Arcade, YM3526)
  3. Vibrants FM - Edlib OPL2 converted tunes (C64/SFX Sound Expander, YM3526)

YM3812 (OPL2, FM Operator Type-L-2)

  • Year of release: 1985
  • FM: 9 channels (2-op, 4 waveforms)
  • Used in: Arcade, DOS sound cards (Adlib, Sound Blaster etc.), Yamaha keyboards
  • Related to: N/A

Notes

Datasheet. OPL-series of chips are 2-op and use different algorithms.

Example music

  1. Staff Roll - Street Smart (1989) (Arcade, YM3812)
  2. Title - Harald Hårdtand i 'Kampen om de rene tænder' (1992) (DOS, YM3812)
  3. Title - Fury of the Furries (1993) (DOS, YM3812)
  4. Title Tune - Lollypop (1994) (DOS, YM3812, Edlib)
  5. Field 1 - Knights of Xentar (1994) (DOS, YM3812)
  6. Battle - Princess Maker 2 (1996) (DOS, YM3812)
  7. Vibrants - Fis3 (Edlib)
  8. DRAX - Street Wise (Edlib)
  9. DRAX - Flash (Edlib)
  10. DRAX - Human Nature 1 (Edlib)
  11. DRAX - Beyond Minds (Edlib)
  12. METAL - Soul Shock (Edlib)
  13. METAL - Plastic Session (Edlib)
  14. METAL - Introism (Edlib)
  15. METAL - Inside the Organ (Edlib)
  16. METAL&DRAX - Breaking Wind (Edlib)
  17. JO - Drums Are Hard To Do (Edlib)

YM2413 (OPLL, FM Operator Type-L-L)

  • Year of release: 1986
  • FM: 9 channels or 6 channels/5 drums (2-op, 2 waveforms)
  • Used in: Arcade, Yamaha PSS-140/PSS-270
  • Related to: JP Master System, MSX/MSX2, VRC7 (6 channel variant used in one NES game: Lagrange Point) (1986-1988)

Notes

Datasheet. Only one channel can be fully programmed. Other must be chose from 15 hard-coded instruments. There are chip variants with different instrument sets, such as YMF281 and YM2423. In general, these are inferior, stripped-down versions of OPL2. TODO: Is there anything programmable? Vibrato and volume? stuff like that.

Example music

  1. Out of Rap - F-1 Spirit 3D Special (1990) (MSX2+, MSX-Music/YM2413)
  2. Opening Theme - GD: Greatest Driver (1988) (MSX2, YM2413)
  3. Theme of Isis - Lagrange Point (1991) (Famicom, VRC7/NES APU)
  4. Ending - Fire Hawk (1989) (MSX2, YM2413 + AY-3-8910)

YMF262 (OPL3, FM Operator Type-L-3)

  • Year of release: 1988
  • FM: 18 channels or 15 channels/5 drums (2-op, 8 waveforms)
  • Used in: Arcade, NEC PC-9801, DOS sound cards (Sound Blaster 16 etc.)
  • Related to: Yamaha YMF7xx series

Notes

Documentation. Has additional capabilities over OPL2, such as 4 more waveforms, double the channels, and ability to use 4-op instruments. Up to six 4-op instruments can be created, and each take up 2 channels. So that gives you 6 4-op + 6 2-op = 12 at its most extreme. Also, there's a separate mode where you can add drums (similar to OPL2). 6 4-op + 3 2-op + 5 1-op = 14 channels. Many musicians program their own drums in trackers using the full FM mode. TODO: Find out how the drum mode sounds like.

Example music (TODO: AdplugTracker2 stuff)

  1. Painful Sigh - Miwaku no Chousho (1995) (PC-9801, YMF262)
  2. Sky of the City - Doukyusei 2 (1995) (DOS, YMF262)
  3. Madbrain - Oskari goes to Soundblasterland (AdlibTracker2)
  4. Benjamin Gerardin - High Tech Environment III (AdlibTracker2)

Others

YMU757 (MA-1)

  • Year of release: 1999
  • FM: 4 channels (2-op, 2 waveforms)
  • Used in: Tons of mobile devices (cell phone, PDA)

Datasheet. Seems quite limited. 2-op only, but has OPLL's half-sine waveform. Contains a built-in sequencer.

MUL=7, TL=63, AR=15, DR=15, SL=15, RR=15, VIB=1, SUS=1, EGT=1, WAV=1, FB=7

YMU759 (MA-2)

  • Year of release: 2000
  • FM: 16 channels (2-op, 8 waveforms) or 8 channels (4-op, 8 waveforms)
  • ADPCM: 1 channel (4-bit, 4 kHz/8 kHz)
  • Used in: Tons of mobile devices (cell phone, PDA)

Datasheet. Boasts much improved FM over MA-1. Appears to have full OPL3 feature set. Contains one very low quality ADPCM channel. Also contains a sequencer. For drum sounds, a single key note can be specified.

MUL=15, TL=63, AR=15, DR=15, SL=15, RR=15, VIB=1, SUS=1, EGT=1, WAV=7, FB=7
+ LFO=3, KSR=1, AM=1, ALG=6, KSL=3, DVB=3, DAM=3

YMU762 (MA-3)

  • Year of release: 2001
  • FM: 32 channels (2-op, 29 waveforms) or 16 channels (4-op, 29 waveforms)
  • PCM/ADPCM: 8 channels (8-bit PCM, 4-bit ADPCM, 48kHz)
  • Used in: Tons of mobile devices (cell phone, PDA)

Datasheet. Improved over MA-2. Much improved sample playback. More channels. More operator waveforms. Two extra 4-op algorithms. plus some tweaks to old ones.

MUL=15, TL=63, AR=15, DR=15, SL=15, RR=15, VIB=1, SUS=1, EGT=1, WAV=7, FB=7
+ LFO=3, KSR=1, AM=1, ALG=6, KSL=3, DVB=3, DAM=3
+ XOF=1, EAM=1, EVB=1, PANPOT=31, PE=1

A bunch of new parameters with no clue what they do, but VIB is gone?

YMU765 (MA-5)

  • Year of release: 2003
  • FM: 32 channels (2-op, 29 waveforms) or 16 channels (4-op, 29 waveforms)
  • PCM/ADPCM: 32 channels (8-bit PCM, 4-bit ADPCM, 48kHz)
  • Used in: Tons of mobile devices (cell phone, PDA)

This uses the same FM synthesis engine of MA-3, but adds a filter called Analog Lite (AL) and a speech synthesis (HV/Humanoid Voice) in Japanese or Korean. Also it bumps up the PCM channel count to 32.

YMU786 / YMU790 / YMU791 (MA-7/ MA-7D / MA-7I)

  • Year of release: 2005
  • FM: ?
  • PCM/ADPCM: ?
  • Used in: Tons of mobile devices (cell phone, PDA)

Based on the MA-5's FM synthesis engine. Supposedly has 128 polyphony combined FM and PCM. Has 3D positional sound (AudioEngine), as well as DSP effects (reverb, delay, overdrive etc). 16KB ram instead of 8KB. Can't find much info on it.

YMF825 (SD-1)

  • Year of release: 2011
  • FM: 16 channels (4-op, 29 waveforms)
  • Used in: Home appliances (Chinese market)

This appears to be a version of MA-3. It has no PCM or Analog Lite capabilities. Using 2-op instruments does not give extra channels, thus it's probably best to use 4-op instruments.

@Some-E

This comment has been minimized.

Copy link

@Some-E Some-E commented Nov 21, 2019

YM2414 is not used in V50.

V50 uses YM2424. There's two of them, for 16-note polyphony. This is scheme I've read about of other chips/synths as well. 8-note polyphony per chip. Back then must have been more feasible to have lower clock rates and double the chips than to add voices per chip. According to the information I've found, no other synth uses YM2424.

@bryc

This comment has been minimized.

Copy link
Owner Author

@bryc bryc commented Nov 21, 2019

@Some-E Fixed, Thanks! Seems not much is known on it, but is mostly identical to OPZ aside from higher range of fixed frequency mode.

@Some-E

This comment has been minimized.

Copy link

@Some-E Some-E commented Nov 21, 2019

And what I've read, the frequency can even be set to zero. I should experiment, because I have the V50. I also have DSR-1000, TG33 and MU128, which is relevant only because I've got PLG150-DX in it (6-op "DX7"). The DSR is weird one. A crossover between home toy and studio synth. I had to open it because it made a lot of noise. It was a shield grounding issue on digital board, but took a while because I began with reverse engineering the analog board :)

@zeroeth

This comment has been minimized.

Copy link

@zeroeth zeroeth commented Mar 27, 2020

I've got two strange ones for your collection:
YMF761 (marked Y761) FM chip which is in the Sony Clié PalmOS pdas (Starting with the PEG-T415/T400 in 2001~ I think).
YMF768 another FM in the Tapwave Zodiac PalmOS game machine in 2003.

Both play back a generic GM soundbank with drumkit.

YMF761 has an SDK document that spells out the features of its included library (Pa1lib):

  1. Features of Pa1Lib
    • Capable of producing up to 16 sounds simultaneously
    • Supports GM synthesizer (128-note melody, 47-note drum)
    • Supports 29 sound effects for game software
    • Capable of playing SMF data (format 0 only)
    • Notifies the end of the SMF playback using the callback function.
    • SMF data can be played specifying the start point and the end point of the playback. • SMF data can be played specifying the playback channel ranges.
    • Capable of playing up to 16 SMF data simultaneously
    • Capable of opening up to 16 virtual MIDI devices
    • MIDI sound can be controlled via the MIDI command during the SMF is played.
    • The last defined sound will be produced first if the number of sounds exceeds 16.
    • Plays 1-channel ADPM data
    • Capable of playing multiple ADPCM data using the playback list feature.
@siddacious

This comment has been minimized.

Copy link

@siddacious siddacious commented Mar 30, 2020

Thanks for assembling this, it's just the thing I was looking for

@jrmoserbaltimore

This comment has been minimized.

Copy link

@jrmoserbaltimore jrmoserbaltimore commented May 13, 2020

Found OPZ pinout, waveforms, and operator algorithms.

https://www.polynominal.com/Yamaha-YM2414/

@okaxaki

This comment has been minimized.

Copy link

@okaxaki okaxaki commented Jul 13, 2020

Great document!!

YM2413 Notes says,

Only one channel can be fully programmed.

Only one instrument can be fully programmed. The programmed instrument can be used simultaneously on multiple channels.

@akulisch

This comment has been minimized.

Copy link

@akulisch akulisch commented Sep 25, 2020

Here's a document for the YM2151 specifying the synthesis and parameters.
http://map.grauw.nl/resources/sound/yamaha_ym2151_synthesis.pdf

@noway2pay

This comment has been minimized.

Copy link

@noway2pay noway2pay commented Apr 13, 2021

YMU762 (MA-3): VIB is not gone. It is EVB+DVB now. I put some more info in my fork of this gist.
Actually I managed (sort of) to map OPL-2 to MA-3 (result here: https://www.youtube.com/watch?v=o_FO5D-5-w4).

Excerpt from my converter showing relations between OPL-2 and MA-3 registers:

  //---------------------- MA3 channel definition as defined by Yamaha (== register layout) ------------------------------------

  // 0
  buffer[len++] = 1; // PANPOT ignored (= 0), BO (BO=1 const.)
  // 1
  buffer[len++] = oplEvent->oplVoice.CON1;	// LFO, PE ignored (=0), ALG - only lowest bit present in OPL2

  for (SINT32 i = 0; i < 2; i++) {

    // 2
    buffer[len++] = (oplEvent->oplVoice.OP[i].EGT1 << 1) | oplEvent->oplVoice.OP[i].KSR1;	// SR = 0 as OPL2 has no Sustain Rate; SUS = EGT, KSR = KSR
    // 3
    buffer[len++] = (oplEvent->oplVoice.OP[i].R4 << 4) | oplEvent->oplVoice.OP[i].D4;			// R, D
    // 4
    buffer[len++] = (oplEvent->oplVoice.OP[i].A4 << 4) | oplEvent->oplVoice.OP[i].S4;			// A, S
    // 5
    buffer[len++] = (oplEvent->oplVoice.OP[i].LVL6 << 2) | oplEvent->oplVoice.OP[i].KSL2;	// TL, KSL (KSL OPL2=MA3)

    // 6
    /*
      OPL2: reg BD, AM1, VIB1
      bit 7: Tremolo (Amplitude Vibrato) Depth. 0 = 1.0dB, 1 = 4.8dB.
      bit 6: Frequency Vibrato Depth. 0 = 7 cents, 1 = 14 cents. A "cent" is 1/100 of a semi-tone.
      ----------
      MA3: DAM+EAM, DVB+EVB, Exx = Enable (bit)
        DAM (Depth of amplitude modulation)
          It sets the depth of amplitude modulation (AM)
          DAM = 0 : 1.3 dB
          DAM = 1 : 2.8 dB
          DAM = 2 : 5.8 dB
          DAM = 3 : 11.8 dB
        DVB (Depth of vibrato modulation)
          DVB = 0 : 3.4 cents
          DVB = 1 : 6.7 cents
          DVB = 2 : 13.5 cents
          DVB = 3 : 26.8 cents
    ------------
    Not an exact match, but close enough.
    */
    buffer[len++] = ((oplEvent->oplVoice.OP[i].AM1 ? 2 : 0) << 5) | 0x10 | ((oplEvent->oplVoice.OP[i].VIB1 ? 2 : 1) << 1) | 0x01; // DAM, EAM, DVB, EVB (EAM and EVB = 1)

    // 7
    buffer[len++] = (oplEvent->oplVoice.OP[i].MULT4 << 4);	// MULTI (OPL2=MA3), DT = 0 (no DT in OPL2)
    // 8
    buffer[len++] = (oplEvent->oplVoice.OP[i].WAV2 << 3) | (i ? 0 : oplEvent->oplVoice.FDB3);	// WS (OPL2 = 2 bits, MA more, but OPL2 matches), FDB when 1st OP (OPL2=MA3)
  }

@fusoxide

This comment has been minimized.

Copy link

@fusoxide fusoxide commented May 19, 2021

Great document! I think you should add some examples for the MA chips though. I don't have any MA-1 examples, but I have uploaded some ringtones that use the other four chips on YouTube. (Yamaha's own: https://www.youtube.com/playlist?list=PLNNMdt7iKSQhVgPufMkqb8NScLAPt7G-A)

@ajxs

This comment has been minimized.

Copy link

@ajxs ajxs commented May 20, 2021

I did a bit of research on the DX7's technical implementation and compiled it in this article: https://ajxs.me/blog/Yamaha_DX7_Technical_Analysis.html
A lot of this information is already out there in the wild, I just put in the hours to research and compile what I could. It features some information on DX7's DAC implementation, and some trivia on the DX7's sound chips which might be useful to this project.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment