Handling OSC messages with orx-osc
The orx-osc
osc provides a simple interface to interact with OSC hosts and clients.
Prerequisites
Assuming you are working on an
openrndr-template based
project, all you have to do is to add implementation(orx.osc)
to the dependencies block in build.gradle.kts and reload Gradle,
as described in ORX.
Listening to OSC messages
To listen to OSC messages we need to start an OSC server and use listen
function to install listeners
import org.openrndr.application
import org.openrndr.extra.osc.OSC
import java.net.InetAddress
fun main() = application {
program {
val osc = OSC()
osc.listen("/live/track/2") { addr, it ->
// -- get the first value
val firstValue = it[0] as Float
}
extend {
}
}
}
Note that .listen() accepts wildcard characters like * and ?.
For instance to listen to addresses containing two words we
can use osc.listen("/*/*"). Find out more about Pattern Matching
in the
OSC specification.
Sending OSC messages
import org.openrndr.application
import org.openrndr.extra.osc.OSC
import java.net.InetAddress
fun main() = application {
program {
val osc = OSC()
extend {
osc.send("/some/address", listOf(1.0f, 2.0f))
}
}
}Specifying IP address and ports
The default IP address for OSC is localhost and the in and out
ports are both set to 57110 by default. One can specify different
values like this:
val osc = OSC(
InetAddress.getByName("192.168.0.105"),
portIn = 10000,
portOut = 12000
)