我想知道如何从文件中随机播放wav样本。我想在按下a按钮时播放随机选择的wav样本。到目前为止,这就是我所拥有的。
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样本?
答案 0 :(得分:1)
我会使用glob
编译目录中的文件列表,然后使用random.choice
选择文件。这样的东西添加到你的代码中(或者在play()的情况下,修改):
import glob
import random
soundfiles = glob.glob("samples/*.wav")
def play(pin):
print("playing")
pygame.mixer.Sound(random.choice(soundfiles)).play()
答案 1 :(得分:0)
您可以使用os.listdir
获取文件夹中的所有文件。
import os, random
def play():
files=os.listdir('.')
file=random.choice(files)
pygame.mixer.Sound(file).play()
print("playing")
如果你想要wav,你可以添加这一行:
files=filter(lambda f: f.endswith(".wav"), files)