jd3096 发表于 2024-10-25 10:51

【2024 DigiKey创意大赛】赛博竖笛完成

本帖最后由 jd3096 于 2024-11-22 11:32 编辑

<div style="text-align: center;"><br />
<span style="font-size:24px;"><strong>赛博竖笛</strong></span></div>

<div style="text-align: right;">作者:jd3096</div>

<p><span style="font-size:22px;"><strong>一、作品简介</strong></span></p>

<p>&nbsp;</p>

<div><strong></strong></div>

<div>&nbsp;</div>

<div>在创客领域已经有很多前辈尝试制作各类乐器,其中以各种电子琴居多,因为其实现简单受到各类创作者的青睐,这次大赛当我看到物料中有气压传感器的时候就产生了一个大胆的想法,尝试制作一个吹奏类的电子乐器。此次不再使用简单的蜂鸣器作为发声装置,而是使用有线MIDI和BLE蓝牙无线MIDI协议作为乐器使用,可以得到更好的音质和体验。</div>

<div>本作品的使用了ESP32-S3-DEVKITC-1-N8R8开发板,和Omron 2SMPP03气压传感器做为主要元件,有线midi使用了M5STACK和synth合成模块,BLE蓝牙无线midi则采用esp32s3自带的蓝牙功能来实现。</div>

<div>&nbsp;</div>

<div><span style="font-size:22px;"><strong>二、系统框图</strong></span></div>

<div><strong></strong></div>

<div>首先讲解一下作品的基本结构,如图所示,输入装置由8个按键模拟笛子的音孔按下,一个摇杆模拟乐器的半音颤音等,音乐有两种输出模式,有线采用M5STACK的midi模块直接扬声器输出,无线则采取BLE MIDI协议,可与任何支持蓝牙midi的设备连接。</div>

<div>&nbsp;</div>

<div><span style="font-size:22px;"><strong>三、各部分功能说明</strong></span></div>

<div>&nbsp;</div>

<div>首先谈谈吹气部分,也就是本作品的灵魂部分,由气压传感元件实现。自行按照手册参考电路设计了外围电路,通过ADC监测电压变化来实现气流强弱的变化,至于吹嘴和气管,本打算自己建模来做,但很幸运直接在网上找到了现成的气嘴和气管,吹气部分负责乐器演奏和停止,也能通过力度变化控制音量大小,简单还原了笛子的吹奏逻辑。</div>

<div>按键部分我仿照竖笛的结构,指法简单直观。为了符合人体工程学,让握持和按下更舒服,对结构也进行了几次调整,特别是按键,最后选用了较软力度较小的,保证灵敏的同时有较好的手感。</div>

<div>屏幕部分其实本来没有打算做,但是我的物料不足300元,于是索性加了一个屏幕,屏幕比较简单,可以现实模式、调音、乐器信息等一些基本的信息,为了保证刷新速度,用了c实现的st7789驱动库。</div>

<div>摇杆部分属于亮点特色,通过摇杆来模拟半音和弯音的进阶演奏技巧,用起来还是比较好玩的,在视频中也有演示。</div>

<div>有线MIDI,使用了M5STACK的SYNTH模块,直接内置midi模块和扬声器,只要按照标准MIDI协议给他发送数据就可以演奏音乐了。</div>

<div>蓝牙MIDI部分,也是查阅了网上关于MIDI协议的部分,尽可能做出了完善的蓝牙midi乐器,值得一提的是,本作品全程使用micropython实现蓝牙部分,特别是配对部分,既实现了密码配对,又实现了自动重连的部分,这些都是最新版本的micropython才能实现的功能,本人常年从事micropython的研究,这部分是网上以前没有的新内容,感兴趣的可以查看我的源码是如何实现的。</div>

<div>在演示蓝牙midi的时候,就果断使用了较为专业的kontakt 7音源软件,当然使用的是player免费版,实现了几乎与真乐器的音色一样的效果。关于如何在windows pc上连接蓝牙midi设备等,都是比较小众的知识,好在最好都攻破了,整套流程在视频中都有介绍。</div>

<div>&nbsp;</div>

<div><span style="font-size:22px;"><strong>四、作品源码</strong></span></div>

<div>&nbsp;</div>

<div>本项目源代码可在GITHUB找到,本人无论是编程还是音乐都是自学,不是科班出身,难免有很多不规范之处,欢迎交流。</div>

<div><a href="https://github.com/jd3096-mpy/micropython-flute" target="_blank">https://github.com/jd3096-mpy/micropython-flute</a></div>

<div>不方便访问github的朋友可以来这里:</div>

<div><a href="https://download.eeworld.com.cn/detail/jd3096/635005">download.eeworld.com.cn/detail/jd3096/635005</a></div>

<div>&nbsp;</div>

<div><span style="font-size:22px;"><strong>五、</strong><strong>作品功能演示视频</strong></span></div>

<div>&nbsp;</div>

<div><iframe allowfullscreen="true" frameborder="0" height="450" src="//player.bilibili.com/player.html?bvid=1wyymYsEeC&amp;page=1" style="background:#eee;margin-bottom:10px;" width="700"></iframe></div>

<div>根据大赛管理员要求,再将视频发布到论坛一次:</div>

<div>834c3d65352596f1408b0344e6d4d2b3</div>

<p><span style="font-size:22px;"><strong>六、项目总结</strong></span></p>

<p>&nbsp;</p>

<div>赛博竖笛项目想得容易,做起来难,好在最后都坚持下来攻破了。做完才知道,有一种乐器叫做电吹管,跟我赛博竖笛的原理很相似,当然我做的东西还是创客性质的,性能照产品级电子乐器还有很大差距,不过创客的意义就是从头动手做,这个笛子是代码是自己写的的,硬件是自己设计的,全部可编程,这就足够了。我还有一个网名教程三十岁开始编程的大叔,喜欢玩micropython的朋友也许在搜索某个问题是会找到我的文章,我一直致力于用micropython做一些好玩的项目,这次赛博竖笛的项目,也算是做了一个MIDI乐器的框架,再此基础上,很容易可以改成其他形态的micropython midi乐器使用,也算为micropython开源社区贡献微薄之力。</div>

<div>从视频演示可以看出,本次目已经基本满足了MIDI乐器的标准,但实际上还有很多可以改进之处,主要就是受大赛严格的硬件条件要求,如果能自由选择硬件,就可以做到更好的性能和外观了。总结一下项目可以改进之处:一是使用了开发板,如果能使用模组来作为MCU,那么体积和重量上将会有很大改善;二是规定了气压传感器的型号,Omron 2SMPP03的量程为-50 to 50 kPa,量程过大,导致精度还不够,实测人吹气的气压有0-5 kPa就足够了,在网上也可以找到价格更低廉,量程更符合人体吹气范围的模块;三是外观还很&ldquo;硬核&rdquo;,只是将各元件简单粗暴连接在了一起,缺乏整体的外壳和更合适的结构;四是MIDI是一种发展了很多年的成熟协议,本项目使用的还是非常基础的功能,还有很多功能去挖掘;五是使用蓝牙MIDI的时候始终存在明显的延迟,具体原因还未知。本作品也只是起到个抛砖引玉的作用,感兴趣的小伙伴再经过几次更新迭代,应该可以更接近商品级的电吹管乐器了。</div>

<div></div>

<p><!--importdoc--></p>

aramy 发表于 2024-10-25 11:08

<p>赞!</p>

wangerxian 发表于 2024-10-25 11:20

<p>666,很有想法呀</p>

秦天qintian0303 发表于 2024-10-25 13:23

<p>会检测气流吗?然后根据气流的强弱改变&nbsp; &nbsp;</p>

jd3096 发表于 2024-10-25 18:16

秦天qintian0303 发表于 2024-10-25 13:23
会检测气流吗?然后根据气流的强弱改变&nbsp; &nbsp;

<p>是的,根据气流强弱发声哦</p>

qwert1213131 发表于 2024-10-25 23:49

<p>这个真不错。看完后,</p>

<p>我也好想学音乐啊,好有乐趣啊。<img height="52" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/pleased.gif" width="48" /></p>

<p>我也得加油赶紧把项目做完发布了。</p>

秦天qintian0303 发表于 2024-10-26 07:24

jd3096 发表于 2024-10-25 18:16
是的,根据气流强弱发声哦

<p>非常值得复刻的作品&nbsp; &nbsp; &nbsp;</p>

CoderX9527 发表于 2024-10-26 16:36

<p>大佬,牛逼&nbsp;<img height="48" src="https://bbs.eeworld.com.cn/static/editor/plugins/hkemoji/sticker/facebook/congra.gif" width="48" /></p>
页: [1]
查看完整版本: 【2024 DigiKey创意大赛】赛博竖笛完成