cotone
v1.1.0
Published
MIDI tick converter module for rhythm action game development
Readme
cotone.js
MIDI tick converter library for rhythm action game development.
About
Since timescale of music depends on it's tempo (BPM), music note data are usually managed by MIDI-tick unit instead of real-time in common music editing apps.
This library provides features for converting MIDI-tick <-> real-time, and also utils for drawing notes in rhythm action game app (which has note-speed changing feature by tempo).
Sample app
See following codesandbox project https://codesandbox.io/s/cotone-sample-938j8
Usage
Install
npm install cotoneBasic example
First, let's create an instance of key class, Converter.
import { Converter } from 'cotone'
const converter = new Converter()Optional
The converting result depends on how you define the tick-unit value for quarter notes (This value is usually called "timebase", "ticks-per-quarter-note", "TPQN", etc.).
Default is set to 480, but you can customize it with setTimebase
converter.setTimebase(480)Then, set the tempo using setTempo.
// BPM: 128
converter.setTempo(128)Now we're ready for conversion.
Assume we have a note data like below.
const noteTicks = [
480, 960, 1920,
// ... and so on
]If you want real-time scale of these notes to schedule-play sounds, you can do like this.
const sound = new Audio('path/to/mysound.wav')
const noteRealSeconds = noteTicks.map(tick => converter.convertTickToSec(tick))
noteRealSeconds.forEach(noteSec => {
setTimeout(() => {
sound.play()
}, noteSec * 1000)
})Misc
Traditional browser style
<script src="path/to/cotone.js"></script>
<script type="text/javascript">
const converter = new cotone.Converter()
// Same as above...
</script>Advanced
TODO
Documentation
TODO
Development
Build
You should run npm install once to prepare building condition.
Dev
npm run devProduction
npm run buildTest
npm run test