Androidのメモとか

ポキオの日記です。今日も遅延してない。

ファーンだけじゃなくファファファファファーンができるようになった

ファーン。

ポキオ Raspberry Pi Speaker pHat Air Horn

ファーン?

前回はこちら。

relativelayout.hatenablog.com

要はエアホーンの効果音をRaspberry Piで鳴らしたいよっていうお話なんですが、前回のNode-REDのノードの場合、音声ファイルをノードで再生中に、更に音声ファイルをノードに対して再生させようとすると、正しく再生されなくなってしまいます。つまり、エアホーンのファーンという音は鳴らせても、それを連続して再生してファファファファファーンみたいな鳴らし方はできませんでした。

Pythonで再生してみる?

Node-REDではノードで再生中の音楽を途中で止めるすべがなさそうだったので、Pythonを使って愚直にコーディングしてファファファファファーンしてみようと思います。

Pythonではpygameというゲーム用モジュールを使うと簡単にMP3を再生できそうだったので、それを使って実装してみます。

$ pip list

手元のRaspberry PiRaspberry 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で時間を少しずつづらしながら、再生中のファーンを停止し、そのまま再度ファーンを再生させながら、ファファファファファーンをしてみました。

この投稿をInstagramで見る

Pythonでファファファファファーンできたお

pokio(@pokiiiiio)がシェアした投稿 -

おーーー。いい感じ。あとは、これをサンプラーみたいにボタン操作でファファファファファーンしたいところ。

「Androidのメモとか」は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。

このブログは個人的なメモ書きであったり、考えを書く場所であります。執筆者の所属する団体や企業のコメントや意向とは無関係であります。また、このブログは必ずしも正しいことが書かれているとは限らず、誤字脱字や意図せず誤った情報を載せる場合がありえます。それが原因で読者が不利益を被ったとしても、執筆者はいかなる責任も負いません。ありがとうございます。