Files
hms-mediaengine/tests/conftest.py
T
HMS MediaEngine Agent 2b1e6af6c0 Phase 7: Audio-Analyse und Mapping-Engine (§20)
- AudioFeatures: Peak, RMS, FFT-Spektrum, Bass/Low-Mid/Mid/High-Mid/
  Treble, Spectral Flux, Beat, BPM, Beat-Phase, Confidence,
  Stilleerkennung; timestamped mit monotoner Zeitbasis (§20.2, §20.3)
- BeatDetector: adaptiver Schwellwert ueber Flux-Fenster, Mindestabstand,
  BPM-Median ueber Inter-Beat-Intervalle, Sentinel-Fix fuer ersten Beat
- RingBuffer: begrenzter Kreisring statt unkontrollierter Queues (§20.3,
  §33)
- AudioBinding (§20.4): Gate/Threshold, Normalisierung, Gain, Kurve
  (linear/quadratic/cubic/exponential), Attack/Release, Min/Max
- Modulatoren ohne Audio (§20.5): LFO Sine/Triangle/Saw/Square,
  Random mit Seed (deterministisch), Step Sequencer BPM-synchron
- ModulatorEngine: verwaltet Audio-Bindings und Modulatoren;
  Ergebnisse ueber Parameter-Engine mit AUDIO-Prioritaet 6 (§11.2)
- 29 Unit-Tests: RMS/Peak, RingBuffer-Kapazitaet, FFT-Peak-Frequenz,
  Band-Energie, Flux, BPM-Recovery (120 BPM), Min-Interval,
  Silent-Tone-Analyse, Kurven, Binding-Pipeline, LFO-Periodizitaet,
  Random-Seed-Determinismus, Sequencer-Cycling
- Gesamtsuite 586 gruen, Ruff gruen
2026-09-11 03:19:38 +02:00

38 lines
933 B
Python

"""Test-Pfad-Setup: macht alle hms_*-Pakete ohne Installation importierbar.
Eigentumsgrenzen bleiben gewahrt: jede Testsuite importiert nur die
Pakete, die sie prüft; Quereinbau zwischen packages/* bleibt verboten.
"""
from __future__ import annotations
import sys
from pathlib import Path
REPO = Path(__file__).resolve().parents[1]
_PACKAGE_DIRS = [
"packages/protocol",
"packages/domain",
"packages/parameter_engine",
"packages/artnet",
"packages/adaptive_quality",
"packages/capabilities",
"packages/plugin_sdk",
"packages/persistence",
"packages/cluster",
"packages/media",
"packages/content_sync",
"packages/audio_analysis",
"apps/renderer",
"apps/control_server",
"apps/launcher",
"tools/fixture_generator",
"tools/artnet_emulator",
]
for _sub in _PACKAGE_DIRS:
_dir = str(REPO / _sub)
if _dir not in sys.path:
sys.path.insert(0, _dir)