Support library for TrackerBoy. Also known as the back end of TrackerBoy.
This library handles:
- Reading/Writing trackerboy module files
- Manipulating/reading module data
- Game Boy APU emulation
- Module playback
- (Coming soon) export to tbengine format.
Install via nimble or atlas
# nimble
nimble install https://github.com/stoneface86/libtrackerboy/
# atlas
atlas use https://github.com/stoneface86/libtrackerboy/
unittest2 is needed for testing, but it is not listed in the nimble file as it is a developer dependency. Follow these steps to set that up:
# clone repo to your workspace, then cd to it
nim setDev # enables developer dependencies
nimble setup # now you can build tests via `nim test`
Tasks for building tests, documentation, etc, are located in
config.nims, use nim <task>
to execute them.
The unit tester can be run using the test
task
# runs all unit tests
nim test
There are some extra programs for testing that are not automated. The source for these programs are located in tests/standalones. These programs generate audio files to be verified by ear. To run, use the apugen and wavegen tasks.
# apugen, generates sample audio by testing the APU emulator
# generated audio files are located in ./bin/apugen.d/
nim apugen
# wavegen, tests the bandlimited synthesis module by generating simple square tones
# generated audio files are located in ./bin/wavegen.d/
nim wavegen
# Exports bloop.tbm to wav in both stereo and mono.
# generated audio files are located in ./bin/wavexport.d/
nim wavexport
# Exports a song from a module to wav, looping it twice.
# Usage: ./bin/wavutil <module> <songIndex>
# generated audio files are located in ./bin/wavutil.d/
nim wavutil
The source for this library was originally kept in the trackerboy repo, but has been relocated this repo. This was done to keep things modular, so that the library can easily be used in other projects.
This project uses Semantic Versioning v2.0.0
This library was previously written in C++ and is now written in Nim. The C++ version is no longer mantained. The cpp-last tag points to the last commit that contains the C++ version.
- stoneface (@stoneface86) - Owner
This project is licensed under the MIT License - See LICENSE for more details