8222| 6
|
[项目] 小Bit与好搭家族擦出的音乐火花 | 纸板和弦吉他 |
本帖最后由 怀若谷 于 2019-11-7 12:01 编辑 半年前,和创客朋友们一起团购了一块CoCoTouch音乐主控板,官方有个纸板吉他的案例,无奈教程不太详细,感觉无从下手。直到,上周做完纸板架子鼓,我似乎感觉有了一点头绪。当然,我仍然选择了micro:bit加徽章板、HaodaMIDI的方案。和纸板架子鼓比较,虽然原理相同,但制作吉他的难度却大了很多,外观设计、程序编写以及后面的演示环节,都耗费了很多精力。 #演示视频# #制作原理# 纸板和弦吉他,和纸板架子鼓的制作原理是相同的。不过,制作吉他要设涉及到和弦,不只是几个简单的音符;为了更完美,我还设计了更换音色的功能,所以增加了一些按键开关,相应的发送和接收的信息就更多了。考虑到以后可以和架子鼓组合(HaodaMIDI有16个通道,完全可以做到),共用一块徽章板,发送的信息也避开了1~9。原理图如下图所示: (一)琴弦控制 当手指触碰了用铜箔包裹的木棒后,电信号会传导至Micro:bit的引脚,主控板读取到的对应的模拟值大于指定值(比如400),则通过无线通讯方式发送一个数值。6根木棒代表6根琴弦,被触碰后,发送的数值分别为:10、11、12、13、14、15。当收到信号后,徽章板会根据相应的数值结合收到的和弦值进行判断控制HaoddaMIDI发出相应的声音。 (二)音色控制 当按下接到引脚P0的按键开关后,向徽章板发出数值“50”。徽章板收到信息后,记录收到数值的次数,并根据次数为指定通道(通道1~6,一个通道负责一根琴弦的发声)选择相应的音色。 (三)和弦控制 #制作过程# 一、准备材料及工具 Micro:bit 3块 徽章板(含底座扩展板) 1块 (好好搭搭出品) HaodaMIDI 1块 (好好搭搭出品) Micro:bit扩展板 1块 (DF出品) 锂电池及底座 1套 (DF出品) 按键开关 9个 杜邦线 若干根 铜箔纸 1卷 小木棒 6根 M3螺丝及螺母、螺柱 若干个 瓦楞纸(50*50) 2张 电脑音箱 1套 所需工具:钢尺、裁纸刀、记号笔、热熔枪、十字螺丝刀等 二、硬件连接 【01】HaodaMIDI一端通过数据线连接到徽章板D0口,一端插入音频头连接音箱。 【02】将其中一块Micro:bit插入扩展板,9个按键开关分别接到P0~P8引脚;连接锂电池。在连接了铜线和木棒之后,锂电池的电流可能不够,发声效果不好。后来选择了通过电源适配器供电。所以锂电池可以不需要准备,如果有的话,用来在编程阶段进行测试还是可以的。【03】将4根一头为母的杜邦线剥去一头,露出2cm左右的铜丝备用。 【04】将上面准备好的4根杜邦线如上图方式连接到两块Micro:bit的正负极引脚。其中,负极引脚应选用3cm左右长度,以便后面穿过纸板进行固定。 【05】将接好杜邦线的两块Micro:bit连接到扩展上供电,这样是为了让3块板子共用一个电源。这也是锂电池后来无法满足需求的原因。当然,您也可以选择分别对三个板子进行单独供电。 【06】将6根杜邦线的两头去皮,一头露出2cm左右的铜丝,一头露出4cm左右铜丝。 【07】将铜线通过螺丝固定在Micro:bit的其他3个引脚上。注意P0引脚处使用长螺丝。 三、制作外型【01】在瓦楞纸上,使用铅笔画出轮廓,利用裁纸刀裁开。由于工具有限,本人全部使用了直线条,大家可以充分发挥自己的设计才能进行个性化创作,但是建议多找点吉他照片进行观观察,基本的比例最好还是要遵循,以利于弹奏。【02】裁出一个后,用其做模板,在另一块纸板上再描出一个相同的形状。最好根据纸板两面的特点,以镜像的方式裁出。 【03】将两个造型纸板使用热熔胶粘合在一起,以增加吉他主体的强度。较尖的地方,可以在外沿多打一些热熔胶,以增加硬度。 【04】剪出6条15cm左右长的铜箔片,与木棒长度大致相同即可。 【05】将接在Micro:bit引脚上的杜邦线的一头,缠绕在木棒上;再用铜箔条进行包裹固定。 【06】用剩余的纸板裁出4条长10cm、宽1.5cm的长方形纸板。将其中两条粘贴在吉他主体上,中间相距12cm。(保证木棒不会超出两端) 【07】将6根木棒粘贴于长方形纸板上,木棒间保持1cm 左右间距。 【08】将剩余两条长方形纸板粘贴上去。 四、组装固定 【01】寻找一个合适的位置(宽度不小于两块Micro:bit的宽度之和,导线长度足够),根据长螺丝的数量和位置穿4个圆孔(固定4个螺丝用),在靠近正负极引脚的位置再穿4个圆孔(穿正负极导线用)。 【02】将两块Micro:bit通过螺丝固定在纸板上,并将正负极导线通过圆孔穿出。在这个步骤中,可能需要对引脚和木棒间的导线进行调整(松掉螺丝),以保证长度相同并保持一定的平行程度。【03】接有按键开关的Micro:bit,先通过螺丝固定在一条长方形纸板上;再用热熔胶固定在靠近4个螺柱的位置。重新连接好另两块Micro:bit的电源线。 【04】裁出两条长方形纸板和一个倒角长方形纸板,用来固定9个按键开关。 【05】将锂电池及底座通过螺丝固定在一片纸板上,再粘贴于吉他主体背面靠近Micro:bit处。 【06】如果你习惯使用拨片弹奏,您还需要用铜箔将拨片进行包裹。 五、装饰美化 【01】使用记号笔勾画轮廓及LOGO,以增加美观度。 【02】在按键旁边合适位置贴上一片铜箔,利用白板笔(方便擦除更改)写上相应的和弦名称。 六、编写程序 【01】琴弦端Micro:bit程序 a.吉他的弦序当吉他面对我们竖直放置时,6根弦从左往右依次为:6弦、5弦、4弦、3弦、2弦、1弦。 b.Micro:bit引脚与琴弦的对应关系 第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编程平台 第1块Micro:bit上的程序 当第1块Micro:bit的三个引脚被触碰时(模拟值大于400),分别通过无线发送数字10、11、12。10,代表6弦被触碰;11,代表5弦被触碰;12,代表4弦被触碰。模拟值参数可根据测试结果进行调整,数值越小,越灵敏,但是手没有进行触碰时一般也会有一定的数值,不一定为0。我们可以使用下面的程序测试不触碰和触碰时的数值变化,以作为编程的依据。测试引脚模拟值的程序 第2块Micro:bit上的程序 当第2块Micro:bit的三个引脚被触碰时(模拟值大于400),分别通过无线发送数字13、14、15。13,代表3弦被触碰;14,代表2弦被触碰;15,代表1弦被触碰。 【02】第3块Micro:bit程序 a.换音色按键开关 接在第3块Micro:bit P0引脚的按键开关为换音色按键,当该按键开关被按下时,无线发送数字“50”,作为换音色的信号。为了防止按下动作不利落,程序中设置了循环等待的指令,只有当按键开关在释放后才看成是一次触发。 b.和弦按键开关 继续在上面的程序中增加按下其他按键开关后的相应指令。 接在第3块Micro:bit P1~P8 八个引脚的按键开关为切换和弦按键,当这些按键开关被按下时,无线发送数字“51”~“58”。由于一个按键对应一个和弦,而且弹奏时必须用手按住某个按键不放才能触弦,所以不需要和控制音色的程序一样使用循环等待的指令。上图为接在引脚P1上的按键开关的程序,其他按键的都是同样的结构,所以只要进行重复复制、修改参数即可。需要注意的是,有些按键开关是低电平触发的,也就是不按时值为“1”,按下时值为“0”,那就需要将程序中的“1”改为“0”,以实际测试为准。 第3块Micro:bit完整程序如下图所示: 第3块Micro:bit完程序 【03】徽章板程序 徽章板端使用好好搭搭徽章板在线编程平台,网址:http://haohaodada.com/hz/ a.初始化部分b.音色切换 当收到无线数据后,先判断其数值是否为“50”。如果为“50”,说明需要更换音色。每收到一次“50”,则将变量“YINSE”的值增加1,再根据这个数值匹配相应的吉他音色,将通道1-6的音色都设置为该音色。由于程序较长,不便于截图,上图仅展示按下一次按键后切换为“尼龙弦吉他”的部分程序。我在这个项目中,共设有4种音色,分别是:YINSE=1(或5)-->钢弦吉他;YINSE=2-->尼龙弦吉他;YINSE=3-->电吉他;YINSE=4-->失真效果电吉他。当“YINSE”的值为“5”时,需要将值重置为“1”,因为音色要回到“钢弦吉他”。程序如下图所示: c. 和弦变换 当收到无线数据后,判断数值是否大于或等于“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个和弦为例,我们需要知道每根弦在不同的和弦下所发的音符。 下面以第6弦为例,首先我们需要将第6弦在各个和弦下的音符整理出来。 将第6弦在不同和弦下的音符圈起来,如上图所示。 为了方便查看,将圈起来的音符按顺序填入表中。再根据音符的表示法将数字转换为对应的字母,标记在单元格的右下方。在徽章板的编程软件中,音阶3对应的是中音组,那么低音1组应为音阶2,所以上表中的音符字母前都加了一个2。这都是为了编程时更加方便。上面曾提到过,六根弦分别对应一个通道,可以同时发声。第6弦对应的是第6通道,下面的程序中都要进行相应设置。 当收到无线信号后,判断数值是否为“10”;如果为“10”,说明第6弦被触碰,那么将根据当前的和弦类型发出相应的声音。以变量“HEXIAN=51”那一条为例(见上图),D0表示HaodaMIDI 与徽章板连接的接口,通道号为6,音阶和音符号参见上面整理的表格,音量设置为100。 其他5根弦的程序只要照此方法编写即可。 吉他制作好后,在测试的过程中,发现只能进行分解和弦演奏,扫弦效果很不理想。我想,可能与制作弦的材料有关,木棒硬度较大,使用软质材料或者使用真的吉他弦是否会更好?也可能经过程序的优化后就能改进。这都需要时间继续摸索。也欢迎朋友们和我探讨! 完整程序见附件。 |
774.36 KB, 下载次数: 4802
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed