【行空板】用Python玩转开源硬件-第07课:迷你唱吧
迷你唱吧好友相聚高歌澎湃,一人独处用歌声宣泄情绪,你是否也喜欢光顾KTV或是用手机放着音乐伴奏,用歌喉表达着自己的心境。其实我们的行空板也可以实现,今天我们就用行空板制作一个可以播放伴奏和录制歌声的“随身KTV”。
任务目标
点选想唱的歌曲,点击演唱自动播放伴奏,录制歌声,录制时间结束后,自动播放录音。
https://m.bilibili.com/video/BV1KM411A7rG?share_source=copy_web&vd_source=98de4a48f0ea2e3d30571e3541e90d99
知识点
1.了解USB喇叭的工作原理
2.掌握行空板录放音乐方法
材料清单
硬件清单
软件使用:Mind+编程软件 x1
下载地址:https://mindplus.cc/
动手实践
迷你唱吧的主要功能是通过选择不同的歌曲,录制并播放歌声。接下来,我们就分为以下两个任务来制作吧。
任务一:播放歌曲伴奏
在此任务中,我们将学习行空板音乐播放相关操作,完成播放选定伴奏任务。
任务二:录制并播放歌曲
在任务一的基础上,我们将使用行空板录音指令,并进一步运用播放相关指令完成迷你唱吧的录放歌曲任务。
任务一:播放歌曲伴奏
1.硬件连接
行空板上没有喇叭,要播放歌曲,需要外接USB喇叭。连接时只需要把喇叭的USB线接入行空板侧面USB接口。
注意:有关USB喇叭的相关介绍,参见“知识园地”。
喇叭连接成功后,使用USB线将行空板连接到计算机。
2.软件准备
打开Mind+,按照下面图示完成软件准备工作。
3.编写程序
迷你唱吧中,我们要点选歌曲然后用行空板播放伴奏音乐。具体如何实现呢,接下来我们一起来学习吧。
(1)行空板播放音乐
和行空板显示图片类似,行空板播放音乐也需要先将音频文件放在程序所在文件夹中,然后再使用指令进行播放。
以播放“送别”为例,首先在素材文件夹中找到“送别.wav”文件,并将其拖入“项目中的文件”。
然后,我们就可以使用指令让行空板播放音乐了。播放指令—— 开始后台播放音频文件 ,在指令区“行空板”分类的“音频录放”部分,使用时填入刚才添加的音乐文件名即可。
(2)点选播放乐曲
点选播放乐曲,可以使用文字回调。也就是使用 对象名 的点击回调函数为button_click1,然后再回调函数部分设置播放音频。
现在我们可以使用同样的方法,加入“这世界有那么多人”伴奏,同时为了更好的显示已选伴奏,增加已选歌曲文字对象。参考代码如下:
4.程序运行
点击运行,行空板屏幕显示伴奏名称,点击伴奏名下方显示已点选的伴奏,并播放。
注意:若播放过程中你听到的声音较小,需要在行空板“终端区”调整音量。操作时,首先停止运行代码,并在“终端区”输入“alsamixer”,然后按下键盘上的上下箭头键,控制音量变化,操作完成后只需要按下“Esc”键退出设置。
5.试一试
你的“迷你唱吧”现在已经可以播放选定的伴奏了,但是行空板有可能同时在后台播放多首伴奏。现在,请你使用 变量播放标志 实现当行空板正在播放伴奏时,点击伴奏名不会多首伴奏在后台播放。
任务二:录制并播放歌曲
1.编写程序
通过任务一,我们已经实现了选定伴奏播放任务,接下来我们就来完成录制歌声并播放吧。
(1)录制歌声
行空板录制音频的指令是 录音 秒直到结束,文件名“record.wav” ,使用时需要指定录音时长以及录制音频的文件名。
此时,最简单的做法就是在播放指令的下面直接放置录音指令,但是这会导致程序显示出现错误(录音结束后才显示选定歌曲名),通常我们会开启线程来帮助解决这个问题。
录音结束后,使用“行空板”“音频录放”下的 结束后台播放 指令结束伴奏播放并更新 变量播放标志 。
(2)录音的播放和暂停
接下来我们要创建“播放”和“暂停”按钮,实现点击“播放”,开始后台播放音频文件“record.wav”;点击“暂停”,暂停后台播放。当然,也别忘了更新 变量播放标志 。
最后,我们只需要完善第二首伴奏录放的代码,并适当美化整个界面就可以完成我们的“迷你唱吧”项目了。你可以自己设计想要的界面,当然也可以参考本项目,加入播放指示图标和文字提示,完整代码参考下图:
2.程序运行
点击运行,程序运行成功后,行空板屏幕显示伴奏列表、提示文字、按钮等;点击伴奏音乐名,开始播放并录制歌声,伴奏声停止后录制完毕;歌曲录制完毕后,点击“播放”按钮,播放录制音频;点击“暂停”按钮,暂停播放音频。
知识园地
1.认识USB喇叭
USB喇叭是一种可将电信号转换成声音的转换设备,只不过这里的电信号是通过USB接口传输过来的。和蜂鸣器相同,喇叭也是通过震动发出声音的,不同的是蜂鸣器和喇叭的输入信号不同。用无源蜂鸣器和喇叭对比,无源蜂鸣器的输入信号是方波,你听到的不同的声音都是通过改变方波的频率而产生的。
注意:关于蜂鸣器的介绍,可以参考“行空板图形化python入门教程-第8课”,网址如下:
https://mc.dfrobot.com.cn/thread-314534-1-1.html
喇叭的输入信号是音频信号,什么是音频信号呢?你可以把它理解为一段语音、音乐等存储在某设备后形成的一串电信号。和方波不同音频信号不止有频率还有幅度变化,与声波相似。你可以在很多地方看到音频信号的波形,比如电脑自带的录音机:
而喇叭的内部在做的就是将音频信号模拟还原成声音信号。从处理的输入信号上看,喇叭处理的信号更接近于真实的音乐、语音等,它所能发出的声音当然要比蜂鸣器要丰富、悦耳许多啦。
另外,关于喇叭是如何将音频信号转化成声音信号的,这涉及到电磁感应的知识,如果你感兴趣的话不妨自己查一查,研究一下。
最后,总结一下,今天我们学习了USB喇叭的使用方法,并通过和蜂鸣器对比了解了喇叭和音频信号。本节课,我们利用它让行空板播放乐曲、录音等等。其实,USB接口的用途还有很多,比如外接摄像头,让行空板“长出眼睛”,我们在后续的课程中也会带大家一起领略。
2.指令学习
挑战自我
通过本节课的学习相信你已经掌握了行空板录放音频的基本操作,现在不妨动手制作一个“语音笔记本”,利用行空板录下你此刻心情或难忘的事。
(1)点击“录制笔记”按钮,行空板开始录制语音笔记,录制完毕后显示录制记录;
(2)点击录制记录,播放已录笔记;点击“暂停播放”按钮,停止播放录音。
提示:你可以使用 序号变量 完成不同录制记录的显示,界面设计可参考下图。
附件下载:
扫码发送关键字“玩转开源硬件”,可下载程序文件(如有其它问题,请添加微 信咨询:DFRobot2019)
不错不错 学习了,感谢分享! 厉害厉害 不错不错 学到了,厉害厉害 不外接USB喇叭,用板载蜂鸣器不行吗?
页:
[1]