Ingen  0.5.1
Classes | Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
Ingen::Server::PortImpl Class Referenceabstract

A port (input or output) on a Block. More...

#include <PortImpl.hpp>

+ Inheritance diagram for Ingen::Server::PortImpl:
+ Collaboration diagram for Ingen::Server::PortImpl:

Classes

struct  SetState
 
struct  Voice
 

Public Member Functions

virtual GraphType graph_type () const
 
BlockImplparent_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 Atomvalue () const
 
void set_value (const Atom &v)
 
const Atomminimum () const
 
const Atommaximum () 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 ()
 
BufferFactorybufs () 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
 
- Public Member Functions inherited from Ingen::Server::NodeImpl
const Raul::Symbol & symbol () const
 
Nodegraph_parent () const
 
NodeImplparent () const
 
virtual void set_path (const Raul::Path &new_path)
 Rename.
 
const Atomget_property (const Raul::URI &key) const
 Get a single property value. More...
 
virtual GraphImplparent_graph () const
 The Graph this object is a child of. More...
 
const Raul::Path & path () const
 
- Public Member Functions inherited from Ingen::Node
Arcs & arcs ()
 
const Arcs & arcs () const
 
virtual uint32_t num_ports () const
 
virtual Nodeport (uint32_t index) const
 
virtual const Resourceplugin () const
 
virtual LilvInstance * instance ()
 
virtual bool save_state (const std::string &dir) const
 
Raul::URI base_uri () const
 
- Public Member Functions inherited from Ingen::Resource
 Resource (const URIs &uris, const Raul::URI &uri)
 
Resourceoperator= (const Resource &rhs)
 
virtual const Atomset_property (const Raul::URI &uri, const Atom &value, Graph ctx=Graph::DEFAULT)
 Set (replace) a property value. More...
 
virtual const Atomset_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 URIsuris () const
 
const Raul::URI & uri () const
 
const Propertiesproperties () const
 
Propertiesproperties ()
 

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)
 
- Protected Member Functions inherited from Ingen::Server::NodeImpl
 NodeImpl (const Ingen::URIs &uris, NodeImpl *parent, const Raul::Symbol &symbol)
 
- Protected Member Functions inherited from Ingen::Node
 Node (const URIs &uris, const Raul::Path &path)
 
- Protected Member Functions inherited from Ingen::Resource
const Atomset_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
 
- Protected Attributes inherited from Ingen::Server::NodeImpl
NodeImpl_parent
 
Raul::Path _path
 
Raul::Symbol _symbol
 
- Protected Attributes inherited from Ingen::Node
Arcs _arcs
 Graphs only.
 
- Protected Attributes inherited from Ingen::Resource
const URIs_uris
 

Additional Inherited Members

- Public Types inherited from Ingen::Node
enum  GraphType {
  GRAPH,
  BLOCK,
  PORT
}
 
typedef std::pair< const Node *, const Node * > ArcsKey
 
typedef std::map< ArcsKey, SPtr< Arc > > Arcs
 
- Public Types inherited from Ingen::Resource
enum  Graph {
  DEFAULT,
  EXTERNAL,
  INTERNAL
}
 
- Static Public Member Functions inherited from Ingen::Node
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 Public Member Functions inherited from Ingen::Resource
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...
 

Detailed Description

A port (input or output) on a Block.

Member Function Documentation

§ set_voices()

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.

§ prepare_poly()

bool Ingen::Server::PortImpl::prepare_poly ( BufferFactory bufs,
uint32_t  poly 
)
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().

§ apply_poly()

bool Ingen::Server::PortImpl::apply_poly ( RunContext context,
Raul::Maid &  maid,
uint32_t  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().

§ set_is_driver_port()

void Ingen::Server::PortImpl::set_is_driver_port ( BufferFactory bufs)
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().

§ inherit_neighbour()

virtual void Ingen::Server::PortImpl::inherit_neighbour ( const PortImpl port,
Resource::Properties remove,
Resource::Properties add 
)
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.

§ is_monitored()

bool Ingen::Server::PortImpl::is_monitored ( ) const
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().

§ enable_monitoring()

void Ingen::Server::PortImpl::enable_monitoring ( bool  monitored)
inline

Explicitly turn on monitoring for this port.

§ monitor()

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().

§ next_value_offset()

SampleCount Ingen::Server::PortImpl::next_value_offset ( SampleCount  offset,
SampleCount  end 
) const
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().

§ update_values()

virtual void Ingen::Server::PortImpl::update_values ( SampleCount  offset,
uint32_t  voice 
)
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().


The documentation for this class was generated from the following files: