def template_config(**kwargs) -> Config: """Default template values do NOT indicate optional attributes.""" cfg = Config( master_audio="", fps=_FPS, amplification=1, trigger_ms=40, render_ms=40, trigger_subsampling=1, render_subsampling=2, trigger=CorrelationTriggerConfig( mean_responsiveness=0.0, edge_strength=1.0, reset_below=0.3, responsiveness=0.5, pitch_tracking=SpectrumConfig(), # post_trigger=ZeroCrossingTriggerConfig(), ), channels=[], layout=LayoutConfig(orientation="v", ncols=1), render=RendererConfig( 1280, 720, res_divisor=4 / 3, grid_color="#55aaff", v_midline=True, h_midline=True, ), ) return attr.evolve(cfg, **kwargs)
def trigger__pitch_tracking(self, gui: bool): scfg = SpectrumConfig() if gui else None self.cfg.trigger.pitch_tracking = scfg
parametrize = pytest.mark.parametrize triggers.SHOW_TRIGGER = False def trigger_template(**kwargs) -> CorrelationTriggerConfig: cfg = CorrelationTriggerConfig(edge_strength=2, responsiveness=1, buffer_falloff=0.5) return attr.evolve(cfg, **kwargs) @fixture @parametrize("trigger_diameter", [None, 0.5]) @parametrize("pitch_tracking", [None, SpectrumConfig()]) @parametrize("slope_strength", [0, 100]) @parametrize("sign_strength", [0, 1]) def trigger_cfg(trigger_diameter, pitch_tracking, slope_strength, sign_strength) -> CorrelationTriggerConfig: return trigger_template( trigger_diameter=trigger_diameter, pitch_tracking=pitch_tracking, slope_strength=slope_strength, sign_strength=sign_strength, slope_width=0.14, ) FPS = 60