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 1Die 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üssel | Bedeutung | Die App schreibt |
|---|---|---|
name | Name des Songs. Fehlt er, wird der Song als Imported song importiert. | freien Text |
notes | Freie Notizen zum Song. Beim Lesen wird description als Alias angenommen. Zeilenumbrüche werden zu Leerzeichen. | freien Text |
author | Wer das Schema geschrieben hat. | freien Text |
style | Der 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 |
kit | Das eine JAM-Kit des ganzen Songs (eine Kit-id, gültig im Stil). Opak. | Kit-id |
| die Zeilen-Zeilen | Die 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 |
bpm | Tempo. Beim Import auf 20–300 begrenzt. Keine Zahl → ignoriert. | ganze Zahl |
tuning | Die 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 |
capo | Der 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 |
seed | Der 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 |
key | Die geschriebene Tonart des Schemas. Stufen-Felder werden gegen sie aufgelöst. Siehe Tonarten. Unbekannt → Fehler. | Am, F#, Bb … |
end | once (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 Bmit#/♯oderb/♭. Bs und Kreuze landen auf derselben Tonhöhe (Bb=A#); geschrieben werden Kreuze (C#,F#m). - Moll: ein angehängtes
m,min,minor,minoderminor–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:
| Element | Bedeutung | Werte |
|---|---|---|
xN | Wiederholungen. 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=off | Das 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 |
fill | Dasselbe 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:
- Ein Token, ohne
(beats)→ der Akkord füllt den ganzen Takt. - 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. - 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. -oder%allein in einem Takt → Fortsetzung: der vorige Akkord dauert einen Takt länger. Eine Fortsetzung ohne vorigen Akkord ist ein Fehler.N.C.,NC,RESToderN(Groß- oder Kleinschreibung egal) → ein Pausentakt (kein Akkord). Band und Drums behandeln ihn als Stille, siehe Energie und Overrides.- Ein Zirkumflex zieht vor (seit 0.71):
^Gwird ein Achtel früher angeschlagen,^^Gein 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 VIIoder die Zahlen1–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 plus7ist 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 einemC. - Zwischendominante:
V/x. Vor dem/mussVstehen; dahinter kommt die Zielstufe (V/V,V7/vi,V/II). Zwischendominanten werden alsV/+ 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 TonnameI/E. Auch eine Zwischendominante trägt einen:V/II/3. Der Parser liest den letzten/: eine Ziffer (mitb/#) oder ein Tonbuchstabe ist ein Bass, ein römischer Schwanz eine Zielstufe. Ein von Hand getipptesV/5heißt jetzt also „V mit der fünften Stufe im Bass“ – die App hat diese Form nie geschrieben, undV/Vist 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#/♯oderb/♭, oderxfür ein Doppelkreuz. An der Grundton-Position gehörtbimmer zum Buchstaben:Bb7ist ein Septakkord aufBb, 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 kleinenmgeprüft.susallein istsus4.6/9ist eine hinzugefügte Sexte und None, kein Slash-Akkord.altist7#5#9. - Alterationen stehen hintereinander, ohne Klammern:
G7b9#11. In einer Taktzeile bedeuten Klammern(beats):C7(b9,#11)wird als schlichtesC7gelesen,Cm(maj7)alsCm. - Bass:
/gefolgt von einem Ton.D/F#,C/E,Am/G. Der Bass muss ein einfacher Ton sein;/9hinter 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 schreibst | Akkordtyp | Symbol, das die App schreibt |
|---|---|---|
(nichts), maj, 6 (mit Sexte), add11, add13 (mit Sexte) | Dur-Dreiklang | C, C6, Cadd11 |
m, min, -, m6 (mit Sexte) | Moll-Dreiklang | Cm, Cm6 |
dim, ° | verminderter Dreiklang | Cdim |
aug, + | übermäßiger Dreiklang | Caug |
sus2 | sus2 | Csus2 |
sus4, sus | sus4 | Csus4 |
5 | Powerchord | C5 |
maj7, ma7, M7, Δ7, Δ | Dur-Septakkord (maj7) | Cmaj7 |
m7, min7, -7 | Moll-Septakkord | Cm7 |
7, alt (mit #5 #9) | Dominantseptakkord | C7, C7#5#9 |
dim7, °7, o7 | verminderter Septakkord | Cdim7 |
m7b5, m7♭5, ø, ø7 | halbverminderter Septakkord | Cm7b5 |
mM7, mMaj7, m(maj7) | Moll mit großer Septime | CmM7 |
aug7, +7 | übermäßiger Septakkord | Caug7 |
add9 | mit None | Cadd9 |
maj9 / m9, min9, -9 / 9 | maj9 / Moll-9 / Dominant-9 | Cmaj9, Cm9, C9 |
maj11 / m11, min11, -11 / 11 | maj11 / Moll-11 / Dominant-11 | Cmaj11, Cm11, C11 |
maj13 / m13, min13, -13 / 13 | maj13 / Moll-13 / Dominant-13 | Cmaj13, 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:
| Editor | Text (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) | Ursache | Abhilfe |
|---|---|---|
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 line | Eine 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 (
xNwird begrenzt), - ein einzelner Akkord dauert höchstens 32 Takte,
bpmwird 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.