VgmPlayer Usage

VgmPlayer is the higher-level playback class built on top of GenesisAudioEngine. It is the browser-side path for prepared VGM data.

Related source: docs/js/vgmplayer.js, docs/js/genesisaudioengine.js, docs/js/ym2612vgm.js

Minimal Flow

import ym2612ModuleFactory from "./generated/ym2612_wasm.js";
import segaPsgModuleFactory from "./generated/segapsg_wasm.js";
import { createGenesisAudioEngine } from "../js/genesisaudioengine.js";
import { VgmPlayer } from "../js/vgmplayer.js";

const engine = await createGenesisAudioEngine({
  ym2612ModuleFactory,
  segaPsgModuleFactory,
});

const player = new VgmPlayer(engine);
player.load(vgmArrayBuffer);
player.setLoopEnabled(true);
player.play();

Main Methods

How Audio Output Works

VgmPlayer itself does not connect to Web Audio directly. It fills stereo buffers with process(left, right, frames). That makes it reusable for ScriptProcessorNode, AudioWorklet, or future game-engine callbacks.

Why It Is Separate from Direct Chip Control

VgmPlayer is for prepared music data. Direct chip control is for experiments, realtime input, or future programmatic composition. The repository keeps these paths separate on purpose.

Good Next Reads

Back