| Crates.io | ym2149-ym-replayer |
| lib.rs | ym2149-ym-replayer |
| version | 0.9.0 |
| created_at | 2025-11-19 10:41:58.151563+00 |
| updated_at | 2026-01-15 17:18:15.629628+00 |
| description | YM file format parser and music replayer for YM2149 PSG |
| homepage | https://ym2149-rs.org |
| repository | https://github.com/slippyex/ym2149-rs |
| max_upload_size | |
| id | 1939860 |
| size | 264,920 |
YM file format parser and music replayer for YM2149 PSG chips.
This crate provides comprehensive support for parsing and playing back YM chiptune files, including YM2/3/5/6 formats, tracker modes, and various hardware effects.
FormatProfile trait encapsulates format quirks (YM2 drum mixing, YM5 effect encoding, YM6 sentinel handling) so new formats plug in without bloating YmPlayerGenericFrameSequencer stores frames + timing and exposes seek/loop APIsEffectsPipeline wraps the low-level EffectsManager, tracking SID/digidrum state for visualization/metadataYm2149Backend implementationAdd the crate to your Cargo.toml:
[dependencies]
ym2149-ym-replayer = "0.9"
use ym2149_ym_replayer::{load_song, ChiptunePlayer, PlaybackMetadata};
let data = std::fs::read("song.ym")?;
let (mut player, summary) = load_song(&data)?;
// Use the unified ChiptunePlayer interface
player.play();
let samples = player.generate_samples(summary.samples_per_frame as usize);
// Access metadata
println!("{} by {}", player.metadata().title(), player.metadata().author());
use ym2149_ym_replayer::loader;
// From file path
let frames = loader::load_file("song.ym")?;
// From bytes
let data = std::fs::read("song.ym")?;
let frames = loader::load_bytes(&data)?;
Internally the player is split into three layers:
FormatMode strategies instead of is_ym*_mode flags.EffectsManager, tracks which SID/digidrum voices are active, and feeds the backend every sample.load_song automatically selects the right profile, and custom loaders can create a profile via ym2149_ym_replayer::player::create_profile. Metadata and Bevy visualizers now query effect state through the pipeline.
This crate was extracted from ym2149-core to provide better separation of concerns:
If you were using the deprecated modules from ym2149-core:
// Old (deprecated)
use ym2149::replayer::Ym6Player;
use ym2149::ym_loader;
// New (recommended)
use ym2149_ym_replayer::YmPlayer;
use ym2149_ym_replayer::loader;
default: Includes effects, tracker, and digi-drums supporteffects: Enable YM6 effect processingtracker: Enable tracker mode supportdigidrums: Enable Mad Max digi-drumsexport-wav: Enable WAV file export (requires hound)MP3 export was removed because the LAME/Autotools toolchain is fragile across environments. Export WAV and transcode externally (e.g.,
ffmpeg).
See the main ym2149-rs repository for license information.