YM2612Synth Direct Demo

This example uses YM2612Synth with YM2612DirectTransport, generates PCM directly from the YM2612 WASM wrapper, and plays it through Web Audio.

Source: docs/js/ym2612synth.js | docs/js/ym2612.js docs/info/ym2612synth_direct.html

Minimal Usage

const transport =
  new YM2612DirectTransport(ym2612);

const synth =
  new YM2612Synth({ transport });

synth.setOperator(0, 0, { tl: 0x7f });
synth.setOperator(0, 1, { tl: 0x7f });
synth.setOperator(0, 2, { tl: 0x7f });

synth.setOperator(0, 3, {
  dt: 0,
  multi: 1,
  tl: 8,
  ar: 22,
  d1r: 6,
  d2r: 3,
  sl: 3,
  rr: 8,
});

synth.setAlgo(0, 7, 0);
synth.setPan(0, true, true);

synth.noteOn(0, 4, 553);

const { left, right } =
  ym2612.generateStereo(frames);

synth.noteOff(0);
Back
Ready.

Data Flow

YM2612Synth
    |
    v
YM2612DirectTransport
    |
    v
Ym2612
    |
    v
YM2612 / ymfm WASM
    |
    v
generateStereo()
    |
    v
Float32 PCM
    |
    v
AudioBufferSourceNode
    |
    v
AudioContext.destination