Crates.io | opl3-rs |
lib.rs | opl3-rs |
version | 0.2.0 |
source | src |
created_at | 2024-06-28 19:23:19.318727 |
updated_at | 2024-07-06 15:35:29.253257 |
description | Rust bindings for Nuked-OPL3, a Yamaha OPL3 FM-synthesis chip emulation library. |
homepage | |
repository | https://github.com/dbalsom/opl3-rs |
max_upload_size | |
id | 1286929 |
size | 357,302 |
A small library to provide bindings for the Nuked-OPL3 library.
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.
Documentation can be found on docs.rs
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
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.