The Patchbay_

MidiWriterJS vs Scribbletune

Both produce MIDI from JavaScript. MidiWriterJS is a file writer; Scribbletune is a pattern and music-theory layer that happens to output MIDI.

Short answer. You already know the notes and just need a file → MidiWriterJS. You want to generate patterns from scales, chords and rhythm strings → Scribbletune.

Side by side

MidiWriterJS Scribbletune
LevelLow — tracks and eventsHigh — patterns and theory
Music theoryNoScales, chords, progressions
Rhythm notationManual durationsPattern strings like x_x_
OutputMIDI fileMIDI file, plus Tone.js integration
Dependency sizeSmallLarger
LanguageJavaScriptJavaScript
LicenseMITMIT
PlatformsmacOS Windows Linux WebmacOS Windows Linux Web
First released20162014
MaintainedYesYes

Where they actually differ

Scribbletune thinks in patterns

Rhythm is expressed as strings — x for a note, _ for a sustain, - for a rest — and pitches come from scale and chord helpers. Expressing "the notes of C minor, this rhythm, over four bars" is a line or two. MidiWriterJS needs you to enumerate every note and duration.

MidiWriterJS is the better primitive

If the musical decisions are already made — by your own algorithm, by user input, by data — you want a writer that does exactly what it is told and nothing more. MidiWriterJS is smaller, more predictable and easier to reason about in that role.

Scribbletune reaches into the browser

It integrates with Tone.js, so the same patterns can play in a browser as well as export to a file. MidiWriterJS only writes files.

A reasonable combination

Generate musical material however you like, then hand the resulting notes to MidiWriterJS. Scribbletune’s value is the generation layer; if you have your own, you do not need it.

Which should you choose?

Choose MidiWriterJS when…

Choose Scribbletune when…

MidiWriterJS detailsScribbletune detailsAll ML & generative

← All comparisons