iOS上的歌词和和弦格式

时间:2014-01-29 11:01:04

标签: ios json format music-notation

我目前正在制作一款iPhone应用程序,需要显示歌曲的歌词和吉他和弦。 屏幕上的输出类似于以下内容:

enter image description here

我仍然想知道携带这种数据的最佳格式是什么(每行的歌曲中的歌词,和弦和时间戳)。 我正在考虑使用以这种方式格式化的JSON文件:

{
      "lyrics": [
          {
              "text":"This is one line of lyrics",
              "startTimestamp":5000,
              "endTimestamp":5800,
              "chords":[
                  {
                      "symbol":"A",
                      "position":0.2
                  },
                  {
                      "symbol":"D#",
                      "position":0.8
                  }
                  ]
          },
          { ... },
          { ... }
       ]
}

另一种选择是使用Chordpro格式: http://tenbyten.com/software/songsgen/help/HtmlHelp/files_reference.htm

但是这种格式没有时间戳来同步歌词的显示和音乐,并且在iOS上解析似乎有点痛苦。 还有其他我可以考虑的有趣选项,例如HTML吗?

该应用程序将包含仅12首曲目的歌词。

1 个答案:

答案 0 :(得分:1)

我也对这个问题感兴趣。我正在创建一个无服务器的'我自己的歌曲目录的网页,仅使用HTML,CSS和JavaScript。

我也希望能找到一种方法来存储JSON中的和弦/歌词信息。我对这一思路更新,但我希望将文本行组织为节,并用" Chorus,Verse,Intro ..."标记它们,然后将它们映射到和弦进行(有点像OOP方法)。

到目前为止,我遇到过很多Music XML内容,但这似乎是为了更正式的乐谱。

现在我正在尝试将文本存储在HTML中并将其呈现在“预览”中。  标签

我想一个简单的解决方案就是忽略精确的单词到和弦时间,只需在适当的歌词行上方呈现合适的和弦。

    [A D#]
    'This is one line of lyrics'

或者...也许可以为歌词的每一行分配一个长度为12的值(如Bootstrap网格,但可以根据每行的节拍数包括除数),然后为每个和弦指定一个&#39 ;插槽'填写上面的一行?

所以

Em7        G
  Today is gonna be the day
             Dsus4                  A7sus4
That they're gonna throw it back to you,

会像(beat_of_measure = beat / 2%4)

{
  "stanza1": 
      {
          "type": "verse",
          "line1":{
              "lyric": "Today is goinna be the day that they're", //4 beats subdivided = 8 length
              "start_beat": 1, //half a beat after Em7 chord
              "end_beat": 7},  
          "line2":{
              "lyric": "goinna throw it back to you"
              "start": 8 //goinna is right on beat 5, (think modulo 4)
              "end": 12}
       }
          "verse_chords":[
              {
                  "symbol":"Em7",
                  "chord_beat":0 //starts at very beginning
              },
              {
                  "symbol":"D#",
                  "chord_beat":4
              },
              {
                  "symbol":"Dsus4",
                  "chord_beat":8
              },
              {
                  "symbol":"A7sus4",
                  "chord_beat":12
              },

              ],

   bla bla bla
   ]
}

抱歉这个荒谬的答案!