From 56bb1fd47bae551a6567d73b250675ddb9da1758 Mon Sep 17 00:00:00 2001 From: fred Date: Tue, 17 Sep 1996 12:21:18 +0000 Subject: [PATCH] lilypond-0.0.1 --- voice.cc | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ voice.hh | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 105 insertions(+) create mode 100644 voice.cc create mode 100644 voice.hh diff --git a/voice.cc b/voice.cc new file mode 100644 index 0000000000..ac6d33166d --- /dev/null +++ b/voice.cc @@ -0,0 +1,56 @@ +#include "debug.hh" +#include "voice.hh" + +void +Voice_element::add(Request*r) +{ + if (r->tag == Request::NOTE ||r->tag == Request::REST) { + assert (!duration); + duration = r->duration(); + } + reqs.bottom().add(r); +} + +Voice::Voice() +{ + start = 0.0; +} + +void +Voice::add(Voice_element*v) +{ + elts.bottom().add(v); +} + +Voice_element::Voice_element() +{ + voice = 0; + group = 0; + duration = 0.0; +} + +void +Voice::print() const +{ + mtor << "start: "<< start< vec(elts); vec.ok(); vec++) + vec->print(); +} +void +Voice_element::print() const +{ + mtor << "voice_element { dur :"<< duration <<"\n"; + for (PCursor rc(reqs); rc.ok(); rc++) { + mtor << "reqtag: " << rc->tag< vec(elts); vec.ok(); vec++) + l += vec->duration; + return l; +} diff --git a/voice.hh b/voice.hh new file mode 100644 index 0000000000..35537525ec --- /dev/null +++ b/voice.hh @@ -0,0 +1,49 @@ +#ifndef VOICE_HH +#define VOICE_HH + +#include "mtime.hh" +#include "list.hh" +#include "request.hh" + +/// class for horizontal stuff. +struct Voice { + PointerList elts; + Mtime start; + + /****************/ + Mtime when(const Voice_element*)const; + Mtime last() const; + Voice(); + void add(Voice_element*); + void print() const; +}; +/** + + Voice is a ordered row of Voice_elements. It is strictly horizontal: + you cannot have two rhythmic elements running parallel in a Voice + + */ + +struct Voicegroup { + /// don't know how to identify these. +}; + +/// +struct Voice_element { + Mtime duration; + const Voicegroup *group; + const Voice *voice; + PointerList reqs; + + List granted_items; + List granted_spanners; + void add(Request*); + Voice_element(); + + void print ()const; +}; +/** Apart from being a container for the requests, Voice_element is + glue between related items and spanners, between requests and + (voice)groups + */ +#endif -- 2.39.5