Estoy en proceso de crear una pestaña de guitarra para el convertidor rtttl (Ring Tone Text Transfer Language) en PHP. Para preparar una pestaña de guitarra para la conversión rtttl, primero elimino todos los comentarios (los comentarios se anotaron con # y terminaron con - #), luego tengo algunas líneas que establecen el tempo, tomo nota del ajuste y defino múltiples instrumentos (Tempo 120 \ nDefina Guitar 1 \ nDefina Bass 1, etc etc.) que se eliminan de la pestaña y se reservan para un uso posterior.pestaña php regex para guitarra (pestañas o tablatura, un tipo de notación musical)
Ahora, básicamente, no me queda nada excepto las pestañas de la guitarra. Cada pestaña está precedida de su nombre de instrumento junto con el nombre del instrumento anotado anteriormente.
Algunas veces tenemos pestañas para 2 instrumentos separados que están vinculados porque deben tocarse juntos, es decir, una guitarra y un bajo tocando juntos.
Ejemplo 1, Standard Guitarra:
|Guitar 1
e|--------------3-------------------3------------|
B|------------3---3---------------3---3----------|
G|----------0-------0-----------0-------0--------|
D|--------0-----------0-------0-----------0------|
A|------2---------------2---2---------------2----|
E|----3-------------------3-------------------3--|
Ejemplo 2, conjunción Tab:
|Guitar 1
e|--------------3-------------------3------------|
B|------------3---3---------------3---3----------|
G|----------0-------0-----------0-------0--------|
D|--------0-----------0-------0-----------0------|
A|------2---------------2---2---------------2----|
E|----3-------------------3-------------------3--|
|
|
|Bass 1
G|----------0-------0-----------0-------0--------|
D|--------2-----------2-------2-----------2------|
A|------3---------------3---3---------------3----|
E|----3-------------------3-------------------3--|
he considerado otros métodos de identificación de las pestañas sin resultados sólidos. Espero que alguien que haga expresiones regulares me ayude a encontrar una forma de identificar una sola pestaña de guitarra y, si es posible, también pueda hacer coincidir una pestaña con múltiples instrumentos unidos entre sí.
Una vez que las pestañas están en una matriz, las examinaré una línea a la vez y las convertiré en líneas rtttl (explotadas en cada nueva línea "\ n").
No quiero separar las pestañas de guitarra en el documento mediante la explosión "\ n \ n" o algo similar porque no identifica la pestaña de guitarra, sino que identifica el espacio entre las pestañas, no en el pestañas ellos mismos.
He estado jugando con esto durante aproximadamente una semana y esta es la única retención importante que tengo. Todo lo demás es bastante simple.
A partir de la corriente, he intentado muchas variaciones del patrón de expresiones regulares. Aquí está una de las más recientes muestras de prueba:
<?php
$t = "
|Guitar 1
e|--------------3-------------------3------------|
B|------------3---3---------------3---3----------|
G|----------0-------0-----------0-------0--------|
D|--------0-----------0-------0-----------0------|
A|------2---------------2---2---------------2----|
E|----3-------------------3-------------------3--|
|Guitar 1
e|--------------3-------------------3------------|
B|------------3---3---------------3---3----------|
G|----------0-------0-----------0-------0--------|
D|--------0-----------0-------0-----------0------|
A|------2---------------2---2---------------2----|
E|----3-------------------3-------------------3--|
|
|
|Bass 1
G|----------0-------0-----------0-------0--------|
D|--------2-----------2-------2-----------2------|
A|------3---------------3---3---------------3----|
E|----3-------------------3-------------------3--|
";
preg_match_all("/^.*?(\\|).*?(\\|)/is",$t,$p);
print_r($p);
?>
También vale la pena señalar que dentro de las pestañas, ¿dónde están los guiones y # 's, usted también puede tener cualquier variación de letras, números y puntuacion. El comienzo de cada línea marca la afinación de cada cuerda con uno de los siguientes casos insensibles: a, a #, b, c, C#, d, d #, e, f, f #, g o g.
Gracias de antemano por su ayuda con este problema tan difícil.
¿Entendí bien, que quieren una matriz en donde cada elemento sería la línea de un instrumento? –
No, eso es lo que haré después de separar cada pestaña. ¿Te das cuenta de que tengo la Guitarra 1, luego la Guitarra 1 y la Grave 1 arriba? Me gustaría que la primera Guitar 1 esté en $ array [0], y la Guitar 1 y Bass 1 estén en $ array [1], etc. para que cada sección o medida (o w/e la llame) de la pestaña podría ser separado Después de esta separación, puedo analizar a través de cada línea de cada pestaña para convertirla a rtttl - cada línea se convertirá a la vez a través de str_replace y funciones similares. – John