Hoofdstuk 5 Open Sound Control

Open Sound Control (OSC) is een protocol om besturings-berichten te versturen over een netwerk. OSC wordt ondersteund door een groot aantal softwarepaketten waaronder Max, Pure Data, Supercollider, Reaper, Live (via Max for Live), Logic e.a.

5.1 Hoe werkt OSC?

OSC maakt gebruik van het User Datagram Protocol (UDP), een internetprotocol waarmee data verstuurt kan worden. Via dit protocol worden de berichten van de ene naar de andere computer, of binnen een systeem van het ene naar het andere programma gestuurd.
Berichten die via UDP worden verstuurd worden naar een bepaalde vooraf gekozen poort verstuurd.

5.1.1 ip-adressen en poorten

Elke computer in een netwerk heeft een IP-adres. En op deze computer zijn een aantal poorten beschikbaar om data naar te versturen. Je kunt een IP-adres / poort-structuur alsvolgt zien:
Het IP-adres is vergelijkbaar met een huis-adres in de echte wereld. Dus waarbij een IP-adres er als volgt uit kan zien: 172.217.168.196, ziet een echt adres er zo uit: Ina Boudier-Bakkerlaan 50 Utrecht.

In het gebouw van de HKU aan de Ina Boudier-Bakkerlaan heb je een groot aantal lokalen. Je kunt deze lokalen vergelijken met poorten in een netwerkstructuur. Waarbij de poorten in een netwerk maar een service tegelijkertijd kan leveren. Net zoals er in de leslokalen maar een les tegelijk mogelijk is. Als een poort dus de functie heeft om websites te tonen, dan kan deze niet ook nog e-mail ontvangen. Daar moet dan een aparte poort voor worden gebruikt.

Een speciaal IP-adres is 127.0.0.1, dit is voor iedere computer de verwijzing naar zichzelf. Als je dus een bericht wil sturen naar een applicatie op je eigen computer kan je dat ip-adres gebruiken. Net zoals je, als je naar een ander lokaal in de HKU wil verwijzen, je niet het adres hoeft te noemen, maar kan verwijzen naar de IBB.

Als je een bericht wil versturen naar een computer heb je dus zowel het ip-adres als het poortnummer nodig. Als je berichten wil ontvangen hoef je alleen maar aan te geven welk poortnummer je open zet. Vanaf elke computer in dat netwerk is het dan mogelijk om berichten te sturen.

5.1.2 OSC en P5js

Om van OSC gebruik te maken binnen P5js moet je gebruik maken van de oscServer die je in semester 1 ook hebt gebruikt. Op: https://github.com/csdhku/csdosc staat een bijgwerkte versie met een tweetal voorbeelden.

Je start als eerste de node.js webserver. node oscServer.js. Bij het opstarten geeft deze aan via welke poort hij webpagina's kan openen. In je browser kun je naar die poort verwijzen op de volgende manier: localhost:8001/example_client wat dan ook meteen de p5js-sketch uit example_client uitvoert.

In dit plaatje zie je dat de browser meerdere windows kan openen, bijvoorbeeld een server en een client, die allebei verbinding zoeken met poort 8001 van node.js. Vervolgens kunnen ze via node.js een OSC-verbinding maken met elkaar of zoals in het plaatje met Max op een andere poort. In het plaatje en in de voorbeelden is poort 9000 gekozen.

Let op dat je niet twee servers naar dezelfde poort laat luisteren. Als je de example_server in de browser ook naar poort 9000 laat luisteren zitten de server en Max elkaar in de weg.

5.1.3 Opbouw van een bericht

Een OSC-bericht bestaat uit twee delen: een adres en een waarde.
De waarde is altijd een of meerdere getal(len) of woord(en).
Het adres begint met een / en bestaat uit één of meer woorden die aan elkaar worden gekoppeld met een /.

Een voorbeeld van een bericht met één woord als adres is:
/x 15

Het adres is hierbij /x en de waarde is 15.

een voorbeeld met meerdere adres-regels is:
/synth/oscillator1/pitch 440
/synth/oscillator1/amplitude 0.5
op deze manier kun je berichten sturen naar verschillende onderdelen van een synthesizer.