Hört Musik mit und zeigt live Tempo, Tonart und Akkorde an – und liefert dazu eine stabile MIDI-Clock, die Drumcomputer, Sequenzer, Arpeggiatoren und Delays synchron zum laufenden Song taktet. Zusätzlich gibt es noch zahlreiche andere Features wie z.B. die Erstellung von Songsheets oder Stems aus Audiodateien, Karaoke Versionen für Bandhelper und die Erstellung fertiger Songs für den Synthstom Deluge.

Als Quelle dient wahlweise ein Audio-Eingang (Mikrofon/Line-In) oder unter Windows direkt die Wiedergabe selbst (WASAPI-Loopback) – also z. B. das, was gerade in Spotify läuft. Auf dem Raspberry Pi übernehmen die PipeWire/Pulse-„Monitor“-Quellen dieselbe Rolle und erscheinen als normale Eingänge; unter macOS leistet das ein virtuelles Ausgabegerät wie BlackHole.
| Bereich | Was es tut |
|---|---|
| Live-Analyse | Tempo (BPM), Tonart und Akkorde aus Mikrofon/Line-In oder der laufenden Wiedergabe (Loopback). |
| MIDI-Clock | Driftfreie 24-PPQN-Clock zum Song; optional beat-synchron. |
| Noten/Akkorde → MIDI | Erkannte Tonhöhen live als MIDI senden (mono/poly/Akkord). |
| Datei → MIDI-Clock | Audiodatei mit driftfreier Clock abspielen, mit ▶ Start / ■ Stopp. |
| Stems | Gesang/Bass/Drums/Rest lokal trennen (Demucs) – exportieren oder abspielen. |
| Play-Along-Mix | Instrumente aus dem Gesamtmix ausblenden (Bass/Drums/Rest/Gesang beliebig): die übrigen Stems werden wieder zu einer Datei gemischt – z. B. ohne Gesang = Karaoke, ohne Bass = Übe-Playback. Als MP3 (320 kbit/s) oder WAV. Optional mit BandHelper-Automation (Karaoke-Zeilenmarkierung passend zur Aufnahme) + ChordPro-Zip. |
| Song-Sheet | Gesangstext + Akkorde im Ultimate-Guitar-Stil (lokal, Whisper + Forced Alignment); optional Online-Abgleich (Song identifizieren, unsichere Text-/Akkord-Stellen gewichtet gegen Internet-Referenzen korrigieren). |
| Stems → MIDI | Bass/Rest/Gesang via Basic Pitch nach MIDI, je Kanal; optional MIDI-Clock mitsenden; als .mid speichern. |
| Schlagzeug → MIDI | Drums in Kick/Snare/HiHat (+ optional Tom/Crash) zerlegen, Note je Komponente frei wählbar; Standard GM-Drum-Map auf Kanal 10. |
| MIDI-Datei laden | Eine .mid spurweise (an/aus + Kanal) über den MIDI-Ausgang abspielen. |
| Deluge-Song (Bundle) | Synthstrom-Deluge-Songdatei (.XML) aus Stems + MIDI: ausgerichtete Audio-Spuren parallel zu internen Synths/Kit, gemeinsam aufs Taktraster gezogen (driftfrei, Groove erhalten). |
| Deluge-Song (Parts) | Erkannte Song-Abschnitte (Strophe/Refrain/Instrumental, Labels 1a/2b …) als launchbare Deluge-Sections: je Abschnitt Audio-Clip + MIDI-Clip, loopbar, farblich nach Stem; Struktur optional per Online-Referenz (Lyrics-Blöcke) abgesichert. |
| Mashup (bis 4 Songs) | Im Part-Editor mehrere Songs hinter Reitern (beim Laden optional gleich KI-getrennt): ein wählbarer Tempo-Master gibt den Takt vor, bei den anderen gibt man nur die Taktzahl des Loops an – der Bereich wird automatisch gedehnt (Tonhöhe halten oder mitgehen). Alle Loops lassen sich parallel hören und dabei einzeln nachjustieren; ein Part kombiniert Spuren mehrerer Songs – z. B. Drums ← Song 1, Bass ← Song 2, Gesang ← Song 4. |
| Part-Editor | Audio-Editor-Oberfläche: Parts per Start-/End-Marker selbst in der Wellenform setzen (Marker einzeln greifbar, Loop längentreu verschiebbar, auch per Zeitangabe millisekundengenau), jeden Part nahtlos als Loop vorhören – optional mit regelbarem Metronom (Takt-1 betont) –, Spuren einzeln zu-/abschalten, zoomen/scrollen. Tempo aus dem Loop bestimmen („das sind 4 Takte”) statt sich auf die Schätzung zu verlassen – daraus dann der Deluge-Song mit Audio- und MIDI-Parts. Lädt auch mehrere fertige Audiodateien als Spuren. |
| DJ-Modus | Zwei Decks, Equal-Power-Crossfade; die Clock folgt dem Ziel-Deck. |
| Aufnahme | Live-Signal mitschneiden und als Datei(en) speichern. |
Eine Web-Variante (Browser, Web Audio + Web MIDI) deckt die Kernfunktionen ab – siehe Webversion.
.txt/.chordpro.Name_bandhelper_automation.txt; den Inhalt in BandHelper (Web) beim Song
unter Automationsspur → Einfügen einsetzen und den Play-Along-Mix als
Aufnahme anhängen. Beim Abspielen startet die Aufnahme und die Textzeilen
werden 0,3 s vor dem Einsatz markiert. Text vorher aus BandHelper kopieren
(„Text aus BandHelper…”; im Stapel per „Text…” neben jeder Datei) –
oder ohne Vorlage das miterzeugte ChordPro-Zip importieren (gleiches
Format wie
UltimateGuitar2Bandhelper)..mid).Song_bass.wav, Song_drums.wav, …) →
sie erscheinen als eigene Spuren im Editor, ohne erneute Trennung..XML in den SONGS-Ordner, die Stem-WAVs nach SAMPLES/AudioWizard/ auf die SD.start), stoppt bei Stille/Songwechsel (stop).
Eigener Thread mit hoher Priorität und 1-ms-Timerauflösung, Tempo-Totband
gegen Mess-Zittern, sanftes Aufholen statt Tick-Bursts. Optional
beat-synchron: Tick 1 von 24 rastet auf die erkannte Zählzeit ein
(sanfte Phasenregelung, gemessen ~1–2 ms Streuung).--file DATEI. Mirror des
gleichnamigen Modus der Webversion. Die Wiedergabe startet nicht von allein,
sondern über einen ▶ Start / ■ Stopp-Knopf – so beginnt die MIDI-Clock genau
dann, wenn man es will (Stopp sendet ein MIDI-Stop; erneutes Start spielt von
vorn).r) und danach als
WAV speichern. Enthält der Mitschnitt mehrere Stücke (kurze Stille +
BPM/Tonart-Wechsel), werden sie automatisch erkannt und in einer Prüf-Liste
getrennt angeboten – jedes mit Namensvorschlag aus BPM und Tonart, unsichere
Grenzen gedimmt; „Alle speichern” legt sie in einen Ordner, der für das nächste
Mal gemerkt wird. Mirror der Webversion.--dj DATEI_A DATEI_B (Tasten a/b zum Überblenden).
Mirror der Webversion. Je Deck gibt es zusätzlich einen EQ-Isolator
(Bass/Mitte/Höhen stufenlos über senkrechte Slider regeln, mit dB-Wertanzeige
und Doppelklick = zurück auf 0 dB – echtzeitfähige Frequenzfilterung als
schlanker Stem-Ersatz, kein echtes Trennen einzelner Instrumente) und einen
Tempo-Sync („Sync”): das Deck rastet tonhöhen-erhaltend auf das Tempo
des anderen Decks ein (Beat-Phasen-Ausrichtung; die MIDI-Clock bleibt beim
Überblenden konstant). Die Zeitdehnung läuft in Echtzeit (WSOLA, in der
WebApp als AudioWorklet) und wirkt sofort – ohne Vorberechnung. Mit
„Übergang” gleitet ein Deck stattdessen vom Master-Tempo allmählich auf
sein Eigentempo; die WSOLA-Rate wird live gerampt und die MIDI-Clock
gleitet automatisch mit.htdemucs) in Drums, Bass, Gesang, Rest
zerlegen. Im DJ-Modus trennt die Schaltfläche „Stems” je Deck und öffnet
einen Stem-Mischer (Pegel je Instrument, in Echtzeit mischbar – echte
Instrument-Isolation statt bloßer Frequenzfilterung; lässt sich mit dem
Tempo-Sync kombinieren). Außerhalb des DJ-Modus läuft alles über einen
gemeinsamen Dialog „Was soll passieren?”: nach dem Laden einer Datei oder
nach einer Aufnahme lassen sich MIDI-Clock-Ausgabe, Stem-Export, Stems
abspielen (zusammen/getrennt, im Stem-Player mit Pegel-Fadern je Spur,
⏮ Anfang zum Neustart und „💾 Stems speichern…” – einzelne oder alle
Spuren als WAV, optional gleich auf Takt geschnitten, siehe unten),
Bass → MIDI (siehe unten) und
Song-Sheet beliebig kombinieren – die teure KI-Trennung läuft dabei nur
einmal für alle gewählten Aktionen, und eine Aufnahme muss nicht erst als
Datei gespeichert werden. Wurde der Dialog nach einer Aufnahme mit mehreren
erkannten Stücken geöffnet, werden die gewählten Aktionen nacheinander auf
jedes Stück einzeln angewendet (eigene Stems/Song-Sheet/Deluge-Song je Stück,
benannt nach dem Stück-Namen aus der Prüf-Liste) – nicht auf den ganzen
Mitschnitt am Stück. Im Dialog lässt sich die Stem-Qualität wählen:
Automatisch (Standard) trennt schnell, wenn nur ein Song-Sheet entsteht
(Text/Akkorde sind robust gegen kleine Trennartefakte), und in voller
Qualität, sobald die Stems als Audio exportiert/abgespielt oder zu MIDI
gewandelt werden; man kann auch fest „Hoch” oder „Schnell” erzwingen. Für die
geringste Übersprechung zwischen den Spuren gibt es zusätzlich „Maximum”:
das nutzt das fine-tuned Modell htdemucs_ft plus den Shift-Trick
(Test-Time-Augmentation) – hörbar saubere Bass-/Drum-Stems, aber ~4–8× langsamer
und beim ersten Mal ~1 GB Modell-Download. „Maximum+” verdoppelt den
Shift-Trick (shifts=2) – noch etwas sauberer, nochmal deutlich langsamer.
Was die Stufen wirklich kosten: htdemucs_ft ist kein einzelnes Modell,
sondern ein Verbund aus vier – schon das ist 4× die Rechenzeit; der
Shift-Trick multipliziert nochmal mit 1+shifts. „Maximum+” landet damit
bei 12 Durchläufen (auf CPU gut 40 Minuten für 4 Minuten Audio),
„Hoch” braucht einen. Vor jedem Lauf steht deshalb eine
Dauer-Schätzung im Log-Fenster, inklusive Hinweis, wie viel schneller
„Hoch” wäre. Wer die Einzelspuren gar nicht braucht (z. B. für einen
Deluge-Song aus dem Gesamtmix), lässt die Trennung einfach weg – dann
entfällt die Wartezeit komplett.
„Ultra” nutzt die 2026-SOTA-Modelle (Mel-Band-RoFormer) als Kaskade:
RoFormer entfernt zuerst den Gesang in Top-Qualität, dann trennt Demucs das
vokalfreie Instrumental in Drums/Bass/Rest (am deutlichsten sauberere
Vocals; Bass/Drums dadurch moderat besser). Ultra ist optional und braucht
pip install "audio-separator[cpu]" plus FFmpeg im PATH; ohne GPU ist es
extrem langsam (auf CPU eher für Einzel-Tracks/Übernacht-Render). Zum
schnellen Antesten einer Stufe gibt es die Dialog-Option „Schnelltest – nur
die ersten N Sekunden verarbeiten”: die Trennung läuft dann nur über einen kurzen
Ausschnitt (z. B. 30 s), sodass man die Qualität in Minuten hört. Für die
Sample-Nutzung gibt es die Export-Option „Stems auf Takt schneiden”: dann
werden alle exportierten Stems gemeinsam so geschnitten, dass der Start
exakt 2 Takte vor dem ersten Downbeat liegt (4/4) – ein Auftakt liegt damit
im Vorlauf, die „1” sitzt genau auf Takt 3 (beginnt das Stück zu früh, wird vorne
mit Stille auf den Taktanfang aufgefüllt); das Ende bleibt unverändert. Das Tempo
wird oktav-eindeutig geschätzt, die Downbeat-Lage ist heuristisch – kurz
gegenprüfen. In der Konsole exportiert --stems DATEI [--out ORDNER]
die Spuren als einzelne WAVs. Braucht das zusätzliche Paket demucs
(pip install demucs, zieht PyTorch); ohne bleibt das Feature einfach aus. Die
KI-Trennung läuft offline und kann je nach CPU einige Minuten je Stück dauern.
Während der Trennung öffnet sich ein eigenes Fortschritts-/Log-Fenster: es
zeigt live, welcher Schritt gerade läuft (Modell laden, Audio laden, Trennung,
Speichern) und im Fehlerfall die vollständige Fehlermeldung – so lässt sich
beurteilen, was passiert. Das Laden der Audiodatei läuft bewusst über librosa
statt über torchaudio; dadurch funktioniert die Trennung auch dann, wenn die
Installation kein torchcodec mitbringt (neuere torchaudio-Versionen verlangen
es zum Laden) oder die demucs.api fehlt – ist die installierte Demucs-/
PyTorch-Version unvollständig, weicht das Programm automatisch auf einen anderen
Weg aus.Name_nur_Drums-Bass.mp3, Name_ohne_Gesang.mp3).
Karaoke-Kopplung mit BandHelper: Das Häkchen „BandHelper-Automation”
erzeugt zusätzlich Name_bandhelper_automation.txt – eine fertige
Automationsspur im Einfüge-Format der BandHelper-Web-Oberfläche
(0.00|playRecording|,12.40|highlightLyricsLine|5,…,240.00|end|): die
Aufnahme startet, und jede Gesangszeile wird 0,3 Sekunden vor ihrem Einsatz
markiert (Whisper-Wortzeiten; der Play-Along-Mix hat dieselbe Zeitachse wie
das Original). Die Zeilennummern zählen die Anzeige-Zeilen in BandHelper,
beginnend bei 0:
Zeilen mit [Akkord]-Klammern und Text rendert BandHelper zweizeilig
(Akkordzeile über der Textzeile – markiert wird die Textzeile), reine
Klammer-Zeilen (z. B. Interlude [A ][G ]…) einzeilig, {Direktiven}
blendet es aus (an echten Songs gegen die Anzeige verifiziert).
Abschnitts-Marker wie Intro/Interlude/Solo/Outro/Verse/Chorus bekommen
eigene Markierungen (kurz nach dem letzten gesungenen Wort davor), damit man
auch in Instrumentalteilen sieht, wo man ist. Zwei Wege für die
Zeilennummern: (1) den vorhandenen Songtext aus BandHelper einfügen
(„Text aus BandHelper…”; in der Stapelverarbeitung hat jede Datei ihren
eigenen „Text…”-Knopf) – die Nummern passen dann exakt zu dessen Anzeige
(reine Akkordzeilen und Leerzeilen verschieben nur die Nummerierung,
unsicher zugeordnete Zeilen werden weggelassen, Wiederholungen landen dank
monotonem Alignment im richtigen Refrain); (2) ohne Vorlage erzeugt
AudioWizard den Text selbst als ChordPro und legt ihn als Zip mit
.pro-Dateien daneben (Name_bandhelper.zip, im Stapel gesammelt als
chordsheets_bandhelper.zip) – die Zeilennummern der Automation passen zu
genau dieser Datei. Das Zip-Format ist dasselbe wie beim Schwesterprojekt
UltimateGuitar2Bandhelper,
das umgekehrt vorhandene Ultimate-Guitar-Sheets (PDF/Seite) in
BandHelper-taugliches ChordPro umwandelt – beide Wege füllen dieselbe
BandHelper-Bibliothek.start gesendet (bzw.
continue mitten im Stück) und am Ende stop – so kann ein angeschlossener
Sequenzer/DAW die gesendeten Noten taktgenau mitschneiden. Mit „MIDI speichern…” lässt sich eine
mehrspurige MIDI-Datei aller aktuell aktiven Spuren (je eigener Kanal)
exportieren, um später daran weiterzuarbeiten. Braucht basic-pitch und einen
eingestellten MIDI-Ausgang; auf Windows/Python 3.12 ohne TensorFlow installieren
(siehe requirements.txt: --no-deps + onnxruntime). Der Drums-Stem läuft
nicht über Basic Pitch (tonlos), sondern über einen eigenen Weg – siehe nächster
Punkt.librosa). Hinweis: Kick/Snare/HiHat sitzen gut;
Tom, Crash, Ride, Ghost-Notes und schnelle Wirbel sind heuristisch und können
über-/untertriggern – dafür gibt es den Empfindlichkeits-Regler und das An/Aus..mid-Datei öffnen (z. B. eine zuvor exportierte). Sie
wird spurweise über den eingestellten MIDI-Ausgang abgespielt: Transport
(▶/⏸, ⏮ Anfang) plus pro Spur an/aus und frei wählbarer Kanal – so kann man
einzelne Instrumente stummschalten oder umrouten, ohne alles neu zu erzeugen.
Bei Schlagzeug-Spuren (GM-Kanal 10) gibt es „Schlagzeug-Noten…”: je
vorhandener Tonhöhe eine neue Note wählen (+ ▸ Test) – so lassen sich die
Komponenten auch in einer bereits gespeicherten Datei noch umlegen (eine
Neuerkennung aus Audio ist dann nicht mehr möglich, nur das Verschieben der
Tonhöhen). Reine MIDI-Ausgabe (kein Audio); braucht nur einen MIDI-Ausgang..XML,
Community-Firmware c1.2.x). Jede aktive Stem-Spur wird ein Pattern: die
melodischen Stems (Bass/Rest/Gesang) als interne Synth-Spuren, das
Schlagzeug als Kit (Standard-808-Slots Kick/Snare/HiHat …); zusätzlich
läuft jeder Stem als Audio-Spur (<audioTrack>/<audioClip>) parallel zum
MIDI mit. Stems und MIDI werden mit demselben Versatz ausgerichtet, sodass der
Groove-Downbeat exakt auf dem 1. Schlag von Takt (Vorlauf+1) im Deluge-Raster
liegt (Auftakte fallen in den Vorlauf); die Stems werden dazu auf ganze Takte
geschnitten. Gegen das Wegdriften über die Songlänge (wenn das aufgenommene
Tempo schwankt oder leicht neben dem geschätzten BPM liegt) gibt es ein
Taktraster in mehreren Stufen, von lebendig nach straff – alle halten den
Deluge-Click dauerhaft synchron und dehnen die Stems tonhöhen-erhaltend
gemeinsam (MIDI wird mitgezogen; Drums klingen evtl. minimal weicher): „Aus”
übernimmt das Audio unverändert (kann driften); „Takt auf Eins” zieht je Takt
nur die musikalische 1 aufs Raster und lässt die Schläge 2–4 voll lebendig;
„Groove” (empfohlen) zieht die Schläge 2–4 zusätzlich zur Hälfte Richtung
Raster – straffer, aber das Feeling bleibt; „Pro Beat” zieht jeden Schlag
exakt aufs Raster (am straffsten, kann steif klingen). Tempo, Notenlängen, Velocity und die
Takt-Lage werden übernommen (96 Ticks/Viertel). Die fertige .XML in den
SONGS-Ordner legen und die daneben erzeugten Stem-WAVs nach
SAMPLES/AudioWizard/ auf die SD-Karte kopieren (der Pfad steht fest in der
.XML). Hinweis: Das Kit referenziert zusätzlich das Factory-808-Kit – diese
Samples müssen auf der SD-Karte liegen, sonst lädt der Song zwar, die Drums bleiben
aber stumm. (Format inkl. Noten-Encoding/Tempo wurde gegen eine echte c1.2.1-Datei
verifiziert und auf dem Gerät getestet.) Den Downbeat („1”) bestimmt eine
Kick-basierte Erkennung (Tiefbass-Energie über alle Takte) – zuverlässiger als der
erste laute Onset; per ◀/▶ lässt er sich beatweise korrigieren.faster-whisper):
wiederkehrender Text = Refrain, eindeutiger Text = Strophe, ohne Gesang =
Instrumental/Intro/Solo (eigener Typ) – das verhindert, dass Strophen und
Refrains trotz ähnlicher Harmonik in denselben Typ geraten, und fasst gleiche
Refrains zuverlässig zusammen (auch einen verdoppelten Schluss-Refrain; an echten
Songs gegen Referenz-Sheets evaluiert). Ist zusätzlich der Online-Abgleich
aktiv (eigenes Häkchen im Deluge-Song-Dialog; gleiche Einstellung wie beim
Song-Sheet), nutzt die Parterkennung auch die
Struktur der Referenz-Lyrics (lrclib.net): Die Strophen-Blöcke des
Referenztexts werden per Wort-Alignment auf die eigene Aufnahme gelegt und
liefern Grenz- und Typ-Anker (wiederholte Blöcke = Refrain) – Whisper-Hörfehler
können die Zuordnung dann nicht mehr verfälschen. Instrumentale Teile behalten
dabei ihren eigenen Typ, und bei zu dünner Verankerung (Song kaum erkannt,
andere Version) bleibt automatisch die interne Erkennung maßgeblich. Die Teile heißen
<Typ><Vorkommen>: gleiche Nummer = wiederkehrender Teil, Buchstabe = das
wievielte Mal – z. B. 1a, 1b, 1c (drei Strophen), 2a, 2b (zwei Refrains),
3a (Bridge). Pro Abschnitt liegt je Stem ein Audio-Clip UND der passende
MIDI-Clip (Synth bzw. Kit), beide taktgenau aufs selbe Raster gezogen und gleich
lang. So lassen sich die Teile auf der Deluge frei arrangieren/launchen – sie
passen tempo- und taktmäßig zusammen. Jeder Clip ist sauber loopbar: ganze Takte,
Start exakt auf der „1” (das Taktraster wird an genau den im Probehören
eingestellten Downbeat gekoppelt, und die Abschnitte werden direkt auf den
rastergenauen Stems geschnitten – der Groove sitzt damit auf dem ersten Schlag), eine
kurze Loop-Kreuzblende am Ende verhindert den Klick an der Naht, und MIDI-Noten
enden innerhalb der Loop. Jeder Clip trägt den Abschnitts-Namen (z. B. Vocals
1a, Bass 2a, Drums 1b – Audio- und MIDI-Clip), und die Spuren sind je Stem
eingefärbt (z. B. alle Gesang-Spuren rötlich, Bass/Drums/Rest je eigene Farbe; die
Parts innerhalb einer Spur sind leicht abgestuft). So erkennt man Spur und
Abschnitt im Deluge-Grid sofort. Clips/WAVs sind nach Abschnitt + Stem benannt (z. B.
…_02_2a_bass.wav). Parts brauchen ein Taktraster; steht es auf „Aus”, nutzt der
Parts-Export intern Groove, damit die Teile loopbar bleiben. Wie beim Bundle:
.XML nach SONGS/, die Abschnitts-WAVs nach SAMPLES/AudioWizard/ auf die SD.Part-Editor (der Weg zum Deluge-Song) – nach „Deluge-Song erstellen”
landet man direkt hier: eine Audio-Editor-Oberfläche mit Wellenform, in der
die Parts entstehen. Vorab wird nur eine Frage gestellt – ob die
Instrumentspuren getrennt werden sollen. Ohne Trennung öffnet sich der Editor
sofort mit dem Gesamtmix als einziger Spur (keine Wartezeit); mit Trennung
stehen zusätzlich Drums/Bass/Rest/Gesang zur Verfügung. Angezeigt werden der
Gesamtmix und darunter jede vorhandene Spur einzeln; ein Häkchen je
Spur schaltet sie sichtbar und hörbar – so lässt sich z. B. nur am
Schlagzeug hören und sehen, wo ein Teil wirklich beginnt. Die Mix-Zeile
zeigt dabei genau die aktiven Spuren (Beschriftung „Mix (3 von 4 Spuren)”),
ist also immer das Bild dessen, was gerade zu hören ist. Bedienung: mit gedrückter
Maustaste einen Bereich in der Wellenform ziehen (die Marker fangen auf
ganze Takte, wahlweise Beats oder frei). Anschließend lässt sich der
linke und der rechte Marker einzeln greifen (der jeweils andere bleibt
stehen) und der ganze Loop-Bereich in der Mitte anfassen und
längentreu verschieben – der Mauszeiger zeigt an, was gerade passieren
würde. Alternativ stehen die Marker als Zeitangabe in drei Feldern
(Start / Ende / Länge): Eingaben sind tolerant (83, 83,4, 1:23.456,
1:02:03.5) und millisekundengenau; wird die Länge geändert, folgt das
Ende dem Start. Ein viertes Feld zeigt die Länge in Takten – glatte Werte
als 4, krumme als 4.4, sodass man sofort sieht, ob die Auswahl aufs Raster
passt; eine Eingabe dort setzt die Länge exakt auf ganze Takte. Neben jedem
Feld schieben −/+ den Wert um den kleinsten Schritt (1 ms, beim
Takte-Feld 1 Takt) – gedrückt halten läuft schnell durch.
Mit „▶ Auswahl loopen” den
Bereich nahtlos in Schleife anhören – gespielt wird exakt die
eingestellte Auswahl, so hört man sofort, ob der Part als
Loop trägt. Am Loop-Ende liegt eine kurze Kreuzblende (12 ms, wie beim
Deluge-Clip selbst), sonst knackt jede Wiederholung an der Naht.
Zum Beurteilen des Beats lässt sich ein Metronom dazumischen
(„🥁 Click” + Regler, stufenlos von 0 bis 100 %): Klick auf jedem Schlag,
die Takt-1 deutlich betont (höherer, lauterer Ton). Läuft der Klick
synchron zur Musik, sitzt der Loop im Tempo – driftet er auseinander, stimmt
das Raster oder die Loop-Länge nicht. Der Klick folgt Tempo- und
Downbeat-Änderungen sofort, und ◀/▶ verschiebt, welcher Schlag die
betonte Eins ist. Der
laufende Loop folgt den Markern in Echtzeit: Ziehen,
Zeiteingabe oder −/+ wirken sofort, ohne Stoppen und Neustarten (liegt die
Abspielposition außerhalb, springt sie in den neuen Bereich) – und ihn dann
mit „➕ Part aus Auswahl” übernehmen. Der Part ist dann genau der
markierte Bereich, nicht eine auf Takte gerundete Version davon.
Zoomen per
🔍−/🔍+ – ist ein Loop markiert, bleibt dessen Mitte in der Bildmitte,
man zoomt also immer auf die Stelle, an der man gerade arbeitet; „Auswahl”
legt die Ansicht in einem Schritt genau auf den Loop, „Alles” zeigt den
ganzen Song. Strg+Mausrad zoomt am Zeiger (dort bleibt der Punkt unter der
Maus stehen), Mausrad und Bildlaufleiste scrollen; ein Taktlineal mit
Taktnummern läuft über die ganze Breite.
Definierte Parts erscheinen als farbige Blöcke im Band über der Wellenform und
in einer Liste (Klick = auswählen, Doppelklick = loopen) und lassen sich
umbenennen oder löschen. Gleiche Namen bedeuten denselben Typ (z. B.
1a und 1b für zwei Strophen) – sie bekommen dieselbe Farbe, im Editor wie
später auf der Deluge. „Automatisch vorschlagen” füllt die Liste mit der
erkannten Struktur als Startpunkt, die man dann nur noch nachjustiert.
Das Tempo aus dem Loop bestimmen (⟲ Tempo aus Auswahl). Die automatische BPM-Schätzung kann daneben liegen – dann passt kein Part sauber aufs Raster. Der musikalisch sichere Weg geht deshalb umgekehrt: einen Bereich markieren, der eine klare Phrase umfasst (Anfang und Ende auf der Eins), im Feld „Takte” eintragen, wie viele Takte das sind, und „⟲ Tempo aus Auswahl” drücken. Daraus werden Tempo und Taktraster berechnet (Takt-1 rutscht auf den Loop-Start), die Schätzung wird überstimmt, und weil das Raster für den ganzen Song gilt, fallen alle weiteren Parts im selben Puls glatt aus. Beispiel: 9,142 s für 4 Takte ergibt 105,01 BPM statt geschätzter 114,4 – dieses Tempo landet auch im Deluge-Song. Unplausible Angaben werden abgelehnt. Passt die Länge eines Parts nicht auf ganze Takte, markieren Liste und Statuszeile das mit ⚠ und nennen die Abweichung – denn der Deluge-Clip muss taktlang sein, um im Songtempo zu laufen.
Takt-1 lässt sich per ◀/▶ beatweise verschieben (am besten vor dem Setzen der Parts – sie hängen am Raster). Das Taktraster (Aus/Takt-1/Groove/Pro Beat) ist im Editor umschaltbar, steht aber standardmäßig auf „Aus (Original)”: Jede andere Stufe zieht das Audio durch einen Phase-Vocoder und verändert damit hörbar den Klang – bei produzierten Stücken mit konstantem Tempo völlig unnötig. Wer es braucht (driftende Live-Mitschnitte), schaltet es bewusst ein; der Editor meldet dann deutlich, dass gedehnt wurde, zeigt währenddessen groß an, dass gerechnet wird, und setzt die Parts zurück, weil deren Zeiten danach nicht mehr stimmen. „Deluge-Song speichern…” fragt zuerst, was hinein soll: je Spur ein Häkchen für Audio und eines für MIDI. Die MIDI-Noten werden erst jetzt erkannt – aus genau den gewählten Spuren und direkt in der Export-Zeitbasis (tonale Spuren per Basic Pitch, Drums per Onset-Erkennung zum 808-Kit). Man wartet also nie auf eine Notenerkennung für Spuren, die man gar nicht braucht; hat man nur den Gesamtmix, wird dieser verwendet. Geschnitten wird exakt am markierten Startpunkt (nicht auf die nächste Taktlinie gerundet); nur die Länge ist taktgenau, damit der Clip im Songtempo läuft. Nach dem Speichern kommt eine Rückmeldung mit Zusammenfassung. Hinweis: Die Deluge kennt 12 Sections; werden mehr Parts angelegt, landen die weiteren in der letzten. Mashup aus bis zu vier Songs. Über die Reiterleiste oben lassen sich weitere Songs dazuladen („+ Song laden…”). Beim Laden fragt ein Dialog, ob die Datei direkt als Spur(en) übernommen wird (mehrere Dateien = mehrere Spuren, z. B. schon exportierte Stems) oder ob die Instrumente erst getrennt werden sollen (KI: Drums · Bass · Vocals · Rest) – Letzteres braucht man, wenn aus diesem Song nur ein Instrument ins Mashup soll. Die Trennqualität ist im selben Dialog wählbar, mit Dauerschätzung für genau diese Datei; der Fortschritt läuft in einem eigenen Fenster. Jeder Song liegt hinter seinem Reiter und behält eigenes Tempo, Taktraster, Downbeat, Auswahl und Ansicht – der aktive Song füllt dabei die ganze Wellenform-Fläche, sodass die Bedienung dieselbe bleibt.
Das Tempo gibt ein Song vor – standardmäßig der erste. Bei allen weiteren Songs trägt man nur ein, um wie viele Takte es sich beim markierten Loop handelt – der Bereich wird daraufhin automatisch gestreckt oder gestaucht. Die Statuszeile zeigt sofort das errechnete Tempo und den Faktor (z. B. 10 s = 4 Takte → 96 BPM → ×0.8000), der Reiter trägt ihn mit. Verschiebt man den Loop oder zieht ihn länger, bleibt die Taktzahl stehen und der Faktor zieht nach – man sucht also frei die Stelle, die passt. Beim ersten Loop eines neuen Songs wird so viele Takte angenommen, wie der Loop des Tempo-Masters hat (meist sucht man denselben Ausschnitt); damit sitzt auch das Metronom sofort richtig. Dass es nur eine Annahme ist, steht in der Statuszeile, bis man sie mit „Übernehmen” bestätigt oder korrigiert. Welcher Song den Takt vorgibt, ist umwählbar: Reiter anwählen → „⏱ Dieser Song gibt das Tempo vor”; die Faktoren aller anderen rechnen sich sofort neu. Pro Song ist wählbar, wie gedehnt wird: „Tonhöhe halten” (Phase-Vocoder, Standard) oder „Tonhöhe mit” (Resampling wie Bandgeschwindigkeit – artefaktfrei, aber die Tonart wandert).
Alle Loops parallel hören. „▶ Alle Songs parallel” spielt die markierten Loops aller Songs gleichzeitig im Zieltempo – jeweils nur mit den angehakten Spuren. Währenddessen kann man die Reiter wechseln und den Loop jedes Songs einzeln verschieben: die Vorschau übernimmt die Änderung automatisch und – solange Spuren und Länge gleich bleiben – ohne Unterbrechung. So sucht man den passenden Ausschnitt im laufenden Mix statt im Blindflug.
Ein Part kombiniert Spuren aus mehreren Songs. „➕ Part aus ALLEN Songs” macht daraus mit einem Klick einen Part: aus jedem Song der gerade markierte Loop mit seinen aktiven Spuren. Wer einzeln vorgehen will, nimmt „➕ neuer Part” (aktueller Song) und ergänzt später mit „+ zu Part” weitere Quellen. So entsteht z. B. Drums ← Song 1, Bass ← Song 2, Gitarre ← Song 3, Gesang ← Song 4. Alle Quellen eines Parts müssen dieselbe Taktzahl haben (sonst nennt die Meldung genau die Songs, die abweichen). „▶ Part hören” spielt die fertige Kombination im Zieltempo in Schleife – alle Quellen werden dafür gedehnt und gemischt, man beurteilt das Mashup also, bevor etwas geschrieben wird. Beim Export wird je Part und Quellspur ein Clip in derselben Deluge-Section angelegt (Spuren heißen z. B. 2. Bass), sodass ein Launch der Section das Mashup startet.
Fenster: Der Editor lässt sich mit „⛶ Vollbild”, F11 oder einem Doppelklick auf den Titel maximieren – die Wellenform bekommt dann den ganzen Bildschirm (ein Werkzeugfenster hat unter Windows keinen eigenen Maximieren-Knopf im Rahmen).
Fertige Spuren direkt laden: Einstellungen → „Spuren → Part-Editor …”
öffnet den Editor mit beliebig vielen vorhandenen Audiodateien – z. B. den
schon einmal exportierten Stems eines Songs, ohne erneute KI-Trennung. Die
Dateien erscheinen untereinander mit Namen und lassen sich einzeln
zu-/abschalten; unterschiedliche Sampleraten und Längen werden dabei
angeglichen. Enthält ein Dateiname einen bekannten Spurbegriff (…_bass.wav,
…_drums.wav, …_vocals.wav, …_other.wav), wird die Datei automatisch
dieser Spur zugeordnet – dann stimmen Farbe, Frequenzbereich der
MIDI-Erkennung und der Spurname im Deluge-Song.
--online zusätzlich zu --sheet.
Aufgerufen über den „Was soll passieren?”-Dialog beim Laden
einer Datei bzw. nach einer Aufnahme (er fragt auch Sprache und
Modellgröße ab) bzw. --sheet DATEI [--out ORDNER]
[--lang de|en] [--whisper small|medium|large-v3] in der Konsole. Das Ergebnis
wird in einem Fenster angezeigt und lässt sich als Textdatei und als
ChordPro (.chordpro, transponier-/druckbar) speichern. Da Whisper die
gesungenen Wortanfänge je nach Lauf mal etwas früh/spät markiert, lässt sich der
Akkord-Versatz im Fenster live nachregeln („◀ Akkorde früher / später ▶”) –
so sitzen die Akkorde exakt über den richtigen Silben. Standardmäßig werden die
Akkorde um etwa einen Beat nach vorne gezogen (tempoabhängig): die Erkennung
arbeitet auf einem 2-Beat-Raster und verortet den Akkord am Fensteranfang,
wodurch er ohne Korrektur rund einen Beat zu spät über der Silbe stünde – gemessen
(wortgenau gegen handkorrigierte Sheets) hebt dieser beat-relative Vorlauf die
Trefferquote deutlich (z. B. ~40 % → ~80 %). Das Sheet-Fenster hat
außerdem eine eigene Start/Stopp-Wiedergabe (▶/⏸, ⏮ Anfang) und markiert beim
Abspielen die aktuelle Stelle wortgenau (Karaoke-Mitlauf): die laufende Zeile
wird hervorgehoben und mitgescrollt, das gerade gesungene Wort zusätzlich betont –
so kann man Text und Akkorde direkt mitlesen/mitspielen.
Braucht zusätzlich faster-whisper (pip install faster-whisper; lädt beim
ersten Mal ein Sprachmodell) sowie demucs; ohne bleibt das Feature aus. Es
wird ein mehrsprachiges Modell genutzt (Deutsch und Englisch gleichermaßen),
Standard ist „medium”. Ist zusätzlich whisperx installiert
(pip install whisperx), wird automatisch Forced Alignment (wav2vec2)
genutzt: faster-whisper liefert den Text und die Phrasen-Zeilen (sauber
geschnitten, eine Phrase pro Zeile), WhisperX richtet die Wörter präzise
daran aus – so sitzen die Akkorde genauer über den richtigen Silben und das
Sheet bleibt gut lesbar. Beim ersten Lauf je Sprache lädt WhisperX einmalig ein
~300–400 MB großes Ausrichtmodell (Fortschritt steht im Log); danach aus dem
Cache. Ohne whisperx laufen die reinen Whisper-Zeiten (gröber, dafür mit dem
Versatz-Regler justierbar). Tipp: Bei bekanntem Gesang die Sprache fest wählen –
die automatische Spracherkennung liegt bei Musik gern daneben (ein deutsches
Lied wird sonst als Englisch „übersetzt”). Hinweise: gesungener Text wird „gut,
aber nicht fehlerfrei” erkannt, die Akkorde sind eine Approximation (kein
Profi-Transkriptor), und der Lauf kann je nach CPU einige Minuten dauern (eher
ein PC- als ein Pi-Feature).realtime_bpm_key_midiclock.py)
und Touch-taugliche Kiosk-GUI (bpm_key_display.py) für ein 7-Zoll-Display
am Raspberry Pi; unter Windows und macOS läuft sie im Fenster.pip install -r requirements.txt
python bpm_key_display.py
Beim ersten Start erscheint der Einstellungsbildschirm: Audio-Quelle (auch „Loopback: …“-Einträge zum Mithören der Wiedergabe) und MIDI-Ausgang wählen, Start drücken. Die Wahl wird gespeichert, danach startet das Programm direkt in die Anzeige. Alternativ die Konsolen-Version:
python realtime_bpm_key_midiclock.py
Eine Audiodatei statt einer Live-Quelle abspielen (Datei-Modus, driftfreie Clock zur Wiedergabe) – in der Konsole:
python realtime_bpm_key_midiclock.py --file "C:\Pfad\zum\song.mp3"
Für die MIDI-Ausgabe an Software auf demselben Rechner braucht es unter Windows einen virtuellen MIDI-Port, z. B. loopMIDI.
python3 -m pip install -r requirements.txt
python3 bpm_key_display.py
Läuft wie unter Windows im Fenster; Bedienung und Konsolen-Version sind identisch. Drei Besonderheiten:
Installation (mit Desktop oder als Minimal-Variante auf Pi OS Lite), Kiosk-Autostart, Overlay-Dateisystem für den Bühnenbetrieb (robust gegen hartes Ausschalten) und Performance-Tipps stehen in README_RaspberryPi.md.
Eine schlanke Browser-Variante ohne Installation liegt als einzelne Datei in webapp/index.html: BPM-Erkennung mit stabiler MIDI-Clock und optionaler Tonart-Anzeige über die Web Audio und Web MIDI API (Chrome/Edge). Als Quelle dient ein Audio-Eingang oder die mitgehörte Wiedergabe (Tab-/System-Audio über die Screen-Capture-API). Zusätzlich gibt es einen Datei-/Aufnahme-Modus, der eine Audiodatei – oder einen Mitschnitt (mitgehörte Wiedergabe oder Audio-Eingang, manuell aufgenommen) – vorab zu einer Beat-Map analysiert und ihre MIDI-Clock driftfrei zur Wiedergabe ausgibt; die Aufnahme lässt sich – auch in mehrere erkannte Stücke getrennt – als Datei mit BPM/Tonart-Namensvorschlag speichern. Außerdem gibt es einen Noten-Modus (Pitch → MIDI, mono-/polyphon), einen Akkord-Modus, der angeschlagene Akkorde (z. B. Gitarre) erkennt und als sauberen MIDI-Akkord sendet, sowie einen DJ-Modus (zwei Decks nebeneinander, Audio-Crossfade, MIDI-Clock folgt dem überblendeten Track). Einfach im Browser öffnen – kein Server nötig.
👉 Online ausprobieren: https://codekoch.github.io/AudioWizard/webapp/
Details in webapp/README.md.
Die Analyse läuft auf einem rollenden 8-Sekunden-Fenster, das jede Sekunde neu ausgewertet wird (librosa, 22 050 Hz):
Viele Stellschrauben sind direkt im Quelltext dokumentiert – inklusive der Messwerte, die zur jeweiligen Einstellung geführt haben, und der Ansätze, die gemessen und verworfen wurden.
eval_detection.py – nach wie vielen Sekunden stehen BPM und Tonart
dauerhaft korrekt? (Testdateien nach dem Muster <BPM>BPM_<Tonart>.mp3
in den Projektordner legen; aus Urheberrechtsgründen liegen keine im Repo.)eval_chords.py – Diatonik-Quote und Wechselrate der Akkorderkennung,
inklusive CPU-Zeit pro Analyse.eval_clock_sync.py – End-to-End-Test der MIDI-Clock gegen einen
synthetischen Klicktrack: misst Phasen-Streuung und Tempo-Stabilität
der Beat-Ticks.numpy, librosa, soundfile, sounddevice, mido, python-rtmidi – und nur unter
Windows zusätzlich soundcard für den Loopback (requirements.txt).
python-rtmidi nutzt je nach Plattform WinMM, CoreMIDI (macOS) oder ALSA.
GPL-3.0 – frei nutzbar und veränderbar; Weitergaben (auch veränderte) müssen unter derselben Lizenz quelloffen bleiben.
Autoren: codekoch / claude · © 2026 codekoch