YunoSynth

YunoSynth is a high-performance VGM playback library written entirely in the Crystal programming language. The goal is to provide native VGM playback in Crystal without bindings and almost no dependencies, a cleaned-up version of VGMPlay's code, and performance on par with VGMPlay.

An example of a program that uses YunoSynth is Benben, a full-featured command line VGM player and VGM->WAV converter by the same author.

Wanna support me? Buy me a coffee on Ko-Fi, or support me through Liberapay.

Buy Me a Coffee at ko-fi.com Donate using Liberapay

Example videos

These were recorded using Benben.

Features

Implemented Chips

More chips will be added as time goes on.

Known Issues

Usage

Add this to your shard.yml:

dependencies:
  yunosynth:
    fossil: https://chiselapp.com/user/MistressRemilia/repository/yunosynth

You will need Fossil installed to clone this repo and the dependency. You will also need Shards v0.17.1 or later. If you have an earlier version of Shards, you will need to to build the latest version manually.

Example Programs

To compile these example programs, first do a shards update in the repository root. Then you can compile debug builds of them using rake. Run rake examples[list] to see some optimization options.

Development

Development Milestones are listed in the wiki.

If you want to add a new chip, please make sure to read Adding Chips for notes and hints.

Compile-time Flags

YunoSynth supports a few compile-time defines, which can be used by passing the -D option to the compiler (for example, -Dyunosynth_debug).

Style info

I use a somewhat non-standard style for my code.

How do I contribute?

  1. Go to https://chiselapp.com/user/MistressRemilia/repository/yunosynth and clone the Fossil repository.
  2. Create a new branch for your feature.
  3. Push locally to the new branch.
  4. Create a bundle with Fossil that contains your changes.
  5. Get in contact with me.

Contributors

Links and Licenses

YunoSynth itself is under the GNU Affero General Public License version 3.

The emulation cores, which were all ported by hand to Crystal, have various other licenses, which can be found in the licenses folder in this repository. Most of them are from the MAME project.

Much of the playback code is based on heavily modified code from VGMPlay by Valley Bell, et al.