No description
- JavaScript 96.6%
- HTML 3.4%
| 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.