]> git.donarmstrong.com Git - lilypond.git/commitdiff
release: 0.0.58 release/0.0.58
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Fri, 2 May 1997 13:17:09 +0000 (15:17 +0200)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Fri, 2 May 1997 13:17:09 +0000 (15:17 +0200)
51 files changed:
.dstreamrc
.version
AUTHORS.text
Documentation/INSTALL.pod
Documentation/faq.pod
Documentation/mudela.pod
INSTALL.text
NEWS
TODO
bin/convert-mudela
init/Makefile
init/dutch.ini
init/script.ini
init/symbol.ini
init/table_sixteen.ini
input/cadenza.ly
input/collisions.ly
input/coriolan-alto.ly
input/error.ly
input/header.ly
input/kortjakje.ly
input/pedal.ly [new file with mode: 0644]
input/rhythm.ly
input/scales.ly
input/scsii-menuetto.ly
input/standchen.ly
input/toccata-fuga-E.ly [new file with mode: 0644]
input/twinkle.ly
input/wohltemperirt.ly
lib/duration.cc
lily/.version
lily/calcideal.cc
lily/collision.cc
lily/lexer.l
lily/note.cc
lily/parser.y
lily/script-column.cc
lily/staff-walker.cc
lily/stem-beam-reg.cc
lily/stem.cc
lily/time-description.cc
make/lilypond.lsm
make/lilypond.spec
mi2mu/.version
mi2mu/include/midi-track.hh
mi2mu/lily-stream.cc
mi2mu/main.cc
mi2mu/midi-score.cc
mi2mu/midi-track.cc
tex/lilyponddefs.tex
tex/titledefs.tex

index 7fd7b97e0a5054e9ab96769883fd89e9d72860ad..16073701045417e98ef7d415aaa1339a6b8b62da 100644 (file)
@@ -18,8 +18,8 @@ Parser                        1
 InitDeclarations       1
 Declarations           1
 # FlexLexer debug
-InitLexer              1
-Lexer                  1
+InitLexer              0
+Lexer                  0
 
 parse_duration         1
 parse_pitchmod         1
index e4f7f875dd23118de6a966cd44f04bacd368e583..0ca2b3e656f8f335debf48cba97cd343cea4c53c 100644 (file)
--- a/.version
+++ b/.version
@@ -1,6 +1,6 @@
 TOPLEVEL_MAJOR_VERSION = 0
 TOPLEVEL_MINOR_VERSION = 0
-TOPLEVEL_PATCH_LEVEL = 57
+TOPLEVEL_PATCH_LEVEL = 58
 # use to send patches, always empty for released version:
 # include separator: ".postfix", "-pl" makes rpm barf
 
index a817d8cc870d370b5844bb1e8f8315d01f43483b..4658153098f86208f7871fd7c77f30e9a6dfc9c2 100644 (file)
@@ -61,6 +61,6 @@ D\bD\bD\bDE\bE\bE\bES\bS\bS\bSC\bC\bC\bCR\bR\bR\bRI\bI\bI\bIP\bP\bP\bPT\bT\bT\bTI\bI\bI\bIO\bO\bO\bON\bN\bN\bN
 
 
 
-18/Apr/97                LilyPond 0.0.57                        1
+19/Apr/97                LilyPond 0.0.57                        1
 
 
index fd039729c8083f888a14f55c1f3542f223930265..556f8690f8c406cec0924c0b490cc943b6812d3a 100644 (file)
@@ -74,12 +74,15 @@ to install GNU LilyPond, simply type:
 
 This will install the following files:
 
+       /usr/local/man/man1/mi2mu.1
+       /usr/local/man/man5/mudela.5
        /usr/local/man/man1/lilypond.1
        /usr/local/lib/libflower.{so,a}
        /usr/local/bin/lilypond
        /usr/local/bin/mi2mu
        /usr/local/share/lilypond/*
        /usr/lib/texmf/texmf/tex/lilypond/* 
+       /usr/lib/texmf/texmf/fonts/source/lilypond/* 
 
 The TeX include directory is detected dynamically, but it can be
 adjusted with B<--enable-tex-prefix> and B<--enable-tex-dir>. The
@@ -119,7 +122,7 @@ Make a shared library (linux, solaris (?) only )
 
 =item  --enable-printing
 
-Enable debugging print routines (B<-d> option)
+Enable debugging print routines (lilypond B<-d> option)
 
 =item  --enable-optimise
 
@@ -133,14 +136,13 @@ Compile with support for profiling
 
 Set the directory where texmf lives
 
-
 =item --enable-tex-dir
 
-Set then directory tex input is in
+Set then directory tex input is in (detected as a subdir of tex-prefix)
 
 =item --enable-mf-dir
 
-Set then directory tex input is in
+Set then directory tex input is in (idem)
 
 =back
 
index 3b33cf79b52b21b2cca8d3512dca54b927a30de4..e2e9b6381832f5d39faed13f61df3a211a47aa40 100644 (file)
@@ -61,6 +61,16 @@ formatting:
          { c () g }
        >
 
+Q: and where do the beams come into this picture?
+
+A: Beams are voicegroup-wide, and may be entered in any part of the
+voicegroup:
+
+       < { [a () e] } { c () g } >
+       < { [a () e } { c () g] } >
+       < { [a () e] } { [c () g] } >
+
+These all give the same result.
 
 Q: Why are [] around the notes, and () inbetween?
 
@@ -77,6 +87,15 @@ quoting of music ("Stichnoten"). Besides if you are going to type an
 orchestral score, then you'd probably want to enter most of the meter,
 repeat commands only once.
 
+Q: I want to insert some TeX commands
+
+A: You shouldn't: it's against LilyPond philosophy to have typesetting
+commands in the mudela source. Moreover, this would be difficult. The
+manner in which Request (the basic building blocks of mudela) are
+translated into printable items is complex: it is not always possible
+to associate one Request with one Item or Spanner.
+
+
 =head2 Miscellaneous
 
 Q: Why GPL?
index 1cebe35be6cba5a42672331b5cef59a72419d9e0..c46ccc58c0e1fa57f111667359f280cc33770cb5 100644 (file)
@@ -36,7 +36,8 @@ entering C<include> at the start of a line:
 
 =head2 Comments
 
-Line comments are introduced by a C<%>.
+Line comments are introduced by a C<%>. Block comments are delimited
+by C<%{> and C<%}>. They do not nest.
 
 =head2 Versions
 
@@ -48,7 +49,7 @@ inputfile was written,
        \version "0.0.50";
 
 A perl-script which tries to convert to newer versions
-(F<convert-mudela.pod>) is included in the LilyPond distribution.
+(F<convert-mudela>) is included in the LilyPond distribution.
 
 =head2 Words
 
@@ -144,12 +145,12 @@ In Lyrics mode, a word is looked up in the following order:
        \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.
+starting with an alphabetic character or the '_'is considered a word.
 
        a&@&@&TSI|{[    % a word
        1THtrhortho     % not a "word"
        Leise Fl\"u\ss{}teren meine Sapfe       % 4 words
-
+       _ _ _ _         % 4 words: 4 spaces
 
 =back
 
@@ -231,9 +232,12 @@ example:
 
        [c8 () d8 () e8 ]
 
-Please note that these two characters do I<not> necessarrily nest, eg:
+Please note that these two characters do I<not> necessarrily nest,
+they should attached to the note C<[ {c4 c4} ]> will generate a parse
+error for this reason. 
 
-       [c8 e8(] [)g8 c'8]
+       [c8 e8(] [)g8 <c'8] e'8>
+                               % NO nesting!
        [c8 c8 c8]2/3           % a triplet
 
 Symbols which can be put at either side (above or below) of a staff
@@ -384,6 +388,75 @@ You can transpose horizontal music in the following way:
 
 The result is, as you can see, again simple horizontal music.
 
+
+=head2 Voicegroups
+
+If more than one "voice" is in a staff, then you have the option of
+putting the different voices into so called voicegroups: members of
+the same voicegroup share certain characteristics, among others:
+
+       - dynamics
+       - text
+       - beams and stems
+       - scripts
+
+For the actual list, see the init file F<register.ini>
+
+Putting different musical lines in to the same voicegroup effectively
+makes LilyPond try to form chords of all those lines. Putting
+different musical lines in to different voicegroups effectively makes
+LilyPond try to set those lines as independently as possible. 
+
+You can set the voicegroup of a voice with the command C<\group>, e.g.,
+       
+       oboeI = \melodic { 
+               \group "oboes"; 
+               [e8 f8
+               \group "+solo";
+               [g16 a16 g16 fis16]
+               \group "-";
+               g8 f8
+       }
+       oboeII = \melodic { \group "oboes";
+               c8 d8]
+               e4
+               e8 d8
+       }
+       ///     ...
+
+       \staff { 
+               melodicregs \melodic{ oboeI }
+               \melodic { oboeII}
+       }
+
+In this example, the two oboe voices share one staff and are initially
+in the voicegroup called "oboes". They will share beams, dynamics etc.
+After two quavers, oboeI "pushes" its group: a new voicegroup is
+created, called "oboes+solo". The C<\group "-"> command makes the
+voice enter "oboes" again.
+
+Please do note that [] are voicegroup wide; the previous input is
+valid: the beam, started in oboeI, voicegroup "oboes" is also ended in
+voicegroup "oboes", albeit not in oboeI but oboeII
+
+This concept may seem contorted, but it allows you to set the separate
+oboe parts without changing the C<oboeI> and C<oboeII> (assuming that
+you edit the [] in the example.)
+
+The construct
+
+       < { .... } {......} >
+
+makes a chord (all horizontal parts are in the same voicegroup). The construct
+
+       < \multivoice { ....} { .... } >
+
+creates horizontal parts which behave independently. You will have to
+set voicegroup features by hand (\stem and \hshift. See examples)
+
+
+
+
 =head2 Rhythms
 
 Rhythms in Mudela are entered identical to Simple mudela.
index 2e2e52266ca76ebb4a1b125e3f9586181727a12d..20bcd2e7210c4e9401e7126d25d7438c49aa4bc0 100644 (file)
@@ -61,7 +61,7 @@ C\bC\bC\bCO\bO\bO\bON\bN\bN\bNF\bF\bF\bFI\bI\bI\bIG\bG\bG\bGU\bU\bU\bUR\bR\bR\bRI\bI\bI\bIN\bN\bN\bNG\bG\bG\bG a\b
 
 
 
-28/Apr/97                LilyPond 0.0.57                        1
+2/May/97                 LilyPond 0.0.58                        1
 
 
 
@@ -70,12 +70,15 @@ C\bC\bC\bCO\bO\bO\bON\bN\bN\bNF\bF\bF\bFI\bI\bI\bIG\bG\bG\bGU\bU\bU\bUR\bR\bR\bRI\bI\bI\bIN\bN\bN\bNG\bG\bG\bG a\b
 INSTALL(1)            LilyPond documentation           INSTALL(1)
 
 
+               /usr/local/man/man1/mi2mu.1
+               /usr/local/man/man5/mudela.5
                /usr/local/man/man1/lilypond.1
                /usr/local/lib/libflower.{so,a}
                /usr/local/bin/lilypond
                /usr/local/bin/mi2mu
                /usr/local/share/lilypond/*
                /usr/lib/texmf/texmf/tex/lilypond/*
+               /usr/lib/texmf/texmf/fonts/source/lilypond/*
 
        The TeX include directory is detected dynamically, but it
        can be adjusted with -\b-\b-\b--\b-\b-\b-e\be\be\ben\bn\bn\bna\ba\ba\bab\bb\bb\bbl\bl\bl\ble\be\be\be-\b-\b-\b-t\bt\bt\bte\be\be\bex\bx\bx\bx-\b-\b-\b-p\bp\bp\bpr\br\br\bre\be\be\bef\bf\bf\bfi\bi\bi\bix\bx\bx\bx and -\b-\b-\b--\b-\b-\b-e\be\be\ben\bn\bn\bna\ba\ba\bab\bb\bb\bbl\bl\bl\ble\be\be\be-\b-\b-\b-t\bt\bt\bte\be\be\bex\bx\bx\bx-\b-\b-\b-
@@ -116,18 +119,15 @@ INSTALL(1)            LilyPond documentation           INSTALL(1)
            Make a shared library (linux, solaris (?) only )
 
        --enable-printing
-           Enable debugging print routines (-\b-\b-\b-d\bd\bd\bd option)
+           Enable debugging print routines (lilypond -\b-\b-\b-d\bd\bd\bd option)
 
        --enable-optimise
            Set maximum optimisation
 
-       --enable-profiling
-           Compile with support for profiling
 
 
 
-
-28/Apr/97                LilyPond 0.0.57                        2
+2/May/97                 LilyPond 0.0.58                        2
 
 
 
@@ -136,14 +136,18 @@ INSTALL(1)            LilyPond documentation           INSTALL(1)
 INSTALL(1)            LilyPond documentation           INSTALL(1)
 
 
+       --enable-profiling
+           Compile with support for profiling
+
        --enable-tex-prefix
            Set the directory where texmf lives
 
        --enable-tex-dir
-           Set then directory tex input is in
+           Set then directory tex input is in (detected as a
+           subdir of tex-prefix)
 
        --enable-mf-dir
-           Set then directory tex input is in
+           Set then directory tex input is in (idem)
 
        All options are documented in the _\bc_\bo_\bn_\bf_\bi_\bg_\bu_\br_\be help The
        option -\b-\b-\b--\b-\b-\b-e\be\be\ben\bn\bn\bna\ba\ba\bab\bb\bb\bbl\bl\bl\ble\be\be\be-\b-\b-\b-o\bo\bo\bop\bp\bp\bpt\bt\bt\bti\bi\bi\bim\bm\bm\bmi\bi\bi\bis\bs\bs\bse\be\be\be is recommended for Real Life
@@ -187,13 +191,9 @@ R\bR\bR\bRU\bU\bU\bUN\bN\bN\bNN\bN\bN\bNI\bI\bI\bIN\bN\bN\bNG\bG\bG\bG
        GNU LilyPond does use a lot of resources. For operation
        you need the following:
 
-       +\bo    A fast computer (a full page of music typically takes
-            1 minute on my 486/66, using the -\b-\b-\b--\b-\b-\b-e\be\be\ben\bn\bn\bna\ba\ba\bab\bb\bb\bbl\bl\bl\ble\be\be\be-\b-\b-\b-c\bc\bc\bch\bh\bh\bhe\be\be\bec\bc\bc\bck\bk\bk\bki\bi\bi\bin\bn\bn\bng\bg\bg\bg
-            compile. It's lot slower than most MusiXTeX
-
 
 
-28/Apr/97                LilyPond 0.0.57                        3
+2/May/97                 LilyPond 0.0.58                        3
 
 
 
@@ -202,6 +202,9 @@ R\bR\bR\bRU\bU\bU\bUN\bN\bN\bNN\bN\bN\bNI\bI\bI\bIN\bN\bN\bNG\bG\bG\bG
 INSTALL(1)            LilyPond documentation           INSTALL(1)
 
 
+       +\bo    A fast computer (a full page of music typically takes
+            1 minute on my 486/66, using the -\b-\b-\b--\b-\b-\b-e\be\be\ben\bn\bn\bna\ba\ba\bab\bb\bb\bbl\bl\bl\ble\be\be\be-\b-\b-\b-c\bc\bc\bch\bh\bh\bhe\be\be\bec\bc\bc\bck\bk\bk\bki\bi\bi\bin\bn\bn\bng\bg\bg\bg
+            compile. It's lot slower than most MusiXTeX
             preprocessors)
 
        +\bo    TeX
@@ -256,9 +259,6 @@ A\bA\bA\bAU\bU\bU\bUT\bT\bT\bTH\bH\bH\bHO\bO\bO\bOR\bR\bR\bRS\bS\bS\bS
 
 
 
-
-
-
-28/Apr/97                LilyPond 0.0.57                        4
+2/May/97                 LilyPond 0.0.58                        4
 
 
diff --git a/NEWS b/NEWS
index 7db4f88634fdf2f1096be847d1ddca3c3c1d289b..9bbb2e1f442e1aebb60b424cce5560cd43b6a59a 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,9 +1,37 @@
+pl 58
+       - lexer cleanup
+       - national chars in lyrics
+       - \stem 2; bf
+       - long comments: %{ %} 
+       - *.ini mode bf
+       - bf: partial may be everywhere
+       - bf: meterchange not at start of measure
+       - some doc updates
+       - bf: stem too long if stem is down.
+
+pl 57.jcn3
+       - dank je schat, voor wtk-i
+       - mi2mu tries to handle rests
+        - "!date" Thu May  1 02:34:04 MET DST 1997
+       - maak je het niet te laat schat?
+         XXXX HWN
+
+pl 57.jcn2
+       - small toccata-fuga-E.ly fixes
+       - \bar "||"; is now doublebar, "|." is finishbar
+       - collision hshift fix, with on-line assistance
+
 pl 57
        - lots of TODO doco
        - text alignment bugfix
        - bugfix Voice_group_regs::get_register_p() now is actually called too
        - bugfix init  of Text_item::pos_i_
 
+pl 56.jnc1
+       - toccata-fuga-in-E.ly, excerpts with real-life collisions
+       - \{l,r}{b,f}{toe,heel} --- using cmsy fonts...
+       - pedal.ly 
+
 pl 55.jcn1
        - mi2mu man page
        - make doc fixlet
diff --git a/TODO b/TODO
index cb39f70019dcbc626b8a02f7bc013397dd08ba5d..839412f6ede8edb06d479c6d7d36d1043bf148ab 100644 (file)
--- a/TODO
+++ b/TODO
@@ -28,6 +28,98 @@ grep for TODO and ugh/ugr
 PARSER
        * Duration-> Musical_duration, typedef Rational Duration?
 
+HKN buglist:
+
+exitcode? (altijd 0)
+
+\bar || ook dunne streepjes? Sluit de balk niet af! (soms met de
+ruimte van een hele maat erachter (bij unmatching staffs)
+
+logfile?
+
+Gepunteerde rusten kloppen niet (punt eronder/boven ipv ernaast)
+
+Hele rusten ook in andere maatsoort dan 4/4 (en centreren in de maat)
+
+
+
+------------------------\
+barcheck failed in lyric mode -> assert (zie barcheck.ly) (0.0.57)
+------------------------/
+
+optie om te stoppen na eerste barcheck fail? (en wellicht in eerder
+stadium van precessing)
+
+noten staan vaak te dicht aan de rechterkant van de maatstreep.
+
+optie om nummers/markers boven maatstrepen te zetten
+
+tekst staat erg ver van notenbalken af
+
+barcheck her-synchroniseren? (evt met optie)
+
+script ^"3" onder ondanks boven?
+
+symbolen voor triller? (dus "tr---")
+
+mogelijkheid om complete regions te commenten (met /* */ ofzo)
+
+waarom geen ; achter dingen in \paper? (\textwidth 180\mm)
+(sowieso: wanneer wel en geen ; ?)
+
+Onduidelijk wanneer wel en geen \ voor een woord. Maak liever
+verplichte regels
+
+implementeren versieringen door duration *0 ofzo? (geeft nu assertion,
+zie duration0.ly)
+
+midi: instrumenten definieren?
+midi: tempo halverwege het stuk wijzigen?
+midi: gebonden noten niet herhalen?
+
+TeX literals invoegen?
+
+--------/\
+Dit geeft gigantische trubbels
+        < [d8.( e'32*2/3 d'32*2/3 cis'32*2/3 b16 d'16 cis'16 )b'16]
+          [b8.  cis'32*2/3 b32*2/3 a32*2/3     gis16 fis16 e16 d16] >
+(zie file junkjunk.ly) Ik had natuurlijk wat accolades moeten
+plaatsen, maar ja...
+
+--------/\
+Inconsequent: ene keer wel, andere keer niet parse error?
+ipt.ini][/usr/local/share/lilypond/init//table_sixteen.ini]]./lacidarem.ly: 56: 
+error: parse error:
+        <[d8. b8.> \duration 32; <e'*
+                                     2/3 cis'*2/3> <d'*2/3 b*2/3>
+./lacidarem.ly: 56: error: parse error:
+        <[d8. b8.> \duration 32; <e'*2/3 cis'*2/3> <d'*
+                                                       2/3 b*2/3>
+./lacidarem.ly: 57: error: parse error:
+        <cis'*
+              2/3 a*2/3> \duration 16; <b gis> <d' fis> <cis' e> <b' d]> |
+]./lacidarem.ly: 65: warning: Score contains errors. Will not process it. :
+--------/\
+De beam van de triool klopt niet.
+        <[d8. b8.> \duration 32; <e'32*2/3 cis'32*2/3> <d'32*2/3 b32*2/3>
+        <cis'32*2/3 a32*2/3> \duration 16; <b gis> <d' fis> <cis' e>
+<b d]> |
+(zie ook ergens in lacidarem-pianoI.ly)
+--------/
+scales.ly compileert niet meer (vanwege transpose?)
+
+Lengte van de stokken klopt vaak niet, zie bijv. de eerste maat van
+langestok.ly.
+
+Triolen enzo: het zou handig zijn als je het cijfer "3" ook _tussen_
+twee noten kon plaatsen. Dat is bijvoorbeeld nodig in
+c4*2/3 c8*2/3
+
+---------------\
+\bar "||" \meter 6/8; op het eind van de regel staat door elkaar
+gedrukt.
+
+
 BUGS
 
        * detect -pipe
@@ -49,7 +141,7 @@ BUGS
 
        * chlapik balk ruimte 
 
-       * standchen triool beam up/down
+               * standchen triool beam up/down
 
 
 SEVERELY LACKING:
@@ -214,6 +306,9 @@ FUTURE
 
 IDEAS
 
+       * output an intermediate format, move backend/output routines into 
+       interpreter
+
        * scoping in Lexer: do general id- assignments in mudela.
 
        ID '=' EXPR;
@@ -251,6 +346,11 @@ IDEAS
 
        * PostScript output (esp. Beams, Slurs, etc)
 
+       * poor man's ascii output possible?
+
+       * Output an output format independent (ofi) typeset file; and 
+         make ofi2 TeX, MusixTex, PostScript, Ascii... interpreters.
+
        * caching breakpoints
 
        * use exceptions iso assert?
@@ -267,3 +367,21 @@ IDEAS
            (junking test.tex and latex.test)
          - rename {standchen,scsii-menuetto,...}.tex
 
+       * (related with above) --simple-mudela option for lily,
+         to lily input files with one-voice simple mudela 
+         (no red tape)
+
+       * stack scripts in chords:
+         % fingering:        footing:
+           < a-4 c-2 g-1 >   < c-\ltoe e-\lheel >
+
+       * parameterised scripts for fingering and footing:
+
+            % toe to bheel   four to five
+           %   ^_u            4_5  
+           %     -                           
+           %  --|x--         --|x--
+           %  --|---         --|---
+           %  --|---         --|---
+          (where "to" is a tiny bow)
+
index d879a5c1b00ef843c78a3a8081bdf9440ea4662d..dbb0f729a46716641e3406169471bd6ecc084358 100755 (executable)
@@ -29,11 +29,23 @@ sub convert_0_0_52_to_0_0_53
 }
 
   
+sub convert_0_0_54_to_0_0_55
+{
+    s/%{/% {/g;
+}
+
+  
 sub convert_0_0_53_to_0_0_54
 {
     print STDERR "Not smart enough to convert \\transpose\n"    if (/\\transpose/) ;
 }
 
+# we-re not at 58 yet, but this is at least one of the rules
+sub convert_0_0_55_to_0_0_56
+{
+    s/\"\|\|\"/\"|.\"/g;
+}
+
 ###############################################################
 
 sub    last_conversion
@@ -66,7 +78,9 @@ sub identify
 my %minor_conversions = (50 => \&no_conv,
                         52 => \&convert_0_0_50_to_0_0_52,
                         53 => \&convert_0_0_52_to_0_0_53,
-                        54 => \&convert_0_0_53_to_0_0_54
+                        54 => \&convert_0_0_53_to_0_0_54,
+                        55 => \&convert_0_0_54_to_0_0_55,
+                        56 => \&convert_0_0_55_to_0_0_56
                         );
  
 
index c8fee3cd506866aee7334af8d18ceb858059e6e9..ddf1ae7e0293a37b61c3125c5fe64b99d4441c03 100644 (file)
@@ -21,7 +21,7 @@ DISTFILES = Makefile $(INIFILES)
 
 localinstall:
        $(INSTALL) -d $(datadir)/lilypond/init
-       $(INSTALL) -m 755 $(INIFILES) $(datadir)/lilypond/init
+       $(INSTALL) -m 644 $(INIFILES) $(datadir)/lilypond/init
 
 localuninstall:
        for i in $(INIFILES) ; do rm -f $(datadir)/lilypond/init/$$i; done
index 79087224c5f3f3f62a03f42250f463f4b008ac2c..b3d80dc62da047dc3752eb993bd8fa81c1b976d6 100644 (file)
@@ -1,13 +1,15 @@
-%
-% common dutch names for notes. "es" means flat, "is" means sharp
-%
+%{
+ common dutch names for notes. "es" means flat, "is" means sharp
 
 
-%
-% Please note that, while these names are used to enter *notes*, they
-% actually are *melodic*s, i.e. they represent a pitch solely. Notes
-% have a rhythmic part too. This is the reason that we don't write 'note { .. }'
-%
+
+
+ Please note that, while these names are used to enter *notes*, they
+ actually are *melodic*s, i.e. they represent a pitch solely. Notes
+ have a rhythmic part too. This is the reason that we don't write 'note { .. }'
+
+%}
+
 \notenames {
        ceses   = \melodic_request { -1 0 -2 }
        ces     = \melodic_request { -1 0 -1 }
index f979ee4fcded5de70eacbc7be913d31dc82a02ae..eb4633b7d1f347f98f5ea257731b14b25547d5f0 100644 (file)
@@ -13,9 +13,32 @@ 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 }
-% toe = \script { "toe" 0 -1 0 0 }
-% heel = \script { "heel" 0 -1 0 0 }
 lheel = \script { "heel" 0 0 -1  0 }
 rheel = \script { "heel" 0 0 1 0 }
 ltoe = \script { "toe" 0 0 -1 0 }
 rtoe = \script { "toe" 0 0 1 0 }
+lbheel = \script { "bheel" 0 0 -1  0 }
+rbheel = \script { "bheel" 0 0 1 0 }
+lbtoe = \script { "btoe" 0 0 -1 0 }
+rbtoe = \script { "btoe" 0 0 1 0 }
+lfheel = \script { "fheel" 0 0 -1  0 }
+rfheel = \script { "fheel" 0 0 1 0 }
+lftoe = \script { "ftoe" 0 0 -1 0 }
+rftoe = \script { "ftoe" 0 0 1 0 }
+%
+% left toe:      right heel:
+%
+%                    u     -
+%                    -     u
+%  ---|-----|--   --|x----|x--
+%  ---|-----|--   --|-----|---
+%  --x|----x|--   --|-----|---
+%    ^     -                   
+%    -     ^                   
+%  back  front     back  front
+%
+% 
+% heu, me thought for a moment that order in table_xxx.ini was
+% being translated into priority...
+back = \script { "back" 0 -1 -1  0 }
+front = \script { "front" 0 -1 1 0 }
index 91aad8cee5c55fa6f7173ef10616ce61345a65b4..715ee9db7f0a72a3a4c2a9a770debcdc92ac3c6f 100644 (file)
@@ -1,4 +1,4 @@
-\version "0.0.54";
+\version "0.0.56";
 
 \include "register.ini"
 \include "dynamic.ini"
index 69167a77f1fa0cf5308cd66b1cddfe6ada35919c..b93ddb7b318d94de22fc2d85ad692328d65d41e4 100644 (file)
@@ -11,23 +11,33 @@ table_sixteen=
    % index TeXstring,  xmin xmax ymin ymax
 
     "scripts" = \table {
-           "fermata" "\fermata"                0\pt  0\pt      0\pt 6\pt
-           "-fermata" "\ifermata"              0\pt  0\pt      -6\pt 0\pt
+           "fermata" "\fermata"                0\pt 0\pt       0\pt 6\pt
+           "-fermata" "\ifermata"              0\pt 0\pt       -6\pt 0\pt
            "portato" "\portato"
            "-portato" "\iportato"
            "tenuto" "\tenuto"  
            "-tenuto" "\itenuto"
            "sforzato" "\sforzato"              -0.8\pt 4.8\pt  -1.92\pt 1.92\pt
-           "marcato" "\marcato"                0\pt  4.8\pt    0\pt 4\pt
-           "-marcato" "\imarcato"              0\pt  4.8\pt    -4\pt 0\pt
-           "staccato" "\staccato"              0\pt  0\pt       0\pt 5\pt
-           "staccatissimo" "\staccatissimo"    0\pt 0\pt               0\pt 7.5\pt
+           "marcato" "\marcato"                0\pt 4.8\pt     0\pt 4\pt
+           "-marcato" "\imarcato"              0\pt 4.8\pt     -4\pt 0\pt
+           "staccato" "\staccato"              0\pt 0\pt        0\pt 5\pt
+           "staccatissimo" "\staccatissimo"    0\pt 0\pt       0\pt 7.5\pt
            "-staccatissimo" "\istaccatissimo"  0\pt 0\pt       -7.5\pt 0\pt
            "upbow" "\upbow"                    -1\pt 6\pt      0\pt 5\pt
-           "downbow" "\downbow"                0\pt 5\pt               0\pt 7.5\pt
-           "heel" "\heel"              -1\pt 6\pt              -5\pt 17.5\pt
-           "toe" "\toe"                0\pt 5\pt               -5\pt 17.5\pt
-    }
+           "downbow" "\downbow"                0\pt 5\pt       0\pt 7.5\pt
+           "back" "\backorfront"               0\pt 6\pt       0\pt 3\pt
+           "-front" "\backorfront"             -3\pt 5\pt      0\pt 3\pt
+% oeps, segfault
+%          "heel" "\heel"                      0\pt 6\pt       -.5\pt 2\pt
+           "heel" "\heel"                      0\pt 6\pt       -1\pt 5\pt
+           "toe" "\toe"                        0\pt 6\pt       -1\pt 5\pt
+           "bheel" "\bheel"                    0\pt 6\pt       -1\pt 5\pt
+           "btoe" "\btoe"                      0\pt 6\pt       -1\pt 5\pt
+           "fheel" "\fheel"                    0\pt 6\pt       -1\pt 5\pt
+           "ftoe" "\ftoe"                      0\pt 6\pt       -1\pt 5\pt
+           "-back" "\backorfront"              0\pt 6\pt       0\pt 3\pt
+           "front" "\backorfront"              0\pt 6\pt       0\pt 3\pt
+       }
 
      "style" = \table {
                "roman" "\settext{%}" 0\pt 5\pt 0\pt 8\pt
@@ -89,7 +99,8 @@ table_sixteen=
      "bars" = \table {
        "empty" "\emptybar"
        "|"     "\maatstreep"           0\pt    0.4\pt  -8\pt   8\pt
-       "||"    "\finishbar"            0\pt    2\pt    -8\pt   8\pt
+       "||"    "\doublebar"            0\pt    4\pt    -8\pt   8\pt
+       "|."    "\finishbar"            -4\pt   0\pt    -8\pt   8\pt
        ":|"    "\repeatbar"            -4\pt   0\pt    -8\pt   8\pt
        "|:"    "\startrepeat"          0\pt    4\pt    -8\pt   8\pt
        ":|:"   "\repeatbarstartrepeat" 0\pt    16\pt   -8\pt   8\pt
index 52b306746e7435eb0fc3fd20907e17f5b01da96a..98e1f4ad4868e39b0dc7743dd87793b0df969dac 100644 (file)
@@ -7,7 +7,7 @@
 % Tested Features: cadenza mode
 
 
-\version "0.0.54";
+\version "0.0.56";
 
 
 cad = \melodic  {
index 333fd67e40231df60ae1ba3f3e854dd7a2c3011b..a202789ca4c1c134e254ac097e82e4129aab70de 100644 (file)
@@ -1,5 +1,5 @@
 % test the Collision resolution 
-\version "0.0.54";
+\version "0.0.56";
 
 two_voice_steminvert = \melodic { 
        < \multivoice 
index 8e5d3b568e982b07b3719d06871eb2f0a7c7368a..1fb5e8b0e3edc316c0926618a20ca01255f028f0 100644 (file)
@@ -10,7 +10,7 @@
 % when lily can handle this, i-ll type the other 304 bars 
 % (maybe even sooner :-)
 %
-\version "0.0.54";
+\version "0.0.56";
 
 alto = \melodic{ 
        
index 9eeada0ea951d6265e30a108f1c5e68ae468433a..4e05238f4c3e22ca92465a66f1bfbbda7fc0268e 100644 (file)
@@ -1,4 +1,4 @@
-\version "0.0.54";
+\version "0.0.56";
 
 \include "this-is-hopefully-a-nonexisting-file"
 
@@ -15,7 +15,7 @@ mwa = \melodic{
        a b ) ]         % ok; error
 %        a.........    % fatal error -- assert
        a b c
-       |||             % 
+       |.|             % 
        abc             % ok; print error, no \output
        \bla            %  STRING, reduced to lyric_elt.
        a [ b           % warning, still \output
index 24104197fd94a0066fe655a171e9e785d1268dd3..aa80f614bd13632213cf155707b0c9978b7c9a50 100644 (file)
@@ -8,4 +8,4 @@
 % Tested Features:
 %%End
 
-\version "0.0.54";
+\version "0.0.56";
index ff94f492904b51710ccbd884de81353b38ce83eb..6765c8f7f0bfb8aaea2ffc45b0ca80dd0752d2b8 100644 (file)
@@ -7,7 +7,7 @@
 %
 % copyright: None
 %
-\version "0.0.54";
+\version "0.0.56";
 
 % declare melody (which will be in *one* staff ) for the lead voice
 melodie = \melodic {
diff --git a/input/pedal.ly b/input/pedal.ly
new file mode 100644 (file)
index 0000000..abebc0f
--- /dev/null
@@ -0,0 +1,51 @@
+% pedal.ly
+% 
+% Johann Sebastian Bach
+% preludium en fuga in D
+% bwv 532
+%
+% fuga --- two bar excerpt of pedal part
+%
+% example for pedal studies
+
+% ugh, front and back priority are the same...
+% one must use (ugh):
+%     left front:
+%         -\front-\l{toe,heel}
+%     left back:
+%         -\l{toe,heel}-\back
+%     rigth front:
+%         -\r{toe,heel}-\front
+%     right back:
+%         -\back-\r{toe,heel}
+
+% therefore: 
+% \lheel \ltoe \rheel \rtoe
+% \lbheel \lbheel \lfheel \lftoe
+% \rbheel \rbtoe \rfheel \rftoe
+
+\version "0.0.56";
+
+\score{
+       \staff{ melodicregs
+               \melodic {
+                       \meter 4/4;
+                       \key fis cis;
+                       \clef bass;
+                       \octave c;
+                       % silly chord testing...
+% these should be stacked...
+%                      < 'c-\ltoe 'e-\lheel > < c'-\rtoe e'-\rheel>
+%                      < 'c-\lheel 'e-\ltoe > < c'-\rheel e'-\rtoe> |
+                       < 'c-\ltoe-\lheel 'e > < c'-\rtoe-\rheel e' >
+                       < 'c-\lheel-\ltoe 'e > < c'-\rheel-\rtoe e' > |
+                       % 46
+                       \duration 16; 
+                       [d-\lfheel e-\rbtoe fis-\ltoe e-\rbtoe]
+                       [d-\lfheel e-\rbtoe fis-\lheel e] [d e fis e] [d e fis e] |
+                       d4 r4 r4 [b-\rtoe a-\ltoe b-\rtoe fis-\ltoe] |
+               }
+       }
+       \paper{}
+}
+
index c76a1ee0cd303cf3f24bf77b4d14e0d1b2defd5b..2447023f81166195e5bce1bba9a09d2b522603d2 100644 (file)
@@ -3,6 +3,8 @@
 %
 % add any impressive examples here, please
 
+\version "0.0.56";
+
 ritme = \staff {
        melodicregs
        \melodic{ %\octave ;
index 54cb531859a807ebef8b42fe6725c4133748af65..f819c2402655a3753b0c8026ffaac1c446e7b1e1 100644 (file)
@@ -2,6 +2,7 @@
 % scales with accents.
 %
 
+\version "0.0.56";
 blah = \staff{  melodicregs
        \melodic {
                \meter 6/8;     
index b665c77a7cc9fad78614381f105c88b5baf57d42..3f8f11436cbc3b545c08c7df30e9536b36506f1e 100644 (file)
@@ -1,7 +1,8 @@
 % scsii-menuetto.ly
 %
 % Solo Cello Suites
-% J. S. Bach
+% Johann Sebastian Bach (1685-1750)
+% bwv 000
 %
 % Suite II part v
 % Menuetto I
@@ -11,7 +12,7 @@
 % The purpose of this file is to demonstrate features of LilyPond.
 % (there is an accompanying LaTeX file, scsii-menuetto.tex)
 %
-\version "0.0.54";
+\version "0.0.56";
 %% Stuff from MPP version
 % \lefttitle{Menuetto}
 % \tempo{Moderato}
index 7d9d9c7378343c23e2148d828cd72bb4f22630ff..91b21fb94b4fac08ec2ce98f0b6a13c8607e157a 100644 (file)
@@ -9,7 +9,7 @@
 % The purpose of this file is to demonstrate features of LilyPond.
 % (there is an accompanying LaTeX file, standchen.tex)
 %
-\version "0.0.54";
+\version "0.0.56";
 
 commands = \melodic{
        \skip 2.*4;
@@ -20,7 +20,7 @@ commands = \melodic{
 %      volta2
        \bar ":|";
        \skip 2.*22;
-       \bar "||"; 
+       \bar "|."; 
        }
 
 melodie = \melodic{ 
diff --git a/input/toccata-fuga-E.ly b/input/toccata-fuga-E.ly
new file mode 100644 (file)
index 0000000..0220b0f
--- /dev/null
@@ -0,0 +1,151 @@
+% toccata-fuga-E.ly
+% 
+% toccata and fuga in E-major
+% Johann Sebastian Bach (1685-1750)
+% bwv 566
+%
+% toccata: 3 bar excerpt
+% 2nd fuga: transposed subject --- 4 bar except
+%
+% purpose of this file is testing: 
+%     * real-life collisions
+%     * multi-voice input --- splitting?
+%     * organ staff...
+%
+
+\version "0.0.56";
+
+toccata_commands = \melodic{
+       \meter 4/4;
+       \key fis cis gis dis; % E-major
+}
+
+%toccata_right = \melodic \$toccata_commands { 
+toccata_right = \melodic{ 
+       \$toccata_commands ++
+       % 13 -- how to type -- where to split -- this more neatly ?
+       \octave c';
+       <\multivoice 
+               { \stem 1; \hshift 1; r4 dis'4 e'4.-. e'8( | )e'4 [d'8 fis'8] gis'4 [gis'8 fis'16 e'16] | fis'4( )[fis'8 e'16 dis'16] e'4 r8 e'8 }
+               { \stem 1; r4 bis4 cis'4-. cis'4 | ais'4( )[ais'16 gis'16 ais'16 b'16] dis'4 cis'4( | )[cis'8 dis'16 ais16] bis4 cis'4 r8 b8 }
+               { \stem -1; r4 < gis4 fis4 dis4 > gis4-. gis4 | ais4. cis'8 gis2 | fis4 gis4 gis4 r8 e8 }
+       > |
+       % 16
+}
+
+toccata_left = \melodic{ 
+       \$toccata_commands ++
+       \octave c;
+       \clef bass;
+       % 13
+       <\multivoice
+               { \stem 1; bis2 cis'4-. cis'4( | )[cis'8 ais'8 d'8 cis'8] [bis8 gis8] cis'4 | dis'2 cis'4 r8 cis'8 }
+               { \stem 1; \hshift 1; r4 gis4. gis8( )gis4 | \stem -1; \hshift 0; ais4. fis8 gis4. ais8( | )ais4 gis4-. gis4 r8 gis8 }
+               { \stem -1; r4 < dis4 fis4 > < cis4 e4 > }
+       > |
+       % 16
+}
+
+toccata_pedal = \melodic{
+       \$toccata_commands ++
+       \octave c;
+       \clef bass;
+       % 13
+       r4 'fis4-\ltoe 'e4.-\lheel e8-\rheel | 
+       % 14
+       fis4.-\rtoe fis8-.-\rtoe fis4-\rtoe [e8-\ltoe ais8-\rtoe] | 
+       % 15
+       dis4-\ltoe gis4-\rtoe [cis8-\ltoe 'b8-\lheel 'ais8-\rtoe 'gis8-\ltoe] |
+       % 16
+}
+
+fuga2_commands = \melodic{
+       \meter 3/4;
+       \key fis cis gis dis; % E-major
+}
+
+fuga2_right = \melodic{
+       \$fuga2_commands ++
+       % 15
+       \octave c';
+       <\multivoice
+               { \stem 1; b8 fis8 b4 }
+               { \stem -1; fis2 }
+       >
+       <% \multivoice % heu?
+               { e'4 }
+               { cis'4 }
+               { ais4 }
+               { fis4 }
+       > |
+       % 16
+       <\multivoice
+               { \stem 1; dis'2 dis'4 | cis'2 cis'4 | b4( )[b8 cis'8 dis'8 e'8] }
+               { \stem 1; \hshift 1; b8 fis8 b2( | )[b8 a16 g16] a2 | a4 gis2 }
+               { \stem -1; fis2.( | )fis2.( | )fis4 e2 }
+       > |
+       % 19
+}
+
+fuga2_left = \melodic{
+       \$fuga2_commands ++
+       \octave c;
+       \clef bass;
+       % 15
+       b2 
+       <\multivoice 
+               { \stem 1; ais4 | bes2. }
+               { \stem -1; e4  | fis2 fis4 }
+       >
+       % 17
+       cis'2 e'4 |
+       % 18
+       b4. b8 b4 |
+}
+
+fuga2_pedal = \melodic{
+       \$fuga2_commands ++
+       \octave c;
+       \clef bass;
+       % 15
+       dis4.-\ltoe e8-\rtoe cis4 |
+       % 16
+       'b4.-\lheel [c8-\ltoe dis8-\rtoe e8-\rheel] |
+       % 17
+       fis4.-\rtoe [e8-\rheel dis8-\rtoe cis8-\ltoe] |
+       % 18
+       dis4-\rtoe e4-\rheel 'e4-\ltoe |
+}
+
+break = \melodic{ \meter 4/4; r1 }
+
+% these should be two separate scores...
+\score{
+       \staff{ melodicregs 
+               % why the extra "\melodic" (silly)
+               % let "[ x ]" be "dimension of x":
+               %     [ melodic ++ melodic ] == [ simple-mudela ]
+               %     [ \melodic{ melodic ++ melodic } ] == [ melodic ]
+               % ?
+               \melodic{ 
+                       \$toccata_right ++ \break ++ \$fuga2_right 
+               }
+       }
+       \staff{ melodicregs 
+               \melodic{ 
+                       \$toccata_left ++ \break ++ \$fuga2_left 
+               }
+       }
+       \staff{ melodicregs 
+               \melodic{ 
+                       \$toccata_pedal 
+                       ++ \break 
+                       ++ \$fuga2_pedal 
+               }
+       }
+       \paper{}
+       \midi{
+               \tempo 4:96
+       }
+}
+
index 3bbbaf2d924564b29f96d88e2b9fb6fe71b8b5a3..26795ef17a92e864fe89fcb19ed22c8914971482 100644 (file)
@@ -3,6 +3,9 @@
 %  "Twinkle twinkle little star"
 % 
 % Copyright: none
+\version "0.0.56";
+
+\version "0.0.55";
 
 melody = \melodic{
        \clef\violin;
@@ -36,7 +39,7 @@ accompany = \melodic {
 global = \melodic {
                \meter 2 / 4;
                \skip 2*24;
-%              \bar "||";
+%              \bar "|.";
        }
 
 tekst = \lyric{ 
index f78af4da034a09286f1d59733bd791bab3adf475..7d5a7d72b86455b0af1a042711829cae02736453 100644 (file)
@@ -8,7 +8,7 @@
 % Tested Features:stem direction, multivoice.
 %
 
-\version "0.0.54";
+\version "0.0.56";
 
 global = \melodic{
        \meter 4/4 ;
index 0c95c66a37ea94b064e33d102a48956b83ce08af..1b529ccc5894d87940b0c56c69efd614412fb3db 100644 (file)
 // statics Duration
 int Duration::division_1_i_s = 384 * 4;
 
+
+Duration::Duration( int type_i, int dots_i = 0)
+{
+// this breaks mi2mu quite effectively
+//    assert(duration_type_b(type_i));
+       type_i_ = type_i;
+       dots_i_ = dots_i;
+       ticks_i_ = 0;
+}
+
 bool
 Duration::duration_type_b(int t)
 {
@@ -33,14 +43,6 @@ Duration::duration_type_b(int t)
     return bit_i == 1;
 }
 
-Duration::Duration( int type_i, int dots_i = 0)
-{
-    assert(duration_type_b(type_i));
-       type_i_ = type_i;
-       dots_i_ = dots_i;
-       ticks_i_ = 0;
-}
-
 Moment
 Duration::length() const
 {
index 515736281a381d82cb7489563c886b63da970740..04ee1d9883514b45db366c9e9a29a058bda97e05 100644 (file)
@@ -1,7 +1,8 @@
 MAJOR_VERSION = 0
 MINOR_VERSION = 0
-PATCH_LEVEL = 57
+PATCH_LEVEL = 58
+
 # use to send patches, always empty for released version:
 # include separator: ".postfix", "-pl" makes rpm barf
 
-MY_PATCH_LEVEL = 
+MY_PATCH_LEVEL = .jcn3
index 92720e76110f69cb09386a8fc9068b33ecdd4e6c..fa015012b3fc1914c5af5e279179dfdcaa8b5606 100644 (file)
@@ -41,7 +41,8 @@ Score::calc_idealspacing()
                }
                Moment delta_desired = j->when() - (d+i->when());
                dist += paper_p_->duration_to_dist(delta_desired);
-               
+               if (!j->musical_b())
+                   dist += 1 PT; // ugh
                pscore_p_->connect(i->pcol_l_, j->pcol_l_, dist, strength);
            }
        } else if (j.ok()) {
index 64ceafe19a3c2a09ac8ce26dfe6f159a73f67adb..7e1f0988d7989671dad1021eb2a5d3c260157061 100644 (file)
@@ -21,6 +21,7 @@ Collision::add(Note_column* ncol_l)
     clash_l_arr_.push(ncol_l);
     add_dependency(ncol_l);
 }
+
 static 
 int idx(int dir, bool h_shift_b)
 {
@@ -102,7 +103,8 @@ Collision::do_pre_processing()
     } while ((d *= -1) != 1);
 
   
-
+    // y_extent: smallest y-pos noteball interval containing all balls
+    // 4 (0..3) groups: stem up/down; shift on/off; 
     Interval_t<int> middle( y_extent[0].min(), y_extent[3].max());
     Interval_t<int> open_middle( y_extent[3].max()+1, y_extent[0].min()-1);
     do{
@@ -111,9 +113,10 @@ Collision::do_pre_processing()
     } while ((d *= -1) != 1);
    
     if (!middle.empty_b() && 
-       middle.length() <= 1 && col_l_a[idx(1,0)] && col_l_a[idx(-1,0)]) {      
-       Notehead * nu_l= col_l_a[idx(1,0)]->head_l_arr_[idx(1,0)];
-       Notehead * nd_l = col_l_a[idx(-1,0)]->head_l_arr_[idx(1,0)];
+       middle.length() <= 2 && col_l_a[idx(1,0)] && col_l_a[idx(-1,0)]) {      
+// reproduction of bugfix at 3am ?
+       Notehead * nu_l= col_l_a[idx(1,0)]->head_l_arr_[0];
+       Notehead * nd_l = col_l_a[idx(-1,0)]->head_l_arr_.top();
        if (! (nu_l->balltype_i_ == nd_l->balltype_i_ && nu_l->dots_i_ == nd_l->dots_i_)) {
            x_off[idx(1,0)] -= 0.5;
            x_off[1] -= 0.5;
@@ -130,4 +133,5 @@ Collision::do_pre_processing()
        
     }
 }
+
 IMPLEMENT_STATIC_NAME(Collision);
index beab1c8150782ac962053339752eb8f040fa2f18..d4435664cacb78ba40e466c8382ab5e1e44eea75 100644 (file)
@@ -1,4 +1,12 @@
 %{ // -*-Fundamental-*-
+/*
+  lexer.l -- implement the Flex lexer
+
+  source file of the LilyPond music typesetter
+
+  (c) 1996,1997 Han-Wen Nienhuys <hanwen@stack.nl>
+*/
+
 
 #include <stdio.h>
 
@@ -35,7 +43,7 @@
 %x lyrics
 %x notes
 %x quote
-
+%x longcomment
 
 
 A              [a-zA-Z]
@@ -57,30 +65,45 @@ BLACK               [^ \n\t\f]
 RESTNAME       [rs]
 NOTECOMMAND    \\{WORD}
 DOTS           \.+
-LYRICS         {AA}[^0-9 \t\n\f]*
-COMMENT                %.*\n
+LYRICS         ({AA}|{NATIONAL})[^0-9 \t\n\f]*
 
 %%
 
-<lyrics,INITIAL,notes>{COMMENT}        {
+
+<notes,incl,INITIAL,lyrics>{
+  "%{" {
+       yy_push_state(longcomment);
+  }
+  %[^{\n].*\n  {
+  }
+  %\n  {
+  }
+  {WHITE}+     {
+       
+  }
 }
 
+<longcomment>{
+       [^\%]*          {
+       }
+       \%*[^}%]*               {
 
+       }
+       "%"+"}"         {
+               yy_pop_state();
+       }
+}
 
 <notes,INITIAL,lyrics>
 \\include           {
        yy_push_state(incl);
 }
-<incl>{WHITE}*      { /* eat the whitespace */ }
 <incl>\"[^"]*\"   { /* got the include file name */
        String s (YYText()+1);
        s = s.left_str(s.length_i()-1);
        mtor << "#include `" << s << "\'\n";
        new_input(s,source_l_g);
        yy_pop_state();
-}
-<*>{WHITE}+    {
-       
 }
 <notes>{RESTNAME}      {
        const char *s = YYText();
@@ -98,99 +121,99 @@ COMMENT            %.*\n
        s=s.left_str(s.length_i() - 1);
        return scan_bare_word(s);
 }
-<notes>{ALPHAWORD}/\'  {
-       post_quotes_b_ = true;
-       return scan_bare_word(YYText());
-}
-<notes>\'+             {
-       yylval.i = YYLeng();
-       if (post_quotes_b_) {
-               post_quotes_b_ = false;
-               return POST_QUOTES;
-       } else
-               return PRE_QUOTES;
-}
-<notes>{ALPHAWORD}     {
-       return scan_bare_word(YYText());
+<notes>{
+       {ALPHAWORD}/\'  {
+               post_quotes_b_ = true;
+               return scan_bare_word(YYText());
+       }
+       \'+             {
+               yylval.i = YYLeng();
+               if (post_quotes_b_) {
+                       post_quotes_b_ = false;
+                       return POST_QUOTES;
+               } else
+                       return PRE_QUOTES;
+       }
+       {ALPHAWORD}     {
+               return scan_bare_word(YYText());
 
-}
+       }
 
-<notes>{NOTECOMMAND}   {
-       return scan_escaped_word(YYText()+1);
-}
+       {NOTECOMMAND}   {
+               return scan_escaped_word(YYText()+1);
+       }
 
-<notes>{DOTS}          {
-       yylval.i = strlen(YYText());
-       return DOTS;
-}
-<notes>{INT}           {
-       yylval.i = String_convert::dec2_i( String( YYText() ) );
-       return INT;
-}
+       {DOTS}          {
+               yylval.i = strlen(YYText());
+               return DOTS;
+       }
+       {INT}           {
+               yylval.i = String_convert::dec2_i( String( YYText() ) );
+               return INT;
+       }
 
-<notes>\+\+            {
-       return CONCAT;
-}
-<notes>\" {
-       start_quote();
+       \+\+            {
+               return CONCAT;
+       }
+       \" {
+               start_quote();
+       }
 }
 
-
 \"             {
        start_quote();
 }
-<quote>\\\\    {
-       *yylval.string += '\\';
-}
-<quote>\\\"    {
-       *yylval.string +='\"';
-}
-<quote>[^"]+   {
-       *yylval.string += YYText();
-}
-<quote>\"      {
-       mtor << "quoted string: `" << *yylval.string << "'\n";
-       yy_pop_state();
-       return STRING;
+<quote>{
+       \\\\    {
+               *yylval.string += '\\';
+       }
+       \\\"    {
+               *yylval.string +='\"';
+       }
+       [^"]+   {
+               *yylval.string += YYText();
+       }
+       \"      {
+               mtor << "quoted string: `" << *yylval.string << "'\n";
+               yy_pop_state();
+               return STRING;
+       }
 }
 
-<lyrics>\" {
-       start_quote();
-}
-<lyrics>{DOTS}         {
-       yylval.i = strlen(YYText());
-       return DOTS;
-}
-<lyrics>{INT}          {
-       yylval.i = String_convert::dec2_i( String( YYText() ) );
-       return INT;
-}
-<lyrics>{NOTECOMMAND}  {
-       return scan_escaped_word(YYText()+1);
-}
-<lyrics>{LYRICS} {
-       /* ugr. This sux. */
-       String s (YYText()); 
-       int i = 0;
-       while ((i=s.index_i("_")) != -1) // change word binding "_" to " "
-               *(s.ch_l() + i) = ' ';
-       if ((i=s.index_i("\\,")) != -1)   // change "\," to TeX's "\c "
-               {
-               *(s.ch_l() + i + 1) = 'c';
-               s = s.left_str(i+2) + " " + s.right_str(s.length_i()-i-2);
-               }
-       yylval.string = new String(s);
-       mtor << "lyric : `" << s << "'\n";
-       return STRING;
-}
-<lyrics>\|     {
-       return YYText()[0];
-}
-<lyrics>[{}]   {
-       return YYText()[0];
-}
-<lyrics>. {
-       return yylval.c = YYText()[0];
+<lyrics>{
+
+       \" {
+               start_quote();
+       }
+       {DOTS}          {
+               yylval.i = strlen(YYText());
+               return DOTS;
+       }
+       {INT}           {
+               yylval.i = String_convert::dec2_i( String( YYText() ) );
+               return INT;
+       }
+       {NOTECOMMAND}   {
+               return scan_escaped_word(YYText()+1);
+       }
+       {LYRICS} {
+               /* ugr. This sux. */
+               String s (YYText()); 
+               int i = 0;
+               while ((i=s.index_i("_")) != -1) // change word binding "_" to " "
+                       *(s.ch_l() + i) = ' ';
+               if ((i=s.index_i("\\,")) != -1)   // change "\," to TeX's "\c "
+                       {
+                       *(s.ch_l() + i + 1) = 'c';
+                       s = s.left_str(i+2) + " " + s.right_str(s.length_i()-i-2);
+                       }
+               yylval.string = new String(s);
+               mtor << "lyric : `" << s << "'\n";
+               return STRING;
+       }
+       . {
+               return yylval.c = YYText()[0];
+       }
 }
 
 <<EOF>> {
@@ -229,6 +252,7 @@ COMMENT             %.*\n
 <INITIAL,notes>.       {
        return yylval.c = YYText()[0];
 }
+
 <INITIAL,lyrics,notes>\\. {
     char c= YYText()[1];
     yylval.c = c;
index 248a25e60ec3f6e2d96b1025baada82e0b665e3a..a939391bf3be88fdbb27bad1032c7b0c45bdbfce 100644 (file)
@@ -70,6 +70,7 @@ get_text_req(int d , Text_def*def)
 Request*
 get_stemdir_req(int d)
 {
+    d = sign(long(d));
     Group_feature_req * gfreq_p = new Group_feature_req;
     gfreq_p->type_str_ = "vdir";
     gfreq_p->value_str_ = String(d);
index d831a69670877fd3eab2404c3400385b0d3a1d4c..b384729562f3152c96e2f24cf1a9306614d55fdb 100644 (file)
@@ -1,7 +1,7 @@
 %{ // -*-Fundamental-*-
 #include <iostream.h>
 
-#define MUDELA_VERSION "0.0.54"
+#define MUDELA_VERSION "0.0.56"
 
 #include "script-def.hh"
 #include "symtable.hh"
index bc309b1e04bdfac3e4de7fab0525c2f87b0cb06a..637eb42dec6cf1ac5ce27ea4b6149f187788b09f 100644 (file)
@@ -27,6 +27,8 @@ Script_column::translate(Offset o)
 {
     for (int i=0; i < script_l_arr_.size(); i++) 
        script_l_arr_[i]->translate(o);
+    for (int i=0; i < support_l_arr_.size(); i++)
+       support_l_arr_[i]->translate(o);
 }
 
 
index 8dbc6f4a1a85edad69f3557863b87944bc6b27f6..97080b894904835d67e6826b4676ddd1c1b062d2 100644 (file)
@@ -52,6 +52,7 @@ Staff_walker::when() const
 void
 Staff_walker::process_timing_reqs()
 {
+    // first all meter changes
     for (int i=0; i < ptr()->timing_req_l_arr_.size(); i++) {
        Timing_req * tr_l = ptr()->timing_req_l_arr_[i];
        if (tr_l->meterchange()) {
@@ -68,6 +69,7 @@ Staff_walker::process_timing_reqs()
        } 
     }
     
+    // then do the rest
     for (int i=0; i < ptr()->timing_req_l_arr_.size(); i++) {
        Timing_req * tr_l = ptr()->timing_req_l_arr_[i];
        if (tr_l->partial()) {
index dae02480b91f9ba0391019be48e8c03b35f757fb..95f8979803354f6189207bcc414074f3e4e490c1 100644 (file)
@@ -79,7 +79,7 @@ Stem_beam_register::process_requests()
     }
 
     if (stem_req_l_) {
-       stem_p_ = new Stem(4);
+       stem_p_ = new Stem(10);
        if (current_grouping)
            current_grouping->add_child(
                get_staff_info().time_C_->whole_in_measure_,
index f775c20b258a7adad9523169f5371ae00795b1b7..a14ce880f93423c287d95eefcf37bd50195e3224 100644 (file)
@@ -130,7 +130,7 @@ Stem::set_default_stemlen()
     
     // ugh... how about non 5-line staffs?
     if ((max_head_i() < -2 && dir_i_ == 1 )
-       ||(min_head_i() > staff_size_i_ + 2 && dir_i_ == -1) ){
+       ||(min_head_i() > staff_size_i_ && dir_i_ == -1) ){
        set_stemend(    staff_size_i_ /2 );
     } else {
        set_stemend( (dir_i_ > 0) ? max_head_i() + STEMLEN : 
index 44d9b3d5e930a2a2e9e26b23b5c271cb056b8a6f..e6945ba482b2942b97b420e82c951d6faa56b917 100644 (file)
@@ -82,9 +82,8 @@ Time_description::set_meter(int l, int o)
     assert(o);
     one_beat_ = Rational(1)/Moment(o);
     whole_per_measure_ = Moment(l) * one_beat_;
-    if(whole_in_measure_)
-       error_t("Meterchange should be at start of measure", *this);
 }
+
 bool
 Time_description::allow_meter_change_b()
 {
@@ -99,8 +98,6 @@ Time_description::allow_meter_change_b()
 String
 Time_description::try_set_partial_str(Moment p)const
 {
-      if (when_)
-       return ("Partial measure only allowed at beginning.");
     if (p<Rational(0))
        return ("Partial must be non-negative");
     if (p > whole_per_measure_)
index efece7a91ef3d02b70eec7f3141a5482a55ba55f..2c3dc12e901ccf8e5eb96a898fc85233dc6132b3 100644 (file)
@@ -2,8 +2,8 @@
 
 Begin3
 Title: LilyPond
-Version: 0.0.57
-Entered-date: 04/28/97
+Version: 0.0.58
+Entered-date: 05/02/97
 Description: LilyPond is a program which converts a music-script (mudela) into
 TeX output, or MIDI to produce multi-staff scores. Features include multiple
 meters, clefs, keys, lyrics, versatile input-language, cadenzas
@@ -13,7 +13,7 @@ Author: hanwen@stack.nl (Han-Wen Nienhuys)
        jan@digicash.com (Jan Nieuwenhuizen)
 Maintained-by: hanwen@stack.nl (Han-Wen Nienhuys)
 Primary-site: pcnov095.win.tue.nl /pub/lilypond/  
-       300k lilypond-0.0.57.tar.gz
+       300k lilypond-0.0.58.tar.gz
 Alternate-site: 
 Original-site: 
 Platform: unix/win32, GNU C++
index 3acf802fbf12b4a947c4a1007a7d392d8cbad994..9b43308086f27dd8933275a30378ab3f7d672aec 100644 (file)
@@ -1,9 +1,9 @@
 Name: lilypond
-Version: 0.0.57
+Version: 0.0.58
 Release: 1
 Copyright: GPL
 Group: Applications/Publishing
-Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.0.57.tar.gz
+Source0: pcnov095.win.tue.nl:/pub/lilypond/lilypond-0.0.58.tar.gz
 Summary: A preprocessor to make TeX typeset music.
 URL: http://www.stack.nl/~hanwen/lilypond
 Packager: Han-Wen Nienhuys <hanwen@stack.nl>
index abebfdd4a7895570d3d1b20cc6475df96879f91f..8ebe023f19dadf18b74e86a4e00dd20115d83bc6 100644 (file)
@@ -1,6 +1,6 @@
 MAJOR_VERSION = 0
 MINOR_VERSION = 0
-PATCH_LEVEL = 13
+PATCH_LEVEL = 14
 # use to send patches, always empty for released version:
 MY_PATCH_LEVEL = # include separator: "-1" or ".a"
 #
index e917ebe74ffd41de5625b0aed2c1d18a02b09676..5173c93532dda1e2f276edb738cb3ab845647b16 100644 (file)
@@ -31,8 +31,14 @@ public:
 
 private:
        void add_begin_at( PointerList<Midi_voice*>& open_voices_r, Moment mom );
+       int check_begin_bar_i( Moment now_mom, int open_bar_i );
+       int check_end_bar_i( Moment now_mom, int open_bar_i );
        Midi_voice* get_free_midi_voice_l( Moment mom );
        void remove_end_at( PointerList<Midi_voice*>& open_voices_r, Moment mom );
+       void output_mudela_begin_bar( Lily_stream& lily_stream_r, Moment now_mom, int bar_i );
+       void output_mudela_rest( Lily_stream& lily_stream_r, Moment begin_mom, Moment end_mom );
+       void output_mudela_rest_remain( Lily_stream& lily_stream_r, Moment mom );
+
        IPointerList<Track_column*> tcol_p_list_;
        IPointerList<Midi_voice*> midi_voice_p_list_;
        int number_i_;
index ea80a4fd01815cdbbe085c79a2334a1d4d632845..8e6806564bdda46edaa95ccc0c5bca8f192c55c2 100644 (file)
@@ -107,7 +107,7 @@ Lily_stream::header()
     *os_p_ << "% from input file: ";
     *os_p_ << midi_parser_l_g->filename_str_;
     *os_p_ << "\n\n";    
-    *os_p_ << "\\version \"0.0.54\";\n";
+    *os_p_ << "\\version \"0.0.58\";\n";
 }
 /*
   snapnie: dit kan toch automaties? Zie ook dstream.
index b3f057799145f9926b891a5353b1b613bea7d2fb..33fab2906f8dc01fc85b55e15e5b275ee07a8c7d 100644 (file)
@@ -82,7 +82,7 @@ main( int argc_i, char* argv_sz_a[] )
                0, "help", 'h',
                0, "no-silly", 'n',
                1, "output", 'o',
-               1, "no-plets", 'p',
+               0, "no-plets", 'p',
                0, "quiet", 'q',
                1, "smallest", 's',
                0, "verbose", 'v',
index 0c0bb5098d89c9ce112743e36ec0f4ea7ed9e194..d8bc7bb276413b14a0de0273896863d8a0e656b4 100644 (file)
@@ -39,7 +39,7 @@ Midi_score::output_mudela( String filename_str )
        lily_stream << "\\score{";
        lily_stream.indent();
                for ( PCursor<Midi_track*> i( midi_track_p_list_.top() ); i.ok(); i++ ) {
-                       lily_stream << "\\staff{ ";
+                       lily_stream << "\\staff{ melodicregs ";
                        lily_stream << i->name_str();
                        lily_stream << " }";
                        lily_stream.newline();
index ecf889bba652dfdd31a662b88e18248ada1b24cd..436bec8aa3d2bfcae85ab77dabdd44b0123329ed 100644 (file)
@@ -43,11 +43,28 @@ Midi_track::add_event( Moment mom, Midi_event* midi_event_p )
        tcol_l( mom - midi_event_p->mom() )->add_event( midi_event_p );
 }
 
-// too much red tape?
-String
-Midi_track::name_str()
+int
+Midi_track::check_begin_bar_i( Moment now_mom, int open_bar_i )
 {
-       return name_str_;
+       Moment bar_mom = midi_time_p_->bar_mom();
+       int bar_i = (int)( now_mom / bar_mom ) + 1;
+       if ( bar_i > open_bar_i ) { 
+               tor( NORMAL_ver ) << '[' << flush; 
+               return bar_i;
+       }
+       return 0;
+}
+
+int
+Midi_track::check_end_bar_i( Moment now_mom, int open_bar_i )
+{
+       Moment bar_mom = midi_time_p_->bar_mom();
+       int bar_i = (int)( now_mom / bar_mom ) + 1;
+       if ( bar_i > open_bar_i ) {
+               tor( NORMAL_ver ) << ']' << flush; 
+               return bar_i;
+       }
+       return open_bar_i;
 }
 
 Moment
@@ -73,6 +90,13 @@ Midi_track::get_free_midi_voice_l( Moment mom )
        return midi_voice_l; 
 }
 
+// too much red tape?
+String
+Midi_track::name_str()
+{
+       return name_str_;
+}
+
 Moment
 Midi_track::next_begin_mom( Moment now_mom )
 {
@@ -99,18 +123,13 @@ void
 Midi_track::process()
 {
        int bar_i = 1;
-       Moment bar_mom = midi_time_p_->bar_mom();
-
        for ( PCursor<Track_column*> i( tcol_p_list_.top() ); i.ok(); i++ ) {
-               int bars_i = (int)( i->mom() / bar_mom );
-               if ( bars_i > bar_i )
-                       tor( NORMAL_ver ) << '[' << bar_i << flush; 
+               int begin_bar_i = check_begin_bar_i( i->mom(), bar_i );
+               if ( begin_bar_i )
+                       tor( NORMAL_ver ) << begin_bar_i << flush; 
                while ( i->midi_event_p_list_.size() ) 
                        get_free_midi_voice_l( i->mom() )->add_event( i->midi_event_p_list_.top().remove_p() );
-               if ( bars_i > bar_i ) {
-                       bar_i = bars_i;
-                       tor( NORMAL_ver ) << ']' << flush; 
-               }
+               bar_i = check_end_bar_i( i->mom(), bar_i );
        }
 
        tor( DEBUG_ver ) << "ends: " << endl;
@@ -132,37 +151,23 @@ Midi_track::output_mudela( Lily_stream& lily_stream_r )
        lily_stream_r.newline();
 
        int bar_i = 0;
-       Moment bar_mom = midi_time_p_->bar_mom();
 
        PointerList<Midi_voice*> open_voices;
        Moment now_mom = 0.0;
-       Moment then_mom = 0.0;
-       while ( now_mom < end_mom() ) {
-               int bars_i = (int)( now_mom / bar_mom ) + 1;
-               if ( bars_i > bar_i )
-                       tor( NORMAL_ver ) << '[' << flush; 
-
-               if ( bars_i > bar_i ) { 
-                       Moment into_bar_mom = now_mom - Moment( bars_i - 1 ) * bar_mom;
-                       if ( bars_i > 1 ) {
-                               if ( !into_bar_mom )
-                                       lily_stream_r << "|";
-                               lily_stream_r.newline();
-                       }
-                       lily_stream_r << "% " << String_convert::i2dec_str( bars_i, 0, ' ' );
-                       if ( into_bar_mom )
-                               lily_stream_r << ":" << Duration_convert::dur2_str( Duration_convert::mom2_dur( into_bar_mom ) );
-                       lily_stream_r.newline();
-               }
-
+       /// ugh, avoid status track 0...
+       while ( number_i_ && ( now_mom < end_mom() ) ) {
+               int begin_bar_i = check_begin_bar_i( now_mom, bar_i );
+               if ( begin_bar_i )
+                       output_mudela_begin_bar( lily_stream_r, now_mom, begin_bar_i );
                add_begin_at( open_voices, now_mom );
 
                Moment begin_mom = next_begin_mom( now_mom ); 
 
-               if ( bars_i > bar_i )
-                       tor( NORMAL_ver ) << bars_i << flush; 
+               if ( begin_bar_i )
+                       tor( NORMAL_ver ) << begin_bar_i << flush; 
 
                Moment end_mom = next_end_mom( now_mom ); 
+               Moment then_mom = 0.0;
                if ( ( begin_mom > now_mom ) && ( begin_mom < end_mom ) )
                        then_mom = begin_mom;
                else 
@@ -171,19 +176,27 @@ Midi_track::output_mudela( Lily_stream& lily_stream_r )
                tor( DEBUG_ver ) << "begin: " << begin_mom << " end: " << end_mom << endl;
                tor( DEBUG_ver ) << "slice: " << now_mom << ", " << then_mom << endl;
 
+// rests, ugh
+               String str;
+//             if ( !open_voices.size() )
+//                     output_mudela_rest( lily_stream_r, now_mom, then_mom );
                if ( open_voices.size() > 1 )
                        lily_stream_r << "< ";
                for ( PCursor<Midi_voice*> i( open_voices.top() ); i.ok(); i++ )
-                       lily_stream_r << i->mudela_str( now_mom, then_mom, open_voices.size() - 1 );
+//                     lily_stream_r << i->mudela_str( now_mom, then_mom, open_voices.size() - 1 );
+                       str += i->mudela_str( now_mom, then_mom, open_voices.size() - 1 );
+               if ( str.length_i() )
+                       lily_stream_r << str;
+               else
+                       output_mudela_rest( lily_stream_r, now_mom, then_mom );
+                       
                if ( open_voices.size() > 1 )
                        lily_stream_r << "> ";
-               now_mom = then_mom;
+               remove_end_at( open_voices, then_mom );
 
-               remove_end_at( open_voices, now_mom );
-               if ( bars_i > bar_i ) {
-                       bar_i = bars_i;
-                       tor( NORMAL_ver ) << ']' << flush; 
-               }
+               bar_i = check_end_bar_i( now_mom, bar_i );
+
+               now_mom = then_mom;
        }
        bar_i++;
        tor( NORMAL_ver ) << '[' << bar_i << ']' << flush; 
@@ -193,11 +206,84 @@ Midi_track::output_mudela( Lily_stream& lily_stream_r )
        lily_stream_r.newline();
 }
 
+
+void
+Midi_track::output_mudela_begin_bar( Lily_stream& lily_stream_r, Moment now_mom, int bar_i )
+{
+       Moment bar_mom = midi_time_p_->bar_mom();
+       Moment into_bar_mom = now_mom - Moment( bar_i - 1 ) * bar_mom;
+       if ( bar_i > 1 ) {
+               if ( !into_bar_mom )
+                       lily_stream_r << "|";
+               lily_stream_r.newline();
+       }
+       lily_stream_r << "% " << String_convert::i2dec_str( bar_i, 0, ' ' );
+       if ( into_bar_mom )
+               lily_stream_r << ":" << Duration_convert::dur2_str( Duration_convert::mom2_dur( into_bar_mom ) );
+       lily_stream_r.newline();
+}
+
+
+void 
+Midi_track::output_mudela_rest( Lily_stream& lily_stream_r, Moment begin_mom, Moment end_mom )
+{
+       Moment bar_mom = midi_time_p_->bar_mom();
+       Moment now_mom = begin_mom;
+       int begin_bar_i =(int)( now_mom / bar_mom ) + 1; 
+       Moment remain_mom = now_mom - Moment( begin_bar_i - 1 ) * bar_mom;
+        if ( remain_mom > Moment( 0 ) )
+               output_mudela_rest_remain( lily_stream_r, remain_mom );
+
+       int end_bar_i = (int)( end_mom / bar_mom ) + 1;
+       now_mom += remain_mom;
+
+       int bar_i = (int)( now_mom / bar_mom ) + 1;
+       bar_i = check_end_bar_i( now_mom, bar_i );
+       for ( int i = 0; i < end_bar_i - begin_bar_i; i++ ) {
+               int begin_bar_i = check_begin_bar_i( now_mom, bar_i );
+               if ( begin_bar_i )
+                       output_mudela_begin_bar( lily_stream_r, now_mom, begin_bar_i );
+               lily_stream_r << "r1 ";
+               tor( NORMAL_ver ) << begin_bar_i << flush; 
+               bar_i = check_end_bar_i( now_mom, bar_i );
+               now_mom += bar_mom;
+       }
+       // use "int i" here, and gcc 2.7.2 hits internal compiler error
+       int ii = check_begin_bar_i( now_mom, bar_i );
+       if ( ii )
+               output_mudela_begin_bar( lily_stream_r, now_mom, ii );
+       bar_i = check_end_bar_i( now_mom, bar_i );
+
+       remain_mom = end_mom - Moment( end_bar_i - 1 ) * bar_mom;
+        if ( remain_mom > Moment( 0 ) )
+               output_mudela_rest_remain( lily_stream_r, remain_mom );
+}
+
+
+void
+Midi_track::output_mudela_rest_remain( Lily_stream& lily_stream_r, Moment mom )
+{
+       int type_i = 2;
+       while ( mom > Moment( 0 ) ) {
+               Duration dur( type_i );
+               Moment type_mom = Duration_convert::dur2_mom( dur );
+               int count_i = (int)( mom / type_mom ); 
+               for( int i = 0; i < count_i; i++ )
+                       lily_stream_r << "r" << dur.str() << " ";
+               type_i *= 2;
+               mom -= Moment( count_i ) * type_mom;
+               if ( Duration_convert::no_smaller_than_i_s
+                       && ( type_i > Duration_convert::no_smaller_than_i_s ) ) 
+                       break;  
+       }
+
+}
+
 void
 Midi_track::remove_end_at( PointerList<Midi_voice*>& open_voices_r, Moment mom )
 {
        for ( PCursor<Midi_voice*> i( open_voices_r.top() ); i.ok(); i++ )
-//             if ( i->end_mom() == mom ) {
+//             if ( i->end_mom() == mom ) { }
                if ( i->end_mom() <= mom ) {
                        tor( DEBUG_ver ) << "open_voices (" << open_voices_r.size() << "): -1\n";
                        i.remove_p();
index 19a0a484719fa3b0974e51e817a277b82a70ec84..2851557010b9e6ae7f1acc6723425fa2428340e1 100644 (file)
 \def\vcenter#1{\vbox to 0pt{\vss #1\vss}}
 
 \def\mathdef#1#2{\def#1{\mathchar{#2}}}
-% \def\mathchar#1{\mathfnt\char#1}
-\def\mathchar#1{$#1$}
-\def\mathaccentraise#1#2{\dimen0=\noteheight
-        \rationalmultiply\dimen0*#2%
-        \raise\dimen0\hbox{#1}}
-\def\mathaccentdef#1#2#3{\def#1{\mathaccentraise{\mathchar{#2}}{#3}}}
+\def\mathchar#1{\mathfont\char#1}
 
 \def\topalign#1{\vbox to 0pt{#1\vss}}
 \def\botalign#1{\vbox to 0pt{\vss #1}}
@@ -54,6 +49,7 @@
         \font\musicdraw=musixsps
         \font\italicfont=cmti10
         \font\dynfont=cmbxti10 scaled \magstep1
+       \font\mathfont=cmsy10
         \balkhoog=20pt
         \notewidth=6pt
         \noteheight=5pt
@@ -75,6 +71,7 @@
         \font\musicfnt=musix16
         \font\dynfont=cmbxti12
         \font\musicdraw=musixsps
+       \font\mathfont=cmsy8
         \balkhoog=16pt
         \staffrulethickness=0.4pt
         \notewidth=5pt
@@ -99,7 +96,7 @@
 % \def\dyn{\italicfont}
 \def\dyn{\dynfont}
 \def\kdynf{\dynfont f\kern-.1ex}
-\def\kdynm{\dynfont f\kern-.15ex}
+\def\kdynm{\dynfont m\kern-.15ex}
 \def\kdynp{\dynfont p\kern-.15ex}
 
 \def\dynppp{\dynfont\dynp\kdynp p}
 \def\emptybar{}
 
 \def\thinbar{\vrule height\balkhoog}
-%? what-s wrong with rightalign?
 \def\thickbar{\vrule height\balkhoog width 2\smallspace}
 \def\maatstreep{\thinbar}
-% \def\finishbar{\rightalign{\thinbar\kern\smallspace\thickbar}}
-\def\finishbar{\hss\rightalign{\thinbar\kern\smallspace\thickbar}}
+%? what-s wrong with rightalign?
+\def\finishbar{\rightalign{\thinbar\kern\smallspace\thickbar}}
+%%% \def\finishbar{\hss\rightalign{\thinbar\kern\smallspace\thickbar}}
 % \def\repeatstopbar{\rightalign{\repeatcolon\hskip2\smallspace\thinbar\hskip\smallspace\thickbar}}
 \def\repeatstopbar{\hss\rightalign{\repeatcolon\hskip2\smallspace\thinbar\hskip\smallspace\thickbar}}
-% \def\repeatstopbar{\kern-3\smallspace\rightalign{\repeatcolon\kern2\smallspace\thinbar\kern\smallspace\thickbar}\kern3\smallspace}
 \def\repeatstartbar{\hbox{\thickbar\kern\smallspace\thinbar\kern2\smallspace\repeatcolon}}
 \def\repeatstopstart{\hbox{\repeatcolon\kern2\smallspace\thinbar\kern\smallspace\thickbar\kern\smallspace\thickbar\kern\smallspace\thinbar\kern2\smallspace\repeatcolon}}
 \def\doublebar{\hbox{\thinbar\hskip\smallspace\thinbar}}
 \mdef\downbow{22}
 \mdef\portato{26}
 
-% \mathdef\heel\cup % "225B
-% \mathdef\toe\wedge % "225E
-\mathaccentdef\heel\cup{-1/1}
-\mathaccentdef\toe\wedge{-1/1}
+\mathdef\cup{91} % \cup
+\mathdef\wedge{94} % \wedge
+\mathdef\striepke{0} % heu?
+
+%% custom characters --- this should go: add to (meta!) font
+\def\myheel{\kern-.5ex\vbox{\cup}\kern-.5ex}
+\def\mytoe{\kern-.5ex\vbox{\wedge}\kern-.5ex}
+\def\mystriepke{\kern-1.1ex\vbox{\hbox{\kern-.05em\striepke}}\kern-1.1ex}
+
+\def\heel{\vbox{\myheel}}
+\def\toe{\vbox{\mytoe}}
+\def\backorfront{\mystriepke}
+
+\def\bheel{\vbox{\myheel\mystriepke}}
+\def\btoe{\vbox{\mytoe\mystriepke}}
+\def\fheel{\vbox{\mystriepke\myheel}}
+\def\ftoe{\vbox{\mystriepke\mytoe}}
+\def\heeltoe{\vbox{\myheel\mytoe}}
+\def\toeheel{\vbox{\mytoe\myheel}}
+%%
 
 \def\stem#1#2{\vrule height#2 depth-#1}
 
index 33cf8133ccada92e50f210d3e7c049f256956d94..cbf88bf422374cafb59206700a51072ef22e6d11 100644 (file)
@@ -1,3 +1,8 @@
+%
+% ideally, we should create a LaTeX/TeX class
+% for setting music in different sizes.
+%
+
 \def\thetitle{}
 \def\thecomposer{}
 \def\theinstrument{}
@@ -12,4 +17,4 @@
     {\bfseries\theinstrument}\hfill{\scshape\thecomposer}
   \end{center}
   \bigskip
-  }
\ No newline at end of file
+  }