omg music

2025-12-11 0 849

omg music

omg music是一种包裹Web浏览器的AudioContext的“音乐上下文”。

以omg music形式创建和共享的音乐包含诸如关键和时间签名之类的信息,这些信息使节拍和旋律的修改和突变变得简单。

它设计为“开放音乐”的进步,其中音乐以“源代码”格式共享,以促进混音。

该应用为OMG平台提供核心音乐功能

OMG歌曲文件格式

歌曲及其部分是JSON文件。

文件格式的概述如下:

 let song = {
      parts: [{name: \"Piano\", ...}],
      sections: [
           {
                name: \"Verse\",
                parts: [{name: \"Piano\", ...}]
           }
      ],
      beatParams: {...},
      keyParams: {...},
      name: \"My Song\"
 }

这首歌被“水平”分成部分(例如钢琴,鼓,吉他),将“垂直”分成部分(例如介绍,诗歌,合唱)。

song.parts阵列是标题,其中包含有关如何从部分发出声音的信息。这可能包含声音集中包含的MP3或WAV文件的列表。或A零件可能会从Web Audio API内置振荡器或Webaudiofont中产生声音。

song.sections中的每个部分也有一个parts阵列。这包含有关何时播放每种声音,产生旋律或节拍的信息。

song.sections中的parts 。节有notes阵列或tracks阵列。

注释与轨道

notes数组包含一个描述要播放的注释和多长时间的对象列表。像这样:

 notes = [
      {note: 0, scaledNote: 60, beats: 2.0},
      {rest: true, beats: 1.0},
      {note: 1, scaledNote: 62, beats: 1.0}
 ]

scaledNote是根据歌曲的钥匙和零件乐器的八度确定的MIDI音符。在这种情况下,中间C(Midi Note 60)进行了两个节拍,然后进行一次节拍休息,然后播放了D的D(MIDI Note 62)进行一次节拍。

tracks阵列可以包含多个曲目(想想低音鼓,编鼓,高帽子)。每个轨道都是一个数组,该数组包含当前部分中每个subbeat的元素。如果值n是0到1之间的数字,则该曲目的音频示例在卷中播放。播放整个音频样本。

当您需要确定播放音频样本多长时间(例如旋律或低音线)时,请使用notes

课程

主要类是OMusicContext 。这可以load()歌曲或OMG格式的零件,也可以创建空白。

可以将OMGSongOMGSongPart类视为数据的“外骨骼”。例如,以下数据:

 let songData = {
      parts: [{name: \"Piano\", ...}],
      sections: [
           {
                name: \"Verse\",
                parts: [{name: \"Piano\", ...}]
           }
      ],
      beatParams: {...},
      keyParams: {...},
      name: \"My Song\"
 }

加载时:

 omgSong = {
      data: songData,
      parts: {
           \"Piano: {data: partHeaderData}
      }
      Sections: {
           \"Verse\": {
                data: sectionData,
                parts: {
                     \"Piano\": {data: partDetailData}
                }
           }
      }
 }

原始的songData仍然以omgSong.data的形式存在。数据的partssections阵列已转变为对象/词典。这是为了易于按名称访问零件和部分,这在通过Websocket和其他层传递数据时很有用。

可以通过这些包装器对象( OMGSongOMGSongPart )单独访问songData的所有元素。包装器允许玩家,上下文以及用户界面附加不需要保存的临时内容,因此无法串制。例如,每个部分的增益表在包裹其零件数据的OMGSongPart上。

这些音频节点需要与零件关联,但不能被串制,并且需要为每个会话创建。因此,他们进入包装纸。

例子

这是一些使用omg music应用:

  • OpenMedia.gallery社交网站
  • dawesome(github)
  • Techno Gauntlet
  • OMG模因制造商
  • 歌曲处理器

使用客户端:Game Dev示例

如何:https://www.youtube.com/watch?v=txppfbkpxp0

(注意,视频已经过时了)

当游戏加载时:

 import OMusicContext from \"https://op*enme*d*ia.gallery/apps/music/js/omusic.js\"
 
 var music = new OMusicContext()
 var {song, player} = await music.load(\"http://openm***usic.gallery/data/1333\")

游戏开始时:

 game.music.play()

在难度增加时增加BPM和密钥:

 music.beatParams.bpm += 20

 music.keyParams.rootNote++
 music.rescaleSong()

游戏结束时:

 music.stop()

下载源码

通过命令行克隆项目:

git clone https://github.com/mikehelland/omg-music.git

收藏 (0) 打赏

感谢您的支持,我会继续努力的!

打开微信/支付宝扫一扫,即可进行扫码打赏哦,分享从这里开始,精彩与您同在
点赞 (0)

申明:本文由第三方发布,内容仅代表作者观点,与本网站无关。对本文以及其中全部或者部分内容的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。本网发布或转载文章出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,也不代表本网对其真实性负责。

左子网 建站资源 omg music https://www.zuozi.net/35301.html

htmlhouse
上一篇: htmlhouse
merlin
下一篇: merlin
常见问题
  • 1、自动:拍下后,点击(下载)链接即可下载;2、手动:拍下后,联系卖家发放即可或者联系官方找开发者发货。
查看详情
  • 1、源码默认交易周期:手动发货商品为1-3天,并且用户付款金额将会进入平台担保直到交易完成或者3-7天即可发放,如遇纠纷无限期延长收款金额直至纠纷解决或者退款!;
查看详情
  • 1、描述:源码描述(含标题)与实际源码不一致的(例:货不对板); 2、演示:有演示站时,与实际源码小于95%一致的(但描述中有”不保证完全一样、有变化的可能性”类似显著声明的除外); 3、发货:不发货可无理由退款; 4、安装:免费提供安装服务的源码但卖家不履行的; 5、收费:价格虚标,额外收取其他费用的(但描述中有显著声明或双方交易前有商定的除外); 6、其他:如质量方面的硬性常规问题BUG等。 注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。
查看详情
  • 1、左子会对双方交易的过程及交易商品的快照进行永久存档,以确保交易的真实、有效、安全! 2、左子无法对如“永久包更新”、“永久技术支持”等类似交易之后的商家承诺做担保,请买家自行鉴别; 3、在源码同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外); 4、在没有”无任何正当退款依据”的前提下,商品写有”一旦售出,概不支持退款”等类似的声明,视为无效声明; 5、在未拍下前,双方在QQ上所商定的交易内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准); 6、因聊天记录可作为纠纷评判依据,故双方联系时,只与对方在左子上所留的QQ、手机号沟通,以防对方不承认自我承诺。 7、虽然交易产生纠纷的几率很小,但一定要保留如聊天记录、手机短信等这样的重要信息,以防产生纠纷时便于左子介入快速处理。
查看详情

相关文章

猜你喜欢
发表评论
暂无评论
官方客服团队

为您解决烦忧 - 24小时在线 专业服务