qua-tools
is a Node.JS package designed to help you easily deal with .qua
files, the Quaver file format.
Open a terminal in the root of your project, and run npm install @esv-sweetplum/qua-tools
.
For ES6 and above:
import { importQua } from "qua-tools";
const qua = importQua("../PATH-TO-FILE");
console.log(qua.hitObjects.length);
For CommonJS:
const { importQua } = require("qua-tools");
const qua = importQua("../PATH-TO-FILE");
console.log(qua.hitObjects.length);
importQua
returns a QUA object:
interface QUA {
metaData: Partial<MetaData>;
timingLines: TimingLine[];
scrollVelocities: ScrollVelocity[];
hitObjects: HitObject[];
}
Additional metatypes are defined below.
interface MetaData {
[key: string]: number | string | string[] | boolean | undefined;
AudioFile: string;
SongPreviewTime: number;
BackgroundFile: string;
BannerFile: string;
MapId: number;
MapSetId: number;
Mode: "Keys4" | "Keys7";
Title: string;
Artist: string;
Source: string;
Tags: string[];
Creator: string;
DifficultyName: string;
Description: string;
EditorLayers: string;
CustomAudioSamples: string;
SoundEffects: string;
}
interface TimingLine {
startTime: number;
bpm: number;
}
interface ScrollVelocity {
startTime: number;
multiplier: number;
}
interface HitObject {
startTime: number;
endTime?: number;
lane: number;
hitSound?: string[];
keySounds: string[];
}