\begin[verbatim]{mudela}
\score {
\melodic { % {...} is a voice
- c'4 g'4 % c and g are pitches, 4 is the duration (quaver)
+ c'4 g'4 % c and g are pitches, 4 is the duration
+ % (crotchet/quarter note)
c''4 ''c4 % c' is 1 octave up, 'c 1 down.
<c'4 g'4> % <...> is a chord
}
arrogantly) The Musical Definition Language or Mudela, for
short.\footnote{If anybody comes up with a better name, we'd gladly
take this. Gourlay already uses Musical Description Language,
- G-Sharp Score Definition Language. We're not being original here}
+ G-Sharp Score Definition Language. ISO standard 10743 defines a
+ Standard Music Description Language. We're not being original here}
The first aim of Mudela is to define a piece of music, being complete
from both from a musical typesetting, as from a musical performing
You enter a note by giving the name and the reciprocal of the duration:
\begin[fragment,verbatim]{mudela}
-a'4 % dutch names
+a'4 % Dutch names
\end{mudela}
-is a A-1 pitched quaver. The ' signifies an octave change. A-1 is 440
+is a A-1 pitched crotchet. The ' signifies an octave change. A-1 is 440
Hz concert-pitch. \verb+c'+ is also known as the central c. More examples:
\begin[fragment,verbatim]{mudela}
The last one is an A flat, (just below 110 Hz concert-pitch). The \verb+*2/3+
signifies that this note is part of a triplet (3 in stead of 2). The
-duration is one and a half quaver (\verb+4.+) times 2/3.
+duration is one and a half quarter note (\verb+4.+) times 2/3.
Notenames are just a special kind of identifiers, and can be declared
for any language appropriate (see \file{init/dutch.ly}). The default language
-for notenames is defined to be dutch. In dutch, the notenames are
+for notenames is defined to be Dutch. In Dutch, the notenames are
a,b,c,d,e,f and g. Sharps are formed by adding the extension "is",
flats by adding ``es''
Mudela defines the following dynamic identifiers:
\begin{verbatim}
-ppp pp p mp mf df ff fff % df iso f, f is a notename.
+ppp pp p mp mf f ff fff
\end{verbatim}
and the following abbreviations:
\begin{verbatim}
In this example, the two oboe voices share one staff and are initially
in the voicegroup called "oboes". They will share beams, dynamics etc.
-After two quavers, oboeI "pushes" its group: a new voicegroup is
+After two quarter notes, oboeI "pushes" its group: a new voicegroup is
created, called "oboes+solo". The \verb+\group "-"+ command makes the
voice enter "oboes" again.
\end{verbatim}
Make the piece start with a partial measure [english translation?]
-lasting 1 3/4 quaver.
+lasting 1 3/4 quarter notes.
These commands are also "voice elements", and constitute simple mudela
(consisting of stuff with duration 0).
Array<int> final_breaks;
+ Array<Col_hpositions> lines;
/* skip 0-th element, since it is a "dummy" elt*/
for (int i = optimal_paths.size()-1; i> 0; ) {
final_breaks.push ( i );
assert ( i > optimal_paths[i].prev_break_i_);
+
+ // there was no "feasible path"
+ if (!optimal_paths[i].line_config_.config.size() )
+ return lines;
i = optimal_paths[i].prev_break_i_;
}
- Array<Col_hpositions> lines;
for (int i= final_breaks.size(); i--; )
lines.push ( optimal_paths[final_breaks[i]].line_config_ );
/*
- command-request.hh -- declare Non musical requests
+ command-request.hh -- declare non-musical requests
source file of the GNU LilyPond music typesetter
#include "request.hh"
#include "varray.hh"
+#include "duration.hh"
/** Request which are assumed to be "happening" before the
musical requests. */
class Command_script_req : public Command_req, public Script_req {
public:
+ // huh?
+ Command_script_req();
REQUESTMETHODS(Command_script_req, commandscript);
};
class Timing_req : public Command_req {
public:
REQUESTMETHODS(Timing_req, timing);
+ virtual Tempo_req * tempo(){return 0; }
+ Tempo_req();
};
+class Tempo_req : public Timing_req
+{
+public:
+ Duration dur_;
+ int metronome_i_;
+
+ Tempo_req();
+ REQUESTMETHODS(Tempo_req, tempo);
+ bool do_equal_b(Request *)const;
+};
+
class Partial_measure_req : public Timing_req {
public:
Moment duration_;
Partial_measure_req(Moment);
REQUESTMETHODS(Partial_measure_req, partial);
+ bool do_equal_b(Request*)const;
};
/**
public:
int beats_i_, one_beat_i_;
- int compare(Meter_change_req const&);
Meter_change_req();
void set(int,int);
+ bool do_equal_b(Request*)const;
REQUESTMETHODS(Meter_change_req, meterchange);
};
public:
/// turn on?
bool on_b_;
+ bool do_equal_b(Request*)const;
Cadenza_req(bool);
REQUESTMETHODS(Cadenza_req,cadenza);
};
/// check if we're at start of a measure.
class Barcheck_req : public Timing_req {
public:
-
+ bool do_equal_b(Request *)const;
REQUESTMETHODS(Barcheck_req,barcheck);
};
public:
Array<int> beat_i_arr_;
Array<Moment> elt_length_arr_;
-
+ bool do_equal_b(Request *)const;
REQUESTMETHODS(Measure_grouping_req, measuregrouping);
};
public:
String type_str_;
Bar_req(String);
- int compare(const Bar_req&)const;
+ bool do_equal_b(Request*)const;
+
REQUESTMETHODS(Bar_req,bar);
};