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

An instance of a LV2 plugin. More...

#include <LV2Block.hpp>

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

Classes

struct  Response
 

Public Member Functions

 LV2Block (LV2Plugin *plugin, const Raul::Symbol &symbol, bool polyphonic, GraphImpl *parent, SampleRate srate)
 Partially construct a LV2Block. More...
 
bool instantiate (BufferFactory &bufs, const LilvState *state)
 Instantiate self from LV2 plugin descriptor. More...
 
LilvInstance * instance ()
 
bool save_state (const std::string &dir) const
 
BlockImplduplicate (Engine &engine, const Raul::Symbol &symbol, GraphImpl *parent)
 Duplicate this Node. More...
 
bool prepare_poly (BufferFactory &bufs, uint32_t poly)
 Prepare for a new (external) polyphony value. More...
 
bool apply_poly (RunContext &context, Raul::Maid &maid, uint32_t poly)
 Apply a new (external) polyphony value. More...
 
void activate (BufferFactory &bufs)
 Activate this Block. More...
 
void deactivate ()
 Deactivate this Block. More...
 
LV2_Worker_Status work (uint32_t size, const void *data)
 
void run (RunContext &context)
 Run block for a portion of process cycle (called from process()). More...
 
void post_process (RunContext &context)
 Do whatever needs doing in the process thread after process() is called.
 
LilvState * load_preset (const Raul::URI &uri)
 Load a preset from the world for this block. More...
 
void apply_state (Worker *worker, const LilvState *state)
 Restore state. More...
 
boost::optional< Resourcesave_preset (const Raul::URI &bundle, const Properties &props)
 Save current state as preset. More...
 
void set_port_buffer (uint32_t voice, uint32_t port_num, BufferRef buf, SampleCount offset)
 Set the buffer of a port to a given buffer (e.g. More...
 
- Public Member Functions inherited from Ingen::Server::BlockImpl
 BlockImpl (PluginImpl *plugin, const Raul::Symbol &symbol, bool poly, GraphImpl *parent, SampleRate rate)
 
virtual GraphType graph_type () const
 
bool activated () const
 Return true iff this block is activated.
 
bool enabled () const
 Return true iff this block is enabled (not bypassed). More...
 
void set_enabled (bool e)
 Enable or disable (bypass) this block. More...
 
virtual void learn ()
 Learn the next incoming MIDI event (for internals)
 
virtual void pre_process (RunContext &context)
 Do whatever needs doing in the process thread before process() is called.
 
virtual void process (RunContext &context)
 Run block for an entire process cycle (calls run()). More...
 
virtual Nodeport (uint32_t index) const
 
virtual PortImplport_impl (uint32_t index) const
 
virtual PortImplport_by_symbol (const char *symbol)
 Get a port by symbol. More...
 
std::set< BlockImpl * > & providers ()
 Blocks that are connected to this Block's inputs. More...
 
std::set< BlockImpl * > & dependants ()
 Blocks that are connected to this Block's outputs. More...
 
virtual void set_polyphonic (bool p)
 Flag block as polyphonic. More...
 
virtual const Resourceplugin () const
 Information about the Plugin this Block is an instance of. More...
 
virtual const PluginImplplugin_impl () const
 Information about the Plugin this Block is an instance of. More...
 
virtual void plugin (PluginImpl *pi)
 
virtual void set_buffer_size (RunContext &context, BufferFactory &bufs, LV2_URID type, uint32_t size)
 
GraphImplparent_graph () const
 The Graph this Block belongs to. More...
 
uint32_t num_ports () const
 
virtual uint32_t polyphony () const
 
Mark get_mark () const
 
void set_mark (Mark m)
 
- 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...
 
const Raul::Path & path () const
 
- Public Member Functions inherited from Ingen::Node
Arcs & arcs ()
 
const Arcs & arcs () 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 ()
 

Static Public Member Functions

static LilvState * load_state (World *world, const std::string &path)
 
- 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 Types

typedef Raul::Array< SPtr< void > > Instances
 
typedef boost::intrusive::slist< Response, boost::intrusive::cache_last< true >, boost::intrusive::constant_time_size< false > > Responses
 

Protected Member Functions

SPtr< LilvInstance > make_instance (URIs &uris, SampleRate rate, uint32_t voice, bool preparing)
 
LilvInstance * instance (uint32_t voice)
 
- Protected Member Functions inherited from Ingen::Server::BlockImpl
PortImplnth_port_by_type (uint32_t n, bool input, PortType type)
 
- 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
 

Static Protected Member Functions

static LV2_Worker_Status work_respond (LV2_Worker_Respond_Handle handle, uint32_t size, const void *data)
 

Protected Attributes

LV2Plugin_lv2_plugin
 
Instances_instances
 
Instances_prepared_instances
 
const LV2_Worker_Interface * _worker_iface
 
std::mutex _work_mutex
 
Responses _responses
 
SPtr< LV2Features::FeatureArray_features
 
- Protected Attributes inherited from Ingen::Server::BlockImpl
PluginImpl_plugin
 
Raul::Array< PortImpl * > * _ports
 Access in audio thread only.
 
uint32_t _polyphony
 
std::set< BlockImpl * > _providers
 Blocks connected to this one's input ports.
 
std::set< BlockImpl * > _dependants
 Blocks this one's output ports are connected to.
 
Mark _mark
 Mark for graph compilation algorithm.
 
bool _polyphonic
 
bool _activated
 
bool _enabled
 
- 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::Server::BlockImpl
enum  Mark {
  UNVISITED,
  VISITING,
  VISITED
}
 Mark used during graph compilation.
 
- 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
}
 

Detailed Description

An instance of a LV2 plugin.

Constructor & Destructor Documentation

§ LV2Block()

Ingen::Server::LV2Block::LV2Block ( LV2Plugin plugin,
const Raul::Symbol &  symbol,
bool  polyphonic,
GraphImpl parent,
SampleRate  srate 
)

Partially construct a LV2Block.

Object is not usable until instantiate() is called with success. (It will crash!)

References Ingen::Server::BlockImpl::_ports, Ingen::Server::Buffer::nframes(), Ingen::Server::BlockImpl::parent_graph(), and Ingen::Resource::type().

Referenced by duplicate().

Member Function Documentation

§ instantiate()

bool Ingen::Server::LV2Block::instantiate ( BufferFactory bufs,
const LilvState *  state 
)

Instantiate self from LV2 plugin descriptor.

Implemented as a seperate function (rather than in the constructor) to allow graceful error-catching of broken plugins.

Returns whether or not plugin was successfully instantiated. If return value is false, this object may not be used.

References Ingen::Server::BlockImpl::_ports, Ingen::Resource::add_property(), apply_state(), load_preset(), Ingen::Server::BlockImpl::parent_graph(), Ingen::Server::Driver::sample_rate(), and Ingen::Resource::type().

§ duplicate()

BlockImpl * Ingen::Server::LV2Block::duplicate ( Engine engine,
const Raul::Symbol &  symbol,
GraphImpl parent 
)
virtual

§ prepare_poly()

bool Ingen::Server::LV2Block::prepare_poly ( BufferFactory bufs,
uint32_t  poly 
)
virtual

Prepare for a new (external) polyphony value.

Preprocessor thread, poly is actually applied by apply_poly.

Returns
true on success.

Reimplemented from Ingen::Server::BlockImpl.

References Ingen::Server::BlockImpl::prepare_poly(), and Ingen::Server::Driver::sample_rate().

§ apply_poly()

bool Ingen::Server::LV2Block::apply_poly ( RunContext context,
Raul::Maid &  maid,
uint32_t  poly 
)
virtual

Apply a new (external) polyphony value.

Parameters
contextProcess context (process thread only).
polyMust be <= the most recent value passed to prepare_poly.
maidAny objects no longer needed will be pushed to this

Reimplemented from Ingen::Server::BlockImpl.

References Ingen::Server::BlockImpl::apply_poly().

§ activate()

void Ingen::Server::LV2Block::activate ( BufferFactory bufs)
virtual

Activate this Block.

This function must be called in a non-realtime thread before it is inserted in to a graph. Any non-realtime actions that need to be done before the Block is ready for use should be done here.

Reimplemented from Ingen::Server::BlockImpl.

References Ingen::Server::BlockImpl::activate().

§ deactivate()

void Ingen::Server::LV2Block::deactivate ( )
virtual

Deactivate this Block.

This function must be called in a non-realtime thread after the block has been removed from its graph (i.e. processing is finished).

Reimplemented from Ingen::Server::BlockImpl.

References Ingen::Server::BlockImpl::deactivate(), and Ingen::Server::BlockImpl::parent_graph().

§ run()

void Ingen::Server::LV2Block::run ( RunContext context)
virtual

Run block for a portion of process cycle (called from process()).

Implements Ingen::Server::BlockImpl.

§ load_preset()

LilvState * Ingen::Server::LV2Block::load_preset ( const Raul::URI &  uri)
virtual

Load a preset from the world for this block.

Reimplemented from Ingen::Server::BlockImpl.

Referenced by instantiate().

§ apply_state()

void Ingen::Server::LV2Block::apply_state ( Worker worker,
const LilvState *  state 
)
virtual

§ save_preset()

boost::optional< Resource > Ingen::Server::LV2Block::save_preset ( const Raul::URI &  bundle,
const Properties props 
)
virtual

Save current state as preset.

Reimplemented from Ingen::Server::BlockImpl.

References Ingen::Server::BlockImpl::parent_graph(), and Ingen::Resource::set_property().

§ set_port_buffer()

void Ingen::Server::LV2Block::set_port_buffer ( uint32_t  voice,
uint32_t  port_num,
BufferRef  buf,
SampleCount  offset 
)
virtual

Set the buffer of a port to a given buffer (e.g.

connect plugin to buffer)

Reimplemented from Ingen::Server::BlockImpl.

References Ingen::Server::BlockImpl::_ports, and Ingen::Server::BlockImpl::set_port_buffer().


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