8

我正在编写一个快速前端来显示吉他指法谱。前端在 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 前端中显示为图形的选项卡文件,并且我不想编写编辑器前端。

4

6 回答 6

4

查看ASCII 选项卡格式。格式的详细描述也在这里:

http://www.howtoreadguitartabs.net/

吉他标签格式说明(by howtoreadguitartabs.net)

于 2010-07-10T17:26:34.490 回答
2

ASCII 导出将是一个很棒的功能,但使用 ASCII 作为内部数据格式并不是一个好主意。例如,音符持续时间非常难以表达(你会存储 32 音甚至 16 音吗?更不用说三连音了……),因此解析这些文件将非常困难。此外,用户会很想加载在您的应用程序之外创建的 ASCII 文件,这很可能会失败。

总而言之,我建议要么尝试重用现有格式,要么在不可行的情况下发明自己的格式。您可以尝试为此使用 XML。

编辑:除了 DGuitar,我知道 TuxGuitar 和 KGuitar,它们支持 Guitar Pro 文件。您可以查看他们的来源或向他们的作者询问文件格式。我认为还有开源的 PowerTab 到 ASCII 转换器。

于 2010-07-10T17:18:41.947 回答
1

这些不是人类可读的:

最常见的格式是Guitar Pro(专有)和PowerTab(免费软件)。DGuitarTuxGuitar是 Guitar Pro 格式的开源查看器。我确信他们在某处(至少在代码中)有格式的文档。

使用通用格式的优势在于可以轻松地使用这些程序制作标签。

Guitar Pro 4 格式在此处描述http://dguitar.sourceforge.net/GP4format.html

于 2010-07-10T17:10:59.357 回答
1

请参阅TuxGuitar 中支持的文件格式

TuxGuitar是用于阅读、编写和弹奏吉他谱的开源多平台软件。

它支持上面提到的Guitar ProPowerTab格式,并且它还有自己的TuxGuitar (.tg) 格式。

于 2010-07-10T17:21:57.743 回答
1

如果您需要后端数据结构保持人类可读的形式,我可能会将其粘贴在 XML 内的 CDATA 中。可以将其插入到带有歌曲/艺术​​家/标题信息的关系数据库中并成为可搜索的。另一种选择是将其保存为压缩文本文件,并在数据库中插入指向这些文件的链接,其中主要艺术家信息仍可通过 sql 搜索。

于 2010-07-10T17:31:40.820 回答
0

我编写了一个用于显示选项卡的快速实用程序。供个人使用。您可以愉快地采用我使用的内部格式。

我使用非常简单的基于字符串的格式。有三个重要的结构。

列,输出选项卡中的垂直列 - 所有音符同时播放。Bar,Columns 的集合 Motif,Bars 的集合

列看起来像 ' :#| :#|*:#' 其中每个 * 是字符串编号,每个 # 是音品编号。如果您正在演奏和弦,则将每个字符串分开:用“|”

Bar 看起来像 '[ , ,-,*]' ,其中每个 * 是一个列。A - 表示没有播放音符的空列。

一个 Motif 看起来只是许多条背靠背运行。例如

"[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--|-----||
于 2016-01-20T20:23:00.480 回答