Ingen  0.5.1
Public Types | Public Member Functions | Protected Attributes | List of all members
Ingen::Server::InputPort Class Reference

An input port on a Block or Graph. More...

#include <InputPort.hpp>

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

Public Types

typedef boost::intrusive::slist< ArcImpl, boost::intrusive::constant_time_size< false > > Arcs
 
- 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
}
 

Public Member Functions

 InputPort (BufferFactory &bufs, BlockImpl *parent, const Raul::Symbol &symbol, uint32_t index, uint32_t poly, PortType type, LV2_URID buffer_type, const Atom &value, size_t buffer_size=0)
 
virtual uint32_t max_tail_poly (RunContext &context) const
 Return the maximum polyphony of an output connected to this input. More...
 
bool apply_poly (RunContext &context, Raul::Maid &maid, uint32_t poly)
 Apply a new polyphony value. More...
 
void add_arc (RunContext &context, ArcImpl *c)
 Add an arc. More...
 
ArcImplremove_arc (RunContext &context, const OutputPort *tail)
 Remove an arc. More...
 
bool get_buffers (BufferFactory &bufs, Raul::Array< Voice > *voices, uint32_t poly, bool real_time) const
 Set voices as the buffers to be used for this port. More...
 
void pre_process (RunContext &context)
 Set up buffer pointers. More...
 
void pre_run (RunContext &context)
 Prepare buffer for access, mixing if necessary. More...
 
void post_process (RunContext &context)
 Prepare buffer for next process cycle. More...
 
SampleCount next_value_offset (SampleCount offset, SampleCount end) const
 Return offset of the first value change after offset. More...
 
void update_values (SampleCount offset, uint32_t voice)
 Update value buffer for voice to be current as of offset. More...
 
size_t num_arcs () const
 Pre-process thread.
 
void increment_num_arcs ()
 
void decrement_num_arcs ()
 
bool is_input () const
 
bool is_output () const
 
bool direct_connect () const
 
- Public Member Functions inherited from Ingen::Server::PortImpl
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...
 
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 clear_buffers ()
 Empty buffer contents completely (ie silence)
 
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 ()
 
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)
 
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 Attributes

size_t _num_arcs
 Pre-process thread.
 
Arcs _arcs
 Audio thread.
 
- Protected Attributes inherited from Ingen::Server::PortImpl
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

- 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...
 
- Protected Member Functions inherited from Ingen::Server::PortImpl
 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
 

Detailed Description

An input port on a Block or Graph.

All ports have a Buffer, but the actual contents (data) of that buffer may be set directly to the incoming arc's buffer if there's only one inbound arc, to eliminate the need to copy/mix.

If a port has multiple arcs, they will be mixed down into the local buffer and it will be used.

Member Function Documentation

§ max_tail_poly()

uint32_t Ingen::Server::InputPort::max_tail_poly ( RunContext context) const
virtual

Return the maximum polyphony of an output connected to this input.

Reimplemented in Ingen::Server::DuplexPort.

§ apply_poly()

bool Ingen::Server::InputPort::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.

Reimplemented from Ingen::Server::PortImpl.

§ add_arc()

void Ingen::Server::InputPort::add_arc ( RunContext context,
ArcImpl c 
)

Add an arc.

Realtime safe.

The buffer of this port will be set directly to the arc's buffer if there is only one arc, since no copying/mixing needs to take place.

setup_buffers() must be called later for the change to take effect.

§ remove_arc()

ArcImpl * Ingen::Server::InputPort::remove_arc ( RunContext context,
const OutputPort tail 
)

Remove an arc.

Realtime safe.

setup_buffers() must be called later for the change to take effect.

§ get_buffers()

bool Ingen::Server::InputPort::get_buffers ( BufferFactory bufs,
Raul::Array< Voice > *  voices,
uint32_t  poly,
bool  real_time 
) const
virtual

Set voices as the buffers to be used for this port.

Returns
true iff buffers are locally owned by the port

Implements Ingen::Server::PortImpl.

Referenced by Ingen::Server::DuplexPort::on_property().

§ pre_process()

void Ingen::Server::InputPort::pre_process ( RunContext context)
virtual

Set up buffer pointers.

Implements Ingen::Server::PortImpl.

Referenced by Ingen::Server::DuplexPort::pre_process().

§ pre_run()

void Ingen::Server::InputPort::pre_run ( RunContext context)
virtual

Prepare buffer for access, mixing if necessary.

Reimplemented from Ingen::Server::PortImpl.

Referenced by Ingen::Server::DuplexPort::pre_process().

§ post_process()

void Ingen::Server::InputPort::post_process ( RunContext context)
virtual

Prepare buffer for next process cycle.

Implements Ingen::Server::PortImpl.

§ next_value_offset()

SampleCount Ingen::Server::InputPort::next_value_offset ( SampleCount  offset,
SampleCount  end 
) const
virtual

Return offset of the first value change after offset.

Reimplemented from Ingen::Server::PortImpl.

§ update_values()

void Ingen::Server::InputPort::update_values ( SampleCount  offset,
uint32_t  voice 
)
virtual

Update value buffer for voice to be current as of offset.

Implements Ingen::Server::PortImpl.


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