All Projects → RustAudio → Rust Jack

RustAudio / Rust Jack

Licence: mit
Decent jack bindings for rust

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Rust Jack

Midir
Cross-platform realtime MIDI processing in Rust.
Stars: ✭ 221 (+72.66%)
Mutual labels:  audio, midi, rust-bindings
Midi shield
Midi shield product 9595, available from SparkFun Electronics
Stars: ✭ 34 (-73.44%)
Mutual labels:  audio, midi
Awesome Music
Awesome Music Projects
Stars: ✭ 925 (+622.66%)
Mutual labels:  audio, midi
Low Latency Android Ios Linux Windows Tvos Macos Interactive Audio Platform
🇸Superpowered Audio, Networking and Cryptographics SDKs. High performance and cross platform on Android, iOS, macOS, tvOS, Linux, Windows and modern web browsers.
Stars: ✭ 1,121 (+775.78%)
Mutual labels:  audio, midi
Awesome Webaudio
A curated list of awesome WebAudio packages and resources.
Stars: ✭ 685 (+435.16%)
Mutual labels:  audio, midi
Zrythm
a highly automated and intuitive digital audio workstation - official mirror
Stars: ✭ 703 (+449.22%)
Mutual labels:  audio, midi
Audiobench
Open source modular synthesizer
Stars: ✭ 63 (-50.78%)
Mutual labels:  audio, midi
Bitmidi.com
🎹 Listen to free MIDI songs, download the best MIDI files, and share the best MIDIs on the web
Stars: ✭ 422 (+229.69%)
Mutual labels:  audio, midi
Minibae
The platform-neutral Beatnik Audio Engine, Mini Edition (miniBAE) is an exceptionally mature, well-rounded, and reliable computer music and sound system specially customized for small-footprint and embedded applications.
Stars: ✭ 82 (-35.94%)
Mutual labels:  audio, midi
Aurio
Audio Fingerprinting & Retrieval for .NET
Stars: ✭ 84 (-34.37%)
Mutual labels:  time, audio
Audiokitsynthone
AudioKit Synth One: Open-Source iOS Synthesizer App
Stars: ✭ 1,258 (+882.81%)
Mutual labels:  audio, midi
Hydrogen
The git repository of the advanced drum machine
Stars: ✭ 636 (+396.88%)
Mutual labels:  audio, midi
Webaudiofont
Use full GM set of musical instruments to play MIDI and single sounds or effects. Support for reverberation and equaliser. No plugins, no Flash. Pure HTML5 implementation compatible with desktop and mobile browser. See live examples.
Stars: ✭ 600 (+368.75%)
Mutual labels:  audio, midi
Giada
Your Hardcore Loop Machine.
Stars: ✭ 903 (+605.47%)
Mutual labels:  audio, midi
Romplayer
AudioKit Sample Player (ROM Player) - EXS24, Sound Font, Wave Player
Stars: ✭ 445 (+247.66%)
Mutual labels:  audio, midi
Musictheory
🎵 Music theory concepts in Go.
Stars: ✭ 53 (-58.59%)
Mutual labels:  audio, midi
Webmidikit
Simplest MIDI Swift library
Stars: ✭ 100 (-21.87%)
Mutual labels:  audio, midi
Hedron
Perform live shows with your three.js creations
Stars: ✭ 372 (+190.63%)
Mutual labels:  audio, midi
Midiwriterjs
♬ A JavaScript library which provides an API for programmatically generating and creating expressive multi-track MIDI files and JSON objects.
Stars: ✭ 381 (+197.66%)
Mutual labels:  audio, midi
Audiokit
Swift audio synthesis, processing, & analysis platform for iOS, macOS and tvOS
Stars: ✭ 8,827 (+6796.09%)
Mutual labels:  audio, midi

Rust JACK

License: MIT Build Status

crates.io docs.rs

Rust bindings for JACK Audio Connection Kit.

Check out the examples directory for usage.

Crates

[dependencies]
jack = "0.6"

Windows

Install JACK from the official website. Link the installed library in your rust code. For example:

#[cfg(target_os = "windows")]
#[link(name = "C:/Program Files/JACK2/lib/libjack64")]
extern "C" {}

Running

  • libjack is required. Consult your package manager or the official website.

  • The general workflow for a JACK application is to start up a JACK daemon and connect the client to it. qjackctl is a convinient way to configure and bring up a JACK server through a GUI.

  • JACK FAQ

Testing

Testing requires setting up a dummy server and running the tests using a single thread.

# Set up a dummy server for tests.
./dummy_jack_server.sh &
# Run tests with limited concurrency.
RUST_TEST_THREADS=1 cargo test

Note: We use a single thread for tests since too multiple client instantiations in short periods of time cause the JACK server to become flaky.

Possible Issues

If the tests are failing, a possible gotcha may be timing issues.

  1. Increase the value used by sleep_on_test in client/common.rs.

Another case is that libjack may be broken on your setup. Try switching between libjack and libjack2 (they have the same API and libjack2 isn't necessarily newer than libjack), or using a different version.

"C" & Rust API differences

  • String lengths in the "C" API include the NULL character while these Rust bindings do not. generally rust_size(x) = c_size(x) - 1.
  • "C" bindings require functions to be registered while Rust bindings register an object with a trait.
  • jack_on_shutdown has been removed, uses only jack_on_info_shutdown.
  • Rust enums vs C enums
  • Rust bitflags vs C integers used as flags
  • deprecated JACK functions are not used/implemented in Rust bindings

Completeness

For details on which functions from the JACK headers have been implemented, see ffi_completeness.md.

More high-level, creating clients, creating/reading/writing/connecting ports, audio, and midi are supported.

Missing categories include, JACK threading, synchronous processing, transport and control functionality.

C JACK API

API documentation

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].