DaCapo 2025
DaCapo 2025 is een grootschalig moderniseringsproject waarin een bestaand audio-monitoringsysteem voor orkesten volledig is herbouwd naar hedendaagse technische standaarden. Het oorspronkelijke systeem was ruim tien jaar oud en gebaseerd op end-of-life hard- en software. De opdracht: het systeem toekomstbestendig maken, meer grip krijgen op de werking en onderhoud vereenvoudigen, en dit alles zonder de vertrouwde werkwijze voor muzikanten en technici te verstoren.

Wat is DaCapo?
DaCapo levert een orkestmonitoringsysteem dat wordt ingezet bij live-uitvoeringen en repetities van professionele orkesten. Het systeem stelt individuele muzikanten in staat om hun persoonlijke monitormix samen te stellen: een eigen balans van instrumenten en audiokanalen, afgestemd op hun positie en voorkeur. Traditioneel wordt dit gedaan door een monitor engineer die mixen maakt per instrumentgroep.
Elke muzikant bedient zijn mix via een fysiek bedieningskastje (remote) op het podium. Deze remotes sturen realtime data naar een centrale computer, waar alle mixen worden verwerkt en via een audiokaart worden teruggestuurd naar het monitoringssysteem. DaCapo werkt mee in high-profile en internationale producties, waaronder het Metropole Orkest, en moet onder live-condities betrouwbaar, low-latency en foutloos functioneren.
Achtergrond en uitgangssituatie
Ik was niet betrokken bij de oorspronkelijke ontwikkeling van het DaCapo-systeem, en moet dan ook eerst het systeem en codebase eigen maken.
De bestaande setup bestond uit:
- Max/MSP 5 als centrale patch
- Gecompileerde Python 2.7-code binnen een Max extensie
- Windows 7-machines
- Blackbox I/O-modules
- Excel-bestanden voor configuratie en routing
Deze stack was volledig end-of-life. Onderhoud werd steeds lastiger, vervangende onderdelen waren schaars en het systeem kon niet draaien op moderne hardware.
Tegelijkertijd was het systeem bedrijfkritisch, met een harde deadline in verband met een internationaal project. Het oude systeem moest tijdens de ontwikkeling operationeel blijven.
Doel van het project

Het primaire doel was het technische modernisering met behoud van functionaliteit. Voor muzikanten en technici moest het systeem hetzelfde blijven aanvoelen, terwijl onder de motorkap alles robuuster, flexibeler en beter onderhoudbaar werd.
Concreet betekende dit:
- Migratie naar een actuele, goed ondersteunde software- en hardware-stack
- Verbetering van stabiliteit, onderhoudbaarheid en documentatie
- Minimale impact voor muzikanten en technici
- Een solide basis creëren voor toekomstige doorontwikkeling
Technische aanpak
De kern van het project was een fundamentele herbouw van de centrale aansturing:
- De Python-code die draaide binnen een Max/MSP extensie is herschreven naar een Node.js server met native integratie binnen Max9
- Functionaliteit in de code is opgesplitst in duidelijke modules:
- Verwerking van Excel-routingsheets
- Ontvangen en interpreteren van realtime data van de remotes
- Aansturing en routing van de audiokaart
- De Max 5-patch is geüpdatet en opgeschoond naar Max 9
- Seriële communicatie via de Blackbox is vervangen door een netwerkgebaseerde Moxa-oplossing
- De setup is platformonafhankelijk gemaakt, met focus op moderne macOS- en Windows 10/11-systemen
- Er is een functie toegevoegd waarmee met verschillende geluidskaarten gewerkt kon worden
Deze aanpak maakt het systeem stabieler, beter leesbaar en up-to-date met de huidige standaarden.
Gebruikservaring en betrouwbaarheid
Naast de technische vernieuwing is ook aandacht besteed aan de praktische inzetbaarheid:
- In de preproductie kunnen setups sneller en consistenter worden voorbereid met betere foutmeldingen
- Minder foutgevoelig gedrag tijdens live gebruik door meer uitgebreide validatie van de inkomende data
- Behoud van bestaande configuratiebestanden, zodat de overstap vrijwel frictieloos verliep

Uitvoering van het project
In plaats van direct een volledige herbouw uit te voeren, heb ik eerst het bestaande systeem zo letterlijk mogelijk gemigreerd naar Node.js en Max9. Hiermee kon ik de werking van het systeem waarborgen en daarna beginnen aan optimalisaties. Deze migratie van Python naar Node.js heb ik met behulp van AI (LLM) uitgevoerd, wat verbazingwekkend soepel verliep.
Nadat het systeem herschreven was naar Node ben ik het module voor module gaan herschrijven en verbeteren. Per onderdeel (config-verwerking, realtime remote-communicatie en audiokaart-aansturing) is de code opgeschoond, herstructureerd en robuuster gemaakt. Deze aanpak maakte het mogelijk om gecontroleerd verbeteringen door te voeren, zonder het risico dat het systeem als geheel instabiel werd.
Naast de software is ook een deel van de hardware opnieuw opgezet. Een probleem wat hier snel naar voren kwam is dat de firmware van de remote niet lekker samenwerkte met de nieuwe seriële I/O module van Moxa. Na veel trial and error en het uitschakelen van enkele functionaliteiten van de remote is het uiteindelijk om een stabiele verbinding op te zetten. In een volgende fase van het project zal worden geprobeerd deze functies weer te herintroduceren met nieuwe firmware.
Resultaat en vooruitblik
Op het moment staat er een stabiele, moderne basis waarop weer gebouwd kan worden. Het systeem is beter beheersbaar, beter ondersteund en klaar voor de komende jaren intensief gebruik in professionele producties.
Er is inmiddels al een vervolgproject gepland, waarin de focus verschuift naar hardware-optimalisatie en verdere integratie. Bij de software-architectuur is hier expliciet rekening mee gehouden, zodat toekomstige uitbreidingen gecontroleerd en zonder grote ingrepen kunnen worden doorgevoerd.