OSCCore 是一个纯 Swift 编写的 OpenSoundControl 实现。它的目标是在各种平台上运行,包括像 Raspberry Pi 这样的嵌入式系统。
使用这个模块,你可以轻松地发送或接收 OSC 消息,与 SuperCollider 或其他优秀的数字音乐乐器通信。OSC 也非常适合实现像 TUIO 这样的其他协议。
要创建消息,只需实例化 OSCMessage
类,并为其分配地址和参数。
let msg = OSCMessage("/instr/osc1", ["frequency", 440.0])
OSC 参数可以是以下任何一种:
nil
true
, false
Character("a")
OSCSymbol(label: symbolName)
[Int32(0x12345678), "hello"]
[UInt8](0xde, 0xad, 0xfa, 0xce)
Bundles 是消息和其他 bundles 的混合列表。它们也携带时间戳或时间标签。
以下 bundle 被 SuperCollider 接收时,将使用给定的频率和幅度参数创建一个新的合成器实例。
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 构建在 SwiftNIO 之上,这是一个由 Apple 开发的异步事件驱动网络应用程序框架。
有关示例,请参阅 Source 文件夹中的 BasicListener 和 SuperColliderExample 项目。
OSCCore 当前以 Swift PackageManager 模块的形式提供。 要将 OSCCore 包含到你的项目中,请将以下依赖项添加到你的 Package.swift 文件中
.Package(url: "https://github.com/segabor/OSCCore.git", majorVersion: 0)
其他依赖管理器,如 CocoaPods 或 Chartage,正在考虑中。
OSC 示例位于 Examples
文件夹下