A tiny OSC module implementation in Swift
OSCCore is a OpenSoundControl implementation in pure Swift. It is aimed to run on various platforms, including embedded systems like Raspberry Pi.
Using this module you can easily pass or receive OSC messages, communicate with SuperCollider or other great digital musical instruments. OSC is also great for implmenenting other protocols like TUIO.
To create a message simply instantiate
OSCMessage class, assign address and parameters to it.
let msg = OSCMessage("/instr/osc1", ["frequency", 440.0])
OSC parameters can be any of the following
[UInt8](0xde, 0xad, 0xfa, 0xce)
Bundles are mixed list of messages and other bundles. They also carry a time stamp or time tag.
The following bundle when received by SuperCollider will create a new synth instance with the given frequency and amplitude in parameters.
let synthID = Int32(4) let synthBundle = OSCBundle(timetag: OSCTimeTag.immediate, content: [ // "/s_new", name, node ID, pos, group ID OSCMessage(address: "/s_new", args: ["sine", synthID, Int32(1), Int32(1)]), // "/n_set", "amp", sine amplitude OSCMessage(address: "/n_set", args: [synthID, "amp", Float32(0.5)]), // "/n_set", "freq", sine frequency OSCMessage(address: "/n_set", args: [synthID, "freq", Float32(440.0)]) ])
OSCCore is built on top of SwiftNIO, a asynchronous event-driven network application framework developed by Apple.
For examples please see BasicListener and SuperColliderExample projects in Source folder.
OSCCore is currently provided as Swift PackageManager module. To include OSCCore to your project add the following dependency to your Package.swift file
.Package(url: "https://github.com/segabor/OSCCore.git", majorVersion: 0)
Other dependency managers like CocoaPods or Chartage is under consideration.
OSC examples are located under