- 2024-11-22
-
上传了资料:
【2024 DigiKey创意大赛】赛博竖笛源码
- 2024-10-30
-
回复了主题帖:
【2024 DigiKey 创意大赛】基于NRF52840的低功耗可扩展编程旋钮
超棒啊,支持一波,如果能用lvgl写个界面就更好了
-
加入了学习《2024digikey多功能旋钮》,观看 2024digikey多功能旋钮
- 2024-10-25
-
回复了主题帖:
【2024 DigiKey创意大赛】赛博竖笛完成
秦天qintian0303 发表于 2024-10-25 13:23
会检测气流吗?然后根据气流的强弱改变
是的,根据气流强弱发声哦
-
发表了主题帖:
【2024 DigiKey创意大赛】赛博竖笛完成
本帖最后由 jd3096 于 2024-11-22 11:32 编辑
赛博竖笛
作者:jd3096
一、作品简介
在创客领域已经有很多前辈尝试制作各类乐器,其中以各种电子琴居多,因为其实现简单受到各类创作者的青睐,这次大赛当我看到物料中有气压传感器的时候就产生了一个大胆的想法,尝试制作一个吹奏类的电子乐器。此次不再使用简单的蜂鸣器作为发声装置,而是使用有线MIDI和BLE蓝牙无线MIDI协议作为乐器使用,可以得到更好的音质和体验。
本作品的使用了ESP32-S3-DEVKITC-1-N8R8开发板,和Omron 2SMPP03气压传感器做为主要元件,有线midi使用了M5STACK和synth合成模块,BLE蓝牙无线midi则采用esp32s3自带的蓝牙功能来实现。
二、系统框图
首先讲解一下作品的基本结构,如图所示,输入装置由8个按键模拟笛子的音孔按下,一个摇杆模拟乐器的半音颤音等,音乐有两种输出模式,有线采用M5STACK的midi模块直接扬声器输出,无线则采取BLE MIDI协议,可与任何支持蓝牙midi的设备连接。
三、各部分功能说明
首先谈谈吹气部分,也就是本作品的灵魂部分,由气压传感元件实现。自行按照手册参考电路设计了外围电路,通过ADC监测电压变化来实现气流强弱的变化,至于吹嘴和气管,本打算自己建模来做,但很幸运直接在网上找到了现成的气嘴和气管,吹气部分负责乐器演奏和停止,也能通过力度变化控制音量大小,简单还原了笛子的吹奏逻辑。
按键部分我仿照竖笛的结构,指法简单直观。为了符合人体工程学,让握持和按下更舒服,对结构也进行了几次调整,特别是按键,最后选用了较软力度较小的,保证灵敏的同时有较好的手感。
屏幕部分其实本来没有打算做,但是我的物料不足300元,于是索性加了一个屏幕,屏幕比较简单,可以现实模式、调音、乐器信息等一些基本的信息,为了保证刷新速度,用了c实现的st7789驱动库。
摇杆部分属于亮点特色,通过摇杆来模拟半音和弯音的进阶演奏技巧,用起来还是比较好玩的,在视频中也有演示。
有线MIDI,使用了M5STACK的SYNTH模块,直接内置midi模块和扬声器,只要按照标准MIDI协议给他发送数据就可以演奏音乐了。
蓝牙MIDI部分,也是查阅了网上关于MIDI协议的部分,尽可能做出了完善的蓝牙midi乐器,值得一提的是,本作品全程使用micropython实现蓝牙部分,特别是配对部分,既实现了密码配对,又实现了自动重连的部分,这些都是最新版本的micropython才能实现的功能,本人常年从事micropython的研究,这部分是网上以前没有的新内容,感兴趣的可以查看我的源码是如何实现的。
在演示蓝牙midi的时候,就果断使用了较为专业的kontakt 7音源软件,当然使用的是player免费版,实现了几乎与真乐器的音色一样的效果。关于如何在windows pc上连接蓝牙midi设备等,都是比较小众的知识,好在最好都攻破了,整套流程在视频中都有介绍。
四、作品源码
本项目源代码可在GITHUB找到,本人无论是编程还是音乐都是自学,不是科班出身,难免有很多不规范之处,欢迎交流。
https://github.com/jd3096-mpy/micropython-flute
不方便访问github的朋友可以来这里:
download.eeworld.com.cn/detail/jd3096/635005
五、作品功能演示视频
根据大赛管理员要求,再将视频发布到论坛一次:
[localvideo]834c3d65352596f1408b0344e6d4d2b3[/localvideo]
六、项目总结
赛博竖笛项目想得容易,做起来难,好在最后都坚持下来攻破了。做完才知道,有一种乐器叫做电吹管,跟我赛博竖笛的原理很相似,当然我做的东西还是创客性质的,性能照产品级电子乐器还有很大差距,不过创客的意义就是从头动手做,这个笛子是代码是自己写的的,硬件是自己设计的,全部可编程,这就足够了。我还有一个网名教程三十岁开始编程的大叔,喜欢玩micropython的朋友也许在搜索某个问题是会找到我的文章,我一直致力于用micropython做一些好玩的项目,这次赛博竖笛的项目,也算是做了一个MIDI乐器的框架,再此基础上,很容易可以改成其他形态的micropython midi乐器使用,也算为micropython开源社区贡献微薄之力。
从视频演示可以看出,本次目已经基本满足了MIDI乐器的标准,但实际上还有很多可以改进之处,主要就是受大赛严格的硬件条件要求,如果能自由选择硬件,就可以做到更好的性能和外观了。总结一下项目可以改进之处:一是使用了开发板,如果能使用模组来作为MCU,那么体积和重量上将会有很大改善;二是规定了气压传感器的型号,Omron 2SMPP03的量程为-50 to 50 kPa,量程过大,导致精度还不够,实测人吹气的气压有0-5 kPa就足够了,在网上也可以找到价格更低廉,量程更符合人体吹气范围的模块;三是外观还很“硬核”,只是将各元件简单粗暴连接在了一起,缺乏整体的外壳和更合适的结构;四是MIDI是一种发展了很多年的成熟协议,本项目使用的还是非常基础的功能,还有很多功能去挖掘;五是使用蓝牙MIDI的时候始终存在明显的延迟,具体原因还未知。本作品也只是起到个抛砖引玉的作用,感兴趣的小伙伴再经过几次更新迭代,应该可以更接近商品级的电吹管乐器了。
-
发表了日志:
【2024 DigiKey创意大赛】赛博竖笛完成
- 2024-08-20
-
回复了主题帖:
【2024 DigiKey 创意大赛】赛博竖笛 初次打板尝试
秦天qintian0303 发表于 2024-8-20 13:34
赛博竖笛,一共7个按键对应七个孔,不过变化里面还有好多气流的强弱的,这个怎么弄啊
还有一个气压传感器我没拍进去 通过吹气气压变化来实现气流强弱监测
-
发表了主题帖:
【2024 DigiKey 创意大赛】赛博竖笛 初次打板尝试
第一次打板尝试,理想很丰满,现实很骨感,如下图:
总体测试结果(0820):
1、屏幕 正常点亮
2、按键 有一个接触不良(结构问题) 其余正常
3、midi与蓝牙midi 均正常发声工作
4、摇杆由于原理图错误不能工作
5、气压传感器正常 能吹响
6、 网上买的嘴吹和气管正常可用
目前已发现的错误:
1.摇杆原理图错误,飞线可破,果然还是不能过于相信网上来路不明的库,有官方认证或者自己认证过的才能放心用,下一板已经修正;
2.IO38用于连接了板子上的RGB灯,之前没有自己观察,不细心的错误!已经将按键IO换成其他的;
3.按键腿与摇杆背面的金属接触导致接触不良,这种错误不做实物很难发现,初步决定贴上绝缘的材料即可;
不能称为错误的小问题:
1.按键太硬,按一个没问题,同时按下七个太得需要大力金刚指了,换更软的按键(不断尝试知道找到满意的)
2.结构上不太好做外壳,挑战很大,气压模块和MIDI模块还没想好怎么固定
3.MIDI的延迟比较高,做为乐器对操作延迟还是很敏感的,还需要想办法优化逻辑
- 2024-08-12
-
加入了学习《【DigiKey创意大赛】多通道微型气相色谱采集单元》,观看 多通道微型气相色谱采集单元
- 2024-08-11
-
发表了主题帖:
【2024 DigiKey 创意大赛】赛博竖笛项目开箱贴 ESP32S3-DEVKITC-1 2SMPP03 PIM476
首先很荣幸第一次参加得捷大赛,也是第一次在得捷购物,收到货物后开箱,感觉得捷商城平台非常专业,有一堆订单和说明:
元件做工都很精致,品控明显看得出来很好,比之前在TB买的各种元件好太多了
最后来个元件的特写,我将用这三个元件完成赛博竖笛的项目,虽然现在还没有能够完成项目的信心,特别是2SMPP03气压传感器,很小而且需要自己设计外围电路,但是再接下来的几个月里我将不断挑战遇到的困难,力争完成此次项目,再次感谢得捷此次举办的大赛!!!