From 7fa11a4abe1e1dc3fe0f1c6e14a9a1c5f09afdab Mon Sep 17 00:00:00 2001 From: Logan Cusano Date: Sun, 27 Feb 2022 18:36:18 -0500 Subject: [PATCH] Working on bug in leaving --- bot.py | 6 +++--- sound.py | 32 ++++++++++++++------------------ 2 files changed, 17 insertions(+), 21 deletions(-) diff --git a/bot.py b/bot.py index 9cd68d1..0b0f114 100644 --- a/bot.py +++ b/bot.py @@ -91,9 +91,9 @@ class Bot(commands.Bot): voice_connection = await channel.connect() # Create an audio stream from selected device - self.streamHandler = sound.PCMStream() - # Ensure the selected device is available and start the audio stream - self.streamHandler.change_device(self.DEVICE_ID) + self.streamHandler = sound.PCMStream(self.DEVICE_ID) + # Start the audio stream + self.streamHandler.stream.start() # Play the stream voice_connection.play(discord.PCMAudio(self.streamHandler)) diff --git a/sound.py b/sound.py index 1060dd9..2d02fc4 100644 --- a/sound.py +++ b/sound.py @@ -13,31 +13,27 @@ sd.default.samplerate = 48000 class PCMStream: globals() - def __init__(self): - self.stream = None + def __init__(self, _device_id): + self.stream = sd.RawInputStream(device=_device_id) - def read(self, num_bytes): - # frame is 4 bytes - frames = int(num_bytes / 4) - data = self.stream.read(frames)[0] - - # convert to pcm format - return bytes(data) - - def change_device(self, device_ID): + def change_device(self, _device_id): self.clean_up() - self.stream = sd.RawInputStream(device=device_ID) - - self.stream.start() + self.stream = sd.RawInputStream(device=_device_id) def clean_up(self): - if self.stream is not None: - self.stream.stop() - time.sleep(.1) - self.stream.close() + if not self.stream.closed: + self.stream.stop(ignore_errors=True) + self.stream.close(ignore_errors=True) + def read(self, num_bytes): + if self.stream.active: + # frame is 4 bytes + frames = int(num_bytes / 4) + data = self.stream.read(frames)[0] + # convert to pcm format + return bytes(data) class DeviceNotFoundError(Exception):