MCPcopy Index your code
hub / github.com/JamesHallowell/cxx-juce

github.com/JamesHallowell/cxx-juce @v0.8.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v0.8.0 ↗ · + Follow
224 symbols 332 edges 27 files 46 documented · 21%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

cxx-juce 🧃

Build Status Crates.io Docs.rs

Rust bindings for JUCE using cxx.

Overview

JUCE is something of an industry standard for audio applications, so it would be nice to be able to make use of it from Rust.

Providing bindings for the entirety of JUCE would be a huge undertaking, and much of it would be duplicating functionality already available to Rust in the standard library or via crates.io.

The goal for this crate is to provide bindings for a subset of JUCE, in particular the mature and thoroughly battle-tested audio modules.

Usage

Add this to your Cargo.toml:

[dependencies]
cxx-juce = "0.8"

Dependencies

Refer to the JUCE documentation for the dependencies required to build JUCE on your platform.

Crate Features

asio

To build with ASIO support:

  1. Agree to Steinberg's licensing terms and download the ASIO SDK.
  2. Enable the asio feature for this crate.
  3. Set the CXX_JUCE_ASIO_SDK_DIR environment variable to the path of the extracted ASIO SDK.

License

Licensed under either of

at your option.

The juce_audio_basics, juce_audio_devices, juce_core and juce_events modules are permissively licensed under the terms of the ISC license.

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.

Extension points exported contracts — how you extend this code

AudioIODevice (Interface)
A trait representing an audio device. [4 implementers]
src/juce_audio_devices.rs
AudioIODeviceType (Interface)
A trait representing a type of audio driver (e.g. CoreAudio, ASIO, etc.). [2 implementers]
src/juce_audio_devices.rs
AudioIODeviceCallback (Interface)
A trait that can be implemented to receive audio callbacks. Types that implement this trait can be registered with [`Au [1 …
src/juce_audio_devices.rs

Core symbols most depended-on inside this repo

current_device_type
called by 5
src/juce_audio_devices.rs
toStr
called by 4
bridge/cxx_juce.cpp
open
called by 4
bridge/cxx_juce_audio_devices/cxx_juce_audio_io_device.cpp
channels
called by 4
src/juce_audio_devices.rs
delay
called by 4
examples/system_audio_volume.rs
initialise
called by 3
src/lib.rs
samples
called by 3
src/juce_audio_devices.rs
sample_rate
called by 3
src/juce_audio_devices.rs

Shape

Method 137
Function 59
Class 23
Interface 3
Enum 2

Languages

Rust56%
C++44%

Modules by API surface

src/juce_audio_devices.rs71 symbols
bridge/cxx_juce_audio_devices/cxx_juce_audio_device_manager.cpp45 symbols
tests/juce_audio_devices.rs20 symbols
bridge/cxx_juce_audio_devices/cxx_juce_audio_device_setup.cpp18 symbols
src/lib.rs15 symbols
src/juce_audio_basics.rs7 symbols
examples/audio_callback.rs7 symbols
bridge/cxx_juce_audio_devices/cxx_juce_audio_io_device.cpp7 symbols
bridge/cxx_juce_audio_devices/cxx_juce_audio_callback_wrapper.cpp5 symbols
bridge/cxx_juce_audio_devices/cxx_juce_system_audio_volume.cpp4 symbols
bridge/cxx_juce_audio_devices/cxx_juce_audio_io_device_type.cpp4 symbols
bridge/cxx_juce_audio_basics/cxx_juce_iir_filter.cpp4 symbols

For agents

$ claude mcp add cxx-juce \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact