From fd9eab30990e2a5f2ffcb96775d3f2ee86d27183 Mon Sep 17 00:00:00 2001 From: Sebastian Krzyszkowiak <dos@dosowisko.net> Date: Tue, 5 Sep 2023 05:42:18 +0200 Subject: [PATCH] bl00mbox: Load wave samples 5 seconds at a time Makes it fast enough that many apps that have loading screens don't need it anymore. --- python_payload/bl00mbox/_patches.py | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/python_payload/bl00mbox/_patches.py b/python_payload/bl00mbox/_patches.py index a4d3608a33..9a5ec12db0 100644 --- a/python_payload/bl00mbox/_patches.py +++ b/python_payload/bl00mbox/_patches.py @@ -152,24 +152,29 @@ class sampler(_Patch): frames = self.memory_len self.sample_len = frames + BUFFER_SIZE = 48000 * 5 + if f.getnchannels() == 1: # fast path for mono table = self.plugins.sampler.table_bytearray for i in range( 2 * self.buffer_offset_i16, (self.sample_len + self.buffer_offset_i16) * 2, - 100, + BUFFER_SIZE * 2, ): - table[i : i + 100] = f.readframes(50) + table[i : i + BUFFER_SIZE * 2] = f.readframes(BUFFER_SIZE) else: # somewhat fast path for stereo table = self.plugins.sampler.table_int16_array for i in range( - self.buffer_offset_i16, self.sample_len + self.buffer_offset_i16 + self.buffer_offset_i16, + self.sample_len + self.buffer_offset_i16, + BUFFER_SIZE, ): - frame = f.readframes(1) - value = int.from_bytes(frame[0:2], "little") - table[i] = value + frame = f.readframes(BUFFER_SIZE) + for j in range(0, len(frame) // 4): + value = int.from_bytes(frame[4 * j : 4 * j + 2], "little") + table[i + j] = value f.close() def save(self, filename, overwrite=True): -- GitLab