Analyse · Komposition — Open-Source-CLI, Python

Die DNA eines Tracks.
Neu komponiert.

Echoform extrahiert die Stil-DNA eines Audio-Tracks — BPM, Tonart, Akkordfunktionen, Drum-Grammatik, Struktur, Timbre — und komponiert daraus einen eigenständigen neuen Track. Gleicher Stil, anderes Material: Kopierschutz ist keine Absichtserklärung, sondern wird technisch erzwungen.

trackdna.json 123.0 BPM · A minor · 4/4
genre minimal techno .43 vocals nein progression i – VI – VII – i
energie ▃▅▆█▇█▆▄ hamming ≥ 25 % ✓  ·  n-gramm ✓

Pipeline

Vier Befehle vom Track zum Track

Jeder Schritt ist einzeln nutzbar — echoform full fährt alle vier mit bis zu drei automatischen Nachbesserungs-Iterationen.

echoform analyze

Stil-DNA extrahieren

Demucs trennt Stems, dann lesen Analyzer BPM & Beat-Grid, Tonart & Akkordfunktionen, Drum-Pattern im 16tel-Raster, Segmente & Energie-Verlauf, CLAP-Genre-Tags.

→ trackdna.json + report.md
echoform generate

Neu komponieren

Regelbasiert und seed-deterministisch: Drum-Grammatik, Markov-Harmonik in gleicher Tonart, Melodie-Random-Walk mit der Kontur-Statistik des Originals.

→ song.mid + generation_log.md
echoform render

Hörbar machen

FluidSynth rendert Mixdown und optional Stems; der DAW-Ordner mit Einzelspur-MIDIs und Segment-Markern entsteht immer — direkt in Ableton weiterbauen.

→ mixdown.wav + daw/
echoform compare

Beweisen statt behaupten

Misst Stil-Nähe (BPM, Key, Struktur-DTW, CLAP-Cosine) gegen Material-Identität (Chroma-Kreuzkorrelation, N-Gramm-Overlap) — zwei Scores, klare Ziele.

→ compare.json + Score-Report

Anti-Kopier-Constraints

Kein Sample. Kein Zitat. Nachweisbar.

Echoform übernimmt niemals Audio, Samples oder Melodie-Sequenzen. Es lernt abstrakte Merkmale — und erzwingt die Eigenständigkeit des Generats mit harten, geloggten Schranken:

≥ 25 %

Hamming-Distanz der Drum-Patterns

Jedes generierte Pattern muss sich pro Instrument in mindestens einem Viertel der 16tel-Steps vom Original unterscheiden — wird beim Sampling erzwungen.

0 × 4-Gramm

N-Gramm-Negativcheck der Melodie

Kein 4-Noten-Fenster (Intervalle + Dauern) darf identisch aus der Original-Transkription stammen. Kollisionen werden lokal neu gewürfelt und protokolliert.

XCorr ↓

Chroma-Kreuzkorrelation im Report

Der Vergleich sucht aktiv nach kopiertem Material über alle Zeit-Verschiebungen — und weist die Unähnlichkeit im Score-Report aus.

Stil-Nähe (soll hoch)
77 %
Material-Identität (soll niedrig)
12 %
Gemessener echoform full-Lauf auf dem synthetischen Referenz-Track der Test-Suite: BPM-Match 100 %, Key-Match Relativ-Tonart, CLAP-Cosine 0.68 — Ziel in Iteration 1 erreicht.

Hörprobe

Original-Referenz vs. Generat

Der 8-Takte-Referenz-Track aus der Test-Suite (synthetisch, 124 BPM, A minor) und das daraus komponierte 32-Takte-Generat — GM-SoundFont-Rendering, gedacht als Kompositions-Rohling für die DAW, nicht als fertige Produktion.

■ ORIGINAL — Referenz-Fixture

8 Takte · Four-on-the-floor · i–VI–VII–i

■ GENERAT — echoform full, Seed 42

32 Takte · gleiche DNA, anderes Material · Hamming 25 %

Beide Dateien stammen unverändert aus dem End-to-End-Testlauf des Repos.

Quickstart

In drei Minuten zum ersten Generat

# Voraussetzungen (macOS) — ffmpeg fürs Dekodieren, fluid-synth fürs Rendering
brew install uv ffmpeg fluid-synth

git clone https://github.com/pepperonas/echoform.git && cd echoform
uv sync

# Kompletter Lauf: analyze → generate → render → compare
uv run echoform full dein-track.mp3

# Oder gezielt, z.B. mit festem Seed und 64 Takten
uv run echoform generate report/trackdna.json --seed 42 --bars 64 --variation 0.4
Python 3.11librosaDemucs htdemucsbasic-pitchLAION-CLAPpretty_midiFluidSynthpydantic v2typer + rich72 Tests · CI