@refbugs
-Currently, only plain notes (pitches, durations), voices and staffs are
+Currently, only plain notes (pitches, durations), voices and staves are
converted.
Written by @email{Jan Nieuwenhuizen,janneke@@gnu.org}, based on pmx2ly.
\property Score.TextScript \set #'font-style = #'large
<d4_"notation" a fis> r
-{ \property Grace.Stem \override #'flag-style = #""
- \grace g16 }
+{ \property Voice.Stem \override #'flag-style = #""
+ \grace g16
+ \property Voice.Stem \revert #'flag-style
+ }
fis8 e16 fis
-{ \property Grace.Stem \override #'flag-style = #""
- \grace a16 }
+{ \property Voice.Stem \override #'flag-style = #""
+ \grace a16
+ \property Voice.Stem \revert #'flag-style
+ }
g8 fis16 g | a4 \bar "||" }
\notes\relative c'' {
<d4_"performance" a fis> r g16 () fis e fis a () g fis g | a4 \bar "||" }
I: graffa, F: accolade, D: Klammer, Klavierklammer, Akkolade, Chorklammer, NL:
accolade, teksthaak, DK: klamme, S: klammer, N:
-Symbol at the start of a system connecting staffs. Curly braces are used
+Symbol at the start of a system connecting staves. Curly braces are used
for connecting piano staves, angular brackets for connecting parts in an
orchestral or choral score.
@w{@ar{}@strong{brace}}
-A combination of two staffs with a brace. Usually used for piano music.
+A combination of two staves with a brace. Usually used for piano music.
@item grave
ES: grave, I: grave, F: grave, D: grave, langsam, traurig, NL: grave, ernstig, DK: grave, S: grave, N:
ES: pentagrama, I: pentagramma, rigo (musicale), F: port@'ee, D: Notensystem, NL: (noten)balk;
partij, DK: nodesystem, S: notsystem, N: .
-pl. staves or staffs. A series of (normally 5) horizontal lines upon and
-between which the musical notes are written, thus indicating (in connection
-with a @w{@ar{}@strong{clef}}) their pitch. Staffs for
+pl. staves. A series of (normally 5) horizontal lines upon and between
+which the musical notes are written, thus indicating (in connection
+with a @w{@ar{}@strong{clef}}) their pitch. Staves for
@w{@ar{}@strong{percussion}} instruments may have fewer lines.
@item stem
A grob is often associated with a symbol, but some grobs do not print
any symbols. They take care of grouping objects. For example, there is a
-separate grob that stacks staffs vertically. The @code{NoteCollision}
+separate grob that stacks staves vertically. The @code{NoteCollision}
is also an abstract grob: it only moves around chords, but doesn't print
anything.
failed, obviously).
After long and hard thinking, I came up with an algorithm for the
-horizontal spacing of multiple staffs (april 1996) I coded it (and did
+horizontal spacing of multiple staves (april 1996) I coded it (and did
not test it). After starting with this fundamental piece, I slowly
added the stages which come before spacing, and after. A half year
later, I had a first working version, (october 1996). I announced
@lilypond[fragment,verbatim]
\relative c'' {
\grace c8 c4 \grace { [c16 c16] } c4
- \grace { \property Grace.Stem \override #'flag-style = #'() c16 } c4
+ \grace {
+ \property Voice.Stem \override #'flag-style = #'()
+ c16
+ \property Voice.Stem \revert #'flag-style
+ } c4
}
@end lilypond
is to be expected that more functionality -- especially for the MIDI
backend -- will be implemented at some point in the future.
-Volta repeats are printed over all staffs in a score. You must turn them
+Volta repeats are printed over all staves in a score. You must turn them
off explicitly, for example by doing
@example
\property Staff.VoltaBracket = \turnOff
@menu
-* Rhythmic staffs::
+* Rhythmic staves::
@end menu
-@node Rhythmic staffs
-@subsection Rhythmic staffs
+@node Rhythmic staves
+@subsection Rhythmic staves
Sometimes you might want to show only the rhythm of a melody. This can
be done with the rhythmic staff. All pitches of notes on such a staff
@node Piano music
@section Piano music
-Piano music is an odd type of notation. Piano staffs are two normal
-staffs coupled with a brace. The staffs are largely independent, but
-sometimes voices can cross between the two staffs. The
+Piano music is an odd type of notation. Piano staves are two normal
+staves coupled with a brace. The staves are largely independent, but
+sometimes voices can cross between the two staves. The
@code{PianoStaff} is especially built to handle this cross-staffing
behavior. In this section we discuss the @code{PianoStaff} and some
other pianistic peculiarities.
@cindex manual staff switches
@cindex staff switch, manual
-Voices can be switched between staffs manually, using the following command:
+Voices can be switched between staves manually, using the following command:
@example
\translator Staff = @var{staffname} @var{music}
@end example
\context Voice <c\arpeggio e g c>
@end lilypond
-When an arpeggio crosses staffs in piano music, you attach an arpeggio
-to the chords in both staffs, and set
+When an arpeggio crosses staves in piano music, you attach an arpeggio
+to the chords in both staves, and set
@code{PianoStaff.connectArpeggios}.
@lilypond[fragment,relative,verbatim]
* Sound output for transposing instruments::
* Multi measure rests::
* Automatic part combining::
-* Hara kiri staffs::
+* Hara kiri staves::
@end menu
@c . {Rehearsal marks}
@cindex @code{Voice_engraver}
@cindex @code{A2_engraver}
-@node Hara kiri staffs
-@subsection Hara kiri staffs
+@node Hara kiri staves
+@subsection Hara kiri staves
In orchestral scores, staff lines that only have rests are usually removed.
This saves some space. LilyPond also supports this through the hara
\header {
-texidoc= "Staffs that end half way a system should end at the bar line.";
+texidoc= "Staves that end half way a system should end at the bar line.";
}
melody = \notes \relative c' {
\header {
-texidoc="slur or long note on other staffs fool lily into extending melisma"
+texidoc="slur or long note on other staves fool lily into extending melisma"
}
\score {
<
\midi{}
}
-% A full example with two staffs
+% A full example with two staves
%
% Type:
%
\header{
texidoc="
-Auto change piano staff switches voices between up and down staffs
+Auto change piano staff switches voices between up and down staves
automatically rests are switched along with the coming note.
"
}
\version "1.3.146"
\header{
texidoc="
-Beams can be typeset over fixed distance aligned staffs, beam
+Beams can be typeset over fixed distance aligned staves, beam
beautification doesn't really work, but knees do. Beams should be
behave well, wherever the switching point is.
"
\header {
- texidoc = "grace notes in different voices/staffs are synchronized."
+ texidoc = "grace notes in different voices/staves are synchronized."
}
\score {\notes < \context Staff { c2
\version "1.3.146"
\header{
texidoc="
-Hara kiri staffs kill themselves if they are empty. This example really
-contains two staffs, but the second contains only spaces, and is
+Hara kiri staves kill themselves if they are empty. This example really
+contains two staves, but the second contains only spaces, and is
therefore removed. Also, any staff brackets and braces are removed.
"
}
either by setting a property melismaBusy, or by setting
automaticMelismas (which will set melismas during slurs and ties). If
you want a different order than first Music, then Lyrics, you must
-precook a chord of staffs/lyrics and label those. Of course
+precook a chord of staves/lyrics and label those. Of course
@code{\rhythm} ignores any other rhythms in the piece. Hyphens and
extenders do not assume anything about lyric lengths, so they continue
to work.
texidoc="
Staff margins are also markings attached to barlines. They should be
left of the staff, and be centered vertically wrt the staff. They may
-be on normal staffs, but also on compound staffs, like the PianoStaff
+be on normal staves, but also on compound staves, like the PianoStaff
"
}
* Better comment-out most header entries, or
move to template/title.ly altogether?
-* Naming conventions for voices/staffs
+* Naming conventions for voices/staves
(think: \autochange, \partcombine)?
* Add (commented-out) stuff like \time 3/4
melody with lyrics and chords = melody-lyrics-chords.ly
piano = piano.ly
piano with several voices = piano-4-voices.ly
- piano with lyrics (between staffs) = piano-lyrics.ly
+ piano with lyrics (between staves) = piano-lyrics.ly
piano with melody and lyrics = piano-melody-lyrics.ly
TODO (Choral templates, anyone?)
(Message vers:9)
To: Adrian Mariano <adrian@cam.cornell.edu>
cc: gnu-music-discuss@gnu.org
-Subject: Re: Switching from one staff to two staffs
+Subject: Re: Switching from one staff to two staves
Reply-To: janneke@gnu.org
In-reply-to: Your message of "Tue, 19 Jan 1999 12:27:10 EST."
<199901191727.MAA29757@avalanche.cam.cornell.edu>
On Tuesday, 19 January 1999, Adrian Mariano writes:
> I want to typeset something which starts out with just one staff and then
-> harmony comes in and there are two staffs. I can't figure out how to do
+> harmony comes in and there are two staves. I can't figure out how to do
> this. I get an extra blank staff during the second section (using
> Lily 1.1.15):
\header{
texidoc="
-Theads can be traced automagically when they switch staffs by setting
+Theads can be traced automagically when they switch staves by setting
property @code{followVoice}.
"
}
>
voiceTwo = \notes \relative c' {
- % we must have a Thread context before we can switch staffs
+ % we must have a Thread context before we can switch staves
% in this case, the notes before the switching will do that
% implicitely
\context Thread
\version "1.3.146"
\header {
-texidoc = "Hara kiri staffs disappear when empty "
+texidoc = "Hara kiri staves disappear when empty "
}
In InnerStaffGroup and InnerChoirStaff, the brackets should be shiftet leftwards.
"
filename = "nested-groups.ly"
-description = "Test of nested staff groups and choirstaffs"
+description = "Test of nested staff groups and choirstaves"
enteredby = "RZ"
copyright = "public domain"
Tested = "Nested StaffGroups"
%}
%{
-Tested Features: lyrics, interleaving lyrics and staffs, repeats,
+Tested Features: lyrics, interleaving lyrics and staves, repeats,
auto beaming, adding lyrics to notes, hyphens
%}
}
/*
- lines may only be broken if there is a barline in all staffs
+ lines may only be broken if there is a barline in all staves
*/
void
Bar_engraver::stop_translation_timestep ()
/// the total music def of one movement
class Score: public Input {
public:
- /// paper_, staffs_ and commands_ form the problem definition.
+ /// paper_, staves_ and commands_ form the problem definition.
Link_array<Music_output_def> def_p_arr_;
SCM music_;
Scheme_hash_table * header_p_;
/*
- staffsym.hh -- declare Staff_symbol
+ staff-symbol.hh -- declare Staff_symbol
source file of the GNU LilyPond music typesetter
*/
-#ifndef STAFFSYM_HH
-#define STAFFSYM_HH
+#ifndef STAFF_SYMBOL_HH
+#define STAFF_SYMBOL_HH
#include "lily-guile.hh"
static bool has_interface (Grob*);
static void set_interface (Grob*);
};
-#endif // STAFFSYM_HH
+#endif // STAFF_SYMBOL_HH
#include "lily-proto.hh"
/*
- Braces/brackets across staffs.
+ Braces/brackets across staves.
*/
class System_start_delimiter
{
return;
/*
- Hang the instrument names on the staffs, but not on the alignment
+ Hang the instrument names on the staves, but not on the alignment
groups enclosing that staff. The alignment has no real location,
but is only a vehicle for the placement routine it contains, and
therefore the location of its refpoint won't be very useful.
Warning: this thing is a cross-staff object, so it should have empty Y-dimensions.
(If not, you risk that this is called from the staff-alignment
- routine, via molecule_extent. At this point, the staffs aren't
+ routine, via molecule_extent. At this point, the staves aren't
separated yet, so it doesn't work cross-staff.
*/
void
Mark_engraver::initialize ()
{
- daddy_trans_l_->set_property ("staffsFound", SCM_EOL); // ugh: sharing with barnumber grav.
+ daddy_trans_l_->set_property ("stavesFound", SCM_EOL); // ugh: sharing with barnumber grav.
}
if (Staff_symbol::has_interface (s)
|| to_boolean (s->get_grob_property ("invisible-staff")))
{
- SCM sts = get_property ("staffsFound");
+ SCM sts = get_property ("stavesFound");
SCM thisstaff = inf.elem_l_->self_scm ();
if (scm_memq (thisstaff, sts) == SCM_BOOL_F)
- daddy_trans_l_->set_property ("staffsFound", gh_cons (thisstaff, sts));
+ daddy_trans_l_->set_property ("stavesFound", gh_cons (thisstaff, sts));
}
else if (text_p_ && Bar::has_interface (s))
{
{
if (text_p_)
{
- text_p_->set_grob_property ("side-support-elements" , get_property ("staffsFound"));
+ text_p_->set_grob_property ("side-support-elements" , get_property ("stavesFound"));
typeset_grob (text_p_);
text_p_ =0;
}
*/
assignment:
STRING {
- THIS->remember_spot ();
+ THIS->push_spot ();
}
/* cont */ '=' identifier_init {
*/
score_block:
SCORE {
- THIS->remember_spot ();
+ THIS->push_spot ();
}
/*cont*/ '{' score_body '}' {
THIS->pop_spot ();
chm->set_spot (*$3->origin ());
}
| GRACE Music {
-#if 0
+#if 1
/*
The other version is for easier debugging of
Sequential_music_iterator in combination with grace notes.
$$ = csm;
}
| TIMES {
- THIS->remember_spot ();
+ THIS->push_spot ();
}
/* CONTINUED */
fraction Music
request_chord:
- pre_requests simple_element post_requests {
- Music_sequence *l = dynamic_cast<Music_sequence*> ($2);
+ pre_requests {
+ THIS->push_spot ();
+ } /*cont */ simple_element post_requests {
+ Music_sequence *l = dynamic_cast<Music_sequence*> ($3);
if (l) {
for (int i=0; i < $1->size (); i++)
l->append_music ($1->elem (i));
- for (int i=0; i < $3->size (); i++)
- l->append_music ($3->elem (i));
+ for (int i=0; i < $4->size (); i++)
+ l->append_music ($4->elem (i));
}
else
programming_error ("Need Sequence to add music to");
- $$ = $2;
-
+ $$ = $3;
}
| command_element
;
simple_element:
pitch exclamations questions optional_notemode_duration {
+
+ Input i = THIS->pop_spot ();
if (!THIS->lexer_p_->note_state_b ())
THIS->parser_error (_ ("Have to be in Note mode for notes"));
Simultaneous_music*v = new Request_chord (SCM_EOL);
v->set_mus_property ("elements", gh_list (n->self_scm (), SCM_UNDEFINED));
-/*
-FIXME: location is one off, since ptich & duration don't contain origin refs.
-*/
- v->set_spot (THIS->here_input ());
- n->set_spot (THIS->here_input ());
-
+ v->set_spot (i);
+ n->set_spot (i);
$$ = v;
}
| RESTNAME optional_notemode_duration {
- SCM e = SCM_UNDEFINED;
- if (ly_scm2string ($1) =="s")
- { /* Space */
- Skip_req * skip_p = new Skip_req;
- skip_p->set_mus_property ("duration" ,$2);
-
- skip_p->set_spot (THIS->here_input ());
+ Input i = THIS->pop_spot ();
+ SCM e = SCM_UNDEFINED;
+ if (ly_scm2string ($1) =="s") {
+ /* Space */
+ Skip_req * skip_p = new Skip_req;
+ skip_p->set_mus_property ("duration" ,$2);
+ skip_p->set_spot (i);
e = skip_p->self_scm ();
- }
- else
- {
- Rest_req * rest_req_p = new Rest_req;
- rest_req_p->set_mus_property ("duration", $2);
- rest_req_p->set_spot (THIS->here_input ());
+ }
+ else {
+ Rest_req * rest_req_p = new Rest_req;
+ rest_req_p->set_mus_property ("duration", $2);
+ rest_req_p->set_spot (i);
e = rest_req_p->self_scm ();
}
- Simultaneous_music* velt_p = new Request_chord (SCM_EOL);
+ Simultaneous_music* velt_p = new Request_chord (SCM_EOL);
velt_p-> set_mus_property ("elements", gh_list (e,SCM_UNDEFINED));
- velt_p->set_spot (THIS->here_input ());
-
+ velt_p->set_spot (i);
- $$ = velt_p;
+ $$ = velt_p;
}
| MULTI_MEASURE_REST optional_notemode_duration {
+ Input i = THIS->pop_spot ();
+
Skip_req * sk = new Skip_req;
sk->set_mus_property ("duration", $2);
Span_req *sp1 = new Span_req;
$$->set_mus_property ("elements", ms);
}
| STRING optional_notemode_duration {
+ Input i = THIS->pop_spot ();
Lyric_req* lreq_p = new Lyric_req;
lreq_p->set_mus_property ("text", $1);
lreq_p->set_mus_property ("duration",$2);
- lreq_p->set_spot (THIS->here_input ());
+ lreq_p->set_spot (i);
Simultaneous_music* velt_p = new Request_chord (SCM_EOL);
velt_p->set_mus_property ("elements", gh_list (lreq_p->self_scm (), SCM_UNDEFINED));
-
$$= velt_p;
-
}
| chord {
+ Input i = THIS->pop_spot ();
+
if (!THIS->lexer_p_->chord_state_b ())
THIS->parser_error (_ ("Have to be in Chord mode for chords"));
$$ = $1;
/**
- Make arpeggios that span multiple staffs. Catch arpeggios, and span a
+ Make arpeggios that span multiple staves. Catch arpeggios, and span a
Span_arpeggio over them if we find more than two arpeggios.
*/
class Span_arpeggio_engraver : public Engraver
/**
- Make bars that span multiple "staffs". Catch bars, and span a
+ Make bars that span multiple "staves". Catch bars, and span a
Span_bar over them if we find more than 2 bars. Vertical alignment
- of staffs changes the appearance of spanbars. It is up to the
+ of staves changes the appearance of spanbars. It is up to the
aligner (Vertical_align_engraver, in this case, to add extra
dependencies to the spanbars.
points to.
TODO: maybe be more specific. Most probably fucks up if someone sets
- a pointer to the staffsymbol in S
+ a pointer to the staff symbol in S
*/
void
extend_spanner_over_elements (Grob*s)
% explicitly set instrument, so we don't get
% weird effects when doing instrument names for
- % piano staffs
+ % piano staves
instrument = ##f
instr = ##f
papersize = \papersize
% FIXME
-% direct PostScript line height for single line staffs
+% direct PostScript line height for single line staves
lineheight = 14
paperfile = \papersize + "-init.ly"
% a square pen). [Wanske] does not mention this, so we'll just ignore
% this fact
%
-fet_beginchar("Default Sharp" , "1", "sharp");
+fet_beginchar("Sharp" , "1", "sharp");
set_char_box(0, 1.1 staff_space#, 1.5 staff_space#,
1.5 staff_space#);
labels(1,2,3,4);
fet_endchar;
-fet_beginchar( "Default Natural", "0", "natural")
+fet_beginchar( "Natural", "0", "natural")
set_char_box(0, 8/12 staff_space#, 1.5 staff_space#, 1.5 staff_space#);
save interbeam, interstem, beamheight, beamwidth,
%
% unfortunately, 600dpi is not enough to show the brush of the stem.
%
-fet_beginchar("Default Flat", "-1", "flat")
+fet_beginchar("Flat", "-1", "flat")
set_char_box(1.2 stafflinethickness#, .8 staff_space#, .5 staff_space#, 2 staff_space#);
draw_meta_flat(0, w, 1/3 staff_space);
fet_endchar;
-fet_beginchar("Default Double Flat", "-2", "flatflat")
+fet_beginchar("Double Flat", "-2", "flatflat")
save left_wid, overlap, right_wid;
left_wid = .7;
right_wid = .8;
right_wid *staff_space, 1/3 staff_space);
fet_endchar;
-fet_beginchar("Default Double Sharp", "2", "sharpsharp")
+fet_beginchar("Double Sharp", "2", "sharpsharp")
set_char_box(0, staff_space#, .5 staff_space#, .5 staff_space#);
save klaverblad, klaversteel;
% FIXME
% urg, read from paper block
-% fixed base line skip value, for single line staffs
+% fixed base line skip value, for single line staves
/base-line-skip lilypondpaperlineheight def
'(BarLine)
'(
whichBar
- staffsFound
+ stavesFound
)))
(engraver-description
"Bar_number_engraver"
"A bar number is created whenever measurePosition is zero. It is
-put on top of all staffs, and appears only at left side of the staff."
+put on top of all staves, and appears only at left side of the staff."
'(BarNumber)
'(
currentBarNumber
'(
rehearsalMark
- staffsFound
+ stavesFound
)))
'Timing_engraver
(engraver-description
"Timing_engraver"
- " Responsible for synchronizing timing information from staffs.
+ " Responsible for synchronizing timing information from staves.
Normally in @code{Score}. In order to create polyrhythmic music,
this engraver should be removed from @code{Score} and placed in
@code{Staff}."
")
(GrandStaff . "
Contains @code{Staff} or @code{RhythmicStaff} contexts. It adds a
- brace on the left side, grouping the staffs together. The bar
- lines of the contained staffs are connected vertically. It can
+ brace on the left side, grouping the staves together. The bar
+ lines of the contained staves are connected vertically. It can
contain @code{Staff} contexts.")
(PianoStaff . "
(StaffGroup . "
Contains @code{Staff} or @code{RhythmicStaff} contexts. Adds a
- bracket on the left side, grouping the staffs together. The bar
- lines of the contained staffs are connected vertically. It can
+ bracket on the left side, grouping the staves together. The bar
+ lines of the contained staves are connected vertically. It can
contain @code{Staff}, @code{RhythmicStaff}, @code{GrandStaff}, or
@code{Lyrics} contexts.
")
(ChoirStaff . "
- Identical to @code{StaffGroup} except that the contained staffs
+ Identical to @code{StaffGroup} except that the contained staves
are not connected vertically.
")
(Score . "
contain a @code{Score} context. This context handles the
administration of time signatures. It also makes sure that items
such as clefs, time signatures, and key-signatures are aligned
- across staffs. It can contain @code{Lyrics}, @code{Staff},
+ across staves. It can contain @code{Lyrics}, @code{Staff},
@code{RhythmicStaff}, @code{GrandStaff}, @code{StaffGroup}, and
@code{ChoirStaff} contexts.
(translator-property-description 'combineParts boolean? "try to combine parts?")
(translator-property-description 'connectArpeggios boolean? " If
set, connect all arpeggios that are found. In this way, you can make
-arpeggios that cross staffs.
+arpeggios that cross staves.
")
(translator-property-description 'createKeyOnClefChange boolean? "Print a key signature whenever the clef is changed.")
(translator-property-description 'crescendoText markup? "Text to print at start of non-hairpin crecscendo, ie: @samp{cresc.}")
(translator-property-description 'split-interval boolean? "set if part-combiner separated voices based on splitInterval.")
(translator-property-description 'squashedPosition integer? " Vertical position of
squashing for Pitch_squash_engraver.")
-(translator-property-description 'staffsFound list? "list of all staff-symbols found.")
+(translator-property-description 'stavesFound list? "list of all staff-symbols found.")
(translator-property-description 'stanza string? "Stanza `number' to print at start of a verse. Use in LyricsVoice context.")