-LilyPond è il tipografo musicale del progetto GNU. Questo programma è
-fatto per stampare belle partiture da un documento definito per musica.
-Può anche suonare le prestazioni meccaniche ad un documento MIDI. Le
-caratteristiche includono i personali multipli, tester, chiavi, suoni,
-lirica, lingua potente dell' input, cadenze, fasci, archi, tripletti,
-segni di formattazione, estrazione delle parte. È compresa una seria
-completa di caratteri musicali.
+LilyPond è il tipografo musicale del progetto GNU. Questo programma
+puo' stampare delle belle partiture a partire da un documento di
+definizioni musicali. Puo' anche creare meccaniche rappresentazioni
+della partitura in un documento in formato MIDI. Le caratteristiche del
+programma includono pentagrammi multipli, segni di divisione, chiavi,
+tasti, parole, versatile linguaggio di definizione, cadenze, legature,
+acciaccature, terzine, segni di formattazione, estrazione delle
+parte. è compresa una seria completa di caratteri musicali.
An enormous collection of music related URLs
dit(lurl(http://www.ram.org/ramblings/philosophy/fmp.html))
Musings on free music, plus hints how to record your own (free) music.
+
+dit(lurl(http://www.cyberus.ca/~jdsankey/harpsichord.html))
+ John Sankey has taken up the task of recording classical
+music, and distributing the results at no cost.
)
+
sect(Ftp)
We will upload major releases to the following sites:
% stupid test to check convert-mudela.py.
%
% (so sue me)
-\begin{mudela}[fragment,center]
- \clef bass; c1 \clef alto; c'2 \clef treble; c''4
-\end{mudela}
+% well, make website breaks...
+% \begin{mudela}[fragment,center]
+% \clef bass; c1 \clef alto; c'2 \clef treble; c''4
+% \end{mudela}
\section{Bezier curves for slurs}
subsect(Basic Note Specification)
A note specification has the form
-var(pitch)[var(octavespec)][code(!)][var(duration)].
+var(pitch)[var(octavespec)][code(!)][code(?)][var(duration)].
The pitch of the note is specified by the note's name.
LilyPond has predefined note names for various languages. The default
context.
A reminder accidental can be forced by
using the optional exclamation mark `code(!)'
-on a pitch.
+on the pitch.
+A cautionary accidental, i.e., an accidental within paranthesis
+can be obtained using the optional question mark `code(?)' on the pitch.
mudela(fragment,verbatim,center)(
-cis' d' e' cis' c'! d' e' c'
+cis' d' e' cis' c'? d' e' c'!
)
file(.ly) extension must be given, and the filename must be quoted.
(An unquoted string will not work here.)
-dit(code(\key) var(pitch)code(;)) Change key signature to that of
-var(pitch)-major.
+dit(code(\key) var(pitch) var(type) code(;)) Change the key signature.
+var(type) should be code(\major) or code(\minor) to get
+var(pitch)-major or var(pitch)-minor, respectively. The second
+argument is optional, the default is major keys.
+The var(\type) argument can also be given as an integer, which tells
+the number of semitones that should be added to the pitch given in the
+subsequent code(\key) commands to get the corresponding major key,
+e.g. code(\minor) is defined as 3.
dit(code(\keysignature) var(pitchseq)code(;))
Specify an arbitrary key signature. The pitches from var(pitch) will
dit(code(defaultBarType)) Sets the default type of bar line. See
code(\bar) keyword.
-
-
-
dit(code(keyoctaviation)) If set to 1, then keys are the same in all
octaves. If set to 0 then the key signature for different octaves can
be different and is specified independently: code(\keysignature bes
dit(code(timeSignatureStyle)) Changes the default two-digit layout
for time signatures. The following values are recognized:
description(
- dit(code(C)): 4/4 and 2/2 are typeset as C and struck C,
+ dit(code(C)) 4/4 and 2/2 are typeset as C and struck C,
respectively. All other time signatures are written with two digits.
- dit(code(old)): 2/2, 3/2, 3/4, 4/4, 6/4 and 9/4 are typeset with
+ dit(code(old)) 2/2, 3/2, 3/4, 4/4, 6/4 and 9/4 are typeset with
old-style mensuration marks. All other time signatures are
written with two digits.
- dit(code(1)): All time signatures are typeset with a single
+ dit(code(1)) All time signatures are typeset with a single
digit, e.g. 3/2 is written as 3.
dit(code(C2/2), code(C4/4), code(old2/2), code(old3/2),
code(old3/4), code(old4/4), code(old6/4) or
- code(old9/4)): Tells Lilypond to use a specific symbol as time
+ code(old9/4)) Tells Lilypond to use a specific symbol as time
signature.
)
The different time signature characters are shown below with
dit(code(\infinity)) Used for setting the Score.beamslopedamping
property. Is actually equal to 10000.
dit(code(\left)) Used for setting textalignment property. Is equal to -1.
+dit(code(\major)) Used as the second argument of the code(\key)
+command to get a major key.
+dit(code(\minor)) Used as the second argument of the code(\key)
+command to get a minor key.
dit(code(\mf)) Print mezzoforte symbol on preceeding note.
dit(code(\mp)) Print mezzopiano symbol on preceeding note.
dit(code(\nobreak)) Prevent a line break in music by using a large
\clef "treble"; c'4
\clef "alto"; c'4
)
-dit(code(\key) var(pitch)) This command changes the current key signature. The
- key signature is printed at the start of every line. The argument
- is the name of the corresponding major key. The key of C-minor can
- thus be specified as `code(\key es)'.
+dit(code(\key) var(pitch) var(type)) This command changes the current
+ key signature. The key signature is printed at the start of every
+ line. The var(type) argument is set to code(\major) or code(\minor)
+ to get major or minor keys, respectively. Omitting the second
+ argument gives major keys. The key of C-minor can thus be specified
+ as `code(\key es)' or `code(\key \c minor)'.
dit(code(\keysignature) var(pitchlist))
description(
dit(lurl(http://www.cs.uu.nl/people/hanwen/lilypond/))Han-Wen's site.
+dit(lurl(http://www.xs4all.nl/jantien/lilypond/))Jan's site.
dit(lurl(http://www.realtime.net/~daboys/lilypond/))Jeff's Windows NT Distribution site.
)
to regenerate the font tables, e.g.).
+o GUILE 1.3 (no, GUILE 1.2 won't work)
+
+
3: RUNNING
+pl 1.mb1
+ - Support for cautionary accidentals. , i.e. accidentals
+ within parantheses. Syntax: 'cis?'. Try input/test/accid.fly
+ Note that the font has changed.
+ - bf: No unnecessary warnings about time signatures
+ - Added optional second argument of \key. Set to \major or \minor
+ to get a major or minor key. Default: major.
+ - bf: Compilation error in midi-walker.cc
+pl 1.jcn2
+ - fixes for htmldoc, website
+ - silly jcn1 fixes
+ - junked MODULE stuff from lily/GNUmakefile (again)
+
pl 0.jcn4
- -set:
- export GUILE_LOAD_PATH=$HOME/usr/src/lilypond/init
- - dstream: Score_element, Column_info
- - -fscm debug hack: lilypond -fscm a; guile a.scm > a.tex; tex a
- - init/lily.scm
+ -set:
+ export GUILE_LOAD_PATH=$HOME/usr/src/lilypond/init
+ - dstream: Score_element, Column_info
+ - -fscm debug hack: lilypond -fscm a; guile a.scm > a.tex; tex a
+ - init/lily.scm
+
+
+********
+pl 1
pl 0.uu5
- fixed MIDI output.
BUGS:
- * disallow backslashes
+ * --safe: disallow backslashes, disallow \include.
* \breathmark TeX macro
* integrate midi-elts from mi2mu and lily?
- * cautionary accidental
-
* score-bar-scripts
FMR: Free memory read:
* This is occurring while in:
* Keys:
- merge key{item} & localkey{item}?
- - Major/Minor
- spacing, national styles?
* Support for TAB
PACKAGE_NAME=LilyPond
MAJOR_VERSION=1
MINOR_VERSION=1
-PATCH_LEVEL=1
-MY_PATCH_LEVEL=jcn3
+PATCH_LEVEL=2
+MY_PATCH_LEVEL=
# use the above to send patches: MY_PATCH_LEVEL is always empty for a
# released version.
# include an empty path component for the system wide includes.
setenv MFINPUTS "@datadir@/mf:"${MFINPUTS:=":"}
setenv TEXINPUTS "@datadir@/tex:"${TEXINPUTS:=":"}
-
+setenv GUILE_LOAD_PATH "@datadir@/scm:$GUILE_LOAD_PATH"
# include an empty path component for the system wide includes.
MFINPUTS="@datadir@/mf:"${MFINPUTS:=":"}
TEXINPUTS="@datadir@/tex:"${TEXINPUTS:=":"}
+GUILE_LOAD_PATH="@datadir@/scm:$GUILE_LOAD_PATH"
-export LILYINCLUDE MFINPUTS TEXINPUTS GS_LIB GS_FONTPATH
+export GUILE_LOAD_PATH LILYINCLUDE MFINPUTS TEXINPUTS GS_LIB GS_FONTPATH
+
# echo $LILYINCLUDE $MFINPUTS $TEXINPUTS $GS_LIB $GS_FONTPATH
break = { \penalty = 10000; }
nobreak = { \penalty = -10000; }
+major = 0
+minor = 3
+
\include "property.ly"
\include "scm.ly"
(beam-ps width slope thick)
"}"))
+(define
+ (bracket o h) (empty o))
+
(define
(char o n)
((invoke-output o "char") n))
(empty-tex)
"%\n\\empty%\n")
-(define
- (emptybar o h) (empty o))
-
(define
(end-output o)
((invoke-output o "end-output")))
(define
(repeatbar o h) (empty o))
-(define
- (repeatbarstartrepeat o h) (empty o))
-
(define
(rulesym o x y)
((invoke-output o "rulesym") x y))
(setbold o s)
((invoke-output o "text") "bold" s))
+(define
+ (setdynamic o s) (empty o))
+
(define
(setfinger o s)
((invoke-output o "text") "finger" s))
% (c) 1998 Jan Nieuwenhuizen <janneke@gnu.org>
\scm "
-; huh?
-;(append %load-path 'init)
-;(load-patch 'lily.scm)
-(load 'init/lily.scm)
+(primitive-load-path 'lily)
";
--- /dev/null
+\time 3/4;
+cisis'' cisis! cisis? |
+cis cis! cis? |
+c c! c? |
+ces ces! ces? |
+ceses ceses! ceses? |
\score {
\notes
{
- \key bes; c1 \key c; c1
+ \key bes; c1 \key c \minor; c1
\break
- \key bes; c1 \key d;\break c1
+ \key bes \major; c1 \key d;\break c1
}
}
\property Staff.timeSignatureStyle = "C"
\time 1/1;
-c''1^"timeSignatureStyle = \"C\"" |
-\time 2/2;
-c1 |
-\time 3/4;
-c2. |
-\time 4/4;
-c1 |
-\time 5/4;
-c2. c2 |
-\time 6/4;
-c1. |
-\time 3/2;
-c1. |
-\time 7/4;
-c1 c2. |
-\time 8/4;
-c\breve |
-\time 9/4;
-c2. c2. c2. |
+c''1^"timeSignatureStyle = \"C\""
+\time 2/2;
+c1
+\time 3/4;
+c2.
+\time 4/4;
+c1
+\time 5/4;
+c2. c2
+\time 6/4;
+c1.
+\time 3/2;
+c1.
+\time 7/4;
+c1 c2.
+\time 8/4;
+c\breve
+\time 9/4;
+c2. c2. c2.
\break
\property Staff.timeSignatureStyle = "old"
-\time 1/1;
-c1^"timeSignatureStyle = \"old\"" |
-\time 2/2;
-c1 |
-\time 3/4;
-c2. |
-\time 4/4;
-c1 |
-\time 5/4;
-c2. c2 |
-\time 6/4;
-c1. |
-\time 3/2;
-c1. |
-\time 7/4;
-c1 c2. |
-\time 8/4;
-c\breve |
-\time 9/4;
-c2. c2. c2. |
+\time 1/1;
+c1^"timeSignatureStyle = \"old\""
+\time 2/2;
+c1
+\time 3/4;
+c2.
+\time 4/4;
+c1
+\time 5/4;
+c2. c2
+\time 6/4;
+c1.
+\time 3/2;
+c1.
+\time 7/4;
+c1 c2.
+\time 8/4;
+c\breve
+\time 9/4;
+c2. c2. c2.
\break
\property Staff.timeSignatureStyle = ""
-\time 1/1;
-c1^"timeSignatureStyle = \"\"" |
-\time 2/2;
-c1 |
-\time 3/4;
-c2. |
-\time 4/4;
-c1 |
-\time 5/4;
-c2. c2 |
-\time 6/4;
-c1. |
-\time 3/2;
-c1. |
-\time 7/4;
-c1 c2. |
-\time 8/4;
-c\breve |
-\time 9/4;
-c2. c2. c2. |
+\time 1/1;
+c1^"timeSignatureStyle = \"\""
+\time 2/2;
+c1
+\time 3/4;
+c2.
+\time 4/4;
+c1
+\time 5/4;
+c2. c2
+\time 6/4;
+c1.
+\time 3/2;
+c1.
+\time 7/4;
+c1 c2.
+\time 8/4;
+c\breve
+\time 9/4;
+c2. c2. c2.
\break
\property Staff.timeSignatureStyle = "1"
-\time 1/1;
-c1^"timeSignatureStyle = \"1\"" |
-\time 2/2;
-c1 |
-\time 3/4;
-c2. |
-\time 4/4;
-c1 |
-\time 5/4;
-c2. c2 |
-\time 6/4;
-c1. |
-\time 3/2;
-c1. |
-\time 7/4;
-c1 c2. |
-\time 8/4;
-c\breve |
-\time 9/4;
-c2. c2. c2. |
+\time 1/1;
+c1^"timeSignatureStyle = \"1\""
+\time 2/2;
+c1
+\time 3/4;
+c2.
+%{ % Error if these lines are uncommented:
+ % Line ... [0guile: Wrong type to apply: #<unknown-type (0x7f . 0x4026a148) @ 0x4026a150>
+\time 4/4;
+c1
+%}
+\time 5/4;
+c2. c2
+\time 6/4;
+c1.
+\time 3/2;
+c1.
+\time 7/4;
+c1 c2.
+\time 8/4;
+c\breve
+\time 9/4;
+c2. c2. c2.
\break
\property Staff.timeSignatureStyle = "old9/4"
\property Staff.textalignment = \center
-\time 1/1;
-c1^"old9/4" |
-\property Staff.timeSignatureStyle = "old6/4"
-\time 2/2;
-c1^"old6/4" |
+\time 1/1;
+c1^"old9/4"
+\property Staff.timeSignatureStyle = "old6/4"
+\time 2/2;
+c1^"old6/4"
\property Staff.timeSignatureStyle = "old3/2"
-\time 3/4;
-c2.^"old3/2" |
+\time 3/4;
+c2.^"old3/2"
\property Staff.timeSignatureStyle = "old4/4"
-\time 4/4;
-c1^"old4/4" |
+\time 4/4;
+c1^"old4/4"
\property Staff.timeSignatureStyle = "old2/2"
-\time 5/4;
-c2.^"old2/2" c2 |
+\time 5/4;
+c2.^"old2/2" c2
\property Staff.timeSignatureStyle = "C4/4"
-\time 6/4;
-c1.^"C4/4" |
+\time 6/4;
+c1.^"C4/4"
\property Staff.timeSignatureStyle = "C2/2"
-\time 3/2;
-c1.^"C2/2" |
-
+\time 3/2;
+c1.^"C2/2"
STEPMAKE_TEMPLATES= c++ executable
-MODULE_LIBES=-lguile
-
-# for the RedHat GUILE 1.3 RPM
-MODULE_LIBES+= -lreadline -ldl
-
include $(depth)/make/stepmake.make
# force these: Make can't know these have to be generated in advance
Key_change_req::Key_change_req()
{
- minor_b_ = false;
+ modality_i_ = 0;
ordinary_key_b_= false;
}
bool
Key_change_req::minor_b() const
{
- return minor_b_;
+ return modality_i_ == 3;
}
int
class Key_change_req : public Command_req {
public:
Array<Musical_pitch> pitch_arr_;
- bool minor_b_;
+ int modality_i_;
bool ordinary_key_b_;
Key_change_req();
int sharps_i();
void transpose (Musical_pitch d);
- /// is minor key?
bool minor_b() const;
};
#include "array.hh"
#include "scalar.hh"
+SCM lambda_scm (String str, Array<int> args_arr);
SCM lambda_scm (String str, Array<Real> args_arr);
SCM lambda_scm (String str, Array<Scalar> args_arr);
#define LOOKUP_HH
#include "atom.hh"
+#include "molecule.hh"
#include "fproto.hh"
#include "scalar.hh"
#include "direction.hh"
Lookup (Symtables const&);
~Lookup ();
- Atom accidental (int) const;
+ Molecule accidental (int, bool cautionary) const;
void add (String, Symtable*);
- Atom afm_find (String) const;
+ Atom afm_find (String, bool warn=true) const;
Atom ball (int) const;
Atom bar (String, Real height) const;
Atom beam (Real, Real, Real) const;
Atom text (String style, String text) const;
Atom vbrace (Real &dy) const;
Atom vbracket (Real &dy) const;
- Atom special_time_signature (String, Array<Real>) const;
- Atom time_signature (Array<Real>) const;
+ Atom special_time_signature (String, Array<int>) const;
+ Atom time_signature (Array<int>) const;
Paper_def * paper_l_;
Symtables *symtables_p_;
int octave_i_;
/// 0 natural, 1 sharp, etc
int accidental_i_;
+ /// Used for cautionary accidentals
+ bool cautionary_b_;
void init () ;
Musical_pitch to_relative_octave (Musical_pitch);
/// force/supress printing of accidental.
bool forceacc_b_;
+ /// Cautionary, i.e. parenthesized accidental.
+ bool cautionary_b_;
Note_req();
bool do_equal_b (Request*) const;
REQUESTMETHODS(Note_req);
virtual Molecule*brew_molecule_p() const;
public:
Time_signature () ;
- Array<Real> args_;
+ Array<int> args_;
String time_sig_type_str_;
DECLARE_MY_RUNTIME_TYPEINFO;
else
{
p = r->pitch_arr_[0].semitone_pitch ();
- if (r->minor_b ())
- p += 3;
+ p += r->modality_i_;
}
/* Solve the equation 7*no_of_acc mod 12 = p, -6 <= no_of_acc <= 5 */
int no_of_acc = (7*p) % 12;
|| (old_pitch_arr_[i] == pitch_arr_[j]
&& old_acc_arr_[i] != acc_arr_[j]))
{
- Atom a =lookup_l ()->accidental (0);
- a.translate_axis (calculate_position(old_pitch_arr_[i], old_acc_arr_[i]) * inter, Y_AXIS);
- Molecule m (a);
+ Molecule m =lookup_l ()->accidental (0,false);
+ m.translate_axis (calculate_position(old_pitch_arr_[i], old_acc_arr_[i]) * inter, Y_AXIS);
output->add_at_edge (X_AXIS, RIGHT, m);
}
}
for (int i =0; i < pitch_arr_.size(); i++)
{
- Atom a =lookup_l ()->accidental (acc_arr_[i]);
- a.translate_axis (calculate_position(pitch_arr_[i], acc_arr_[i]) * inter, Y_AXIS);
- Molecule m (a);
+ Molecule m =lookup_l ()->accidental (acc_arr_[i],false);
+ m.translate_axis (calculate_position(pitch_arr_[i], acc_arr_[i]) * inter, Y_AXIS);
output->add_at_edge (X_AXIS, RIGHT, m);
}
if (pitch_arr_.size())
}
#endif
+SCM
+lambda_scm (String str, Array<int> args_arr)
+{
+ if (str.empty_b ())
+ {
+ str = "empty";
+ args_arr.clear ();
+ }
+ SCM args_scm = SCM_EOL;
+ for (int i = args_arr.size () - 1; i >= 0; i--)
+ args_scm = gh_cons (gh_int2scm (args_arr[i]), args_scm);
+ SCM scm =
+ ly_append (ly_lambda_o (),
+ ly_list1 (ly_append (ly_func_o (str.ch_l ()), args_scm)));
+ return scm;
+}
+
SCM
lambda_scm (String str, Array<Scalar> args_arr)
{
key_item_p_ = new Local_key_item;
announce_element (Score_element_info (key_item_p_, 0));
}
+ if (note_l->cautionary_b_)
+ {
+ note_l->pitch_.cautionary_b_ = true;
+ }
+
key_item_p_->add (note_l->pitch_);
key_item_p_->add_support (support_l);
local_key_.set (note_l->pitch_);
Real dy =
(c0_position_i_ + accidental_pitch_arr_[i].notename_i_)
* paper()->internote_f ();
- Atom a (lookup_l ()->accidental (accidental_pitch_arr_[i].accidental_i_));
+ Molecule m (lookup_l ()->accidental (accidental_pitch_arr_[i].accidental_i_,
+ accidental_pitch_arr_[i].cautionary_b_));
- a.translate_axis (dy, Y_AXIS);
- Molecule m(a);
+ m.translate_axis (dy, Y_AXIS);
octave_mol_p->add_at_edge (X_AXIS, RIGHT, m);
}
delete symtables_p_;
}
-Atom
-Lookup::accidental (int j) const
+Molecule
+Lookup::accidental (int j, bool cautionary) const
{
- Atom a = afm_find (String ("accidentals") + String ("-") + to_str (j));
- return a;
+ Molecule m(afm_find (String ("accidentals") + String ("-") + to_str (j)));
+ if (cautionary)
+ {
+ m.add_at_edge(X_AXIS, LEFT,
+ Molecule(afm_find (String ("accidentals") + String ("-("))))
+;
+ m.add_at_edge(X_AXIS, RIGHT,
+ Molecule(afm_find (String ("accidentals") + String ("-)"))))
+;
+ }
+ return m;
}
void
}
Atom
-Lookup::afm_find (String s) const
+Lookup::afm_find (String s, bool warn) const
{
if (!afm_p_)
{
*mlog << "]" << flush ;
DOUT << this->afm_p_->str ();
}
- Adobe_font_char_metric m = afm_p_->find_char (s);
+ Adobe_font_char_metric m = afm_p_->find_char (s, warn);
Atom a;
if (m.code () < 0)
Array<Real> arr;
arr.push (height);
arr.push (width);
- a.lambda_ = lambda_scm (a.str_, arr);
+ a.lambda_ = (lambda_scm (a.str_, arr));
a.str_ = "rule_symbol";
a.dim_.x () = Interval (0, width);
a.dim_.y () = Interval (0, height);
+ return a;
}
Atom
}
Atom
-Lookup::special_time_signature (String s, Array<Real> arr) const
+Lookup::special_time_signature (String s, Array<int> arr) const
{
- String symbolname = "timesig-" + s;
- if (!arr.empty ())
- symbolname += to_str (arr[0]);
- if (arr.size () >1)
- symbolname += "/" + to_str (arr[1]);
+ // First guess: s contains only the signature style
+ assert (arr.size () >1);
+ String symbolname = "timesig-" + s + to_str (arr[0]) + "/" + to_str (arr[1]);
- Atom a = afm_find (symbolname);
+ Atom a = afm_find (symbolname, false);
if (!a.empty ())
return a;
-#if 0 //guess we covered this
- // Try if the full name was given
- a = afm_find ("timesig-"+s);
+ // Second guess: s contains the full signature name
+ a = afm_find ("timesig-"+s, false);
if (!a.empty ())
return a;
-#endif
// Resort to default layout with numbers
return time_signature (arr);
arr.push (y2);
arr.push (-y1);
- a.lambda_ = lambda_scm ("stem", arr);
+ a.lambda_ = (lambda_scm ("stem", arr));
a.str_ = "stem";
a.font_ = font_;
+ return a;
}
Atom
if (type > 2)
type = 2;
- Atom a = afm_find ("balls" + String ("-") + to_str (type) + "l");
- return a;
+ return afm_find ("balls" + String ("-") +to_str (type) + "l");
}
Atom
a.lambda_ = lambda_scm (a.str_, arr);
a.str_ = "text";
a.font_ = font_;
+ return a;
+
}
+
Atom
-Lookup::time_signature (Array<Real> a) const
+Lookup::time_signature (Array<int> a) const
{
- Atom a ((*symtables_p_) ("param")->lookup ("time_signature"));
- a.lambda_ = lambda_scm (a.str_, arr);
- a.str_ = "time_signature";
+ Atom s ((*symtables_p_) ("param")->lookup ("time_signature"));
+ s.lambda_ = (lambda_scm (s.str_, a));
+
+ return s;
}
/*
if (y < min_y)
{
warning (_ ("piano brace")
- + " " + _ ("too small") + " (" + print_dimen (y) + ")");
+ + " " + _ ("too small") + " (" + print_dimen (y) + ")");
y = min_y;
}
if (y > max_y)
{
warning (_ ("piano brace")
- + " " + _ ("too big") + " (" + print_dimen (y) + ")");
+ + " " + _ ("too big") + " (" + print_dimen (y) + ")");
y = max_y;
}
Array<Real> arr;
arr.push (idx);
- a.lambda_ = lambda_scm (a.str_, arr);
+ a.lambda_ = (lambda_scm (a.str_, arr));
a.str_ = "brace";
a.dim_[Y_AXIS] = Interval (-y/2,y/2);
a.font_ = font_;
Real height = paper_l_->staffheight_f () / 6;
String ps;
ps += to_str (width) + " "
- + to_str (height) + " "
+ + to_str (height) + " "
+ to_str (continued ? height/2 : 0) +
+ " draw_" + String (decresc ? "de" : "") + "cresc\n";
a.str_ = ps;
// (lambda (o) (slur o '((0.1 0.2) (1.1 1.2) (2.1 2.2) (3.1 3.2) .. )))
a.lambda_ = (
- ly_append (ly_lambda_o (),
- ly_list1 (ly_append (ly_func_o ("slur"),
- ly_list1 (ly_list2 (ly_quote (),
- gh_cons (ly_list2 (gh_double2scm (controls[5].x ()), gh_double2scm (controls[5].y ())),
- gh_cons (ly_list2 (gh_double2scm (controls[6].x ()), gh_double2scm (controls[6].y ())),
- gh_cons (ly_list2 (gh_double2scm (controls[7].x ()), gh_double2scm (controls[7].y ())),
- gh_cons (ly_list2 (gh_double2scm (controls[4].x ()), gh_double2scm (controls[4].y ())),
- gh_cons (ly_list2 (gh_double2scm (controls[1].x ()), gh_double2scm (controls[1].y ())),
- gh_cons (ly_list2 (gh_double2scm (controls[2].x ()), gh_double2scm (controls[2].y ())),
- gh_cons (ly_list2 (gh_double2scm (controls[3].x ()), gh_double2scm (controls[3].y ())),
- gh_cons (ly_list2 (gh_double2scm (controls[0].x ()), gh_double2scm (controls[0].y ())),
- SCM_EOL))))))))))))));
+ ly_append (ly_lambda_o (),
+ ly_list1 (ly_append (ly_func_o ("slur"),
+ ly_list1 (ly_list2 (ly_quote (),
+ gh_cons (ly_list2 (gh_double2scm (controls[5].x ()), gh_double2scm (controls[5].y ())),
+ gh_cons (ly_list2 (gh_double2scm (controls[6].x ()), gh_double2scm (controls[6].y ())),
+ gh_cons (ly_list2 (gh_double2scm (controls[7].x ()), gh_double2scm (controls[7].y ())),
+ gh_cons (ly_list2 (gh_double2scm (controls[4].x ()), gh_double2scm (controls[4].y ())),
+ gh_cons (ly_list2 (gh_double2scm (controls[1].x ()), gh_double2scm (controls[1].y ())),
+ gh_cons (ly_list2 (gh_double2scm (controls[2].x ()), gh_double2scm (controls[2].y ())),
+ gh_cons (ly_list2 (gh_double2scm (controls[3].x ()), gh_double2scm (controls[3].y ())),
+ gh_cons (ly_list2 (gh_double2scm (controls[0].x ()), gh_double2scm (controls[0].y ())),
+ SCM_EOL))))))))))))));
a.str_ = "slur";
a.dim_[X_AXIS] = Interval (0, dx);
if (y < min_y)
{
warning (_ ("bracket")
- + " " + _ ("too small") + " (" + print_dimen (y) + ")");
-// y = min_y;
+ + " " + _ ("too small") + " (" + print_dimen (y) + ")");
+ // y = min_y;
}
Array<Real> arr;
arr.push (y);
return;
p->channel_i_ = track_l_->number_i_;
- if (Midi_item *mi = dynamic_cast<Midi_note*>(p))
+ if (Midi_note *mi = dynamic_cast<Midi_note*>(p))
do_start_note (mi);
else
output_event (ptr()->audio_column_l_->at_mom (), p);
notename_i_ = 0;
octave_i_ = 0;
accidental_i_ = 0;
+ cautionary_b_ = false;
}
void
Note_req::Note_req ()
{
+ cautionary_b_ = false;
forceacc_b_ = false;
}
{
#ifndef NPRINT
Melodic_req::do_print ();
- if (forceacc_b_)
+ if (cautionary_b_)
+ {
+ DOUT << " force cautionary accidental\n";
+ }
+ else if (forceacc_b_)
{
DOUT << " force accidental\n";
}
%type <i> abbrev_type
%type <i> int unsigned
%type <i> script_dir
+%type <i> optional_modality
%type <id> identifier_init simple_identifier_init block_identifier
%type <duration> steno_duration notemode_duration
%type <duration> entered_notemode_duration explicit_duration
$$ = new Clef_change_req (*$2);
delete $2;
}
- | KEY NOTENAME_PITCH {
+ | KEY NOTENAME_PITCH optional_modality {
Key_change_req *key_p= new Key_change_req;
key_p->pitch_arr_.push(*$2);
key_p->ordinary_key_b_ = true;
+ key_p->modality_i_ = $3;
$$ = key_p;
delete $2;
}
}
;
+optional_modality:
+ /* empty */ {
+ $$ = 0;
+ }
+ | int {
+ $$ = $1;
+ }
+ ;
+
sup_quotes:
'\'' {
$$ = 1;
| steno_notepitch '!' {
$$->forceacc_b_ = ! $$->forceacc_b_;
}
+ | steno_notepitch '?' {
+ $$->forceacc_b_ = ! $$->forceacc_b_;
+ $$->cautionary_b_ = ! $$->cautionary_b_;
+ }
;
Time_signature_change_req *req = timing_grav_l->time_signature_req_l();
if (req)
{
- Array<Real> args;
+ Array<int> args;
args.push (req->beats_i_);
args.push (req->one_beat_i_);
{
if (time_sig_type_str_[0]=='1')
{
- Array<Real> tmparr = args_;
+ Array<int> tmparr = args_;
tmparr[1]= 0;
s = lookup_l ()->time_signature (tmparr);
}
Begin3
Titel: LilyPond
-Versie: 1.1.1
-Inschrijf datum: 02NOV98
+Versie: 1.1.2
+Inschrijf datum: 03NOV98
Beschrijving: @FLAPTEKST@
Trefwoorden: muziek typezetten midi notatie
Auteur: hanwen@stack.nl (Han-Wen Nienhuys)
janneke@gnu.org (Jan Nieuwenhuizen)
Onderhouden door: hanwen@cs.ruu.nl (Han-Wen Nienhuys)
Voornaamste plek: sunsite.unc.edu /pub/Linux/apps
- 770k lilypond-1.1.1.tar.gz
+ 770k lilypond-1.1.2.tar.gz
Oorspronkelijke plek: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
- 770k lilypond-1.1.1.tar.gz
+ 770k lilypond-1.1.2.tar.gz
Copi-eer voorwaarden: GPL
End
Begin3
Title: LilyPond
-Version: 1.1.1
-Entered-date: 02NOV98
+Version: 1.1.2
+Entered-date: 03NOV98
Description:
LilyPond is the GNU Project music typesetter. This program can print
beautiful sheet music from a music definition file. It can also play
janneke@gnu.org (Jan Nieuwenhuizen)
Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert
- 770k lilypond-1.1.1.tar.gz
+ 770k lilypond-1.1.2.tar.gz
Original-site: ftp.cs.uu.nl /pub/GNU/LilyPond/development/
- 770k lilypond-1.1.1.tar.gz
+ 770k lilypond-1.1.2.tar.gz
Copying-policy: GPL
End
Name: lilypond
-Version: 1.1.1
+Version: 1.1.2
Release: 1
Copyright: GPL
Group: Applications/Publishing
-Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.1.1.tar.gz
+Source0: ftp.cs.uu.nl:/pub/GNU/LilyPond/development/lilypond-1.1.2.tar.gz
Summary: A program for printing sheet music.
URL: http://www.cs.uu.nl/~hanwen/lilypond
Packager: Han-Wen Nienhuys <hanwen@cs.uu.nl>
currentpicture := currentpicture shifted (w/2,0);
- fet_endchar;
+
+fet_endchar;
+
+
+def draw_paren =
+ save leftindent;
+ leftindent# := .2 interline#;
+ define_pixels(leftindent);
+ set_char_box(0, .5 interline#+stafflinethickness#,
+ interline#, interline#);
+ z1 = (leftindent,h);
+ z2 = (w-stafflinethickness,0);
+ z3 = (leftindent,-d);
+
+ penpos1(stafflinethickness, 35);
+ penpos2(2 stafflinethickness, 0);
+ penpos3(stafflinethickness, -35);
+
+ penlabels(1,2,3);
+ fill z2l{down} .. simple_serif(z3l, z3r, 90) .. z2r{up}
+ .. simple_serif(z1r, z1l, 90) .. z2l{down} -- cycle;
+enddef;
+
+fet_beginchar("Right paranthesis", ")", "rightparen")
+ draw_paren;
+fet_endchar;
+
+fet_beginchar("Left paranthesis", "(", "leftparen")
+ draw_paren;
+ currentpicture := currentpicture xscaled -1;
+ set_char_box(charwd, charbp, chardp, charht);
+fet_endchar;
fet_endgroup("accidentals");
/Mats
-
-Tested Features: Note placement, multipart score, figured base, \breve
+Tested Features: Note placement, multipart score, figured base, \breve,
+ time signature styles
%}
%{
\version "1.0.7";
-vi1=\notes \relative c'' {
+global = \notes {
+ \property StaffGroup.timeSignatureStyle = "old"
+ \time 4/4;
+ \tempo 4=80;
+ \skip 1*31;
+ \property StaffGroup.timeSignatureStyle = "1"
+ \time 3/2;
+ \bar ":|:";
+ \tempo 2=140;
+ \skip 1.*15;
+ \property StaffGroup.timeSignatureStyle = "old"
\time 4/4;
+ \tempo 4=80;
+ \skip 1;
+ \bar ":|:";
+ \skip 1*13;
+ \bar "|.";
+}
+
+vi1=\type Staff = vi1 <
+\global
+\notes \relative c'' {
[d8 d d d] d4 [a16 b c a] |
[b8 g ][ g g16 a][ b8 g ][ g g16 a] |
[c8 g ][ g g16 f] e4 d |
r8 g [g g16 f] e4 d |
r8 [d16 a ][ b8 b16 c] a2 |
- b1 |
- \time 3/2;
- \tempo 2=140;
+ b1 |
+
r4 d d d d d |
e1. |
r4 c c c c c |
a4 [c8 b] a4 [b8 c] f,4 [g8 a] |
d,4 g g g g g |
a [d,8 c] b4 [c8 d] a2 |
- \time 4/4;
- \tempo 4=80;
+
b1 |
[d8 d d d] d4 [a16 b c a] |
[b8 g ][ g g16 a] [b8 g ][ g g16 a] |
fis4 g2 fis!4 |
\cadenza 1;
g\breve
- \bar "|.";
-}
+}>
-vi2=\notes \relative c'' {
- \time 4/4;
+vi2=\type Staff = vi2 <
+\global
+\notes \relative c'' {
r1 | r | r |
[d8 d d d] d4 [a16 b c a] |
e4 d r8 [c16 g ][ b8 b16 c] |
a4 g2 fis4 |
g1 |
- \time 3/2;
+
r1. |
r4 [g'8 f] e4 [f8 g] c,4 [d8 e] |
a,1. |
c,4 a a a a a |
b [d8 c] b4 [c8 d] d,4 e |
fis2 g fis! |
- \time 4/4;
+
g1 |
r1 | r1 |
[g'8 g g g] g4 [d16 e f d] |
[a d c b ][ a g fis e] d4 d' |
\cadenza 1;
b\breve
- \bar "|.";
-}
+}>
-bc=\notes\transpose c'{
+bc=\type Staff = bc <
+\global
+\notes\transpose c'{
\clef "bass";
- \time 4/4;
G2 d^"4 3" | G1 |
g2 c4 G | d1^"3 4 3" |
G1^"3 4 3" | c4 B c g |
c B c G | d1^"3 4 3" |
G1 |
- \time 3/2;
+
g1. | c |
f | d^"\\textsharp" |
g | c |
d^"\\textsharp" | e |
f | g1 B2 |
d1.^"3 4 3" |
- \time 4/4;
+
G1 |
+ \bar ":|:";
g2 fis | g G |
g1^"3 4 3" | c |
G^"3 4 3" | c2 G |
) d^"3 4 3" |
\cadenza 1;
G\breve
- \bar "|.";
-}
+}>
\score{
\type StaffGroup <
- \property StaffGroup.timeSignatureStyle = "old"
\vi1
\vi2
\bc
def getLilyopts():
inc = ''
if len(Props.get('include')) > 0:
- inc = '-I ' + string.join(Props.get('include'),os.pathsep)
+# inc = '-I ' + string.join(Props.get('include'),os.pathsep)
+ inc = '-I ' + string.join(Props.get('include'), ' -I ')
else:
if Props.get('dependencies'):
+$(outdir)/%.tex: %.tex
+ $(LN) $< $@
$(outdir)/%.dvi: $(outdir)/%.tex
(cd $(outdir); tex \\nonstopmode \\input $(<F))
%compatibility
%urg
-\fetdef\repeatcolon{18}
+\fetdef\repeatcolon{20}
\def\repeatbar{\repeatstopbar}
\def\startrepeat{\repeatstartbar}
\def\repeatbarstartrepeat{\repeatstopstart}