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

A Block in a Graph (which is also a Block). More...

#include <BlockImpl.hpp>

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

Public Types

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
}
 

Public Member Functions

 BlockImpl (PluginImpl *plugin, const Raul::Symbol &symbol, bool poly, GraphImpl *parent, SampleRate rate)
 
virtual GraphType graph_type () const
 
virtual void activate (BufferFactory &bufs)
 Activate this Block. More...
 
virtual void deactivate ()
 Deactivate this Block. More...
 
virtual BlockImplduplicate (Engine &engine, const Raul::Symbol &symbol, GraphImpl *parent)
 Duplicate this Node. More...
 
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 LilvState * load_preset (const Raul::URI &uri)
 Load a preset from the world for this block. More...
 
virtual void apply_state (Worker *worker, const LilvState *state)
 Restore state. More...
 
virtual boost::optional< Resourcesave_preset (const Raul::URI &bundle, const Properties &props)
 Save current state as preset. 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 void run (RunContext &context)=0
 Run block for a portion of process cycle (called from process()). More...
 
virtual void post_process (RunContext &context)
 Do whatever needs doing in the process thread after process() is called.
 
virtual 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...
 
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 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 (external) polyphony value. 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
 
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

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
 

Protected Attributes

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

- 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 Block in a Graph (which is also a Block).

This is what is often called a "Module" in modular synthesizers. A Block is a unit with input/output ports, a process() method, and some other things.

Member Function Documentation

§ activate()

void Ingen::Server::BlockImpl::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 in Ingen::Server::GraphImpl, Ingen::Server::LV2Block, and Ingen::Server::Internals::BlockDelayNode.

Referenced by Ingen::Server::LV2Block::activate(), and Ingen::Server::GraphImpl::duplicate().

§ deactivate()

void Ingen::Server::BlockImpl::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 in Ingen::Server::GraphImpl, and Ingen::Server::LV2Block.

Referenced by Ingen::Server::LV2Block::deactivate().

§ duplicate()

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

§ enabled()

bool Ingen::Server::BlockImpl::enabled ( ) const
inline

Return true iff this block is enabled (not bypassed).

§ set_enabled()

void Ingen::Server::BlockImpl::set_enabled ( bool  e)
inline

Enable or disable (bypass) this block.

Referenced by Ingen::Server::Events::Delta::post_process().

§ load_preset()

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

Load a preset from the world for this block.

Reimplemented in Ingen::Server::LV2Block.

§ apply_state()

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

Restore state.

Reimplemented in Ingen::Server::LV2Block.

Referenced by Ingen::Server::Events::Delta::post_process().

§ save_preset()

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

Save current state as preset.

Reimplemented in Ingen::Server::LV2Block.

§ process()

void Ingen::Server::BlockImpl::process ( RunContext context)
virtual

Run block for an entire process cycle (calls run()).

Reimplemented in Ingen::Server::GraphImpl.

References Ingen::Server::PortImpl::next_value_offset().

Referenced by Ingen::Server::Task::run().

§ run()

virtual void Ingen::Server::BlockImpl::run ( RunContext context)
pure virtual

§ set_port_buffer()

void Ingen::Server::BlockImpl::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 in Ingen::Server::LV2Block.

Referenced by Ingen::Server::LV2Block::set_port_buffer().

§ port_by_symbol()

PortImpl * Ingen::Server::BlockImpl::port_by_symbol ( const char *  symbol)
virtual

Get a port by symbol.

Referenced by Ingen::Server::LV2Block::apply_state().

§ providers()

std::set<BlockImpl*>& Ingen::Server::BlockImpl::providers ( )
inline

Blocks that are connected to this Block's inputs.

§ dependants()

std::set<BlockImpl*>& Ingen::Server::BlockImpl::dependants ( )
inline

Blocks that are connected to this Block's outputs.

§ set_polyphonic()

virtual void Ingen::Server::BlockImpl::set_polyphonic ( bool  p)
inlinevirtual

Flag block as polyphonic.

Note this will not actually allocate voices etc., prepare_poly and apply_poly must be called after this function to truly make a block polyphonic.

§ prepare_poly()

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

Implements Ingen::Server::NodeImpl.

Reimplemented in Ingen::Server::LV2Block, and Ingen::Server::Internals::NoteNode.

Referenced by Ingen::Server::LV2Block::prepare_poly().

§ apply_poly()

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

Implements Ingen::Server::NodeImpl.

Reimplemented in Ingen::Server::LV2Block, and Ingen::Server::Internals::NoteNode.

Referenced by Ingen::Server::LV2Block::apply_poly().

§ plugin()

const Resource * Ingen::Server::BlockImpl::plugin ( ) const
virtual

Information about the Plugin this Block is an instance of.

Not the best name - not all blocks come from plugins (ie Graph)

Reimplemented from Ingen::Node.

Referenced by Ingen::Server::BlockFactory::refresh().

§ plugin_impl()

const PluginImpl * Ingen::Server::BlockImpl::plugin_impl ( ) const
virtual

Information about the Plugin this Block is an instance of.

Not the best name - not all blocks come from plugins (ie Graph)

§ parent_graph()

GraphImpl* Ingen::Server::BlockImpl::parent_graph ( ) const
inlinevirtual

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