summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Documentation/faq.yo35
-rw-r--r--NEWS5
-rw-r--r--VERSION2
-rw-r--r--input/test/chords.ly1
-rw-r--r--input/test/gmsusd.ly32
-rw-r--r--lily/chord.cc47
-rw-r--r--lily/parser.yy35
-rw-r--r--ly/nederlands.ly2
-rw-r--r--mf/feta-generic.mf2
-rw-r--r--stepmake/NEWS6
-rw-r--r--stepmake/VERSION2
-rw-r--r--stepmake/stepmake/substitute-vars.make4
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)
diff --git a/NEWS b/NEWS
index df64243e3d..e8e469e939 100644
--- a/NEWS
+++ b/NEWS
@@ -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
diff --git a/VERSION b/VERSION
index f64a357ccb..78a3f7965a 100644
--- a/VERSION
+++ b/VERSION
@@ -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