No description
  • Python 51.5%
  • JavaScript 46%
  • CSS 2.5%
Find a file
2026-10-25 13:04:04 +01:00
mixengine Stand vom 2026-10-25 2026-10-25 13:04:04 +01:00
tests Stand vom 2026-10-25 2026-10-25 13:04:04 +01:00
web Stand vom 2026-10-25 2026-10-25 13:04:04 +01:00
.gitignore Stand vom 2026-10-25 2026-10-25 13:04:04 +01:00
COPYRIGHT Stand vom 2026-10-25 2026-10-25 13:04:04 +01:00
LICENSE Stand vom 2026-10-25 2026-10-25 13:04:04 +01:00
pyproject.toml Stand vom 2026-10-25 2026-10-25 13:04:04 +01:00
README.md Stand vom 2026-10-25 2026-10-25 13:04:04 +01:00

mixengine

DJ-Mix-Engine (Beatgrid, Zeitkarten, Keylock/Vinyl, EQ/Filter, Rendern) -- herausgelöst aus dem Playlist-Manager (airsonic-playlists) für den gemeinsamen Gebrauch mit dem Bot-Pult (Mixing Unit 9000 im Mumble-Bot).

import mixengine
mixengine.configure(sr=48000)   # Standard 44100; Mumble/Opus braucht 48000

configure() stellt die Rate für den ganzen Prozess um (eine Modulvariable). Darum immer mixer.SR / dj.SR lesen, nie from mixengine.mixer import SR -- das friert den Wert zum Importzeitpunkt ein. Die Analyse-Rate dj.A_SR bleibt fest bei 11025.

Was nur der Playlist-Manager braucht (MP3-Album rendern, Einstellungen als JSON ablegen), liegt dort in mix_export.py, nicht hier.

Tests

python3 -m pytest tests/ -q      # gut 2 Minuten, braucht ffmpeg und rubberband

Alles synthetisch (tests/synth.py, Klicks, Sinus), bei 44,1 und 48 kHz: Raster-Erkennung (test_grid), Schlaglagen nach Keylock/Vinyl und ihre Deckung in der Überlappung (test_beats, ±1 ms), Nähte im Titel und zwischen den Dateien (test_seams), EQ/Filter (test_fx), Ausklang mit Echo/Hall (test_fx_tail). Die Docstrings nennen die gemessenen Werte und bekannte Befunde.

Das Python-Paket heißt mixengine (Import: import mixengine), nur das Repo trägt den Namen mumblemixer.

Als git submodule vendor/mixengine eingebunden in airsonic-playlists (ersetzt dessen frühere dj.py/mixer.py). Das Bot-Pult bindet es genauso ein, sobald es gebaut wird (Plan, Etappe 2/3) -- der Bot selbst braucht die Engine nicht, er spielt nur fertige Stücke.