OSCKit 包提供了必要的类,供您的应用程序通过 IP 网络,使用 OSC 在计算机、声音合成器和其他多媒体设备之间进行通信。
使用 OSCKit 包创建客户端或服务器对象。最简单的形式,客户端可以向服务器发送数据包,可以是 消息 (Message) 或 数据包集合 (Bundle)。 服务器在监听时,可以接收这些数据包并对其采取相应的操作。 根据客户端或服务器使用 UDP 或 TCP 作为传输方式,功能级别和委托方法会有所不同,您可以利用这些功能和方法。
OSCKit 实现了 OSC 1.1 中指定的所有必需的参数类型。
示例项目可以在 OSCKitDemo 中找到。
OSCKit 在 GNU Affero 通用公共许可证第 3 版下获得许可。 如果您需要商业许可证,用于不希望触发 AGPLv3 义务的应用程序(例如,开源您的应用程序),请联系我们。 获得免费商业许可证的可能性很高。
将包依赖项添加到您的 Xcode 项目,使用以下存储库 URL
https://github.com/SammySmallman/OSCKit
将包依赖项添加到您的 Package.swift 中,并在必要的 target 中依赖 "OSCKit"
dependencies: [
.package(url: "https://github.com/SammySmallman/OSCKit", .upToNextMajor(from: "4.0.0"))
]
将 OSCKit 导入到您的项目中
import OSCKit
创建一个客户端
let client = OSCTcpClient(host: "10.101.130.101",
port: 24601,
streamFraming: .SLIP,
delegate: self)
遵循客户端的委托协议 OSCTcpClientDelegate
func client(_ client: OSCTcpClient,
didConnectTo host: String,
port: UInt16) {
print("Client did connect to \(host):\(port)")
}
func client(_ client: OSCTcpClient,
didDisconnectWith error: Error?) {
if let error = error {
print("Client did disconnect with error: \(error.localizedDescription)")
} else {
print("Client did disconnect")
}
}
func client(_ client: OSCTcpClient,
didSendPacket packet: OSCPacket) {
print("Client did send packet")
}
func client(_ client: OSCTcpClient,
didReceivePacket packet: OSCPacket) {
print("Client did receive packet")
}
func client(_ client: OSCTcpClient,
didReadData data: Data,
with error: Error) {
print("Client did read data with error: \(error.localizedDescription)"
}
创建一个 OSCPacket,例如,一个 OSC 消息
do {
let message = try OSCMessage(with: "/osc/kit", arguments: [1,
3.142,
"hello world!"])
} catch {
print("Unable to create OSCMessage: \(error.localizedDescription)")
}
发送数据包
client.send(.message(message))
将 OSCKit 导入到您的项目中
import OSCKit
创建一个客户端
let server = OSCTcpServer(port: 24601,
streamFraming: .SLIP,
delegate: self)
遵循服务器的委托协议 OSCTcpServerDelegate
func server(_ server: OSCTcpServer,
didConnectToClientWithHost host: String,
port: UInt16) {
print("Server did connect to client \(host):\(port)")
}
func server(_ server: OSCTcpServer,
didDisconnectFromClientWithHost host: String,
port: UInt16) {
print("Server did disconnect from client \(host):\(port)")
}
func server(_ server: OSCTcpServer,
didReceivePacket packet: OSCPacket,
fromHost host: String,
port: UInt16) {
print("Server did receive packet")
}
func server(_ server: OSCTcpServer,
didSendPacket packet: OSCPacket,
toClientWithHost host: String,
port: UInt16) {
print("Server did send packet to \(host):\(port)")
}
func server(_ server: OSCTcpServer,
socketDidCloseWithError error: Error?) {
if let error = error {
print("Server did stop listening with error: \(error.localizedDescription)")
} else {
print("Server did stop listening")
}
}
func server(_ server: OSCTcpServer,
didReadData data: Data,
with error: Error) {
print("Server did read data with error: \(error.localizedDescription)")
}
开始监听新连接和数据包
do {
try server.startListening()
} catch {
print(error.localizedDescription)
}
将 OSCKit 导入到您的项目中
import OSCKit
创建一个客户端
let client = OSCUdpClient(host: "10.101.130.101",
port: 24601,
delegate: self)
遵循客户端的委托协议 OSCUdpClientDelegate
func client(_ client: OSCUdpClient,
didSendPacket packet: OSCPacket,
fromHost host: String?,
port: UInt16?) {
print("Client sent packet to \(client.host):\(client.port)")
}
func client(_ client: OSCUdpClient,
didNotSendPacket packet: OSCPacket,
fromHost host: String?,
port: UInt16?,
error: Error?) {
print("Client did not send packet to \(client.host):\(client.port)")
}
func client(_ client: OSCUdpClient,
socketDidCloseWithError error: Error) {
print("Client Error: \(error.localizedDescription)")
}
创建一个 OSCPacket,例如,一个 OSC 消息
do {
let message = try OSCMessage(with: "/osc/kit", arguments: [1,
3.142,
"hello world!"])
} catch {
print("Unable to create OSCMessage: \(error.localizedDescription)")
}
发送数据包
client.send(.message(message))
将 OSCKit 导入到您的项目中
import OSCKit
创建一个客户端
let server = OSCUdpServer(port: 24601,
delegate: self)
遵循服务器的委托协议 OSCUdpServerDelegate
func server(_ server: OSCUdpServer,
didReceivePacket packet: OSCPacket,
fromHost host: String,
port: UInt16) {
print("Server did receive packet from \(host):\(port)")
}
func server(_ server: OSCUdpServer,
socketDidCloseWithError error: Error?) {
if let error = error {
print("Server did stop listening with error: \(error.localizedDescription)")
} else {
print("Server did stop listening")
}
}
func server(_ server: OSCUdpServer,
didReadData data: Data,
with error: Error) {
print("Server did read data with error: \(error.localizedDescription)")
}
开始监听数据包
do {
try server.startListening()
} catch {
print(error.localizedDescription)
}
将 OSCKit 导入到您的项目中
import OSCKit
创建一个 peer
let peer = OSCUdpPeer(host: "10.101.130.101",
port: 24601,
hostPort: 3001)
遵循 peer 的委托协议 OSCUdpPeerDelegate
func peer(_ peer: OSCUdpPeer,
didReceivePacket packet: OSCPacket,
fromHost host: String,
port: UInt16) {
print("Peer did receive packet from \(host):\(port)")
}
func peer(_ peer: OSCUdpPeer,
didReadData data: Data,
with error: Error) {
print("Peer did read data with error: \(error.localizedDescription)")
}
func peer(_ peer: OSCUdpPeer,
didSendPacket packet: OSCPacket,
fromHost host: String?,
port: UInt16?) {
print("Peer sent packet to \(peer.host):\(peer.hostPort) from \(host):\(port)")
}
func peer(_ peer: OSCUdpPeer,
didNotSendPacket packet: OSCPacket,
fromHost host: String?,
port: UInt16?,
error: Error?) {
print("Peer did not send packet to \(peer.host):\(peer.hostPort) from \(host):\(port)")
}
func peer(_ peer: OSCUdpPeer,
socketDidCloseWithError error: Error?) {
print("Peer Error: \(error.localizedDescription)")
}
创建一个 OSCPacket,例如,一个 OSC 消息
do {
let message = try OSCMessage(with: "/osc/kit", arguments: [1,
3.142,
"hello world!"])
} catch {
print("Unable to create OSCMessage: \(error.localizedDescription)")
}
发送数据包
peer.send(.message(message))
OSCKit 由 CoreOSC 提供的基础设施代码支持。 有关 OSCKit 使用的 OSC 对象(例如地址模式、消息和数据包集合)的更详细信息,请将所有查询定向到 CoreOSC。
Sammy Smallman - 初始工作 - SammySmallman
另请参阅参与该项目的贡献者列表。