jjzjj

ios - iOS 上的歌词和和弦格式

coder 2023-09-29 原文

我目前正在开发一个 iPhone 应用程序,该应用程序需要显示歌曲的歌词以及吉他和弦。 屏幕上的输出类似于这样:

我仍然想知道什么是最好的格式来承载这种数据(歌词、和弦和每行轨道中的时间戳)。 我正在考虑使用以这种方式格式化的 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 首歌曲的歌词。

最佳答案

我也对这个问题感兴趣。我正在使用 HTML、CSS 和 JavaScript 为我自己的歌轨道录创建一个“无服务器”网页。

我也希望想出一种方法来将和弦/歌词信息存储在 JSON 中。我对这种思路比较陌生,但我希望将文本行组织为节,并用“合唱、诗歌、介绍……”标记它们,然后将它们映射到和弦进行(有点像 OOP 方法)。

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

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

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

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

或者...也许可以为每一行歌词分配一个长度为 12 的值(如 Bootstrap Grids,但可以基于每行的节拍数,包括除数),然后为每个和弦分配一个“插槽”填写上面的行?

所以

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

会是这样的(where 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
   ]
}

抱歉这个荒谬的回答!

关于ios - iOS 上的歌词和和弦格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21429069/

有关ios - iOS 上的歌词和和弦格式的更多相关文章

  1. ruby - 使用 ruby​​ 将 HTML 转换为纯文本并维护结构/格式 - 2

    我想将html转换为纯文本。不过,我不想只删除标签,我想智能地保留尽可能多的格式。为插入换行符标签,检测段落并格式化它们等。输入非常简单,通常是格式良好的html(不是整个文档,只是一堆内容,通常没有anchor或图像)。我可以将几个正则表达式放在一起,让我达到80%,但我认为可能有一些现有的解决方案更智能。 最佳答案 首先,不要尝试为此使用正则表达式。很有可能你会想出一个脆弱/脆弱的解决方案,它会随着HTML的变化而崩溃,或者很难管理和维护。您可以使用Nokogiri快速解析HTML并提取文本:require'nokogiri'h

  2. ruby-on-rails - date_field_tag,如何设置默认日期? [ rails 上的 ruby ] - 2

    我想设置一个默认日期,例如实际日期,我该如何设置?还有如何在组合框中设置默认值顺便问一下,date_field_tag和date_field之间有什么区别? 最佳答案 试试这个:将默认日期作为第二个参数传递。youcorrectlysetthedefaultvalueofcomboboxasshowninyourquestion. 关于ruby-on-rails-date_field_tag,如何设置默认日期?[rails上的ruby],我们在StackOverflow上找到一个类似的问

  3. ruby-on-rails - openshift 上的 rails 控制台 - 2

    我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新ruby​​gems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems

  4. ruby-on-rails - 相关表上的范围为 "WHERE ... LIKE" - 2

    我正在尝试从Postgresql表(table1)中获取数据,该表由另一个相关表(property)的字段(table2)过滤。在纯SQL中,我会这样编写查询:SELECT*FROMtable1JOINtable2USING(table2_id)WHEREtable2.propertyLIKE'query%'这工作正常:scope:my_scope,->(query){includes(:table2).where("table2.property":query)}但我真正需要的是使用LIKE运算符进行过滤,而不是严格相等。然而,这是行不通的:scope:my_scope,->(que

  5. ruby - 如何验证 IO.copy_stream 是否成功 - 2

    这里有一个很好的答案解释了如何在Ruby中下载文件而不将其加载到内存中:https://stackoverflow.com/a/29743394/4852737require'open-uri'download=open('http://example.com/image.png')IO.copy_stream(download,'~/image.png')我如何验证下载文件的IO.copy_stream调用是否真的成功——这意味着下载的文件与我打算下载的文件完全相同,而不是下载一半的损坏文件?documentation说IO.copy_stream返回它复制的字节数,但是当我还没有下

  6. ruby-on-rails - 将 Ruby 中的日期/时间格式化为 YYYY-MM-DD HH :MM:SS - 2

    这个问题在这里已经有了答案:Railsformattingdate(4个答案)关闭4年前。我想格式化Time.Now函数以显示YYYY-MM-DDHH:MM:SS而不是:“2018-03-0909:47:19+0000”该函数需要放在时间中.现在功能。require‘roo’require‘roo-xls’require‘byebug’file_name=ARGV.first||“Template.xlsx”excel_file=Roo::Spreadsheet.open(“./#{file_name}“,extension::xlsx)xml=Nokogiri::XML::Build

  7. ruby - 我可以将我的 README.textile 以正确的格式放入我的 RDoc 中吗? - 2

    我喜欢使用Textile或Markdown为我的项目编写自述文件,但是当我生成RDoc时,自述文件被解释为RDoc并且看起来非常糟糕。有没有办法让RDoc通过RedCloth或BlueCloth而不是它自己的格式化程序运行文件?它可以配置为自动检测文件后缀的格式吗?(例如README.textile通过RedCloth运行,但README.mdown通过BlueCloth运行) 最佳答案 使用YARD直接代替RDoc将允许您包含Textile或Markdown文件,只要它们的文件后缀是合理的。我经常使用类似于以下Rake任务的东西:

  8. Ruby 文件 IO 定界符? - 2

    我正在尝试解析一个文本文件,该文件每行包含可变数量的单词和数字,如下所示:foo4.500bar3.001.33foobar如何读取由空格而不是换行符分隔的文件?有什么方法可以设置File("file.txt").foreach方法以使用空格而不是换行符作为分隔符? 最佳答案 接受的答案将slurp文件,这可能是大文本文件的问题。更好的解决方案是IO.foreach.它是惯用的,将按字符流式传输文件:File.foreach(filename,""){|string|putsstring}包含“thisisanexample”结果的

  9. ruby - 是否有用于序列化和反序列化各种格式的对象层次结构的模式? - 2

    给定一个复杂的对象层次结构,幸运的是它不包含循环引用,我如何实现支持各种格式的序列化?我不是来讨论实际实现的。相反,我正在寻找可能会派上用场的设计模式提示。更准确地说:我正在使用Ruby,我想解析XML和JSON数据以构建复杂的对象层次结构。此外,应该可以将该层次结构序列化为JSON、XML和可能的HTML。我可以为此使用Builder模式吗?在任何提到的情况下,我都有某种结构化数据-无论是在内存中还是文本中-我想用它来构建其他东西。我认为将序列化逻辑与实际业务逻辑分开会很好,这样我以后就可以轻松支持多种XML格式。 最佳答案 我最

  10. ruby-on-rails - 事件管理员日期过滤器日期格式自定义 - 2

    是否有简单的方法来更改默认ISO格式(yyyy-mm-dd)的ActiveAdmin日期过滤器显示格式? 最佳答案 您可以像这样为日期选择器提供额外的选项,而不是覆盖js:=f.input:my_date,as::datepicker,datepicker_options:{dateFormat:"mm/dd/yy"} 关于ruby-on-rails-事件管理员日期过滤器日期格式自定义,我们在StackOverflow上找到一个类似的问题: https://s

随机推荐