From b6f82a0598efef89e752a6875ac320c79d0e0c4f Mon Sep 17 00:00:00 2001
From: moon2 <moon2protonmail@protonmail>
Date: Fri, 18 Aug 2023 18:19:50 +0200
Subject: [PATCH] more offset fixes sorrysorrysorry
---
python_payload/bl00mbox/_patches.py | 21 ++++++++++++++++-----
1 file changed, 16 insertions(+), 5 deletions(-)
diff --git a/python_payload/bl00mbox/_patches.py b/python_payload/bl00mbox/_patches.py
index ba23547eb8..71d69ca90b 100644
--- a/python_payload/bl00mbox/_patches.py
+++ b/python_payload/bl00mbox/_patches.py
@@ -107,6 +107,7 @@ class sampler(_Patch):
def __init__(self, chan, init_var):
# init can be filename to load into ram
super().__init__(chan)
+ self.buffer_offset_i16 = 7
self._filename = ""
if type(init_var) == str:
filename = init_var
@@ -155,15 +156,21 @@ class sampler(_Patch):
if f.getnchannels() == 1:
# fast path for mono
table = self.plugins.sampler.table_bytearray
- for i in range(0, self.memory_len * 2, 100):
- table[i + 7: i + 107] = f.readframes(50)
+ for i in range(
+ 2 * self.buffer_offset_i16,
+ (self.memory_len + self.buffer_offset_i16) * 2,
+ 100,
+ ):
+ table[i : i + 100] = f.readframes(50)
else:
# somewhat fast path for stereo
table = self.plugins.sampler.table_int16_array
- for i in range(self._len_frames):
+ for i in range(
+ self.buffer_offset_16, self.memory_len + self.buffer_offset_i16
+ ):
frame = f.readframes(1)
value = int.from_bytes(frame[0:2], "little")
- table[i+7] = value
+ table[i] = value
f.close()
def save(self, filename, overwrite=True):
@@ -187,7 +194,7 @@ class sampler(_Patch):
index += self.sample_start
if index >= self.memory_len:
index -= self.memory_len
- index += 7
+ index += self.buffer_offset_i16
return index
@property
@@ -243,6 +250,10 @@ class sampler(_Patch):
@property
def rec_event_autoclear(self):
+ """
+ returns true once after a record cycle has been completed. useful for checking whether a save is necessary if nothing else has modified the table.
+ """
+
if self.plugins.sampler_table[6]:
self.plugins.sampler_table[6] = 0
return True
--
GitLab