Csound and CsoundAC API 5.13
Public Member Functions | Data Fields | Protected Member Functions | Protected Attributes

csound::Lindenmayer Class Reference

This class implements a Lindenmayer system in music space for a turtle that writes either notes into a score, or Jones-Parks grains into a memory soundfile. More...

#include <Lindenmayer.hpp>

Inheritance diagram for csound::Lindenmayer:

Public Member Functions

virtual void addChild (Node *node)
virtual void addRule (std::string command, std::string replacement)
virtual void clear ()
virtual ublas::matrix< double > createTransform ()
virtual double & element (size_t row, size_t column)
virtual void generate ()
virtual double getAngle () const
virtual std::string getAxiom () const
virtual int getIterationCount () const
virtual ublas::matrix< double > getLocalCoordinates () const
 Returns the local transformation of coordinate system.
virtual std::string getReplacement (std::string command)
virtual ScoregetScore ()
 Lindenmayer ()
virtual void produceOrTransform (Score &score, size_t beginAt, size_t endAt, const ublas::matrix< double > &coordinates)
 The default implementation does nothing.
virtual void setAngle (double angle)
virtual void setAxiom (std::string axiom)
virtual void setElement (size_t row, size_t column, double value)
virtual void setIterationCount (int count)
virtual ublas::matrix< double > traverse (const ublas::matrix< double > &globalCoordinates, Score &score)
 The default implementation postconcatenates its own local coordinate system with the global coordinates, then passes the score and the product of coordinate systems to each child, thus performing a depth-first traversal of the music graph.
virtual ~Lindenmayer ()

Data Fields

std::vector< Node * > children
 Child Nodes, if any.
std::string importFilename

Protected Member Functions

virtual ublas::matrix< double > createRotation (int dimension1, int dimension2, double angle) const
virtual int getDimension (char dimension) const
virtual void initialize ()
virtual void interpret (std::string command, bool render)
virtual void rewrite ()
virtual void updateActual (Event &event)

Protected Attributes

double angle
std::string axiom
clock_t beganAt
clock_t elapsed
clock_t endedAt
int iterationCount
ublas::matrix< double > localCoordinates
std::map< std::string,
std::string > 
rules
Score score
Event turtle
Event turtleOrientation
std::stack< EventturtleOrientationStack
std::stack< EventturtleStack
Event turtleStep
std::stack< EventturtleStepStack

Detailed Description

This class implements a Lindenmayer system in music space for a turtle that writes either notes into a score, or Jones-Parks grains into a memory soundfile.

The Z dimension of note space is used for chirp rate. The actions of the turtle are rescaled to fit the specified bounding hypercube. The turtle commands are represented by letters (all n default to 1):

The abbreviations for the dimensions are:

  1. i = instrument
  2. t = time
  3. d = duration
  4. k = MIDI key number
  5. v = MIDI velocity number
  6. p = phase
  7. x = pan
  8. y = height
  9. z = depth
  10. s = pitch-class set as Mason number

Constructor & Destructor Documentation

csound::Lindenmayer::Lindenmayer ( )
virtual csound::Lindenmayer::~Lindenmayer ( ) [virtual]

Member Function Documentation

virtual void csound::Node::addChild ( Node node) [virtual, inherited]
virtual void csound::Lindenmayer::addRule ( std::string  command,
std::string  replacement 
) [virtual]
virtual void csound::Lindenmayer::clear ( ) [virtual]

Reimplemented from csound::Node.

virtual ublas::matrix<double> csound::Lindenmayer::createRotation ( int  dimension1,
int  dimension2,
double  angle 
) const [protected, virtual]
virtual ublas::matrix<double> csound::Node::createTransform ( ) [virtual, inherited]
virtual double& csound::Node::element ( size_t  row,
size_t  column 
) [virtual, inherited]
virtual void csound::Lindenmayer::generate ( ) [virtual]
virtual double csound::Lindenmayer::getAngle ( ) const [virtual]
virtual std::string csound::Lindenmayer::getAxiom ( ) const [virtual]
virtual int csound::Lindenmayer::getDimension ( char  dimension) const [protected, virtual]
virtual int csound::Lindenmayer::getIterationCount ( ) const [virtual]
virtual ublas::matrix<double> csound::Node::getLocalCoordinates ( ) const [virtual, inherited]

Returns the local transformation of coordinate system.

virtual std::string csound::Lindenmayer::getReplacement ( std::string  command) [virtual]
virtual Score& csound::ScoreNode::getScore ( ) [virtual, inherited]
virtual void csound::Lindenmayer::initialize ( ) [protected, virtual]
virtual void csound::Lindenmayer::interpret ( std::string  command,
bool  render 
) [protected, virtual]
virtual void csound::ScoreNode::produceOrTransform ( Score score,
size_t  beginAt,
size_t  endAt,
const ublas::matrix< double > &  compositeCordinates 
) [virtual, inherited]

The default implementation does nothing.

Derived nodes that produce notes from scratch should transform them using the composite transformation of coordinate system, which is passed in from the traverse() function.

Reimplemented from csound::Node.

Reimplemented in csound::Cell, csound::Hocket, csound::MCRM, and csound::Rescale.

virtual void csound::Lindenmayer::rewrite ( ) [protected, virtual]
virtual void csound::Lindenmayer::setAngle ( double  angle) [virtual]
virtual void csound::Lindenmayer::setAxiom ( std::string  axiom) [virtual]
virtual void csound::Node::setElement ( size_t  row,
size_t  column,
double  value 
) [virtual, inherited]
virtual void csound::Lindenmayer::setIterationCount ( int  count) [virtual]
virtual ublas::matrix<double> csound::Node::traverse ( const ublas::matrix< double > &  globalCoordinates,
Score score 
) [virtual, inherited]

The default implementation postconcatenates its own local coordinate system with the global coordinates, then passes the score and the product of coordinate systems to each child, thus performing a depth-first traversal of the music graph.

Reimplemented in csound::Hocket, and csound::Sequence.

virtual void csound::Lindenmayer::updateActual ( Event event) [protected, virtual]

Field Documentation

double csound::Lindenmayer::angle [protected]
std::string csound::Lindenmayer::axiom [protected]
clock_t csound::Lindenmayer::beganAt [protected]
std::vector<Node *> csound::Node::children [inherited]

Child Nodes, if any.

clock_t csound::Lindenmayer::elapsed [protected]
clock_t csound::Lindenmayer::endedAt [protected]
std::string csound::ScoreNode::importFilename [inherited]
ublas::matrix<double> csound::Node::localCoordinates [protected, inherited]
std::map<std::string, std::string> csound::Lindenmayer::rules [protected]
Score csound::ScoreNode::score [protected, inherited]
std::stack<Event> csound::Lindenmayer::turtleStack [protected]