klingtnet/rosc

rosc is an implementation of the OSC 1

Add rosc to the dependencies section of your projects Cargo

rosc

rosc is an implementation of the OSC 1.0 protocol in pure Rust.

Usage

Add rosc to the dependencies section of your projects Cargo.toml:

Documentation

The package documentation can be found here

License

Licensed under either of

  • Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
  • MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Issues

Collection of the latest Issues

DrLuke

DrLuke

Comment Icon0

I've just noticed that the decode_udp method straight up returns the nom Err wrapping the OscError.

This means that you have to add nom as a dependency to your project if you want to get the OscError (example).

I think this is an unnecessary leaky abstraction, we should instead return a Result<(&[u8], OscPacket), OscError> on the decode methods.

klingtnet

klingtnet

Comment Icon0

We need a struct for addresses so we only have to validate them once instead of every time match_address is invoked

This needs a proper description, just see this issue as a reminder for now.

This is a follow-up of #26 .

DrLuke

DrLuke

Comment Icon3

I've been trying to implement a dispatcher and noticed that the current matcher is a bit unergonomic to use. The OscMessage's address is only checked for validity in the matcher. This results in having to check for address errors during address matching, which seems like the wrong place to do that, as a dispatcher will attempt to match with every OSC method, but every single one will fail due to the address being invalid, so the same work is done repeatedly.

I propose that we instead discard incoming OscMessages in the decoder, as an OscMessage without a valid address can not ever be matched anyway, and as a consequence always know that an OscMessage must have a valid address.

I wanted to gather thoughts on this before implementing it.

Versions

Find the latest versions by id

v0.7.0 - Mar 20, 2022

We do not depend on the regex crate anymore since the address matching is now done entirely via nom. Thanks to @DrLuke for implementing this! 🎉

v0.6.0 - Nov 21, 2021

This release adds a new address module that helps matching message addresses against OSC method address patterns. With other words, the Matcher can be used to dispatch incoming messages to the appropriate handler.

Thanks @DrLuke for the contribution with #20 .

v0.5.2 - May 19, 2021

This limits SystemTime to OscTime conversions, and vice versa, to time ranges since the unix epoch which prevents arithmetic overflows on 32-bit systems. Times before the unix epoch can still be represented using OscTime.

v0.5.1 - Mar 27, 2021

OscError is now implementing the std::error::Error trait. This increases code ergonomics because it allows OscError to be used with the ? operator and with anyhow:Error.

Thanks to @ooesili for implementing that!

v0.5.0 - Mar 23, 2021

This release adds conversion functionality between SystemTime and OscTime. This comes with a minor breaking change but OscTime implements From/Into traits for (u32, u32) (the previous type alias) and so you can just use .into() to convert between (u32, u32) and OscTime. More details can be found in the docks docs.

Thanks to @ooesili for providing the implementation!

Information - Updated Jun 28, 2022

Stars: 111
Forks: 16
Issues: 7

Repositories & Extras

Mini Audio Rust Bindings

For more examples, check out the examples directory

Mini Audio Rust Bindings
IDE

863

GLICOL (an acronym for &quot;graph-oriented live coding language&quot;) is a computer music language written in...

Also, the Rust code of Glicol can be used as a standalone Rust audio library

GLICOL (an acronym for &quot;graph-oriented live coding language&quot;) is a computer music language written in...

Symphonia is a pure Rust audio decoding and media demuxing library supporting AAC, OGG, FLAC,...

Symphonia is a pure Rust audio decoding and media demuxing library supporting AAC, OGG, FLAC, MP3, and WAV

Symphonia is a pure Rust audio decoding and media demuxing library supporting AAC, OGG, FLAC,...

A crossplatform Rust bindings for the soloud audio engine library

Supported formats: wav, mp3, ogg, flac

A crossplatform Rust bindings for the soloud audio engine library

Audioserve is an audio and audio book server with a simple setup

Simple and easy to use audio and audiobook Rust web platform written in Rust

Audioserve is an audio and audio book server with a simple setup

A crate for working with audio in Rust

This is made up of several parts, each can be used independently of each other:

A crate for working with audio in Rust

Rust bindings for JACK Audio Connection Kit

Rust bindings for :heart: Sponsor

Rust bindings for JACK Audio Connection Kit

Experimental repository for some audio code written in Rust

Primary purpose: to help me learn Rust, while also playing with audio and signal

Experimental repository for some audio code written in Rust

Library for pure Rust advanced audio synthesis

Fast: Auto-vectorized audio synthesis

Library for pure Rust advanced audio synthesis

The Rust Audio Player Daemon

Rapd is not a spotify client, or an advanced music player

The Rust Audio Player Daemon
Facebook Instagram Twitter GitHub Dribbble
Privacy