6410浏览
查看: 6410|回复: 6

[项目] 小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他

[复制链接]
本帖最后由 怀若谷 于 2019-11-7 12:01 编辑

小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图1

       半年前,和创客朋友们一起团购了一块CoCoTouch音乐主控板,官方有个纸板吉他的案例,无奈教程不太详细,感觉无从下手。直到,上周做完纸板架子鼓,我似乎感觉有了一点头绪。当然,我仍然选择了micro:bit加徽章板、HaodaMIDI的方案。和纸板架子鼓比较,虽然原理相同,但制作吉他的难度却大了很多,外观设计、程序编写以及后面的演示环节,都耗费了很多精力。
#演示视频#


#制作原理#

       纸板和弦吉他,和纸板架子鼓的制作原理是相同的。不过,制作吉他要设涉及到和弦,不只是几个简单的音符;为了更完美,我还设计了更换音色的功能,所以增加了一些按键开关,相应的发送和接收的信息就更多了。考虑到以后可以和架子鼓组合(HaodaMIDI有16个通道,完全可以做到),共用一块徽章板,发送的信息也避开了1~9。原理图如下图所示:
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图2

(一)琴弦控制
       当手指触碰了用铜箔包裹的木棒后,电信号会传导至Micro:bit的引脚,主控板读取到的对应的模拟值大于指定值(比如400),则通过无线通讯方式发送一个数值。6根木棒代表6根琴弦,被触碰后,发送的数值分别为:10、11、12、13、14、15。当收到信号后,徽章板会根据相应的数值结合收到的和弦值进行判断控制HaoddaMIDI发出相应的声音。
(二)音色控制
       当按下接到引脚P0的按键开关后,向徽章板发出数值“50”。徽章板收到信息后,记录收到数值的次数,并根据次数为指定通道(通道1~6,一个通道负责一根琴弦的发声)选择相应的音色。
(三)和弦控制
       接到引脚P1-P8的8个按键各代表一个和弦,当按下某个按键时,向徽章板发送相应的数值(51~58)。徽章板收到这些数值后,根据数值结合代表琴弦的数值控制HadaoMIDI发出相应和弦下的声音。
#制作过程#

一、准备材料及工具
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图3
Micro:bit  3块
徽章板(含底座扩展板) 1块  (好好搭搭出品)
HaodaMIDI  1块   (好好搭搭出品)
Micro:bit扩展板  1块  (DF出品)
锂电池及底座  1套  (DF出品)
按键开关  9个
杜邦线  若干根
铜箔纸  1卷
小木棒  6根
M3螺丝及螺母、螺柱  若干个  
瓦楞纸(50*50) 2张  
电脑音箱  1套
所需工具:钢尺、裁纸刀、记号笔、热熔枪、十字螺丝刀等

二、硬件连接
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图4
【01】HaodaMIDI一端通过数据线连接到徽章板D0口,一端插入音频头连接音箱。
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图5
【02】将其中一块Micro:bit插入扩展板,9个按键开关分别接到P0~P8引脚;连接锂电池。在连接了铜线和木棒之后,锂电池的电流可能不够,发声效果不好。后来选择了通过电源适配器供电。所以锂电池可以不需要准备,如果有的话,用来在编程阶段进行测试还是可以的。
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图6
【03】将4根一头为母的杜邦线剥去一头,露出2cm左右的铜丝备用。
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图7小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图8
【04】将上面准备好的4根杜邦线如上图方式连接到两块Micro:bit的正负极引脚。其中,负极引脚应选用3cm左右长度,以便后面穿过纸板进行固定。
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图9
【05】将接好杜邦线的两块Micro:bit连接到扩展上供电,这样是为了让3块板子共用一个电源。这也是锂电池后来无法满足需求的原因。当然,您也可以选择分别对三个板子进行单独供电。
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图10
【06】将6根杜邦线的两头去皮,一头露出2cm左右的铜丝,一头露出4cm左右铜丝。
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图11
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图12
【07】将铜线通过螺丝固定在Micro:bit的其他3个引脚上。注意P0引脚处使用长螺丝。

三、制作外型
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图50
【01】在瓦楞纸上,使用铅笔画出轮廓,利用裁纸刀裁开。由于工具有限,本人全部使用了直线条,大家可以充分发挥自己的设计才能进行个性化创作,但是建议多找点吉他照片进行观观察,基本的比例最好还是要遵循,以利于弹奏。
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图13
【02】裁出一个后,用其做模板,在另一块纸板上再描出一个相同的形状。最好根据纸板两面的特点,以镜像的方式裁出。
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图51
【03】将两个造型纸板使用热熔胶粘合在一起,以增加吉他主体的强度。较尖的地方,可以在外沿多打一些热熔胶,以增加硬度。
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图14
【04】剪出6条15cm左右长的铜箔片,与木棒长度大致相同即可。
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图15小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图16
【05】将接在Micro:bit引脚上的杜邦线的一头,缠绕在木棒上;再用铜箔条进行包裹固定。
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图17小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图18
【06】用剩余的纸板裁出4条长10cm、宽1.5cm的长方形纸板。将其中两条粘贴在吉他主体上,中间相距12cm。(保证木棒不会超出两端)
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图19
【07】将6根木棒粘贴于长方形纸板上,木棒间保持1cm 左右间距。
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图20
【08】将剩余两条长方形纸板粘贴上去。

四、组装固定
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图21
【01】寻找一个合适的位置(宽度不小于两块Micro:bit的宽度之和,导线长度足够),根据长螺丝的数量和位置穿4个圆孔(固定4个螺丝用),在靠近正负极引脚的位置再穿4个圆孔(穿正负极导线用)。
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图22
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图23
【02】将两块Micro:bit通过螺丝固定在纸板上,并将正负极导线通过圆孔穿出。在这个步骤中,可能需要对引脚和木棒间的导线进行调整(松掉螺丝),以保证长度相同并保持一定的平行程度。
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图24小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图25
【03】接有按键开关的Micro:bit,先通过螺丝固定在一条长方形纸板上;再用热熔胶固定在靠近4个螺柱的位置。重新连接好另两块Micro:bit的电源线。
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图26小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图27
【04】裁出两条长方形纸板和一个倒角长方形纸板,用来固定9个按键开关。
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图28小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图29
【05】将锂电池及底座通过螺丝固定在一片纸板上,再粘贴于吉他主体背面靠近Micro:bit处。
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图30小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图31
【06】如果你习惯使用拨片弹奏,您还需要用铜箔将拨片进行包裹。

五、装饰美化
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图32
【01】使用记号笔勾画轮廓及LOGO,以增加美观度。
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图33小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图34
【02】在按键旁边合适位置贴上一片铜箔,利用白板笔(方便擦除更改)写上相应的和弦名称。

六、编写程序
【01】琴弦端Micro:bit程序
a.吉他的弦序
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图35
当吉他面对我们竖直放置时,6根弦从左往右依次为:6弦、5弦、4弦、3弦、2弦、1弦。
b.Micro:bit引脚与琴弦的对应关系
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图36
第1块Micro:bit:P0—6弦,P1—5弦,P2—4弦
第2块Micro:bit:P0—3弦,P1—2弦,P2—1弦
c.编写程序
Micro:bit端使用MakeCode(好搭版)在线编程平台,
*不要直接使用官方的MakeCode for Micro:bit编程平台
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图37
第1块Micro:bit上的程序
       当第1块Micro:bit的三个引脚被触碰时(模拟值大于400),分别通过无线发送数字10、11、12。10,代表6弦被触碰;11,代表5弦被触碰;12,代表4弦被触碰。模拟值参数可根据测试结果进行调整,数值越小,越灵敏,但是手没有进行触碰时一般也会有一定的数值,不一定为0。我们可以使用下面的程序测试不触碰和触碰时的数值变化,以作为编程的依据。
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图38
测试引脚模拟值的程序
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图39
第2块Micro:bit上的程序
当第2块Micro:bit的三个引脚被触碰时(模拟值大于400),分别通过无线发送数字13、14、15。13,代表3弦被触碰;14,代表2弦被触碰;15,代表1弦被触碰。
【02】第3块Micro:bit程序
a.换音色按键开关
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图40
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图41
       接在第3块Micro:bit P0引脚的按键开关为换音色按键,当该按键开关被按下时,无线发送数字“50”,作为换音色的信号。为了防止按下动作不利落,程序中设置了循环等待的指令,只有当按键开关在释放后才看成是一次触发。
b.和弦按键开关
继续在上面的程序中增加按下其他按键开关后的相应指令。
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图48
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图42
      接在第3块Micro:bit P1~P8 八个引脚的按键开关为切换和弦按键,当这些按键开关被按下时,无线发送数字“51”~“58”。由于一个按键对应一个和弦,而且弹奏时必须用手按住某个按键不放才能触弦,所以不需要和控制音色的程序一样使用循环等待的指令。上图为接在引脚P1上的按键开关的程序,其他按键的都是同样的结构,所以只要进行重复复制、修改参数即可。需要注意的是,有些按键开关是低电平触发的,也就是不按时值为“1”,按下时值为“0”,那就需要将程序中的“1”改为“0”,以实际测试为准。
第3块Micro:bit完整程序如下图所示:
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图49
第3块Micro:bit完程序
    如果不需要这么多和弦或者需要更多的和弦,可以进行按键开关的增减及相应程序的修改。
【03】徽章板程序
      徽章板端使用好好搭搭徽章板在线编程平台,网址:http://haohaodada.com/hz/    
a.初始化部分
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图52
b.音色切换
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图53
       当收到无线数据后,先判断其数值是否为“50”。如果为“50”,说明需要更换音色。每收到一次“50”,则将变量“YINSE”的值增加1,再根据这个数值匹配相应的吉他音色,将通道1-6的音色都设置为该音色。由于程序较长,不便于截图,上图仅展示按下一次按键后切换为“尼龙弦吉他”的部分程序。我在这个项目中,共设有4种音色,分别是:YINSE=1(或5)-->钢弦吉他;YINSE=2-->尼龙弦吉他;YINSE=3-->电吉他;YINSE=4-->失真效果电吉他。当“YINSE”的值为“5”时,需要将值重置为“1”,因为音色要回到“钢弦吉他”。程序如下图所示:
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图43

c. 和弦变换
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图54
       当收到无线数据后,判断数值是否大于或等于“51”(因为跟和弦对应的8个无线数值是51~58,还可以排除控制琴弦和控制音色的10~15、50),将变量“HEXIAN”的值设为收到无线数值。每个数值对应了一个和弦类型。本项目中,我设置的八个和弦和对应的无线数值为:C-->51、F-->52、G-->53、Am-->54、Dm-->55、Em-->56、E-->57、D7-->58。
d.琴弦发声
      编写控制琴弦的程序,需要对吉他的和弦有一些来了解。以上面提到的8个和弦为例,我们需要知道每根弦在不同的和弦下所发的音符。
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图44
     下面以第6弦为例,首先我们需要将第6弦在各个和弦下的音符整理出来。
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图45
     将第6弦在不同和弦下的音符圈起来,如上图所示。
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图46
      为了方便查看,将圈起来的音符按顺序填入表中。再根据音符的表示法将数字转换为对应的字母,标记在单元格的右下方。在徽章板的编程软件中,音阶3对应的是中音组,那么低音1组应为音阶2,所以上表中的音符字母前都加了一个2。这都是为了编程时更加方便。上面曾提到过,六根弦分别对应一个通道,可以同时发声。第6弦对应的是第6通道,下面的程序中都要进行相应设置。
小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他图47
       当收到无线信号后,判断数值是否为“10”;如果为“10”,说明第6弦被触碰,那么将根据当前的和弦类型发出相应的声音。以变量“HEXIAN=51”那一条为例(见上图),D0表示HaodaMIDI 与徽章板连接的接口,通道号为6,音阶和音符号参见上面整理的表格,音量设置为100。
其他5根弦的程序只要照此方法编写即可。
   
       吉他制作好后,在测试的过程中,发现只能进行分解和弦演奏,扫弦效果很不理想。我想,可能与制作弦的材料有关,木棒硬度较大,使用软质材料或者使用真的吉他弦是否会更好?也可能经过程序的优化后就能改进。这都需要时间继续摸索。也欢迎朋友们和我探讨!
      完整程序见附件。


微信图片_20191107101853.jpg

纸板吉他程序.zip

774.36 KB, 下载次数: 89

Elshil  学徒

发表于 2019-11-8 20:42:43

wow,这也太强了,谢谢分享
回复

使用道具 举报

无三四  学徒

发表于 2019-11-9 08:43:05

琴弦什么原理?
回复

使用道具 举报

gada888  版主

发表于 2019-11-11 11:21:28

好创意
回复

使用道具 举报

EVE  高级技匠

发表于 2019-11-12 09:31:49

好听好听
回复

使用道具 举报

MicroAX  学徒

发表于 2019-11-12 15:09:53

牛Bclass
回复

使用道具 举报

怀若谷  高级技匠
 楼主|

发表于 2019-11-13 08:12:38


相当于触摸了主控板的引脚,产生模拟信号
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

为本项目制作心愿单
购买心愿单
心愿单 编辑
[[wsData.name]]

硬件清单

  • [[d.name]]
btnicon
我也要做!
点击进入购买页面
上海智位机器人股份有限公司 沪ICP备09038501号-4

© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed

mail