fix is_beat forwarding

This commit is contained in:
Patrick Moessler 2023-02-22 23:36:08 +01:00
parent f7691f2545
commit 5730142d67
2 changed files with 10 additions and 26 deletions

View file

@ -59,31 +59,14 @@ class AudioProcess:
self.thread.join() self.thread.join()
def pyaudio_callback(self, _in_data, _frame_count, _time_info, _status): def pyaudio_callback(self, _in_data, _frame_count, _time_info, _status):
# samples, read = _in_data, _frame_count
# audio_data = np.fromstring(in_data, dtype=np.float32)
samples = np.fromstring(_in_data, dtype=np.float32, count=_frame_count) samples = np.fromstring(_in_data, dtype=np.float32, count=_frame_count)
read = _frame_count read = _frame_count
is_beat = self.tempo(samples) is_beat = self.tempo(samples)
if is_beat: if is_beat:
with self.lock: with self.lock:
# print(self.tempo.get)
self.is_beat = True self.is_beat = True
# samples += click
# print("tick") # avoid print in audio callback
audiobuf = samples.tobytes() audiobuf = samples.tobytes()
if read < self.hop_s: if read < self.hop_s:
return (audiobuf, pa.paComplete) return (audiobuf, pa.paComplete)
return (audiobuf, pa.paContinue) return (audiobuf, pa.paContinue)
# self.stop = False
# self.thread = threading.Thread(name="AudioProcess", target=self.process)
# self.thread.start()
# def process(self):
# while not self.stop:
# samples = self.dev.record(self.hop_s, self.rate, 2)
# mono = samples.sum(axis=1)
# is_beat = self.tempo(samples)
# if is_beat:

View file

@ -23,8 +23,10 @@ def transform_bounce(
current_x_factor = random.uniform(x_factor[0], x_factor[1]) current_x_factor = random.uniform(x_factor[0], x_factor[1])
current_y_factor = random.uniform(y_factor[0], y_factor[1]) current_y_factor = random.uniform(y_factor[0], y_factor[1])
(size_x, size_y), is_beat = yield (bounds.centerx, bounds.centery) pos_x = bounds.centerx
pos_y = bounds.centery
while True: while True:
(size_x, size_y), is_beat = yield (pos_x, pos_y)
pos_x = int( pos_x = int(
math.cos(current_x_factor * phase) * (bounds.width - size_x) // 2 math.cos(current_x_factor * phase) * (bounds.width - size_x) // 2
+ bounds.centerx + bounds.centerx
@ -37,7 +39,6 @@ def transform_bounce(
phase += current_velocity / 180 * math.pi phase += current_velocity / 180 * math.pi
if on_beat_random_phase and is_beat: if on_beat_random_phase and is_beat:
phase += random.randrange(0, 360) phase += random.randrange(0, 360)
(size_x, size_y), _ = yield (pos_x, pos_y)
def transform_oscillate( def transform_oscillate(
@ -49,9 +50,12 @@ def transform_oscillate(
pos_y = float(initial_pos[1] if initial_pos[1] > 0 else bounds.top) pos_y = float(initial_pos[1] if initial_pos[1] > 0 else bounds.top)
direction = "+" direction = "+"
(size_x, size_y), _ = yield (bounds.left, bounds.top) pos_x = bounds.left
pos_y = bounds.top
while True: while True:
(size_x, size_y), _ = yield (int(pos_x), int(pos_y))
range_x = bounds.width - size_x range_x = bounds.width - size_x
range_y = bounds.height - size_y range_y = bounds.height - size_y
@ -72,8 +76,6 @@ def transform_oscillate(
elif (inc_x and (pos_x < inc_x)) or (inc_y and (pos_y < inc_y)): elif (inc_x and (pos_x < inc_x)) or (inc_y and (pos_y < inc_y)):
direction = "+" direction = "+"
(size_x, size_y), _ = yield (int(pos_x), int(pos_y))
def transform_falling( def transform_falling(
bounds: pg.Rect, bounds: pg.Rect,
@ -85,11 +87,12 @@ def transform_falling(
pos_x = float(initial_pos[0]) pos_x = float(initial_pos[0])
pos_y = float(initial_pos[1]) pos_y = float(initial_pos[1])
(_, size_y), is_beat = yield (bounds.left, bounds.top)
velocity = initial_velocity velocity = initial_velocity
pos_x = bounds.left
pos_y = bounds.top
while True: while True:
(_, size_y), is_beat = yield (int(pos_x), int(pos_y))
range_y = bounds.height - size_y range_y = bounds.height - size_y
pos_y += velocity pos_y += velocity
@ -98,5 +101,3 @@ def transform_falling(
if (pos_y > range_y) or (on_beat_reset and is_beat): if (pos_y > range_y) or (on_beat_reset and is_beat):
pos_y = initial_pos[1] pos_y = initial_pos[1]
velocity = initial_velocity velocity = initial_velocity
(_, size_y), is_beat = yield (int(pos_x), int(pos_y))