본문 바로가기

코딩/파이썬과 라즈베리파이

[Raspberry Pi] 라즈베리 파이 + 파이썬 코딩 022. 버튼 입력으로 mp3 재생 파일 바꾸기

코딩 설명

라즈베리 파이에서 pygame 라이브러리로 *.mp3 파일을 재생해 본다.

 

한곡만 재생하면 심심할 듯하여 버튼을 누르면 재생되는 파일이 변경되도록 한다.

 

코드 작성

 

  • 버튼 입력은 GPIO 2번이 수신한다.
  • *.mp3 파일 재생을 위해 pygame.mixer.music 모듈을 사용한다.
  • pygame.mixer.music.play(-1) 코드의 -1은 음악 무한 반복을 위함이다.
  • 아래 코드는 0.5초 주기로 버튼이 눌렸는지 확인하기에 (나름 폴링 모드) 버튼을 0.5초 이상 누르고 있으면 깔끔하게 재생 곡이 바뀐다.
from time import sleep
from gpiozero import Button
import pygame.mixer

button = Button(2)

pygame.mixer.init()

songs = ['/usr/share/scratch/Media/Sounds/Vocals/Come-and-play.mp3',
         '/usr/share/scratch/Media/Sounds/Vocals/Got-inspiration.mp3',
         '/usr/share/scratch/Media/Sounds/Vocals/Oooo-badada.mp3',
         '/usr/share/scratch/Media/Sounds/Vocals/Sing-me-a-song.mp3']
next_index = 0
print(next_index, songs[next_index])

pygame.mixer.music.load(songs[next_index])
pygame.mixer.music.play(-1)

while True:
    if button.is_pressed:
        print('pressed')
        next_index = next_index + 1 if next_index < 3 else 0
        print(next_index, songs[next_index])
        pygame.mixer.music.stop()
        pygame.mixer.music.load(songs[next_index])
        pygame.mixer.music.play(-1)
    sleep(0.5)