Merhaba, amacım 2 farklı harfe 1 saniye farkla bassam da farklı sesleri aynı anda çaldırma yani:
a harfine bastım 1 sesi çalmaya başladı
sonra b harfine bastım 2 sesi çalmaya başladı
ama bunların aynı anda çalmasını istiyorum.
MultiThreading ile denedim ancak birşey değişmedi.
Şöyle bir kod denedim:
import pynput
from pynput.keyboard import Key, Listener
import pygame
import threading
def on_press(key):
def a():
pygame.mixer.init()
pygame.mixer.music.load("C:/Users/Ahmett/Desktop/balina.mp3")
pygame.mixer.music.play()
def b():
pygame.mixer.init()
pygame.mixer.music.load("C:/Users/Ahmett/Desktop/troll.mp3")
pygame.mixer.music.play()
if str(key) == "'a'":
athreading = threading.Thread(target=a)
athreading.start()
if str(key) == "'b'":
bthreading = threading.Thread(target=b)
bthreading.start()
def on_release(key):
if key == Key.esc:
print("Çıkış yapılıyor")
return False
with Listener(on_press = on_press, on_release = on_release) as listener:
listener.join()
ancak b harfine bastığımda ses çalarken a harfine basarsam b harfindeki ses duruyor ve a harfindeki ses çalmaya başlıyor benim isteğim bu sesin durmaması ve aynı anda çalmaya devam etmeleri.
Pygame kullanmamın nedeni bildiğim kadarıyla sadece pygame .mp3 uzantılı sesleri çalabiliyor.
Exception in thread Thread-2 (b):
Traceback (most recent call last):
File "C:\Users\Ahmett\AppData\Local\Programs\Python\Python310\lib\threading.py", line 1009, in _bootstrap_inner
self.run()
File "C:\Users\Ahmett\AppData\Local\Programs\Python\Python310\lib\threading.py", line 946, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\Ahmett\PycharmProjects\Project\sj.py", line 17, in b
pygame.mixer.Sound.load("C:/Users/Ahmett/Desktop/troll.mp3")
AttributeError: type object 'Sound' has no attribute 'load'
Maalesef Load kodunu da silmeme rağmen şöyle bir hata veriyor:
Exception in thread Thread-2 (a):
Traceback (most recent call last):
File "C:\Users\Ahmett\AppData\Local\Programs\Python\Python310\lib\threading.py", line 1009, in _bootstrap_inner
self.run()
File "C:\Users\Ahmett\AppData\Local\Programs\Python\Python310\lib\threading.py", line 946, in run
self._target(*self._args, **self._kwargs)
File "C:\Users\Ahmett\PycharmProjects\Project\sjj.py", line 11, in a
pygame.mixer.Sound.play("C:/Users/Ahmett/Desktop/balina.mp3")
TypeError: descriptor 'play' for 'Sound' objects doesn't apply to a 'str' object
Kod:
import pynput
from pynput.keyboard import Key, Listener
import pygame
import threading
def on_press(key):
def a():
pygame.mixer.init()
pygame.mixer.Sound.play("C:/Users/Ahmett/Desktop/balina.mp3")
def b():
pygame.mixer.init()
pygame.mixer.Sound.play("C:/Users/Ahmett/Desktop/troll.mp3")
if str(key) == "'a'":
athreading = threading.Thread(target=a)
athreading.start()
if str(key) == "'b'":
bthreading = threading.Thread(target=b)
bthreading.start()
def on_release(key):
if key == Key.esc:
print("Çıkış yapılıyor")
return False
with Listener(on_press = on_press, on_release = on_release) as listener:
listener.join()