Struct jack::Port

source ·
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>

source

pub fn as_slice<'a>(&'a self, ps: &'a ProcessScope) -> &'a [f32]

Read the received audio data.

source§

impl Port<AudioOut>

source

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>

source

pub fn iter<'a>(&'a self, ps: &'a ProcessScope) -> MidiIter<'a>

Get an iterator over midi events.

source§

impl Port<MidiOut>

source

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>

source

pub fn spec(&self) -> &PS

Returns the spec that was used to create this port.

source

pub fn clone_unowned(&self) -> Port<Unowned>

Return a copy of port as an unowned port that can still be used for querying information.

source

pub fn name(&self) -> Result<String, Error>

Returns the full name of the port, including the “client_name:” prefix.

source

pub fn short_name(&self) -> Result<String, Error>

Returns the short name of the port, it excludes the “client_name:” prefix.

source

pub fn flags(&self) -> PortFlags

The flags for the port. These are set when the port is registered with its client.

source

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.

source

pub fn connected_count(&self) -> Result<usize, Error>

Number of ports connected to/from &self.

source

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.

source

pub fn aliases(&self) -> Result<Vec<String>, Error>

Get the alias names for self.

Will return up to 2 strings.

source

pub fn is_monitoring_input(&self) -> Result<bool, Error>

Returns true if monitoring has been requested for self.

source

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.

source

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.

source

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.

source

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.

source

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.

source

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.

source

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.

source

pub fn raw(&self) -> *mut jack_port_t

Obtain the ffi port pointer.

This is mostly for use within the jack crate itself.

source

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.

source

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.

source

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 Clone for Port<Unowned>

source§

fn clone(&self) -> Self

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<PS: PortSpec> Debug for Port<PS>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl<PS> Hash for Port<PS>

source§

fn hash<H: Hasher>(&self, state: &mut H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)where
H: Hasher,
Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl<PS> Ord for Port<PS>

source§

fn cmp(&self, other: &Self) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Selfwhere
Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Selfwhere
Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Selfwhere
Self: Sized + PartialOrd<Self>,

Restrict a value to a certain interval. Read more
source§

impl<PS> PartialEq<Port<PS>> for Port<PS>

source§

fn eq(&self, other: &Self) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl<PS> PartialOrd<Port<PS>> for Port<PS>

source§

fn partial_cmp(&self, other: &Self) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

This method tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

This method tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

This method tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

This method tests greater than or equal to (for self and other) and is used by the >= operator. Read more
source§

impl<PS> Eq for Port<PS>

source§

impl<PS: PortSpec + Send> Send for Port<PS>

source§

impl<PS: PortSpec + Sync> Sync for Port<PS>

Auto Trait Implementations§

§

impl<PS> RefUnwindSafe for Port<PS>where
PS: RefUnwindSafe,

§

impl<PS> Unpin for Port<PS>where
PS: Unpin,

§

impl<PS> UnwindSafe for Port<PS>where
PS: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere
T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere
T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere
T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere
U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for Twhere
T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere
U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere
U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.