OSC-Signalen verzenden naar Sonic Pi vanuit Processing

Inleiding

In deze les leer je hoe je vanuit Processing OSC (Open Sound Control) berichten kunt verzenden naar Sonic Pi. OSC is een protocol dat wordt gebruikt om real-time berichten uit te wisselen tussen verschillende multimedia-toepassingen. In dit geval gaan we toetsenbord-input van Processing naar Sonic Pi sturen via OSC.

Benodigdheden

  • Processing geïnstalleerd op je computer
  • Sonic Pi geïnstalleerd en draaiend
  • De OSC-bibliotheek voor Processing (oscP5)

Installatie van oscP5 in Processing

Voordat je aan de slag kunt met OSC in Processing, moet je de oscP5-bibliotheek installeren. Dit doe je als volgt:

  • Open Processing
  • Ga naar Sketch > Import Library > Add Library...
  • Zoek naar oscP5in de bibliotheekbeheerder en klik op Install

Code-uitleg

Hier is de Processing-code die we gaan gebruiken om OSC-berichten naar Sonic Pi te sturen:

import oscP5.*;
import netP5.*;

/*Kris Merckx 2024*/

OscP5 oscP5;
NetAddress sonicPi;

void setup() {
  // Initialize OSC
  oscP5 = new OscP5(this, 12000); // Luistert op poort 12000 (kan je aanpassen als nodig)
  sonicPi = new NetAddress("127.0.0.1", 4560); 
  // Verander naar poort 4560
}

void draw() {
  // Er hoeft niets getekend te worden
}

void keyPressed() {
  // Toon de ingedrukte toets in de console
  println("Key pressed: " + key);
  
  // Stuur een OSC-bericht naar Sonic Pi met de ingedrukte toets
  OscMessage msg = new OscMessage("/crowl");
  
  // We sturen de ASCII-waarde van de ingedrukte toets
  msg.add((int)key);
  
  // Verzend het bericht naar Sonic Pi
  oscP5.send(msg, sonicPi);
  
  println("OSC message sent with key: " + (int)key);
}

Code-uitleg

  • import oscP5.*;en import netP5.*;importeren de benodigde bibliotheken voor het werken met OSC in Processing.
  • OscP5 oscP5;en NetAddress sonicPi;maken respectievelijk een OSC-server en een adres aan voor Sonic Pi (op lokale poort 4560).
  • setup(): Hier initialiseer je de OSC-server zodat Processing berichten kan verzenden op poort 12000. Het adres van Sonic Pi wordt ingesteld als "127.0.0.1" (de lokale machine) en poort 4560 (de standaard OSC-poort van Sonic Pi).
  • draw(): Er hoeft niets getekend te worden, dus deze functie blijft leeg.
  • keyPressed(): Deze functie wordt aangeroepen wanneer een toets wordt ingedrukt. De ASCII-waarde van de ingedrukte toets wordt in een OSC-bericht geplaatst en verzonden naar Sonic Pi via het pad /crowl.

Sonic Pi instellen voor OSC

Om OSC-berichten in Sonic Pi te ontvangen, kun je een eenvoudige Sonic Pi-code gebruiken die luistert naar het pad /crowl en een noot speelt op basis van de ontvangen toets.

#Kris Merckx - 2024
live_loop :keyboard do
  use_real_time
  b = sync "/osc*/crowl"
  puts "OSC signaal ontvangen: #{b}"
  
  if b[0] == 97
    sample :ambi_piano, amp: 2
  elsif b[0] == 101
    sample :ambi_drone, amp: 2
  elsif b[0] == 122
    sample :ambi_dark_woosh, amp: 4
  elsif b[0] == 114
    sample :ambi_haunted_hum, amp: 3
  end
end

In deze code luistert Sonic Pi naar het pad /osc/crowl en speelt het een noot op basis van de ASCII-waarde die via OSC is ontvangen.

Test en Uitvoering

Om dit te testen, voer je zowel de Processing-code als de Sonic Pi-code uit. Wanneer je een toets indrukt in Processing, wordt een OSC-bericht verzonden naar Sonic Pi, en Sonic Pi speelt een noot gebaseerd op de toets die je hebt ingedrukt.

Conclusie

Met deze setup kun je eenvoudig OSC-berichten vanuit Processing naar Sonic Pi sturen. Dit opent de deur voor veel creatieve mogelijkheden, zoals het live manipuleren van muziek met visuals, sensoren, of andere interactieve elementen in Processing.

Volgende pagina