No description
- JavaScript 96.6%
- HTML 3.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
The sample offset was incorrectly computed, and was including the sample headers for all samples after the first one into the first sample's data, causing various glitches at the beginning of the sample. Fixes #10. |
||
| test | ||
| .gitignore | ||
| .travis.yml | ||
| ft2font.png | ||
| index.html | ||
| LICENSE | ||
| package.json | ||
| README.md | ||
| shell.js | ||
| trackview.js | ||
| xm.js | ||
| xmeffects.js | ||
xm.js
FastTracker 2 .XM player, written for fun.
There is an XM player and a visualizer which are separate components. The player API looks like this:
XMPlayer.init-> starts up audio context; it's available asXMPlayer.audioctxXMPlayer.load(ArrayBuffer)-> returnstrueif loaded, otherwise barfs randomlyXMPlayer.play()-> starts playingXMPlayer.pause()-> obviousXMPlayer.stop()-> obvious; call this before loading a new one
Loading trackview.js is optional; without it, the player won't do any visualizations. Or, you can override the following to get callbacks:
XMView.pushEvent(e)-> push an audio event onto the queue. Called once per tick (about 50Hz, controlled by song).econtains fields:t- audio timestampvu- Float32Array of RMS power (volume) for each channelscopes- [Float32Array] of oscilloscope data, one array per channel;XMView.scope_widthcontains # of samples to produce heresongpos- position in the song (# patterns played)pat- pattern number currently playingrow- row within pattern
XMView.pause()- pause visualizationXMView.stop()- stop/reset visualization
The code which defines what the buttons do and downloads songs and so
forth is in shell.js.
The player is fairly feature-complete, but is missing a bunch of effects.
MIT license.