树莓派小实验 | 制作一个音乐盒

如果觉得本篇文章对您的学习起到帮助作用,请 点赞 + 关注 + 评论 ,留下您的足迹💪💪💪

在此项目中,将构建一个按钮控制的“音乐盒”。当按下不同的按钮时,该音乐盒会播放不同的声音,详细内容请看这里

相关内容:
树莓派小实验 | 制作一个带快门的照相机 & 录像机

一、所需硬件

1、 树莓派4b
pi

2、5条杜邦线
db

3、 按键
key

4、扬声器或耳机

Speakers

二、处理音频文件

我们的音乐盒需要音频文件,Raspbian内已经包含了大量音频,但是这些音频不适合在Python中使用,我们需要将音频转化为适合Python的文件格式。

1、在家目录下创建gpio-music-box/samples文件夹:

打开终端:

aspberrypi:~ $ mkdir -p gpio-music-box/samples

观察如下:
pi0
2、从树莓派内置的音频文件复制到gpio-music-box/samples文件夹中:

cp /usr/share/sonic-pi/samples/perc_impact2.flac ~/gpio-music-box/samples/.
cp /usr/share/sonic-pi/samples/sn_dolf.flac ~/gpio-music-box/samples/.
cp /usr/share/sonic-pi/samples/sn_generic.flac ~/gpio-music-box/samples/.
cp /usr/share/sonic-pi/samples/tabla_ghe7.flac ~/gpio-music-box/samples/.

文件夹里有很多音频,读者可以根据自己的喜好选择音频。

观察复制后samples文件夹:
pi1
3、转换音频格式:
要使用Python播放音频文件,需要将文件从.flac文件转换为.wav 文件,我们使用ffmpeg 软件在树莓派上进行媒体文件的格式转换。

进入samples文件夹目录下:

pi@raspberrypi:~ $ cd gpio-music-box/samples/

音频文件格式转换:

ffmpeg -i perc_impact2.flac perc_impact2.wav
ffmpeg -i sn_dolf.flac sn_dolf.wav
ffmpeg -i sn_generic.flac sn_generic.wav
ffmpeg -i tabla_ghe7.flac tabla_ghe7.wav

删除原文件:

rm perc_impact2.flac
rm sn_dolf.flac
rm sn_generic.flac
rm tabla_ghe7.flac

再次观察samples文件夹音频文件,都由.flac文件转换成了.wav 文件。
pi2

三、按键连接

我使用的按键有8个,本实验只使用了4个按键,每个按键都连接到Raspberry Pi上的单独GPIO引脚。

树莓派引脚示意图:
pi
引脚接线方法如图:
pin

本例连接方法:

  • 公共地线——任意图示黑色引脚
  • 按键7号——23号GPIO
  • 按键6号——24号GPIO
  • 按键5号——25号GPIO
  • 按键4号——7号GPIO

如图所示:
pi

四、程序编写

使用树莓派自带mu编程
p1
编写程序:

import pygame
from gpiozero import Button

pygame.init()

'''
sound1 = pygame.mixer.Sound('/home/pi/gpio-music-box/samples/ambi_glass_rub.wav')
sound2 = pygame.mixer.Sound('/home/pi/gpio-music-box/samples/ambi_choir.wav')
sound3 = pygame.mixer.Sound('/home/pi/gpio-music-box/samples/ambi_dark_woosh.wav')
sound4 = pygame.mixer.Sound('/home/pi/gpio-music-box/samples/ambi_drone.wav')

btn_sound1 = Button(23)
btn_sound2 = Button(24)
btn_sound3 = Button(25)
btn_sound4 = Button(7)

btn_sound1.when_pressed = sound1.play
btn_sound2.when_pressed = sound2.play
btn_sound3.when_pressed = sound3.play
btn_sound4.when_pressed = sound4.play
'''
button_sounds = {Button(23):pygame.mixer.Sound('/home/pi/gpio-music-box/samples/perc_impact2.wav'),
                Button(24):pygame.mixer.Sound('/home/pi/gpio-music-box/samples/sn_dolf.wav'),
                Button(25):pygame.mixer.Sound('/home/pi/gpio-music-box/samples/sn_generic.wav'),
                Button(7):pygame.mixer.Sound('/home/pi/gpio-music-box/samples/tabla_ghe7.wav')}

for button, sound in button_sounds.items():
    button.when_pressed = sound.play

运行程序,只需要接上耳机或者扬声器,当我们按动按键时,音乐就会响起了。

接下来,就需要你实际动手试一试了,快来行动吧💪💪💪

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值