pub struct Port<PS> { /* private fields */ }
Expand description
An endpoint to interact with JACK data streams, for audio, midi, etc…
The Port
struct contains mostly metadata and exposes data as raw pointers. For a better data
consumption/production API, see the AudioInPort
, AudioOutPort
, MidiInPort
, and
MidiOutPort
.
Most JACK functionality is exposed, including the raw pointers, but it should be possible to
create a client without the need for calling unsafe
Port
methods.
Also, ports can be compared and hashed using their raw pointers.
Implementations§
source§impl Port<AudioIn>
impl Port<AudioIn>
sourcepub fn as_slice<'a>(&'a self, ps: &'a ProcessScope) -> &'a [f32]
pub fn as_slice<'a>(&'a self, ps: &'a ProcessScope) -> &'a [f32]
Read the received audio data.
source§impl Port<AudioOut>
impl Port<AudioOut>
sourcepub fn as_mut_slice<'a>(&'a mut self, ps: &'a ProcessScope) -> &'a mut [f32]
pub fn as_mut_slice<'a>(&'a mut self, ps: &'a ProcessScope) -> &'a mut [f32]
Get a slice to write audio data to.
source§impl Port<MidiIn>
impl Port<MidiIn>
sourcepub fn iter<'a>(&'a self, ps: &'a ProcessScope) -> MidiIter<'a> ⓘ
pub fn iter<'a>(&'a self, ps: &'a ProcessScope) -> MidiIter<'a> ⓘ
Get an iterator over midi events.
source§impl Port<MidiOut>
impl Port<MidiOut>
sourcepub fn writer<'a>(&'a mut self, ps: &'a ProcessScope) -> MidiWriter<'a>
pub fn writer<'a>(&'a mut self, ps: &'a ProcessScope) -> MidiWriter<'a>
Create a writer that can write midi events to the specified midi port. Calling this function clears the midi buffer.
source§impl<PS> Port<PS>
impl<PS> Port<PS>
sourcepub fn clone_unowned(&self) -> Port<Unowned>
pub fn clone_unowned(&self) -> Port<Unowned>
Return a copy of port as an unowned port that can still be used for querying information.
sourcepub fn name(&self) -> Result<String, Error>
pub fn name(&self) -> Result<String, Error>
Returns the full name of the port, including the “client_name:” prefix.
sourcepub fn short_name(&self) -> Result<String, Error>
pub fn short_name(&self) -> Result<String, Error>
Returns the short name of the port, it excludes the “client_name:” prefix.
sourcepub fn flags(&self) -> PortFlags
pub fn flags(&self) -> PortFlags
The flags for the port. These are set when the port is registered with its client.
sourcepub fn port_type(&self) -> Result<String, Error>
pub fn port_type(&self) -> Result<String, Error>
The port type. JACK’s built in types include "32 bit float mono audio
“ and "8 bit raw midi"
. Custom types may also be used.
sourcepub fn connected_count(&self) -> Result<usize, Error>
pub fn connected_count(&self) -> Result<usize, Error>
Number of ports connected to/from &self
.
sourcepub fn is_connected_to(&self, port_name: &str) -> Result<bool, Error>
pub fn is_connected_to(&self, port_name: &str) -> Result<bool, Error>
Returns true
if the port is directly connected to a port with the
name port_name
.
sourcepub fn aliases(&self) -> Result<Vec<String>, Error>
pub fn aliases(&self) -> Result<Vec<String>, Error>
Get the alias names for self
.
Will return up to 2 strings.
sourcepub fn is_monitoring_input(&self) -> Result<bool, Error>
pub fn is_monitoring_input(&self) -> Result<bool, Error>
Returns true
if monitoring has been requested for self
.
sourcepub fn request_monitor(&self, enable_monitor: bool) -> Result<(), Error>
pub fn request_monitor(&self, enable_monitor: bool) -> Result<(), Error>
Turn input monitoring for the port on or off.
This only works if the port has the CAN_MONITOR
flag set.
sourcepub fn ensure_monitor(&self, enable_monitor: bool) -> Result<(), Error>
pub fn ensure_monitor(&self, enable_monitor: bool) -> Result<(), Error>
If the CAN_MONITOR
flag is set for the port, then input monitoring is turned on if it was
off, and turns it off if only one request has been made to turn it on. Otherwise it does
nothing.
sourcepub fn set_name(&mut self, short_name: &str) -> Result<(), Error>
pub fn set_name(&mut self, short_name: &str) -> Result<(), Error>
Set’s the short name of the port. If the full name is longer than PORT_NAME_SIZE
, then it
will be truncated.
sourcepub fn set_alias(&mut self, alias: &str) -> Result<(), Error>
pub fn set_alias(&mut self, alias: &str) -> Result<(), Error>
Sets alias
as an alias for self
.
May be called at any time. If the alias is longer than PORT_NAME_SIZE
, it will be
truncated.
After a successful call, and until JACK exists, or the alias is unset, alias
may be used
as an alternate name for the port.
Ports can have up to two aliases - if both are already set, this function will return an error.
sourcepub fn unset_alias(&mut self, alias: &str) -> Result<(), Error>
pub fn unset_alias(&mut self, alias: &str) -> Result<(), Error>
Remove alias
as an alias for port. May be called at any time.
After a successful call, alias
can no longer be used as an alternate name for self
.
sourcepub unsafe fn from_raw(
spec: PS,
client_ptr: *mut jack_client_t,
port_ptr: *mut jack_port_t,
client_life: Weak<()>
) -> Self
pub unsafe fn from_raw(
spec: PS,
client_ptr: *mut jack_client_t,
port_ptr: *mut jack_port_t,
client_life: Weak<()>
) -> Self
Create a Port from raw JACK pointers.
This is mostly for use within the jack crate itself.
Safety
It is unsafe to create a Port
from raw pointers.
sourcepub fn client_ptr(&self) -> *mut jack_client_t
pub fn client_ptr(&self) -> *mut jack_client_t
Obtain the client pointer that spawned this port.
This is mostly for use within the jack crate itself.
sourcepub fn raw(&self) -> *mut jack_port_t
pub fn raw(&self) -> *mut jack_port_t
Obtain the ffi port pointer.
This is mostly for use within the jack crate itself.
sourcepub unsafe fn buffer(&self, n_frames: Frames) -> *mut c_void
pub unsafe fn buffer(&self, n_frames: Frames) -> *mut c_void
Obtain the buffer that the Port is holding. For standard audio and midi ports, consider
using the AudioInPort
, AudioOutPort
, MidiInPort
, or MidiOutPort
adapter. For more
custom data, consider implementing your own adapter that safely uses the Port::buffer
method.
Safety
It is unsafe to extract a buffer. Prefer to use one of the type specific wrappers such as
.as_mut_slice()
for audio and .midi_iter
for midi.
sourcepub fn set_latency_range(&self, mode: LatencyType, range: (Frames, Frames))
pub fn set_latency_range(&self, mode: LatencyType, range: (Frames, Frames))
Set the minimum and maximum latencies defined by mode for port, in frames.
The range
argument is a tuple of (min, max)
.
See Managing and determining latency for a description of what the latency values mean and some best practices. This function should only be used inside a latency callback.
sourcepub fn get_latency_range(&self, mode: LatencyType) -> (Frames, Frames)
pub fn get_latency_range(&self, mode: LatencyType) -> (Frames, Frames)
Returns a tuple of the minimum and maximum latencies defined by mode for port, in frames.
See Managing and determining latency for a description of what the latency values mean and some best practices. This is normally used in the LatencyCallback. and therefore safe to execute from callbacks.
Trait Implementations§
source§impl<PS> Ord for Port<PS>
impl<PS> Ord for Port<PS>
source§impl<PS> PartialEq<Port<PS>> for Port<PS>
impl<PS> PartialEq<Port<PS>> for Port<PS>
source§impl<PS> PartialOrd<Port<PS>> for Port<PS>
impl<PS> PartialOrd<Port<PS>> for Port<PS>
1.0.0 · source§fn le(&self, other: &Rhs) -> bool
fn le(&self, other: &Rhs) -> bool
self
and other
) and is used by the <=
operator. Read more