From 711bbb9b9608ccd3ef2e876ab0c13af181fde283 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Wed, 25 Feb 1998 22:20:56 +0100 Subject: [PATCH] release: 0.1.46 --- .dstreamrc | 2 +- AUTHORS.txt | 4 +- Documentation/literature.pod | 14 +- Documentation/other-packages.pod | 37 +++--- INSTALL.txt | 12 +- NEWS | 20 ++- TODO | 2 + VERSION | 2 +- bin/ly2dvi.sh | 2 +- bin/make-patch.py | 5 +- flower/Makefile | 4 +- flower/diagonal-storage.cc | 66 +++++----- init/performer.ly | 2 +- input/denneboom.ly | 131 ++++++++++-------- lib/duration-convert.cc | 35 ----- lib/include/duration-convert.hh | 12 -- lib/include/duration.hh | 3 - lily/VERSION | 2 +- lily/bar-grav.cc | 30 ++++- lily/clef-item.cc | 14 +- lily/include/bar-grav.hh | 2 + lily/include/clef-item.hh | 2 +- lily/include/midi-item.hh | 154 ++++++++++++---------- lily/include/midi-walker.hh | 2 +- lily/include/span-bar-grav.hh | 3 +- lily/include/staff-performer.hh | 12 +- lily/include/staff-side.hh | 21 +-- lily/include/text-def.hh | 9 +- lily/include/text-item.hh | 23 ++-- lily/midi-item.cc | 189 ++++++++++++++------------ lily/midi-stream.cc | 43 +++--- lily/midi-walker.cc | 16 +-- lily/score.cc | 5 +- lily/span-bar-grav.cc | 12 +- lily/spring-spacer.cc | 4 +- lily/staff-performer.cc | 61 ++++++--- lily/staff-side.cc | 7 +- lily/template8.cc | 3 +- lily/text-item.cc | 43 ++++-- make/lelievijver.lsm | 8 +- make/lilypond.lsm | 8 +- make/lilypond.spec | 6 +- mutopia/J.S.Bach/preludes-3.ly.m4 | 4 +- mutopia/J.S.Bach/preludes-4.ly | 122 +++++++++++++++-- mutopia/J.S.Bach/preludes-5.ly | 212 ++++++++++++++++++++++++++++++ mutopia/J.S.Bach/preludes-6.ly | 128 ++++++++++++++++++ mutopia/J.S.Bach/preludes.tex | 4 + mutopia/standchen.ly | 13 +- 48 files changed, 1039 insertions(+), 476 deletions(-) create mode 100644 mutopia/J.S.Bach/preludes-5.ly create mode 100644 mutopia/J.S.Bach/preludes-6.ly diff --git a/.dstreamrc b/.dstreamrc index 03a97fa3a4..d92dd4797c 100644 --- a/.dstreamrc +++ b/.dstreamrc @@ -45,7 +45,7 @@ Lookup 0 Line_spacer 0 Melodic_req 0 Midi_def 0 -Midistrings 1 +Midistrings 0 Mixed_qp 0 Music 0 Music_iterator 0 diff --git a/AUTHORS.txt b/AUTHORS.txt index 2b410d68e1..415b79c60d 100644 --- a/AUTHORS.txt +++ b/AUTHORS.txt @@ -61,7 +61,7 @@ CONTRIBUTORS -29/Jan/98 LilyPond 0.1.45 1 +29/Jan/98 LilyPond 0.1.46 1 @@ -127,6 +127,6 @@ AUTHORS(1) LilyPond documentation AUTHORS(1) -29/Jan/98 LilyPond 0.1.45 2 +29/Jan/98 LilyPond 0.1.46 2 diff --git a/Documentation/literature.pod b/Documentation/literature.pod index 4e6be19736..b714006cdd 100644 --- a/Documentation/literature.pod +++ b/Documentation/literature.pod @@ -228,6 +228,13 @@ Universidade do Porto, forthcoming. =head2 Engraving: further reading +Tom Gerou and Linda Lusk. ``Essential Dictionary of Music Notation'' +Alfred Publishing, Van Nuys CA, 1996. ISBN 0-88284-768-6. + +[A concise, alphabetically ordered list of typesetting and music +(notation) issues with a rather simplistic attitude but in most +cases "good-enough" answers JCN] + Herbert Chlapik. ``Die Praxis des Notengraphikers''. Doblinger, 1987. ISBN 3-9000 035-96-2. @@ -254,7 +261,7 @@ George Heussenstamm. The Norton Manual of Music Notation. New York: Norton, 1987. Erdhard Karkoshka. ``Notation in New Music. Trans. Ruth -Koenig''. Praeger Publishers, New York, 1972. Out of print. +Koenig''. Praeger Publishers, New York, 1972. (Out of print) C. Roemer, The Art of Music Copying. Roerick music co., Sherman Oaks (CA), 1973. @@ -262,7 +269,8 @@ C. Roemer, The Art of Music Copying. Roerick music co., Sherman Oaks Glen Rosecrans. Music Notation Primer. New York: Passantino, 1979. Kurt Stone. Music Notation in the Twentieth Century. New York: Norton, -1980. +1980. (Out of print) + =head2 Other stuff @@ -311,7 +319,7 @@ enigma, References and comments contributed by Han-Wen Nienhuys (HWN), Miguel Filgueiras, Mark Basinski (MB), Dorothea Blostein, Stephen Page (SP), -Jan Nieuwenhuizen, Peter Kerr. +Jan Nieuwenhuizen (JCN), Peter Kerr. This should really be redone in BibTeX diff --git a/Documentation/other-packages.pod b/Documentation/other-packages.pod index 7a4b44ac52..b04410aa3e 100644 --- a/Documentation/other-packages.pod +++ b/Documentation/other-packages.pod @@ -65,7 +65,7 @@ the name MusiXTeX. =item OpusTeX, http://www.inf.ethz.ch/personal/achermann/ -Andreas Egler's branch is called MusiXTeX. +Andreas Egler's branch is now called OpusTeX. =item ABC2MTeX, http://www.gre.ac.uk/~c.walshaw/abc @@ -80,7 +80,7 @@ available on request. (?) =item MUTEX, http://www.gmd.de/Misc/Music/ A TeX macro package for typesetting single-staff music by Angelika -Schofer & Andrea Steinbach. With some fonts +Schofer & Andrea Steinbach. With some fonts. =back @@ -105,7 +105,7 @@ A formatter for medieval scores. =item Mup, http://www.arkkra.com/ A program which creates PS from a script input. Although it comes with -C source code, it is Shareware. +C source code, it is shareware. =item MusicEase, http://mesa.colorado.edu/~grader/musicez.html @@ -126,21 +126,19 @@ URW's music-engraving system described by [Wanske]. (Although URW used ~DM 1.000.000 while developing this, it didn't buy them a cute name.) -=item Logic, +=item Logic, http://www.emagic.com/ =item Finale =item Score, http://www.ymusic.com/Score -Werner Lemberg -writes to me: I consider SCORE as the best program for -typesetting classical music. [..] the price is quite high (about US$ -1000) [..] It has a graphical interface but to get all out of the -program you have to learn a 400 page manual almost by heart because -you'll change most features by inputting parameters (up to 20 for some -items) on a command line. Expect three months to master SCORE :-) - - +Werner Lemberg writes: I consider +SCORE as the best program for typesetting classical music. [..] the +price is quite high (about US$ 1000) [..] It has a graphical +interface but to get all out of the program you have to learn a 400 +page manual almost by heart because you'll change most features by +inputting parameters (up to 20 for some items) on a command +line. Expect three months to master SCORE :-) =item Personal Composer @@ -163,16 +161,17 @@ Shareware. =item Amadeus, Jerker.Elsgard@abc.se -Jerker Elsgard writes: professional and expensive (DM 4000,--) -engraving. Designed as a batch program (like LilyPond). It is aimed -at publishers. Its history is more than fifteen years and Amadeus has -been running under different Unix clones. It uses MIDI-keyboard input +Jerker Elsgard writes: professional and +expensive (DM 4000,--) engraving. Designed as a batch program (like +LilyPond). It is aimed at publishers. Its history is more than +fifteen years and Amadeus has been running under different Unix +clones. It uses MIDI-keyboard input =back =head2 Unknown -=item MusE +=item MusE, [no WWW address known] A-R Music Engraving, by A-R Editions, Inc. Professional engraving on Sun boxen. @@ -181,7 +180,7 @@ Sun boxen. A project at Ohio State university, which was discontinued in 1987. The technical reports that have resulted from MusiCopy can still be -obtained. +obtained by writing to OSU department of Computer Science. =item Berlioz, http://www.?.fr/ diff --git a/INSTALL.txt b/INSTALL.txt index e49460518d..966420ae5a 100644 --- a/INSTALL.txt +++ b/INSTALL.txt @@ -61,7 +61,7 @@ RECOMMENDED -28/Jan/98 LilyPond 0.1.45 1 +28/Jan/98 LilyPond 0.1.46 1 @@ -127,7 +127,7 @@ CONFIGURING and COMPILING -28/Jan/98 LilyPond 0.1.45 2 +28/Jan/98 LilyPond 0.1.46 2 @@ -193,7 +193,7 @@ INSTALL(1) LilyPond documentation INSTALL(1) -28/Jan/98 LilyPond 0.1.45 3 +28/Jan/98 LilyPond 0.1.46 3 @@ -259,7 +259,7 @@ EXAMPLE -28/Jan/98 LilyPond 0.1.45 4 +28/Jan/98 LilyPond 0.1.46 4 @@ -325,7 +325,7 @@ MUSIXTEX -28/Jan/98 LilyPond 0.1.45 5 +28/Jan/98 LilyPond 0.1.46 5 @@ -391,6 +391,6 @@ AUTHORS -28/Jan/98 LilyPond 0.1.45 6 +28/Jan/98 LilyPond 0.1.46 6 diff --git a/NEWS b/NEWS index 0ca4e4d818..13e1992ee0 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,21 @@ +pl 46 + - span-bar at upstep. + - bf: \score { \score_identifier } + - tenor clef (MB) + +pl 45.jcn2 + - preludes-4,5,6 + - bf's denneboom (oeps, see loop) + +pl 44.jcn7 + - text-item.cc: try to get fingers just above note... + - set minimum space between columns + - bff: mf/Makefile out/*log required: new .ly .tex's with make-dist :-( + - bf's midi ascii-debug output + - bf: property instrument +******* +feb 12 pl 45 - bf: translator switching - SunOS and IRIX patches (AO) @@ -6,8 +23,7 @@ pl 45 - shared lib numbering (AF) - various fixes for debian (AF) - ly2dvi .6.jaf (JAF) - -pl 44.jcn5 +pl 44.jcn6 - bf: crescendo.cc: bigger and use bar_size - slur: guess extra height for height limit for extending notes/stems - ps: adjustable slur height limit, bf crescendo diff --git a/TODO b/TODO index 7a203a5307..ae2a8a6eb3 100644 --- a/TODO +++ b/TODO @@ -7,6 +7,8 @@ Most of the items are marked in the code as well, with full explanation. grep for TODO and ugh/ugr 0.2: + * abbrevs + * use kpsepath to find all TeX dirs - configure.in - clean-fonts.sh diff --git a/VERSION b/VERSION index 1a990573ab..4bdb5e8521 100644 --- a/VERSION +++ b/VERSION @@ -1,6 +1,6 @@ TOPLEVEL_MAJOR_VERSION = 0 TOPLEVEL_MINOR_VERSION = 1 -TOPLEVEL_PATCH_LEVEL = 45 +TOPLEVEL_PATCH_LEVEL = 46 TOPLEVEL_MY_PATCH_LEVEL = # use the above to send patches, always empty for released version: diff --git a/bin/ly2dvi.sh b/bin/ly2dvi.sh index 9684014716..2698d77d17 100644 --- a/bin/ly2dvi.sh +++ b/bin/ly2dvi.sh @@ -388,7 +388,7 @@ EOF # endFile(){ cat << EOF >> $LF -\vfill\hfill{(\LilyIdString)} +\vfill\hfill{\small\LilyIdString} \end{document} EOF # diff --git a/bin/make-patch.py b/bin/make-patch.py index 6600ec2e7d..72be6f4ec8 100644 --- a/bin/make-patch.py +++ b/bin/make-patch.py @@ -41,7 +41,7 @@ def help(): def untar(fn): # os.system('pwd'); - sys.stderr.write('untarring ' + fn) + sys.stderr.write('untarring ' + fn + '\n') # can't seem to fix errors: # gzip: stdout: Broken pipe # tar: Child returned status 1 @@ -50,7 +50,7 @@ def untar(fn): # ugh, even this does not work, but one error message less :-) os.system ('gzip --quiet -dc ' + fn + '| tar xf - ') # so print soothing message: - sys.stderr.write('make-patch:ugh: Please ignore error: gzip: stdout: Broken pipe\n'); +# sys.stderr.write('make-patch:ugh: Please ignore error: gzip: stdout: Broken pipe\n'); sys.stderr.flush() @@ -101,6 +101,7 @@ def makepatch(fv, tv, patfile_nm): os.chdir(prev_cwd) def main(): + os.environ['GZIP'] = '-q' sys.stderr.write('This is make-patch version %s\n' % mp_version) (cl_options, files) = getopt.getopt(sys.argv[1:], 'hf:o:t:', ['output=', 'help', 'from=', 'to=']) diff --git a/flower/Makefile b/flower/Makefile index 0aa02c7cc8..c46fed65eb 100644 --- a/flower/Makefile +++ b/flower/Makefile @@ -70,8 +70,8 @@ localinstall: $(LIBFLOWER) ifeq ($(LIB_SUFFIX),.so) $(INSTALL) -d $(libdir) $(INSTALL) $(LIBFLOWER).$(VERSION) $(libdir) - ln -s $(LIB_PREFIX)flower$(LIB_SUFFIX).$(VERSION) $(libdir)/$(LIB_PREFIX)flower$(LIB_SUFFIX).$(MAJOR_VERSION) - ln -s $(LIB_PREFIX)flower$(LIB_SUFFIX).$(VERSION) $(libdir)/$(LIB_PREFIX)flower$(LIB_SUFFIX) + ln -sf $(LIB_PREFIX)flower$(LIB_SUFFIX).$(VERSION) $(libdir)/$(LIB_PREFIX)flower$(LIB_SUFFIX).$(MAJOR_VERSION) + ln -sf $(LIB_PREFIX)flower$(LIB_SUFFIX).$(VERSION) $(libdir)/$(LIB_PREFIX)flower$(LIB_SUFFIX) endif localuninstall: diff --git a/flower/diagonal-storage.cc b/flower/diagonal-storage.cc index 090f308635..7fd6227d8f 100644 --- a/flower/diagonal-storage.cc +++ b/flower/diagonal-storage.cc @@ -53,13 +53,13 @@ Diagonal_storage::set_band_size (int s) Full_storage f (dim(), 2*s+1); for (int i=0; i < dim(); i++) { - int k=-s; - for (; k < -band_size_i(); k++) - f.elem (i,k + s) = 0.0; - for (; k <= band_size_i()&& k<=s ; k++) - f.elem (i, k + s) = band_.elem (i,k+ band_size_i()); - for (; k <= s; k++) - f.elem (i, k + s) =0.0; + int k=-s; + for (; k < -band_size_i(); k++) + f.elem (i,k + s) = 0.0; + for (; k <= band_size_i()&& k<=s ; k++) + f.elem (i, k + s) = band_.elem (i,k+ band_size_i()); + for (; k <= s; k++) + f.elem (i, k + s) =0.0; } band_ = f; @@ -123,8 +123,8 @@ Diagonal_storage::resize_dim (int d) Full_storage f (d, 2*band_size_i()+1); for (int i=0; i < d && i < dim(); i++) { - for (int k=0; k < 2*band_size_i(); k++) - f.elem (i,k) = elem (i,k); + for (int k=0; k < 2*band_size_i(); k++) + f.elem (i,k) = elem (i,k); } band_ = f; @@ -143,11 +143,11 @@ Diagonal_storage::mult_next (int &i, int &j) const { j++; if (j < i - band_size_i()) - j = i- band_size_i(); + j = i- band_size_i(); if (j > i + band_size_i() || j >= dim ()) { - i++; - j = 0 >? i - band_size_i(); + i++; + j = 0 >? i - band_size_i(); } } @@ -162,12 +162,12 @@ Diagonal_storage::trans_next (int &i, int& j) const { i++; if (i < j - band_size_i()) - i = j-band_size_i(); + i = j-band_size_i(); if (i >= dim() || i > j + band_size_i ()) { - j++; - i = 0 >? j - band_size_i(); + j++; + i = 0 >? j - band_size_i(); } } @@ -177,9 +177,9 @@ Real Diagonal_storage::elem (int i, int j) const { if (abs (i-j) > band_size_i()) - return 0; + return 0; else - return band_.elem (i, j - i +band_size_i()); + return band_.elem (i, j - i +band_size_i()); } Real & @@ -191,9 +191,9 @@ Diagonal_storage::elem (int i, int j) assert (!nul_entry); if (abs (i-j) > band_size_i()) - return nul_entry; + return nul_entry; else - return band_.elem (i, j - i + band_size_i()); + return band_.elem (i, j - i + band_size_i()); } /* @@ -202,30 +202,30 @@ Diagonal_storage::elem (int i, int j) bool Diagonal_storage::try_right_multiply (Matrix_storage*dest, - const Matrix_storage*right) const + const Matrix_storage*right) const { if (right->name() != Diagonal_storage::static_name ()) - return false; + return false; const Diagonal_storage* right_diag = (Diagonal_storage const*)right; int band2 = right_diag->band_size_i(); int n = dim(); /* should check if dest is a Diagonal_storage of sufficient size too. - */ + */ for (int i=0; i < n; i++) { - for (int j = 0; j < n; j++) - { - int startk = i - band_size_i() >? 0 >? j - band2; - int stopk = i + band_size_i() elem (k, j); - dest->elem (i, j) = sum; + for (int j = 0; j < n; j++) + { + int startk = i - band_size_i() >? 0 >? j - band2; + int stopk = i + band_size_i() elem (k, j); + dest->elem (i, j) = sum; - } + } } return true; } @@ -239,7 +239,7 @@ Diagonal_storage::Diagonal_storage (Matrix_storage*stor_l, int band_i) resize_dim (stor_l->dim()); for (int i=0,j=0; mult_ok (i,j); mult_next (i,j)) - band_.elem (i, j + band_i -i) = stor_l->elem (i,j); + band_.elem (i, j + band_i -i) = stor_l->elem (i,j); } void diff --git a/init/performer.ly b/init/performer.ly index 87ce9ca7d8..90b3688412 100644 --- a/init/performer.ly +++ b/init/performer.ly @@ -47,7 +47,7 @@ Staff_group = \translator Score = \translator { \type "Score_performer"; -% instrument = piano; + instrument = piano; \accepts Staff; \accepts Grandstaff; \accepts Lyrics; diff --git a/input/denneboom.ly b/input/denneboom.ly index 4eef4dbf42..98944aba31 100644 --- a/input/denneboom.ly +++ b/input/denneboom.ly @@ -5,23 +5,27 @@ copyright = "public domain"; TestedFeatures = "This file tests silly line shapes"; } -\include "paper13.ly" +\include "paper20.ly" \version "0.1.9"; oden = \lyric{ - _8 O8 den-8. ne-16 boom,4 _8 o8 den-8. ne-16 boom.4. - Wat8 zijn uw tak-4 ken won-8. der-16 schoon4. + _8 O8 | + den-8. ne-16 boom,4 _8 o8 | + den-8. ne-16 boom.4. Wat8 zijn uw | + tak-4 ken won-8. der-16 schoon4 } ikheb = \lyric{ - Ik8 heb u laatst4. in_'t8 bos8. zien16 staan4. - toen8 zat- en er4. geen8 kaars-8. jes16 aan.4 + _8 Ik8 heb u | + laatst4. in_'t8 bos8. zien16 staan4. toen8 zat- en | + er4. geen8 kaars-8. jes16 aan.4 } ugloeit = \lyric{ - U8 gloeit in bar-4. re8 win-8. ter-16 tijd,4. - als8 sneeuw op aar-4. de8 licht8. ge-16 spreid.4 + _8 U8 gloeit in | + bar-4. re8 win-8. ter-16 tijd,4. als8 sneeuw op | + aar-4. de8 licht8. ge-16 spreid.4 } oboom = \melodic{ @@ -39,15 +43,13 @@ bos = \melodic{ g4 r8 f8 f8. e16 e4 } -global = \melodic{ +global = \melodic{ \meter 3/4; \partial 4; \skip 4*1; \skip 4*3; \meter 4/4; \skip 4*4; - \meter 6/4; - \skip 4*12; \meter 5/4; \skip 4*5; \meter 3/4; @@ -55,50 +57,45 @@ global = \melodic{ \meter 4/4; \skip 4*4; \meter 6/4; + \skip 4*6; + \skip 4*6; + \meter 5/4; \skip 4*5; - + \meter 3/4; + \skip 4*3; + \meter 4/4; + \skip 4*8; \bar "|."; } \score{ < -% { \lyric \type Lyrics < \multi 2 < % huh? % \global { + \oden \oden \ikheb \oden - -% _4 -% \oden -% \ugloeit -% \oden } - \global > > -% } \melodic \type Staff < \multi 2 < \global { + \oboom \oboom \bos \oboom - -% r4 -% \oboom -% \bos -% \oboom } > > > \paper{ -% \paper_thirteen + \paper_twenty indent = 20. \mm; \shape = 70. \mm 20. \mm 65. \mm 30. \mm @@ -109,43 +106,67 @@ global = \melodic{ 27.5 \mm 105. \mm 20. \mm 120. \mm 10. \mm 140. \mm -% 0. \mm 160. \mm 65. \mm 30. \mm ; + gourlay_maxmeasures = 30.; +% uhuh, loop if you comment these in +% arithmetic_basicspace = 3.8; +% arithmetic_multiplier = 8.\pt; + } + \midi{ + \tempo 4 = 90; + } +} + %{ - \shape = % 72.5 \mm 15. \mm - % 50. \mm 60. \mm - 70. \mm 30. \mm - 60. \mm 60. \mm - 50. \mm 80. \mm - 70. \mm 40. \mm - 50. \mm 80. \mm - 30. \mm 120. \mm - 60. \mm 60. \mm - 30. \mm 120. \mm - 20. \mm 140. \mm - 0. \mm 180. \mm - 70. \mm 30. \mm - 70. \mm 30. \mm - 70. \mm 30. \mm +\score{ + < + \lyric \type Lyrics < + \multi 2 < +% huh? +% \global + { + \oden + \oden + \ugloeit + \oden + } + > + > + \melodic \type Staff < + \multi 2 < + \global + { + \oboom + \oboom + \bos + \oboom + } + > + > + > + \paper{ + \paper_twenty + indent = 20. \mm; + \shape = 70. \mm 20. \mm + 65. \mm 30. \mm + 57.5 \mm 45. \mm + 50. \mm 60. \mm + 42.5 \mm 75. \mm + 35. \mm 90. \mm + 27.5 \mm 105. \mm + 20. \mm 120. \mm + 10. \mm 140. \mm +% 0. \mm 160. \mm + 65. \mm 30. \mm ; - \shape = 80. \mm 20. \mm - 70. \mm 40. \mm - 60. \mm 60. \mm - 50. \mm 80. \mm - 40. \mm 100. \mm - 30. \mm 120. \mm - 20. \mm 140. \mm - 10. \mm 160. \mm -% 00. \mm 180. \mm - 75. \mm 30. \mm - ; -%} gourlay_maxmeasures = 30.; -% arithmetic_basicspace = 1.2; -% arithmetic_multiplier = 2.8\pt; +% uhuh, loop if you comment these in +% arithmetic_basicspace = 3.8; +% arithmetic_multiplier = 8.\pt; } \midi{ \tempo 4 = 90; } } +%} diff --git a/lib/duration-convert.cc b/lib/duration-convert.cc index 46bfc1f652..49db74195d 100644 --- a/lib/duration-convert.cc +++ b/lib/duration-convert.cc @@ -38,14 +38,6 @@ Duration_convert::dur2_str (Duration dur) return str; } -#if 0 -int -Duration_convert::dur2_i (Duration dur, int division_1_i) -{ - return dur2_mom (dur) * Moment (division_1_i); -} -#endif - int Duration_convert::dur2ticks_i (Duration dur) { @@ -100,20 +92,6 @@ Duration_convert::dur2_mom (Duration dur) return mom * plet_factor_mom (dur); } -#if 0 -Moment -Duration_convert::i2_mom (int time_i, int division_1_i) -{ - if (!time_i) - return Moment (0); - - if (division_1_i > 0) - return Moment (time_i, division_1_i); - else - return Moment (-division_1_i, time_i); -} -#endif - Duration Duration_convert::mom2_dur (Moment mom) { @@ -201,28 +179,16 @@ Duration_convert::sync_f (Duration dur, Moment mom) Duration Duration_convert::ticks2_dur (int ticks_i) { - // Duration dur (4, 0); - // dur.set_plet (ticks_i, Duration::division_1_i_s / 4); - Moment mom (ticks_i, Duration::division_1_i_s); if (midi_as_plet_b_s) return mom2_dur (mom); Duration dur = mom2standardised_dur (mom); - // if (dur.mom () == mom) if (dur.length () == mom) return dur; -// huh? -#if 0 - dur.durlog_i_ = -100; - dur.dots_i_ = 0; - dur.set_ticks (ticks_i); - return dur; -#else return mom2_dur (mom); -#endif } Duration @@ -238,7 +204,6 @@ Duration_iterator::Duration_iterator () cursor_dur_.durlog_i_ = 7; if (Duration_convert::no_smaller_than_i_s) cursor_dur_.durlog_i_ = Duration_convert::no_smaller_than_i_s; - // cursor_dur_.set_plet (1, 1); } Duration diff --git a/lib/include/duration-convert.hh b/lib/include/duration-convert.hh index e3926f030c..7473638323 100644 --- a/lib/include/duration-convert.hh +++ b/lib/include/duration-convert.hh @@ -41,12 +41,6 @@ struct Duration_convert { static int no_smaller_than_i_s; static Array dur_array_s; -// /// Most used division in MIDI, all fine with me. -// static int const division_1_c_i = 384; - -// /// Return (integer, division) representation. -// static int dur2_i (Duration dur, int division_1_i = division_1_c_i ); - /// Return number of ticks in (ticks, division_1) representation static int dur2ticks_i (Duration dur ); @@ -63,12 +57,6 @@ struct Duration_convert { /// Return Mudela string representation. static String dur2_str (Duration dur ); -// /// Return Moment from (integer, division) representation. -// static Moment i2_mom (int i, int division_1_i = division_1_c_i ); - -// /// Return Moment (fraction of whole) representation, best guess. -// static Duration mom2_dur (Moment mom ); - /// Return duration from Moment (fraction of whole) representation. static Duration mom2_dur (Moment mom ); diff --git a/lib/include/duration.hh b/lib/include/duration.hh index 642701e8d5..69eaf8dcaf 100644 --- a/lib/include/duration.hh +++ b/lib/include/duration.hh @@ -25,9 +25,6 @@ extern bool no_triplets_bo_g; (dur) */ struct Duration { - /** - Ctor of Duration. - */ Duration (); /// is the "plet factor" of this note != 1 ? bool plet_b (); diff --git a/lily/VERSION b/lily/VERSION index 0318f75fa8..60de703345 100644 --- a/lily/VERSION +++ b/lily/VERSION @@ -1,4 +1,4 @@ MAJOR_VERSION = 0 MINOR_VERSION = 1 -PATCH_LEVEL = 45 +PATCH_LEVEL = 46 MY_PATCH_LEVEL = diff --git a/lily/bar-grav.cc b/lily/bar-grav.cc index 2d43282523..4ca3bdac19 100644 --- a/lily/bar-grav.cc +++ b/lily/bar-grav.cc @@ -14,6 +14,7 @@ Bar_engraver::Bar_engraver() { + bar_p_ =0; do_post_move_processing(); } @@ -43,16 +44,32 @@ Bar_engraver::create_bar () } } +void +Bar_engraver::do_creation_processing () +{ + create_bar (); + bar_p_->type_str_ = ""; +} + void -Bar_engraver::do_process_requests() +Bar_engraver::do_removal_processing () { - if (bar_p_) - return ; - + if (bar_p_) + { + typeset_element (bar_p_); + bar_p_ =0; + } +} + +void +Bar_engraver::do_process_requests() +{ if (bar_req_l_) { - create_bar (); - bar_p_->type_str_=bar_req_l_->type_str_; + if (!bar_p_) + create_bar (); + + bar_p_->type_str_ = bar_req_l_->type_str_; } else { @@ -83,7 +100,6 @@ void Bar_engraver::do_post_move_processing() { bar_req_l_ = 0; - bar_p_ =0; } diff --git a/lily/clef-item.cc b/lily/clef-item.cc index d6c02e542c..927d3f2335 100644 --- a/lily/clef-item.cc +++ b/lily/clef-item.cc @@ -37,14 +37,16 @@ Clef_item::Clef_item() void Clef_item::read (String t) { - type_= t; - if (type_ == "violin") + symbol_= t; + if (t == "violin") y_position_i_ = -2; - if (type_ == "alto") + if (t == "alto") y_position_i_ = 0; - if (type_ == "tenor") + if (t == "tenor") { + symbol_="alto"; y_position_i_ = 2; - if (type_ == "bass") + } + if (t == "bass") y_position_i_ = 2; } void @@ -56,7 +58,7 @@ Clef_item::read (Clef_engraver const &k) Molecule* Clef_item::brew_molecule_p() const { - String t = type_; + String t = symbol_; if (change_b_) t += "_change"; Atom s = paper()->lookup_l ()->clef (t); diff --git a/lily/include/bar-grav.hh b/lily/include/bar-grav.hh index 8bf8d1301a..28dae424ff 100644 --- a/lily/include/bar-grav.hh +++ b/lily/include/bar-grav.hh @@ -26,6 +26,8 @@ public: protected: + virtual void do_creation_processing (); + virtual void do_removal_processing (); virtual bool do_try_request (Request *req_l); virtual void do_process_requests(); virtual void do_pre_move_processing(); diff --git a/lily/include/clef-item.hh b/lily/include/clef-item.hh index 311ea4f1ce..c6e00a992e 100644 --- a/lily/include/clef-item.hh +++ b/lily/include/clef-item.hh @@ -17,7 +17,7 @@ protected: Molecule* brew_molecule_p() const; public: - String type_; + String symbol_; int y_position_i_; /// is this a change clef (smaller size)? diff --git a/lily/include/midi-item.hh b/lily/include/midi-item.hh index 4df2a4744b..55df8f34ee 100644 --- a/lily/include/midi-item.hh +++ b/lily/include/midi-item.hh @@ -9,6 +9,8 @@ #include "string.hh" #include "lily-proto.hh" +#include "proto.hh" +#include "plist.hh" #include "virtual-methods.hh" #include "moment.hh" @@ -18,143 +20,159 @@ Maybe use base classes for RIFF files? */ struct Midi_item { - DECLARE_MY_RUNTIME_TYPEINFO; - Midi_item (Audio_item* audio_item_l); - virtual ~Midi_item (); - static String i2varint_str (int i); - void output (Midi_stream* midi_stream_l) const; - virtual String str() const = 0; + DECLARE_MY_RUNTIME_TYPEINFO; + Midi_item (Audio_item* audio_item_l); + virtual ~Midi_item (); + static String i2varint_str (int i); + virtual String str () const = 0; - Audio_item* audio_item_l_; - int channel_i_; + Audio_item* audio_item_l_; + int channel_i_; private: - Midi_item (Midi_item const&); - Midi_item& operator =( Midi_item const&); + Midi_item (Midi_item const&); + Midi_item& operator = ( Midi_item const&); +}; + +/** + timed MIDI event + */ +struct Midi_event +{ + Midi_event (Moment delta_mom, Midi_item* mitem_l); + ~Midi_event (); + Moment delta_mom_; + Midi_item* mitem_p_; + String str () const; }; /** variable sized MIDI data */ struct Midi_chunk : Midi_item { - DECLARE_MY_RUNTIME_TYPEINFO; - Midi_chunk(); + DECLARE_MY_RUNTIME_TYPEINFO; + Midi_chunk (); - void add (String str); - void set (String header_str, String data_str, String footer_str); - virtual String str() const; + void set (String header_str, String data_str, String footer_str); + virtual String str () const; + virtual String data_str () const; private: - String data_str_; - String footer_str_; - String header_str_; + String data_str_; + String footer_str_; + String header_str_; }; struct Midi_duration : public Midi_item { - DECLARE_MY_RUNTIME_TYPEINFO; - Midi_duration (Real seconds_f); + DECLARE_MY_RUNTIME_TYPEINFO; + Midi_duration (Real seconds_f); - virtual String str() const; - Real seconds_f_; + virtual String str () const; + Real seconds_f_; }; struct Midi_header : Midi_chunk { - DECLARE_MY_RUNTIME_TYPEINFO; - - Midi_header (int format_i, int tracks_i, int clocks_per_4_i); + DECLARE_MY_RUNTIME_TYPEINFO; + Midi_header (int format_i, int tracks_i, int clocks_per_4_i); }; /** Change instrument event */ struct Midi_instrument : public Midi_item { - DECLARE_MY_RUNTIME_TYPEINFO; - Midi_instrument (int channel_i, String instrument_str); + DECLARE_MY_RUNTIME_TYPEINFO; + Midi_instrument (int channel_i, String instrument_str); - virtual String str() const; - String instrument_str_; + virtual String str () const; + String instrument_str_; }; struct Midi_key : public Midi_item { - DECLARE_MY_RUNTIME_TYPEINFO; - Midi_key (Audio_item* audio_item_l); + DECLARE_MY_RUNTIME_TYPEINFO; + Midi_key (Audio_item* audio_item_l); - virtual String str() const; + virtual String str () const; }; struct Midi_meter : Midi_item { - DECLARE_MY_RUNTIME_TYPEINFO; - Midi_meter (Audio_item* audio_item_l); + DECLARE_MY_RUNTIME_TYPEINFO; + Midi_meter (Audio_item* audio_item_l); - virtual String str() const; - int clocks_per_1_i_; + virtual String str () const; + int clocks_per_1_i_; }; /** Turn a note on (blond). */ struct Midi_note : public Midi_item { - DECLARE_MY_RUNTIME_TYPEINFO; - Midi_note (Audio_item* audio_item_l); + DECLARE_MY_RUNTIME_TYPEINFO; + Midi_note (Audio_item* audio_item_l); - Moment duration() const; - int pitch_i() const; - virtual String str() const; + Moment duration () const; + int pitch_i () const; + virtual String str () const; - int const c0_pitch_i_c_ = 60; - Byte dynamic_byte_; + int const c0_pitch_i_c_ = 60; + Byte dynamic_byte_; }; /** Turn a note off (dark). */ struct Midi_note_off : public Midi_item { - DECLARE_MY_RUNTIME_TYPEINFO; - Midi_note_off (Midi_note* midi_note_l); + DECLARE_MY_RUNTIME_TYPEINFO; + Midi_note_off (Midi_note*); - int pitch_i() const; - virtual String str() const; + int pitch_i () const; + virtual String str () const; - Byte aftertouch_byte_; + Byte aftertouch_byte_; }; struct Midi_text : Midi_item { - DECLARE_MY_RUNTIME_TYPEINFO; + DECLARE_MY_RUNTIME_TYPEINFO; - enum Type { - TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC, - MARKER, CUE_POINT - }; - Midi_text (Midi_text::Type type, String text_str); - Midi_text (Audio_item* audio_item_l); + enum Type { + TEXT = 1, COPYRIGHT, TRACK_NAME, INSTRUMENT_NAME, LYRIC, + MARKER, CUE_POINT + }; + Midi_text (Midi_text::Type type, String text_str); + Midi_text (Audio_item* audio_item_l); - virtual String str() const; + virtual String str () const; - Type type_; - String text_str_; + Type type_; + String text_str_; }; struct Midi_tempo : Midi_item { - DECLARE_MY_RUNTIME_TYPEINFO; - Midi_tempo (int per_minute_4_i); - Midi_tempo (Audio_item* audio_item_l); + DECLARE_MY_RUNTIME_TYPEINFO; + Midi_tempo (int per_minute_4_i); + Midi_tempo (Audio_item* audio_item_l); - virtual String str() const; + virtual String str () const; - int per_minute_4_i_; + int per_minute_4_i_; }; struct Midi_track : Midi_chunk { - DECLARE_MY_RUNTIME_TYPEINFO; - int number_i_; + DECLARE_MY_RUNTIME_TYPEINFO; + int number_i_; + Pointer_list event_p_list_; - Midi_track(); + Midi_track (); + ~Midi_track (); + + void add (Moment delta_time_mom, Midi_item* mitem_l); + virtual String data_str () const; - void add (int delta_time_i, String event); - void add (Moment delta_time_moment, Midi_item* mitem_l); +private: + // copy trap + Midi_track (Midi_track const&); }; #endif // MIDI_ITEM_HH diff --git a/lily/include/midi-walker.hh b/lily/include/midi-walker.hh index 313e21af3d..492553ec8b 100644 --- a/lily/include/midi-walker.hh +++ b/lily/include/midi-walker.hh @@ -35,7 +35,7 @@ public: void process(); private: - void do_start_note (Midi_note* note_l); + void do_start_note (Midi_note* note_p); void do_stop_notes (Moment now_mom); void output_event (Moment now_mom, Midi_item* l); diff --git a/lily/include/span-bar-grav.hh b/lily/include/span-bar-grav.hh index 87b9911d7d..59a99f5f8b 100644 --- a/lily/include/span-bar-grav.hh +++ b/lily/include/span-bar-grav.hh @@ -29,7 +29,8 @@ public: Span_bar_engraver(); protected: - + virtual void do_creation_processing (); + virtual void do_removal_processing (); virtual void acknowledge_element (Score_elem_info); virtual void do_pre_move_processing(); virtual Span_bar* get_span_bar_p() const; diff --git a/lily/include/staff-performer.hh b/lily/include/staff-performer.hh index 0d80586342..063b3c1b05 100644 --- a/lily/include/staff-performer.hh +++ b/lily/include/staff-performer.hh @@ -20,15 +20,17 @@ public: TRANSLATOR_CLONE(Staff_performer); DECLARE_MY_RUNTIME_TYPEINFO; - Staff_performer(); - ~Staff_performer(); + Staff_performer (); + ~Staff_performer (); - String instrument_str(); + String new_instrument_str (); + String instrument_str_; protected: virtual void play (Audio_element* p); - virtual void do_removal_processing(); - virtual void do_creation_processing(); + virtual void do_removal_processing (); + virtual void do_creation_processing (); + virtual void do_process_requests (); private: Audio_staff* audio_staff_p_; diff --git a/lily/include/staff-side.hh b/lily/include/staff-side.hh index ffc1e37d9f..1720722284 100644 --- a/lily/include/staff-side.hh +++ b/lily/include/staff-side.hh @@ -17,12 +17,8 @@ /** A symbol which sits along a staff. */ -class Staff_side : virtual Score_elem { - Link_array support_l_arr_; - - Interval support_height() const; - Real get_position_f() const; - +class Staff_side : virtual Score_elem +{ public: /** @@ -38,14 +34,19 @@ public: void set_staffsym (Staff_symbol * ); - - Staff_side(); + Staff_side (); void add_support (Score_elem*); DECLARE_MY_RUNTIME_TYPEINFO; protected: - virtual Interval symbol_height() const; + virtual Interval symbol_height () const; + virtual Real get_position_f () const; virtual void do_substitute_dependency (Score_elem *, Score_elem*); - virtual void do_post_processing(); + virtual void do_post_processing (); + Interval support_height () const; + +private: + Link_array support_l_arr_; +// Interval support_height () const; }; #endif // STAFF_SIDE_HH diff --git a/lily/include/text-def.hh b/lily/include/text-def.hh index 185ea715c7..6624959140 100644 --- a/lily/include/text-def.hh +++ b/lily/include/text-def.hh @@ -12,13 +12,12 @@ #include "lily-proto.hh" #include "input.hh" -class Text_def : public General_script_def { -protected: -// huh? move to public -// virtual Atom get_atom (Paper_def* p, Direction dir_) const; +class Text_def : public General_script_def +{ +public: DECLARE_MY_RUNTIME_TYPEINFO; VIRTUAL_COPY_CONS(Text_def,General_script_def); -public: + /** centered , or aligned? diff --git a/lily/include/text-item.hh b/lily/include/text-item.hh index ba7ae59db6..4102ba5e88 100644 --- a/lily/include/text-item.hh +++ b/lily/include/text-item.hh @@ -14,9 +14,9 @@ /** print a fixed width text above or below the staff. */ -class Text_item : public Item ,public Staff_side{ - void init (Text_def* tdef_l); - +class Text_item : public Item ,public Staff_side +{ +public: public: /// do I have width? @@ -24,17 +24,22 @@ public: /* ***************/ - Text_item (General_script_def*,Direction dir=0); - virtual ~Text_item(); + Text_item (General_script_def* ,Direction dir=0); + virtual ~Text_item (); DECLARE_MY_RUNTIME_TYPEINFO; protected: - General_script_def * tdef_p_; + // ugh: so, are we a text-def, or can this vary? + General_script_def* tdef_p_; + + virtual Interval symbol_height () const; - virtual Interval symbol_height() const; + virtual Molecule* brew_molecule_p () const; + virtual void do_pre_processing (); + virtual Real get_position_f () const; - virtual Molecule* brew_molecule_p() const; - virtual void do_pre_processing(); +private: +// void init (Text_def* tdef_l); }; diff --git a/lily/midi-item.cc b/lily/midi-item.cc index a23919f509..24f297942d 100644 --- a/lily/midi-item.cc +++ b/lily/midi-item.cc @@ -8,6 +8,7 @@ #include "proto.hh" #include "plist.hh" +#include "pcursor.hh" #include "debug.hh" #include "misc.hh" #include "string.hh" @@ -18,30 +19,24 @@ #include "midi-stream.hh" #include "audio-item.hh" -IMPLEMENT_IS_TYPE_B(Midi_item); -IMPLEMENT_IS_TYPE_B1(Midi_chunk, Midi_item); -IMPLEMENT_IS_TYPE_B1(Midi_duration, Midi_item); -IMPLEMENT_IS_TYPE_B1(Midi_header, Midi_chunk); -IMPLEMENT_IS_TYPE_B1(Midi_instrument, Midi_item); -IMPLEMENT_IS_TYPE_B1(Midi_key,Midi_item); -IMPLEMENT_IS_TYPE_B1(Midi_meter, Midi_item); -IMPLEMENT_IS_TYPE_B1(Midi_note, Midi_item); -IMPLEMENT_IS_TYPE_B1(Midi_note_off, Midi_item); -IMPLEMENT_IS_TYPE_B1(Midi_tempo, Midi_item); -IMPLEMENT_IS_TYPE_B1(Midi_text, Midi_item); -IMPLEMENT_IS_TYPE_B1(Midi_track, Midi_chunk); - -Midi_chunk::Midi_chunk() +IMPLEMENT_IS_TYPE_B (Midi_item); +IMPLEMENT_IS_TYPE_B1 (Midi_chunk, Midi_item); +IMPLEMENT_IS_TYPE_B1 (Midi_duration, Midi_item); +IMPLEMENT_IS_TYPE_B1 (Midi_header, Midi_chunk); +IMPLEMENT_IS_TYPE_B1 (Midi_instrument, Midi_item); +IMPLEMENT_IS_TYPE_B1 (Midi_key,Midi_item); +IMPLEMENT_IS_TYPE_B1 (Midi_meter, Midi_item); +IMPLEMENT_IS_TYPE_B1 (Midi_note, Midi_item); +IMPLEMENT_IS_TYPE_B1 (Midi_note_off, Midi_item); +IMPLEMENT_IS_TYPE_B1 (Midi_tempo, Midi_item); +IMPLEMENT_IS_TYPE_B1 (Midi_text, Midi_item); +IMPLEMENT_IS_TYPE_B1 (Midi_track, Midi_chunk); + +Midi_chunk::Midi_chunk () : Midi_item (0) { } -void -Midi_chunk::add (String str) -{ - data_str_ += str; -} - void Midi_chunk::set (String header_str, String data_str, String footer_str) { @@ -51,13 +46,20 @@ Midi_chunk::set (String header_str, String data_str, String footer_str) } String -Midi_chunk::str() const +Midi_chunk::data_str () const +{ + return data_str_; +} + +String +Midi_chunk::str () const { String str = header_str_; - String length_str = String_convert::i2hex_str (data_str_.length_i() + footer_str_.length_i (), 8, '0'); + String length_str = String_convert::i2hex_str (data_str_.length_i () + + footer_str_.length_i (), 8, '0'); length_str = String_convert::hex2bin_str (length_str); str += length_str; - str += data_str_; + str += data_str (); str += footer_str_; return str; } @@ -69,13 +71,36 @@ Midi_duration::Midi_duration (Real seconds_f) } String -Midi_duration::str() const +Midi_duration::str () const { return String (""; } +Midi_event::Midi_event (Moment delta_mom, Midi_item* mitem_p) +{ + delta_mom_ = delta_mom; + mitem_p_ = mitem_p; +} + +Midi_event::~Midi_event () +{ +// uhuh +// delete mitem_p_; +} + +String +Midi_event::str () const +{ + int delta_i = delta_mom_ * Moment (Duration::division_1_i_s); + String delta_str = Midi_item::i2varint_str (delta_i); + String mitem_str = mitem_p_->str (); + assert (mitem_str.length_i ()); + return delta_str + mitem_str; +} + + Midi_header::Midi_header (int format_i, int tracks_i, int clocks_per_4_i) - : Midi_chunk() + : Midi_chunk () { String str; @@ -262,7 +287,7 @@ Midi_instrument::Midi_instrument (int channel_i, String instrument_str) : Midi_item (0) { instrument_str_ = instrument_str; - instrument_str_.to_lower(); + instrument_str_.to_lower (); channel_i_ = channel_i; } @@ -271,7 +296,7 @@ Midi_item::~Midi_item () } String -Midi_instrument::str() const +Midi_instrument::str () const { Byte program_byte = 0; for (int i = 0; instrument_name_sz_a_[i]; i++) @@ -281,8 +306,8 @@ Midi_instrument::str() const break; } - String str = String ((char)(0xc0 + channel_i_)); - str += String ((char)program_byte); + String str = String ( (char) (0xc0 + channel_i_)); + str += String ( (char)program_byte); return str; } @@ -292,17 +317,11 @@ Midi_item::Midi_item (Audio_item* audio_item_l) channel_i_ = 0; } -void -Midi_item::output (Midi_stream* midi_stream_l) const -{ - *midi_stream_l << str(); -} - String Midi_item::i2varint_str (int i) { int buffer_i = i & 0x7f; - while ((i >>= 7) > 0) + while ( (i >>= 7) > 0) { buffer_i <<= 8; buffer_i |= 0x80; @@ -327,11 +346,11 @@ Midi_key::Midi_key (Audio_item* audio_item_l) } String -Midi_key::str() const +Midi_key::str () const { - Key_change_req* k = audio_item_l_->req_l_->command()->keychange (); - int sharps_i = k->sharps_i(); - int flats_i = k->flats_i(); + Key_change_req* k = audio_item_l_->req_l_->command ()->keychange (); + int sharps_i = k->sharps_i (); + int flats_i = k->flats_i (); // midi cannot handle non-conventional keys if (flats_i && sharps_i) @@ -340,7 +359,7 @@ Midi_key::str() const String str = "ff5902"; str += String_convert::i2hex_str (accidentals_i, 2, '0'); - int minor_i = k->minor_b(); + int minor_i = k->minor_b (); str += String_convert::i2hex_str (minor_i, 2, '0'); return String_convert::hex2bin_str (str); } @@ -352,15 +371,15 @@ Midi_meter::Midi_meter (Audio_item* audio_item_l) } String -Midi_meter::str() const +Midi_meter::str () const { - Meter_change_req* m = audio_item_l_->req_l_->command()->meterchange (); + Meter_change_req* m = audio_item_l_->req_l_->command ()->meterchange (); int num_i = m->beats_i_; int den_i = m->one_beat_i_; String str = "ff5804"; str += String_convert::i2hex_str (num_i, 2, '0'); - str += String_convert::i2hex_str (intlog2(den_i) , 2, '0'); + str += String_convert::i2hex_str (intlog2 (den_i) , 2, '0'); str += String_convert::i2hex_str (clocks_per_1_i_, 2, '0'); str += String_convert::i2hex_str (8, 2, '0'); return String_convert::hex2bin_str (str); @@ -373,30 +392,30 @@ Midi_note::Midi_note (Audio_item* audio_item_l) } Moment -Midi_note::duration() const +Midi_note::duration () const { - return audio_item_l_->req_l_->musical()->rhythmic ()->duration (); + return audio_item_l_->req_l_->musical ()->rhythmic ()->duration (); } int -Midi_note::pitch_i() const +Midi_note::pitch_i () const { - return audio_item_l_->req_l_->musical()->melodic ()->pitch (); + return audio_item_l_->req_l_->musical ()->melodic ()->pitch (); } String -Midi_note::str() const +Midi_note::str () const { - if (pitch_i() == INT_MAX) + if (pitch_i () == INT_MAX) return String (""); - Byte status_byte = (char)(0x90 + channel_i_); + Byte status_byte = (char) (0x90 + channel_i_); - String str = String ((char)status_byte); - str += (char)(pitch_i() + c0_pitch_i_c_); + String str = String ( (char)status_byte); + str += (char) (pitch_i () + c0_pitch_i_c_); // poor man's staff dynamics: - str += (char)(dynamic_byte_ - 0x10 * channel_i_); + str += (char) (dynamic_byte_ - 0x10 * channel_i_); return str; } @@ -410,21 +429,21 @@ Midi_note_off::Midi_note_off (Midi_note* midi_note_l) } int -Midi_note_off::pitch_i() const +Midi_note_off::pitch_i () const { - return audio_item_l_->req_l_->musical()->melodic ()->pitch (); + return audio_item_l_->req_l_->musical ()->melodic ()->pitch (); } String -Midi_note_off::str() const +Midi_note_off::str () const { - if (pitch_i() == INT_MAX) + if (pitch_i () == INT_MAX) return String (""); - Byte status_byte = (char)(0x80 + channel_i_); + Byte status_byte = (char) (0x80 + channel_i_); - String str = String ((char)status_byte); - str += (char)(pitch_i() + Midi_note::c0_pitch_i_c_); + String str = String ( (char)status_byte); + str += (char) (pitch_i () + Midi_note::c0_pitch_i_c_); str += (char)aftertouch_byte_; return str; } @@ -432,7 +451,7 @@ Midi_note_off::str() const Midi_tempo::Midi_tempo (Audio_item* audio_item_l) : Midi_item (audio_item_l) { - per_minute_4_i_ = ((Audio_tempo*)audio_item_l_)->per_minute_4_i_; + per_minute_4_i_ = ( (Audio_tempo*)audio_item_l_)->per_minute_4_i_; } Midi_tempo::Midi_tempo (int per_minute_4_i) @@ -442,7 +461,7 @@ Midi_tempo::Midi_tempo (int per_minute_4_i) } String -Midi_tempo::str() const +Midi_tempo::str () const { int useconds_per_4_i = 60 * (int)1e6 / per_minute_4_i_; String str = "ff5103"; @@ -453,8 +472,8 @@ Midi_tempo::str() const Midi_text::Midi_text (Audio_item* audio_item_l) : Midi_item (audio_item_l) { - text_str_ = ((Audio_text*)audio_item_l_)->text_str_; - type_ = (Type)((Audio_text*)audio_item_l_)->type_; + text_str_ = ( (Audio_text*)audio_item_l_)->text_str_; + type_ = (Type) ( (Audio_text*)audio_item_l_)->type_; } Midi_text::Midi_text (Midi_text::Type type, String text_str) @@ -465,17 +484,17 @@ Midi_text::Midi_text (Midi_text::Type type, String text_str) } String -Midi_text::str() const +Midi_text::str () const { String str = "ff" + String_convert::i2hex_str (type_, 2, '0'); str = String_convert::hex2bin_str (str); - str += i2varint_str (text_str_.length_i()); + str += i2varint_str (text_str_.length_i ()); str += text_str_; return str; } -Midi_track::Midi_track() - : Midi_chunk() +Midi_track::Midi_track () + : Midi_chunk () { // 4D 54 72 6B MTrk // 00 00 00 3B chunk length (59) @@ -514,25 +533,27 @@ Midi_track::Midi_track() } void -Midi_track::add (int delta_time_i, String event_str) +Midi_track::add (Moment delta_time_mom, Midi_item* mitem_p) { - if (delta_time_i < 0) + assert (delta_time_mom >= 0); + event_p_list_.bottom ().add (new Midi_event (delta_time_mom, mitem_p)); +} + +String +Midi_track::data_str () const +{ + String str = Midi_chunk::data_str (); + if (check_debug && !monitor->silent_b ("Midistrings")) + str += "\n"; + for (PCursor i (event_p_list_); i.ok (); i++) { - cout << String_convert::bin2hex_str (i2varint_str (delta_time_i)) << endl; - cout << String_convert::bin2hex_str (event_str) << endl; + str += i->str (); + if (check_debug && !monitor->silent_b ("Midistrings")) + str += "\n"; } - assert (delta_time_i >= 0); - assert (event_str.length_i()); - Midi_chunk::add (i2varint_str (delta_time_i) + event_str); + return str; } -void -Midi_track::add (Moment delta_time_moment, Midi_item* mitem_l) +Midi_track::~Midi_track () { - // use convention of 384 clocks per 4 - // use Duration_convert - int delta_time_i = delta_time_moment * Moment (384) / Moment (1, 4); - // ? int (delta_time_moment * 4 * 384) - add (delta_time_i, mitem_l->str()); } - diff --git a/lily/midi-stream.cc b/lily/midi-stream.cc index 34833fb24b..efc244c5de 100644 --- a/lily/midi-stream.cc +++ b/lily/midi-stream.cc @@ -19,46 +19,51 @@ Midi_stream::Midi_stream (String filename_str) { filename_str_ = filename_str; os_p_ = 0; - open(); + open (); } -Midi_stream::~Midi_stream() +Midi_stream::~Midi_stream () { *os_p_ << flush; // ugh. Share with tex_stream. if (!*os_p_) { - warning(_("error syncing file (disk full?)")); + warning (_ ("error syncing file (disk full?)")); exit_status_i_ = 1; } delete os_p_; } Midi_stream& -Midi_stream::operator <<(String str) +Midi_stream::operator << (String str) { - if (check_debug && !monitor->silent_b("Midistrings")) - str = String_convert::bin2hex_str (str); - *os_p_ << str; - - if (check_debug && !monitor->silent_b ("Midistrings")) - *os_p_ << "\n"; - return *this; } Midi_stream& -Midi_stream::operator <<(Midi_item const& mitem_c_r) +Midi_stream::operator << (Midi_item const& mitem_c_r) { - // *this << mitem_c_r.str(); - mitem_c_r.output (this); - if (check_debug && !monitor->silent_b("Midistrings")) - *os_p_ << "\n"; +// *this <silent_b ("Midistrings")) + { + str = String_convert::bin2hex_str (str) + "\n"; + // ugh, should have separate debugging output with Midi*::print routines + int i = str.index_i ("0a"); + while (i >= 0) + { + str[i] = '\n'; + str[i + 1] = '\t'; + i = str.index_i ("0a"); + } + } + + *os_p_ << str; return *this; } Midi_stream& -Midi_stream::operator <<(int i) +Midi_stream::operator << (int i) { // output binary string ourselves *this << Midi_item::i2varint_str (i); @@ -66,9 +71,9 @@ Midi_stream::operator <<(int i) } void -Midi_stream::open() +Midi_stream::open () { os_p_ = new ofstream (filename_str_.ch_C ()); if (!*os_p_) - error (_("can't open `") + filename_str_ + "\'"); + error (_ ("can't open `") + filename_str_ + "\'"); } diff --git a/lily/midi-walker.cc b/lily/midi-walker.cc index 36c8000024..38fbad9953 100644 --- a/lily/midi-walker.cc +++ b/lily/midi-walker.cc @@ -43,12 +43,12 @@ Midi_walker::~Midi_walker() Find out if start_note event is needed, and do it if needed. */ void -Midi_walker::do_start_note (Midi_note* note_l) +Midi_walker::do_start_note (Midi_note* note_p) { - Moment stop_mom = note_l->duration() + ptr ()->audio_column_l_->at_mom (); + Moment stop_mom = note_p->duration() + ptr ()->audio_column_l_->at_mom (); for (int i=0; i < stop_note_queue.size(); i++) { - if (stop_note_queue[ i ].val->pitch_i() == note_l->pitch_i ()) + if (stop_note_queue[ i ].val->pitch_i() == note_p->pitch_i ()) { if (stop_note_queue[ i ].key < stop_mom) stop_note_queue[ i ].ignore_b_ = true; @@ -58,11 +58,11 @@ Midi_walker::do_start_note (Midi_note* note_l) } Midi_note_event e; - e.val = new Midi_note_off (note_l); + e.val = new Midi_note_off (note_p); e.key = stop_mom; stop_note_queue.insert (e); - output_event (ptr()->audio_column_l_->at_mom (), note_l); + output_event (ptr()->audio_column_l_->at_mom (), note_p); } /** @@ -78,9 +78,9 @@ Midi_walker::do_stop_notes (Moment max_mom) continue; Moment stop_mom = e.key; - Midi_note_off* note_l = e.val; + Midi_note_off* note_p = e.val; - output_event (stop_mom, note_l); + output_event (stop_mom, note_p); } } @@ -109,7 +109,5 @@ Midi_walker::process() output_event (ptr()->audio_column_l_->at_mom (), p); else do_start_note ((Midi_note*)p); - - delete p; } diff --git a/lily/score.cc b/lily/score.cc index 97203dec9c..b628441475 100644 --- a/lily/score.cc +++ b/lily/score.cc @@ -31,10 +31,11 @@ Score::Score() Score::Score (Score const &s) { - music_p_ = s.music_p_->clone(); + music_p_ = (s.music_p_) ? s.music_p_->clone() : 0; for (int i=0; i < s.def_p_arr_.size (); i++) def_p_arr_.push(s.def_p_arr_[i]->clone()); - header_p_ = new Header (*s.header_p_); + + header_p_ = (s.header_p_) ? new Header (*s.header_p_): 0; } Score::~Score() diff --git a/lily/span-bar-grav.cc b/lily/span-bar-grav.cc index 8d9cffdff3..727fe56c76 100644 --- a/lily/span-bar-grav.cc +++ b/lily/span-bar-grav.cc @@ -22,6 +22,17 @@ Span_bar_engraver::get_span_bar_p() const return new Span_bar; } + +void +Span_bar_engraver::do_creation_processing () +{ +} + +void +Span_bar_engraver::do_removal_processing () +{ +} + void Span_bar_engraver::acknowledge_element (Score_elem_info i) { @@ -57,7 +68,6 @@ Span_bar_engraver::do_pre_move_processing() spanbar_p_ =0; } bar_l_arr_.set_size (0); - } diff --git a/lily/spring-spacer.cc b/lily/spring-spacer.cc index 94fd515d39..2b030e6c71 100644 --- a/lily/spring-spacer.cc +++ b/lily/spring-spacer.cc @@ -249,7 +249,6 @@ void Spring_spacer::make_constraints (Mixed_qp& lp) const { int dim=cols.size(); - Real nw_f = paper_l ()->note_width (); for (int j=0; j < dim; j++) { Colinfo c=cols[j]; @@ -635,6 +634,9 @@ Spring_spacer::calc_idealspacing() dist = dist >? minimum; } + // ugh: never let columns touch... try to set over here... + // ugh: use j iso i triggers ice in gcc-2.7.2.3 + cols[i].width_[LEFT] -= nw_f / 4; ideal_arr_[i] = dist; } } diff --git a/lily/staff-performer.cc b/lily/staff-performer.cc index 6c813df4ae..7270d20282 100644 --- a/lily/staff-performer.cc +++ b/lily/staff-performer.cc @@ -13,43 +13,60 @@ #include "audio-item.hh" #include "audio-staff.hh" -IMPLEMENT_IS_TYPE_B1(Staff_performer,Performer_group_performer); -ADD_THIS_TRANSLATOR(Staff_performer); +IMPLEMENT_IS_TYPE_B1 (Staff_performer,Performer_group_performer); +ADD_THIS_TRANSLATOR (Staff_performer); -Staff_performer::Staff_performer() +Staff_performer::Staff_performer () { audio_staff_p_ = 0; } -Staff_performer::~Staff_performer() +Staff_performer::~Staff_performer () { delete audio_staff_p_; } void -Staff_performer::do_creation_processing() +Staff_performer::do_creation_processing () { audio_staff_p_ = new Audio_staff; - if (instrument_str().length_i()) - { - // staff name - play (new Audio_text (Audio_text::TRACK_NAME, id_str_)); - // instrument description - play (new Audio_text (Audio_text::INSTRUMENT_NAME, instrument_str ())); - } + play (new Audio_text (Audio_text::TRACK_NAME, id_str_)); + +#if 1 + String str = new_instrument_str (); + if (str.length_i ()) + // instrument description + play (new Audio_text (Audio_text::INSTRUMENT_NAME, str)); +#endif // tempo play (new Audio_tempo (get_tempo_i ())); - if (instrument_str ().length_i ()) +#if 1 + if (str.length_i ()) // instrument - play (new Audio_instrument (instrument_str ())); + play (new Audio_instrument (str)); +#endif + Performer_group_performer::do_creation_processing (); } void -Staff_performer::do_removal_processing() +Staff_performer::do_process_requests () +{ + String str = new_instrument_str (); + if (str.length_i ()) + { + play (new Audio_text (Audio_text::INSTRUMENT_NAME, str)); + play (new Audio_instrument (str)); + } + Performer_group_performer::do_process_requests (); +} + + +void +Staff_performer::do_removal_processing () { Performer_group_performer::do_removal_processing (); Performer::play (audio_staff_p_); @@ -57,10 +74,16 @@ Staff_performer::do_removal_processing() } String -Staff_performer::instrument_str() +Staff_performer::new_instrument_str () { // mustn't ask Score for instrument: it will return piano! - return get_property ("instrument"); + String str = get_property ("instrument"); + if (str == instrument_str_) + return ""; + + instrument_str_ = str; + + return instrument_str_; /* ugh, but can't if (properties_dict_.elt_b ("instrument")) @@ -72,9 +95,9 @@ Staff_performer::instrument_str() void Staff_performer::play (Audio_element* p) { - if (p->is_type_b (Audio_item::static_name())) + if (p->is_type_b (Audio_item::static_name ())) { - audio_staff_p_->add ((Audio_item*)p); + audio_staff_p_->add ( (Audio_item*)p); } Performer::play (p); } diff --git a/lily/staff-side.cc b/lily/staff-side.cc index 06690a0334..0a741a104a 100644 --- a/lily/staff-side.cc +++ b/lily/staff-side.cc @@ -54,11 +54,11 @@ Staff_side::add_support (Score_elem*i) } Real -Staff_side::get_position_f() const +Staff_side::get_position_f () const { if (!dir_) { - warning (_("Staff_side::get_position_i(): " + warning (_("Staff_side::get_position_f(): " "somebody forgot to set my vertical direction, returning -20")); return -20; } @@ -68,8 +68,7 @@ Staff_side::get_position_f() const Real inter_f = paper()-> internote_f (); Interval v= support_height(); -// y = v[dir_] + 2*dir_*inter_f; // ugh - y = v[dir_]; // ugh + y = v[dir_] + 2 * dir_ * inter_f; // ugh return y; } diff --git a/lily/template8.cc b/lily/template8.cc index 301e86f3f7..4ce5596d28 100644 --- a/lily/template8.cc +++ b/lily/template8.cc @@ -11,10 +11,11 @@ #include "audio-column.hh" #include "audio-item.hh" #include "audio-staff.hh" +#include "midi-item.hh" #include "pcursor.tcc" #include "plist.tcc" template POINTERLIST_INSTANTIATE(Audio_element); template POINTERLIST_INSTANTIATE(Audio_column); - +template POINTERLIST_INSTANTIATE(Midi_event); diff --git a/lily/text-item.cc b/lily/text-item.cc index 16a45977f1..952e917052 100644 --- a/lily/text-item.cc +++ b/lily/text-item.cc @@ -13,49 +13,70 @@ #include "stem.hh" #include "molecule.hh" #include "lookup.hh" +#include "debug.hh" -Text_item::Text_item (General_script_def*tdef_l, Direction d) +Text_item::Text_item (General_script_def* tdef_l, Direction d) { dir_ = d; fat_b_ = false; - tdef_p_ = tdef_l->clone(); + tdef_p_ = tdef_l->clone (); } -Text_item::~Text_item() +Text_item::~Text_item () { delete tdef_p_; } void -Text_item::do_pre_processing() +Text_item::do_pre_processing () { if (!dir_) dir_ = DOWN; } +Real +Text_item::get_position_f () const +{ + // uhuh, tdef/gdef? + if ( (tdef_p_->name () != Text_def::static_name ()) + || ( ( (Text_def*)tdef_p_)->style_str_ != "finger")) + return Staff_side::get_position_f (); + + if (!dir_) + { + warning (_ ("Text_item::get_position_f(): " + "somebody forgot to set my vertical direction, returning -20")); + return -20; + } + + Interval v = support_height (); + // add no extra: fingers should be just above note, no? + return v[dir_]; +} + Interval -Text_item::symbol_height() const +Text_item::symbol_height () const { - return tdef_p_->get_atom (paper(), dir_).dim_.y (); + return tdef_p_->get_atom (paper (), dir_).dim_.y (); } Molecule* -Text_item::brew_molecule_p() const +Text_item::brew_molecule_p () const { - Atom a (tdef_p_->get_atom (paper(), dir_)); + Atom a (tdef_p_->get_atom (paper (), dir_)); /* if (fat_b_) - a.sym.dim.x = tdef_p_->width (paper()); + a.sym.dim.x = tdef_p_->width (paper ()); */ Molecule* mol_p = new Molecule (a); if (dir_<0) // should do something better anyway. - mol_p->translate_axis (-mol_p->extent().y ().left , Y_AXIS); + mol_p->translate_axis (-mol_p->extent ().y ().left , Y_AXIS); mol_p->translate_axis (y_, Y_AXIS); return mol_p; } -IMPLEMENT_IS_TYPE_B1(Text_item,Item); +IMPLEMENT_IS_TYPE_B1 (Text_item,Item); diff --git a/make/lelievijver.lsm b/make/lelievijver.lsm index e57f4746fd..adfe9b3f2b 100644 --- a/make/lelievijver.lsm +++ b/make/lelievijver.lsm @@ -1,7 +1,7 @@ Begin3 Titel: LilyPond -Versie: 0.1.45 -Inschrijf datum: 11FEB98 +Versie: 0.1.46 +Inschrijf datum: 17FEB98 Beschrijving: LilyPond is de muziek typesetter van het GNU Project. Het programma genereert muziek in zichtbare of hoorbare vorm uit uit een muzikale definitie file: @@ -16,8 +16,8 @@ Auteur: hanwen@stack.nl (Han-Wen Nienhuys) jan@digicash.com (Jan Nieuwenhuizen) Onderhouden door: hanwen@stack.nl (Han-Wen Nienhuys) Voornaamste plek: sunsite.unc.edu /pub/Linux/apps - 395k lilypond-0.1.45.tar.gz + 395k lilypond-0.1.46.tar.gz Oorspronkelijke plek: pcnov095.win.tue.nl /pub/lilypond/ - 395k lilypond-0.1.45.tar.gz + 395k lilypond-0.1.46.tar.gz Copi"eer politie: GPL End diff --git a/make/lilypond.lsm b/make/lilypond.lsm index 7e7a32bf7e..4e6df5ae07 100644 --- a/make/lilypond.lsm +++ b/make/lilypond.lsm @@ -1,7 +1,7 @@ Begin3 Title: LilyPond -Version: 0.1.45 -Entered-date: 11FEB98 +Version: 0.1.46 +Entered-date: 17FEB98 Description: LilyPond is the GNU Project music typesetter. The program generates visual or auditive output from a music definition file: it can typeset formatted sheet music @@ -15,8 +15,8 @@ Author: hanwen@stack.nl (Han-Wen Nienhuys) jan@digicash.com (Jan Nieuwenhuizen) Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys) Primary-site: sunsite.unc.edu /pub/Linux/apps/sound/convert - 470k lilypond-0.1.45.tar.gz + 470k lilypond-0.1.46.tar.gz Original-site: pcnov095.win.tue.nl /pub/lilypond/development/ - 470k lilypond-0.1.45.tar.gz + 470k lilypond-0.1.46.tar.gz Copying-policy: GPL End diff --git a/make/lilypond.spec b/make/lilypond.spec index 4d75d14848..30bec0b72e 100644 --- a/make/lilypond.spec +++ b/make/lilypond.spec @@ -1,9 +1,9 @@ Name: lilypond -Version: 0.1.45 +Version: 0.1.46 Release: 1 Copyright: GPL Group: Applications/Publishing -Source0: alpha.gnu.org:/gnu/lilypond/development/lilypond-0.1.45.tar.gz +Source0: alpha.gnu.org:/gnu/lilypond/development/lilypond-0.1.46.tar.gz Summary: A program for typesetting music. URL: http://www.stack.nl/~hanwen/lilypond Packager: Han-Wen Nienhuys @@ -31,7 +31,7 @@ strip lily/out/lilypond mi2mu/out/mi2mu make -C Documentation gifs make prefix="$RPM_BUILD_ROOT/usr" install %files -%doc Documentation/out/AUTHORS.txt Documentation/out/CodingStyle.txt Documentation/out/INSTALL.txt Documentation/out/MANIFESTO.txt Documentation/out/convert-mudela.txt Documentation/out/faq.txt Documentation/out/gnu-music.txt Documentation/out/index.txt Documentation/out/internals.txt Documentation/out/language.txt Documentation/out/lilypond.txt Documentation/out/links.txt Documentation/out/literature.txt Documentation/out/ly2dvi.txt Documentation/out/mi2mu.txt Documentation/out/mudela-book.txt Documentation/out/mutopia.txt Documentation/out/other-packages.txt BUGS TODO NEWS DEDICATION ANNOUNCE README +%doc Documentation/out/ANNOUNCE.txt Documentation/out/AUTHORS.txt Documentation/out/CodingStyle.txt Documentation/out/DEDICATION.txt Documentation/out/INSTALL.txt Documentation/out/MANIFESTO.txt Documentation/out/NEWS.txt Documentation/out/TODO.txt Documentation/out/cadenza.ly.txt Documentation/out/collisions.ly.txt Documentation/out/convert-mudela.txt Documentation/out/faq.txt Documentation/out/font16.ly.txt Documentation/out/font20.ly.txt Documentation/out/gallina.ly.txt Documentation/out/gnu-music.txt Documentation/out/index.txt Documentation/out/internals.txt Documentation/out/language.txt Documentation/out/lilypond.txt Documentation/out/links.txt Documentation/out/literature.txt Documentation/out/ly2dvi.txt Documentation/out/mi2mu.txt Documentation/out/mudela-book.txt Documentation/out/multi.ly.txt Documentation/out/mutopia.txt Documentation/out/other-packages.txt Documentation/out/preludes-1.ly.txt Documentation/out/preludes-2.ly.txt Documentation/out/rhythm.ly.txt Documentation/out/scsii-menuetto.ly.txt Documentation/out/standje.ly.txt Documentation/out/toccata-fuga-E.ly.txt Documentation/out/twinkle-pop.ly.txt Documentation/out/twinkle.ly.txt Documentation/out/wtk1-fugue2.ly.txt Documentation/out/wtk1-prelude1.ly.txt BUGS TODO NEWS DEDICATION ANNOUNCE README %doc input/beams.ly input/cadenza.ly input/collisions.ly input/coriolan-alto.ly input/denneboom.ly input/font-body.ly input/font.ly input/font11.ly input/font13.ly input/font16.ly input/font20.ly input/font26.ly input/gourlay.ly input/keys.ly input/kortjakje.ly input/multi.ly input/pedal.ly input/rhythm.ly input/scales.ly input/scripts.ly input/sleur.ly input/slurs.ly input/spacing.ly input/stem.ly input/toccata-fuga-E.ly input/twinkle-pop.ly input/twinkle.ly Documentation/mudela-course.doc Documentation/mudela-man.doc %doc Documentation/out/lelie_logo.gif /usr/bin/convert-mudela diff --git a/mutopia/J.S.Bach/preludes-3.ly.m4 b/mutopia/J.S.Bach/preludes-3.ly.m4 index 0a85331b05..88f575edd3 100644 --- a/mutopia/J.S.Bach/preludes-3.ly.m4 +++ b/mutopia/J.S.Bach/preludes-3.ly.m4 @@ -39,7 +39,7 @@ rh = \melodic{ s('bes d g) - s(c fis a -"poco\\_a\\_poco\\_cresc.") + s(c fis a -"poco a poco cresc.") s(d g bes) s(d fis c') @@ -57,7 +57,7 @@ rh = \melodic{ s('fis 'a c) s('fis 'a c) r16\p ['g 'a c] ['b 'g 'b 'g] r 'g r 'g - s('a c fis -"poco\\_cresc.") + s('a c fis -"poco cresc.") s(c fis a) s('b d g) s('b d f -"dim.") diff --git a/mutopia/J.S.Bach/preludes-4.ly b/mutopia/J.S.Bach/preludes-4.ly index 6086842e71..9b54a623dc 100644 --- a/mutopia/J.S.Bach/preludes-4.ly +++ b/mutopia/J.S.Bach/preludes-4.ly @@ -33,12 +33,28 @@ one = \melodic{ ['a-4_"dim." 'g-1 'a 'b] ['a-2 c-4 'b 'a] ['g-1 'fis-2 'g-3 'a] ['g-3 'b 'a 'g] | \stemup - )'fis4\p r16 [''b-1\< d-2 ''b~] <'g4-5 'e-3 ''b> - r16 ['cis-1 'e-2 \!cis] | % cis wants ~ - + )'fis4\p + \skip 4*7; | + d4.\mf cis8-"4\\_5" ~ cis 'b4-5 'a8-"4\\_5" ~ | + \textstyle "italic"; + 'a 'g4-5 'fis8-4 ~ ['fis16 'fis-4-"dim." 'e-3 'd-2] + \textstyle "finger"; + 'e4-"3\\_5" ~ | + ['e16 'e-5 'd 'cis] 'd4-5 ~ ['d16 'd-5 'cis ''b] 'cis4-5 | + \stemboth + [''fis16-1\p ''a-2 'd-5\< 'c-4] [''b-1 'd-2 'g-5 'fis-4] + ['d-1 'b-5 'a 'g] ['fis-2 'e-1 'd-4 \!'c!-3] | + [''b-2 'd-1 'g 'a] ['fis32 'g 'fis16] ['e16-4 'd-3] + ['d8. 'e16~] ['e 'd8 'cis16] | + \stemup + r16 ['d-1\< 'fis 'd] ['g 'a 'b 'g-1] [c-3 'b c d] [c e d-4 \!c] | + 'b4-5 'a ~ ['a8 'g-5 ~] ['g16 'fis8-4 'e'16-3] | + ['fis8-4 'e-5~] ['e 'd-5~] 'd4 'cis-4 | + 'd2\p-"rall." ~ ['d16 ''a-2( ''b-3 'cis-4] )'d4-5 | } two = \melodic{ + \octave c; \textstyle "finger"; % ugh: koor % \translator Staff=bass \octave c; \stemup @@ -58,18 +74,53 @@ two = \melodic{ e'4 d' ~ [d'16 d-1 cis'-2 g-1] cis'4-2 ~ | [c'8 a-3] d'4.-1 d'4-> cis'8-2 | \translator Staff=treble \octave c''; \stemdown - 'd4 \skip 4*3; | + 'd4 + \stemboth + r16 [''b-1\< d-2 ''b~] <'g4-5 'e-3 ''b> + r16 ['cis-1 'e-2 \!'cis~] | + <'a4-5 'f-3 'cis> r16 ['d-1 'fis-2 'd~] <'b4-5 'g-3 'd> + r16 ['fis-1 'a 'fis~] | + \stemdown + 'fis4 'e 'd 'cis | + ''b ''a ''b4. ''b8 | + ''a4 + \translator Staff=bass \octave c; \stemup + r16 [b-3 fis-1 a-2] g4-1 r16 [a-3 e-1 g-2] | + \skip 4*4; \skip 16*1; + \translator Staff=treble \octave c''; \stemdown + 'd8.-1 ~ ['d8 'c] 'd4 [''a8 ''g] | + \translator Staff=bass \octave c; \stemup + [fis'8 c'-1] b4-1 + \stemdown + 'a8~ | + ['a 'g-3~] ['g16 'e 'fis8~] ['fis16 'd8.~] ['d8. cis!16] | + \translator Staff=bass \octave c; \stemup +% <[d'8-2 a-1> e-1 fis-2 d-1] + \multi 2 < + { + [d'8-2 a~] a4 + } + { + \property Voice.hshift = 1 + [a8-1 g] [fis16-2 e-1 fis-2 d-1] + \property Voice.hshift = 0 + } + > + [g-1 fis-2 g-1 a-2] [g-1 b-3 a-2 g-1 ~] | + [g g-1 fis-2 e-1] fis-2 ~ fis2 } three = \melodic{ \octave c; \stemdown; d4-3 c-4 'b e-3 | - a16 ['a-5\mf( c-3 'a-5] [d-2 e-1 fis-2 d-4] + a16 ['a-5\mf( cis-3 'a-5] [d-2 e-1 fis-2 d-4] [g-1 fis-3 g a] [g b a g] | )fis4 fis e a-4 | - d'16 \stemboth [d-5\f( fis-3 d-5] [a-2 b-1 c'-2 a-4] - [d'-1 c'-3 d' e'] [d'-4 fis'-2 e'-1 ) d'] | + d'16 \stemboth [d-5\f( fis-3 d-5] [a-2 b-1 cis'-2 a-4] + [d'-1 cis'-3 d' e'] [d'-4 fis'-2 e'-1 ) d'] | [cis'-3 b-4 cis'-3 d'-2] [c'-4 e'-2 d'-3 c'-4] \stemdown b4-5 [cis'8-4 b-3(] | [a-4 )fis-5 b-2 a-3] [gis-4 e-5 a-3 g-4] | @@ -77,10 +128,47 @@ three = \melodic{ \stemboth r16 [d-4( fis-2 d-4] [)g8-.-1 'g-.-5] r16 [e-4( g-2 e-4] [)a8-. 'a-.-5] | + r16 [fis-4( a fis] [)b8-. 'b-.] r16 [g-4( b g] [)d'8-. d-.] | + r16 ['d16-5( 'fis-3 'd] ['a-2 'b-1 cis-2 'a-4] [d 'b-5 d-3 'b] + [fis-2 g a-2 fis-4] | + )fis16 ['g( 'b 'g] [d-2 e fis-2 d-4] [)g8-. 'g-.] r16 [cis-4( e cis] | + [)fis8-. 'fis-.] \stemdown r16 ['b-4( d 'b] [)e8-. 'e-.] + r16 ['a-4 cis a] | + \stemboth + [d-1 e-3 fis-2 d-4] [g-1 fis-2 e-3 d-1] [cis!-3 'a-5 'b cis] + [d-2 e fis-2 d-4] | + [g8 e-3] \stemdown [a 'a] ['b8.-4 'g16-5] a4-4 | + [d8-5 a-2~] [a g-3~] [g g-3] fis4-4 | + \stemup + r16 [g-2 b-1 g-3] [b'8.-1 c'16-1] [b8.-2 bes16-3] [a8-1 g] | + \stemdown + r16 ['a-2 cis!-1 a-2] [d-1 e fis d] [e8-1 d-2] [e-1 'a-2] | + [d 'a-2~] ['a16 'a-2 'b cis-2] d2 | +} + +four = \melodic{ + \skip 4*36; + \octave c'; + \stemup; + \property Voice.hshift = 1 + a2 fis | + d + \property Voice.hshift = 0 + \skip 4*11; + \translator Staff=bass \octave c; \stemup + a4 ~ [a16 d-2 g8-1] [fis e-1] | + \stemdown + d1 ~ | + d ~ | + 'd ~ + 'd2 'd2 } rh = \melodic{ - \one + \multi 2 < + \one + \four + > \bar "|."; } @@ -107,16 +195,24 @@ global = \melodic{ \type Staff=treble < \global % huh? try these iso directly! - \lh -% \one -% \two +% \lh + \multi 2 < + \one + \four + > > \type Staff=bass < \global - \rh +% \rh % or try \two having here, iso above! % \two -% \three + { + \clef "bass"; + \multi 2 < + \two + \three + > + } > > \paper{ diff --git a/mutopia/J.S.Bach/preludes-5.ly b/mutopia/J.S.Bach/preludes-5.ly new file mode 100644 index 0000000000..aee8b4c4a5 --- /dev/null +++ b/mutopia/J.S.Bach/preludes-5.ly @@ -0,0 +1,212 @@ +\header{ +filename = "preludes-5.ly"; +title = "5"; +composer = "Johann Sebastian Bach (1685-1750)"; +enteredby = "jcn"; +copyright = "public domain"; +} + +\include "paper20.ly" + +rh = \melodic{ + \octave c'; + \textstyle "italic"; + [d8-1\p a-5-"legato" f-3 d-1 a-5 f-3] | + [d-1 a-5 f-3 d-1 a-5 f-3] | + [d-1\< b-4 g-2 d-1 b-4 \!g-2] | + [d-1 b-4 g-2 d-1 b-5 g-3] | + [cis-1\mf g-4 e-2 cis-1 g-4 e-2] | + [cis-1 b-5 g-4 e-2 a-5 g-4] | + [f-3\< d-1 f-2 a-4 f-1 a-2] | + [d'-5 a-1 d'-2 f'-4 d'-1 \!f'-2] | + [b'\> f'-3 e' d' c'-3 b] | + [a gis-3 fis e d'-5 \!b-2] | + \multi 2 < + { + \stemup +% c4\mr^"(\\textsharp)"\p r r | +% c4\mr^"(\\textsharp)" r r + c4^"(\\textsharp)"\p r r | + c4^"(\\textsharp)" r r + } + { + \stemdown + a4 r r | + a4 r r + } + > | + [a'8\mf( es'-3\> d' c' bes!-3 a] | + [g fis-3 e!-2 d-1 c'-4 \!a] | + [)bes32(\p a bes16] [d'8-5 bes-3 g-1] )g'4 | +% r8 [d'-5( c bes a\pr g] | + r8 [d'-5( c bes a g] | + [)a-2 c'-4( a f] ) f'4 | +% r8 [c'-5 bes a g\tr f] | + r8 [c'-5 bes a g f] | + [g-2 bes-4 a g fis-1 e-2] | + [f-3 d-1 f-2 a-3 d'-5 g-2] | + \multi 2 < + { + \stemup + [cis'32-4 b cis'16 e'8-5-"poco cresc." cis-3 a e' cis] + } + { + \stemdown + a4 + } + > + \stemboth + [a8 e'-5 cis' a bes!-3 a] | + [g e'-5 cis'-3 g e'-5 cis'-3] | + [g-1 e'-5 cis' g a-3 g] | + [f-"dim." d'-5 bes f d' bes] | + [f d'-5 bes f d' bes] | + [fis-2-"dim." c'-5 a-3 fis-2 c'-5 a-3] | + [fis-2 c'-5 a-3 fis-2 c-5 a-3] | + [bes-4 g-1 fis-2 g-3 d-1 g-2] | + [bes-4 g-2 d-1 bes-5 g-3 d-1] | + [e-2\p g-4 fis-3 g-1 bes-4 g-2] | + [es-1 bes-4 g-2 es bes g] | + [cis-1 bes-4 g-2 cis bes g] | + [cis-1 bes-4 g-2 cis-1 a-5 g-4] | + [f-3 a f d a-5 f] | + [d-1 a-5 f-3 d-1 cis-2 d-1] | + [e-3\< g-5 e-3 'bes-1 g-5 e-3] | + ['bes-1 g-5 e-3 \!cis-2 'a-1 g-5] | + [f16-4\mf d-2 c-1 'bes-3] s4 s | +% ugh +% s1 | + s4 s4 s4 | + s4 s16 [d16-1-"m.d." f-2 a-4] [d-2-"m.g." f a] \stemup d'-1 | + [f' a'-4 f' d'] [f'-4 d' b d'-5] [gis-2 b a g] | + a'8-5 + \multi 2 < + { + \stemup + f'4-4\> ~ | \![f'8 e'] [e'32-4 f' e'8. ~] [e'8 d'-3] + } + { + \stemdown + r4 cis'-2 + } + > | + \stemboth; + [d'8-4 c'!-3 a-1 d'-4 bes-2 g-1] | + [c'-5 a-3 fis-2 bes-4 g e ] | + [a-5 fis-"dim. e rall." d g-5 e cis-2] | + \multi 2 < + { + \stemup + + } + { + \stemdown + [d32( cis d8. ~] ) d2 + } + > | + \bar "|."; +} + + +lh = \melodic{ + \clef "bass"; + \octave c; + [d32( cis )d8.] r4 r | + 'd4 r r | +% d\mr r r | + d r r | + 'd4 r r | +% d\mr r r | + d r r | + 'd4 r r | + [d8-2 'a-5 d-2 f-1 d-4 f-2] | + [a-1 f-4 a-2 d'-1 a-2 d'-1] | + gis4-3 r r | + e-4( )gis-2 e | + [a8-4 e'-1 c'-2 a-4 e'-1 c'-2 ] | + fis4-5 r r + d-4( ) fis d-5 | +% g\mr-"(\textsharp)" r r f!8 | + g-"(\textsharp)" r r8 f! | + [e32 f e8.] r4 r | +% f\pr r r8 e | + f r r8 e | + d4 r8 [f-1 e d] | + [e-2 d-3 cis-4 e-1 d-2 cis-3] | + d4-2( )c! 'b-4 | + 'a( )a a | + 'a( )a a | + 'a( )a a | + 'a( )a a | + 'b r r | + 'b-5( )b 'b | + 'a r r | + 'a-2( )d-1 'd | + 'g r r | + 'g( )g g | + 'g r r | + 'g( )g g | + 'a r r | + 'a( )a a | + 'a r r | + 'a( )a a | + 'cis r r | + 'cis( )cis 'cis | + 'd-4 s16 + \stemdown + [g16-1-"m.g." f e] [f-2 a d-3 f] | + 'a + \stemup + [d-5-"m.d." c 'bes] 'a + \stemdown ['g-2 'f-"m.g." 'e] ['d 'f-4 'a-2 d-1] | + \stemup +% [f-2\ped a] + [f-2-"Ped." a] + \stemdown +% [d-4-"m.g." f-"cresc."] a s s8 s4\dep | + [d-4-"m.g." f-"cresc."] a s s8 s4-"*" | +% ugh, whole rest has duration of one bar +% r1 | + r4 r r | +%{ + ugh, 'forget' the 8 below: + [cis-3( e cis 'a] [d16-1 c 'b 'a] | + and lily dumps koor +lilypond: ../flower/include/varray.hh:116: struct Rhythmic_grouping *& Array::elem(int) const: Assertion `i >=0&&i + < + \global + \lh + > + > + \paper{ + \paper_twenty + linewidth= 195.\mm; + } + \midi{ + \tempo 4 = 90; + } +} diff --git a/mutopia/J.S.Bach/preludes-6.ly b/mutopia/J.S.Bach/preludes-6.ly new file mode 100644 index 0000000000..14d1bf6fb5 --- /dev/null +++ b/mutopia/J.S.Bach/preludes-6.ly @@ -0,0 +1,128 @@ +\header{ +filename = "preludes-6.ly"; +title = "6"; +composer = "Johann Sebastian Bach (1685-1750)"; +enteredby = "jcn"; +copyright = "public domain"; +} + +\include "paper20.ly" + +one = \melodic{ + \octave c'; + \skip 4*4; | + \stemup + r4 d2-5( cis4-4 | + \stemboth + [)d16-5\mf a'-4( g' f'] [e' f'-4 cis'-2 d'-1] + [e32-3 d e8 f16] [d'8.-1 cis'16-3] | + \stemup + )cis'4\> ~ [cis16 a \!d'8 ~] d4 c-5 | + b2-4 ~ b4 a-5 ~ | + [a16 a-5 \stemup g! f] g4-4\< ~ g f-3 ~ | + [\!f16 a g f] [e16 g8.-5 ~] [g16 g-5 f-4 e-3] [d-1 f8.-4 ~] | + [f16 f-3 e d] b4 a-5 g-5 | + fis4-4 g r8\<-"rall." [g16-1( bes-2] r16 [bes-2 a-2 \!g-1] | + ) d'1-5 +} + +two = \melodic{ + \octave c'; + r16\p [d'-5( c'-4 bes-3] [a-2 bes-3 f-1 g-2] + [a32-3 g a8 bes16-1] [g8. f16-1] | + )f2 e2 | + \translator Staff=bass \octave c; \stemup + r4 a-1 bes-2 b-1 | + \translator Staff=treble \octave c'; \stemdown + r16 [b-3 a-1 g-2] [f8. f16-2] e2 ~ | + e2 ~ e4 ~ [e16 e-2 f! d-1] | + s4 [e32 d e8.~] e4 d4 ~ | + d4. [cis16-2 d-1] cis4 d-1 ~ | + d8 r r16 [e-2 f d] r16 [e-2 f d] r [d-1 e-3 cis] | + r16 [e-3 d-1 c!-2] ['bes! d8.] r8 e'4-5 | + fis1-2 +} + +three = \melodic{ + \octave c; + \stemup + f2-1( e-2 | + [)d16 b'( c' bes] [a-4 bes-2 f-5 g-4] + [a32 g a8 bes16-2] + [g8.-4 f16-5] | + )f2-5 g4-4 gis | + a2-2 ~ [a16 a-1( g f] [e-4 f-2 c-5 d] | + [e32 d e8 f16] [d8.-4 c16-5] \stemboth )c4.-5 d8-4 | + e4 ~ [e16 f-2( e-3 d-4] [cis 'a 'b cis-3] [d-4 e-3 f-2 d-4] | + \textstyle "finger"; + )'bes!2-"5\\_4" 'a ~ | + a a | + 'd cis-5 | + b1-2 +} + +four = \melodic{ + \octave c; + d2-3 cis-4 | + \skip 4*16; + \stemup + b2-1 a-1 | + g a4. [gis16 a] | + gis2 <[g8 cis> e4-2 | + d4. [fis16-3 g-2] r16 b8.-1 ~ b4 | + \stemdown + d1-5 +} + +rh = \melodic{ + \one + \multi 2 < + \one + \two + > + \bar "|."; +} + + +lh = \melodic{ + \clef "bass"; + \multi 2 < + \three + \four + > + \bar "|."; +} + + +global = \melodic{ + \meter 4/4; + \key bes; +} + +\score{ + % Allegretto + % it would be nice to shut-off fingering... + \melodic \type Grandstaff < + \type Staff=treble < + \global +% huh? try these iso directly! + \lh +% \one +% \two + > + \type Staff=bass < + \global + \rh +% or try \two having here, iso above! +% \three +% \four + > + > + \paper{ + \paper_twenty + linewidth= 195.\mm; + } + \midi{ + \tempo 4 = 110; + } +} diff --git a/mutopia/J.S.Bach/preludes.tex b/mutopia/J.S.Bach/preludes.tex index 39d19a95be..942bd2d55b 100644 --- a/mutopia/J.S.Bach/preludes.tex +++ b/mutopia/J.S.Bach/preludes.tex @@ -45,6 +45,10 @@ \piece{3}{preludes-3}{Semplice e non troppo legato} \newpage \piece{4}{preludes-4}{Allegretto} +\newpage +\piece{5}{preludes-5}{Moderato} +\newpage +\piece{6}{preludes-6}{Andante espressivo} \end{document} diff --git a/mutopia/standchen.ly b/mutopia/standchen.ly index e50751350a..32f0609dcc 100644 --- a/mutopia/standchen.ly +++ b/mutopia/standchen.ly @@ -1,11 +1,10 @@ \header{ -filename = "standchen.ly"; -title = "St\"andchen (Serenade) \"Leise flehen meine Lieder\""; -opus = "D. 957 No. 4"; -composer = "Franz Schubert (1797-1828)" - "Text by Ludwig Rellstab (1799-1860)"; -enteredby = "JCN"; -copyright = "public domain"; +filename = "standchen.ly"; +title = "St\"andchen (Serenade)\\\``Leise flehen meine Lieder''"; +opus = "D. 957 No. 4"; +composer = "Franz Schubert (1797-1828)\\\ \hfill Text by Ludwig Rellstab (1799-1860)"; +enteredby = "JCN"; +copyright = "public domain"; } %{ -- 2.39.2