diff --git a/python_payload/bl00mbox/_patches.py b/python_payload/bl00mbox/_patches.py index 71d69ca90ba1873e1e2acc0caf55fcaa654cf6be..6b8bf13d0aa2f6477c659a77f5b3d9f4e602b3f6 100644 --- a/python_payload/bl00mbox/_patches.py +++ b/python_payload/bl00mbox/_patches.py @@ -166,7 +166,7 @@ class sampler(_Patch): # somewhat fast path for stereo table = self.plugins.sampler.table_int16_array for i in range( - self.buffer_offset_16, self.memory_len + self.buffer_offset_i16 + self.buffer_offset_i16, self.memory_len + self.buffer_offset_i16 ): frame = f.readframes(1) value = int.from_bytes(frame[0:2], "little") @@ -183,7 +183,7 @@ class sampler(_Patch): return False f = wave.open(self._convert_filename(filename), "w") for i in range(self.sample_len): - data = self.plugins.sampler.table[_offset_index(i)] + data = self.plugins.sampler.table[self._offset_index(i)] # TODO: figure out python bytes # note: index wraps around, ringbuffer! # f.writeframesraw??? @@ -226,6 +226,8 @@ class sampler(_Patch): @read_head_position.setter def read_head_position(self, val): + if val >= self.memory_len: + val = self.memory_len - 1 self._encode_uint32(0, val) @property @@ -234,6 +236,8 @@ class sampler(_Patch): @sample_start.setter def sample_start(self, val): + if val >= self.memory_len: + val = self.memory_len - 1 self._encode_uint32(2, val) @property @@ -242,6 +246,8 @@ class sampler(_Patch): @sample_len.setter def sample_len(self, val): + if val > self.memory_len: + val = self.memory_len self._encode_uint32(4, val) @property