2015-03-26 5 views
2

Мне интересно, как случайным образом воспроизводить образец wav из файла. Я хотел бы, чтобы случайно выбранный образец WAV воспроизводился при нажатии кнопки. Пока это то, что у меня есть.Как играть в случайный WAV. Образец из папки в Python?

import pygame.mixer 
import RPi.GPIO as GPIO 

pygame.mixer.init() 
GPIO.setmode(GPIO.BMC) 
GPIO.setwarnings(False) 

GPIO.setup(2, GPIO.IN, GPIO.PUD_DOWN) 

drum = pygame.mixer.Sound("samples/drum_tom_mid_hard.wav") 

def play(pin): 
    print("playing") 
    drum.play() 

GPIO.add_event_detect(2, GPIO.FALLING, play, 1000) 

print("ready") 

while True: 
    pass 

В приведенном выше коде python воспроизводится образец wav, который я выбрал при нажатии кнопки. Как я могу изменить этот код, чтобы заставить его воспроизводить случайную выборку wav из файла при нажатии кнопки?

+1

Случайный сэмпл из WAV файла или случайно отобранного WAV файл из папки? – TigerhawkT3

+0

Я извиняюсь за двусмысленность. Мне нужен случайный файл wav из папки. –

ответ

1

Я бы использовал glob, чтобы скомпилировать список файлов в каталоге, а затем с помощью random.choice, чтобы выбрать файл. Что-то вроде этого добавили в свой код (или в случае воспроизведения(), с поправками):

import glob 
import random 

soundfiles = glob.glob("samples/*.wav") 

def play(pin): 
    print("playing") 
    pygame.mixer.Sound(random.choice(soundfiles)).play() 
+0

Вы никогда не называли игру. –

+1

'pygame.mixer.Sound (random.choice (soundfiles)). Play()' [-6:] – TigerhawkT3

+0

Что мне помещать вместо ("samples/*. Wav")? Или как правильно перечислить образцы wav после («образцы/как мне отобразить образцы здесь»)? –

0

Вы можете использовать os.listdir, чтобы получить все файлы в папке.

Если вы хотите, WAV, вы можете добавить эту строку:

files=filter(lambda f: f.endswith(".wav"), files) 
Смежные вопросы