A Swift framework for sending, receiving, and parsing OSC messages & bundles.
Largely inspired and adapted from Figure 53's F53OSC Library.
Added features include:
- takeBundle() - OSCPacketDestinations are notified when an OSC bundle is received so that embedded messages and bundles can be acted upon asynchronously using the bundles timetag.
- Multicasting - Servers can join & leave multicast groups.
- OSC 1.0 & 1.1 Stream Framing.
Add the package dependency to your Xcode project using the following repository URL:
https://github.com/SammySmallman/OSCKit
Add the package dependency to your Package.swift and depend on "OSCKit" in the necessary targets:
dependencies: [
.package(url: "https://github.com/SammySmallman/OSCKit", from: "2.1.0")
]
- Enable Incoming Connections (Server)
- Enable Outgoing Connections (Client)
Import OSCKit framework into your project
import OSCKit
Create client
let client = OSCClient()
client.interface = "en0"
client.host = "10.101.100.101"
client.port = 24601
client.useTCP = true
client.delegate = self
Conform to the Client Delegate Protocol's
OSCClientDelegate:
func clientDidConnect(client: OSCClient) {
print("Client did connect")
}
func clientDidDisconnect(client: OSCClient) {
print("Client did disconnect")
}
OSCPacketDestination:
func take(message: OSCMessage) {
print("Received message - \(message.addressPattern)")
}
func take(bundle: OSCBundle) {
print("Received bundle - time tag: \(bundle.timeTag.hex()) elements: \(bundle.elements.count)")
}
Create a message
let message = OSCMessage(with: "/osc/kit", arguments: [1,
3.142,
"hello world!",
Data(count: 2),
OSCArgument.oscTrue,
OSCArgument.oscFalse,
OSCArgument.oscNil,
OSCArgument.oscImpulse])
Send a message
client.send(packet: message)
Sammy Smallman - Initial Work - SammySmallman
See also the list of contributors who participated in this project.
- Socket library dependency CocoaSyncSocket
- Network Interface library dependency Swift-Netutils.