Envoyer des messages UDP

Hello,

Peut-on envoyer des messages udp avec open Stage control ?
Si oui comment ? Sinon pas grave :slight_smile:

Par défaut les messages osc sont envoyés via le protocole UDP. Si tu parles d’envoyer des paquets UDP sans le sans formatage osc, alors la réponse est non.

1 Like

Dommage, ca sera trés usible pour moi (excuse mon français rudimentaire) :)! Est-ce que ça sera trés difficile d'implementer?

Merci,

Freddy

Here is a starting point for a custom module that would allow it.

// First part is copied from node's documentation
// except we use nativeRequire instead of require 
// https://nodejs.org/api/dgram.html#udpdatagram-sockets

const dgram = nativeRequire('node:dgram')
const server = dgram.createSocket('udp4')

server.on('error', (err)=>{
  console.error(`udp server error:\n${err.stack}`)
  server.close()
});

server.on('message', (msg, rinfo) => {
  console.log(`udp server got: ${msg} from ${rinfo.address}:${rinfo.port}`);
});

server.on('listening', () => {
  const address = server.address();
  console.log(`udp server listening ${address.address}:${address.port}`);
});

server.bind(41234);

// That's the open-stage-control part 
// https://openstagecontrol.ammd.net/docs/custom-module/custom-module/

module.exports = {

    oscOutFilter: (data)=>{

        // let's say we have a widget that sends osc messages on this address 
        if (data.address == '/udp_test') {
            // catch the message and..
            // maybe send some raw udp with server.send()
            // https://nodejs.org/api/dgram.html#socketsendmsg-offset-length-port-address-callback

            return // empty return -> original osc message bypassed
        }

        return data
    },

    unload: ()=>{
        // close server when custom module hotreloads
        server.close()
    }
}

1 Like

en fait je ne me souvenais plus pourquoi j'avais posé cette question en septembre 2019 :slight_smile:
j'ai retrouvé c'était pour tester avec Orca (~rabbits/orca-examples: basics/_udp.orca - sourcehut git)
VoilĂ  voilĂ