opl3-rs

Crates.ioopl3-rs
lib.rsopl3-rs
version0.2.0
sourcesrc
created_at2024-06-28 19:23:19.318727
updated_at2024-07-06 15:35:29.253257
descriptionRust bindings for Nuked-OPL3, a Yamaha OPL3 FM-synthesis chip emulation library.
homepage
repositoryhttps://github.com/dbalsom/opl3-rs
max_upload_size
id1286929
size357,302
(dbalsom)

documentation

README

opl3-rs

A small library to provide bindings for the Nuked-OPL3 library.

Crates.io version Changelog Documentation

Usage

Nuked-OPL3 is not a turn-key implementation of the OPL3 chip - functions such as the status register, timers and interrupts are left as implementation details.

You can access the Nuked-OPL3 API via the Opl3Chip struct, if needed, but with the caveat that directly writing registers to Nuked-OPL3 will prevent you from reading the OPL registers correctly.

If you intend to utilize opl3-rs in an emulator, you will probably want to use the Opl3Device wrapper which provides a full, device-oriented OPL3 implementation including the status, address and data registers, plus the OPL3 timers.

Docs

Documentation can be found on docs.rs

Examples

An example of music playback is provided in the play_tune directory under /examples. This example uses the rodio library for audio playback and crossbeam channels for inter-thread communication.

opl3-rs was primarily built for use with the MartyPC PC emulator. It is used to implement an AdLib Music Card device.

https://github.com/dbalsom/opl3-rs/assets/7229541/d78d4e90-71ed-4841-a963-9b09f25974c1

Credits

Nuked-OPL3 is (C) 2013-2020 Nuke.YKT and licensed under LGPL 2.1

play_tune example based off code by Maarten Janssen and Peter De Wachter.

Commit count: 28

cargo fmt