X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=helpers%2Fmixer.py;h=9242b61af9100e944b5060220bf40c0567741443;hb=205861936ca55357beea6a8af7c0c9ed5a61f484;hp=9e8179a9a3989c692b3e97d7da1783a57c748e94;hpb=22514f3ae6d4e19537ae5ab6bdb5bc9f99a64f47;p=perso%2FImmae%2FProjets%2FPython%2FMusicSampler.git diff --git a/helpers/mixer.py b/helpers/mixer.py index 9e8179a..9242b61 100644 --- a/helpers/mixer.py +++ b/helpers/mixer.py @@ -2,19 +2,31 @@ import sounddevice as sd import audioop import time -frame_rate = 44100 -channels = 2 -sample_width = 2 +from . import Config + +sample_width = Config.sample_width + +def sample_width_to_dtype(sample_width): + if sample_width == 1 or sample_width == 2 or sample_width == 4: + return 'int' + str(8*sample_width) + else: + raise "Unknown sample width" + +def _latency(latency): + if latency == "high" or latency == "low": + return latency + else: + return float(latency) class Mixer: def __init__(self): - self.stream = sd.RawOutputStream(samplerate=frame_rate, - channels=channels, - dtype='int' + str(8*sample_width), # FIXME: ? - latency="high", - blocksize=5000, - callback=self.play_callback, - ) + self.stream = sd.RawOutputStream( + samplerate=Config.frame_rate, + channels=Config.channels, + dtype=sample_width_to_dtype(Config.sample_width), + latency=_latency(Config.latency), + blocksize=Config.blocksize, + callback=self.play_callback) self.open_files = [] def add_file(self, music_file): @@ -23,7 +35,8 @@ class Mixer: self.start() def remove_file(self, music_file): - self.open_files.remove(music_file) + if music_file in self.open_files: + self.open_files.remove(music_file) if len(self.open_files) == 0: self.stop()