软件工程师们摆弄1和0编写他们的乌托邦,音乐人门把玩12平均律上的音符构筑他们的伊甸园。最近,我偶然看了《蓝色骨头》这部电影,片中的男主角是位黑客,同时又兼具音乐创作的才华。在现实生活中,这虽非典型,但也不是特例,我身边便有一些摆弄0和1的朋友,略有情调地发烧着。

  上一篇博文 摇滚吧HTML5!有声前端交互!(一) 中,我介绍了12平均律,引入了音高和时值,并谈及了其在Web Audio中的实现。按着这个节奏,连音成谱就有了曲子。借着这系列博文,我整理了下之前写的音频交互相关的Javascript框架,创作了jsonic.js。利用Jsonic.js可以实现音频可视化,语音识别,音频编码以及谱曲。本文便介绍如何利用Jsonic.js进行谱曲。

  官网 http://jsonic.net

  Jsonic的谱曲模块名为Melody,其中Note、MusicScore和Track3个类分别对应音符、乐谱和音轨的实现。具体说明文档请猛击API

  Note对象可以指定音符的唱名,时值(全音符,1/2音符,1/4音符……),音高所在字组(默认0,小字一组),是否有附点

var note = new Jsonic.Melody.Note(1,1/2,0,true);

  MusicScore对象可以指定调式,和节拍。下面代码创建了一个E大调的,4/4拍的乐谱。

var musicSocre = new Jsonic.Melody.MusicScore('E','major','4/4');

  通过改变musicScore的调式,可以方便的进行升降调,通过MusicScore的w方法可以向乐谱写入音符,在播放前需要调用complie方法。

musicSocre.w(new Jsonic.Melody.Note(3),new Jsonic.Melody.Note(4));

  Track对象用来播放MusicScore对象,多个Track对象可以同时播放,和弦和声就可以利用同样的原理实现。

var track = new Jsonic.Melody.Track();

  调用play方法播放乐谱,并且可以指定演奏的速度,参考前文所提及的时值的概念。

track.play(musicScore,90);

  具体可以参考《直到世界尽头》的Demo, 请点击start开始播放,暴露童年了。。。Demo中还实现了对频域信号的可视化,以后会扩展出去。

  前端是一个复合型职业,作文一篇,希望同好可以共同进步。

  Giithub https://github.com/ArthusLiang/jsonic

  转发请注明出处:http://www.cnblogs.com/Arthus/p/4218572.html

摇滚吧HTML5!有声前端交互!(Hello, Jsonic!)的更多相关文章

  1. 摇滚吧HTML5!有声前端交互!(一)

    生命的伊始,婴儿用明亮的哭声宣告一个新生命的诞生,睁开双眼之前,一双小耳朵已经开始聆听这个世界.在如今的用户体验领域,几乎所有公司都会有视觉设计师,却鲜有注重听觉交互的公司.随着各大厂商对HTML5支 ...

  2. 摇滚吧HTML5!Jsonic超声波前端交互!

    前些年吹过一阵canvas制作html5游戏的东风,相信不少同学重温了一把高中物理课本上的牛顿定律.时光如梭,你是否还记得牛顿定律后面一章的各种机械波的物理定律?环视四周,光纤.wifi.蓝牙.广播都 ...

  3. 【自学系列一】HTML5大前端学习路线+视频教程(完整版)

    今年,本公司全新发布了囊括Java.HTML5前端.大数据.Python爬虫.全链UI设计.软件测试.Unity 3D.Go语言等多个技术方向的全套视频. 面对这么多的知识点,有的盆友就麻爪了…… 我 ...

  4. HTML5+CSS3前端开发资源整合

    HTML5+CSS3前端开发资源整合   推个广告 个人网站:http://www.51pansou.com HTML5视频下载:HTML5视频 HTML5源码下载:HTML5源码 meta相关: & ...

  5. [转载]HTML5游戏前端开发秘籍

    http://isux.tencent.com/html5-game-development-cheats.html 转载至腾讯ISUX HTML5游戏前端开发秘籍 本文由米随随编写 QQ空间Andr ...

  6. SpringBoot学习笔记(4):与前端交互的日期格式

    SpringBoot学习笔记(4):与前端交互的日期格式 后端模型Date字段解析String 我们从前端传回来表单的数据,当涉及时间.日期等值时,后端的模型需将其转换为对应的Date类型等. 我们可 ...

  7. 了解php数据转json格式与前端交互基础

    php数据转json格式与前端交互 ArryJson1.php <?php $test=array(); $word=array("我12","要43", ...

  8. Dynatable – 基于 HTML5 & jQuery 的交互表格插件

    Dynatable 一款有趣的,语义化,交互式的表格插件,使用 jQuery,HTML5 和 JSON 实现.Dynatable 的目的是提供一种简单的.可扩展的 API,能够轻松的浏览和操作大规模的 ...

  9. 目前几款基于html5的前端框架:如Bootstrap、Foundation、Semantic UI 、Amaze UI

    Bootstrap是由Twitter在2011年8月推出的开源WEB前端框架,集合CSS 和HTML,使用了最新的浏览器技术,为快速WEB开发提供了一套前端工具包,包括布局.网格.表格.按钮.表单.导 ...

随机推荐

  1. AES - Rijndael 算法(二)

    三:Rijndael算法实现(C++版本) /*-------------------- Rijndael round subkeys ---------------------*/u8 roundK ...

  2. SWOT分析法

    SWOT(Strengths Weakness Opportunity Threats)分析法,又称为态势分析法或优劣势分析法,用来确定企业自身的竞争优势(strength).竞争劣势(weaknes ...

  3. 在SQL中使用自定义函数

      由于数据库的一个表字段中多包含html标签,现在需要修改数据库的字段把html标签都替换掉.当然我可以通过写一个程序去修改,那毕竟有点麻烦.直接在查询分析器中执行,但是MS SQL Server并 ...

  4. Linux查看端口信息命令

    netstat -tlnp|grep 端口 eg: netstat -tlnp|grep 9889

  5. CloudFoundry Service 使用

    Mysql服务在V2版本号中github上有独立的releaseproject(cf-mysql-release),该release提供了一个Mysql-broker和一个Mysql-server和( ...

  6. 那些年,学swift踩过的坑

    最近在学swift,本以为多是语法与oc不同,而且都是使用相同的cocoa框架,相同的API,但是或多或少还是有些坑在里,为了避免以后再踩,在这里记下了,以后发现新的坑,也会慢慢在这里加上 [TOC] ...

  7. Android学习–Android app 语言切换功能

    功能: app用户根据自己的语言喜好,设置app语言.语言设置只针对本app,并在下次启动应用时保留前一次启动设置. 更新语言: public static void changeAppLanguag ...

  8. linux开机自动启动脚本

      前言linux有自己一套完整的启动 体系,抓住了linux启动 的脉络,linux的启动 过程将不再神秘.阅读之前建议先看一下附图.本文中假设inittab中设置的init tree为:/etc/ ...

  9. Swift中面向协议的编程

    什么是面向协议的编程? 面向协议的编程,是一种编程范式. 编程范式,是一个计算机科学用语.维基百科中的解释是,计算机编程的基本风格或典型模式.通俗来说,就是解决某一个问题的方法不同方法和思路. 像大家 ...

  10. ASP.NET-FineUI开发实践-9(四)

    现在是这么个问题,在开发中表格是动态出来的,就是标准板是全部字段列出,客户要根据情况列出自己想要的,在增加操作页面的同时要是能用前台自带的功能直接保存到后台就好了,现在的列显示和隐藏是不回发的. 1. ...