Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def __init__(self, samplerate: int = 0, samplewidth: int = 0, nchannels: int = 0, frames_per_chunk: int = 0) -> None:
super().__init__(samplerate, samplewidth, nchannels, frames_per_chunk, 0)
self.mixed_chunks = self.mixer.chunks()
output_format = {
1: miniaudio.SampleFormat.UNSIGNED8,
2: miniaudio.SampleFormat.SIGNED16,
3: miniaudio.SampleFormat.SIGNED24,
4: miniaudio.SampleFormat.SIGNED32
}[self.samplewidth]
buffersize_msec = self.nchannels * 1000 * self.frames_per_chunk // self.samplerate
self.mixed_chunks = self.mixer.chunks()
self.device = miniaudio.PlaybackDevice(output_format, self.nchannels, self.samplerate, buffersize_msec)
stream = self.generator()
next(stream) # start generator
self.device.start(stream)
def progress_stream_wrapper(stream) -> miniaudio.PlaybackCallbackGeneratorType:
framecount = yield(b"")
try:
while True:
framecount = yield stream.send(framecount)
print(".", end="", flush=True)
except StopIteration:
return
output_format = info.sample_format
try:
filestream = miniaudio.stream_file(filename, output_format=output_format, sample_rate=info.sample_rate)
except miniaudio.MiniaudioError as x:
print("Cannot create optimal stream:", x)
print("Creating stream with different sample format!")
output_format = miniaudio.SampleFormat.SIGNED16
filestream = miniaudio.stream_file(filename, output_format=output_format, sample_rate=info.sample_rate,
dither=miniaudio.DitherMode.TRIANGLE)
stream = progress_stream_wrapper(filestream)
next(stream) # start the generator
device = miniaudio.PlaybackDevice(output_format=output_format, sample_rate=info.sample_rate)
print("playback device backend:", device.backend, device.format.name, device.sample_rate, "hz")
device.start(stream)
input("Audio file playing in the background. Enter to stop playback: ")
device.close()
def _array_proto_from_format(sampleformat: SampleFormat) -> array.array:
arrays = {
SampleFormat.UNSIGNED8: _create_int_array(1),
SampleFormat.SIGNED16: _create_int_array(2),
SampleFormat.SIGNED32: _create_int_array(4),
SampleFormat.FLOAT32: array.array('f')
}
if sampleformat in arrays:
return arrays[sampleformat]
raise MiniaudioError("the requested sample format can not be used directly: "
+ sampleformat.name + " (convert it first)")
def _width_from_format(sampleformat: SampleFormat) -> int:
widths = {
SampleFormat.UNSIGNED8: 1,
SampleFormat.SIGNED16: 2,
SampleFormat.SIGNED24: 3,
SampleFormat.SIGNED32: 4,
SampleFormat.FLOAT32: 4
}
if sampleformat in widths:
return widths[sampleformat]
raise MiniaudioError("unsupported sample format", sampleformat)
def __init__(self, samplerate: int = 0, samplewidth: int = 0, nchannels: int = 0, queue_size: int = 100) -> None:
super().__init__(samplerate, samplewidth, nchannels, queue_size=queue_size)
self.command_queue = queue.Queue(maxsize=queue_size) # type: queue.Queue[Dict[str, Any]]
output_format = {
1: miniaudio.SampleFormat.UNSIGNED8,
2: miniaudio.SampleFormat.SIGNED16,
3: miniaudio.SampleFormat.SIGNED24,
4: miniaudio.SampleFormat.SIGNED32
}[self.samplewidth]
self.device = miniaudio.PlaybackDevice(output_format, self.nchannels, self.samplerate)
stream = self.generator()
next(stream) # start generator
self.device.start(stream)