Moonchart is a Haxelib backend tool designed to manage the chart file formats of various rhythm games at the same time.
It can be used to load, parse and convert between multiple formats efficiently.
Here's an example in pseudo haxe code of how to convert 2 basic formats between eachother, it works about the same between all formats. Some may need a metadata file (like the FNF (V-Slice) Format) to work.
import moonchart.formats.fnf.legacy.FNFLegacy;
import moonchart.formats.fnf.FNFVSlice;
// Load an FNF (Legacy) chart and set the difficulty level to "hard"
var funkinLegacy = new FNFLegacy().fromFile("path/to/chart.json", null, "hard");
// Convert the FNF (Legacy) chart format to the FNF (V-Slice) format
var funkinVSlice = new FNFVSlice().fromFormat(funkinLegacy);
// Access the converted FNF (V-Slice) format data using the following variables
var vSliceData = funkinVSlice.data; // Contains the chart data
var vSliceMeta = funkinVSlice.meta; // Contains the metadata
// To save the chart in its original file format, use the stringify method to generate the file strings
var vsliceChart = funkinVSlice.stringify();
var chart:String = vsliceChart.data; // String containing the FNF (V-Slice) chart data
var meta:String = vsliceChart.meta; // String containing the FNF (V-Slice) metadata
Format | File Extension |
---|---|
FNF (Legacy) | json |
FNF (Psych Engine) | json |
FNF (FPS +) | json |
FNF (Kade Engine) | json |
FNF (Maru) | json |
FNF (Codename) | json |
FNF (Ludum Dare) | json / png |
FNF (V-Slice) | json |
Guitar Hero | chart |
Osu! Mania | osu |
Quaver | qua |
StepMania | sm |
StepManiaShark | ssc |
If you discover a bug or run into any other issue while using the library, please don't hesitate to open a GitHub issue.
You can also reach out to me directly via Discord at maybemaru
.