【问题标题】:Guitar tablature data format吉他指法数据格式
【发布时间】:2011-03-14 07:13:00
【问题描述】:

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

【问题讨论】:

  • 我会使用您在问题中示例的纯文本格式。这在当时很常见,可以在任何计算机上运行,​​无需任何额外的软件,并且可以轻松打印。

标签: dataformat guitar


【解决方案1】:

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

http://www.howtoreadguitartabs.net/

【讨论】:

  • 这与我的想法很接近。谢谢。不确定我是否会支持任何和所有选项卡,因为我将自己手动编写有问题的选项卡,但我可以尝试获得最常见的连线和效果。
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

    Supported file formats in TuxGuitar

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

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        【解决方案5】:

        这些不是人类可读的:

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

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

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

        【讨论】:

        • 谢谢,我以前遇到过这两种情况,但我不喜欢陷入专有二进制格式的想法。 Guitar Pro 导出为 ASCII,所以也许我可以检查它的外观并导入类似的东西。我不想让任何东西都像这两个程序一样复杂。
        【解决方案6】:

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

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

        列,输出选项卡中的垂直列 - 所有音符同时播放。 Bar,列的集合 主题,酒吧的集合

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

        一个 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-06-12
          • 2011-06-22
          • 2017-08-07
          • 1970-01-01
          • 2011-07-24
          • 2011-05-29
          • 1970-01-01
          • 2011-12-02
          相关资源
          最近更新 更多