DelugeHub
Hype19/100Synthstrom Deluge Data Managerhub
DelugeHub is custom firmware for the Synthstrom Audible Deluge, by @LakortWPS. Open source under MIT, latest release v2.2.3 (September 2026).
forSynthstrom Audible Deluge·by@LakortWPS
Unclaimed. Is this yours? Sign in with GitHub as @LakortWPS to claim it.
No release files yet. Build from source.
MIT· LakortWPS/DelugeHub·downloads come from the creator’s GitHub releases
v2.2.3v2.2.3 — CI, Datensicherheits-Fixes & Startup-Crash-FixLatest0 files
[2.2.3] — 2026-09-16
Added
- CI:
.github/workflows/tests.ymlführt die Test-Suite (54 Tests) jetzt automatisch auf Python 3.10/3.11 bei jedem Push/PR aus — vorher lief nichts automatisch - Batch-Rename-Kollisionsschutz:
StagingStore._apply()verweigert jetzt Umbenennungen, deren Zieldateiname von einer anderen Änderung im selben Batch oder einer bereits existierenden Datei belegt ist, statt still zu überschreiben - Kit/Song-Löschen mit Papierkorb: geht jetzt über
history.move_to_trash()stattPath.unlink()— analog zu Sample/Synth-Löschungen, kein unwiderruflicher Verlust mehr - XML-Validity-Guard bei "Globales Ersetzen":
plan_global_replace()validiert jetzt, dass das Ergebnis noch gültiges XML ist, bevor es gestaged wird — ein zu breiter Suchbegriff kann keine kaputte XML-Datei mehr erzeugen
Fixed
- App-Absturz beim Start:
AudioPlayer.__init__(Sample Manager) fing beimsounddevice-Import nurImportErrorab; fehlt die native PortAudio-Bibliothek, wirftsounddevicestattdessenOSError— das crashte die gesamte App vor dem ersten Fenster. Gleiches Muster beisoundfilean drei weiteren Stellen behoben (Sample Manager Wellenform-Vorschau, Kit Manager Volume-Normalisierung) — alle vier degradieren jetzt sauber auf ihren bestehenden Fallback statt abzustürzen - Pad-Sample neu zuweisen:
kit_manager._reassign_padersetzte den Sample-Pfad global in der gesamten Kit-XML — referenzierten zwei Pads dasselbe Sample, wurden beim Neuzuweisen versehentlich beide geändert. Jetzt gezielt nur auf den bearbeiteten Pad beschränkt - Lost Sample Finder: unsichere Auto-Match-Treffer ("Ähnlich"/Fuzzy und mehrdeutige "Exakt*"-Treffer) waren beim Batch-Anwenden standardmäßig vorangehakt; jetzt bleibt nur ein eindeutiger "Exakt"-Treffer automatisch angehakt, alles andere muss bewusst bestätigt werden
- Volume-Cap-Replace vereinheitlicht:
kit_manager/batch_hubnutzen jetzt eine gemeinsame, robustere Such-Funktion (volume_utils.apply_sequential_replacements) statt drei leicht unterschiedlicher Kopien derselben Replace-Schleife
Docs
PROJECT_STATUS.mdkorrigiert: drei als "offen" gelistete Punkte (Line-Endings, History-Wiring, Volume-Helper-Duplikate) waren tatsächlich bereits erledigt- Tote Test-Stub-Dateien (
test_dbg.py,test_lost_finder.py) entfernt, derenconftest.py-Begründung ("korrupt, nicht löschbar") sich als falsch herausstellte
- CI:
v2.2.20 files
[2.2.2] — 2026-06-30
Fixed
- AutoMatchWorker: Thread-Absturz bei SD-Karten-Disconnect wird jetzt abgefangen —
error-Signal +QMessageBoxstatt stillem Thread-Tod - Staging
_apply(): Exceptions werden jetzt vialogginggeloggt statt still geschluckt;loggingauf Modul-Ebene statt inline-Import - Batch Import
.ogg:_batch_importnutzt jetztAUDIO_EXTENSIONSaussd_scanner—.ogg-Dateien wurden vorher ignoriert - Batch Export/Delete UI-Freeze:
_batch_export_samplesund_delete_unused_sampleslaufen jetzt in einemSimpleWorker-Thread statt im Main-Thread _start_scanTimeout:wait()ohne Timeout ersetzt durchwait(3000)— verhindert potenzielle UI-Hänger beim Scan-Abbruch- Python 3.9 Kompatibilität:
from __future__ import annotationsinsynth_utils.py—list[str] | NoneSyntax funktioniert jetzt auch unter Python 3.9 - App-Icon im Built: Icon wird jetzt als eingebettete Bytes geladen statt per Dateipfad — funktioniert zuverlässig in Dev und PyInstaller-Build
- Windows Taskleisten-Icon:
SetCurrentProcessExplicitAppUserModelIDgesetzt — Icon erscheint korrekt in Taskleiste und Titelleiste
- AutoMatchWorker: Thread-Absturz bei SD-Karten-Disconnect wird jetzt abgefangen —
v2.2.1v2.2.1 — Keyboard-Shortcuts, globale Suche & Replace-Vorschau0 files
Globale Suche (app/core/search.py neu) Keyboard-Shortcuts Replace-Vorschau (preview_global_replace, plan_global_replace in staging.py) CSV-Export für Lost Sample Finder Bugfixes (staging.py Encoding-Issues, file_ops.py Refactoring)
v2.2.0v2.2.0 — Rescan-Navigation, Worker-Guard, Logging & XML-Cache0 files
What's new in v2.2.0
Fixed
Navigation nach Rescan: App wirft nach jedem Rescan nicht mehr auf das Dashboard zurück — du bleibst auf der Seite auf der du warst. Nur der allererste Scan landet auf dem Dashboard
Worker Double-Start (batch_hub, backup_sync): zweiter Klick auf Ausführen/Backup während ein Worker läuft wird jetzt geblockt mit Statusmeldung statt einem zweiten parallelen Worker
Silent Exceptions → Logging: alle
except Exception: passBlöcke in batch_hub, kit_manager, lost_sample_finder, sample_manager, song_manager, synth_editor loggen jetzt vialogging.getLogger(Warning/Debug je nach Schwere)Performance
XML-Dateilisten-Cache (file_ops.py):
_all_xml_files()baut die Liste einmalig pro Scan-Zyklus und cached sie; bei rename_sample/move_sample entfällt das wiederholte Iterieren über alle Dateien. Cache wird beim nächsten Scan-Start automatisch invalidiert
Full changelog: https://github.com/LakortWPS/DelugeHub/blob/main/CHANGELOG.md
v2.1.0v2.1.0 — Batch Hub Rename-Schemas & Live-Preview0 files
What's new in v2.1.0
Added
Batch Hub — Rename-Schemas
5 wählbare Benennungsschemas für Songs, Kits und Synths:
- Deluge-Style (A001, A002 … A009, B001 …)
-
- Kompakt (A1, A2 … A9, B1 …)
-
- Freies Pattern (
{name},{index},{INDEX})
- Freies Pattern (
-
- Prefix + Nummer (PREFIX001, PREFIX002 …)
-
- Name + Affix (Prefix/Suffix um den Originalnamen) Startindex-Spinner (1–9999): Batch-Umbenennung beginnt bei beliebigem Index
Live-Vorschau-Spalte: dritte Tabellenspalte zeigt neuen Namen sofort bei jeder Änderung (orange = geändert, grau = unverändert)
Fixed
_compute_renameLetter-Overflow: bei mehr als 234 Einträgen (> Z9) wurden ungültige ASCII-Zeichen ([,\, …) generiert; ersetzt durch Excel-ähnliche Doppelbuchstaben (AA1, AB1 …)
Full changelog: https://github.com/LakortWPS/DelugeHub/blob/main/CHANGELOG.md
v2.0.5v2.0.5 — Code Quality & Synth Editor Bug Fixes0 files
What's new in v2.0.5
Bug Fixes
-
Synth Editor — OSC type / LFO shape / filter mode not saved Changes to the OSC type, LFO shape and filter mode comboboxes were silently discarded on every save. All three fields are now correctly written back to the XML file, handling both Deluge firmware formats (attribute and child-element style).
-
Synth Editor — robust XML parsing
_load_paramsand_save_paramsusedET.parse()directly, causing silent failures on malformed Deluge XMLs. Both now use_parse_xml_robust()with lxml recovery fallback. -
Batch Hub — "Volumes normalisieren" silent no-op for Synths The option appeared in the Synths tab but did nothing. Removed; the option remains available for Kits.
-
Batch Hub — import skipped count Files already present at the import destination were silently skipped. The status message now shows how many files were skipped.
-
Python 3.9 compatibility
list | None/SDCardIndex | Noneunion syntax (Python 3.10+ only) replaced withOptional[list]/Optional[SDCardIndex]fromtyping. Minimum supported version is now Python 3.9.
Refactoring
- Redundant
staticmethodwrappers removed fromkit_managerandsong_manager - Dead history interface removed from
song_manager - Duplicate XML file collection logic in
batch_hubextracted into_collect_xml_files()helper ParamSlider.get_value()added as symmetric counterpart to the existingset_value()
Full changelog: https://github.com/LakortWPS/DelugeHub/blob/main/CHANGELOG.md
-
v2.0.40 files
Full Changelog: https://github.com/LakortWPS/DelugeHub/compare/v2.0.3...v2.0.4
v2.0.3v2.0.3 — Bugfix Release1 file
What's Changed
🐛 Fixed
- StagingStore wiring (
main_window.py): SharedStagingStoreinstance is now correctly injected into all modules viaset_staging()loop and re-wired on SD path change; pending changes are restored from.delugyhub_pending.jsonon startup - Volume helpers centralized (
core/volume_utils.py):vol_to_display,display_to_vol,vol_to_amp,amp_to_volmoved to a shared module — removed three identical inline copies fromkit_manager,song_manager,batch_hub - Kit Manager — normalize replace bug: Volume replacement now uses a
search_postracker to prevent the wrong occurrence from being replaced when multiple pads share the same hex value - Sample Manager — audio playback: Switched primary audio loader to
soundfile, which natively handles 24/32-bit WAV, AIF/AIFF, FLAC and OGG; stdlibwavekept as fallback for 16-bit WAV only models.py—files_with_missing: Synths were not included in the missing-files list; all three content types (songs, kits, synths) are now returned- Synth Editor —
_save_paramsreplace collision: Parameter replacement is now anchored to the tag name (>old_hex</tag>) instead of a bare hex string, preventing a parameter with a coincidentally identical value from being overwritten - Lost Sample Finder — manual fix ignored:
_manual_fix_rowwrote the chosen path toref.user_choice(never read); corrected toref.resolutionso double-click manual assignments are actually applied on "Fixes anwenden" - Lost Sample Finder —
relative_to()crash:ApplyFixWorkernow catchesValueErrorwhen the resolved path is outside the guessed SD root and falls back to the absolute path
Full Changelog: https://github.com/LakortWPS/DelugeHub/blob/main/CHANGELOG.md
- StagingStore wiring (
v2.0.2v2.0.2 — Windows Installer & Fixes0 files
What's New
Windows Installer
- New build system via PyInstaller + Inno Setup produces a standalone
DelugeHub-2.0.2-Setup.exerequiring no Python installation on the end user's machine -
- See
installer/README.mdfor build instructions
- See
Fixes
- Batch Hub: checkbox column header was truncated — replaced with ✓ icon and reduced column width to 30px
-
synth_editor.py: null bytes appended during merge conflict removed — file is now valid Python again
-
- App icon added (window, taskbar, installer, .exe)
Installation
Run from source
pip install -r requirements.txt python main.pyWindows (no Python required)
Download and run
DelugeHub-2.0.2-Setup.exefrom the Assets below.- New build system via PyInstaller + Inno Setup produces a standalone
v2.0.1v2.0.1 — UI & Layout Fixes0 files
Fixes
- Import buttons (Kit & Synth) now show a warning dialog when no SD folder is loaded
-
- Button text clipping: replaced
QMessageBoxwithQDialogin PendingPanel
- Button text clipping: replaced
-
- Backup layout: folder field moved inline into page header
-
- Backup layout: left panel split into vertical
QSplitterfor proper space distribution
- Backup layout: left panel split into vertical
-
- Backup buttons:
setFixedHeight→setMinimumHeight; increasedQMessageBoxbutton min-width to 120px
- Backup buttons:
-
- Toolbar labels: long labels shortened with tooltips
-
- Tables: removed
setMaximumWidthfrom kit list, synth list and song detail panel
- Tables: removed
-
- Delete buttons: icon-only (🗑) with tooltip in all modules
-
- Theme toggle removed from main window header (now in Settings only)
v2.0.0v2.0.0 — Staging System (Major Release)0 files
What's New
Staging System
All destructive operations (XML edits, renames, deletes) are now buffered in RAM and only written to disk on explicit user command.
- StagingStore (
app/core/staging.py): In-memory buffer for pending changes; auto-saves as.delugyhub_pending.jsonon SD card -
- PendingPanel (
app/widgets/pending_panel.py): Per-module widget showing pending changes with save/discard options
- PendingPanel (
-
- Status bar badge in MainWindow: Shows total pending changes + "Save all" button
-
- Startup restore: Detects and restores pending changes from previous sessions
-
- Backup: New "Without Samples" option for faster, smaller backups
Modules Updated
All write operations in Song Manager, Kit Manager, Synth Editor and Batch Hub now use the staging system.
- StagingStore (
v1.1.0v1.1.0 — Volume Cap + Batch Hub + Lost Sample Finder0 files
What's New
Volume Cap Feature
- Kit Manager: New buttons to cap Kit Master Volume and Pad Volumes to a user-defined maximum (0–50 Deluge scale)
-
- Song Manager: New buttons to cap Song Master Volume and Clip Volumes
-
- Both with Undo/Redo support
New Modules
- ⚡ Batch Hub: Bulk rename, export, delete, normalize across all content types; includes 3 new batch volume cap operations
-
- 🔍 Lost Sample Finder: Find missing samples with auto-match and batch fix
-
- 💾 Backup & Sync: Create ZIP backups, manage history, selectively restore
-
- ⚙️ Settings: SD path, theme (dark/light), auto-scan
Fixes
- XML parser for Deluge firmware 2.x format
-
- lxml recovery for corrupted XML files
-
- Various layout and column width bugs
v1.0.4v1.0.4 — lxml Recovery & Column Fixes0 files
Fixes
- Broken Deluge XML files with missing closing tags (e.g.
</modKnobs>) are now automatically repaired and loaded via lxml -
- All table column headers fully visible — mode changed to Interactive with adjusted widths
- Broken Deluge XML files with missing closing tags (e.g.
v1.0.3v1.0.3 — Firmware 2.x XML Parser Fix0 files
Fixes
- XML parser now correctly handles Deluge firmware 2.0.0-beta format — files with
<firmwareVersion>and<earliestCompatibleFirmware>before the main content element are parsed without errors -
- Unescaped
&characters in Deluge XML files are automatically corrected to&
- Unescaped
-
- Removed deprecated
Qt.AA_UseHighDpiPixmapswarning on startup
- Removed deprecated
- XML parser now correctly handles Deluge firmware 2.0.0-beta format — files with
v1.0.2v1.0.2 — XML Parser & Version Fixes0 files
Fixes
- App version in the sidebar is now loaded dynamically from
APP_VERSION(was hardcoded) -
- XML parser is robust against invalid control characters in Deluge files
-
- XML parser handles "junk after document element" — Deluge pads some files with null bytes after the root tag
- App version in the sidebar is now loaded dynamically from
v1.0.1v1.0.1 — UI Fixes0 files
Fixes
- QLabel backgrounds are now transparent — no visible box behind text on cards
-
- QPushButton no longer shows a dotted focus outline after clicking
v1.0.0v1.0.0 — Initial Release0 files
What's New
Initial public release of DelugeHub — an all-in-one SD card manager for the Synthstrom Deluge.
Features
- 🎵 Song Manager — Browse, rename, duplicate and export songs with all dependencies
-
- 🥁 Kit Manager — Edit kits & pad assignments
-
- 🎹 Synth Editor — Edit parameters, import/export
-
- 📁 Sample Manager — Folder tree, move/rename with automatic XML path update
-
- 🔍 Lost Sample Finder — Find missing samples, auto-match, batch fix
-
- 💾 Backup & Sync — Create ZIP backups, manage history, selectively restore
-
- ⚙️ Settings — SD path, theme (dark/light), auto-scan
Requirements
- Python 3.10+
-
- PySide6 >= 6.6.0
-
- lxml >= 5.0.0

