Case study: Waterorgel voor het varend corso – deel 1

Een spetterend project waar ik mij afgelopen zomer mee bezig heb gehouden is het maken van een waterorgel op de corsoboot van Schipluiden. Letterlijk spetterend dus want natte voeten waren gegarandeerd wanneer je erg dicht bij stond!

Het is nogal een out-of-the-box project geweest met een hoop trial en error momenten. Daarom leek het me leuk om mijn ervaringen hier te delen!

Toen er begin van het jaar tijdens de bestuursvergadering “Iets met water op de boot” geopperd werd begon het bij mij te borrelen: Wat als we water op muziek programmeren?

Ik heb een aantal jaar gewerkt als video-editor en animator, waarbij je natuurlijk veel bezig bent met beeld en muziek samen brengen. Het zoeken van het juiste stuk muziek bij een montage en hier de juiste beelden op de muziek monteren zodat je kippenvel krijgt als je ziet hoe het samen komt: Dat is wat ik er altijd heel leuk aan vond. En waarom ik nog steeds een zwak heb voor animatie.

Bij het corsoboot bestuur houdt ik me normaal bezig met de figuratie: samen met mijn zus bedenken we wat de figuranten gaan doen en zoeken we passende muziek. Dit jaar werd dat dus uitgebreid met het waterorgel.

Aan de slag met het waterorgel

Eerlijkheid gebied te zeggen dat het eerste dat ik heb gedaan is: mijn man Bas inschakelen. Hij heeft jarenlang in het theater gewerkt als belichter en daar diverse technische ‘uitdagingen’ voor zijn kiezen gehad, zoals een achterwand met bewegende luxaflex maken. Ook werkt hij graag met Arduino. Mijn ervaring met Arduino was nog niet heel uitgebreid: afgezien van het verbeteren van andermans ‘crappy code’ had ik er nog geen hele applicatie in geschreven, maar mijn ervaring is dat mijn programmeer ervaring gedegen genoeg is om me een ‘nieuwe’ programmeertaal snel eigen te maken. Het plan was dan ook: Bas maakt een opzet van de hardware, ik assisteer bij de hardware en maak de code en watershow.

Om een waterorgel te maken heb je wateraanvoer nodig: vuilwaterpompen. Vervolgens moet dat water verdeeld worden door leidingen of slangen en uiteindelijk bij diverse uitgangen naar buiten komen: het liefste met meerdere effecten dus meerdere soorten spuitmonden.
Maar het is natuurlijk niet een kwestie van water oppompen en weer uit spuiten: dat zou enkel een fontein zijn. De spuitmonden moesten dus open of dicht gezet kunnen worden.

Daarnaast was het de bedoeling dat het geheel dus met code aangestuurd zou worden: de muziek en het open en dicht doen van de spuitmonden.

De stappenmotoren met (zelf)geprinte verloopstukjes naar de kogelkraantjes
De aansturing van de stappenmotoren

Kleppen of kogelkraantjes?

We zijn begonnen met het verkennen van enkele opties voor het dicht en open doen van de spuitmonden: elektrische kleppen of kogelkraantjes die met stappenmotoren open en dicht gezet worden.

Het voordeel van de elektrisch aangestuurde kleppen is dat ze heel snel kunnen worden open of dicht gedaan door middel van code. Daarmee kan je dus stralen acuut laten starten en stoppen. Dit is dan ook direct weer een nadeel als je wil dat de straal op en afbouwt: dat kan niet. Een voordeel is wel dat doordat de reactiesnelheid snel is kan je ook precies reageren op de muziek.

De stappenmotoren die open en dicht draaien leggen een weg af van dicht naar open. Hier kan je dus wel een straal laten opbouwen en afbouwen. En daar staat dan als nadeel weer tegenover dat je dus niet ultra snel een straal kan laten starten en stoppen. De motoren kunnen ook niet allemaal tegelijk iets doen: de aansturing vanuit het Arduino board krijgt meer vertraging naarmate je meer acties tegelijk wil laten uitvoeren. Hier moet je rekening mee houden in de programmering op de muziek. Je kan dus niet op elke miliseconde iets doen in de muziek.

Elektrisch aangestuurde kleppen zijn best prijzig, maar stappenmotoren ook. Wij hadden het geluk dat Bas 11 stappenmotoren heeft en we die dus konden gebruiken.

De kogelkraantjes op de stappenmotoren aansluiten

Een kogelkraantje aan een stappenmotor koppelen is niet bepaald een standaard iets: we moesten dus zelf een verloopstukje ontwerpen waar de motor het kraantje mee open en dicht kon draaien.

Ook hierin hebben we enkele opties overwogen en getest:
We hebben een 3d printer, en hebben de verloopstukjes geprint met twee soorten filament. Ook hebben we metalen verloopstukjes overwogen maar dit bleek zeer moeilijk te maken, dus daar hebben we vanaf moeten zien.

De vorm van het verloopje heeft ook een ontwikkeling doorgemaakt: in eerste instantie begonnen we met een stukje dat uitstak, met het idee dat dit stukje het ‘open’ en ‘dicht’ punt van het kraantje zou raken en daarmee de stappenmotor zou stoppen. Dit bleek echter niet te werken (het brak af wanneer er teveel kracht op werd uitgeoefend). Gelukkig bleek het uitsteeksel ook helemaal niet nodig; met de juiste krachtinstellingen op de stappenmotor hield het kogelkraantje zichzelf al tegen.

Muziek via Arduino

Om het water op de muziek te laten ‘dansen’ is het essentieel dat de besturing van beide aan elkaar gekoppeld is (met twee mensen op een start knop drukken “1,2,3 nu!” geeft natuurlijk garantie op een uit-sync show). De muziek moest dus met een mp3 module via het arduino board afgespeeld worden. We hebben hiervoor de YX5300 Serial MP3 Player gekozen.

Hiermee kan de muziek gestart en gestopt worden vanuit je code. Ik moest wel een consessie doen wat betreft foolproof code: je kan namelijk niet uitlezen hoeveel miliseconden het nummer afgespeeld is. Je weet dus alleen dat het nummer gestart is op tijd X en dat het nummer een bepaald aantal miliseconden duurt. Het einde van het nummer moet je dus zelf detecteren. Je krijgt geen seintje van de code.

In mijn ogen is dat geen ideale situatie, want wat als er een hick-up plaats vind? Dan is de watershow niet meer in-sync met de muziek. Maar goed, aangezien dit een hardware beperking is had ik weinig keus en moest het er mee doen.