nsf-player
v1.2.0
Published
This is a player for NSF-format Nintendo Entertainment System music files. It's written in JavaScript and should work in any major browser.
Downloads
8
Readme
NSF Player
This is a player for NSF-format Nintendo Entertainment System music files. It's written in JavaScript and should work in any major browser.
Important info
This repository has been forked from okaybenji. My purpose with this repository is to make it available as a node package so that it can be used easily. I only made small changes to this library so all the appreciation should go to the authors of the original code's creators.
Changes
All the changes I've made to the original code base can be found in commit 02687fb. I replace the octal literals with the parsed counterparts, made Module
a global variable and exported two functions (run
and createNsfPlayer
).
1.1.0
Initial release
1.2.0
Added setVolumeValue and updateVolume methods.
After creating an nsfPlayer
instance, you can access setVolumeValue(value)
and updateVolume()
methods as well.
With setVolumeValue
you can update the music volume and with updateVolume
you can update the volume on the fly.
How to use it (npm version)
First, install package with
npm install nsf-player
After that, import it like this
import { run, createNsfPlayer } from "../../node_modules/nsf-player/nsf-player.js";
and by running the following code snippet, you can use nsfPlayer
:
run(); // this function initiates libgme
const ctx = new AudioContext();
window['ctx'] = ctx; // make ctx a global variable so creatNsfPlayer() can use it
const nsfPlayer = createNsfPlayer(ctx);
nsfPlayer.play('path-to-file.nsf', trackNumber);
I used this package in an Electron-based project (Hello, World!), it may not work in a different environment.
How to use it
Include libgme.js and index.js in your project.
<script src="libgme/libgme.js"></script>
<script src="index.js></script>
Create a player by calling createNsfPlayer
.
const nsfPlayer = createNsfPlayer(); // An audio context is created for you.
Optionally, you can pass in your own audio context.
const ctx = new AudioContext();
const nsfPlayer = createNsfPlayer(ctx);
NSF files may contain multiple tracks. Play a track by calling play
and passing it the path to your NSF file and the index of the track you wish to hear. (Indexes start at 0 and go up.)
nsfPlayer.play('./songs/smb.nsf', 2);
If you just want to hear the first track, you don't have to pass an index.
nsfPlayer.play('./songs/smb.nsf');
Stop the music by calling stop
.
nsfPlayer.stop();
Notes
This uses (and includes) libgme, A.K.A. Game_Music_Emu, a library for emulating video game music. I adapted it from code I found on the web at onakasuita.org/jsgme.