@node Lyrics mode definition
@section Lyrics mode definition
+The definition of lyrics mode is ludicrous, and this will remain so
+until the authors of LilyPond acquire a deeper understanding of
+character encoding, or someone else steps up to fix this.
+
+
A word in Lyrics mode begins with: an alphabetic character, @code{_},
@code{?}, @code{!}, @code{:}, @code{'}, the control characters @code{^A}
through @code{^F}, @code{^Q} through @code{^W}, @code{^Y}, @code{^^},
@end lilypond
@end quotation
-
-[barnumbers look silly, fixme.]
+@c [barnumbers look silly, fixme.]
@node MIDI instruments
@section MIDI instruments
-[todo: make nicely formatted table]
-
@example
"acoustic grand" "contrabass" "lead 7 (fifths)"
"bright acoustic" "tremolo strings" "lead 8 (bass+lead)"
--- /dev/null
+
+\version "1.3.146"
+
+\score {
+ \context Voice \notes\relative c {
+ \time 4/4
+ g''1 a2 b4. c8
+ \repeat "volta" 2 { a4 b c d } \alternative { { c c c c } { d2 d4 [d8 d] } }
+
+ }
+ \paper { }
+ \midi { }
+}
--- /dev/null
+\version "1.3.146"
+
+% test for ascii-art output
+
+\include "paper-as9.ly"
+
+\score {
+ \notes\relative c'{
+ \time 4/4
+ c8( e g )b
+ d( d d )d
+ \bar "|."
+ }
+ \paper {
+ linewidth=65.0\char
+ \translator { \StaffContext barSize = #9 }
+ %\translator { \VoiceContext beamHeight = #0 }
+ \translator { \VoiceContext beamHeight = ##f }
+ }
+
+}
+
--- /dev/null
+\header {
+
+texidoc = "If NoteCollision has merge-differently-dotted set, note
+heads that have differing dot counts may be merged anyway."
+
+ }
+
+\score { \notes {
+ \context Staff <
+ \context Voice = VA { \voiceOne g'8 g'8
+ \property Staff.NoteCollision \override #'merge-differently-dotted = ##t
+ g'8 g'8
+ }
+ \context Voice = VB { \voiceTwo [g'8. f16] [g'8. f'16] }
+ >
+}}
fragment = \notes {
- \property Voice.Beam \set #'staff-position = #2
- \property Voice.Beam \set #'height = #-2
+ \property Voice.Beam \set #'staff-position = #4
+ \property Voice.Beam \set #'height = #-4
[c'8 c]
}
)
- \score { \notes {
+ \score { \notes \relative c'' {
\property Voice.TextScript \override #'molecule-callback =
#(make-molecule-boxer Text_item::brew_molecule)
\property Voice.Stem \override #'molecule-callback =
#(make-molecule-boxer Stem::brew_molecule)
- c''8
+\property Score.RehearsalMark \override #'molecule-callback =
+ #(make-molecule-boxer Text_item::brew_molecule)
+
+ c8
+\property Voice.Stem \revert #'molecule-callback
+
+ c4. c4 \mark "F" c1
}}
/*
[TODO]
- * shorter! (now +- 1000 lines)
- * less hairy code
+ -* shorter! (now +- 1000 lines)
+
+ -* less hairy code
+
*/
/*
If dir is not determined: get default
*/
- return to_dir (me->get_grob_property ("default-neutral-direction"));
+ return to_dir (me->get_grob_property ("neutral-direction"));
}
SCM s = me->get_grob_property ("staff-position");
if (gh_number_p (s))
{
- Real y = gh_scm2double (s) * staff_space;
+ Real y = gh_scm2double (s) * staff_space * 0.5;
me->set_grob_property ("y", gh_double2scm (y));
}
s = me->get_grob_property ("height");
if (gh_number_p (s))
{
- Real dy = gh_scm2double (s) * staff_space;
+ Real dy = gh_scm2double (s) * staff_space * 0.5;
me->set_grob_property ("dy", gh_double2scm (dy));
}
Real bdy = interbeam_f;
Real stemdx = staffline_f;
+#if 0
// ugh -> use commonx
Real dx = visible_stem_count (me) ?
last_visible_stem (me)->relative_coordinate (0, X_AXIS) - first_visible_stem (me)->relative_coordinate (0, X_AXIS)
: 0.0;
-
+#endif
+
Molecule leftbeams;
Molecule rightbeams;
if (d && bt > 4) // UGH.
{
d->set_grob_property ("staff-position",
- gh_int2scm ((bt == 7) ? 4 : 3));
+ gh_int2scm ((bt == 7) ? 4 : 3));
}
return SCM_UNSPECIFIED;
if (sign (dd - du))
return Direction (sign (dd -du));
- return to_dir (me->get_grob_property ("default-neutral-direction"));
+ return to_dir (me->get_grob_property ("neutral-direction"));
}
Real
stem_y.unite (Interval (y2,y1));
Real dy = Staff_symbol_referencer::staff_space (me)/2.0;
- Real head_wid = 0;
if (Grob *hed = support_head (me))
{
- Real slope =0.0;
-
Interval head_height = hed->extent (hed,Y_AXIS);
Real y_attach = Note_head::stem_attachment_coordinate ( hed, Y_AXIS);
Generic_property_list = #generic-staff-properties
\consists "Property_engraver"
- \consists "Multi_measure_rest_engraver"
-
\consists "Bar_engraver"
% Bar_engraver must be first so default bars aren't overwritten
% with empty ones.
\consists "Rest_collision_engraver"
\consists "Local_key_engraver"
\consists "Piano_pedal_engraver"
-
-%{
- The Instrument_name_engravei puts the name of the instrument
- (\property Staff.instrument Staff.instr for subsequent lines)
- to the left of a staff.
-
- This is commented out, so you don't get funny things on the
- PianoStaff
\consists "Instrument_name_engraver"
-%}
\consistsend "Axis_group_engraver"
- MinimumVerticalExtent = ##f
+ MinimumVerticalExtent = #'(-4 . 4)
ExtraVerticalExtent = ##f
VerticalExtent = ##f
\consists "Voice_devnull_engraver"
\consists "Output_property_engraver"
\consists "Arpeggio_engraver"
-
+ \consists "Multi_measure_rest_engraver"
\consists "Text_spanner_engraver"
\consists "Property_engraver"
\consists "Vertical_align_engraver"
- alignmentReference = #0
+
+
verticalAlignmentChildCallback = #Align_interface::fixed_distance_alignment_callback
VerticalAlignment \override #'forced-distance = #12
-
+ VerticalAlignment \override #'self-alignment-Y = #0
% \consistsend "Axis_group_engraver"
}
splitInterval = #'(0 . 1)
changeMoment = #`(,(make-moment 0 0) . ,(make-moment 1 512))
- StaffMinimumVerticalExtent = #(cons -4.0 4.0)
-
barAuto = ##t
voltaVisibility = ##t
% name, glyph id, clef position
(thickness . 0.48) ; in staff-space
(before-line-breaking-callback . ,Beam::before_line_breaking)
(after-line-breaking-callback . ,Beam::after_line_breaking)
- (default-neutral-direction . 1)
+ (neutral-direction . 1)
(dir-function . ,beam-dir-majority)
(height-quants . ,default-beam-dy-quants)
(vertical-position-quant-function . ,default-beam-y-quants)
(lengths . (3.5 3.5 3.5 4.5 5.0))
(stem-shorten . (0.5))
; if stem is on middle line, choose this direction.
- (default-neutral-direction . 1)
+ (neutral-direction . 1)
(X-offset-callbacks . (,Stem::off_callback))
(X-extent-callback . ,Stem::dim_callback)
(Y-extent-callback . ,Stem::height)
(axes 1)
(Y-extent-callback . ,Axis_group_interface::group_extent_callback)
(X-extent-callback . #f)
+
(stacking-dir . -1)
(meta . ,(grob-description "VerticalAlignment" align-interface axis-group-interface))
))
def regularize_assignment (match):
return '\n' + regularize_id (match.group (1)) + ' = '
str = re.sub ('\$([^\t\n ]+)', regularize_dollar_reference, str)
- str = re.sub ('\n([^ \t\n]+) = ', regularize_assignment, str)
+ str = re.sub ('\n([^ \t\n]+)[ \t]*= *', regularize_assignment, str)
return str
conversions.append (((1,3,117), conv, 'identifier names: $!foo_bar_123 -> xfooBarABC'))
str = re.sub ('\\\\key[ \t]*;', '\\key \\default;', str)
str = re.sub ('\\\\mark[ \t]*;', '\\mark \\default;', str)
- # only remove ; that are directly after words.
- # otherwise we interfere with Scheme comments, which is badbadbad.
- str = re.sub ("([^ \t]);", "\\1", str)
+ # Make sure groups of more than one ; have space before
+ # them, so that non of them gets removed by next rule
+ str = re.sub ("([^ \n\t;]);(;+)", "\\1 ;\\2", str)
+
+ # Only remove ; that are not after spaces, # or ;
+ # Otherwise we interfere with Scheme comments,
+ # which is badbadbad.
+ str = re.sub ("([^ \t;#]);", "\\1", str)
return str
conversions.append (((1,3,146), conv, 'semicolons removed'))
+if 1:
+ def conv (str):
+ str = re.sub ('default-neutral-direction', 'neutral-direction',str)
+ return str
+ conversions.append (((1,3,147), conv, 'default-neutral-direction -> neutral-direction'))
+
################################
# END OF CONVERSIONS
################################
for f in files:
if f == '-':
f = ''
+ if not os.path.isfile (f):
+ continue
try:
do_one_file (f)
except UnknownVersion: