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

[M10项目] 【行空板】用Python玩转开源硬件-第07课:迷你唱吧

[复制链接]
迷你唱吧

好友相聚高歌澎湃,一人独处用歌声宣泄情绪,你是否也喜欢光顾KTV或是用手机放着音乐伴奏,用歌喉表达着自己的心境。其实我们的行空板也可以实现,今天我们就用行空板制作一个可以播放伴奏和录制歌声的“随身KTV”。

【行空板】用Python玩转开源硬件-第07课:迷你唱吧图1

任务目标

点选想唱的歌曲,点击演唱自动播放伴奏,录制歌声,录制时间结束后,自动播放录音。




知识点

1.了解USB喇叭的工作原理

2.掌握行空板录放音乐方法

材料清单

硬件清单

【行空板】用Python玩转开源硬件-第07课:迷你唱吧图2


软件使用:Mind+编程软件 x1

下载地址:https://mindplus.cc/

【行空板】用Python玩转开源硬件-第07课:迷你唱吧图3


动手实践

迷你唱吧的主要功能是通过选择不同的歌曲,录制并播放歌声。接下来,我们就分为以下两个任务来制作吧。

任务一:播放歌曲伴奏
在此任务中,我们将学习行空板音乐播放相关操作,完成播放选定伴奏任务。

任务二:录制并播放歌曲
在任务一的基础上,我们将使用行空板录音指令,并进一步运用播放相关指令完成迷你唱吧的录放歌曲任务。

任务一:播放歌曲伴奏

1.硬件连接

行空板上没有喇叭,要播放歌曲,需要外接USB喇叭。连接时只需要把喇叭的USB线接入行空板侧面USB接口。

注意:有关USB喇叭的相关介绍,参见“知识园地”。

【行空板】用Python玩转开源硬件-第07课:迷你唱吧图4


喇叭连接成功后,使用USB线将行空板连接到计算机。

【行空板】用Python玩转开源硬件-第07课:迷你唱吧图5


2.软件准备

打开Mind+,按照下面图示完成软件准备工作。

【行空板】用Python玩转开源硬件-第07课:迷你唱吧图6


3.编写程序

迷你唱吧中,我们要点选歌曲然后用行空板播放伴奏音乐。具体如何实现呢,接下来我们一起来学习吧。

(1)行空板播放音乐

和行空板显示图片类似,行空板播放音乐也需要先将音频文件放在程序所在文件夹中,然后再使用指令进行播放。

以播放“送别”为例,首先在素材文件夹中找到“送别.wav”文件,并将其拖入“项目中的文件”。

【行空板】用Python玩转开源硬件-第07课:迷你唱吧图7


然后,我们就可以使用指令让行空板播放音乐了。播放指令—— 开始后台播放音频文件 ,在指令区“行空板”分类的“音频录放”部分,使用时填入刚才添加的音乐文件名即可。

【行空板】用Python玩转开源硬件-第07课:迷你唱吧图8


(2)点选播放乐曲

点选播放乐曲,可以使用文字回调。也就是使用 对象名 的点击回调函数为button_click1,然后再回调函数部分设置播放音频。

【行空板】用Python玩转开源硬件-第07课:迷你唱吧图9


现在我们可以使用同样的方法,加入“这世界有那么多人”伴奏,同时为了更好的显示已选伴奏,增加已选歌曲文字对象。参考代码如下:

【行空板】用Python玩转开源硬件-第07课:迷你唱吧图10


4.程序运行

点击运行,行空板屏幕显示伴奏名称,点击伴奏名下方显示已点选的伴奏,并播放。

【行空板】用Python玩转开源硬件-第07课:迷你唱吧图11


注意:若播放过程中你听到的声音较小,需要在行空板“终端区”调整音量。操作时,首先停止运行代码,并在“终端区”输入“alsamixer”,然后按下键盘上的上下箭头键,控制音量变化,操作完成后只需要按下“Esc”键退出设置。

【行空板】用Python玩转开源硬件-第07课:迷你唱吧图12


5.试一试

你的“迷你唱吧”现在已经可以播放选定的伴奏了,但是行空板有可能同时在后台播放多首伴奏。现在,请你使用 变量播放标志 实现当行空板正在播放伴奏时,点击伴奏名不会多首伴奏在后台播放。

任务二:录制并播放歌曲

1.编写程序

通过任务一,我们已经实现了选定伴奏播放任务,接下来我们就来完成录制歌声并播放吧。

(1)录制歌声

行空板录制音频的指令是 录音 秒直到结束,文件名“record.wav” ,使用时需要指定录音时长以及录制音频的文件名。

【行空板】用Python玩转开源硬件-第07课:迷你唱吧图13


此时,最简单的做法就是在播放指令的下面直接放置录音指令,但是这会导致程序显示出现错误(录音结束后才显示选定歌曲名),通常我们会开启线程来帮助解决这个问题。

【行空板】用Python玩转开源硬件-第07课:迷你唱吧图14


录音结束后,使用“行空板”“音频录放”下的 结束后台播放 指令结束伴奏播放并更新 变量播放标志

【行空板】用Python玩转开源硬件-第07课:迷你唱吧图15


(2)录音的播放和暂停

接下来我们要创建“播放”和“暂停”按钮,实现点击“播放”,开始后台播放音频文件“record.wav”;点击“暂停”,暂停后台播放。当然,也别忘了更新 变量播放标志

【行空板】用Python玩转开源硬件-第07课:迷你唱吧图16


最后,我们只需要完善第二首伴奏录放的代码,并适当美化整个界面就可以完成我们的“迷你唱吧”项目了。你可以自己设计想要的界面,当然也可以参考本项目,加入播放指示图标和文字提示,完整代码参考下图:

【行空板】用Python玩转开源硬件-第07课:迷你唱吧图17


【行空板】用Python玩转开源硬件-第07课:迷你唱吧图18


2.程序运行

点击运行,程序运行成功后,行空板屏幕显示伴奏列表、提示文字、按钮等;点击伴奏音乐名,开始播放并录制歌声,伴奏声停止后录制完毕;歌曲录制完毕后,点击“播放”按钮,播放录制音频;点击“暂停”按钮,暂停播放音频。

【行空板】用Python玩转开源硬件-第07课:迷你唱吧图19


知识园地

1.认识USB喇叭

USB喇叭是一种可将电信号转换成声音的转换设备,只不过这里的电信号是通过USB接口传输过来的。和蜂鸣器相同,喇叭也是通过震动发出声音的,不同的是蜂鸣器和喇叭的输入信号不同。用无源蜂鸣器和喇叭对比,无源蜂鸣器的输入信号是方波,你听到的不同的声音都是通过改变方波的频率而产生的。

注意:关于蜂鸣器的介绍,可以参考“行空板图形化python入门教程-第8课”,网址如下:

https://mc.dfrobot.com.cn/thread-314534-1-1.html

【行空板】用Python玩转开源硬件-第07课:迷你唱吧图20


喇叭的输入信号是音频信号,什么是音频信号呢?你可以把它理解为一段语音、音乐等存储在某设备后形成的一串电信号。和方波不同音频信号不止有频率还有幅度变化,与声波相似。你可以在很多地方看到音频信号的波形,比如电脑自带的录音机:

【行空板】用Python玩转开源硬件-第07课:迷你唱吧图21


而喇叭的内部在做的就是将音频信号模拟还原成声音信号。从处理的输入信号上看,喇叭处理的信号更接近于真实的音乐、语音等,它所能发出的声音当然要比蜂鸣器要丰富、悦耳许多啦。

【行空板】用Python玩转开源硬件-第07课:迷你唱吧图22


另外,关于喇叭是如何将音频信号转化成声音信号的,这涉及到电磁感应的知识,如果你感兴趣的话不妨自己查一查,研究一下。

最后,总结一下,今天我们学习了USB喇叭的使用方法,并通过和蜂鸣器对比了解了喇叭和音频信号。本节课,我们利用它让行空板播放乐曲、录音等等。其实,USB接口的用途还有很多,比如外接摄像头,让行空板“长出眼睛”,我们在后续的课程中也会带大家一起领略。

2.指令学习

【行空板】用Python玩转开源硬件-第07课:迷你唱吧图23


挑战自我

通过本节课的学习相信你已经掌握了行空板录放音频的基本操作,现在不妨动手制作一个“语音笔记本”,利用行空板录下你此刻心情或难忘的事。

(1)点击“录制笔记”按钮,行空板开始录制语音笔记,录制完毕后显示录制记录;

(2)点击录制记录,播放已录笔记;点击“暂停播放”按钮,停止播放录音。

提示:你可以使用 序号变量 完成不同录制记录的显示,界面设计可参考下图。

【行空板】用Python玩转开源硬件-第07课:迷你唱吧图24


附件下载:


扫码发送关键字“玩转开源硬件”,可下载程序文件(如有其它问题,请添加微 信咨询:DFRobot2019)
【行空板】用Python玩转开源硬件-第07课:迷你唱吧图25

花生编程  中级技匠

发表于 2023-2-17 16:37:20

不错不错
回复

使用道具 举报

花生编程  中级技匠

发表于 2023-2-17 16:39:02

学习了,感谢分享!
回复

使用道具 举报

三春牛-创客  初级技神

发表于 2023-2-17 17:07:17

厉害厉害
回复

使用道具 举报

三春牛-创客  初级技神

发表于 2023-2-17 17:09:23

不错不错
回复

使用道具 举报

wuwuwuhello  学徒

发表于 2024-9-17 13:16:00

学到了,厉害厉害
回复

使用道具 举报

ZHR  见习技师

发表于 2024-10-17 22:14:29

不外接USB喇叭,用板载蜂鸣器不行吗?
回复

使用道具 举报

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

本版积分规则

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

硬件清单

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

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

mail