kopia lustrzana https://github.com/corrscope/corrscope
period_finder_ms hack
rodzic
52a395c0cc
commit
10677e5c84
|
@ -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):
|
||||
|
|
|
@ -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
|
||||
|
|
Ładowanie…
Reference in New Issue