From 7f0a3b682bebc864fbca295deba301238d805274 Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Thu, 10 Apr 1997 14:46:59 +0200 Subject: release: 0.0.50 --- .version | 2 +- ANNOUNCE | 12 ++-- Documentation/Makefile | 1 + Documentation/lilypond.pod | 61 +++++++++--------- Documentation/mudela.pod | 40 +++++++----- INSTALL.text | 6 +- NEWS | 25 +++++++- TODO | 28 ++++++-- bin/Makefile | 13 ++-- bin/convert-mudela | 3 + flower/TODO | 4 +- init/register.ini | 1 + init/script.ini | 20 +++--- input/error.ly | 2 +- input/kortjakje.ly | 16 ++--- input/midi.ly | 28 -------- input/plet.ly | 29 +++++---- input/rhythm.ly | 26 ++++---- input/scales.ly | 8 +-- input/scsii-menuetto.ly | 16 ++--- input/standchen.ly | 3 - input/wohltemperirt.ly | 2 + lib/include/input.hh | 1 + lily/.version | 2 +- lily/beam.cc | 6 +- lily/clef-reg.cc | 2 +- lily/crescendo.cc | 9 ++- lily/dynamic-reg.cc | 9 ++- lily/global-regs.cc | 2 + lily/headreg.cc | 20 +++--- lily/include/beam.hh | 2 +- lily/include/crescendo.hh | 11 ++-- lily/include/dynamic-reg.hh | 6 +- lily/include/head-reg.hh | 14 ++-- lily/include/headreg.hh | 28 -------- lily/include/item.hh | 3 +- lily/include/key.hh | 2 +- lily/include/lily-proto.hh | 4 ++ lily/include/my-lily-parser.hh | 2 + lily/include/note-column-reg.hh | 27 ++++++++ lily/include/note-column.hh | 37 +++++++++++ lily/include/notehead.hh | 16 +++-- lily/include/register.hh | 3 +- lily/include/rest.hh | 29 --------- lily/include/script-def.hh | 23 +++++-- lily/include/script-reg.hh | 16 +++-- lily/include/script.hh | 32 ++++++---- lily/include/spanner.hh | 43 +++++++------ lily/include/staff-elem-info.hh | 2 +- lily/include/staff-elem.hh | 17 +++-- lily/include/staff-info.hh | 2 +- lily/include/staff-regs.hh | 10 +-- lily/include/staff-side.hh | 39 +++++++++++ lily/include/staff-sym-reg.hh | 4 +- lily/include/staff-sym.hh | 8 ++- lily/include/stem.hh | 4 +- lily/include/text-item.hh | 12 ++-- lily/key-reg.cc | 2 +- lily/lexer.l | 2 +- lily/lily-version.cc | 2 +- lily/local-key-reg.cc | 4 +- lily/lyric-item.cc | 2 +- lily/main.cc | 24 ++++--- lily/my-lily-lexer.cc | 1 + lily/my-lily-parser.cc | 6 +- lily/note-column-reg.cc | 55 ++++++++++++++++ lily/note-column.cc | 135 +++++++++++++++++++++++++++++++++++++++ lily/notehead.cc | 9 ++- lily/parser.y | 20 +++++- lily/register-group.cc | 3 +- lily/register.cc | 1 - lily/rest.cc | 54 ---------------- lily/script-def.cc | 19 +++--- lily/script-reg.cc | 61 +++++++++++------- lily/script.cc | 93 ++++++++++----------------- lily/slur-reg.cc | 4 +- lily/spanner.cc | 2 +- lily/staff-elem-info.cc | 4 +- lily/staff-elem.cc | 45 ++++++++++--- lily/staff-info.cc | 3 +- lily/staff-regs.cc | 9 +++ lily/staff-side.cc | 65 +++++++++++++++++++ lily/staff-sym-reg.cc | 5 ++ lily/staff-sym.cc | 12 ++++ lily/stem-beam-reg.cc | 13 ++-- lily/stem.cc | 28 ++++---- lily/text-item.cc | 15 +++-- lily/text-reg.cc | 6 +- lily/walk-regs.cc | 3 +- make/Configure_variables.make.in | 2 +- make/Variables.make | 5 -- 91 files changed, 962 insertions(+), 545 deletions(-) create mode 100644 bin/convert-mudela delete mode 100644 input/midi.ly delete mode 100644 lily/include/headreg.hh create mode 100644 lily/include/note-column-reg.hh create mode 100644 lily/include/note-column.hh delete mode 100644 lily/include/rest.hh create mode 100644 lily/include/staff-side.hh create mode 100644 lily/note-column-reg.cc create mode 100644 lily/note-column.cc delete mode 100644 lily/rest.cc create mode 100644 lily/staff-side.cc diff --git a/.version b/.version index 65d7dba42d..3434710ebe 100644 --- a/.version +++ b/.version @@ -1,6 +1,6 @@ TOPLEVEL_MAJOR_VERSION = 0 TOPLEVEL_MINOR_VERSION = 0 -TOPLEVEL_PATCH_LEVEL = 49 +TOPLEVEL_PATCH_LEVEL = 50 # use to send patches, always empty for released version: # include separator: ".postfix", "-pl" makes rpm barf diff --git a/ANNOUNCE b/ANNOUNCE index 6d05b1d38c..0b79200e5b 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -1,22 +1,22 @@ Announcing - - LILYPOND + + GNU LilyPond The Music Typesetter Do you pine for the nice days of Linux 0.95, when men were men and wrote their own applications? Are you without a nice project and just dying to cut your teeth into a bleeding edge application you can -modify for your needs. Do you find it frustrating that everything +modify for your needs? Do you find it frustrating that everything works in LaTeX? No more all-nighters to get a nifty program working? Then this post might be just for you! I have been working very hard on a music typesetting system (called -LilyPond) the past half year, and I finally think it is ready to be +GNU LilyPond) the past half year, and I finally think it is ready to be used and hacked at by a larger public than me and my co-developer. -Sources for this project are on +Sources for this project are on: ftp://pcnov095.win.tue.nl/pub/lilypond/ @@ -29,7 +29,7 @@ detailed info and examples can be found on the webpage at: [DETAILED DESCRIPTION] -WHAT IS LILYPOND +WHAT IS GNU LilyPond Technically it is a preprocessor which generates TeX (or LaTeX) output which contains information to typeset a musical diff --git a/Documentation/Makefile b/Documentation/Makefile index dc87ae02d9..dd61be8065 100644 --- a/Documentation/Makefile +++ b/Documentation/Makefile @@ -48,6 +48,7 @@ include ./$(depth)/make/Rules.make # localclean: + rm -f out/* rm -f $(TEXTFILES) $(HTMLFILES) $(GROFFFILES) $(HTMLFILES) localinstall: $(outdir)/lilypond.1 $(outdir)/mudela.5 diff --git a/Documentation/lilypond.pod b/Documentation/lilypond.pod index da1d68bf3f..3482fa961c 100644 --- a/Documentation/lilypond.pod +++ b/Documentation/lilypond.pod @@ -1,6 +1,6 @@ =head1 NAME -LilyPond - a music typesetter +lilypond - the GNU music typesetter =head1 SYNOPSIS @@ -8,7 +8,7 @@ LilyPond - a music typesetter =head1 DESCRIPTION -Technically LilyPond is a preprocessor which generates TeX +Technically GNU LilyPond is a preprocessor which generates TeX (or LaTeX) output which contains information to typeset a musical score. Practically it is a typesetter, which only uses TeX as an output medium. (this is handy because there exist music fonts for TeX) @@ -17,7 +17,7 @@ As a bonus, you can also output a MIDI file of what you typed. It translates script files (mudela files or F<*.ly>'s) into TeX input. Typesetting music is a complex task, whereas the message that printed -music conveys is usually a simple one. LilyPond is a try at providing +music conveys is usually a simple one. GNU LilyPond is a try at providing a simple interface for setting music. @@ -36,13 +36,13 @@ do midi output only =item B<-d,--debug>, -Turn debugging info. LilyPond will read the file F<.dstreamrc>, which +Turn debugging info. GNU LilyPond will read the file F<.dstreamrc>, which tells for what functions and classes may produce copious debugging output. =item B<-w,--warranty>, -Show the warranty with which LilyPond comes. (It comes with B!) +Show the warranty with which GNU LilyPond comes. (It comes with B!) =item B<-o,--output=>F, @@ -110,7 +110,7 @@ clef changes, meter changes, cadenza-mode, key changes, repeat bars =head1 DESIGN CONSIDERATIONS -LilyPond was written with some considerations in mind: +GNU LilyPond was written with some considerations in mind: =over 5 @@ -118,7 +118,7 @@ LilyPond was written with some considerations in mind: Describing a well-defined language for defining music. We call this language (rather arrogantly) The Musical Definition Language -(mudela for short). LilyPond reads a mudela sourcefile and outputs a +(mudela for short). GNU LilyPond reads a mudela sourcefile and outputs a TeX file. =item * @@ -131,8 +131,8 @@ pitch. =item * -LilyPond uses MusiXTeX fonts and TeX for its output. This is not a key -issue: in a future version, LilyPond might bypass TeX, but at the moment +GNU LilyPond uses MusiXTeX fonts and TeX for its output. This is not a key +issue: in a future version, GNU LilyPond might bypass TeX, but at the moment TeX is very convenient for producing output. =item * @@ -143,23 +143,23 @@ setting is not possible without a knowledgeable printer," untrue. =item * -LilyPond does not display notes directly, nor will it be rehacked to be -used interactively. LilyPond writes output to a file. It will not be +GNU LilyPond does not display notes directly, nor will it be rehacked to be +used interactively. GNU LilyPond writes output to a file. It will not be extended to play music, or to recognize music. =item * -LilyPond is intended to run on Unix platforms, but it should +GNU LilyPond is intended to run on Unix platforms, but it should be portable to any platform which can run TeX and the GNU tools =item * -LilyPond is free. Commercial windows packages for setting music are +GNU LilyPond is free. Commercial windows packages for setting music are abundant. Free musicprinting software is scarce. =item * -LilyPond is written in GNU C++. It will not be downgraded/ported to fit +GNU LilyPond is written in GNU C++. It will not be downgraded/ported to fit broken systems. =back @@ -167,10 +167,10 @@ broken systems. =head1 DISCLAIMER & COPYING POLICY -LilyPond is copyright 1996,97 by its authors. LilyPond is +GNU LilyPond is copyright 1996,97 by its authors. GNU LilyPond is distributed under the terms of the GNU General Public -License. LilyPond is provided without any warranty what so ever. -LilyPond may be freely distributed. For further information consult +License. GNU LilyPond is provided without any warranty what so ever. +GNU LilyPond may be freely distributed. For further information consult the GNU General Public License, which is in the file F =head1 AUTHORS @@ -179,13 +179,16 @@ the GNU General Public License, which is in the file F =item * -Han-Wen Nienhuys , Main author +Han-Wen Nienhuys , http://www.stack.nl/~hanwen + +Main author =item * -Jan Nieuwenhuizen , Context errors, Lyrics, -mi2mu, MIDI stuff, make structure, bits of FlowerLib, general -comments, Mudela design. +Jan Nieuwenhuizen , http://www.digicash.com/~jan. + +Context errors, Lyrics, mi2mu, MIDI stuff, make structure, bits of +FlowerLib, general comments, Mudela design. =item * @@ -199,7 +202,7 @@ coding C++ =head1 EXAMPLES -At this time, LilyPond output looks nice, but is not of production +At this time, GNU LilyPond output looks nice, but is not of production quality. If you're not discouraged; this is what I type in my xterm: lilypond someinput.ly @@ -208,7 +211,7 @@ quality. If you're not discouraged; this is what I type in my xterm: This is what the output looks like over here: - LilyPond 0.0.40 #0/FlowerLib 1.1.7 #2. Compile: Mar 11 1997, 22:58:47 (g++ 2.7.2) + GNU LilyPond 0.0.40 #0/FlowerLib 1.1.7 #2. Compile: Mar 11 1997, 22:58:47 (g++ 2.7.2) Parsing ... [./init//symbol.ini[./init//dynamic.ini][./init//dutch.ini] [./init//script.ini][./init//table_sixteen.ini]][./input/wohltemperirt.ly] Setting up music ...Processing music ............ @@ -234,7 +237,7 @@ Check out the input files, some of them have comments =head1 PROBLEMS -If LilyPond bombs out, then please recompile using with debugging info +If GNU LilyPond bombs out, then please recompile using with debugging info turned on, and send a copy of the input which causes the error and a gdb stacktrace of the crash. It also helps if you can print the values of the objects. So if your trace is @@ -248,12 +251,12 @@ of the objects. So if your trace is : Than it would help if you send a dump of the Interval and the Item -(use: C or use LilyPond C methods). +(use: C or use GNU LilyPond C methods). -This is a beta version of LilyPond. Please send your helpful comments +This is a beta version of GNU LilyPond. Please send your helpful comments and patches to me (see AUTHORS section) -LilyPond is updated very frequently, the latest version is always available at: +GNU LilyPond is updated very frequently, the latest version is always available at: ftp://pcnov095.win.tue.nl/pub/lilypond. @@ -282,14 +285,14 @@ http://www.stack.nl/~hanwen/lilypond/index.html =head1 REMARKS -LilyPond has no connection with the music package RoseGarden, other +GNU LilyPond has no connection with the music package Rosegarden, other than the names being similar :-) =head1 HISTORY (for a detailed changelog, see F) -LilyPond's roots lie in MPP, a preprocessor to the rather arcane +GNU LilyPond's roots lie in MPP, a preprocessor to the rather arcane MusiXTeX macro package for TeX. A friend of mine, Jan Nieuwenhuizen wrote the first 44 versions (0.01 to 0.44), then his program caught my attention, and I was slowly sucked in to the interesting problem of diff --git a/Documentation/mudela.pod b/Documentation/mudela.pod index 159a4050dc..4ee456d040 100644 --- a/Documentation/mudela.pod +++ b/Documentation/mudela.pod @@ -187,18 +187,18 @@ At the start of parsing, Mudela assumes normal mode. In Normal mode, a word is looked up in the following order: word identifier, string - \word keyword, string + \word keyword, identifier, string In normalmode, a word is assumed to start with an alphabetic character, followed by alpha-numeric characters. =item Note mode -Note mode (and thus Simple mudela) is introduced by the keyword C<\music>. +Note mode (and thus Simple mudela) is introduced by the keyword C<\melodic>. In Note mode, a word is looked up in the following order: - word identifier, string - \word keyword, string + word notename, string + \word keyword, identifier, string In Note mode a word is considered to have alphabetic characters only. @@ -209,7 +209,7 @@ Lyrics mode (and thus Simple mudela) is introduced by the keyword C<\lyrics>. In Lyrics mode, a word is looked up in the following order: word string - \word keyword, string + \word keyword, identifier, string In Lyric mode every sequence of non-digit and non-white characters starting with an alphabetic character is considered a word. @@ -222,8 +222,8 @@ starting with an alphabetic character is considered a word. =back These modes are of a lexical nature. Normal and Note mode largely -resemble each other, save the possibility of entering Reals, and -meaning of C<_> +resemble each other, save the possibility of entering Reals, +meaning of C<_> and the resolution of words =head2 Notes @@ -232,9 +232,8 @@ enter. a'4 % dutch names -is a A-1 pitched quaver. The ' as well as the ' signify an octave change. -A-1 is 440 Hz concert-pitch. C is also known as the central -c. More examples: +is a A-1 pitched quaver. The ' signifies an octave change. A-1 is 440 +Hz concert-pitch. C is also known as the central c. More examples: 'a % 110 a % 220 @@ -249,7 +248,10 @@ This is an A flat, (just below 110 Hz concert-pitch). The C<*2/3> signifies that this note is part of a triplet (3 in stead of 2). The duration is one and a half quaver (C<4.>) times 2/3. -The default language for notenames is defined to be dutch, + +Notenames are just a special kind of identifiers, and can be declared +for any language appropriate (see F). The default language +for notenames is defined to be dutch, % double sharp cisis disis eisis fisis gisis aisis bisis @@ -305,6 +307,7 @@ Symbols which can be put at either side of a staff are entered as follows: a^- % portato, direction: above note a_. % staccato, direction: below note a^\script { "symbolindex" . . . } % see script.ini for details. + a^\fermata % predefined identifier Dynamics can be put after the notename: @@ -320,14 +323,17 @@ and the following abbreviations: \> % start decrescendo \! % end crescendo/decrescendo -=head2 General +=head2 Text + +To accompany a note with a text (eg, "marcato"), you should say: + + c_"marcato" + c^"marcato" + c-"marcato" -The general form of a note is: +the c- construct chooses the default up/down direction. - post-requests de-octavate notename octavate duration pre-requests -Notenames are just identifiers, and can be declared for any -language appropriate (see F). @@ -401,7 +407,7 @@ notes with < and >. Example: You can also put vertical music inside horizontal music: - { c < c e > } % 4 increasing chords + { c } % 4 increasing chords And vice versa diff --git a/INSTALL.text b/INSTALL.text index 7c2df20b4e..7d6f7d5427 100644 --- a/INSTALL.text +++ b/INSTALL.text @@ -61,7 +61,7 @@ CCCCOOOONNNNFFFFIIIIGGGGUUUURRRRIIIINNNNGGGG a -3/Apr/97 LilyPond 0.0.48 1 +3/Apr/97 LilyPond 0.0.50 1 @@ -127,7 +127,7 @@ RRRRUUUUNNNNNNNNIIIINNNNGGGG -3/Apr/97 LilyPond 0.0.48 2 +3/Apr/97 LilyPond 0.0.50 2 @@ -193,6 +193,6 @@ AAAAUUUUTTTTHHHHOOOORRRRSSSS -3/Apr/97 LilyPond 0.0.48 3 +3/Apr/97 LilyPond 0.0.50 3 diff --git a/NEWS b/NEWS index 7176a07fcb..237aac8d2f 100644 --- a/NEWS +++ b/NEWS @@ -1,14 +1,35 @@ -pl 48.hwn1 +pl 50 + - merge rest / notehead. + - Staff_side as a base class for most "staff-side" symbols. + - version check + - Note_column_register, Note_column + - multiple scripts +******** +april 8 +pl 49.jcn1 +Bugfix + - configure[.in], make/Configure_variables.make.in c++ (=doze fix) + - "configure; make" ok for doze, win32 target may be removed now + - win32/gcc 2.7.2 compile fixes -- why does this all compile + (without warnings, why can-t i even trigger warnings) under + linux/gcc-2.7.2.1? it's quite a tedious job fixing this + shit _on doze_ all the time. + * fixed #includes global-regs.cc, staff-info.cc, staff.cc + * key.hh:Key() -> Octave_key() + * added missing lily/include/input.hh: Input( Input const& ) + +pl 49 - lsm template - clef in cadenza mode. - notename clear - \command bla; for \meter, \clef, \octave etc. - +******* pl 48 - notenames init - Duration order -> grouping - broken key s - default octave + ****** april 3 pl 47 diff --git a/TODO b/TODO index 2d56c054f3..1ba47b577a 100644 --- a/TODO +++ b/TODO @@ -24,11 +24,13 @@ BUGS * help-lines + * help-lines for rests + * [c8. c32 c32] * cis ( | ) cis - * lilypond - -> + * lilypond - -> crash SEVERELY LACKING: @@ -44,6 +46,8 @@ FURTHER FOR ORCHESTRAL SCORE: INPUTLANGUAGE + * relative mode for pitch entering + * configure pitch_byte * special key. @@ -69,7 +73,9 @@ SMALLISH PROJECTS * rpm package buildroot - * indentable stream for TeX stream, lily stream, Dstream. + * indentable stream as baseclass for TeX stream, lily stream, Dstream. + + * caching Item/spanner dimensions. * key transposition @@ -105,7 +111,9 @@ SMALLISH PROJECTS * Decent TeX titledefs (\tempo, \metron, etc. ) * command priority into enum - + + * don't broadcast Staff_sym + * C meter iso 4/4 * textspanner: center position @@ -139,6 +147,10 @@ DOC FUTURE + * Reg_configure_request + + * slurs per voicegroup. + * slur parts as a script * multiple scripst. @@ -179,9 +191,9 @@ IDEAS * move MIDI io to a ANSI C libmidi library. - * itemcolumns: Use dummy items. - * use an embedded language: scheme, lisp, S-lang, Perl, GUILE, ? + - Items/Spanners + - Registers * y -dims in internote? @@ -200,7 +212,7 @@ IDEAS we get different keychanges in different staffs. * Integrating (objectiveC) MusicKit with LilyPond - + * MusixTeX output possible? * PostScript output (esp. Beams, Slurs, etc) @@ -208,3 +220,7 @@ IDEAS * caching breakpoints * use exceptions iso assert? + + * #c <-> cis + + * breath marks diff --git a/bin/Makefile b/bin/Makefile index 7284a0b5ff..bf5b107ce9 100644 --- a/bin/Makefile +++ b/bin/Makefile @@ -3,16 +3,11 @@ # subdir level: # depth = .. -# - -include ./$(depth)/make/Include.make -# generic stuff/Makefile -# -# - +include $(depth)/make/Include.make # list of distribution files: -# -SCRIPTS = clearlily cpgento genheader make_patch make_version make_website release + +SCRIPTS = clearlily cpgento genheader make_patch \ + make_version make_website release convert-mudela EXTRA_DISTFILES = $(SCRIPTS) # diff --git a/bin/convert-mudela b/bin/convert-mudela new file mode 100644 index 0000000000..d64a7d75ac --- /dev/null +++ b/bin/convert-mudela @@ -0,0 +1,3 @@ +#!/usr/bin/perl -w + +print "todo\n!"; diff --git a/flower/TODO b/flower/TODO index 3e10b2b3af..b810fabd7a 100644 --- a/flower/TODO +++ b/flower/TODO @@ -1,6 +1,8 @@ * fix/junk ambiguous String constructor overloads, e.g.: String( int ) and String( char ) + * version numbering for shared lib. + * LGPL? * disable this auto conv: const pointer -> bool -> string @@ -13,7 +15,7 @@ * extend Interval - * use template handle in handle.hh for strings. + * use template handle in handle.hh for strings? * move towards gnu or STL? diff --git a/init/register.ini b/init/register.ini index b8447d2dc4..e5822087ba 100644 --- a/init/register.ini +++ b/init/register.ini @@ -14,6 +14,7 @@ melodicregs = \inputregister { \inputregister { Stem_beam_register } \inputregister { Text_register } \inputregister { Script_register } + \inputregister { Note_column_register } \inputregister { Voice_registers \inputregister { Notehead_register } \inputregister { Slur_register } diff --git a/init/script.ini b/init/script.ini index f800923fdc..665d8aa4e6 100644 --- a/init/script.ini +++ b/init/script.ini @@ -3,13 +3,13 @@ % indexstring same_dir_as_stem above_below_staff symbol_can_beinverted } % -accent = \script { "sforzato" -1 0 0 } -marcato = \script { "marcato" -1 0 1 } -staccatissimo = \script { "staccatissimo" -1 0 1 } -portato= \script { "portato" -1 0 1 } -fermata = \script { "fermata" 1 0 1 } -stopped = \script { "stopped" 0 1 0 } -staccato = \script { "staccato" -1 0 0 } -tenuto = \script {"tenuto" -1 0 0 } -upbow = \script { "upbow" 0 1 0 } -downbow = \script { "downbow" 0 1 0 } +accent = \script { "sforzato" 0 -1 0 0 } +marcato = \script { "marcato" 0 -1 0 1 } +staccatissimo = \script { "staccatissimo" 0 -1 0 1 } +portato= \script { "portato" 0 -1 0 1 } +fermata = \script { "fermata" 0 1 0 1 } +stopped = \script { "stopped" 0 0 1 0 } +staccato = \script { "staccato" 1 -1 0 0 } +tenuto = \script {"tenuto" 0 -1 0 0 } +upbow = \script { "upbow" 0 0 1 0 } +downbow = \script { "downbow" 0 0 1 0 } diff --git a/input/error.ly b/input/error.ly index d63164147e..3c7967eef5 100644 --- a/input/error.ly +++ b/input/error.ly @@ -2,7 +2,7 @@ include "this-is-hopefully-a-nonexisting-file" mwa = \melodic{ - \meter{3/4} + \meter 3/4; [ a8 a8 a8 a8 a8 ] % [ a8 ] % % segfault diff --git a/input/kortjakje.ly b/input/kortjakje.ly index 47624c4936..f0aaaf9aa3 100644 --- a/input/kortjakje.ly +++ b/input/kortjakje.ly @@ -9,11 +9,11 @@ % % declare melody (which will be in *one* staff ) for the lead voice -melodie = \melodic +melodie = \melodic { % switch Lilypond in note-mode - \clef\violin - \meter{ 2/4 ; - \octave c ; % set the default octave + \clef\violin; + \meter 2/4 ; + \octave c'; % set the default octave % the default note duratino is 4 %%% theme c c | % the '|' checks if there is a new measure here. @@ -33,10 +33,10 @@ melodie = \melodic } % more of this. -begeleiding = \melodic - \clef "bass" - \meter{ 2/4 ; - \octave c ; % default octave: 1 below the first octave. +begeleiding = \melodic{ + \clef "bass"; + \meter 2/4 ; + \octave c'; % default octave: 1 below the first octave. %%% theme 'c % ' before note means one octave lower. diff --git a/input/midi.ly b/input/midi.ly deleted file mode 100644 index 8207361f55..0000000000 --- a/input/midi.ly +++ /dev/null @@ -1,28 +0,0 @@ -% midi.ly -% test source for lilypond-s midi output - -melodie = \melodic{ - \clef\violin - \meter{ 2/4 } - c c | g g | a a | g2 - f f | e e | d d8.( e16 | )c2 | % :| - -} - -begeleiding = \melodic{ - \clef\bass - \meter{ 2/4 } - \octave{'c} - c c' | e' c' | f' c' | e' c' - d' b | c' a | f g | c2 | - -} - -\score{ - \staff{ melodie } - \staff{ begeleiding } - \midi{ - \tempo 4:120 - } -} - diff --git a/input/plet.ly b/input/plet.ly index 255ee658a1..8cdf05f297 100644 --- a/input/plet.ly +++ b/input/plet.ly @@ -1,9 +1,10 @@ +% urgh -melanie = \melodic{ - \meter{2/4} - \duration{8} - [ c d ] { [ d d' } { c c' ] } | - [ c d ] [ e { d g } c ]2/3 | +melanie = \melodic{ + \meter 2/4; + \duration 8; + [ c d ] < [ d d'>< c c' ] > | + [ c d ] [ e c ]2/3 | [ c d ] [ c16 d16 e'16 e'16 d16 c16 ]4/6 | [ c d e e d c ]4/6 | [c d ] < { [ c d e ]2/3 } { [ f g a ]2/3 } > | @@ -11,9 +12,9 @@ melanie = \melodic{ } -michelle = \melodic{ - \meter{2/4} - \duration{8} +michelle = \melodic{ + \meter 2/4; + \duration 8; [ c c c c ] | [ c c c c ] | [ c c c c ] | @@ -22,9 +23,9 @@ michelle = \melodic{ [ c c c c ] | } -mireille = \lyric{ - \meter{2/4} - \duration{8} +mireille = \lyric{ + \meter 2/4; + \duration 8; o o o o | o o [ o o o ]2/3 | [ o o o ]2/3 [ o16 o16 o16 o16 o16 o16 ]4/6 | @@ -34,8 +35,8 @@ mireille = \lyric{ } \score{ - \staff{ mireille } - \staff{ melanie } - \staff{ michelle } + \staff{ melodicregs mireille } + \staff{ melodicregs melanie } + \staff{ melodicregs michelle } \paper{} } diff --git a/input/rhythm.ly b/input/rhythm.ly index 5739294fbf..c76a1ee0cd 100644 --- a/input/rhythm.ly +++ b/input/rhythm.ly @@ -5,23 +5,23 @@ ritme = \staff { melodicregs - \melodic{ %\octave {c} - \partial {8} - \meter{ 4/4} + \melodic{ %\octave ; + \partial 8; + \meter 4/4; c8 | [a8() a8. a8 a16 a16 a16] c4. | % watch the beams! r32 r32 r16 r8 r4 r2 | - \meter{ 5/16} + \meter 5/16; % divide measure in 5 equal parts. Usually it 2+3 or 3+2 - \grouping { 5*16 } + \grouping 16*5 ; [c8 c16 c8 ] | % watch THIS! [c16 c16 c16 c16]5/4 | - \meter{ 2/8} + \meter 2/8; c4 | c4 c4 c4 c4 - \meter {4/4} + \meter 4/4; c1 c1 c1 % [c16 c16 c16 c16 ] | @@ -31,14 +31,16 @@ ritme = \staff { } } -another = \staff{ melodicregs - \melodic{ \meter{ 4/4} - c1 c1 c1 c4 c4 c4 c4 \meter{ 4/4} c1 c1 c1 +another = \staff { + melodicregs + \melodic{ \meter 4/4; + c1 c1 c1 c4 c4 c4 c4 \meter 4/4; c1 c1 c1 } } -yanother = \staff{ melodicregs - \melodic{ \meter{ 4/4} +yanother = \staff { + melodicregs + \melodic{ \meter 4/4; c1 c1 c1 c4 c4 c4 c4 c1 c1 c1 } } diff --git a/input/scales.ly b/input/scales.ly index 2b6aa54c29..727b458d5a 100644 --- a/input/scales.ly +++ b/input/scales.ly @@ -47,10 +47,10 @@ c1 \octave c; [c'-^ b-^ a-^ g-^][f-^ e-^ d-^ c-^] [c-. d-. e-. f-.][g-. a-. b-. c'-.] [c'-- b-- a-- g][f-- e-- d c--] % 5 - [c-portato d-portato e-portato f-portato] - [g-portato a-portato b-portato c'-portato] - [c'-upbow b-upbow a-downbow g-downbow] - [f-downbow e-downbow d-upbow c-upbow] + [c-\portato d-\portato e-\portato f-\portato] + [g-\portato a-\portato b-\portato c'-\portato] + [c'-\upbow b-\upbow a-\downbow g-\downbow] + [f-\downbow e-\downbow d-\upbow c-\upbow] [c-| d-| e-| f-|][g-| a-| b-| c'-|] [c' b a g][f e d c] [c d e f][g a b c'] % 10 diff --git a/input/scsii-menuetto.ly b/input/scsii-menuetto.ly index a2cd758618..12183e79e7 100644 --- a/input/scsii-menuetto.ly +++ b/input/scsii-menuetto.ly @@ -11,7 +11,7 @@ % The purpose of this file is to demonstrate features of LilyPond. % (there is an accompanying LaTeX file, scsii-menuetto.tex) % - +\version "0.0.50"; %% Stuff from MPP version % \lefttitle{Menuetto} % \tempo{Moderato} @@ -45,10 +45,10 @@ ii_menuetto = \melodic{ c'!4-. | %%7 < a4-. f4> - < d'4-.-upbow f4 'bes4 > - < e'4-.-downbow g4 'g4 > | + < d'4-.-\upbow f4 'bes4 > + < e'4-.-\downbow g4 'g4 > | %%8 - < cis'2.-upbow e2. 'a2. > + < cis'2.-\upbow e2. 'a2. > \bar ":|:"; %%9 \clef "violin"; @@ -69,9 +69,9 @@ ii_menuetto = \melodic{ { \stem -1; g4(\stem -1;) f4 e4 }% ugh > | %%14 - < [ a f > g a f ] < d'4-$upbow e4 'bes4 > | + < [ a f > g a f ] < d'4-\upbow e4 'bes4 > | %%15 - < c'4-$downbow f4 'a4 > [ bes( )a g a ] | + < c'4-\downbow f4 'a4 > [ bes( )a g a ] | %%16 [ f( e )f a-. g-. bes-. ] | %%17 @@ -79,7 +79,7 @@ ii_menuetto = \melodic{ %%18 < { [ c'( )bes c' a ] } { [ es ] } > fis4 | %%19 - < d'4-downbow g4 'bes4 > < c'4-upbow g4 c4 > < [ bes d > a ] | + < d'4-\downbow g4 'bes4 > < c'4-\upbow g4 c4 > < [ bes d > a ] | %%20 < { [ c'( bes a )bes g( )bes ] } { [ d ] } { [ g ] } > | %%21 @@ -96,7 +96,7 @@ ii_menuetto = \melodic{ } \score{ - \staff{ melodicregs $ii_menuetto } + \staff{ melodicregs ii_menuetto } \paper{ \width 195\mm \unitspace 9\mm % to get lily to use only three lines diff --git a/input/standchen.ly b/input/standchen.ly index 847a3c323c..4514ff8788 100644 --- a/input/standchen.ly +++ b/input/standchen.ly @@ -108,7 +108,6 @@ melodie = \melodic{ %%36 < a2. fis2. > | %#%\volta2 -%#%:| %%37 [ a8. a16 ] [ cis'8. cis'16 ] [ e'8. e'16 ] | %%38 @@ -181,7 +180,6 @@ begeleiding = \melodic{ %%4 ''a r4 | -%#%:| %%5 \duration 8 ; < \multivoice { \stem 1 ; [ 'f 'a d 'a d 'a ] } @@ -265,7 +263,6 @@ begeleiding = \melodic{ %%36 [ 'd 'fis 'a 'fis 'a 'fis ] | %#%\volta2 -%#%:| %%37 [ ''a 'e 'g 'e ''bes^> 'e ] | %%38 diff --git a/input/wohltemperirt.ly b/input/wohltemperirt.ly index b023a4000c..5bff42ebc0 100644 --- a/input/wohltemperirt.ly +++ b/input/wohltemperirt.ly @@ -4,6 +4,8 @@ % % Public Domain -- typed by by HWN % +\version "0.0.50"; + global = \melodic{ \meter 4/4 ; \grouping 2*2; diff --git a/lib/include/input.hh b/lib/include/input.hh index 180baf170b..f87385c428 100644 --- a/lib/include/input.hh +++ b/lib/include/input.hh @@ -26,6 +26,7 @@ public: String location_str()const; Input(Source_file*, char const*); Input(); + Input( Input const& ); }; #endif // INPUT_HH diff --git a/lily/.version b/lily/.version index a3bb0ea650..93a395e794 100644 --- a/lily/.version +++ b/lily/.version @@ -1,6 +1,6 @@ MAJOR_VERSION = 0 MINOR_VERSION = 0 -PATCH_LEVEL = 48 +PATCH_LEVEL = 49 # use to send patches, always empty for released version: # include separator: ".postfix", "-pl" makes rpm barf diff --git a/lily/beam.cc b/lily/beam.cc index a20e859e23..389226fa71 100644 --- a/lily/beam.cc +++ b/lily/beam.cc @@ -30,7 +30,7 @@ struct Stem_info { Stem_info::Stem_info(Stem const *s) { x = s->hindex(); - int dir = s->dir; + int dir = s->dir_i_; idealy = max(dir*s->top, dir*s->bot); miny = max(dir*s->minnote, dir*s-> maxnote); assert(miny <= idealy); @@ -74,7 +74,7 @@ Beam::set_default_dir() } dir_i_ = (dirs[0] > dirs[1]) ? -1 : 1; for (iter_top(stems,i); i.ok(); i++) { - i->dir = dir_i_; + i->dir_i_ = dir_i_; } } @@ -190,7 +190,7 @@ Beam::do_pre_processing() Interval -Beam::width() const +Beam::do_width() const { Beam * me = (Beam*) this; // ugh return Interval( (*me->stems.top()) ->hindex(), diff --git a/lily/clef-reg.cc b/lily/clef-reg.cc index fc1aef825b..f5687a1665 100644 --- a/lily/clef-reg.cc +++ b/lily/clef-reg.cc @@ -50,7 +50,7 @@ Clef_register::read_req(Clef_change_req*c_l) void Clef_register::acknowledge_element(Staff_elem_info info) { - if (info.elem_p_->name() == Bar::static_name()) { + if (info.elem_l_->name() == Bar::static_name()) { if (!clef_p_){ create_clef(); clef_p_->change = false; diff --git a/lily/crescendo.cc b/lily/crescendo.cc index e8a36e29a8..4583bdae2f 100644 --- a/lily/crescendo.cc +++ b/lily/crescendo.cc @@ -10,9 +10,10 @@ #include "lookup.hh" #include "paper-def.hh" #include "debug.hh" -Crescendo::Crescendo(int s) + +Crescendo::Crescendo() + : Staff_side(this) { - staff_size_i_ = s; grow_dir_i_ =0; dir_i_ = -1 ; left_dyn_b_ = right_dyn_b_ =false; @@ -47,9 +48,7 @@ Crescendo::brew_molecule_p() const return m_p ; } Symbol s( paper()->lookup_l()->hairpin(w_dim, grow_dir_i_ < 0) ); m_p->add(Atom(s)); - int pos = (dir_i_ >0) ? staff_size_i_ + 4 : - 4 ; - if(dir_i_<0 ) // should do something better anyway. - m_p->translate(Offset(0, -m_p->extent().y.left )); + int pos = get_position_i(); m_p->translate(Offset(x_off_dim,pos * paper()->internote())); } diff --git a/lily/dynamic-reg.cc b/lily/dynamic-reg.cc index e0e38a7a59..4088a3be70 100644 --- a/lily/dynamic-reg.cc +++ b/lily/dynamic-reg.cc @@ -13,6 +13,7 @@ #include "lookup.hh" #include "paper-def.hh" #include "score-column.hh" +#include "staff-sym.hh" Dynamic_register::Dynamic_register() { @@ -55,7 +56,7 @@ Dynamic_register::process_requests() assert (!dynamic_p_) ; // TODO - dynamic_p_ = new Text_item(td_p, 10 ); // TODO! + dynamic_p_ = new Text_item(td_p); announce_element(Staff_elem_info(dynamic_p_, dreq_l)); } else if (dreq_l->span_dynamic()) { @@ -71,7 +72,7 @@ Dynamic_register::process_requests() } else if (span_l->spantype == Span_req::START) { cresc_req_l_ = span_l; assert(!new_cresc_p); - new_cresc_p = new Crescendo(10); + new_cresc_p = new Crescendo; new_cresc_p->grow_dir_i_ = span_l->dynamic_dir_i_; announce_element(Staff_elem_info(new_cresc_p, span_l)); } @@ -90,7 +91,9 @@ Dynamic_register::process_requests() void Dynamic_register::pre_move_processing() { + Staff_symbol* s_l = get_staff_info().staff_sym_l_; if (dynamic_p_) { + dynamic_p_->set_staffsym(s_l); typeset_element(dynamic_p_); dynamic_p_ = 0; } @@ -99,7 +102,7 @@ Dynamic_register::pre_move_processing() to_end_cresc_p_->right_dyn_b_=true; to_end_cresc_p_->right_col_l_ = get_staff_info().musical_l()->pcol_l_; - + to_end_cresc_p_->set_staffsym(s_l); typeset_element(to_end_cresc_p_); to_end_cresc_p_ = 0; } diff --git a/lily/global-regs.cc b/lily/global-regs.cc index 207cc16c55..3451ca5270 100644 --- a/lily/global-regs.cc +++ b/lily/global-regs.cc @@ -6,6 +6,8 @@ (c) 1997 Han-Wen Nienhuys */ +#include "proto.hh" +#include "plist.hh" #include "input-register.hh" #include "debug.hh" #include "register.hh" diff --git a/lily/headreg.cc b/lily/headreg.cc index 318ed3a607..2d551cdd2c 100644 --- a/lily/headreg.cc +++ b/lily/headreg.cc @@ -3,9 +3,9 @@ (c) 1997 Han-Wen Nienhuys */ -#include "rest.hh" + #include "notehead.hh" -#include "headreg.hh" +#include "head-reg.hh" #include "paper-def.hh" #include "complex-walker.hh" #include "musical-request.hh" @@ -40,20 +40,21 @@ Notehead_register::process_requests() if (!note_req_l_) return; + Notehead*n_p = new Notehead(8); // ugh + note_p_ = n_p; + n_p->set_rhythmic(note_req_l_->rhythmic()); if (note_req_l_->note()) { - Notehead*n_p = new Notehead(8); // ugh - note_p_ = n_p; - n_p->set_rhythmic(note_req_l_->rhythmic()); n_p->position = note_req_l_->note()->height() + *get_staff_info().c0_position_i_l_; - } else { - note_p_ = new Rest ( note_req_l_->rhythmic()->duration_); + } else if (note_req_l_->rest()) { + n_p->rest_b_ = true; if (note_req_l_->rhythmic()->duration_.type_i_ <= 2) note_p_->translate( Offset(0, 6 * paper()->internote())); } + Staff_elem_info itinf(note_p_,note_req_l_); announce_element(itinf); } @@ -62,8 +63,9 @@ void Notehead_register::pre_move_processing() { if (note_p_) { - if (dir_i_ && note_p_->name() == Rest::static_name()) - note_p_->translate(Offset(0, 4*dir_i_ * paper()->internote())); + if (dir_i_ && note_p_->rest_b_ && note_p_->balltype <= 2) { + note_p_->position +=4*dir_i_ ; + } typeset_element(note_p_); note_p_ = 0; } diff --git a/lily/include/beam.hh b/lily/include/beam.hh index 8eb2f148b5..a85858bad8 100644 --- a/lily/include/beam.hh +++ b/lily/include/beam.hh @@ -25,7 +25,7 @@ struct Beam: public Directional_spanner { /* *************** */ NAME_MEMBERS(Beam); - virtual Interval width()const; + virtual Interval do_width()const; Offset center() const; Spanner *do_break_at(PCol *, PCol *) const; Beam(); diff --git a/lily/include/crescendo.hh b/lily/include/crescendo.hh index cb6b159ad7..915094e1dc 100644 --- a/lily/include/crescendo.hh +++ b/lily/include/crescendo.hh @@ -10,21 +10,22 @@ #ifndef CRESCENDO_HH #define CRESCENDO_HH +#include "staff-side.hh" #include "spanner.hh" /** The hairpin symbol. (cresc) */ -class Crescendo : public Spanner { - int staff_size_i_; +class Crescendo : public Spanner , public Staff_side { + public: int grow_dir_i_; - int dir_i_; - /// if there is a dynamic at the end, make the sign smaller. + +/// if there is a dynamic at the end, make the sign smaller. bool right_dyn_b_; /// if there is a dynamic at the end, make the sign smaller. bool left_dyn_b_; - Crescendo(int staff_size_i); + Crescendo(); private: Spanner* do_break_at( PCol*, PCol*) const; Molecule*brew_molecule_p()const; diff --git a/lily/include/dynamic-reg.hh b/lily/include/dynamic-reg.hh index 164ac6af3d..8b39f4fe11 100644 --- a/lily/include/dynamic-reg.hh +++ b/lily/include/dynamic-reg.hh @@ -12,7 +12,7 @@ #include "register.hh" -struct Dynamic_register : Request_register { +class Dynamic_register : public Request_register { int dir_i_; Text_item * dynamic_p_; Crescendo * to_end_cresc_p_; @@ -20,15 +20,17 @@ struct Dynamic_register : Request_register { Span_dynamic_req * cresc_req_l_; Array dynamic_req_l_arr_; /* ************** */ +public: Dynamic_register(); ~Dynamic_register(); + NAME_MEMBERS(Dynamic_register); +protected: virtual bool try_request(Request *req_l); virtual void process_requests(); virtual void pre_move_processing(); virtual void post_move_processing(); virtual bool acceptable_request_b(Request*) const; virtual void set_feature(Features); - NAME_MEMBERS(Dynamic_register); }; #endif // DYNAMIC_REG_HH diff --git a/lily/include/head-reg.hh b/lily/include/head-reg.hh index d5eb6fa5cd..188db10a26 100644 --- a/lily/include/head-reg.hh +++ b/lily/include/head-reg.hh @@ -10,14 +10,18 @@ #include "register.hh" struct Notehead_register : Request_register { - Item* note_p_; + Notehead* note_p_; + Rhythmic_req * note_req_l_; int dir_i_; + /* *************** */ - Notehead_register(Complex_walker*); + Notehead_register(); virtual bool try_request(Request *req_l) ; - virtual void process_request(); - virtual void do_pre_move_process(); - void set_dir(int); + virtual void process_requests(); + virtual void pre_move_processing(); + virtual void post_move_processing(); + void set_feature(Features); + NAME_MEMBERS(Notehead_register); }; diff --git a/lily/include/headreg.hh b/lily/include/headreg.hh deleted file mode 100644 index eaa2d6f9d7..0000000000 --- a/lily/include/headreg.hh +++ /dev/null @@ -1,28 +0,0 @@ -/* - headreg.hh -- part of LilyPond - - (c) 1997 Han-Wen Nienhuys -*/ - - -#ifndef HEADREG_HH -#define HEADREG_HH -#include "register.hh" - -struct Notehead_register : Request_register { - Item* note_p_; - Rhythmic_req * note_req_l_; - int dir_i_; - - /* *************** */ - Notehead_register(); - virtual bool try_request(Request *req_l) ; - virtual void process_requests(); - virtual void pre_move_processing(); - virtual void post_move_processing(); - void set_feature(Features); - NAME_MEMBERS(Notehead_register); -}; - - -#endif // HEADREG_HH diff --git a/lily/include/item.hh b/lily/include/item.hh index d1fc8c8bfa..3a1efa36c7 100644 --- a/lily/include/item.hh +++ b/lily/include/item.hh @@ -16,7 +16,8 @@ spacing calculation. */ -struct Item : Staff_elem { +class Item : public Staff_elem { +public: /// indirection to the column it is in PCol * pcol_l_; diff --git a/lily/include/key.hh b/lily/include/key.hh index cbffa1e8f7..38885f4a18 100644 --- a/lily/include/key.hh +++ b/lily/include/key.hh @@ -16,7 +16,7 @@ class Octave_key { public: Array accidental_i_arr_; - Key(); + Octave_key(); void set(int i, int acc); int acc(int i)const { return accidental_i_arr_[i]; } }; diff --git a/lily/include/lily-proto.hh b/lily/include/lily-proto.hh index ff9e0fea4f..abe556db86 100644 --- a/lily/include/lily-proto.hh +++ b/lily/include/lily-proto.hh @@ -52,5 +52,9 @@ struct Stem_req; struct Terminate_voice_req; struct Text_req; struct Timing_req; +struct Note_column_register; +struct Note_column; +struct Staff_side; +struct Staff_symbol; #endif // LILY_PROTO_HH diff --git a/lily/include/my-lily-parser.hh b/lily/include/my-lily-parser.hh index 1da7940b69..cd27e9b574 100644 --- a/lily/include/my-lily-parser.hh +++ b/lily/include/my-lily-parser.hh @@ -62,10 +62,12 @@ public: void set_debug(); void set_yydebug(bool); void print_declarations(); + bool ignore_version_b_; public: void parse_file ( String init_str, String file_str); My_lily_parser(Sources * sources_l); ~My_lily_parser(); + void set_version_check(bool ignore); }; #endif // MY_LILY_PARSER_HH diff --git a/lily/include/note-column-reg.hh b/lily/include/note-column-reg.hh new file mode 100644 index 0000000000..01a860911d --- /dev/null +++ b/lily/include/note-column-reg.hh @@ -0,0 +1,27 @@ +/* + note-column-reg.hh -- declare Note_column_register + + source file of the LilyPond music typesetter + + (c) 1997 Han-Wen Nienhuys +*/ + + +#ifndef NOTE_COLUMN_REG_HH +#define NOTE_COLUMN_REG_HH + +#include "register.hh" + +class Note_column_register :public Request_register { + Note_column *ncol_p_; + /* *************** */ + bool acceptable_elem_b(Staff_elem const*)const; +protected: + virtual void acknowledge_element(Staff_elem_info); + virtual void pre_move_processing(); + +public: + Note_column_register(); + NAME_MEMBERS(Note_column_register); +}; +#endif // NOTE_COLUMN_REG_HH diff --git a/lily/include/note-column.hh b/lily/include/note-column.hh new file mode 100644 index 0000000000..b5d71798b3 --- /dev/null +++ b/lily/include/note-column.hh @@ -0,0 +1,37 @@ +/* + note-column.hh -- declare Note_column + + source file of the LilyPond music typesetter + + (c) 1997 Han-Wen Nienhuys +*/ + + +#ifndef NOTE_COLUMN_HH +#define NOTE_COLUMN_HH +#include "item.hh" + +/** + a struct for treating a group of noteheads (noteheads, stem, scripts ) + as a single entity. + */ +class Note_column : public Item { + Stem * stem_l_; + Array head_l_arr_; + Array