OSCKit

Open Sound Control (OSC) library written in Swift.

MIT License

Stars
82
Committers
2

Bot releases are visible (Hide)

OSCKit - 0.5.1 Latest Release

Published by orchetect 6 months ago

Maintenance Update

  • Mitigation for Swift 5.10 @_implementationOnly compiler warnings
  • Minor docs updates
OSCKit - 0.5.0

Published by orchetect over 1 year ago

New

  • Added new OSCSocket class that combines server and client using a single local UDP port
  • Added OSCKitSocketExample project to demonstrate OSCSocket
  • OSCClient
    • Added ability to specify local port with init(localPort:)
    • Added isPortReuseEnabled property
    • Added isIPv4BroadcastEnabled property
  • OSCServer
    • Added isPortReuseEnabled property
    • Added isIPv4BroadcastEnabled property
    • Now defaults to main queue using default QoS if not specified
  • Added native support for CGFloat as an OSC message value type

Improvements

  • Full DocC documentation available online, and buildable within Xcode
  • Thinned external dependencies from 4 to 2
  • Minor cleanup, unit test updates, and API clarification
OSCKit - 0.4.3

Published by orchetect about 2 years ago

  • OSCAddressSpace: Refactored address registration and matching logic
  • OSCAddressSpace: methods(matching:) now returns only method IDs and not container IDs
  • Removed inlining
  • Inline documentation updated
OSCKit - 0.4.2

Published by orchetect about 2 years ago

Hotfix Patch

  • Fixes builds on Xcode 14 RC 1 and Xcode 14.0 due to macOS SDK removal

Note:

This release is identical to 0.4.1 but resolves a temporary issue where OSCKit fails to build in Xcode 14.0 public release.

OSCKit - 0.4.1

Published by orchetect about 2 years ago

  • Added ability to optionally store a closure for each OSC method that is registered with OSCAddressSpace.
    Invoking dispatch(_: OSCMessage) will execute the closure (on current queue or on a specified queue) for each method that matches the OSC message address pattern.
  • Added an example project demonstrating the use of OSC method closures
OSCKit - 0.4.0

Published by orchetect about 2 years ago

Welcome to OSCKit 0.4.0!

0.4.0 is a complete refactor and overhaul from the ground up.

  • OSC address pattern matching and dispatch
  • Convenient OSC message value type masking, validation and strong-typing
  • Modular: use the provided UDP network layer by default, or use your own
  • Support for custom OSC types by way of protocol adoption
  • Thread-safe
  • Fully unit tested

Check out the example projects to see it in action, and browse the README for an overview of functionality.

Note: Swift 5.7+ and Xcode 14+ are minimum requirements. OSCKit 0.3.1 can be used with Xcode 13.

OSCKit - 0.3.1

Published by orchetect about 2 years ago

  • Added full OSC time tag support with NTP era rollover
  • OSCServer now has timeTagMode parameter to set scheduling behavior
  • OSCServer receive handler closure now forwards time tag information
  • Updated example project
  • Updated documentation

Note: This will be the last release before a major refactor in release 0.4.0 to improve how OSC values are handled.

Note: 0.4.0 will require Xcode 14+ and Swift 5.7+

OSCKit - 0.3.0

Published by orchetect about 2 years ago

New Release: OSCKit 0.3.0

Note: This release has numerous API changes.

Networking Now Included

OSCKit by default now contains a built-in networking layer.

  • New OSCClient and OSCServer classes using CocoaAsyncSocket under the hood. (See OSCKitExample project for a demonstration.)
  • Or use import OSCKitCore if you plan on implementing your own UDP sockets.

OSC Address

  • New OSCAddress struct: adds useful methods partaining to an OSC address.
  • Added full OSC address pattern matching support.
  • New OSCDispatcher class: automates address pattern matching and dispatches received OSC messages.
  • [OSCMessage.Value] now has a masked() category method to mask an array of OSC values and cast to concrete types.

Misc

  • Added Codable conformance to OSCBundle, OSCMessage and OSCAddress.
  • Refreshed example projects.
  • Various improvements and fixes.
  • Improved inline docs and formatting.
OSCKit - 0.2.2

Published by orchetect about 3 years ago

  • Fixed example project so it works on localhost as expected
OSCKit - 0.2.1

Published by orchetect about 3 years ago

  • Added Example project using Apple's Network.framework
  • Set up GitHub CI for build testing and unit testing
OSCKit - 0.2.0

Published by orchetect over 3 years ago

Major code overhaul and modernization:

  • OSCMessage and OSCBundle are now immutable value types
  • OSCMessage and OSCBundle - rawBytes inits now throw, and produce strongly typed and detailed error messages
  • OSC value types of .string(String) and .stringAlt(String) have been replaced with .string(ASCIIString) and .stringAlt(ASCIIString)
  • OSC value type .character(Character) has been replaced with .character(ASCIICharacter)
  • New Data.parseOSC() method returns Optional(OSCBundlePayload) and throws on parse errors
  • appearsToBeOSC method now returns a strongly typed OSCObjectType enum with .bundle and .message cases
  • OSCMessage and OSCBundle now conform to Equatable and Hashable
  • Performance improvements
  • Removed all internal console log messages
  • README updated with Getting Started section with sample code
OSCKit - 0.1.2

Published by orchetect almost 4 years ago

  • Performance improvements
  • Now uses os_log instead of print()
OSCKit - 0.1.1

Published by orchetect almost 4 years ago

Internalized dependency namespace

OSCKit - 0.1.0

Published by orchetect about 4 years ago

Initial Release