作者:robo027
资料来源:www.dfrobot.com.cn
十年前我们还在说:“嘻哈在中国赚不到钱,就像咸菜里看不到盐。”十年后的这个夏天什么节目最火?当然是《中国有嘻哈》,个人觉得艾福杰尼,GAI爷,PG one到底谁能拿冠军其实不重要,重要是让我们看到了中国的Rapper真的比我那个年代厉害很多。
自从上次做了一个"LaunchBox" 后,我又在节目里看到了这货:
就是一般中场会有一名Rapper和一个女DJ共同演绎一段当期节目的概括。
我突然觉得,是时候要做一个稍微“有样”点的MiDi Controller了。可是。。。。这该如何下手?翻山越岭翻资料才懂了个大概,了解到那些旋钮就是电位器,推子就是滑动电阻器,按键和灯是分开占用针脚的,至于那个搓盘,呵呵,原来是编码器做的。
接下来我会就这几个步骤分享我制作的过程,也包括按键电位器等的接法,加工外形时的小技巧。我尽量以入门的方式去写,希望更多的朋友看完后也可以自己尝试。
视频演示:自制MIDI鼓机
教程专区
-Teensy++2.0;
-街机按钮x16;
-按钮灯的接口配套端子线1.25间距x16;
-12x12的四脚按键+按键帽 x4;
-电位器+旋钮帽 x4;
-滑变电阻+推子帽 x3;
-5V稳压模块
-18650锂电池x1;
-自锁开关x1;
-面包板x1;
-导线若干;
-3mm铜柱x4;
-3MM公螺x4母,螺X4
-垫片若干;
-miniusb接口数据线x1.
花了两个月时间,在外观上做过很多尝试,买了不少按键,电位器,推子等,往往都是买回来才发现不好用,这里想给那些想做的朋友们推荐我认为不错的组合。
控制器:首先,要支持USBMiDi协议。最开始考虑用Arduino Leonardo,后来发现Teensy是做MiDi更好的选择,引脚比较多。对比图:
按键:我试过很多种型号的按钮,大多数都不满意。能够满足按下力度轻,机械手感,抖动小这几个要求的推荐日本sanwa街机按键,虽然有点小贵,但是按下的感觉可以用“干脆,爽快”来形容。
电位器:电位器名称一般包含“字母”+“最大阻值”,前面的字母代表这个电阻器在调整时,阻值是均匀改变的还是曲线式改变的(比如开始扭改变很小,后面扭一点改变就很大)如B10K和A50K,可以根据不同的用途来选择合适的种类。B开头比较常见,也就是均匀分布的,阻值大小的话, 常见的B10K,B50K试过都可以,后面也可以在代码和MIDI软件中进行调试。电位器应选择上面有螺纹送固定螺丝垫片的,考虑手感的话ALPS是不二选择。
滑变电阻:和上面电位器类似,还是手感问题,力度要越轻越好,0阻力是追求,当然这是不可能的。还有长度,要根据自己外壳的尺寸和布局进行选择。
外壳材料:木盒,亚克力板,3D打印,电木板等等,看自己的喜好。
布局:参考一些国外Controller外观,结合Teensy++2.0的针脚数。
安排了4X4的按键矩阵,4个Banks选择按钮,4个旋钮,3个推子,算一算16按键+16灯+4Banks +4旋钮+3推子=43个引脚,刚好Teensy++2.0有45个。
外壳加工:如果你会CAD,那么直接让一些板材厂家加工好,再发给你是最好的。自己加工有时候难免有偏差和划伤板面的事情发生。
如果你和我一样,想自己用电钻什么的开孔,在量好所有元器件的尺寸后,就可以开始作图了,作图时一定要选择一张薄一点的纸。在电脑上画图,然后把薄纸放在屏幕上画孔位,把纸裁到板面一样大,贴在上面在进行开孔等操作。街机按钮一般分30MM和24MM直径,开孔器选比这个尺寸多1-2MM是比较合适的,便于安装按键,同时四个角也要预留孔位安装铜柱。
组装与接线:安装街机按钮一般有两个引脚,若带单色灯会多两个,最下面两个大的是开关脚,一个公共端GND,另一个接到teensy任意脚。灯和按键一样,一个接GND一个接到其他的引脚上。
电位器一般三个脚,中间脚接模拟口(38-45号引脚)两边的脚分配给GND和5V,左右都可以,一般左边接GND。
推子一般有单联和双联,单联推子是三个脚2+1的结构,单独的一边接GND,它的正对面接5V旁边接TEENSY模拟端口。双联推子是2+4的结构,2个那边属于GND,这两支GND引脚选择最靠边的一支,正对面及旁边的接法和上面一样,另外三支可以不用折起来。
电位器和推子在焊接导线时最好外面先套一小截热缩管,避免引脚暴露在外而导致读数不稳的问题。所有GND,5V,端口可以分别用一根线串起来,这么做可以大大节省成本与空间。需要5V稳压供电。
上漆,过程略。
代码:代码部分参照Arduino,Teensy官网的usbmidi说明以及国外玩家的代码,并作了一些改动。如果你也是使用teensy++2.0且懒得看,直接复制上传就可以。
这里需要说明的是在BANKS选择的时候,他用了一个摇杆,我个人觉得在这上面装个摇杆怪怪的,于是用了四个按键代替,另外我们可以看到作者设计了Combo(我理解为组合按键触发事件)我认为这太棒了,所以就保留了这部分,至于到底怎么搓出来,慢慢研究吧。
好了,代码上传后如果不出什么问题。就应该可以玩耍了。但是声音来自哪里?接下来进入最后一部分。
之前做的"LaunchBox"是模拟传输键盘的键值到PC上面的软件再映射到声音文件发出。但是MIDI就不一样了,它向电脑或者音源上发送的是CC协议,CC控制协议就是Continuous Controller,直译过来是连续控制器。在MIDI里面,CC是一种规格为128种不同信息、可用于不同通道的MIDI信息,很多CC值已经默认分配了功能,例如7号CC值为音量,10号CC值为声像等等,也有很多CC有被分配功能,在控制器上就可以调用这些CC值了,专业性的我就不太懂了,找到一张图分享给大家:
代码中有一段usbMIDI.sendNoteOn(n, 127, midiChannel); 其中 n代表音符,127代表按下的力度,midichannel代表通道,这就说明可以互不影响的同时按下很多键,同时识别并播放出相应通道和力度的音符,对应你设置的歌曲片段,这要比模拟键盘的方式传输的内容更丰富,精准。 感兴趣可以搜相关的内容看看。
大概了解MiDi协议后,开始找编辑软件,因为是标准的MIDI协议通信,所以理论上Ableton Live,CuBase,Traktor等等都可以用,反正都没接触过,都要学习,Live是在找资料过程中出现的频率最多的,就它了。
幸运的是国内有专门的网站去学习这款软件。如果你做出来了,并且迫不及待的想体验一把,那软件安装好后,下载我留下的工程文件运行即可。
补充:如果拿到户外玩,没电脑,IPAD或苹果手机也可以识别,前提是要买一条lightning的线。
后记:
实话说,做它出来不是很顺利,中途经历过很多次失败想放弃的,但第二天还是依旧找资料找原因。我只是把较为顺利的过程记录下来与朋友们分享,方便大家少走弯路。以后有时间还会对它进行升级。
就介绍到这里,如果你有兴趣也做一个,欢迎跟帖晒出你的作品,我不是一个音乐专业的人,如果有错误也感谢您纠正我的一些错误。
*欢迎转发朋友圈。如需转载,请注明出处和原作者。
更多项目干货戳这里
DIY简易打击垫"LaunchBox" | DIY专属照片投影灯
萌妹纸的体感猫耳朵 | 3D打印银河护卫队萌宠Groot

点击“阅读原文”,获取文件下载链接

