truce-rack-au 1.1.5

AU v2 host implementation for the truce-rack audio-plugin framework (Apple platforms)
Documentation
# truce-rack-au

[![crates.io](https://img.shields.io/crates/v/truce-rack-au.svg)](https://crates.io/crates/truce-rack-au)
[![docs.rs](https://img.shields.io/badge/docs.rs-blue)](https://docs.rs/truce-rack-au)

Audio Unit v2 host implementation for the [**truce-rack**][repo]
audio plugin framework. Apple-only. Pure-Rust on top of the
`objc2` ecosystem (`objc2-audio-toolbox`,
`objc2-core-audio-types`) — no C++ wrapper, no bridging header.
Implements scan, load (both `AudioComponentInstanceNew` and the
async `AudioComponentInstantiate` for v3-flagged components),
audio + MIDI processing, and the AUv2 Cocoa view behind the
format-agnostic [`truce-rack-core`][core] traits.

Host transport from `ProcessContext::transport` is exposed through
the AU host callbacks (`kAudioUnitProperty_HostCallbacks` —
beat/tempo, musical-time, and transport-state procs), which the AU
queries during `AudioUnitRender` for tempo, time signature, bar
position, and play / record / cycle state.

[repo]: https://github.com/truce-audio/truce-rack
[core]: https://crates.io/crates/truce-rack-core

## Usage

```toml
[target.'cfg(target_vendor = "apple")'.dependencies]
truce-rack-core = "1.0"
truce-rack-au = "1.0"
```

```rust
use truce_rack_core::scanner::PluginScanner;
use truce_rack_au::AuScanner;

let plugins = AuScanner::new().scan()?;
for info in &plugins {
    println!("{info}");
}
```

## See also

The [**truce-rack**][repo] workspace ships sibling wrapper crates
for [CLAP](https://crates.io/crates/truce-rack-clap),
[VST3](https://crates.io/crates/truce-rack-vst3),
[AU v3](https://crates.io/crates/truce-rack-au3),
[LV2](https://crates.io/crates/truce-rack-lv2),
plus a [standalone runner](https://crates.io/crates/truce-rack-standalone).

## License

MIT or Apache-2.0, at your option.