Nummers & delen
Tekstformaat van een nummer
Het tekstformaat waarin de website een nummer laat zien en dat IMPORT leest. De hele grammatica, elk token, elke fout.
Een NØISE-nummer past in een paar regels tekst. De website laat nummers in deze vorm zien, en de app leest de tekst met IMPORT: kies een tekstbestand in het bestandsvenster. De tekst is bedoeld om in een chat, een mail of een forumpost te plakken en dat ongeschonden te overleven.
Deze pagina is de grammatica. Ze is gecontroleerd aan de hand van de parser in de app (ChartTextFormat in het NOISETheory-pakket) en van de round-trip-tests die hem bewaken.
Een compleet voorbeeld
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. |Er zijn drie soorten regels: kopregels (key: value), sectiekoppen ([NAME …]) en akkoordregels (| … |). Lege regels en regels die met # beginnen worden overgeslagen, net als de herkenningsregel NOISE SONG 1.
Soorten regels
De herkenningsregel
NOISE SONG 1De eerste regel. Elke regel die met NOISE SONG begint (hoofdletters of niet) slaat de parser over, dus als je een nummer met de hand typt mag hij weg. Laat hem staan: hij vertelt mensen (en de website) wat de tekst is.
Kopregels
Een kopregel is key: value. Hoofdletters in de sleutel maken niet uit; de waarde loopt tot het einde van de regel. Ze staan in deze volgorde, en lege waarden worden weggelaten:
| Sleutel | Betekenis | Geschreven als |
|---|---|---|
name | De naam van het nummer. Ontbreekt hij, dan heet het nummer na import Imported song. | vrije tekst |
notes | Vrije notities bij het nummer. Bij lezen wordt description ook geaccepteerd. Regeleinden worden spaties. | vrije tekst |
author | Wie het schema schreef. | vrije tekst |
style | De JAM-stijl van het hele nummer. Stijl-id in kleine letters: pop, rock, blues, jazz, hiphop, funk, metal. Het drumgenre volgt eruit. Een onbekende waarde valt weg, zonder fout. | stijl-id |
kit | Het ene JAM-kit-id van het hele nummer (een kit-id binnen de stijl). Wordt niet gecontroleerd. | kit-id |
| de blokregels | De eigen DRUMS- en JAM-blokken van het nummer — het beginpunt van elke sectie — als dezelfde woorden die een sectieregel gebruikt, één per regel: feel:, fillin:, fillout:, variation:, preset:, denergy:, swing:, humanize:, live:, intensity:, colorlayer:, rhythm:, drums: off. Zie Sectiekoppen voor elk. | bijv. feel: halfTime, preset: LAID_BACK |
bpm | Het tempo. Bij import begrensd tot 20-300. Geen getal: wordt genegeerd. | geheel getal |
tuning | De stemming waarvoor het nummer geschreven is. Net als de bandvelden wordt die op de sessie toegepast als het nummer laadt: de band stemt mee naar de stemming van het nummer. | standard, dropD, halfStepDown, fullStepDown, dropC, openG, openD, dadgad |
capo | De fret waarop de capo van het nummer zit, 0–9 (sinds 0.71). Toegepast zodra het nummer laadt, net als de stemming: weggelaten of 0 betekent geen capo, en laden haalt hem eraf. Het schema blijft in de greeptoonsoort; de band klinkt zoveel frets hoger. | geheel getal |
seed | De groove-seed van de auteur: het gehele getal waaruit de band zijn keuzes trekt (welke maten, welke fills, welke loopjes in de bas), zodat het nummer overal hetzelfde speelt. Alleen geschreven als hij gezet is; blijft staan bij exporteren en opnieuw importeren en wordt nooit verzonnen. | geheel getal |
key | De geschreven toonsoort van het schema. Trapvakken krijgen er hun akkoord van. Zie Toonsoorten. Onbekend: fout. | Am, F#, Bb … |
end | once (of end) laat het nummer één keer spelen en dan stoppen; elke andere waarde, of geen end-regel, betekent: het blijft in de loop. | once |
Elke andere sleutel wordt gelezen en verder genegeerd, dus je kunt er zelf een toevoegen (source: …) zonder dat de import breekt.
Let op
key en end gaan het schema zelf in, al het andere is metadata van het nummer. Een nummer zonder key-regel importeert ook; zijn trapvakken krijgen dan voor de weergave hun akkoord uit C majeur en volgen de KEY-module zodra het speelt.
Toonsoorten
key: neemt een grondtoon en, als je wilt, majeur of mineur. Wat de parser accepteert:
- Grondtoon:
C D E F G A Bmet#/♯ofb/♭. Mollen en kruizen komen op dezelfde toon uit (Bb=A#); geschreven wordt met kruizen (C#,F#m). - Mineur: een
m,min,minor,minofminorerachter:Am,A min,A minor. - Majeur: niets, of
maj/major/maj/major:G,G major.
Er bestaan alleen majeur en mineur, in het tekstformaat en in de KEY-module allebei.
Sectiekoppen
[VERSE x2 energy=lift color=orange feel=shuffle fillin=crash fill preset=DRIVING rhythm=on]De kop is een regel tussen [ en ]; de delen erin zijn gescheiden door spaties. Het eerste deel is de naam. Een naam kan in de tekst geen spaties bevatten, dus VERSE TWO wordt geschreven als VERSE_TWO, en bij import worden underscores weer spaties. Een lege naam wordt SECTION.
Elk verder deel is optioneel en mag in elke volgorde staan:
| Deel | Betekenis | Waarden |
|---|---|---|
xN | Herhalingen. Begrensd tot 1-16. | x2, x4 |
energy= | De energie van de sectie. Onbekende waarde: base. | base, lift, groove, hold, riff, sparse, stop |
color= | Kleurtag voor de weergave. | cyan, orange, magenta, green, … (wordt niet gecontroleerd; de app kiest er een kleur uit zijn palet bij) |
| het DRUMS-blok | ||
drums=off | De kit is stil voor deze sectie (ruimte voor een solo); drums=on zegt expliciet het tegenovergestelde. | off, on |
feel= | De groove voor drums en band, uit de feels van de stijl van het nummer. | een GrooveFeel-tag, bijvoorbeeld swing, shuffle, halfTime, straight |
fillin= | Het bekken op de één van de sectie. | crash, splash, none, choke |
fillout= | Wat de drummer speelt op de laatste maat van de sectie: de opbouw beslist, altijd een fill, nooit, of een fill uit de bank van het genre bij naam. | auto, fill, none, break, een naam |
fill | Hetzelfde als fillout=fill (de oude FILL-vlag). | vlag, geen waarde |
variation= | De overlays van de stijl, gescheiden door komma's. Wordt gedragen; nog geen woorden. | ride,ghosts+ |
preset= | De DRUMS-preset bij naam; spaties als underscores. | STOCK, TIGHT, DRIVING, LAID_BACK, LOOSE, SMOKY, QUIET, CUSTOM |
denergy= | Hoe hard de drummer speelt, 0-1 (drumenergy= wordt nog gelezen). | 0.75 |
swing= | Het raster, 0 straight tot 1 volle triool, 0-1. | 0.5 |
humanize= | Hoe veel een hand om het patroon heen wankelt, 0-1. | 0.3, 1 |
live= | Hoeveel uitgeschreven detail zichtbaar wordt, 0-1. | 0.25 |
| het JAM-blok | ||
rhythm= | De slaggitaarlaag aan of uit voor deze sectie. | on, off |
intensity= | De intensiteit van de band voor deze sectie. Begrensd tot 0-1. | 0.5 |
colorlayer= | De kleurlaag aan of uit voor deze sectie. | on, off |
Een sectie draagt geen stijl, kit of drumgenre: drums=ROCK, band=rock en kit= op een sectieregel zijn verdwenen (een onbekende sleutel wordt genegeerd, dus oude tekst importeert nog steeds — zonder die delen). Delen zonder = die geen xN of fill zijn, en key=value-delen met een onbekende sleutel, worden genegeerd. Alleen de delen die een sectie instelt worden geschreven, dus [VERSE] is een complete kop: alles wat wordt weggelaten volgt de sectie ervoor, dan het nummer.
Wat de zeven energieën met band en drums doen staat onder Energie en de band per sectie.
Akkoordregels
| Am | F | C(2) G(2) | G |
| - |Een akkoordregel begint met |; aan dat eerste teken herkent de parser de regel, dus het is verplicht. Maten zijn gescheiden door |; de | aan het einde mag weg. Na één sectiekop kunnen meerdere akkoordregels volgen, en maten lopen door over regels heen (een | - | op de volgende regel verlengt het laatste akkoord van de regel ervoor). Akkoordregels vóór de eerste sectiekop zijn een fout.
Binnen een maat staan tokens gescheiden door spaties. De regels, op volgorde:
- Eén token, geen
(beats): het akkoord vult de hele maat. - Meerdere tokens, waarvan geen of maar een deel
(beats)heeft: de maat wordt gelijk verdeeld.| D Em |in 4/4 is twee tellen elk;| C(2) G |is ook twee tellen elk: het getal tussen haakjes telt pas mee als elk token in de maat er een heeft. - Elk token heeft
(beats): elk akkoord krijgt precies zoveel tellen.| C(1) D(3) |is één tel C en drie tellen D. Een token mag langer zijn dan een maat:| G(8) |is twee maten G. Tellen die samen hele maten vormen worden hele maten. Een sectie hoeft niet op hele maten uit te komen; de editor toont zo'n totaal in amber. -of%alleen in een maat: voortzetting, het vorige akkoord duurt één maat langer. Voortzetting zonder vorig akkoord is een fout.N.C.,NC,RESTofN(hoofdletters of niet): een rustmaat (geen akkoord). Band en drums spelen die als stilte, zie Energie en de band per sectie.- Een dakje anticipeert (sinds 0.71):
^Gwordt een achtste te vroeg aangeslagen,^^Geen zestiende, en over de maatstreep vastgehouden. Het dakje hoort bij het token (^Am(2),^IV@x35553(2)) en vervalt op een rust of een%. Plek en lengte van het akkoord veranderen niet; alleen de aanslag van de band.
Waarschuwing
% betekent in dit formaat "nog een maat hetzelfde akkoord", net als -. Het is geen apart vak "herhaal het vorige akkoord": een schema met zo'n vak wordt geschreven als %, en teruglezen geeft een langer vorig akkoord. Het klinkt hetzelfde.
Het getal in (beats) hangt af van de maatsoort waarmee de tekst gelezen wordt. Geschreven en gelezen wordt altijd met 4 tellen per maat; een sessie in 3/4 of 6/8 verandert niets aan de tekst.
Akkoordtokens
Een akkoordtoken is een trap (romeins cijfer, relatief aan de toonsoort, transponeert mee) of een absoluut akkoordsymbool (een letterlijk akkoord). Allebei mogen in één maat.
Een token kan de greep dragen die de speler koos, na een @: Em@x32010, of C@x35553(2) als de maat verdeeld is. De greep is zes frets van lage E naar hoge e, met x voor een gedempte snaar; vanaf fret 10 zijn scheidingstekens nodig (8-10-10-9-8-8) en @n aan het einde geeft een beginfret die niet uit de noten volgt (x24442@2). Een greep die niet te lezen is valt weg; het akkoord blijft staan. Rusten en % dragen er nooit een.
De parser beslist zo: begint het token met een van I V i v b # 1 2 3 4 5 6 7 en leest het als romeins cijfer, dan is het een trap. Anders wordt het als akkoordsymbool gelezen. Dus Bb7 (begint met B) is altijd een akkoordsymbool, bVII een trap; V7 is een trap, E7 een akkoordsymbool.
Trappen (romeinse cijfers)
I ii IV V vi bVII #iv IIm7 V7 IVmaj7 V/V V7/vi 1 4 5- Cijfer:
I II III IV V VI VIIof de cijfers1-7. - Hoofdletters: een hoofdletter zonder kwaliteit is een kale majeurdrieklank, een kleine letter zonder kwaliteit een mineurdrieklank (
ii=IIm). Kleine letter plus7is een mineurseptiem (ii7=IIm7). Schrijf je de kwaliteit uit, dan maken hoofdletters niet meer uit. - Verhoging of verlaging: een
b/♭ervoor verlaagt de trap een halve toon (bVII,bIII), een#/♯ervoor verhoogt hem (#iv). - Kwaliteit en alteraties: elk suffix van een akkoordsymbool uit de tabel hieronder (
maj7,m7b5,7#9,sus4,dim,add9, …), direct achter het cijfer. Intern wordt het suffix gelezen alsof het achter eenCstaat. - Tussendominant:
V/x. Het deel vóór/moetVzijn; het deel erna is de doeltrap (V/V,V7/vi,V/II). Geschreven wordtV/plus de doeltrap. - Slash-bas (sinds 0.71): een trap van de toonsoort na de laatste
/, Nashville-stijl:I/3(C/E in C, A/C♯ in A),V/7,IV/#4,I/b7, of een nootnaamI/E. Een tussendominant kan er ook een dragen:V/II/3. De parser leest de laatste/: een cijfer (metb/#) of een nootletter is een bas, een romeinse staart een doeltrap. Een handgetypteV/5betekent dus nu "V met de vijfde trap in de bas"; de app schreef die vorm nooit, enV/Vis onveranderd. De band speelt de bas. - Een trap zonder uitgeschreven kwaliteit (
I,IV) krijgt zijn kwaliteit van de toonsoort op het moment dat hij speelt: de diatonische drieklank op die trap, of een septiemakkoord als de JAM-stijl liever septiemen speelt.
Trappen worden in een vaste vorm teruggeschreven: hoofdletters, en de kwaliteit uitgeschreven zodra er een is (Imaj, IIm7, Vmaj, bVIImaj, V/V); een trap zonder kwaliteit blijft kaal (I). Zo hangt een schema bij teruglezen nooit af van hoofdletters. Wat je in de korte vorm typt komt op hetzelfde akkoord uit.
Absolute akkoordsymbolen
C Am F#m7 Bb7 Cmaj7 Dm7b5 G7b9 E7#9 Asus4 Cadd9 C6/9 Bdim7 Ebaug D/F# E5 N.C.Een akkoordsymbool is grondtoon · kwaliteit · toevoegingen · alteraties · optioneel /bas. Wat telt:
- Grondtoon: een letter
A-G(hoofdletter of niet) met hoogstens twee#/♯ofb/♭, ofxvoor een dubbelkruis. Op de plaats van de grondtoon hoortbaltijd bij de letter:Bb7is Bes zeven. Verlagingen (b5,b9,b13) worden alleen na een kwaliteit herkend (C7b9). - Kwaliteit (de langste match wint): zie de tabel.
-direct na de grondtoon is mineur (C-7);-verderop vóór een cijfer is een verlaging (C7-9).M,maj,Δworden vóór de kleinemgeprobeerd.susalleen issus4.6/9is een toegevoegde 6 en 9, geen slash-akkoord.altis7#5#9. - Alteraties schrijf je achter elkaar, zonder haakjes:
G7b9#11. Haakjes zijn in een akkoordregel voor(beats):C7(b9,#11)wordt een kaleC7, enCm(maj7)eenCm. - Bas:
/gevolgd door een noot.D/F#,C/E,Am/G. De bas moet een kale noot zijn;/9na een kwaliteit is een toegevoegde 9. Sinds 0.71 speelt de band hem — de bassist, de walking line en de pad — waar hij eerst alleen werd getoond. - Rusten:
N.C.,NC,REST,N.
Herkende kwaliteitstokens en wat ze worden:
| Jij schrijft | Akkoordtype | Geschreven symbool |
|---|---|---|
(niets), maj, 6 (voegt de 6 toe), add11, add13 (voegt de 6 toe) | majeurdrieklank | C, C6, Cadd11 |
m, min, -, m6 (voegt de 6 toe) | mineurdrieklank | Cm, Cm6 |
dim, ° | dim-drieklank | Cdim |
aug, + | aug-drieklank | Caug |
sus2 | sus2 | Csus2 |
sus4, sus | sus4 | Csus4 |
5 | powerchord | C5 |
maj7, ma7, M7, Δ7, Δ | majeurseptiem | Cmaj7 |
m7, min7, -7 | mineurseptiem | Cm7 |
7, alt (voegt #5 #9 toe) | dominantseptiem | C7, C7#5#9 |
dim7, °7, o7 | dim-septiem | Cdim7 |
m7b5, m7♭5, ø, ø7 | halfverminderd septiem | Cm7b5 |
mM7, mMaj7, m(maj7) | mineur-majeurseptiem | CmM7 |
aug7, +7 | aug-septiem | Caug7 |
add9 | toegevoegde 9 | Cadd9 |
maj9 / m9, min9, -9 / 9 | majeur 9 / mineur 9 / dominant 9 | Cmaj9, Cm9, C9 |
maj11 / m11, min11, -11 / 11 | majeur 11 / mineur 11 / dominant 11 | Cmaj11, Cm11, C11 |
maj13 / m13, min13, -13 / 13 | majeur 13 / mineur 13 / dominant 13 | Cmaj13, Cm13, C13 |
Alteratietokens (na een kwaliteit): b5 #5 b9 #9 #11 b13 (ook met ♭/♯, of -5 +5 -9 +9 +11 -13), add2/add9, add4/add11, add6/6/add13, /9, no3/omit3, no5/omit5, en sus2/sus4 als toegevoegde tonen na een kwaliteit.
Absolute akkoorden worden teruggeschreven als root + symbol + alterations + /bass, met de derde kolom van de tabel (Bb7, F#m7b5, D/F#). Een trapvak onthoudt daarnaast het klinkende akkoord in de geschreven toonsoort als weergavetekst.
Lengtes in de tekst en in de editor
De editor kent hele maten en delen van een maat van 1, 2 of 3 tellen. In de tekst valt elke lengte onder de regels voor maten hierboven:
| Editor | Tekst (4/4) |
|---|---|
| een akkoord van 1 maat | | C | |
| een akkoord van 2 maten | | C | - | |
| twee akkoorden van 2 tellen | | C G | of | C(2) G(2) | |
| 1 tel + 3 tellen | | C(1) G(3) | |
| 3 tellen + 1 tel, dan een maat | | C(3) G(1) | Am | |
| een rustmaat | | N.C. | |
| een lege sectie | | N.C. | (er wordt één rustmaat geschreven, zodat de sectie niet verloren gaat) |
Akkoorden korter dan een maat worden met tellen geschreven en gegroepeerd tot ze een maat vullen; een akkoord dat over een maatgrens heen loopt wordt een akkoord van een hele maat, gevolgd door - voor elke maat erna.
Fouten
Lezen stopt bij het eerste probleem. Elke fout noemt het regelnummer (vanaf 1; elke regel van de tekst telt mee, ook de herkenningsregel en lege regels) en een reden. Mislukt een import, dan toont de app allebei, in het Engels: Line 7: unexpected line.
| Reden (letterlijk) | Oorzaak | Oplossing |
|---|---|---|
section header missing ] | Een regel begint met [ maar eindigt niet op ]. | Sluit het haakje; een kop staat op één regel. |
chords before any [SECTION] | Een | … |-regel staat vóór de eerste sectiekop. | Zet een [NAME]-regel boven de maten. |
unknown key <value> | De waarde van key: is geen herkende grondtoon met majeur of mineur. | Gebruik Am, F#, Bb major, … |
unexpected line | Een niet-lege regel die geen kopregel (key: value), sectiekop of akkoordregel is: een los woord bijvoorbeeld, of een akkoordregel die zijn eerste | kwijt is. | Begin commentaar met #. Zorg dat akkoordregels met | beginnen. |
continuation with no previous chord | - of % in de eerste maat van het nummer, of direct na een sectiekop zonder akkoord ervoor. | Schrijf het akkoord in plaats van het streepje. |
cannot read chord "<token>" (<detail>) | Een token is geen romeins cijfer en geen akkoordsymbool. <detail> is een van emptyInput, unknownRoot, unknownQuality, badBass, trailingGarbage. | Controleer de spelling aan de hand van de tabellen hierboven. Bekende boosdoeners: H voor B, een spatie in Cmin7b5, een suffix dat niet bestaat zoals C7sus, of een bas die geen noot is (C/x). |
no sections (regel 0) | De tekst bevat geen enkele […]-kop. | Voeg minstens één sectie met maten toe. |
Kopregels key: value geven nooit een fout, behalve key. Onbekende delen in een sectiekop, onbekende energieën en onbekende stijlen worden zonder melding genegeerd: het nummer importeert.
Grenzen
Deze komen uit het model van het schema en gelden voor tekstimport net zo goed als voor de editor:
- hoogstens 24 secties per nummer (de grens van de editor; een bestand met meer wordt helemaal gelezen),
- hoogstens 32 akkoordvakken per sectie,
- herhalingen 1-16 (
xNwordt begrensd), - één akkoord duurt hoogstens 32 maten,
bpmwordt begrensd tot 20-300.
Zelf tekst schrijven
Het kortste geldige nummer is één sectiekop en één akkoordregel:
[A]
| G | D | Em | C |Zet er name: en key: bij en het is klaar om te delen:
NOISE SONG 1
name: Four chords
key: G
[LOOP]
| I | V | vi | IV |Bewaar het als tekstbestand en haal het binnen met IMPORT (zie Import). Omdat de akkoorden trappen zijn, speelt dezelfde tekst in elke toonsoort die je in KEY kiest.