Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
70 commits
Select commit Hold shift + click to select a range
0ac7e72
docs: research Traktor reference, API landscape and agent concept
claude Aug 11, 2026
949613f
feat: native Rust audio core with one working deck
claude Aug 11, 2026
fe1d074
docs: record non-commercial decision and its license consequences
claude Aug 11, 2026
a2ece89
docs: note personal-use-only status, no LICENSE file needed
claude Aug 11, 2026
2811dcd
docs: add full build plan for the DJ software
claude Aug 11, 2026
a85aaad
feat: offline analysis for tempo, beatgrid and waveform peaks
claude Aug 11, 2026
2ef5b67
docs: assess integration with VibeMind
claude Aug 11, 2026
8ead61c
docs: align README with the VibeMind license finding
claude Aug 11, 2026
ec6e023
feat: mixer engine with channel strips, cue bus and AUX input
claude Aug 11, 2026
09202bf
feat: sync, hot cues, loops and the library with Traktor import
claude Aug 11, 2026
2634bd5
fix(analysis): judge tempo by z-score instead of peak-to-mean ratio
claude Aug 12, 2026
b656635
feat(audio-engine): command queue and device output
claude Aug 12, 2026
fd2c0c5
feat(app): DJ interface with decks, mixer and crate browser
claude Aug 12, 2026
80acc08
docs: assess Mixxx as a reference
claude Aug 12, 2026
b07a58e
feat(control): named, self-describing control surface with remote access
claude Aug 12, 2026
3bbb2e0
feat(control): actions, subscriptions and loading from outside
claude Aug 13, 2026
e0f67ad
feat(engine): four effects, post-fader and tempo-synced
claude Aug 13, 2026
4efae4e
feat(engine): record the master bus to WAV
claude Aug 13, 2026
1627e85
fix(engine): do not discard the start of a recording
claude Aug 13, 2026
3d42273
feat(mcp): MCP bridge with tool descriptions generated from the catal…
claude Aug 13, 2026
f9781a6
feat(analysis): Tonart erkennen und harmonisch suchen
claude Aug 13, 2026
24386c2
fix(analysis): Tonart-Schwelle an echten Aufnahmen nacheichen
claude Aug 13, 2026
8476d8c
feat(library): Hot Cues und Beatgrid überleben den Trackwechsel
claude Aug 15, 2026
99256c8
feat(control): Beatgrid von Hand korrigieren
claude Aug 15, 2026
b79f1dd
feat(control): Zeitplan auf dem Beatgrid — Rampen und vorgemerkte Bef…
claude Aug 15, 2026
e316798
feat(mcp): Zeitplan über die Agenten-Brücke erreichbar
claude Aug 15, 2026
6683de1
feat(control): Warteschlange — was als Nächstes kommt
claude Aug 15, 2026
0384e3e
feat(app): Regie-Spalte — der Mensch sieht, was die Agenten vorhaben
claude Aug 16, 2026
dfa671d
feat(control): sobald es so weit ist — Bedingungen statt Zahlenfluten
claude Aug 16, 2026
6eee652
feat(control): was von außen hereinkommt — Signale mit Verlauf
claude Aug 16, 2026
91bb4a2
feat(cli): den Kopfhörer-Bus hörbar machen, ohne Gerät
claude Aug 17, 2026
1d08fb0
docs(analysis): Tempo-Erkennung erstmals an echter Musik nachgemessen
claude Aug 17, 2026
1358760
fix(deck): ein stehendes Deck meldet, wo es steht
claude Aug 17, 2026
4611759
docs: Plan für einen AI-DJ, der nicht herzlos klingt
claude Aug 17, 2026
379116c
feat(control): auf der nächsten Eins — Phrasenbezug für `in`
claude Aug 17, 2026
768fb88
feat(cli): musik-kritik — der Mitschnitt wird gelesen, nicht nur gesc…
claude Aug 17, 2026
33f57df
feat(control): die Mitschrift — was gemeint war, neben dem was herauskam
claude Aug 17, 2026
f49bb02
feat(analysis): Gliederung — Intro, Aufbau, Drop, Break, Outro
claude Aug 17, 2026
48c2f6c
feat(control): die Gliederung im Steuerraum — wo im Track das Deck steht
claude Aug 17, 2026
02e9d66
docs: Fahrplan für alles, was noch aussteht
claude Aug 17, 2026
ced97ed
feat(cli): musik-pruefstand — die Analyse gegen das, was ein Mensch hört
claude Aug 17, 2026
04cb36e
feat(control): Ereignisse — wer den Regler verliert, erfährt es
claude Aug 17, 2026
d36ce30
feat(control): Formen für Rampen — dieselbe Strecke, andere Wirkung
claude Aug 18, 2026
dfa0249
feat(control): ein Repertoire statt eines Handgriffs
claude Aug 18, 2026
6fd2358
feat(control): der Bogen — was das Set vorhat, bevor gewählt wird
claude Aug 18, 2026
6b5f90c
feat(control): Zurückhaltung — ob immer dasselbe gefahren wird
claude Aug 18, 2026
10b3e9d
feat(control): der Raum steuert Bogen und Auswahl
claude Aug 18, 2026
5fd4d53
fix(audio-engine): Stopp und Start ohne Pause landen in zwei Dateien
claude Aug 18, 2026
17abfb1
feat(control): der fünfte Griff — Schleifen-Ausstieg
claude Aug 18, 2026
87e681b
feat(audio-core): Einzelspuren — die Stimme wegnehmen
claude Aug 18, 2026
4e91ba5
fix(control): drei Griffe hintereinander statt einem
claude Aug 18, 2026
c4dc44e
fix(app): ein frisch geladenes Deck steht auf dem ersten Downbeat
claude Aug 18, 2026
6b9fbe3
fix(control): ein durchgelaufener Track bricht seinen Plan ab
claude Aug 18, 2026
465375e
docs: ein Set, das sich selbst weiterträgt
claude Aug 18, 2026
d7be774
fix(analysis): vier Drops dürfen vier Drops sein
claude Aug 20, 2026
7264a7a
fix(audio-engine): der Ring wird nur bis zur Grenze geleert
Aug 25, 2026
e2eb78f
docs(analysis): eine Untergrenze weist nicht ab, sie meldet falsch (N1)
Aug 25, 2026
d6e6e32
style: as_chunks statt chunks_exact mit fester Größe
Aug 25, 2026
e85957e
refactor(analysis): die Schätzung aus dem Klang bekommt ein eigenes M…
Aug 25, 2026
3a9cff6
feat(cli): musik-streuung — der Kritiker gegen die Anlage (N3)
Aug 25, 2026
af0f3bb
feat(cli): musik-schneiden — aus einer langen Aufnahme werden Lieder
Aug 25, 2026
d5501ab
feat(engine): der AUX-Kanal bekommt einen Zuspieler
Aug 25, 2026
a8c578a
feat(cli): musik-eingang schreibt die Quelle mit, am Mixer vorbei
Aug 25, 2026
f6e5973
feat(control): Steuerung über die Rückschleife, für Rechner ohne Sockets
Sep 2, 2026
9aa9386
docs: der Weg zum VibeMind-Space, und was der Anlage dorthin fehlt
Sep 3, 2026
1dbaa0d
docs: drei Spezifikationen — Freigabe, Space, Generator
Sep 3, 2026
7d9582f
feat(mcp): das Freigabe-Gatter, nach docs/FREIGABE.md
Sep 3, 2026
dbff541
refactor(mcp): die Brücke wird ein Paket — und nimmt beide SDK-Genera…
Sep 3, 2026
77df25e
docs: warum der Manifest-Eintrag auf den Merge wartet
Sep 3, 2026
bf3193c
fix(kritik): der Pegelbericht las eine Sekunde als zwei
claude Sep 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 28 additions & 0 deletions .env.example
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
# Kopie als .env anlegen und ausfüllen. .env ist in .gitignore — Keys gehören
# niemals ins Repo.

# --- Musikgenerierung ---------------------------------------------------

# ElevenLabs Music — vorgesehener Startadapter (siehe docs/APIS.md)
ELEVENLABS_API_KEY=

# Suno — aktuell KEINE öffentliche API verfügbar (Stand August 2026).
# Platzhalter für den Fall, dass die Bewerbung beim Partner-Programm
# durchgeht. Bis dahin leer lassen.
SUNO_API_KEY=

# Stable Audio (Stability AI) — Alternative für instrumentale Texturen
STABILITY_API_KEY=

# --- Samples ------------------------------------------------------------

# Freesound APIv2 — kostenlos für nicht-kommerzielle Nutzung
FREESOUND_API_KEY=

# --- Lokale Pfade -------------------------------------------------------

# Wohin generierte Tracks geschrieben werden
GENERATED_DIR=./generated

# Bestehende Traktor-Sammlung für den Import (docs/TRAKTOR-REFERENZ.md)
# TRAKTOR_COLLECTION_PATH=
45 changes: 45 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
name: CI

on:
push:
branches: [main]
pull_request:

env:
CARGO_TERM_COLOR: always

jobs:
check:
name: fmt, clippy, tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

# CPAL bindet unter Linux gegen ALSA.
- name: ALSA-Header installieren
run: |
sudo apt-get update
sudo apt-get install -y libasound2-dev

- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy

- uses: Swatinem/rust-cache@v2

- name: Formatierung
run: cargo fmt --all -- --check

- name: Clippy
run: cargo clippy --all-targets -- -D warnings

- name: Tests
run: cargo test --all

# Das Freigabe-Gatter ist Python und braucht keine laufende Anlage —
# geprüft wird das Gatter, nicht die Anwendung. Ohne diesen Schritt wären
# seine Wächter Dekoration: Sie liefen nur, wenn jemand daran denkt.
- name: Freigabe-Gatter
run: |
python3 -m pip install --quiet pytest
python3 -m pytest -q mcp/musik/tests/test_freigabe.py
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,12 @@
.env.*
!.env.example

# Rust — Cargo.lock wird bewusst eingecheckt (Anwendung, keine Bibliothek)
/target/

# Analyse-Sidecars (aus dem Audio reproduzierbar)
.musik-analyse/

# Node
node_modules/
dist/
Expand Down
Loading
Loading