NØISEDE

Songs & Teilen

Das Textformat

Das Textformat, in dem die Website Songs zeigt und das IMPORT liest. Die ganze Grammatik, jedes Token, jeder Fehler.

Ein NØISE-Song lässt sich als ein paar Zeilen Text schreiben. Die Website zeigt Songs in dieser Form, und die App liest den Text mit IMPORT: wähl im Dateidialog eine Textdatei. Der Text ist dafür gemacht, in einen Chat, eine Mail oder einen Forumsbeitrag eingefügt zu werden und das unverändert zu überstehen.

Diese Seite ist die Grammatik-Referenz. Sie ist gegen den Parser in der App geprüft (ChartTextFormat im Package NOISETheory) und gegen die Round-Trip-Tests, die ihn absichern.

Ein vollständiges Beispiel

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. |

Es gibt drei Arten von Zeilen: Kopfzeilen (key: value), Teil-Köpfe ([NAME …]) und Taktzeilen (| … |). Leere Zeilen und Zeilen, die mit # beginnen, werden ignoriert, ebenso die Signaturzeile NOISE SONG 1.

Zeilenarten

Die Signatur

NOISE SONG 1

Die erste Zeile. Jede Zeile, die mit NOISE SONG beginnt (Groß- und Kleinschreibung egal), überspringt der Parser, also ist die Signatur optional, wenn du einen Song von Hand tippst. Lass sie stehen: sie sagt Menschen (und der Website), was der Text ist.

Kopfzeilen

Eine Kopfzeile ist key: value. Bei den Schlüsseln ist Groß- und Kleinschreibung egal; der Wert läuft bis zum Zeilenende. Sie kommen in dieser Reihenfolge; leere Werte werden weggelassen:

SchlüsselBedeutungDie App schreibt
nameName des Songs. Fehlt er, wird der Song als Imported song importiert.freien Text
notesFreie Notizen zum Song. Beim Lesen wird description als Alias angenommen. Zeilenumbrüche werden zu Leerzeichen.freien Text
authorWer das Schema geschrieben hat.freien Text
styleDer JAM-Stil des ganzen Songs. Stil-id in Kleinbuchstaben: pop, rock, blues, jazz, hiphop, funk, metal. Das Drum-Genre folgt daraus. Ein unbekannter Wert fällt weg, kein Fehler.Stil-id
kitDas eine JAM-Kit des ganzen Songs (eine Kit-id, gültig im Stil). Opak.Kit-id
die Zeilen-ZeilenDie eigenen DRUMS- und JAM-Zeilen des Songs – wovon jeder Teil ausgeht – mit denselben Wörtern, die ein Teil-Kopf benutzt, eine pro Zeile: feel:, fillin:, fillout:, variation:, preset:, denergy:, swing:, humanize:, live:, intensity:, colorlayer:, rhythm:, drums: off. Siehe Teil-Köpfe für jede einzelne.z. B. feel: halfTime, preset: LAID_BACK
bpmTempo. Beim Import auf 20–300 begrenzt. Keine Zahl → ignoriert.ganze Zahl
tuningDie Stimmung, für die der Song geschrieben ist. Wie die Band-Felder wird sie beim Laden auf die Session angewendet: Die Band stimmt sich auf die Stimmung des Songs um.standard, dropD, halfStepDown, fullStepDown, dropC, openG, openD, dadgad
capoDer Bund, auf dem der Kapo des Songs sitzt, 0–9 (seit 0.71). Beim Laden angewendet wie die Stimmung: fehlt er oder steht 0, heißt das kein Kapo, und Laden nimmt ihn ab. Das Schema bleibt in der Grifftonart; die Band klingt so viele Bünde höher.Ganzzahl
seedDer Groove-Seed des Autors: die ganze Zahl, aus der die Band ihre Wahl zieht (welche Takte, welche Fills, welcher Anlauf im Bass), damit der Song überall gleich spielt. Nur geschrieben, wenn er gesetzt ist; überlebt den Round-Trip und wird nie erfunden.Ganzzahl
keyDie geschriebene Tonart des Schemas. Stufen-Felder werden gegen sie aufgelöst. Siehe Tonarten. Unbekannt → Fehler.Am, F#, Bb …
endonce (oder end) lässt den Song einmal spielen und stoppen; alles andere – oder keine end-Zeile – heißt endlos loopen.once

Jeder andere Schlüssel wird gelesen und verworfen, du kannst also eigene ergänzen (source: …), ohne den Import zu brechen. Er überlebt nur den Round-Trip nicht.

Hinweis

key und end werden ins Schema selbst gelesen, alles andere sind Metadaten des Songs. Ein Song ohne key-Zeile wird trotzdem importiert; seine Stufen-Felder werden dann für die Anzeige in C-Dur aufgelöst und folgen beim Spielen dem KEY-Modul.

Tonarten

key: nimmt einen Grundton und optional Dur oder Moll. Angenommene Schreibweisen:

  • Grundton: C D E F G A B mit #/♯ oder b/♭. Bs und Kreuze landen auf derselben Tonhöhe (Bb = A#); geschrieben werden Kreuze (C#, F#m).
  • Moll: ein angehängtes m, min, minor, min oder minor – Am, A min, A minor.
  • Dur: nichts, oder maj/major/ maj/ major – G, G major.

Es gibt nur Dur und Moll, im Textformat wie im KEY-Modul.

Teil-Köpfe

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

Der Kopf ist eine […]-Zeile; die Elemente darin sind durch einzelne Leerzeichen getrennt. Das erste Element ist der Name. Namen können in der Textform keine Leerzeichen enthalten, also wird VERSE TWO als VERSE_TWO geschrieben, und Unterstriche werden beim Import wieder zu Leerzeichen. Ein leerer Name wird zu SECTION.

Jedes weitere Element ist optional und darf in beliebiger Reihenfolge stehen:

ElementBedeutungWerte
xNWiederholungen. Auf 1–16 begrenzt.x2, x4
energy=Energie des Teils. Unbekannter Wert → base.base, lift, groove, hold, riff, sparse, stop
color=Farb-Tag für die Anzeige.cyan, orange, magenta, green, … (opak; die App legt es auf ihre Palette)
die DRUMS-Zeile
drums=offDas Kit schweigt in diesem Teil (Solo-Raum); drums=on sagt das Gegenteil ausdrücklich.off, on
feel=Der Groove für Drums und Band, aus den Feels des Song-Stils.ein GrooveFeel-Tag, z. B. swing, shuffle, halfTime, straight
fillin=Das Becken auf der Eins des Teils.crash, splash, none, choke
fillout=Was das Kit im letzten Takt des Teils tut: das Arrangement entscheidet, immer ein Fill, nie, oder ein Fill aus der Bank des Genres nach Namen.auto, fill, none, break, ein Name
fillDasselbe wie fillout=fill (die alte FILL-Markierung).Schalter, kein Wert
variation=Die Overlays des Stils, durch Komma getrennt. Wird mitgeführt; noch keine Wörter.ride,ghosts+
preset=Das DRUMS-Preset nach Namen; Leerzeichen als Unterstrich.STOCK, TIGHT, DRIVING, LAID_BACK, LOOSE, SMOKY, QUIET, CUSTOM
denergy=Wie hart das Kit spielt, 0–1 (drumenergy= wird weiterhin gelesen).0.75
swing=Das Raster, 0 straight bis 1 volle Triole, 0–1.0.5
humanize=Wie stark eine Hand um den Part schwankt, 0–1.0.3, 1
live=Wie viel geschriebenes Detail hörbar wird, 0–1.0.25
die JAM-Zeile
rhythm=Die Rhythmusgitarre für diesen Teil an oder aus.on, off
intensity=Intensität der Band für diesen Teil. Auf 0–1 begrenzt.0.5
colorlayer=Die vierte Farbebene für diesen Teil an oder aus.on, off

Ein Teil trägt keinen Stil, kein Kit und kein Drum-Genre: drums=ROCK, band=rock und kit= in einem Teil-Kopf gibt es nicht mehr (ein unbekannter Schlüssel wird ignoriert, also importiert ein alter Text weiterhin – nur ohne diese). Elemente ohne =, die weder xN noch fill sind, und key=value-Elemente mit unbekanntem Schlüssel werden ignoriert. Geschrieben werden nur die Elemente, die ein Teil setzt, also ist [VERSE] ein vollständiger Kopf: alles, was er offen lässt, folgt dem Teil davor, dann dem Song.

Was die sieben Energien mit Band und Drums machen, steht unter Energie und Overrides.

Taktzeilen

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

Eine Taktzeile beginnt mit |: an diesem ersten Zeichen erkennt der Parser die Zeile, also ist es Pflicht. Takte sind durch | getrennt; das | am Ende darf fehlen. Auf einen Teil-Kopf können mehrere Taktzeilen folgen, und Takte laufen über Zeilen hinweg weiter (ein | - | in der nächsten Zeile verlängert den letzten Akkord der vorigen). Taktzeilen vor dem ersten Teil-Kopf sind ein Fehler.

Innerhalb eines Takts sind Tokens durch Leerzeichen getrennt. Die Regeln, der Reihe nach:

  1. Ein Token, ohne (beats) → der Akkord füllt den ganzen Takt.
  2. Mehrere Tokens, keines oder nur manche mit (beats) → der Takt wird gleichmäßig aufgeteilt. | D Em | im Vierviertel sind je zwei Zählzeiten; | C(2) G | sind ebenfalls je zwei: die ausdrücklichen Zählzeiten gelten nur, wenn jedes Token im Takt welche trägt.
  3. Jedes Token hat (beats) → jeder Akkord bekommt genau so viele Zählzeiten. | C(1) D(3) | ist eine Zählzeit C und drei D. Ein Token darf länger sein als ein Takt: | G(8) | ist ein G über zwei Takte. Zählzeiten, die ganze Takte ergeben, werden zu Längen in ganzen Takten. Ein Teil muss nicht auf ganze Takte kommen; der Editor zeigt eine solche Summe in Amber.
  4. - oder % allein in einem Takt → Fortsetzung: der vorige Akkord dauert einen Takt länger. Eine Fortsetzung ohne vorigen Akkord ist ein Fehler.
  5. N.C., NC, REST oder N (Groß- oder Kleinschreibung egal) → ein Pausentakt (kein Akkord). Band und Drums behandeln ihn als Stille, siehe Energie und Overrides.
  6. Ein Zirkumflex zieht vor (seit 0.71): ^G wird ein Achtel früher angeschlagen, ^^G ein Sechzehntel, und über den Taktstrich gehalten. Der Zirkumflex gehört zum Token (^Am(2), ^IV@x35553(2)) und fällt auf einer Pause oder einem % weg. Stelle und Länge des Akkords rühren sich nicht; nur der Anschlag der Band.

Achtung

% heißt in diesem Format „ein Takt mehr vom selben Akkord“, genau wie -. Es ist kein eigenes Feld „vorigen Akkord wiederholen“: ein Schema, das ein solches Feld enthält, wird mit % geschrieben, und beim Zurücklesen wird daraus ein längerer voriger Akkord. Das Ergebnis klingt identisch.

Die Zahl in (beats) wird gegen die Taktart gelesen, mit der der Text geparst wird. Text wird immer mit 4 Zählzeiten pro Takt geschrieben und gelesen; eine Session im Dreiviertel oder Sechsachtel ändert den Text nicht.

Akkord-Tokens

Ein Akkord-Token ist entweder eine Stufe (römische Ziffer, relativ zur Tonart, transponiert mit ihr) oder ein absolutes Akkordsymbol (ein wörtlicher Akkord). Beide Arten dürfen in einem Takt gemischt werden.

Ein Token kann nach einem @ den Griff tragen, den der Spieler gewählt hat: Em@x32010, oder C@x35553(2), wenn der Takt unterteilt ist. Der Griff sind sechs Bünde von der tiefen zur hohen Saite, x für eine gedämpfte Saite; Bünde ab 10 brauchen Trenner (8-10-10-9-8-8), und @n am Ende nennt einen Grundbund, der sich nicht ableiten lässt (x24442@2). Ein unlesbarer Griff fällt weg, und der Akkord wird trotzdem gelesen. Pausen und Wiederholungen tragen nie einen.

Der Parser entscheidet so: beginnt das Token mit einem von I V i v b # 1 2 3 4 5 6 7 und lässt es sich als römische Ziffer lesen, ist es eine Stufe. Sonst wird es als Akkordsymbol gelesen. Bb7 (beginnt mit B) ist also immer ein Akkordsymbol, bVII eine Stufe; V7 ist eine Stufe, E7 ein Akkordsymbol.

Stufen (römische Ziffern)

I   ii   IV   V   vi   bVII   #iv   IIm7   V7   IVmaj7   V/V   V7/vi   1   4   5
  • Ziffer: I II III IV V VI VII oder die Zahlen 1–7.
  • Groß- und Kleinschreibung: eine großgeschriebene Ziffer ohne Qualität ist ein einfacher Dur-Dreiklang, eine kleingeschriebene ohne Qualität ein Moll-Dreiklang (ii = IIm). Klein plus 7 ist ein Moll-Septakkord (ii7 = IIm7). Sobald du eine Qualität ausschreibst, ist die Groß- und Kleinschreibung egal.
  • Alteration: ein vorangestelltes b/♭ senkt die Stufe um einen Halbton (bVII, bIII), ein vorangestelltes #/♯ erhöht sie (#iv).
  • Qualität und Alterationen: jedes Akkordsymbol-Suffix aus der Tabelle unten (maj7, m7b5, 7#9, sus4, dim, add9, …), direkt hinter der Ziffer. Intern wird das Suffix gelesen, als stünde es hinter einem C.
  • Zwischendominante: V/x. Vor dem / muss V stehen; dahinter kommt die Zielstufe (V/V, V7/vi, V/II). Zwischendominanten werden als V/ + Ziel geschrieben.
  • Slash-Bass (seit 0.71): eine Stufe der Tonart hinter dem letzten /, Nashville-Art: I/3 (C/E in C, A/C♯ in A), V/7, IV/#4, I/b7, oder ein Tonname I/E. Auch eine Zwischendominante trägt einen: V/II/3. Der Parser liest den letzten /: eine Ziffer (mit b/#) oder ein Tonbuchstabe ist ein Bass, ein römischer Schwanz eine Zielstufe. Ein von Hand getipptes V/5 heißt jetzt also „V mit der fünften Stufe im Bass“ – die App hat diese Form nie geschrieben, und V/V ist unverändert. Die Band spielt den Bass.
  • Eine Stufe ohne ausgeschriebene Qualität (I, IV) nimmt ihre Qualität beim Spielen aus der Tonart: den leitereigenen Dreiklang dieser Stufe, oder einen Septakkord, wenn der JAM-Stil Septakkorde bevorzugt.

Stufen werden in einer kanonischen Form zurückgeschrieben: großgeschriebene Ziffer, und eine ausgeschriebene Qualität, sobald es eine gibt (Imaj, IIm7, Vmaj, bVIImaj, V/V); eine Stufe ohne Qualität bleibt nackt (I). Ein Schema hängt beim Wiederlesen also nie von der Groß- und Kleinschreibung ab. Was du in der kürzeren Form tippst, kommt als derselbe Akkord zurück.

Absolute Akkordsymbole

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

Ein Akkordsymbol ist Grundton · Qualität · Zusätze · Alterationen · optional /bass. Die Regeln, die zählen:

  • Grundton: ein Buchstabe A–G (Groß- oder Kleinschreibung egal) mit bis zu zwei #/♯ oder b/♭, oder x für ein Doppelkreuz. An der Grundton-Position gehört b immer zum Buchstaben: Bb7 ist ein Septakkord auf Bb, keine erniedrigte Septime. Erniedrigte Alterationen (b5, b9, b13) werden nur nach einer Qualität erkannt (C7b9).
  • Qualität (der längste Treffer gewinnt): siehe Tabelle. - direkt hinter dem Grundton heißt Moll (C-7); - vor einer späteren Ziffer heißt erniedrigt (C7-9). M, maj, Δ werden vor dem kleinen m geprüft. sus allein ist sus4. 6/9 ist eine hinzugefügte Sexte und None, kein Slash-Akkord. alt ist 7#5#9.
  • Alterationen stehen hintereinander, ohne Klammern: G7b9#11. In einer Taktzeile bedeuten Klammern (beats): C7(b9,#11) wird als schlichtes C7 gelesen, Cm(maj7) als Cm.
  • Bass: / gefolgt von einem Ton. D/F#, C/E, Am/G. Der Bass muss ein einfacher Ton sein; /9 hinter einer Qualität ist stattdessen eine hinzugefügte None. Seit 0.71 spielt die Band ihn – der Bassist, die Walking-Line und das Pad – wo er vorher nur angezeigt wurde.
  • Pausen: N.C., NC, REST, N.

Erkannte Qualitäts-Tokens und was aus ihnen wird:

Du schreibstAkkordtypSymbol, das die App schreibt
(nichts), maj, 6 (mit Sexte), add11, add13 (mit Sexte)Dur-DreiklangC, C6, Cadd11
m, min, -, m6 (mit Sexte)Moll-DreiklangCm, Cm6
dim, °verminderter DreiklangCdim
aug, +übermäßiger DreiklangCaug
sus2sus2Csus2
sus4, sussus4Csus4
5PowerchordC5
maj7, ma7, M7, Δ7, ΔDur-Septakkord (maj7)Cmaj7
m7, min7, -7Moll-SeptakkordCm7
7, alt (mit #5 #9)DominantseptakkordC7, C7#5#9
dim7, °7, o7verminderter SeptakkordCdim7
m7b5, m7♭5, ø, ø7halbverminderter SeptakkordCm7b5
mM7, mMaj7, m(maj7)Moll mit großer SeptimeCmM7
aug7, +7übermäßiger SeptakkordCaug7
add9mit NoneCadd9
maj9 / m9, min9, -9 / 9maj9 / Moll-9 / Dominant-9Cmaj9, Cm9, C9
maj11 / m11, min11, -11 / 11maj11 / Moll-11 / Dominant-11Cmaj11, Cm11, C11
maj13 / m13, min13, -13 / 13maj13 / Moll-13 / Dominant-13Cmaj13, Cm13, C13

Alterations-Tokens (nach einer Qualität): b5 #5 b9 #9 #11 b13 (auch mit ♭/♯, oder -5 +5 -9 +9 +11 -13), add2/add9, add4/add11, add6/6/add13, /9, no3/omit3, no5/omit5, und sus2/sus4 als hinzugefügte Töne nach einer Qualität.

Absolute Akkorde werden als root + symbol + alterations + /bass zurückgeschrieben, mit der dritten Spalte der Tabelle (Bb7, F#m7b5, D/F#). Ein Stufen-Feld merkt sich außerdem den klingenden Akkord in der geschriebenen Tonart als Anzeigetext.

Längen im Text und im Editor

Der Editor bietet Längen in ganzen Takten und Längen unter einem Takt von 1, 2, 3 Zählzeiten. Im Text wird jede Länge mit den Taktregeln oben ausgedrückt:

EditorText (4/4)
ein Akkord über 1 Takt| C |
ein Akkord über 2 Takte| C | - |
zwei Akkorde à 2 Zählzeiten| C G | oder | C(2) G(2) |
1 Zählzeit + 3 Zählzeiten| C(1) G(3) |
3 Zählzeiten + 1 Zählzeit, dann ein Takt| C(3) G(1) | Am |
ein Pausentakt| N.C. |
ein leerer Teil| N.C. | (ein Pausentakt wird geschrieben, damit der Teil nicht verloren geht)

Akkorde unter einem Takt werden mit ausdrücklichen Zählzeiten geschrieben und gruppiert, bis sie einen Takt füllen; ein Akkord über eine Taktgrenze hinweg wird als Akkord über den ganzen Takt geschrieben, gefolgt von --Fortsetzungen.

Fehler

Das Lesen stoppt beim ersten Problem. Jeder Fehler trägt die Zeilennummer (ab 1, jede Zeile des Texts zählt, auch Signatur und Leerzeilen) und einen Grund. Die App zeigt beides, wenn ein Import scheitert, auf Englisch: Line 7: unexpected line.

Grund (wörtlich)UrsacheAbhilfe
section header missing ]Eine Zeile beginnt mit [, endet aber nicht mit ].Klammer schließen; ein Kopf muss auf einer Zeile stehen.
chords before any [SECTION]Eine | … |-Zeile steht vor dem ersten Teil-Kopf.Eine [NAME]-Zeile über die Takte setzen.
unknown key <value>Der Wert von key: ist kein erkannter Grundton mit Dur oder Moll.Am, F#, Bb major, … schreiben.
unexpected lineEine nicht leere Zeile, die weder Kopfzeile (key: value), Teil-Kopf noch Taktzeile ist – etwa ein verirrtes Wort, oder eine Taktzeile, der das | am Anfang fehlt.Kommentare mit # beginnen. Prüfen, dass Taktzeilen mit | anfangen.
continuation with no previous chord- oder % im ersten Takt des Songs, oder direkt nach einem Teil-Kopf ohne Akkord davor.Den Akkord schreiben statt des Strichs.
cannot read chord "<token>" (<detail>)Ein Token ist weder römische Ziffer noch Akkordsymbol. <detail> ist eines von emptyInput, unknownRoot, unknownQuality, badBass, trailingGarbage.Die Schreibweise gegen die Tabellen oben prüfen. Typische Übeltäter: H statt B, die Abstände in Cmin7b5, ein nicht unterstütztes Suffix wie C7sus, oder ein Bass, der kein Ton ist (C/x).
no sections (Zeile 0)Der Text enthält überhaupt keinen […]-Kopf.Mindestens einen Teil mit Takten anlegen.

Die Kopfzeilen key: value sind nie ein Fehler, außer key. Unbekannte Elemente eines Teil-Kopfs, unbekannte Energien und unbekannte Stile werden still ignoriert: der Song wird trotzdem importiert.

Grenzen

Sie kommen aus dem Schema-Modell und gelten für den Textimport wie für den Editor:

  • höchstens 24 Teile pro Song (die Grenze des Editors; eine Datei mit mehr wird vollständig gelesen),
  • höchstens 32 Akkord-Felder pro Teil,
  • Wiederholungen 1–16 (xN wird begrenzt),
  • ein einzelner Akkord dauert höchstens 32 Takte,
  • bpm wird auf 20–300 begrenzt.

Text von Hand schreiben

Der kürzeste gültige Song ist ein Teil-Kopf und eine Taktzeile:

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

Mit name: und key: ist er fertig zum Teilen:

NOISE SONG 1
name: Four chords
key: G

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

Sichere ihn als Textdatei und hol ihn mit IMPORT herein (siehe Import). Weil die Akkorde Stufen sind, spielt derselbe Text in jeder Tonart, die du im KEY-Modul einstellst.