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