[−][src]Crate jack
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::activate_async
, which consumes the 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 AudioIn
, AudioOut
, MidiIn
, and
MidiOut
.
To access the data of registered ports, use their specialized methods within a ProcessHandler
callback. For example, Port<AudioIn>::as_mut_slice
returns a audio buffer that can be written
to.
Structs
AsyncClient | A JACK client that is processing data asynchronously, in real-time. |
AudioIn |
|
AudioOut |
|
CLIENT_NAME_SIZE | The maximum string length for port names. |
Client | A client to interact with a JACK server. |
ClientOptions | Option flags for opening a JACK client. |
ClientStatus | Status flags for JACK clients. |
ClosureProcessHandler | Wrap a closure that can handle the |
CycleTimes | Internal cycle timing information. |
MidiIn |
|
MidiIter | Iterate through Midi Messages within a |
MidiOut |
|
MidiWriter | Write midi events to an output midi port. |
PORT_NAME_SIZE | The maximum string length for port names. |
PORT_TYPE_SIZE | The maximum string length for jack type names. |
Port | An endpoint to interact with JACK data streams, for audio, midi, etc... |
PortFlags | Flags for specifying port options. |
ProcessScope |
|
RawMidi | Contains 8bit raw midi information along with a timestamp relative to the process cycle. |
RingBuffer | A lock-free ringbuffer. The key attribute of a ringbuffer is that it can be safely accessed by two threads simultaneously, one reading from the buffer and the other writing to it - without using any synchronization or mutual exclusion primitives. For this to work correctly, there can only be a single reader and a single writer thread. Their identities cannot be interchanged. |
RingBufferReader | Read end of the ring buffer. Can only be used from one thread (can be different from the write thread). |
RingBufferWriter | Write end of the ring buffer. Can only be used from one thread (can be a different from the read thread). |
Unowned |
|
Enums
Control | Specify an option, either to continue processing, or to stop. |
Error | An error that can occur in JACK. |
LatencyType | Used by |
Traits
NotificationHandler | Specifies callbacks for JACK. |
PortSpec | Defines the configuration for a certain port to JACK, ie 32 bit floating audio input, 8 bit raw midi output, etc... |
ProcessHandler | Specifies real-time processing. |
Functions
error_callback | Get the error callback that was set using |
get_time | Return JACK's current system time in microseconds, using the JACK clock source. |
info_callback | Resets the JACK info callback to use stdio.
Get the info callback that was set using |
reset_error_callback | Restores the JACK info callback to the JACK default, which is to write to stderr. |
reset_info_callback | Restores the JACK info callback to the JACK default, which is to write to stdout. |
set_error_callback | Set the global JACK info callback. It is recommended to specify a callback that uses the log crate. |
set_info_callback | Set the global JACK info callback. It is recommended to specify a callback that uses the log crate. |
Type Definitions
Frames | Type used to represent sample frame counts. |
PortId | Ports have unique ids. A port registration callback is the only place you ever need to know their value. |
Time | Type used to represent the value of free running monotonic clock with units of microseconds. |