Csound and CsoundAC API  5.17
Public Member Functions | Static Public Member Functions | Data Fields | Protected Attributes
csound::ScoreModel Class Reference

Base class for compositions that use the principle of a music graph to generate a score. More...

#include <ScoreModel.hpp>

+ Inheritance diagram for csound::ScoreModel:

Public Member Functions

virtual void addChild (Node *node)
virtual void clear ()
 Clears the score.
virtual void clearOutputSoundfileName ()
virtual Eigen::MatrixXd createTransform ()
virtual double & element (size_t row, size_t column)
 Returns a reference to the indicated element of the local transformation of coordinate system.
virtual int generate ()
 Generates a score based on a music graph defined by the child nodes of this.
virtual std::string getAlbum () const
virtual std::string getArtist () const
virtual std::string getCdSoundfileName () const
 Returns a soundfile name for a CD audio track based on the filename of this, by appending ".cd.wav" to the filename.
virtual bool getConformPitches () const
 Returns whether or not the pitches in generated scores will be conformed to the nearest equally tempered pitch.
virtual std::string getCopyright () const
virtual std::string getFilename () const
 Returns the filename of this, which is used as a base for derived filenames (soundfile, MIDI file, etc.).
virtual std::string getFomusFilename () const
 Returns a MusicXML filename based on the filename of this, by appending ".fms" to the filename.
virtual std::string getLicense () const
virtual std::string getLilypondFilename () const
 Returns a MusicXML filename based on the filename of this, by appending ".ly" to the filename.
virtual Eigen::MatrixXd getLocalCoordinates () const
 Returns the local transformation of coordinate system.
virtual std::string getMidiFilename () const
 Returns a MIDI filename based on the filename of this, by appending ".mid" to the filename.
virtual std::string getMp3SoundfileName () const
 Returns a soundfile name for an MP3 file based on the filename of this, by appending ".mp3" to the filename.
virtual std::string getMusicXmlFilename () const
 Returns a MusicXML filename based on the filename of this, by appending ".xml" to the filename.
virtual std::string getNormalizedSoundfileName () const
 Returns a soundfile name based on the filename of this, by appending ".norm.wav" to the filename.
virtual std::string getOutputSoundfileName () const
 Returns a soundfile name based on the filename of this, by appending ".wav" to the filename, which is the default, or a non-default ouput name which need not be a file but must be set using setOutputSoundfileName().
virtual ScoregetScore ()
 Return the self-contained Score.
virtual long getThis ()
 Returns the address of this as a long integer.
virtual NodegetThisNode ()
 Returns the address of this as a Node pointer.
virtual std::string getTimestamp () const
 Returns the time the score was generated.
virtual std::string getTitle () const
virtual double getTonesPerOctave () const
 Returns the number of equally tempered intervals per octave (the default is 12, 0 means non-equally tempered).
virtual void initialize ()
virtual int normalizeOutputSoundfile (double levelDb=-3.0)
 Assuming the score has been rendered, uses sox to translate the output soundfile to a normalized soundfile.
virtual int perform ()
 Performs the current score to create an output soundfile, which should be tagged with author, timestamp, copyright, title, and optionally album.
virtual int performAll ()
 Convenience function that calls performMaster(), and translateMaster().
virtual int performMaster ()
 Convenience function that calls saveMidi(), saveMusicXML(), and perform().
virtual int processArgs (const std::vector< std::string > &args)
 Pass the invoking program's command-line arguments to processArgs() and it will perform with possibly back-end-dependent options.
virtual int processArgv (int argc, const char **argv)
 Pass the invoking program's command-line arguments to processArgs() and it will perform with possibly back-end-dependent options.
virtual void produceOrTransform (Score &collectingScore, size_t beginAt, size_t endAt, const Eigen::MatrixXd &compositeCordinates)
 This function is called by the traverse() function.
virtual int render ()
 Convenience function that calls clear(), generate(), perform().
virtual int renderAll ()
 Convenience function that calls clear(), generate(), performAll().
 ScoreModel ()
virtual void setAlbum (std::string value)
virtual void setArtist (std::string value)
virtual void setConformPitches (bool conformPitches)
 Sets whether or not the pitches in generated scores will be conformed to the nearest equally tempered pitch.
virtual void setCopyright (std::string value)
virtual void setElement (size_t row, size_t column, double value)
 Sets the indicated element of the local transformation of coordinate system.
virtual void setFilename (std::string filename)
 Sets the filename of this – basically, the title of the composition.
virtual void setLicense (std::string value)
virtual void setOutputSoundfileName (std::string name)
 Sets a non-default output name (could be an audio device not a file).
virtual void setTitle (std::string value)
virtual void setTonesPerOctave (double tonesPerOctave)
 Sets the number of equally tempered intervals per octave (the default is 12, 0 means non-equally tempered).
virtual int tagFile (std::string filename) const
virtual int translateMaster ()
 Convenience function that calls rescaleOutputSoundfile(), translateToCdAudio(), and translateToMp3().
virtual int translateToCdAudio (double levelDb=-3.0)
 Assuming the score has been rendered, uses sox to translate the output soundfile to normalized CD-audio format.
virtual int translateToMp3 (double bitrate=256.01, double levelDb=-3.0)
 Assuming the score has been rendered, uses sox and LAME to translate the output soundfile to normalized MP3 format.
virtual int translateToNotation (const std::vector< std::string > partNames=std::vector< std::string >(), std::string header="")
 Saves the generated score in Fomus format and uses Fomus and Lilypond to translate that to a PDF of music notation.
virtual Eigen::MatrixXd traverse (const Eigen::MatrixXd &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 void write (const char *text)
 Write as if to stderr.
virtual ~ScoreModel ()

Static Public Member Functions

static std::string generateFilename ()
 Generates a versioned filename.
static std::string makeTimestamp ()
 Returns the current locale time as a string.

Data Fields

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

Protected Attributes

std::string album
std::string artist
bool conformPitches
std::string copyright
std::string filename
std::string license
Eigen::MatrixXd localCoordinates
std::string outputFilename
Score score
std::string timestamp
std::string title
double tonesPerOctave

Detailed Description

Base class for compositions that use the principle of a music graph to generate a score.

A music graph is a directed acyclic graph of nodes including empty nodes, nodes that contain only child nodes, score nodes, event generator nodes, event transformer nodes, and others. Each node is associated with a local transformation of coordinate system in music space using a 12 x 12 homogeneous matrix. To generate the score, the music graph is traversed depth first, and each node postconcatenates its local transformation of coordinate system with the coordinate system of its parent to derive a new local coordinate system, which is applied to all child events.

Constructor & Destructor Documentation

csound::ScoreModel::ScoreModel ( )
virtual csound::ScoreModel::~ScoreModel ( )
virtual

Member Function Documentation

virtual void csound::Node::addChild ( Node node)
virtualinherited
virtual void csound::ScoreModel::clear ( )
virtual

Clears the score.

Reimplemented from csound::Composition.

Reimplemented in csound::MusicModel.

virtual void csound::Composition::clearOutputSoundfileName ( )
virtualinherited
virtual Eigen::MatrixXd csound::Node::createTransform ( )
virtualinherited
virtual double& csound::Node::element ( size_t  row,
size_t  column 
)
virtualinherited

Returns a reference to the indicated element of the local transformation of coordinate system.

virtual int csound::ScoreModel::generate ( )
virtual

Generates a score based on a music graph defined by the child nodes of this.

Reimplemented from csound::Composition.

Reimplemented in csound::MusicModel.

static std::string csound::Composition::generateFilename ( )
staticinherited

Generates a versioned filename.

virtual std::string csound::Composition::getAlbum ( ) const
virtualinherited
virtual std::string csound::Composition::getArtist ( ) const
virtualinherited
virtual std::string csound::Composition::getCdSoundfileName ( ) const
virtualinherited

Returns a soundfile name for a CD audio track based on the filename of this, by appending ".cd.wav" to the filename.

virtual bool csound::Composition::getConformPitches ( ) const
virtualinherited

Returns whether or not the pitches in generated scores will be conformed to the nearest equally tempered pitch.

virtual std::string csound::Composition::getCopyright ( ) const
virtualinherited
virtual std::string csound::Composition::getFilename ( ) const
virtualinherited

Returns the filename of this, which is used as a base for derived filenames (soundfile, MIDI file, etc.).

virtual std::string csound::Composition::getFomusFilename ( ) const
virtualinherited

Returns a MusicXML filename based on the filename of this, by appending ".fms" to the filename.

virtual std::string csound::Composition::getLicense ( ) const
virtualinherited
virtual std::string csound::Composition::getLilypondFilename ( ) const
virtualinherited

Returns a MusicXML filename based on the filename of this, by appending ".ly" to the filename.

virtual Eigen::MatrixXd csound::Node::getLocalCoordinates ( ) const
virtualinherited

Returns the local transformation of coordinate system.

virtual std::string csound::Composition::getMidiFilename ( ) const
virtualinherited

Returns a MIDI filename based on the filename of this, by appending ".mid" to the filename.

virtual std::string csound::Composition::getMp3SoundfileName ( ) const
virtualinherited

Returns a soundfile name for an MP3 file based on the filename of this, by appending ".mp3" to the filename.

virtual std::string csound::Composition::getMusicXmlFilename ( ) const
virtualinherited

Returns a MusicXML filename based on the filename of this, by appending ".xml" to the filename.

virtual std::string csound::Composition::getNormalizedSoundfileName ( ) const
virtualinherited

Returns a soundfile name based on the filename of this, by appending ".norm.wav" to the filename.

virtual std::string csound::Composition::getOutputSoundfileName ( ) const
virtualinherited

Returns a soundfile name based on the filename of this, by appending ".wav" to the filename, which is the default, or a non-default ouput name which need not be a file but must be set using setOutputSoundfileName().

virtual Score& csound::Composition::getScore ( )
virtualinherited

Return the self-contained Score.

virtual long csound::ScoreModel::getThis ( )
virtual

Returns the address of this as a long integer.

Reimplemented in csound::MusicModel.

virtual Node* csound::ScoreModel::getThisNode ( )
virtual

Returns the address of this as a Node pointer.

Reimplemented in csound::MusicModel.

virtual std::string csound::Composition::getTimestamp ( ) const
virtualinherited

Returns the time the score was generated.

virtual std::string csound::Composition::getTitle ( ) const
virtualinherited
virtual double csound::Composition::getTonesPerOctave ( ) const
virtualinherited

Returns the number of equally tempered intervals per octave (the default is 12, 0 means non-equally tempered).

virtual void csound::ScoreModel::initialize ( )
virtual

Reimplemented in csound::MusicModel.

static std::string csound::Composition::makeTimestamp ( )
staticinherited

Returns the current locale time as a string.

virtual int csound::Composition::normalizeOutputSoundfile ( double  levelDb = -3.0)
virtualinherited

Assuming the score has been rendered, uses sox to translate the output soundfile to a normalized soundfile.

virtual int csound::Composition::perform ( )
virtualinherited

Performs the current score to create an output soundfile, which should be tagged with author, timestamp, copyright, title, and optionally album.

The default implementation does nothing. Must be overridden in derived classes.

Reimplemented in csound::MusicModel.

virtual int csound::Composition::performAll ( )
virtualinherited

Convenience function that calls performMaster(), and translateMaster().

virtual int csound::Composition::performMaster ( )
virtualinherited

Convenience function that calls saveMidi(), saveMusicXML(), and perform().

virtual int csound::Composition::processArgs ( const std::vector< std::string > &  args)
virtualinherited

Pass the invoking program's command-line arguments to processArgs() and it will perform with possibly back-end-dependent options.

Additional arguments can be added to the args before the call. Default implementation calls renderAll().

Reimplemented in csound::MusicModel.

virtual int csound::Composition::processArgv ( int  argc,
const char **  argv 
)
virtualinherited

Pass the invoking program's command-line arguments to processArgs() and it will perform with possibly back-end-dependent options.

Default implementation calls the std::string overload.

virtual void csound::Node::produceOrTransform ( Score collectingScore,
size_t  beginAt,
size_t  endAt,
const Eigen::MatrixXd &  compositeCordinates 
)
virtualinherited

This function is called by the traverse() function.

The default implementation does nothing. If a derived node produces new Events, then it must transform them by the composite coordinates, then append them to the collecting score. If a derived node transforms Events produced by child Nodes, then it must transform only Events in the collecting score starting at the startAt index and continuing up to, but not including, the endAt index. These bookmarks, in turn, must be set in the Traverse function by all Nodes that produce events.

Reimplemented in csound::ChordLindenmayer, csound::VoiceleadingNode, csound::RemoveDuplicates, csound::Random, csound::Cell, csound::CounterpointNode, csound::MCRM, csound::ScoreNode, and csound::Rescale.

virtual int csound::Composition::render ( )
virtualinherited

Convenience function that calls clear(), generate(), perform().

Reimplemented in csound::MusicModel.

virtual int csound::Composition::renderAll ( )
virtualinherited

Convenience function that calls clear(), generate(), performAll().

virtual void csound::Composition::setAlbum ( std::string  value)
virtualinherited
virtual void csound::Composition::setArtist ( std::string  value)
virtualinherited
virtual void csound::Composition::setConformPitches ( bool  conformPitches)
virtualinherited

Sets whether or not the pitches in generated scores will be conformed to the nearest equally tempered pitch.

virtual void csound::Composition::setCopyright ( std::string  value)
virtualinherited
virtual void csound::Node::setElement ( size_t  row,
size_t  column,
double  value 
)
virtualinherited

Sets the indicated element of the local transformation of coordinate system.

virtual void csound::Composition::setFilename ( std::string  filename)
virtualinherited

Sets the filename of this – basically, the title of the composition.

virtual void csound::Composition::setLicense ( std::string  value)
virtualinherited
virtual void csound::Composition::setOutputSoundfileName ( std::string  name)
virtualinherited

Sets a non-default output name (could be an audio device not a file).

virtual void csound::Composition::setTitle ( std::string  value)
virtualinherited
virtual void csound::Composition::setTonesPerOctave ( double  tonesPerOctave)
virtualinherited

Sets the number of equally tempered intervals per octave (the default is 12, 0 means non-equally tempered).

virtual int csound::Composition::tagFile ( std::string  filename) const
virtualinherited
virtual int csound::Composition::translateMaster ( )
virtualinherited

Convenience function that calls rescaleOutputSoundfile(), translateToCdAudio(), and translateToMp3().

virtual int csound::Composition::translateToCdAudio ( double  levelDb = -3.0)
virtualinherited

Assuming the score has been rendered, uses sox to translate the output soundfile to normalized CD-audio format.

virtual int csound::Composition::translateToMp3 ( double  bitrate = 256.01,
double  levelDb = -3.0 
)
virtualinherited

Assuming the score has been rendered, uses sox and LAME to translate the output soundfile to normalized MP3 format.

virtual int csound::Composition::translateToNotation ( const std::vector< std::string >  partNames = std::vector< std::string >(),
std::string  header = "" 
)
virtualinherited

Saves the generated score in Fomus format and uses Fomus and Lilypond to translate that to a PDF of music notation.

A meter of 4/4 and a tempo of MM 120 is assumed. A vector of part names may be supplied.

virtual Eigen::MatrixXd csound::Node::traverse ( const Eigen::MatrixXd &  globalCoordinates,
Score score 
)
virtualinherited

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::Koch, csound::Stack, csound::Intercut, csound::Hocket, and csound::Sequence.

virtual void csound::Composition::write ( const char *  text)
virtualinherited

Write as if to stderr.

Field Documentation

std::string csound::Composition::album
protectedinherited
std::string csound::Composition::artist
protectedinherited
std::vector<Node *> csound::Node::children
inherited

Child Nodes, if any.

bool csound::Composition::conformPitches
protectedinherited
std::string csound::Composition::copyright
protectedinherited
std::string csound::Composition::filename
protectedinherited
std::string csound::Composition::license
protectedinherited
Eigen::MatrixXd csound::Node::localCoordinates
protectedinherited
std::string csound::Composition::outputFilename
protectedinherited
Score csound::Composition::score
protectedinherited
std::string csound::Composition::timestamp
protectedinherited
std::string csound::Composition::title
protectedinherited
double csound::Composition::tonesPerOctave
protectedinherited