ファーン。
ファーン?
前回はこちら。
要はエアホーンの効果音をRaspberry Piで鳴らしたいよっていうお話なんですが、前回のNode-REDのノードの場合、音声ファイルをノードで再生中に、更に音声ファイルをノードに対して再生させようとすると、正しく再生されなくなってしまいます。つまり、エアホーンのファーンという音は鳴らせても、それを連続して再生してファファファファファーンみたいな鳴らし方はできませんでした。
Pythonで再生してみる?
Node-REDではノードで再生中の音楽を途中で止めるすべがなさそうだったので、Pythonを使って愚直にコーディングしてファファファファファーンしてみようと思います。
Pythonではpygame
というゲーム用モジュールを使うと簡単にMP3を再生できそうだったので、それを使って実装してみます。
$ pip list
手元のRaspberry Pi(Raspberry Pi OS)にはプリインされてるようで、上記コマンドでモジュール一覧を表示したところ、
Package Version ----------------- ----------- (中略) pygame 1.9.4.post1
pygame
は入っていました。良かった良かった。これを使ってMP3を連続再生してみようと思います。
import pygame.mixer import time def main(): pygame.mixer.init() time.sleep(1) pygame.mixer.music.load("./Music/airhorn.mp3") pygame.mixer.music.play(1) time.sleep(0.2) pygame.mixer.music.stop() pygame.mixer.music.load("./Music/airhorn.mp3") pygame.mixer.music.play(1) time.sleep(0.2) pygame.mixer.music.stop() pygame.mixer.music.load("./Music/airhorn.mp3") pygame.mixer.music.play(1) time.sleep(0.2) pygame.mixer.music.stop() pygame.mixer.music.load("./Music/airhorn.mp3") pygame.mixer.music.play(1) time.sleep(0.2) pygame.mixer.music.stop() pygame.mixer.music.load("./Music/airhorn.mp3") pygame.mixer.music.play(1) time.sleep(2) pygame.mixer.music.stop() if __name__ == '__main__': main()
便利なことに、再生だけでなく、再生中の音楽を止めたりもできるので、まずはsleepで時間を少しずつづらしながら、再生中のファーンを停止し、そのまま再度ファーンを再生させながら、ファファファファファーンをしてみました。
おーーー。いい感じ。あとは、これをサンプラーみたいにボタン操作でファファファファファーンしたいところ。