Ingen
0.5.1
|
A port (input or output) on a Block. More...
#include <PortImpl.hpp>
Classes | |
struct | SetState |
struct | Voice |
Public Member Functions | |
virtual GraphType | graph_type () const |
BlockImpl * | parent_block () const |
A port's parent is always a block, so static cast should be safe. | |
Raul::Array< Voice > * | set_voices (RunContext &context, Raul::Array< Voice > *voices) |
Set the buffers array for this port. More... | |
virtual bool | prepare_poly (BufferFactory &bufs, uint32_t poly) |
Prepare for a new (external) polyphony value. More... | |
virtual bool | apply_poly (RunContext &context, Raul::Maid &maid, uint32_t poly) |
Apply a new polyphony value. More... | |
const Atom & | value () const |
void | set_value (const Atom &v) |
const Atom & | minimum () const |
const Atom & | maximum () const |
void | set_minimum (const Atom &min) |
void | set_maximum (const Atom &max) |
BufferRef | buffer (uint32_t voice) const |
BufferRef | prepared_buffer (uint32_t voice) const |
void | update_set_state (RunContext &context, uint32_t voice) |
void | set_voice_value (const RunContext &context, uint32_t voice, FrameTime time, Sample value) |
void | set_control_value (const RunContext &context, FrameTime time, Sample value) |
virtual void | set_is_driver_port (BufferFactory &bufs) |
Prepare this port to use an external driver-provided buffer. More... | |
bool | is_driver_port () const |
virtual void | pre_process (RunContext &context)=0 |
Called once per process cycle. | |
virtual void | pre_run (RunContext &context) |
virtual void | post_process (RunContext &context)=0 |
virtual void | clear_buffers () |
Empty buffer contents completely (ie silence) | |
virtual bool | get_buffers (BufferFactory &bufs, Raul::Array< Voice > *voices, uint32_t poly, bool real_time) const =0 |
void | setup_buffers (BufferFactory &bufs, uint32_t poly, bool real_time) |
void | activate (BufferFactory &bufs) |
void | deactivate () |
virtual void | inherit_neighbour (const PortImpl *port, Resource::Properties &remove, Resource::Properties &add) |
Inherit any properties from a connected neighbour. More... | |
virtual void | connect_buffers (SampleCount offset=0) |
virtual void | recycle_buffers () |
virtual bool | is_input () const =0 |
virtual bool | is_output () const =0 |
uint32_t | index () const |
bool | is_a (PortType type) const |
bool | has_value () const |
PortType | type () const |
LV2_URID | buffer_type () const |
bool | supports (const URIs::Quark &value_type) const |
size_t | buffer_size () const |
uint32_t | poly () const |
uint32_t | prepared_poly () const |
void | set_buffer_size (RunContext &context, BufferFactory &bufs, size_t size) |
bool | is_monitored () const |
Return true iff this port is explicitly monitored. More... | |
void | enable_monitoring (bool monitored) |
Explicitly turn on monitoring for this port. More... | |
void | monitor (RunContext &context, bool send_now=false) |
Monitor port value and broadcast to clients periodically. More... | |
void | raise_set_by_user_flag () |
BufferFactory & | bufs () const |
BufferRef | value_buffer (uint32_t voice) |
virtual SampleCount | next_value_offset (SampleCount offset, SampleCount end) const |
Return offset of the first value change after offset . More... | |
virtual void | update_values (SampleCount offset, uint32_t voice)=0 |
Update value buffer for voice to be current as of offset . More... | |
void | force_monitor_update () |
void | set_morphable (bool is_morph, bool is_auto_morph) |
void | set_type (PortType port_type, LV2_URID buffer_type) |
void | cache_properties () |
bool | is_morph () const |
bool | is_auto_morph () const |
bool | is_logarithmic () const |
bool | is_sample_rate () const |
bool | is_toggled () const |
![]() | |
const Raul::Symbol & | symbol () const |
Node * | graph_parent () const |
NodeImpl * | parent () const |
virtual void | set_path (const Raul::Path &new_path) |
Rename. | |
const Atom & | get_property (const Raul::URI &key) const |
Get a single property value. More... | |
virtual GraphImpl * | parent_graph () const |
The Graph this object is a child of. More... | |
const Raul::Path & | path () const |
![]() | |
Arcs & | arcs () |
const Arcs & | arcs () const |
virtual uint32_t | num_ports () const |
virtual Node * | port (uint32_t index) const |
virtual const Resource * | plugin () const |
virtual LilvInstance * | instance () |
virtual bool | save_state (const std::string &dir) const |
Raul::URI | base_uri () const |
![]() | |
Resource (const URIs &uris, const Raul::URI &uri) | |
Resource & | operator= (const Resource &rhs) |
virtual const Atom & | set_property (const Raul::URI &uri, const Atom &value, Graph ctx=Graph::DEFAULT) |
Set (replace) a property value. More... | |
virtual const Atom & | set_property (const Raul::URI &uri, const URIs::Quark &value, Graph ctx=Graph::DEFAULT) |
Set (replace) a property value. More... | |
virtual bool | add_property (const Raul::URI &uri, const Atom &value, Graph ctx=Graph::DEFAULT) |
Add a property value. More... | |
virtual void | remove_property (const Raul::URI &uri, const Atom &value) |
Remove a property. More... | |
virtual void | remove_property (const Raul::URI &uri, const URIs::Quark &value) |
Remove a property. More... | |
virtual bool | has_property (const Raul::URI &uri, const Atom &value) const |
Return true iff a property is set with a specific value. More... | |
virtual bool | has_property (const Raul::URI &uri, const URIs::Quark &value) const |
Return true iff a property is set with a specific value. More... | |
void | set_properties (const Properties &p) |
Set (replace) several properties at once. More... | |
void | add_properties (const Properties &p) |
Add several properties at once. More... | |
void | remove_properties (const Properties &p) |
Remove several properties at once. More... | |
virtual void | on_property (const Raul::URI &uri, const Atom &value) |
Hook called whenever a property is added. More... | |
virtual void | on_property_removed (const Raul::URI &uri, const Atom &value) |
Hook called whenever a property value is removed. More... | |
virtual void | set_uri (const Raul::URI &uri) |
Properties | properties (Resource::Graph ctx) const |
Get all the properties with a given context. More... | |
const URIs & | uris () const |
const Raul::URI & | uri () const |
const Properties & | properties () const |
Properties & | properties () |
Protected Member Functions | |
PortImpl (BufferFactory &bufs, BlockImpl *block, const Raul::Symbol &name, uint32_t index, uint32_t poly, PortType type, LV2_URID buffer_type, const Atom &value, size_t buffer_size) | |
![]() | |
NodeImpl (const Ingen::URIs &uris, NodeImpl *parent, const Raul::Symbol &symbol) | |
![]() | |
Node (const URIs &uris, const Raul::Path &path) | |
![]() | |
const Atom & | set_property (const Raul::URI &uri, const Atom &value) const |
Protected Attributes | |
BufferFactory & | _bufs |
uint32_t | _index |
uint32_t | _poly |
uint32_t | _buffer_size |
uint32_t | _frames_since_monitor |
float | _monitor_value |
float | _peak |
PortType | _type |
LV2_URID | _buffer_type |
Atom | _value |
Atom | _min |
Atom | _max |
Raul::Array< Voice > * | _voices |
Raul::Array< Voice > * | _prepared_voices |
bool | _monitored |
bool | _force_monitor_update |
bool | _set_by_user |
bool | _is_morph |
bool | _is_auto_morph |
bool | _is_logarithmic |
bool | _is_sample_rate |
bool | _is_toggled |
bool | _is_driver_port |
![]() | |
NodeImpl * | _parent |
Raul::Path | _path |
Raul::Symbol | _symbol |
![]() | |
Arcs | _arcs |
Graphs only. | |
![]() | |
const URIs & | _uris |
Additional Inherited Members | |
![]() | |
enum | GraphType { GRAPH, BLOCK, PORT } |
typedef std::pair< const Node *, const Node * > | ArcsKey |
typedef std::map< ArcsKey, SPtr< Arc > > | Arcs |
![]() | |
enum | Graph { DEFAULT, EXTERNAL, INTERNAL } |
![]() | |
static Raul::URI | main_uri () |
static bool | uri_is_path (const Raul::URI &uri) |
static Raul::Path | uri_to_path (const Raul::URI &uri) |
static Raul::URI | path_to_uri (const Raul::Path &path) |
![]() | |
static Raul::URI | graph_to_uri (Graph g) |
static Graph | uri_to_graph (const char *uri) |
static bool | type (const URIs &uris, const Properties &properties, bool &graph, bool &block, bool &port, bool &is_output) |
Get the ingen type from a set of Properties. More... | |
A port (input or output) on a Block.
Raul::Array< PortImpl::Voice > * Ingen::Server::PortImpl::set_voices | ( | RunContext & | context, |
Raul::Array< Voice > * | voices | ||
) |
Set the buffers array for this port.
Audio thread. Returned value must be freed by caller. buffers must be poly() long
References Ingen::Server::PortImpl::SetState::state, Ingen::Server::PortImpl::SetState::time, and Ingen::Server::PortImpl::SetState::value.
|
virtual |
Prepare for a new (external) polyphony value.
Preprocessor thread, poly is actually applied by apply_poly.
Implements Ingen::Server::NodeImpl.
Reimplemented in Ingen::Server::DuplexPort.
Referenced by Ingen::Server::DuplexPort::prepare_poly().
|
virtual |
Apply a new polyphony value.
Audio thread. poly Must be < the most recent value passed to prepare_poly.
Implements Ingen::Server::NodeImpl.
Reimplemented in Ingen::Server::DuplexPort, and Ingen::Server::InputPort.
Referenced by Ingen::Server::DuplexPort::apply_poly().
|
virtual |
Prepare this port to use an external driver-provided buffer.
This will avoid allocating a buffer for the port, instead the driver buffer is used directly. This only makes sense for ports on the top-level graph, which are monophonic. Non-real-time, must be called before using the port, followed by a call to set_driver_buffer() in the processing thread.
Reimplemented in Ingen::Server::DuplexPort.
Referenced by Ingen::Server::DuplexPort::set_is_driver_port().
|
inlinevirtual |
Inherit any properties from a connected neighbour.
This is used for Graph ports, so e.g. a control input has the range of all the ports it is connected to.
Reimplemented in Ingen::Server::DuplexPort.
|
inline |
Return true iff this port is explicitly monitored.
This is used for plugin UIs which require monitoring for particular ports, even if the Ingen client has not requested broadcasting in general (e.g. for canvas animation).
Referenced by Ingen::Server::RunContext::must_notify().
|
inline |
Explicitly turn on monitoring for this port.
void Ingen::Server::PortImpl::monitor | ( | RunContext & | context, |
bool | send_now = false |
||
) |
Monitor port value and broadcast to clients periodically.
References Ingen::Server::RunContext::must_notify(), and Ingen::Server::RunContext::notify().
Referenced by Ingen::Server::JackDriver::create_port().
|
virtual |
Return offset of the first value change after offset
.
Reimplemented in Ingen::Server::InputPort, Ingen::Server::DuplexPort, and Ingen::Server::OutputPort.
Referenced by Ingen::Server::BlockImpl::process().
|
pure virtual |
Update value buffer for voice
to be current as of offset
.
Implemented in Ingen::Server::InputPort, Ingen::Server::DuplexPort, and Ingen::Server::OutputPort.
Referenced by Ingen::Server::ArcImpl::buffer().