日本語版はこちら (Read this in Japanese)
ScoreDown is a notation system designed for intuitively writing down musical ideas in plain text.
It was born from a personal need to "express melodies and chords in a simple memo app" and "ideally, create something that could be parsed by AI and other tools."
---
title: "Twinkle, Twinkle, Little Star"
key: G
time_signature: 4/4
tags: [children]
---
|G D |C G
|Do Do So So |La La So --
|Twin-kle twin-kle |lit-tle star,
|C G |D G
|Fa Fa Mi Mi |Re Re Do --
|how I won-der |what you are.
ScoreDown utilizes movable-do solfege. By specifying a key in the front matter, you can express melodies relatively. This significantly reduces the need to write sharps or flats, allowing for concise and clean notation.
In ScoreDown, rhythmic value is determined by the number of characters. For example, in a 4/4 measure, a single character like Do represents a quarter note, while two characters like DoDo represent two eighth notes. Beats are separated by spaces.
ScoreDown uses newlines to align multiple parts vertically, just like a musical score. You can write parts such as melody, chords, rhythm, and lyrics on separate lines, resulting in a visually organized format.
(For this reason, using a monospace font is highly recommended for ScoreDown.)
A ScoreDown file begins with YAML front matter to define metadata for the piece. The key and time_signature fields are essential.
title: The title of the song.key: The key of the song (e.g., C, D♭, F#m).time_signature: The time signature (e.g., 4/4, 3/4).tags: Tags related to the song (e.g., pop, piano, etc.).
---
title: "Twinkle, Twinkle, Little Star"
key: G
time_signature: 4/4
tags: [children]
---
...
ScoreDown uses square brackets [] to denote sections. While the section name is arbitrary, using common names like [Verse] or [Chorus] is recommended.
[Verse]
|G D |C G
|Do Do So So |La La So --
|Twin-kle twin-kle |lit-tle star,
|C G |D G
|Fa Fa Mi Mi |Re Re Do --
|how I won-der |what you are.
[Chorus]
...
You can also specify a key change (transposition) by adding a key signature after the section name, such as G or Dm.
---
title: "A Day in the Life (Example)"
key: G
time_signature: 4/4
---
[Verse G]
|G DonF# |Em
[Chorus E]
|E |E |Dsus4 |Dsus4
Measures (or bars) are delineated using the pipe symbol |. The content within a pair of pipes is assumed to match the number of beats defined in the time signature (e.g., 4 beats for 4/4).
|G D |C G
|Do Do So So |La La So -- // Two measures of 4 beats each
Pitches are expressed using movable-do solfege, with each beat separated by a space. The notes are interpreted relative to the key specified in the front matter or section marker.
[Verse G]
|Do // <- 'Do' in the key of G Major is G
[Chorus Bb]
|Do // <- 'Do' in the key of Bb Major is Bb
Accidentals are indicated by appending # (sharp) or b (flat) to a note name. ASCII characters # and b are also supported.
|Do#
|Reb
Rhythmic value is based on the number of characters within a single beat (a block of text separated by spaces). For instance, Do is one quarter note, while ReMi represents two eighth notes.
|Do // 1 quarter note
|ReMi // 2 eighth notes
|FaSo-La // 4 sixteenth notes (or equivalent duration)
Lines beginning with // are treated as comments and are ignored by parsers or players.
By default, the melodic interval proceeds to the nearest available note. To specify direction for wider intervals, you can prefix a note with ^ for ascending or v for descending.
For example, DoRa implies a descending interval from Do to the 'Ra' below it.
However, Do^Ra forces an ascending interval from Do to the 'Ra' above it.
Similarly, DoMi implies an ascending interval, but DovMi would force a descending interval.
A rest is represented by ン (in Japanese notation). A tie or slur is represented by ー. This allows you to extend the duration of a note.
Since the default unit is one beat, a half note can be written as Do -.
|Do - Re -|
For lyrics or other blocks of text, use Markdown-style code blocks indicated by ```. This allows you to write lyrics and other notes separately from the musical score.
Twinkle, twinkle, little star,
How I wonder what you are.
ScoreDown supports English note names. To clearly delineate notes, each note name must start with a capital letter.
|G D |C G
|Do Do So So |La La So --
|C G |D G
|Fa Fa Mi Mi|Re Re Do --
- Ties/Slurs: Use
--(two hyphens). - Rests: Use
nnorrr.
Uses the 哆来咪发索拉梯 characters for pitches. The syntax is otherwise identical to the Japanese version.
- Ties/Slurs: Use
--. - Rests: Use
休.
Uses the 도레미파솔라시 characters for pitches. The syntax is otherwise identical to the Japanese version.
- Ties/Slurs: Use
--. - Rests: Use
쉼.
ScoreDown is an actively developing project. The core specification is now stable, and we are planning to add more tools and features.
- Core Specification Defined: It's done! You can now use this specification to write down your musical ideas concisely.
- Enrich Example Files: More examples are needed, including files using English notation.
- Parser Implementation (In Progress): Implementing a parser for ScoreDown files, likely in Python or JavaScript.
- Web Player Development: A player to play back ScoreDown files directly in the browser.
- MIDI Integration: Functionality to export scores to MIDI files using Python or JavaScript.
We are looking for collaborators! - If you are interested in this project, please feel free to open an Issue or send a Pull Request. We welcome your contributions!