Сыграйте два звука одновременно в PYTHON без пигмеев
Я делаю проект со встроенным компьютерным модулем, EXM32 Starter Kit, и я хочу имитировать пианино с 8 музыкальными нотами. ОС Linux и яЯ программирую на Python. Моя проблема в том, что версия Python является 2.4 безPygame» библиотека для воспроизведения двух звуков одновременно. Сейчас я использую в Python "os.system (»aplay ./Do.wav ') " играть с консоли Linux, звук.
Упрощенный вопрос: могу ли я использовать другую библиотеку для того же:
snd1 = pygame.mixer.Sound('./Do.wav')
snd2 = pygame.mixer.Sound('./Re.wav')
snd1.play()
snd2.play()
играть 'Делать' а также 'Re» одновременная установка? Я могу использовать "auidoop» а также "волна" библиотека.
Я пытался использовать многопоточность, но проблема в том, что программа ожидает завершения команды консоли. Еще одна библиотека, которую я могу использовать? или метод, чтобы сделать сволна' или же 'audioop»?? (эта последняя библиотека, я считаю, предназначена только для манипулируемых звуковых файлов) Полный код:
import termios, sys, os, time
TERMIOS = termios
#I wrote this method to simulate keyevent. I haven't got better libraries to do this
def getkey():
fd = sys.stdin.fileno()
old = termios.tcgetattr(fd)
new = termios.tcgetattr(fd)
new[3] = new[3] & ~TERMIOS.ICANON & ~TERMIOS.ECHO
new[6][TERMIOS.VMIN] = 1
new[6][TERMIOS.VTIME] = 0
termios.tcsetattr(fd, TERMIOS.TCSANOW, new)
key_pressed = None
try:
key_pressed = os.read(fd, 1)
finally:
termios.tcsetattr(fd, TERMIOS.TCSAFLUSH, old)
return key_pressed
def keyspress(note):
if note == DO:
os.system('aplay ./notas_musicales/Do.wav')
elif note == RE:
os.system('aplay ./notas_musicales/Re.wav')
elif note == MI:
os.system('aplay ./notas_musicales/Mi.wav')
elif note == FA:
os.system('aplay ./notas_musicales/Fa.wav')
elif note == SOL:
os.system('aplay ./notas_musicales/Sol.wav')
elif note == LA:
os.system('aplay ./notas_musicales/La.wav')
elif note == SI:
os.system('aplay ./notas_musicales/Si.wav')
DO = 'a'
RE = 's'
MI = 'd'
FA = 'f'
SOL = 'g'
LA = 'h'
SI = 'j'
key_pressed = ""
i = 1
#in each iteration the program enter into the other 'if' to doesn't interrupt
#the last sound.
while(key_pressed != 'n'):
key_pressed = getkey()
if i == 1:
keyspress(key_pressed)
i = 0
elif i == 0:
keyspress(key_pressed)
i = 1
print ord(key_pressed)