Crate jack [−] [src]
Rust bindings for JACK, a real-time audio and midi library.
Server
JACK provides a high priority server to manipulate audio and midi across applications. The rust
jack crate does not provide server creation functionality, so a server has to be set up with the
jackd commandline tool, qjackctl the gui tool, or another method.
Client
Typically, applications connect clients to the server. For the rust jack crate, a connection can
be made with client::Client::new, which returns a client::Client.
The Client can query the server for information, register ports, and manage connections for
ports.
To commence processing audio/midi and other information in real-time, rust jack provides the
client::AsyncClient::new, which consumes a Client an object that implements
NotificationHandler and an object that implements ProcessHandler and returns a
AsyncClient. AsyncClient processes the data in real-time with the provided handlers.
Port
A Client may obtain port information through the Client::port_by_id and
Client::port_by_name methods. These ports can be used to manage connections or to obtain port
metadata, though their port data (audio buffers and midi buffers) cannot be accessed safely.
Ports can be registered with the Client::register_port method. This requires a PortSpec. The
jack crate comes with common specs such as AudioInSpec, AudioOutSpec, MidiInSpec, and
MidiOutSpec under the port mod.
To access the data of registered ports, use wrappers that are valid when a ProcessScope is
present. The ones provided by the rust jack crate are AudioInPort, AudioOutPort,
MidiInPort, and MidiOutPort, all of which are under the port mod. It is also possible to
access the data without wrapping the newly registered Port<PortSpec> by using the
Port::buffer method, but this returns a void pointer and is unsafe.
Modules
| client |
Create and manage client connections to a JACK server. |
| jack_enums |
Enum types in jack. |
| logging |
Control error and info logging from JACK. |
| port |
Types for safely interacting with port data from JACK. |
| prelude |
Contains most functionality needed to interact with JACK. |
| primitive_types |
Platform independent types. |
| ringbuffer |
Create and manage JACK ring buffers. |
| traits |
Contains every trait defined in the jack crate. |
Functions
| get_time |
Return JACK's current system time in microseconds, using the JACK clock source. |