Canciones y compartir
Formato de texto de una canción
El formato de texto plano que la web muestra e IMPORTAR lee. La gramática completa, cada token, cada error.
Una canción de NØISE se puede escribir en unas pocas líneas de texto. La web muestra las canciones en esta forma, y la app lee el texto con IMPORTAR: elige un archivo de texto en el diálogo de archivos. El texto está pensado para pegarse en un chat, un correo o un foro y sobrevivir intacto.
Esta página es la referencia de la gramática. Está comprobada contra el parser de la app (ChartTextFormat, en el paquete NOISETheory) y contra los tests de ida y vuelta que lo vigilan.
Un ejemplo completo
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. |Hay tres clases de líneas: líneas de cabecera (key: value), cabeceras de sección ([NAME …]) y líneas de compases (| … |). Las líneas vacías y las que empiezan por # se ignoran, igual que la línea de firma NOISE SONG 1.
Tipos de línea
La firma
NOISE SONG 1La primera línea. El parser salta cualquier línea que empiece por NOISE SONG (sin distinguir mayúsculas), así que la firma es opcional cuando escribes una canción a mano. Déjala: le dice a la gente (y a la web) qué es el texto.
Líneas de cabecera
Una línea de cabecera es key: value. Las claves no distinguen mayúsculas; el valor llega hasta el final de la línea. Van en este orden; los valores vacíos se omiten:
| Clave | Significado | La app la escribe como |
|---|---|---|
name | Nombre de la canción. Si falta, la canción se importa como Imported song. | texto libre |
notes | Notas libres sobre la canción. Al leer se acepta description como alias. Los saltos de línea se convierten en espacios. | texto libre |
author | Quién escribió el cifrado. | texto libre |
style | El estilo de JAM de toda la canción. Id de estilo en minúsculas: pop, rock, blues, jazz, hiphop, funk, metal. El género de batería se deriva de él. Un valor desconocido se descarta, no es un error. | id de estilo |
kit | El único kit de JAM de toda la canción (un id de kit dentro del estilo). Opaca. | id de kit |
| las líneas de carril | Los carriles propios de DRUMS y JAM de la canción — de donde parte cada sección — con las mismas palabras que usa una línea de sección, una por línea: feel:, fillin:, fillout:, variation:, preset:, denergy:, swing:, humanize:, live:, intensity:, colorlayer:, rhythm:, drums: off. Mira Cabeceras de sección para cada una. | p. ej. feel: halfTime, preset: LAID_BACK |
bpm | Tempo. Al importar se limita a 20–300. No numérico → se ignora. | entero |
tuning | La afinación de guitarra para la que está escrita la canción. Como los campos de la banda, esta se aplica a la sesión cuando la canción se carga: la banda se reafina a la afinación de la canción. | standard, dropD, halfStepDown, fullStepDown, dropC, openG, openD, dadgad |
capo | El traste donde va la cejilla de la canción, 0–9 (desde 0.71). Se aplica al cargar, como la afinación: ausente o 0 significa sin cejilla, y cargar la canción la quita. El cifrado se queda en la tonalidad de las formas; la banda suena esos trastes más arriba. | entero |
seed | La semilla de groove del autor: el número entero del que la banda saca sus elecciones (qué compases, qué fills, qué notas de aproximación), para que la canción suene igual en todas partes. Solo se escribe cuando está fijada; se conserva en la ida y vuelta y nunca se inventa. | entero |
key | La tonalidad escrita del cifrado. Las casillas de grado se resuelven contra ella. Mira Tonalidades. Desconocida → error. | Am, F#, Bb … |
end | once (o end) hace que la canción suene una vez y pare; cualquier otra cosa, o ninguna línea end, significa en loop para siempre. | once |
Cualquier otra clave se lee y se descarta, así que puedes añadir las tuyas (source: …) sin romper la importación; solo que no sobreviven a la ida y vuelta.
Nota
key y end se leen dentro del propio cifrado; todo lo demás son metadatos de la canción. Una canción sin línea key se importa igual; sus casillas de grado se resuelven entonces en C mayor para mostrarse y siguen el módulo TONALIDAD cuando suena.
Tonalidades
key: toma una tónica y un modo opcional. Grafías aceptadas:
- Tónica:
C D E F G A Bcon#/♯ob/♭. Bemoles y sostenidos van a la misma clase de altura (Bb=A#); se escriben sostenidos (C#,F#m). - Menor: una
m,min,minor,minominoral final:Am,A min,A minor. - Mayor: nada, o
maj/major/maj/major:G,G major.
Solo existen los modos mayor y menor, tanto en el formato de texto como en el módulo TONALIDAD.
Cabeceras de sección
[VERSE x2 energy=lift color=orange feel=shuffle fillin=crash fill preset=DRIVING rhythm=on]La cabecera es una línea […]; las partes de dentro van separadas por espacios simples. La primera parte es el nombre. En la forma de texto los nombres no pueden llevar espacios, así que VERSE TWO se escribe VERSE_TWO, y al importar los guiones bajos vuelven a ser espacios. Un nombre vacío pasa a ser SECTION.
Todas las demás partes son opcionales y pueden ir en cualquier orden:
| Parte | Significado | Valores |
|---|---|---|
xN | Repeticiones. Se limita a 1–16. | x2, x4 |
energy= | Energía de la sección. Valor desconocido → base. | base, lift, groove, hold, riff, sparse, stop |
color= | Etiqueta de color para mostrar. | cyan, orange, magenta, green, … (opaca; la app la lleva a su paleta) |
| el carril DRUMS | ||
drums=off | El kit calla en esta sección (espacio en solo); drums=on dice lo contrario de forma explícita. | off, on |
feel= | El groove de batería y banda, de entre los feels del estilo de la canción. | una etiqueta GrooveFeel, p. ej. swing, shuffle, halfTime, straight |
fillin= | El platillo en el uno de la sección. | crash, splash, none, choke |
fillout= | Qué hace el kit en el último compás de la sección: lo decide el arreglo, siempre un fill, nunca, o un fill del banco del género por nombre. | auto, fill, none, break, un nombre |
fill | Lo mismo que fillout=fill (el antiguo indicador FILL). | indicador, sin valor |
variation= | Las capas del estilo, separadas por comas. Se conservan; todavía sin palabras propias. | ride,ghosts+ |
preset= | El preset de DRUMS por nombre; los espacios como guiones bajos. | STOCK, TIGHT, DRIVING, LAID_BACK, LOOSE, SMOKY, QUIET, CUSTOM |
denergy= | Cuánto pega el kit, 0–1 (drumenergy= se sigue leyendo). | 0.75 |
swing= | La rejilla, de 0 straight a 1 tresillo completo, 0–1. | 0.5 |
humanize= | Cuánto varía una mano alrededor de la parte, 0–1. | 0.3, 1 |
live= | Cuánto detalle de autor se revela, 0–1. | 0.25 |
| el carril JAM | ||
rhythm= | La capa de guitarra rítmica encendida o apagada en esta sección. | on, off |
intensity= | Intensidad de la banda para esta sección. Se limita a 0–1. | 0.5 |
colorlayer= | La cuarta capa, la de color, encendida o apagada en esta sección. | on, off |
Una sección no lleva estilo, kit ni género de batería propios: drums=ROCK, band=rock y kit= en una línea de sección han desaparecido (una clave desconocida se ignora, así que un texto antiguo se sigue importando, sin ellas). Las partes sin = que no sean xN ni fill, y las partes key=value con clave desconocida, se ignoran. Solo se escriben las partes que fija una sección, así que [VERSE] es una cabecera completa: todo lo que deja fuera sigue lo que dice la sección de antes, y luego la canción.
Lo que las siete energías hacen con la banda y la batería está explicado en Energía y ajustes por sección.
Líneas de compases
| Am | F | C(2) G(2) | G |
| - |Una línea de compases empieza por |: ese primer carácter es lo que le dice al parser qué línea es, así que es obligatorio. Los compases van separados por |; el | final se puede omitir. A una cabecera de sección le pueden seguir varias líneas de compases, y los compases continúan de una línea a otra (un | - | en la línea siguiente alarga el último acorde de la anterior). Una línea de compases antes de cualquier cabecera de sección es un error.
Dentro de un compás, los tokens van separados por espacios. Las reglas, en orden:
- Un token, sin
(beats)→ el acorde llena el compás entero. - Varios tokens, ninguno o solo algunos con
(beats)→ el compás se reparte a partes iguales.| D Em |en cuatro por cuatro son dos tiempos cada uno;| C(2) G |también son dos tiempos cada uno: los tiempos explícitos solo cuentan cuando todos los tokens del compás llevan uno. - Todos los tokens llevan
(beats)→ cada acorde recibe exactamente esos tiempos.| C(1) D(3) |es un tiempo de C y tres de D. Un token puede durar más de un compás:| G(8) |es un G de dos compases. Los tiempos que suman compases enteros pasan a ser duraciones de compás entero. Una sección no tiene por qué sumar compases enteros; el editor muestra ese total en ámbar. -o%solos en un compás → continuación: el acorde anterior dura un compás más. Una continuación sin acorde anterior es un error.N.C.,NC,RESToN(en mayúsculas o minúsculas) → un compás de silencio (sin acorde). La banda y la batería lo tratan como silencio, mira Energía y ajustes por sección.- Un acento circunflejo anticipa (desde 0.71):
^Gse ataca una corchea antes,^^Guna semicorchea, y se mantiene sobre la línea de compás. El acento va unido a la ficha (^Am(2),^IV@x35553(2)) y se descarta en un silencio o un%. El sitio y la duración del acorde no se mueven; solo el ataque de la banda.
Aviso
% en este formato significa “un compás más del mismo acorde”, lo mismo que -. No es una casilla aparte de “repetir el acorde anterior”: un cifrado que contiene una casilla de repetición se escribe con %, y al leerlo de vuelta sale un acorde anterior más largo. El resultado suena idéntico.
El número de tiempos en (beats) se interpreta contra el tipo de compás con el que se parsea el texto. El texto se escribe y se parsea siempre a 4 tiempos por compás; una sesión en tres por cuatro o seis por ocho no cambia el texto.
Tokens de acorde
Un token de acorde es o bien un grado (número romano, relativo a la tonalidad, transpone con ella) o bien un símbolo de acorde absoluto (un acorde literal). Los dos tipos se pueden mezclar en un mismo compás.
Un token puede llevar la forma de guitarra que eligió el guitarrista, tras una @: Em@x32010, o C@x35553(2) cuando el compás está subdividido. La forma son seis trastes de la sexta a la primera cuerda, con x para cuerda apagada; los trastes de 10 o más necesitan separadores (8-10-10-9-8-8) y @n al final indica un traste base que no se puede deducir (x24442@2). Una forma ilegible se descarta y el acorde se parsea igual. Los silencios y las repeticiones nunca llevan una.
El parser decide así: si el token empieza por uno de I V i v b # 1 2 3 4 5 6 7 y se parsea como número romano, es un grado. Si no, se parsea como símbolo de acorde. Así que Bb7 (empieza por B) es siempre un símbolo de acorde, mientras que bVII es un grado; V7 es un grado, E7 es un símbolo de acorde.
Grados (números romanos)
I ii IV V vi bVII #iv IIm7 V7 IVmaj7 V/V V7/vi 1 4 5- Numeral:
I II III IV V VI VIIo las cifras1–7. - Mayúsculas y minúsculas: un numeral en mayúsculas sin cualidad es una tríada mayor a secas, un numeral en minúsculas sin cualidad es una tríada menor (
ii=IIm). Minúsculas más7es una séptima menor (ii7=IIm7). En cuanto escribes una cualidad explícita, da igual mayúsculas o minúsculas. - Alteración: una
b/♭delante baja el grado medio tono (bVII,bIII), un#/♯delante lo sube (#iv). - Cualidad y alteraciones: cualquier sufijo de símbolo de acorde de la tabla de abajo (
maj7,m7b5,7#9,sus4,dim,add9, …), escrito justo detrás del numeral. Por dentro el sufijo se parsea como si siguiera a una fundamentalC. - Dominante secundaria:
V/x; la parte antes de/tiene que serV; la parte de después es el grado de destino (V/V,V7/vi,V/II). Las dominantes secundarias se escriben comoV/+ destino. - Bajo con barra (desde 0.71): un grado de la tonalidad tras la última
/, al estilo Nashville:I/3(C/E en C, A/C♯ en A),V/7,IV/#4,I/b7, o un nombre de notaI/E. Una dominante secundaria también puede llevarlo:V/II/3. El analizador lee la última/: un dígito (conb/#) o una letra de nota es un bajo, una cola romana es un grado de destino. Así que unV/5escrito a mano ahora significa «V con el quinto grado en el bajo»; la app nunca escribió esa forma, yV/Vno cambia. La banda toca el bajo. - Un grado sin cualidad explícita (
I,IV) toma su cualidad de la tonalidad cuando suena: la tríada diatónica de ese grado de la escala, o una séptima cuando el estilo de JAM prefiere séptimas.
Los grados se escriben de vuelta en forma canónica: numeral en mayúsculas, y cualidad explícita en cuanto la hay (Imaj, IIm7, Vmaj, bVIImaj, V/V); un grado sin cualidad se queda desnudo (I). Así un cifrado nunca depende de mayúsculas o minúsculas cuando se vuelve a leer. Todo lo que escribas en la forma corta da el mismo acorde a la vuelta.
Símbolos de acorde absolutos
C Am F#m7 Bb7 Cmaj7 Dm7b5 G7b9 E7#9 Asus4 Cadd9 C6/9 Bdim7 Ebaug D/F# E5 N.C.Un símbolo de acorde es fundamental · cualidad · modificadores · alteraciones · /bajo opcional. Las reglas que importan:
- Fundamental: una letra
A–G(en mayúsculas o minúsculas) con hasta dos#/♯ob/♭, oxpara doble sostenido. En la posición de la fundamental,bpertenece siempre a la letra:Bb7es un Bb con séptima. Las alteraciones con bemol (b5,b9,b13) solo se reconocen detrás de una cualidad (C7b9). - Cualidad (gana la coincidencia más larga): mira la tabla.
-justo detrás de la fundamental significa menor (C-7);-más adelante, antes de una cifra, significa bemol (C7-9).M,maj,Δse comprueban antes que lamminúscula.sussolo essus4.6/9es sexta y novena añadidas, no un acorde con bajo.altes7#5#9. - Alteraciones: se escriben seguidas, sin paréntesis:
G7b9#11. En una línea de compases, los paréntesis significan(beats):C7(b9,#11)se lee como unC7a secas, yCm(maj7)comoCm. - Bajo:
/seguido de una nota.D/F#,C/E,Am/G. El bajo tiene que ser una nota a secas;/9detrás de una cualidad es una novena añadida. Desde 0.71 la banda lo toca – el bajista, la línea de bajo y el pad – donde antes solo se mostraba. - Silencios:
N.C.,NC,REST,N.
Tokens de cualidad reconocidos y en qué se convierten:
| Tú escribes | Tipo de acorde | Símbolo que escribe la app |
|---|---|---|
(nada), maj, 6 (añade la sexta), add11, add13 (añade la sexta) | tríada mayor | C, C6, Cadd11 |
m, min, -, m6 (añade la sexta) | tríada menor | Cm, Cm6 |
dim, ° | tríada disminuida | Cdim |
aug, + | tríada aumentada | Caug |
sus2 | segunda suspendida | Csus2 |
sus4, sus | cuarta suspendida | Csus4 |
5 | power chord | C5 |
maj7, ma7, M7, Δ7, Δ | séptima mayor | Cmaj7 |
m7, min7, -7 | séptima menor | Cm7 |
7, alt (añade #5 #9) | séptima de dominante | C7, C7#5#9 |
dim7, °7, o7 | séptima disminuida | Cdim7 |
m7b5, m7♭5, ø, ø7 | séptima semidisminuida | Cm7b5 |
mM7, mMaj7, m(maj7) | menor con séptima mayor | CmM7 |
aug7, +7 | séptima aumentada | Caug7 |
add9 | novena añadida | Cadd9 |
maj9 / m9, min9, -9 / 9 | mayor 9 / menor 9 / dominante 9 | Cmaj9, Cm9, C9 |
maj11 / m11, min11, -11 / 11 | mayor 11 / menor 11 / dominante 11 | Cmaj11, Cm11, C11 |
maj13 / m13, min13, -13 / 13 | mayor 13 / menor 13 / dominante 13 | Cmaj13, Cm13, C13 |
Tokens de alteración (detrás de una cualidad): b5 #5 b9 #9 #11 b13 (también con ♭/♯, o -5 +5 -9 +9 +11 -13), add2/add9, add4/add11, add6/6/add13, /9, no3/omit3, no5/omit5, y sus2/sus4 como notas añadidas detrás de una cualidad.
Los acordes absolutos se escriben de vuelta como root + symbol + alterations + /bass con la tercera columna de la tabla (Bb7, F#m7b5, D/F#). Una casilla de grado recuerda además, como texto para mostrar, el acorde que suena en la tonalidad escrita.
Las duraciones en el texto y en el editor
El editor ofrece duraciones de compás entero y duraciones dentro del compás de 1, 2 y 3 tiempos. En el texto, toda duración se expresa con las reglas de compás de arriba:
| Editor | Texto (4/4) |
|---|---|
| un acorde de 1 compás | | C | |
| un acorde de 2 compases | | C | - | |
| dos acordes de 2 tiempos | | C G | o | C(2) G(2) | |
| 1 tiempo + 3 tiempos | | C(1) G(3) | |
| 3 tiempos + 1 tiempo, luego un compás | | C(3) G(1) | Am | |
| un compás de silencio | | N.C. | |
| una sección vacía | | N.C. | (se escribe un compás de silencio para que la sección no se pierda) |
Los acordes de menos de un compás se escriben con tiempos explícitos y se agrupan hasta llenar un compás; un acorde que cruza la línea de compás se escribe como un acorde de compás entero seguido de continuaciones -.
Errores
El parseo se detiene en el primer problema. Cada error lleva el número de línea (empezando en 1, contando todas las líneas del texto, firma y líneas en blanco incluidas) y un motivo. La app muestra los dos cuando falla una importación, en inglés: Line 7: unexpected line.
| Motivo (literal) | Causa | Solución |
|---|---|---|
section header missing ] | Una línea empieza por [ pero no termina en ]. | Cierra el corchete; una cabecera va en una sola línea. |
chords before any [SECTION] | Una línea | … | aparece antes de la primera cabecera de sección. | Añade una línea [NAME] encima de los compases. |
unknown key <value> | El valor de key: no es una tónica/modo reconocido. | Usa Am, F#, Bb major, … |
unexpected line | Una línea no vacía que no es ni cabecera (key: value), ni cabecera de sección, ni línea de compases: por ejemplo una palabra suelta, o una línea de compases que perdió su | inicial. | Empieza los comentarios por #. Comprueba que las líneas de compases empiezan por |. |
continuation with no previous chord | - o % en el primer compás de la canción, o justo después de una cabecera de sección sin acorde delante. | Escribe el acorde en vez del guion. |
cannot read chord "<token>" (<detail>) | Un token no es ni número romano ni símbolo de acorde. <detail> es uno de emptyInput, unknownRoot, unknownQuality, badBass, trailingGarbage. | Comprueba la grafía contra las tablas de arriba. Sospechosos habituales: H por B, los espacios en Cmin7b5, un sufijo no admitido como C7sus, o un bajo que no es una nota (C/x). |
no sections (línea 0) | El texto no contiene ninguna cabecera […]. | Añade al menos una sección con compases. |
Las líneas de cabecera key: value nunca dan error salvo key. Las partes desconocidas de una cabecera de sección, las energías desconocidas y los estilos desconocidos se ignoran en silencio: la canción se importa igual.
Límites
Vienen del modelo del cifrado y valen tanto para la importación de texto como para el editor:
- como mucho 24 secciones por canción (el límite del editor; un archivo con más se lee entero),
- como mucho 32 casillas de acorde por sección,
- repeticiones 1–16 (
xNse limita), - un solo acorde dura como mucho 32 compases,
bpmse limita a 20–300.
Escribir texto a mano
La canción válida más corta es una línea de cabecera y una línea de compases:
[A]
| G | D | Em | C |Añade name: y key: y está lista para compartir:
NOISE SONG 1
name: Four chords
key: G
[LOOP]
| I | V | vi | IV |Guárdala como archivo de texto y métela con IMPORTAR (mira Importar). Como los acordes son grados, el mismo texto suena en cualquier tonalidad que pongas en el módulo TONALIDAD.