Skip to content

Roadmap

Alexander Refsum Jensenius edited this page Jul 18, 2026 · 10 revisions

Moved from the README so it can evolve without commits. Roughly ordered.

Near term

  • State-resolved descriptors (v0.8.0) — ambiscape resolve / resolve.machine_states / diel_states slice a multi-state session by machine band or wall clock and run the full summary on each state (states.json), so a drone night and a quiet morning stop averaging into one number.
  • Standard ratings & global indices (v0.5.0) — NR/NC/RC room criteria, intermittency ratio + emergence, the ecoacoustic battery (ACI, ADI/AEI, NDSI, BI, entropy H), EDT/C50/C80/D50, and spatial descriptors (directional entropy, horizon fractions, fg/bg direction overlap) appended to every analyze summary.
  • Catalog aggregation (v0.7.0) — ambiscape catalog collects all summary.json files in a corpus into one CSV + transposed Markdown table, with rank/outliers helpers for cross-session statistics.
  • Tests + CI — 26 pytest tests over a synthetic AmbiX fixture (BWF writer, plane waves, diffuse noise, phase-locked synthetic swinging bells); GitHub Actions on Python 3.10/3.12 (v0.2.0).

Analysis modules

  • Cyclic-machine detector — landed in v0.3.0 as the states module (band_level, state_segments, switch_points, duty_cycle) plus background.source_fingerprint for the on-state spectrum. Field validation: the Haarlem-loft case study (air-pump night states, fridge ~24 min duty cycle).
  • Tonal-event finder — landed as the rhythm module (strike detection from partial envelopes, point-process periodicity, phase clusters, repetition-vs-variation stats). Civic-schedule matching landed in v0.3.0 as schedule.grid_scan (targeted per-tick scans) alongside schedule.match_periods.
  • Wind/handling detector for outdoor takes (LF coherence between channels is the usual tell).
  • Environmental-rhythm metric — a defensible single figure (or small vector) built from envelope power spectra at minute-to-hour scales, duty cycles, and state-alternation periods. Research question as much as feature.
  • Longitudinal / seasonal analysis (v0.10.0) — longitudinal module: trend + seasonal decomposition of dated session summaries across weeks/months/a year (the year-in-one-room path is many daily sessions → 365 tiny rows → inherently out-of-core).
  • Per-file scene mode (v0.10.0) — io.open_recording and ambiscape scenes <folder> for contributed corpora organized as independent recordings rather than folder-sessions (validated on the 41-scene Transcontinental set: all descriptors physically sensible).

Interop

  • AEM export adapter — write ambiviz-compatible AEM .npz for a selected excerpt so the hand-off needs no glue code.
  • BirdNET hook (v0.6.0) — species-level biophony on hi-fi windows (ml.birdnet_session, gated by diffuseness), optional [ml] companion to PANNs, plus a cache-based biophony module (narrowband activity, temporal entropy, band activity, spatial dispersion) for corpus-wide structural biophony without ML.
  • CLAP zero-shot search — free-text queries ("compressor hum", "door slam") across a corpus's cached features/excerpts.

Publishing

  • PyPI (v0.2.0, trusted publishing)
  • Documentation site (MkDocs → GitHub Pages)
  • Zenodo DOI per release (GitHub–Zenodo integration)
  • JOSS or similar software paper once tests + state-resolution land

Clone this wiki locally