diff options
-rw-r--r-- | Documentation/faq.yo | 35 | ||||
-rw-r--r-- | NEWS | 5 | ||||
-rw-r--r-- | VERSION | 2 | ||||
-rw-r--r-- | input/test/chords.ly | 1 | ||||
-rw-r--r-- | input/test/gmsusd.ly | 32 | ||||
-rw-r--r-- | lily/chord.cc | 47 | ||||
-rw-r--r-- | lily/parser.yy | 35 | ||||
-rw-r--r-- | ly/nederlands.ly | 2 | ||||
-rw-r--r-- | mf/feta-generic.mf | 2 | ||||
-rw-r--r-- | stepmake/NEWS | 6 | ||||
-rw-r--r-- | stepmake/VERSION | 2 | ||||
-rw-r--r-- | stepmake/stepmake/substitute-vars.make | 4 |
12 files changed, 149 insertions, 24 deletions
diff --git a/Documentation/faq.yo b/Documentation/faq.yo index e365332c99..1259330460 100644 --- a/Documentation/faq.yo +++ b/Documentation/faq.yo @@ -242,12 +242,47 @@ verb( > ) +question(How do I combine multiple pieces into one document) + +There are several solutions: + +itemize( +it() +verb( + ly2dvi foo.ly bar.ly +) +produces one combined file(foo.dvi) +it() make a toplevel file(.ly) file that contains al pieces: +verb( + % booklet.ly + \input "piece-1.ly" + \input "piece-2.ly" + \input "piece-3.ly" +) +it() make a hybrid TeX()/LilyPond file(.doc) document (see the + file(Documentation/tex) directory). +) + +For the first two solutions, you will need to move code(\header) info +in each individual piece from toplevel into the code(\paper) block. + +There are several examples in the file(mutopia) directory. + question(How do I get bar numbers?) See file(input/test/bar-scripts.ly). +question(How do I change the tagline 'Lily was here') + +In the code(\header) field, add a code(tagline) entry, eg +verb( +tagline="Typeset by GNU LilyPond" +) + +to get a bit less frivolous tagging. + sect(Development) COMMENT(look out: can't have line breaks in subsect() macro) @@ -1,3 +1,8 @@ +pl 63.jcn1 + - some faq entries + - chord input and proceccing fixes + - bf: nederlands.ly + pl 62.hwn1 - ps-to-pfa.py: use std modules re, find - minor input fixes @@ -2,7 +2,7 @@ PACKAGE_NAME=LilyPond MAJOR_VERSION=1 MINOR_VERSION=1 PATCH_LEVEL=63 -MY_PATCH_LEVEL= +MY_PATCH_LEVEL=lu1 # use the above to send patches: MY_PATCH_LEVEL is always empty for a # released version. diff --git a/input/test/chords.ly b/input/test/chords.ly index 44e92b17a7..bc75dbddc2 100644 --- a/input/test/chords.ly +++ b/input/test/chords.ly @@ -20,6 +20,7 @@ scales = \notes \transpose c'' \chords{ %<c1 e g> c1-m c-min c4-dim c-aug c-sus c-maj c1-6 c4-7 c-9 c-11 c-13 + c-m7 c-m.sus c-m7.sus c1-7^5 c-13^5.7.9.11 % c1-7^5 c-13^5 c1 g d a e b fis diff --git a/input/test/gmsusd.ly b/input/test/gmsusd.ly new file mode 100644 index 0000000000..8535e0663f --- /dev/null +++ b/input/test/gmsusd.ly @@ -0,0 +1,32 @@ +% the Gm7sus4/D chord prints as Gm/4/7/D +% it took me quite a while by experiment to work out how to enter it -- PC + +% perhaps the current modifier approach is too simplistic + +\version "1.1.52"; + +gmsus=\notes\relative c \chords{ + g1 + % Gm7sus4: the hard way + g1-3-.4.7 + + % another hard way: + \notes< g'1 bes c d f > + + % bit easier: + g1-m.4.7 + + g1-m7.sus + g1-m7.sus4 + + % and finally: + \property Score.chordInversion = 1 + g1-m7.sus/d +} + +\score{ + < + \context ChordNames \gmsus + \context Staff \gmsus + > +} diff --git a/lily/chord.cc b/lily/chord.cc index 03594ceed3..867add9c73 100644 --- a/lily/chord.cc +++ b/lily/chord.cc @@ -129,23 +129,49 @@ Chord::Chord (Musical_pitch tonic, Array<Musical_pitch>* add_arr_p, Array<Musica fifth.transpose (Musical_pitch (2, -1)); /* + remove double adds (urg: sus4) + */ + for (int i = add_arr_p->size () - 1; i >= 0 ; i--) + { + int j = ::find_pitch_i (add_arr_p, (*add_arr_p)[i]); + if ((j != -1) && (i != j)) + { + add_arr_p->get (i); + } + } + + /* default chord includes upto 5: <1, 3, 5> */ add_arr_p->insert (tonic, 0); - int highest_trap = trap_i (tonic, add_arr_p->top ()); + Array<Musical_pitch> tmp = *add_arr_p; + int highest_trap = trap_i (tonic, tmp.top ()); if (highest_trap < 5) - add_arr_p->push (fifth); + tmp.push (fifth); /* find missing triads */ - Array<Musical_pitch> missing_arr = missing_triads_pitch_arr (add_arr_p); + Array<Musical_pitch> missing_arr = missing_triads_pitch_arr (&tmp); + if (highest_trap < 5) + missing_arr.push (fifth); /* - if additions include 4, assume sus4 and don't add third implicitely + if additions include some 3, don't add third */ Musical_pitch third = tonic; third.transpose (Musical_pitch (2)); + if (::find_notename_i (add_arr_p, third) != -1) + { + int i = ::find_pitch_i (&missing_arr, third); + if (i != -1) + missing_arr.get (i); + } + + /* + if additions include 4, assume sus4 and don't add third implicitely + C-sus (4) = c f g (1 4 5) + */ Musical_pitch sus = tonic; sus.transpose (Musical_pitch (3)); if (::find_pitch_i (add_arr_p, sus) != -1) @@ -154,6 +180,17 @@ Chord::Chord (Musical_pitch tonic, Array<Musical_pitch>* add_arr_p, Array<Musica if (i != -1) missing_arr.get (i); } + + /* + if additions include some 5, don't add fifth + */ + if (::find_notename_i (add_arr_p, fifth) != -1) + { + int i = ::find_pitch_i (&missing_arr, fifth); + if (i != -1) + missing_arr.get (i); + } + /* complete the list of triads to be added @@ -176,7 +213,7 @@ Chord::Chord (Musical_pitch tonic, Array<Musical_pitch>* add_arr_p, Array<Musica break; } if (j == sub_arr_p->size ()) - pitch_arr_.push (p); + pitch_arr_.push (p); } pitch_arr_.sort (Musical_pitch::compare); diff --git a/lily/parser.yy b/lily/parser.yy index 0cf567a55e..88da679854 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -229,7 +229,7 @@ yylex (YYSTYPE *s, void * v_l) %type <pitch_arr> pitch_list %type <music> chord -%type <pitch_arr> chord_additions chord_subtractions chord_notes +%type <pitch_arr> chord_additions chord_subtractions chord_notes chord_step %type <pitch> chord_note chord_inversion %type <midi> midi_block midi_body %type <duration> duration_length @@ -1414,24 +1414,15 @@ chord_additions: | '-' chord_notes { $$ = $2; } - | '-' CHORDMODIFIER_PITCH { - $$ = new Array<Musical_pitch>; - $$->push (*$2); - } - | '-' CHORDMODIFIER_PITCH chord_notes { - $$ = $3; - $$->push (*$2); - } ; chord_notes: - chord_note { - $$ = new Array<Musical_pitch>; - $$->push (*$1); + chord_step { + $$ = $1 } - | chord_notes '.' chord_note { + | chord_notes '.' chord_step { $$ = $1; - $$->push (*$3); + $$->concat (*$3); } ; @@ -1458,6 +1449,22 @@ chord_inversion: } ; +chord_step: + chord_note { + $$ = new Array<Musical_pitch>; + $$->push (*$1); + } + | CHORDMODIFIER_PITCH { + $$ = new Array<Musical_pitch>; + $$->push (*$1); + } + | CHORDMODIFIER_PITCH chord_note { + $$ = new Array<Musical_pitch>; + $$->push (*$1); + $$->push (*$2); + } + ; + chord_note: unsigned { $$ = new Musical_pitch; diff --git a/ly/nederlands.ly b/ly/nederlands.ly index 9b652a6bd2..78fc35ed04 100644 --- a/ly/nederlands.ly +++ b/ly/nederlands.ly @@ -68,7 +68,9 @@ Dis = \musicalpitch { -2 1 1 } Disis = \musicalpitch { -2 1 2 } Eses = \musicalpitch { -2 2 -2 } + Eeses = \musicalpitch { -2 2 -2 } Es = \musicalpitch { -2 2 -1 } + Ees = \musicalpitch { -2 2 -1 } E = \musicalpitch { -2 2 0 } Eis = \musicalpitch { -2 2 1 } Eisis = \musicalpitch { -2 2 2 } diff --git a/mf/feta-generic.mf b/mf/feta-generic.mf index b1cdd49fbc..ad64170dff 100644 --- a/mf/feta-generic.mf +++ b/mf/feta-generic.mf @@ -37,7 +37,7 @@ if test = 0: else: % input feta-bolletjes; % input feta-banier; - input feta-eindelijk; +% input feta-eindelijk; % input feta-klef; % input feta-toevallig; % input feta-schrift; diff --git a/stepmake/NEWS b/stepmake/NEWS index 3f3f98ee14..fca4a87733 100644 --- a/stepmake/NEWS +++ b/stepmake/NEWS @@ -1,3 +1,9 @@ +pl 79 + - empty sed script fix for aix + +pl 78 + - yodl mode, mp fixes + pl 77 - mfmode diff --git a/stepmake/VERSION b/stepmake/VERSION index 26f5b35fe0..f4cf86e780 100644 --- a/stepmake/VERSION +++ b/stepmake/VERSION @@ -1,7 +1,7 @@ PACKAGE_NAME=StepMake MAJOR_VERSION=0 MINOR_VERSION=1 -PATCH_LEVEL=78 +PATCH_LEVEL=79 MY_PATCH_LEVEL= # use the above to send patches, always empty for released version: diff --git a/stepmake/stepmake/substitute-vars.make b/stepmake/stepmake/substitute-vars.make index d310ae63a2..62c4dd010a 100644 --- a/stepmake/stepmake/substitute-vars.make +++ b/stepmake/stepmake/substitute-vars.make @@ -10,12 +10,12 @@ DATE = $(date) # for all FILE in AT_FILES: # substitute occurrences of @FILE@ with contents $(at-dir)BLA$(at-ext) -sed-atfiles = -e '' $(foreach i, $(AT_FILES), \ +sed-atfiles = -e '\#' $(foreach i, $(AT_FILES), \ -e '/@$i@/r $(at-dir)$i$(at-ext)' -e 's%@$i@%%g') # for all VAR in ATVARIABLES # substitute occurrences of @VAR@ with $(VAR) -sed-atvariables = -e '' $(foreach i, $(ATVARIABLES), -e 's!@$i@!$($i)!g') +sed-atvariables = -e '\#' $(foreach i, $(ATVARIABLES), -e 's!@$i@!$($i)!g') # these are obsolete # use ATVARIABLES |