Формат данных гитарной табулатуры

Я пишу быстрый интерфейс для отображения гитарной табулатуры. Внешний интерфейс находится во Flash, но я хочу сохранить вкладку в каком-то удобочитаемом формате. Кто-нибудь знает что-то, что уже существует? Любые предложения о том, как это сделать? Одна идея, которую я получил, прочитав некоторые сообщения stackoverflow, заключалась в том, чтобы использовать строгий формат вкладки ASCII, например:

e||-1------3--------------0--|----2-------0---
B||--1-----3------------1----|----3-------0---
G||---2----0----------0------|----2-------1---
D||----3---0--------2--------|----0-------2---
A||----3---2------3----------|------------2---
E||----1---3----3------------|------------0---

У него есть преимущества. Я могу получить много информации из структуры (сколько струн, их настройки, относительное расположение нот), но это немного многословно. Я предполагаю, что "-" довольно хорошо сожмутся, когда будут отправлены по проводу.

Если кто-нибудь знает о существующем формате данных для описания гитарной табуляции, я тоже посмотрю.

изменить:

Должен отметить, что этот формат на 90% для меня и, возможно, никто, кроме меня, никогда не видел. Мне нужен простой способ написания файлов вкладок, которые в конечном итоге будут отображаться в виде графики во внешнем интерфейсе Flash, и я не хочу писать внешний интерфейс редактора.


person James Fassett    schedule 10.07.2010    source источник
comment
Я бы выбрал формат простого текста, который вы указали в своем вопросе. В свое время это было очень распространено, работает на любом компьютере без дополнительного программного обеспечения и легко печатается.   -  person nikc.org    schedule 10.07.2010


Ответы (6)


Ознакомьтесь с форматом вкладки ASCII. Также отличное описание формата здесь:

http://www.howtoreadguitartabs.net/

описание формата гитарной табуляции (от howtoreadguitartabs.net)

person Tom Pažourek    schedule 10.07.2010
comment
Это близко к тому, что я думаю. Спасибо. Не уверен, что буду поддерживать любые и все вкладки, так как я сам буду писать соответствующие вкладки вручную, но я могу попытаться добавить наиболее распространенные оскорбления и эффекты. - person James Fassett; 10.07.2010

Экспорт ASCII был бы отличной функцией, но использование ASCII в качестве внутреннего формата данных не является хорошей идеей. Например, длительности нот было бы чрезвычайно сложно выразить (как бы вы хранили 32-е или даже 16-е?, не говоря уже о триолях...), поэтому анализировать эти файлы было бы чрезвычайно сложно. Более того, у пользователей может возникнуть соблазн загрузить файлы ASCII, созданные вне вашего приложения, что, скорее всего, не удастся.

Подводя итог, я бы рекомендовал либо попытаться повторно использовать существующий формат, либо изобрести свой собственный, если это невозможно. Вы можете попробовать использовать для этого XML.

РЕДАКТИРОВАТЬ: Помимо DGuitar, я знаю TuxGuitar и KGuitar, которые поддерживают файлы Guitar Pro. Вы можете изучить их источники или спросить их авторов о форматах файлов. Я думаю, что есть также конвертер PowerTab-to-ASCII с открытым исходным кодом.

person el.pescado    schedule 10.07.2010

См. Поддерживаемые форматы файлов в TuxGuitar.

TuxGuitar – это мультиплатформенное программное обеспечение с открытым исходным кодом для чтения, записи и игры на гитарных табулатурах.

Он поддерживает упомянутые форматы Guitar Pro и PowerTab, а также имеет собственный формат TuxGuitar (.tg).

person Tom Pažourek    schedule 10.07.2010

Если вам нужно, чтобы внутренняя структура данных оставалась в удобочитаемой форме, я бы, вероятно, вставил ее в CDATA внутри XML. Это можно было бы вставить в реляционную базу данных с информацией о песне/исполнителе/названии и сделать ее доступной для поиска. Другой вариант - сохранить его в виде заархивированных текстовых файлов и вставить ссылки на эти файлы в базу данных, при этом основная информация об исполнителе по-прежнему доступна для поиска с помощью sql.

person TheEmirOfGroofunkistan    schedule 10.07.2010

Они не читаются человеком:

Наиболее распространенными форматами являются Guitar Pro (проприетарный) и PowerTab (бесплатное ПО). DGuitar и TuxGuitar — это программы просмотра с открытым исходным кодом для формата Guitar Pro. Я уверен, что у них где-то есть документация по формату (по крайней мере, в коде).

Преимуществом использования общего формата будет простота создания вкладок с помощью этих программ.

Формат Guitar Pro 4 описан здесь http://dguitar.sourceforge.net/GP4format.html

person Cloudanger    schedule 10.07.2010
comment
Спасибо, я сталкивался с обоими из них раньше, но мне не нравится идея застревать в проприетарном двоичном формате. Guitar Pro экспортирует в ASCII, поэтому, возможно, я смогу проверить, как это выглядит, и импортировать что-то подобное. Я не пытаюсь сделать что-либо даже немного более сложным, чем любая другая программа. - person James Fassett; 10.07.2010

Я написал быструю утилиту для отображения вкладки. Для личного пользования. Вы можете с радостью принять внутренний формат, который я использовал.

Я использую очень простой строковый формат. Есть три важные структуры.

Колонка, вертикальная колонка во вкладке вывода - все ноты воспроизводятся одновременно. Бар, коллекция Columns Motif, коллекция Bars

Столбец выглядит как ':#|:#|*:#', где каждый * — это номер строки, а каждый # — номер лада. Если вы играете аккорд, вы разделяете каждую струну:лад с помощью '|'

Панель выглядит как «[,,-,*]», где каждый * — это столбец. A - указывает на пустой столбец, в котором не воспроизводятся ноты.

Мотив выглядит просто как множество стержней, идущих подряд. Например

"[1:5,-,3:7,-,3:5,-,3:7,-,-,3:5,3:7,-,1:8,-,1:5]"

    e||---------------|---------------||
    B||---------------|---------------||
    G||---------------|---------------||
    D||--7-5-7--57----|--7-5-7--57----||
    A||---------------|---------------||
    E||5-----------8-5|5-----------8-5||


"[-,-,1:3|2:2|3:0|4:0|5:3|6:3,-,-][-,-,3:0|4:2|5:3|6:2,-,-]"

   e||--3--|--2--||
   B||--3--|--3--||
   G||--0--|--2--||
   D||--0--|--0--||
   A||--2--|-----||
   E||--3--|-----||
person Francis Stephens    schedule 20.01.2016