period_finder_ms hack

period-finder-ms
nyanpasu64 2024-02-09 18:30:43 -08:00
rodzic 52a395c0cc
commit 10677e5c84
2 zmienionych plików z 20 dodań i 5 usunięć

Wyświetl plik

@ -43,6 +43,8 @@ class ChannelConfig(DumpableAttrs):
line_color: Optional[str] = None
color_by_pitch: Optional[bool] = None
period_finder_ms: Optional[int] = None
# region Legacy Fields
trigger_width_ratio = Alias("trigger_width")
render_width_ratio = Alias("render_width")
@ -132,6 +134,7 @@ class Channel:
stride=self._trigger_stride,
fps=corr_cfg.fps,
wave_idx=channel_idx,
period_finder_ms=cfg.period_finder_ms,
)
def get_render_around(self, trigger_sample: int):

Wyświetl plik

@ -109,6 +109,7 @@ class _Trigger(ABC, Generic[result]):
fps: float,
renderer: Optional["RendererFrontend"] = None,
wave_idx: int = 0,
period_finder_ms: Optional[int] = None,
):
self.cfg = cfg
self._wave = wave
@ -129,6 +130,13 @@ class _Trigger(ABC, Generic[result]):
# Full samples per frame
self._smp_per_frame = self.seconds_to_samp(seconds_per_frame)
if period_finder_ms:
self._period_finder_subsmp = round(
period_finder_ms / 1000 * self.subsmp_per_s
)
else:
self._period_finder_subsmp = None
def seconds_to_samp(self, time: float) -> int:
return round(time * self._wave.smp_s)
@ -483,14 +491,18 @@ class CorrelationTrigger(MainTrigger):
# Remove mean from data, if enabled.
mean = np.add.reduce(data) / data.size
period_data = data - mean
# print("self._period_finder_subsmp", self._period_finder_subsmp)
if self._period_finder_subsmp:
period_data = self._wave.get_around(pos, self._period_finder_subsmp, stride)
elif cfg.mean_responsiveness == 1:
period_data = data # mutated below!!!!!!
else:
period_data = data - mean
if cfg.mean_responsiveness:
self._prev_mean += cfg.mean_responsiveness * (mean - self._prev_mean)
if cfg.mean_responsiveness != 1:
data -= self._prev_mean
else:
data = period_data
data -= self._prev_mean
cache.smoothed_mean = self._prev_mean
# Use period to recompute slope finder (if enabled) and restrict trigger