NØISEEN

Songs & sharing

Song text format

The plain-text song format the website shows and IMPORT reads. Full grammar, every token, every error.

A NØISE song can be written as a few lines of text. The website shows songs in this form, and the app reads the text with IMPORT — pick a text file in the file dialog. The text is meant to be pasted into a chat, a mail or a forum post and to survive it unchanged.

This page is the grammar reference. It is verified against the parser in the app (ChartTextFormat in the NOISETheory package) and the round-trip tests that guard it.

A complete example

NOISE SONG 1
name: Amber Skyline
author: NØISE
notes: Demo song for the website — sparse intro, a lift, a swung stop-time bridge
style: rock
kit: rock.classic
feel: straight
preset: LAID_BACK
bpm: 112
key: Am
end: once

[INTRO x2 energy=sparse color=cyan fillin=none]
| Am | - | F | G |

[VERSE x2 fill]
| Am | F | C | G |
| Am | F | C(2) G(2) | G |

[CHORUS x2 energy=lift color=orange fillin=crash preset=DRIVING rhythm=on]
| F | G | Am | Am |
| F | G | C | E7 |

[BRIDGE energy=stop color=magenta feel=halfTime fillout=none]
| Dm7 | G7 | Cmaj7 | Bm7b5(2) E7(2) |
| N.C. |

Three kinds of lines exist: header lines (key: value), section headers ([NAME …]) and bar lines (| … |). Empty lines and lines starting with # are ignored, and so is the NOISE SONG 1 signature line.

Line types

The signature

NOISE SONG 1

The first line. Any line that starts with NOISE SONG (case-insensitive) is skipped by the parser, so the signature is optional when you type a song by hand. Keep it: it tells people (and the website) what the text is.

Header lines

A header line is key: value. Keys are case-insensitive; the value runs to the end of the line. They come in this order; empty values are left out:

KeyMeaningWritten by the app as
nameSong name. Missing → the song is imported as Imported song.free text
notesFree notes about the song. description is accepted as an alias when reading. Line breaks are flattened to spaces.free text
authorWho wrote the chart.free text
styleThe JAM style of the whole song. Lower-case style id: pop, rock, blues, jazz, hiphop, funk, metal. The drum genre follows from it. An unknown value is dropped, not an error.style id
kitThe one JAM kit of the whole song (a kit id scoped to the style). Opaque.kit id
the lane linesThe song's own DRUMS and JAM lanes — what every section starts from — as the same words a section line uses, one per line: feel:, fillin:, fillout:, variation:, preset:, denergy:, swing:, humanize:, live:, intensity:, colorlayer:, rhythm:, drums: off. See Section headers for each.e.g. feel: halfTime, preset: LAID_BACK
bpmTempo. Clamped to 20–300 on import. Non-numeric → ignored.integer
tuningThe guitar tuning the song is written for. Like the band fields, this is applied to the session when the song loads: the band re-pitches to the song's tuning.standard, dropD, halfStepDown, fullStepDown, dropC, openG, openD, dadgad
capoThe fret the song's capo sits on, 0–9 (since 0.71). Applied when the song loads, like the tuning: absent or 0 means no capo, and loading the song takes one off. The chart stays in the shape key; the band sounds that many frets up.integer
seedThe author's groove seed: the whole number the band draws its seeded choices from (which bars, which fills, which approach notes), so the song plays the same way everywhere. Written only when set, kept on round-trip, never invented.integer
keyThe written key of the chart. Degree cells are resolved against it. See Keys. Unknown → error.Am, F#, Bb …
endonce (or end) makes the song play once and stop; anything else — or no end line — means loop forever.once

Any other key is read and dropped, so you can add your own (source: …) without breaking import — it just does not survive the round trip.

Note

key and end are read into the chart itself, everything else is song metadata. A song without a key line still imports; its degree cells are then resolved in C major for display and follow the KEY module when it plays.

Keys

key: takes a tonic and an optional mode. Accepted spellings:

  • Tonic: C D E F G A B with #/♯ or b/♭. Flats and sharps map to the same pitch class (Bb = A#); sharps are written (C#, F#m).
  • Minor: a trailing m, min, minor, min or minor — Am, A min, A minor.
  • Major: nothing, or maj/major/ maj/ major — G, G major.

Only major and minor exist as modes, in the text format and in the KEY module alike.

Section headers

[VERSE x2 energy=lift color=orange feel=shuffle fillin=crash fill preset=DRIVING rhythm=on]

The header is a […] line; the parts inside are separated by single spaces. The first part is the name. Names cannot contain spaces in the text form, so VERSE TWO is written as VERSE_TWO, and underscores turn back into spaces on import. An empty name becomes SECTION.

Every further part is optional and may appear in any order:

PartMeaningValues
xNRepeats. Clamped to 1–16.x2, x4
energy=Section energy. Unknown value → base.base, lift, groove, hold, riff, sparse, stop
color=Display colour tag.cyan, orange, magenta, green, … (opaque; the app maps it to its palette)
the DRUMS lane
drums=offThe kit is silent for this section (solo space); drums=on says the opposite explicitly.off, on
feel=The groove for drums and band, from the song's style's feels.a GrooveFeel tag, e.g. swing, shuffle, halfTime, straight
fillin=The cymbal on the section's one.crash, splash, none, choke
fillout=What the kit does on the section's last bar: the arrangement decides, always a fill, never, or a fill of the genre's bank by name.auto, fill, none, break, a name
fillThe same as fillout=fill (the old FILL flag).flag, no value
variation=The style's overlays, comma-separated. Carried; no words yet.ride,ghosts+
preset=The DRUMS preset by name; spaces as underscores.STOCK, TIGHT, DRIVING, LAID_BACK, LOOSE, SMOKY, QUIET, CUSTOM
denergy=How hard the kit plays, 0–1 (drumenergy= is still read).0.75
swing=The grid, 0 straight to 1 full triplet, 0–1.0.5
humanize=How much a hand wavers around the part, 0–1.0.3, 1
live=How much authored detail is revealed, 0–1.0.25
the JAM lane
rhythm=The rhythm-guitar layer on or off for this section.on, off
intensity=Band intensity for this section. Clamped to 0–1.0.5
colorlayer=The fourth colour layer on or off for this section.on, off

A section carries no style, kit or drum genre: drums=ROCK, band=rock and kit= on a section line are gone (an unknown key is ignored, so an old text still imports — without those). Parts without = that are not xN or fill, and key=value parts with an unknown key, are ignored. Only the parts a section sets are written, so [VERSE] is a complete header: everything it leaves out follows the section before it, then the song.

What the seven energies do to the band and drums is explained under Energy and overrides.

Bar lines

| Am | F | C(2) G(2) | G |
| - |

A bar line starts with | — that first character is how the parser recognises the line, so it is required. Bars are separated by |; the trailing | may be left out. Several bar lines can follow one section header, and bars continue across lines (a | - | on the next line extends the last chord of the previous line). Bar lines before any section header are an error.

Inside a bar, tokens are separated by spaces. The rules, in order:

  1. One token, no (beats) → the chord fills the whole bar.
  2. Several tokens, none or only some with (beats) → the bar is split equally. | D Em | in 4/4 is two beats each; | C(2) G | is also two beats each — the explicit beats count only when every token in the bar carries one.
  3. Every token has (beats) → each chord gets exactly that many beats. | C(1) D(3) | is one beat of C and three of D. A token can be longer than a bar: | G(8) | is a two-bar G. Beats that add up to whole bars become whole-bar durations. A section need not add up to whole bars; the editor shows such a total in amber.
  4. - or % alone in a bar → continuation: the previous chord lasts one bar longer. Continuation with no previous chord is an error.
  5. N.C., NC, REST or N (any case) → a rest bar (no chord). The band and the drums treat it as silence, see Energy and overrides.
  6. A caret pushes (since 0.71): ^G is struck an eighth early, ^^G a sixteenth early, and held over the bar line. The caret binds to the token — ^Am(2), ^IV@x35553(2) — and is dropped on a rest or a %. The chord's place and length never move; only the band's strike does.

Warning

% in this format means "one more bar of the same chord", the same as -. It is not a separate "repeat previous chord" cell — a chart that contains a repeat cell is written with %, and reading it back yields a longer previous chord. The result sounds identical.

The beat count in (beats) is interpreted against the time signature the text is parsed with. Text is always written and parsed with 4 beats per bar; a 3/4 or 6/8 session does not change the text.

Chord tokens

A chord token is either a degree (roman numeral, key-relative, transposes with the key) or an absolute chord symbol (a literal chord). Both kinds can be mixed in one bar.

A token may carry the guitar grip the player chose, after an @: Em@x32010, or C@x35553(2) when the bar is subdivided. The grip is six frets low E to high e with x for a muted string; frets of 10 or more need separators (8-10-10-9-8-8) and @n at the end states a base fret that cannot be derived (x24442@2). A grip that cannot be read is dropped and the chord still parses. Rests and repeats never carry one.

The parser decides like this: if the token starts with one of I V i v b # 1 2 3 4 5 6 7 and parses as a roman numeral, it is a degree. Otherwise it is parsed as a chord symbol. So Bb7 (starts with B) is always a chord symbol, while bVII is a degree; V7 is a degree, E7 is a chord symbol.

Degrees (roman numerals)

I   ii   IV   V   vi   bVII   #iv   IIm7   V7   IVmaj7   V/V   V7/vi   1   4   5
  • Numeral: I II III IV V VI VII or the digits 1–7.
  • Case: an uppercase numeral without a quality is a plain major triad, a lowercase numeral without a quality is a minor triad (ii = IIm). Lowercase plus 7 is a minor seventh (ii7 = IIm7). Once you write an explicit quality the case does not matter.
  • Alteration: a leading b/♭ lowers the degree a semitone (bVII, bIII), a leading #/♯ raises it (#iv).
  • Quality and alterations: any chord-symbol suffix from the table below (maj7, m7b5, 7#9, sus4, dim, add9, …), written directly after the numeral. Internally the suffix is parsed as if it followed a C root.
  • Secondary dominant: V/x — the part before / must be V; the part after is the target degree (V/V, V7/vi, V/II). Secondary dominants are written as V/ + target.
  • Slash bass (since 0.71): a degree of the key after the last /, Nashville style — I/3 (C/E in C, A/C♯ in A), V/7, IV/#4, I/b7, or a note name I/E. A secondary dominant carries one too: V/II/3. The parser reads the last /: a digit (with b/#) or a note letter is a bass, a roman tail is a secondary target. So a hand-typed V/5 now means "V with the fifth degree in the bass" — the app never wrote that form, and V/V is unchanged. The band plays the bass.
  • A degree without an explicit quality (I, IV) takes its quality from the key when it is played — the diatonic triad of that scale degree, or a seventh when the JAM style prefers sevenths.

Degrees are written back in a canonical form: uppercase numeral, and an explicit quality as soon as there is one (Imaj, IIm7, Vmaj, bVIImaj, V/V); a degree without a quality stays bare (I). So a chart never depends on case when it is read again. Anything you type in the shorter form round-trips to the same chord.

Absolute chord symbols

C   Am   F#m7   Bb7   Cmaj7   Dm7b5   G7b9   E7#9   Asus4   Cadd9   C6/9   Bdim7   Ebaug   D/F#   E5   N.C.

A chord symbol is root · quality · modifiers · alterations · optional /bass. Rules that matter:

  • Root: a letter A–G (any case) with up to two #/♯ or b/♭, or x for a double sharp. At the root position b always belongs to the letter: Bb7 is B-flat seven. Flat alterations (b5, b9, b13) are only recognised after a quality (C7b9).
  • Quality (longest match wins): see the table. - right after the root means minor (C-7); - before a digit later means flat (C7-9). M, maj, Δ are checked before lowercase m. sus alone is sus4. 6/9 is an added 6th and 9th, not a slash chord. alt is 7#5#9.
  • Alterations are written in a row, without parentheses: G7b9#11. In a bar line, parentheses mean (beats): C7(b9,#11) is read as a plain C7, and Cm(maj7) as Cm.
  • Bass: / followed by a note. D/F#, C/E, Am/G. The bass must be a plain note; /9 after a quality is an added 9th instead. Since 0.71 the band plays it — the bass player, the walking line and the pad voice it — where before it was display only.
  • Rests: N.C., NC, REST, N.

Recognised quality tokens and what they become:

You writeChord typeSymbol the app writes
(nothing), maj, 6 (adds 6th), add11, add13 (adds 6th)major triadC, C6, Cadd11
m, min, -, m6 (adds 6th)minor triadCm, Cm6
dim, °diminished triadCdim
aug, +augmented triadCaug
sus2suspended 2ndCsus2
sus4, sussuspended 4thCsus4
5power chordC5
maj7, ma7, M7, Δ7, Δmajor 7thCmaj7
m7, min7, -7minor 7thCm7
7, alt (adds #5 #9)dominant 7thC7, C7#5#9
dim7, °7, o7diminished 7thCdim7
m7b5, m7♭5, ø, ø7half-diminished 7thCm7b5
mM7, mMaj7, m(maj7)minor–major 7thCmM7
aug7, +7augmented 7thCaug7
add9added 9thCadd9
maj9 / m9, min9, -9 / 9major 9 / minor 9 / dominant 9Cmaj9, Cm9, C9
maj11 / m11, min11, -11 / 11major 11 / minor 11 / dominant 11Cmaj11, Cm11, C11
maj13 / m13, min13, -13 / 13major 13 / minor 13 / dominant 13Cmaj13, Cm13, C13

Alteration tokens (after a quality): b5 #5 b9 #9 #11 b13 (also with ♭/♯, or -5 +5 -9 +9 +11 -13), add2/add9, add4/add11, add6/6/add13, /9, no3/omit3, no5/omit5, and sus2/sus4 as added tones after a quality.

Absolute chords are written back as root + symbol + alterations + /bass using the table's third column (Bb7, F#m7b5, D/F#). A degree cell also remembers the sounding chord in the written key as its display text.

Durations in the text vs. in the editor

The editor offers whole-bar durations and sub-bar durations of 1, 2, 3 beats. In the text every duration is expressed with the bar rules above:

EditorText (4/4)
a 1-bar chord| C |
a 2-bar chord| C | - |
two chords of 2 beats| C G | or | C(2) G(2) |
1 beat + 3 beats| C(1) G(3) |
3 beats + 1 beat, then a bar| C(3) G(1) | Am |
a rest bar| N.C. |
an empty section| N.C. | (one rest bar is written so the section is not lost)

Sub-bar chords are written with explicit beats and grouped until they fill a bar; a chord that spans a bar boundary is written as a whole-bar chord followed by - continuations.

Errors

Parsing stops at the first problem. Every error carries the line number (1-based, counting every line of the text including the signature and blank lines) and a reason. The app shows both when an import fails, in English: Line 7: unexpected line.

Reason (verbatim)CauseFix
section header missing ]A line starts with [ but does not end with ].Close the bracket; a header must be on one line.
chords before any [SECTION]A | … | line appears before the first section header.Add a [NAME] line above the bars.
unknown key <value>The key: value is not a recognised tonic/mode.Use Am, F#, Bb major, …
unexpected lineA non-empty line that is not a header (key: value), a section header or a bar line — for example a stray word, or a bar line that lost its leading |.Start comments with #. Make sure bar lines begin with |.
continuation with no previous chord- or % in the first bar of the song, or right after a section header with no chord before it.Write the chord instead of the dash.
cannot read chord "<token>" (<detail>)A token is neither a roman numeral nor a chord symbol. <detail> is one of emptyInput, unknownRoot, unknownQuality, badBass, trailingGarbage.Check the spelling against the tables above. Typical culprits: H for B, Cmin7b5 spacing, an unsupported suffix like C7sus, or a bass that is not a note (C/x).
no sections (line 0)The text contains no […] header at all.Add at least one section with bars.

The key: value header lines are never errors except for key. Unknown section-header parts, unknown energies and unknown styles are ignored silently — the song still imports.

Limits

These come from the chart model and apply to text import as well as to the editor:

  • at most 24 sections per song (the editor's own limit; a file with more is read in full),
  • at most 32 chord cells per section,
  • repeats 1–16 (xN is clamped),
  • a single chord lasts at most 32 bars,
  • bpm is clamped to 20–300.

Writing text by hand

The shortest valid song is one header line and one bar line:

[A]
| G | D | Em | C |

Add name: and key: and it is ready to share:

NOISE SONG 1
name: Four chords
key: G

[LOOP]
| I | V | vi | IV |

Save it as a text file and bring it in with IMPORT (see Import). Because the chords are degrees, the same text plays in any key you set in the KEY module.