ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

掌控板 + Blynk + haodaMIDI,一个人就是一支乐队!

2020-03-05 09:36:31  阅读:403  来源: 互联网

标签:掌控 模块 音色 设置 乐器 Blynk haodaMIDI


视频封面

怎么也没想到,我,一个五音不全、乐理不通的人,有一天会来分享音乐相关的作品。还不是因为疫情隔离期间,家里没啥动静,实在太无聊了,总想搞点声音出来!

问号脸

所以就想到了 haodaMIDI 模块。haodaMIDI 模块可以接入各种控制器控制如 micro:bit、掌控板、好搭酷、Arduino、徽章板等。haodaMIDI 模块带耳放,可以接耳机播放。硬音源带 128 种乐器音色,60 余种打击乐器,可以图形化编程,控制简单,完全可以制作各种电声乐器,或自动演奏乐器,相当于一支乐队。

就是它

由于 haodaMIDI 能演奏的乐器和音色实在是太多了,而我又不懂音乐,但是却硬想要涨涨知识装装逼、听听看每种乐器的效果。这可怎么办才好呢?如果用编程的方式将每一个音色去试一遍,每试一个音色,就要重新编程,然后重新上传程序,那岂不是太麻烦了,估计就算花几天时间,都试不过来。相信大家也碰到过类似的问题,制作 MIDI 作品时,到底用哪个音色呢?怎么测试呢?有没有简单方便的测试办法呢?

给我安排

当然有!这时候 Blynk 就派上用场了。我们可以用 Blynk 做一个万能 MIDI 试音器,想要知道不同音色听起来是什么效果,直接在 Blynk 里面简单设置一下就行了。

Blynk 不需要任何实体按键,只要一个手机,想要多少按键,就可以设置多少按键,接线简单,成本低廉。再配合 haodaMIDI 模块,不要说万能 MIDI 试音器了,一个人组一支乐队完全都没有问题!不信?你看:

https://www.bilibili.com/video/av93517194/

是不是很羡慕?也想拥有一支自己的乐队?那就继续往下看吧,手把手教你自制乐队!

电路连接

这里我们使用掌控板来编程,因为掌控板同时支持 Wi-Fi 和蓝牙,可以任选一种方式和 Blynk 进行连接。haodaMIDI 接在掌控板 P0 引脚。当然我们接线的时候,需要通过扩展板,这里画图偷懒了一下,把扩展板省略了。音箱或者耳机可以直接与 haodaMIDI 的耳机口连接。电路连接效果如下图所示:

电路图

这个电路相当简单,这里就不多做介绍了,相信你分分钟就搞定了。

Blynk 项目设置

设置完电路,接着进行 Blynk App 设置。

在 Blynk App 中新建一个项目,取名就叫“MIDI 乐队”。然后拖入一个 Tabs 模块,方便设置多个界面。分别给这些 Tab 命名为“旋律”、“打击乐”、“MORE”等,你也可以根据自己的需求,设置更多的 Tab,这样可以让项目更加完善。

首先我们在“旋律”分栏中设置如下界面,可以大概设置成类似钢琴按键的样子。由于 Blynk 模块位置拖动的限制,钢琴黑键不能放在两个白键之间,所以只能放在白键的边上。然后用两个 Step V 模块,分别设置音阶音色调节按键,其中音阶的调节范围是:-19,;音色的调节范围是:0127。然后再拖入一个 Vertical Slider 模块,用来调节音量,这里我将音量的调节范围设置为:0~100。所有模块的虚拟引脚设置如下左图所示,运行后每个按键显示的音符标号如下右图所示。

旋律设置

在“打击乐”分栏中,拖入一些 Button 模块,用来设置并模拟各种打击乐。根据自己的喜好设置自己想要的打击乐即可。每个按键的虚拟引脚编号和代表的乐器如下图所示。

打击乐设置

关于 Blynk 更多详细的教程,这里不再展开,感兴趣的朋友,可以去购买笔者和裘炯涛老师一起写的书《物联网,So Easy》。

本书是基于 Blynk 物联网平台而写的,书中用到了 Arduino 代码和 Mixly 图形化编程两种模式来进行教学,在原理与使用方法上与 Mind+ 版的 Blynk 基本一致,读者可以参考学习。

封面

程序编写

接下来开始编写程序,这次我们采用 Mind+ 图形化软件来进行编程。

添加模块

在编程时,我们主要用到两个库:BlynkhaodaMIDI 音乐模块。由于这两个库不是 Mind+ 的内置库,所以我们需要手动添加。

打开 Mind+ 软件,添加完主控板之后,在用户库中搜索“铁熊”或者“Blynk”,即可添加 Blynk 模块。没错,这里透露一个小技巧,Mind+ 用户库支持搜索了。

关于 Mind+ 中 Blynk 模块的更多介绍,请跳转:Blynk扩展库正式发布!Mind+软件中也能愉快地使用Blynk物联网平台了!

搜索blynk

添加完 Blynk 模块之后,再来添加 haodaMIDI 模块,在搜索栏中输入网址:https://gitee.com/liliang9693/ext-haodamidi ,即可看到 haodaMIDI 音乐模块,点击添加即可。haodaMID 模块,暂时还不支持搜索,不过后面应该会支持。关于 haodaMIDI 编程模块的更多介绍,也可以跳转上述网址查看介绍。

添加haodaMIDI

添加完两个模块之后,就可以开始愉快的编程啦。其实程序很简单,我这里将它们分成 4 个部分。

主程序部分

首先是主程序部分。在主程序中,我们设置了几个变量:音量、音阶、音色,方便后面进行动态调节。然后初始化 haodaMIDI 和 Blynk 服务。

主程序

设置部分

然后是设置部分。在设置部分中,我们可以动态从 Blynk App 中接收状态变化,去调节音量(0100)、音阶(-19)、音色(0~127)等。音量比较好理解,音阶其实代表的声音是低沉还是尖锐,音色代表的其实就是不同的乐器。具体不同的编号分别代表哪种乐器,可以在文末附录查询。这里通过改变音色的数值,就可以方便的改变想要使用的乐器了。

初始化设置

音符旋律部分

接着是音符旋律乐部分,也就是对应我们 Blynk App 中设置的钢琴按键,这些按键包括:C、C#、D、D#、E、F、F#、G、G#、A、A#、B,总共 12 个音符,这些音符再配合 10 个音阶,每种乐器都可以发出 120 种声音。然后再配合上面的 128 种音色设置,所以这部分总共可以发出 120×128=15360 种声音,Amazing!通过变量的方式,我们用很短的几句程序,竟然可以实现那么多种声音!这也充分说明了合理使用变量,可以大大简化程序。

钢琴部分

这里放一张 MIDI 音符代码表,大家可以看一下音符(CB)、音阶(-19)与对应代码(0~127)的关系。实际上程序底层就是根据音符和音阶,向 haodaMIDI 模块发送对应的代码 0~127。

MIDI音符代表表

打击乐器部分

最后是打击乐器部分。为什么要把打击乐与前面的乐器分开呢?

这是因为打击乐是不需要设置音阶和音符的,每种打击乐器只能发出一种声音,比如我们熟悉的鼓可以发出“咚咚咚”的声音,锣可以发出“乓乓乓”的声音。打击乐的编程如下图所示,这里我偷懒一下,只挑选了部分打击乐器,没有想上面一样,把所有的打击乐器都包含在内,实际上是可以包含所有打击乐器的。

打击乐部分

至此,完整的程序就编写完整了。

音乐就是要分享

前面的部分,我们已经完成了所有硬件和软件的设置,那么视频中看到的多人多台设备演奏是怎么实现的呢?

其实很简单,只要在 Blynk 项目设置中,将 SHARED ACCESS 设置打开,然后点击 Generate Link 就会生成一个二维码,别的伙伴只要打开他的 Blynk App 扫描这个二维码,就会在他的手机中出现这个项目。当你对项目改动之后,别的手机上也会自动同步。

share

这时,你们就可以在不同的分栏里同时演奏不同的乐器啦,当然你们也可以在同一个分栏里演奏同一个乐器。另外,你也可以根据你的乐队需要,在不同的分栏里设置不同的乐器,硬件端几乎不用改变,程序也几乎不用变化,只要在手机里简单设置一下,你的乐队属性马上发生变化!流行乐?摇滚风?金属感?朋克?一切都可以随心而动!

Let’s rock!!!

附录:音色编码对照表

这里还是偷懒惹的锅,其实在 Blynk App 中可以设置音色显示对应的乐器名称的,但是懒得打字了,所以就放一张对照表方便查询吧。

音色对应表

程序下载

欢迎关注本账号:铁熊玩创客,不定期更新创客制作、技术教程、创客教育等相关内容。

标签:掌控,模块,音色,设置,乐器,Blynk,haodaMIDI
来源: https://blog.csdn.net/ironpandaaa/article/details/104667936

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有