Skip to content
Snippets Groups Projects
Verified Commit fd9eab30 authored by dos's avatar dos
Browse files

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.
parent 8c9b93f0
Branches wave
No related tags found
No related merge requests found
Pipeline #7874 passed
...@@ -152,24 +152,29 @@ class sampler(_Patch): ...@@ -152,24 +152,29 @@ class sampler(_Patch):
frames = self.memory_len frames = self.memory_len
self.sample_len = frames self.sample_len = frames
BUFFER_SIZE = 48000 * 5
if f.getnchannels() == 1: if f.getnchannels() == 1:
# fast path for mono # fast path for mono
table = self.plugins.sampler.table_bytearray table = self.plugins.sampler.table_bytearray
for i in range( for i in range(
2 * self.buffer_offset_i16, 2 * self.buffer_offset_i16,
(self.sample_len + self.buffer_offset_i16) * 2, (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: else:
# somewhat fast path for stereo # somewhat fast path for stereo
table = self.plugins.sampler.table_int16_array table = self.plugins.sampler.table_int16_array
for i in range( 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) frame = f.readframes(BUFFER_SIZE)
value = int.from_bytes(frame[0:2], "little") for j in range(0, len(frame) // 4):
table[i] = value value = int.from_bytes(frame[4 * j : 4 * j + 2], "little")
table[i + j] = value
f.close() f.close()
def save(self, filename, overwrite=True): def save(self, filename, overwrite=True):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment