From 168eede8391319eceff9cfee6d53fb1d72315e1f Mon Sep 17 00:00:00 2001 From: fred Date: Tue, 26 Mar 2002 22:14:50 +0000 Subject: [PATCH] lilypond-1.1.55 --- .../bibliography/computer-notation.bib | 656 ++++++++++++++++++ input/bugs/spacing.ly | 15 +- input/test/font-body.ly | 2 +- input/twinkle.ly | 72 +- lily/bow.cc | 2 +- lily/crescendo.cc | 3 +- lily/include/lookup.hh | 6 +- lily/lookup.cc | 17 +- lily/repeat-engraver.cc | 10 +- lily/slur.cc | 11 +- ly/paper16.ly | 2 +- ly/paper20.ly | 2 +- ly/params.ly | 5 + ly/script.ly | 2 +- mf/feta-schrift.mf | 24 +- mutopia/J.S.Bach/Duette/GNUmakefile | 12 + mutopia/J.S.Bach/Duette/global-i.ly | 6 + mutopia/J.S.Bach/Duette/global-ii.ly | 5 + mutopia/J.S.Bach/Duette/viola-i.ly | 22 + mutopia/J.S.Bach/Duette/viola-ii.ly | 21 + mutopia/J.S.Bach/Duette/viola-part.ly | 43 ++ mutopia/J.S.Bach/Duette/violino-i.ly | 88 +++ mutopia/J.S.Bach/Duette/violino-ii.ly | 102 +++ mutopia/J.S.Bach/Duette/violino-part.ly | 43 ++ mutopia/J.S.Bach/Duette/violino-viola.ly | 52 ++ .../J.S.Bach/Duette/violino-violoncello.ly | 50 ++ mutopia/J.S.Bach/Duette/violoncello-i.ly | 71 ++ mutopia/J.S.Bach/Duette/violoncello-ii.ly | 78 +++ mutopia/J.S.Bach/Duette/violoncello-part.ly | 43 ++ mutopia/J.S.Bach/GNUmakefile | 4 +- ps/lily.ps | 12 +- ps/lilyponddefs.ps | 152 +--- scm/lily.scm | 90 ++- scm/script.scm | 2 +- scripts/convert-mudela.py | 24 + scripts/ly2dvi.py | 1 - tex/fetdefs.tex | 129 ---- tex/lily-ps-defs.tex | 47 -- tex/lilyponddefs.tex | 189 +---- tex/titledefs.tex | 22 +- 40 files changed, 1501 insertions(+), 636 deletions(-) create mode 100644 Documentation/bibliography/computer-notation.bib create mode 100644 mutopia/J.S.Bach/Duette/GNUmakefile create mode 100644 mutopia/J.S.Bach/Duette/global-i.ly create mode 100644 mutopia/J.S.Bach/Duette/global-ii.ly create mode 100644 mutopia/J.S.Bach/Duette/viola-i.ly create mode 100644 mutopia/J.S.Bach/Duette/viola-ii.ly create mode 100644 mutopia/J.S.Bach/Duette/viola-part.ly create mode 100644 mutopia/J.S.Bach/Duette/violino-i.ly create mode 100644 mutopia/J.S.Bach/Duette/violino-ii.ly create mode 100644 mutopia/J.S.Bach/Duette/violino-part.ly create mode 100644 mutopia/J.S.Bach/Duette/violino-viola.ly create mode 100644 mutopia/J.S.Bach/Duette/violino-violoncello.ly create mode 100644 mutopia/J.S.Bach/Duette/violoncello-i.ly create mode 100644 mutopia/J.S.Bach/Duette/violoncello-ii.ly create mode 100644 mutopia/J.S.Bach/Duette/violoncello-part.ly diff --git a/Documentation/bibliography/computer-notation.bib b/Documentation/bibliography/computer-notation.bib new file mode 100644 index 0000000000..faf176c99c --- /dev/null +++ b/Documentation/bibliography/computer-notation.bib @@ -0,0 +1,656 @@ +% +% TITLE=The music notation with computer bibliography +% AUTHOR=Han-Wen Nienhuys +% + +@String{CitH = {Computing and the Humanities}} +@String{CMJ = {Computer Music Journal}} + +@TechRep=ort{roush88, + note = {Rules on formatting music formulated for use in computers. Mainly distilled from [Ross] HWN}, + year = {1988}, + title = {Music Formatting Guidelines}, + author = {D. Roush}, + number = {OSU-CISRC-3/88-TR10}, + institution = {Department of Computer and Information Science, The Ohio State University}, +} + + + +@InProceedings{assayaag86, + author = {G. Assayaag and D. Timis}, + title = {A Toolbox for music notation}, + booktitle = {Proceedings of the 1986 International Computer Music Conference}, + year = 1986 +} + +% byrd +@PhdThesis {byrd85, + year = {1985}, + title = {Music Notation by Computer}, + author = {Donald Byrd}, + school = {Indiana University}, +} + +@Article {byrd74, + year = {1974}, + title = {A System for Music Printing by Computer}, + author = {Donald Byrd}, + journal = {Computers and the Humanities}, + volume ={8}, + pages ={161-72}, +} + +@Article{byrd94, + author = {Donald Byrd}, + title = {Music Notation Software and Intelligence}, + journal = {Computer Music Journal}, +year = 1994, +pages = {17--20}, + volume = 18, + number = 1, + + note = {Byrd (author of Nightinggale) shows four problematic +fragments of notation, and rants about notation programs that try to +exhibit intelligent behaviour. HWN} +} + + + +@Article{ericson75, + author = {R. F. Ericson}, + title = {The DARMS Project: A status report}, + journal = {Computing in the humanities}, + year = 1975, + volume = 9, + number = 6, + pages = {291--298}, + note = {Gourlay\cite{gourlay86} writes: A discussion of the design + and potential uses of the DARMS music-description language.} +} + + +@Article{field-richards93, + author = {H.S. Field-Richards}, + title = {Cadenza: A Music Description Language}, + journal = CMJ, + year = 1993, + volume = 17, + number = 4, + + note = {A description through examples of a music entry language. +Apparently it has no formal semantics. There is also no +implementation of notation convertor. HWN} +} + + + +@Article{bielawa93, + author = {Herbert Bielawa}, + title = {Review of Sibelius 7}, + journal = CMJ, + year = {1993?}, + + note = {A raving review/tutorial of Sibelius 7 for Acorn. (And did +they seriously program a RISC chip in ... assembler ?!) HWN} + + +} + +@Article{sloan93, + author = {Donald Sloan}, + title = {Aspects of Music Representation in HyTime/SMDL}, + journal = CMJ, + year = 1993, + volume = 17, + number = 4, + +note = {An introduction into HyTime and its score description variant +SMDL. With a short example that is quite lengthy in SMDL} +} + +@Article{wiggins93, + author = {Geraint Wiggins and Eduardo Miranda and Alaaaan Smaill and Mitch Harris}, + title = {A Framework for the evaluation of music representation systems}, + journal = CMJ, + year = 1993, + volume = 17, + number = 3, + + note = {A categorisation of music representation systems (languages, +OO systems etc) splitted into high level and low level expressiveness. +The discussion of Charm and parallel processing for music +representation is rather vague. HWN} + +} + + + +@Article{dannenberg93, + author = {Roger B. Dannenberg}, + title = {Music Representation: Issues, Techniques, and Systems}, + journal = CMJ, + year = 1993, + volume = 17, + number = 3, + + note = {The title says it all. This article does not make any +statements, it points to some problems and solutions with music +representation. HWN}, + +} + +@Article{rothstein93, + author = {Joseph Rothstein}, + title = {Review of Passport Designs' Encore Music Notation Software}, + journal = CMJ, + year = {?}, + +note = {A no-science-here review of Encore. HWN} + +} + + + +@Article{belkin94, + author = {Alan Belkin}, + title = {Macintosh Notation Software: Present and Future}, + journal = CMJ, + year = 1994, + volume = 18, + number = 1, + + note = {Some music notation systems are analysed for ease of use, MIDI + handling. No rocket science here. The article ends with a plea for a + standard notation format. HWN}, + +} + +@Book {smith73, + year = {1973}, + title = {Editing and Printing Music by Computer}, + author = {Leland Smith}, + totalentry = {Journal of Music Theory}, + volume={17}, + pages ={292-309}, + note = {Gourlay\cite{gourlay86} writes: A discussion of Smith's music-printing system} +} + + +@InProceedings{montel97, + author = {Dominique Montel}, + title = {La gravure de la musique, lisibilit\'e esth\'etique, respect de l'oevre}, + booktitle = {Musique \& Notations}, + year = 1997, + address={Lyon}, + editors ={Genevois \& Orlarey} +} + + +% Gomberg +@PhdThesis {gomber75, + year = {1975}, + title = {A Computer-Oriented System for Music Printing}, + author = {David A Gomberg}, + school = {Washington University}, +} + +@Book {gomberg, + title = {A Computer-oriented System for Music Printing}, + author = {David A. Gomberg}, + journal = CitH, + volume={11}, + month = {march}, + year = {1977}, + pages = {63-80}, + note = {Gourlay \cite{gourlay86} writes: "A discussion of the + problems of representing the conventions of musical notation in + computer algorithms."} + +} + + + +@Book {CASR, + note = {Annual editions since 1985, many containing surveys of music typesetting technology. SP}, + title = {Directory of Computer Assisted Research in Musicology}, + author = {Walter B Hewlett and Eleanor Selfridge-Field}, + totalentry = {Menlo Park, CA: Center for Computer Assisted Research in the Humanities}, +} + + + +% LIME +@Article {haken93, + note = {A description of Lime internals (which resemble older (before 0.0.68pre) LilyPond data structures) HWN}, + year = {1993}, + title = {The Tilia Music Representation: Extensibility, Abstraction, and Notation Contexts for the Lime Music Editor}, + author = {Lippold Haken and Dorothea Blostein}, + journal = {Computer Music Journal}, + volume= {17}, + number={3}, + pages = {43--58}, +} + +@InProceedings{haken95, + year = {1995}, + title = {A New Algorithm for Horizontal Spacing of Printed Music}, + author = {Lippold Haken and Dorothea Blostein}, + booktitle = {International Computer Music Conference}, + address={Banff}, + month={Sept}, + pages = {118-119}, + note = {This describes an algorithm which uses springs between adjacent columns. This algorithm is a "subclass" of the LilyPond algorithm. HWN}, +} + +@Article {blostein91, + note = {This paper provides a shallow overview of the algorithm used in LIME for spacing individual lines. HWN}, + year = {1991}, + title = {Justification of Printed Music}, + author = {Dorothea Blostein and Lippold Haken}, + journal = {Communications of the ACM}, + volume= {J34}, + number= {3}, + month= {March}, + pages = {88-99}, +} + + +@Article{blostein94, + author = {Dorothea Blostein and Lippold Haken}, + title = {The Lime Music Editor: A Diagram Editor Involving Complex + Translations}, + journal = {Software Practice and Experience}, + year = {1994}, + volume = {24}, + number = {3}, + month = {march}, + pages = {289--306}, + note = {A description of various conversions, +decisions and issues relating to this interactive editor HWN}, +} + +@InProceedings{bouzaiene98:_une, + author = {Nabil Bouzaiene and Lo\"ic Le Gall and Emmanuel Saint-James}, + title = {Une biblioth\`eque pour la notation musicale baroque}, + booktitle = {EP '98}, + year = 1998, + series = {LNCS}, + + note = {Describes ATYS, an extension to Berlioz, that can mimick + handwritten baroque style beams} +} + + + +@MastersThesis{gall97:_creat, + author = {Lo\"ic Le Gall}, + title = {Cr\'eation d'une police adapt\'ee \`a la notation musicale baroque}, +school = {\'Ecole Estienne}, +year = 1997, +} + +@InProceedings{balaban88, + author = {M. Balaban}, + title = {A Music Workstation Based on Multiple Hierarchical Views of Music}, + booktitle = {Proceedings of the 1988 International Computer Music Conference}, + year = 1988, + address = {San Francisco}, + organization = {International Computer Music Association} +} + +% +% MusiCopy +% +@TechReport {gourlay87-spacing, + note = {Algorithm for generating spacing in one line of (polyphonic) music, tailored for use with MusiCopy. LilyPond uses a variant of it (as of pl 76) HWN}, + year = {1987}, + title = {Spacing a Line of Music,}, + author = {John S. Gourlay}, + number = {OSU-CISRC-10/87-TR35}, + institution ={Department of Computer and Information Science, The Ohio State University}, +} + + +@TechReport {parish87, + note = {A brief overview of {MusiCopy} HWN}, + year = {1987}, + title = {{MusiCopy}: An automated Music Formatting System}, + author = {Allen Parish and Wael A. Hegazy and John S. Gourlay and Dean K. Roush and F. Javier Sola}, + totalentry = {OSU-CISRC-10/87-TR29}, + institution ={Department of Computer and Information Science, The Ohio State University}, +} + + +@TechReport {gourlay87-formatting, +note = {This paper discusses the development of algorithms for the +formatting of musical scores (from abstract). It also appeared at +PROTEXT III, Ireland 1986}, + year = {1987}, + title = {Computer Formatting of Music}, + author = {John S. Gourlay and A. Parrish +and D. Roush and F. Sola and Y. Tien}, + number = {OSU-CISRC-2/87-TR3}, + institution ={Department of Computer and Information Science, +The Ohio State University}, +} + + +@TechReport {hegazy87, + year = {1987}, + title = {On the Implementation of the {MusiCopy} Language Processor,}, + author = {Wael A. Hegazy}, + number = {OSU-CISRC-10/87-TR34}, + institution={Department of Computer and Information Science, The Ohio State University}, + + note = {Describes the "parser" which converts {MusiCopy} MDL to + MusiCopy Simultaneities and columns. + +MDL is short for Music Description Language\cite{gourlay86}. It +accepts music descriptions that are organised into measures filled +with voices, those filled notes. The measures can be arranged +simultaneously or sequentially. To address the 2-dimensionality, +almost all constructs in MDL must be labeled. + +MDL uses begin/end markers for attribute values and spanners. +Rightfully the author concludes that MusiCopy must administrate a +"state" variable containing both properties and current spanning symbols. + +MusiCopy attaches graphic information to the objects constructed in +the input: the elements of the input are partially complete graphic +objects. + +Since the design goals of both LilyPond and MusiCopy were roughly the +same, both systems have superficial similarities: the details of the +input format, the notation of "musical state". However, LilyPond +stresses extensibility, modularity and separation between content and +presentation much more, and this shows: LilyPond is more flexible. To +be fair: development of MusiCopy was abandoned in 1987, so it is not +surprising that LilyPond is more mature. +}, + +} + + +@TechReport {hegazy87-breaking, + note = {This generalizes \TeX's breaking algorithm to music. It also appeared in Document Manipulation and Typography, J.C. van Vliet (ed) 1988. HWN}, + year = {1987}, + title = {Optimal line breaking in music}, + author = {Wael A. Hegazy and John S. Gourlay}, + number = {OSU-CISRC-8/87-TR33}, + institution={Department of Computer and Information Science, The Ohio State University,}, +} + + +@TechReport {roush87, + note = {User manual of MusiCopy. Includes an impressive example piece. HWN}, + year = {1987}, + title = {Using {MusiCopy}}, + author = {Dean K. Roush}, + number = {OSU-CISRC-18/87-TR31}, + institution={Department of Computer and Information Science, The Ohio State University}, +} + + +@TechReport {parrish87-simultaneities, + note = {Placement of balls, stems, dots which occur at the same moment ("Simultaneity") HWN}, + year = {1987}, + title = {Computer Formatting of Musical Simultaneities,}, + author = {A. Parrish and John S. Gourlay}, + institution={Department of Computer and Information Science, The Ohio State University}, + number = {OSU-CISRC-10/87-TR28}, +} + + +@TechReport {sola87, + note = {Overview of a procedure for generating slurs HWN}, + year = {1987}, + title = {Computer Design of Musical Slurs, Ties and Phrase Marks,}, + author = {F. Sola}, + institution={Department of Computer and Information Science, The Ohio State University}, + number = {OSU-CISRC-10/87-TR32}, +} + + +@TechReport {sola87-beams, + institution={Department of Computer and Information Science, The Ohio State University}, + note = {Calculating beam slopes HWN}, + year = {1987}, + title = {Design of Musical Beams,}, + author = {F. Sola and D. Roush}, + number = {OSU-CISRC-10/87-TR30}, +} + + +@Article {gourlay86, + note = {This paper describes the {MusiCopy} musicsetting system and an input language to go with it. HWN}, + year = {1986}, + title = {A language for music printing}, + author = {John. S. Gourlay}, + journal = {Communications of the ACM}, + volume= {29}, + number ={5}, + pages = {388--401}, +} + + + +@Article {rader96, + note = {Describes a system called MusicEase, and explains that it uses "constraints" (which go unexplained) to automatically position various elements. HWN}, + year = {1996}, + title = {Creating Printed Music Automatically}, + author = {Gary M. Rader}, + journal = {Computer}, + volume={29}, + number={6}, + month={June}, + pages = {61--69}, +} + + + + +@PhdThesis {page88, + note = {Don't ask Stephen for a copy. Write to the Bodleian Library, Oxford, or to the British Library, instead. SP}, + year = {1988}, + title = {Computer Tools for Music Information Retrieval}, + author = {Stephen Dowland Page}, + school ={Dissertation University of Oxford}, +} + +@MastersThesis{roelofs91, + note = {This dutch thesis describes a simplistic (monophonic) typesetting system, and focuses on the breaking algorithm, which is taken from Hegazy & Gourlay HWN}, + year = {1991}, + title = {Een Geautomatiseerd Systeem voor het Afdrukken van Muziek}, + author = {Ren\'e Roelofs}, + school={Erasmus Universiteit Rotterdam}, + number={45327}, + translation = {``An automated system for printing music'' Master's Thesis Managerial Computer Science.}, +} + + +@Article {filgueiras93, + year = {1993}, + title = {Representation and manipulation of music documents in SceX}, + author = {Miguel Filgueiras and Jos\'e Paulo Leal}, + journal= {Electronic Publishing}, + volume={6}, + number={4}, pages = {507--518}, + +} + + +@Article {foxley87, + note = {A paper on a TROFF preprocessor to typeset music. The output shown is not very sophisticated, and contains some typographical atrocities HWN}, + year = {1987}, + title = {Music --- A language for typesetting music scores}, + author = {Eric Foxley}, + journal = {Software --- Practice and Experience}, + volume = {17}, + number = {8}, + pages = {485-502}, +} + + +@Book {filgueiras96, + year = {1996}, + title = {Implementing a Symbolic Music Processing System}, + author = {Miguel Filgueiras}, + totalentry = {LIACC, Universidade do Porto, 1996; submitted}, +} + +@Book {filgueiras?, + title = {Some Music Typesetting Algorithms}, + author = {Miguel Filgueiras}, + totalentry = {Miguel Filgueiras. ``Some Music Typesetting Algorithms''. LIACC, Universidade do Porto, forthcoming}, +} + + +@Article {colorado-web, + author ={Alyssa Lamb}, + note = {Webpages about engraving (designed with finale users in mind) (sic) HWN}, + institution = {The University of Colorado}, + title ={The University of Colorado Music Engraving page.}, + HTML={http://www.cc.colorado.edu/Dept/MU/Musicpress/}, + year={1996} +} + + + + +@Article {Langston90, + note = {This paper deals with some command-line + tools for music editing and playback. It doesn't mention notation + issues, but does come with the grand idea (not) of using music to + monitor complex systems. Imagine your nuclear plant supervisor to + use AC/DC for checking the reactor HWN}, + + year = {1990}, + title = {Unix music tools at Bellcore}, + author = {Peter S. Langston}, + journal={Software --- Practice and Experience}, + volume={20}, + number={S1}, + pages={47--61}, +} + + + +@Article {tablature-web, + note = {FAQ (with answers) about TAB, the ASCII variant of Tablature. HWN}, + title = {how to read and write tab: a guide to tab notation}, + author = {Howard Wright}, + email={Howard.Wright@ed.ac.uk}, + HTML={http://wabakimi.carleton.ca/~phacket2/guitar/tabfaq.html}, +} + + +@Article {niff-web, + note = {Specs for NIFF, a reasonably comprehensive but binary (yuk) format for notation HWN}, + + year = {1995}, + title = {NIFF6a Notation Interchange File Format}, + author = {Cindy Grande}, + publisher={Grande Software Inc.}, + HTML= {http://www.jtauber.com/music/encoding/niff/}, + ftp = {ftp://blackbox.cartah.washington.edu} +} + + +@Article {smdl-web, + author={unknown}, + title = {SMDL, Standard Musical Description Language}, + pdf= {ftp://ftp.ornl.gov/pub/sgml/wg8/smdl/10743.pdf}, + note={ISO/IEC DIS 10743 + +SGML instance for describing music. Very comprehensive in music +definition, but no support for notation / performance whatsoever (They +basically say: "You can embed a NIFF or MIDI file") HWN} + +}, +} + +@TechReport{Ornstein83, + author={Ornstein, Severo M. and John Turner Maxwell III}, + title={Mockingbird: A Composer's Amanuensis}, + institution={Xerox Palo Alto Research Center}, + address={3333 Coyote Hill Road, Palo Alto, CA, 94304}, + number={CSL-83-2}, + month={January}, + year={1983} +} + + + +@Article{Ornstein84, + author={Ornstein, Severo M. and John Turner Maxwell III}, + title={Mockingbird: A Composer's Amanuensis}, + journal= {Byte}, + volume= 9, + month = {January}, + year= { 1984}, + note={A discussion of an interactive and graphical computer system for +music composition} + +} + +@PhdThesis{mueller90:_inter_bearb_musik, + author = {Giovanni M\"uller}, + title = {Interaktive Bearbeitung konventioneller Musiknotation}, + school = {Eidgen\"ossischen Technischen Hochschule Z\"urich}, + year = 1990, + +note = {This is about engraver-quality typesetting with computers. It +accepts the axiom that notation is too difficult to generate +automatically. The result is that a notation program should be a +WYSIWYG editor that allows one to tweak everything. + +The implementation therefore is quite "weak". The introductory +chapters on engraving and notation are well structured and clear, +though.} +} + + +% +% three part study by John Gr/over +@TechReport{grover89-symbols, + author = {John Gr\/over}, + title = {A computer-oriented description of Music Notation. Part I. The Symbol Inventory}, + institution = {Department of informatics, University of Oslo}, + year = 1989, + number = 133, + +note = {The goal of this series of reports is a full description of +music formatting. As these largely depend on parameters of fonts, it +starts with a verbose description of music symbols. + + The subject is treated backwards: from general rules of typesetting +the author tries to extract dimensions for characters, whereas the +rules of typesetting (in a particular font) follow from the dimensions +of the symbols. His symbols do not match (the stringent) constraints +formulated by eg. \cite{wanske}} } + +@TechReport{grover89-twovoices, + author = {John Gr\/over}, + title = {A computer-oriented description of Music Notation. Part II: Two Voice Sharing a Staff, Leger Line Rules, Dot Positioning}, + + institution = {Department of informatics, University of Oslo}, + year = 1989, + number = 134, + + note = {A lot rules for what is in the title are formulated. The +descriptions are long and verbose. The verbosity shows that +formulating specific rules is not the proper way to approach the +problem. Instead, the formulated rules should follow from more +general rules, similar to\cite{parrish87-simultaneities}}, +} + +@TechReport{grover89-accidentals, + author = {John Gr\/over}, + title = {A computer-oriented description of Music Notation. Part III: Accidental Positioning}, + institution = {Department of informatics, University of Oslo}, + year = 1989, + number = 135, + +note = {Placement of accidentals crystallised in an enormous set of +rules. Same remarks as for \cite{grover89-twovoices} applies} } diff --git a/input/bugs/spacing.ly b/input/bugs/spacing.ly index ddd2903abc..70d831405a 100644 --- a/input/bugs/spacing.ly +++ b/input/bugs/spacing.ly @@ -1,14 +1,7 @@ + +%JAN: Dit is een autobiem bug. \score { - \notes \transpose c'' \context Staff { c\longa*1/4 c\breve*1/2 c1 c2 c4 c8 c16 c32 c64 } - \paper { - \translator { - \StaffContext - % \remove "Staff_symbol_engraver"; - \remove "Time_signature_engraver"; - \remove "Bar_engraver"; - \remove "Clef_engraver"; - } -linewidth = -1.; - }} + \notes \transpose c'' \context Voice { c8 c16 c32 c64 } + } diff --git a/input/test/font-body.ly b/input/test/font-body.ly index 65d91f885b..474e9a9dd1 100644 --- a/input/test/font-body.ly +++ b/input/test/font-body.ly @@ -14,7 +14,7 @@ FontBody= \notes\transpose c''{ a\mf_\fermata a\f-\stopped a\ff-\open a\fff^\trill| a\fp-\reverseturn a4.\sf a4.\sfz | a4\fz % a\rf [c8-\prall c-\mordent] [a'-\prallmordent a'-\prallprall] - [c8-\upprall a'8-\downprall] [a'-\segno c-\wheel] | + [c8-\upprall a'8-\downprall] [a'-\segno c-\coda] | [c \< d e f] [as' ges' f' e'] [cis' dis' c' des'] [cisis' disis' \! ceses' deses'] | \clef "bass"; diff --git a/input/twinkle.ly b/input/twinkle.ly index 168558215f..78a40f1a15 100644 --- a/input/twinkle.ly +++ b/input/twinkle.ly @@ -17,7 +17,7 @@ traditional song in various languages. %{ Tested Features: lyrics, interleaving lyrics and staffs, repeats, - auto beaming, applying new rhythm on lyrics + auto beaming, applying new rhythm on lyrics, hyphens %} \version "1.1.52"; @@ -53,12 +53,12 @@ global = \notes { } tekst = \lyrics{ - Al- tijd is Kort- jak- je ziek, " " - midden "in de" week maar "'s zon-" dags " " niet. - "'s Zon-" dags gaat ze naar de kerk, " " - met een boek vol zil- ver " " werk. " " - Al- tijd is Kort- jak- je ziek, " " - midden "in de" week maar "'s zon-" dags " " niet. + Al -- tijd is Kort -- jak -- je ziek, " " + midden "in de" week maar "'s zon" -- dags " " niet. + "'s Zon" -- dags gaat ze naar de kerk, " " + met een boek vol zil -- ver " " werk. " " + Al -- tijd is Kort -- jak -- je ziek, " " + midden "in de" week maar "'s zon" -- dags " " niet. } @@ -68,51 +68,51 @@ tekst. Mogen wij ook af en toe ergens op afgeven? %} hegedraagjetekst = \lyrics{ - Al- tijd zuigt Bill Gates mijn piek, " " - "\TeX" is slecht- ser dan mu- " " ziek. - "'s Zon-" dags gaat het door een raam, " " - Weet dat ik me er- voor " " schaam. - Al- tijd zuigt Bill Gates mijn piek, " " - "\TeX" is slecht- ser dan mu- " " ziek. + Al -- tijd zuigt Bill Gates mijn piek, " " + "\TeX" is slecht -- ser dan mu -- " " ziek. + "'s Zon" -- dags gaat het door een raam, " " + Weet dat ik me er -- voor " " schaam. + Al -- tijd zuigt Bill Gates mijn piek, " " + "\TeX" is slecht -- ser dan mu -- " " ziek. } texte = \lyrics{ \property Lyrics . textStyle" = "italic" % \property Lyrics . textStyle" = "roman" - Ah! vous dir- ai- je ma- man " " - Ce qui cau- se mon tour- " " ment - Pa- pa veut que je rai- son- ne - Comm' u- ne gran- de per- " " son- ne - Moi je dis que les bon- bons " " - Va- lent mieux que la rai- " " son + Ah! vous dir -- ai -- je ma -- man " " + Ce qui cau -- se mon tour -- " " ment + Pa -- pa veut que je rai -- son -- ne + Comm' u -- ne gran -- de per -- " " son -- ne + Moi je dis que les bon -- bons " " + Va -- lent mieux que la rai -- " " son } texti = \lyrics{ \property "Lyrics"."textStyle" = "roman" - Twin- kle, twin- kle, lit- tle star, " " - How I won- der what you " " are. - Up a- bove the world so high, " " - Like a dia- mond in the " " sky. " " - Twin- kle, twin- kle, lit- tle star, " " - How I won- der what you " " are! + Twin -- kle, twin -- kle, lit -- tle star, " " + How I won -- der what you " " are. + Up a -- bove the world so high, " " + Like a dia -- mond in the " " sky. " " + Twin -- kle, twin -- kle, lit -- tle star, " " + How I won -- der what you " " are! } textii = \lyrics{ - When the bla- zing sun is gone, " " - When he no- thing shines up- " " on, - Then you show your lit- tle light, " " - Twin- kle, twin- kle, all the " " night. " " - Twin- kle, twin- kle, lit- tle star, " " - How I won- der what you " " are! + When the bla -- zing sun is gone, " " + When he no -- thing shines up -- " " on, + Then you show your lit -- tle light, " " + Twin -- kle, twin -- kle, all the " " night. " " + Twin -- kle, twin -- kle, lit -- tle star, " " + How I won -- der what you " " are! } textiii = \lyrics{ - Then the tra- veler in the dark " " - Thanks you for your ti- ny " " spark; + Then the tra -- veler in the dark " " + Thanks you for your ti -- ny " " spark; He could not see which way to go, - If you did not twin- kle " " so. " " - Twin- kle, twin- kle, lit- tle star, " " - How I won- der what you " " are! + If you did not twin -- kle " " so. " " + Twin -- kle, twin -- kle, lit -- tle star, " " + How I won -- der what you " " are! } \score{ diff --git a/lily/bow.cc b/lily/bow.cc index 6553412fa1..e5daab3c1b 100644 --- a/lily/bow.cc +++ b/lily/bow.cc @@ -31,7 +31,7 @@ Bow::do_brew_molecule_p () const SCM d = get_elt_property (dashed_scm_sym); if (d == SCM_BOOL_F) - a = lookup_l ()->slur (c); + a = lookup_l ()->slur (c, thick); else a = lookup_l ()->dashed_slur (c, thick, gh_scm2int (SCM_CDR(d))); diff --git a/lily/crescendo.cc b/lily/crescendo.cc index 1dbe94e3e4..2401502c9c 100644 --- a/lily/crescendo.cc +++ b/lily/crescendo.cc @@ -53,8 +53,9 @@ Crescendo::get_symbol () const bool continued = broken[Direction (-grow_dir_)]; Real height = paper_l()->staffheight_f () / 6; + Real thick = paper_l ()->get_var ("crescendo_thickness"); - return Molecule (lookup_l ()->hairpin (w_dim, height, grow_dir_ < 0, continued)); + return Molecule (lookup_l ()->hairpin (w_dim, height, thick, grow_dir_ < 0, continued)); } Molecule* diff --git a/lily/include/lookup.hh b/lily/include/lookup.hh index 1d1d96c369..b7fcda0706 100644 --- a/lily/include/lookup.hh +++ b/lily/include/lookup.hh @@ -38,13 +38,13 @@ public: Molecule ledger_line (Interval) const; Molecule fill (Box b) const; Molecule filledbox (Box b) const; - Molecule hairpin (Real width, Real height, bool decresc, bool continued) const; + Molecule hairpin (Real width, Real height, Real thick, bool decresc, bool continued) const; Molecule tuplet_bracket (Real dy, Real dx, Real gap, Real thick,Real interline, Direction dir) const; Molecule rest (int, bool outside, String) const; Molecule accordion (SCM arg, Real interline_f) const; - Molecule slur (Array controls) const; + Molecule slur (Array controls, Real thick) const; Molecule text (String style, String text, Paper_def*) const; - Molecule staff_brace (Real dy) const; + Molecule staff_brace (Real dy, int) const; Molecule staff_bracket (Real dy) const; Molecule volta (Real h, Real w, Real thick, bool last_b) const; Molecule special_time_signature (String, int,int, Paper_def*) const; diff --git a/lily/lookup.cc b/lily/lookup.cc index 961a4b37c8..38412301cb 100644 --- a/lily/lookup.cc +++ b/lily/lookup.cc @@ -159,11 +159,13 @@ Lookup::bar (String str, Real h, Paper_def *paper_l) const if (str == "bracket") return staff_bracket (h); else if (str == "brace") - return staff_brace (h); - + { + Real staffht = paper_l->get_var ("staffheight"); + return staff_brace (h,staffht); + } Real kern = paper_l->get_var ("bar_kern"); Real thinkern = paper_l->get_var ("bar_thinkern"); - + Molecule thin = simple_bar ("thin", h, paper_l); Molecule thick = simple_bar ("thick", h, paper_l); Molecule colon = afm_find ("dots-repeatcolon", paper_l); @@ -483,12 +485,13 @@ Lookup::time_signature (int num, int den, Paper_def *paper_l) const } Molecule -Lookup::staff_brace (Real y) const +Lookup::staff_brace (Real y, int staff_size) const { Molecule m; Atom at (gh_list (pianobrace_scm_sym, gh_double2scm (y), + gh_int2scm (staff_size), SCM_UNDEFINED )); @@ -499,7 +502,7 @@ Lookup::staff_brace (Real y) const } Molecule -Lookup::hairpin (Real width, Real height, bool decresc, bool continued) const +Lookup::hairpin (Real width, Real height, Real thick, bool decresc, bool continued) const { Molecule m; @@ -508,6 +511,7 @@ Lookup::hairpin (Real width, Real height, bool decresc, bool continued) const gh_double2scm (width), gh_double2scm (height), gh_double2scm (continued ? height/2 : 0.0), + gh_double2scm (thick), SCM_UNDEFINED)); m.dim_.x () = Interval (0, width); m.dim_.y () = Interval (-2*height, 2*height); @@ -538,7 +542,7 @@ Lookup::tuplet_bracket (Real dy , Real dx, Real thick, Real gap, Real interline_ Make a smooth curve along the points */ Molecule -Lookup::slur (Array controls) const +Lookup::slur (Array controls, Real linethick) const { Offset delta_off = controls[3]- controls[0]; Molecule m; @@ -552,6 +556,7 @@ Lookup::slur (Array controls) const Atom at (gh_list (ly_symbol ("bezier-sandwich"), ly_quote_scm (array_to_list (scontrols, 8)), + gh_double2scm (linethick), SCM_UNDEFINED)); m.dim_[X_AXIS] = Interval (0, delta_off[X_AXIS]); diff --git a/lily/repeat-engraver.cc b/lily/repeat-engraver.cc index 5864e06527..9ca3649fe3 100644 --- a/lily/repeat-engraver.cc +++ b/lily/repeat-engraver.cc @@ -23,14 +23,6 @@ ADD_THIS_TRANSLATOR (Repeat_engraver); -/* - Needs redesign? - - - Logic needs to be moved out of do_try_music(), - - - don't try to do multiple repeated music. Lets assume repeats don't nest. - - */ bool Repeat_engraver::do_try_music (Music* m) { @@ -155,6 +147,8 @@ Repeat_engraver::do_process_requests () if (t != "stop") bar_engraver_l->request_bar (t); + else + bar_engraver_l->request_bar (""); } else { diff --git a/lily/slur.cc b/lily/slur.cc index 504219f393..827e9a0222 100644 --- a/lily/slur.cc +++ b/lily/slur.cc @@ -38,10 +38,13 @@ void Slur::add_column (Note_column*n) { if (!n->head_l_arr_.size ()) - warning (_ ("Putting slur over rest.")); - encompass_arr_.push (n); - // n->stem_l_->slur_l_ = this; - add_dependency (n); + warning (_ ("Putting slur over rest. Ignoring")); + else + { + encompass_arr_.push (n); + // n->stem_l_->slur_l_ = this; + add_dependency (n); + } } Direction diff --git a/ly/paper16.ly b/ly/paper16.ly index 252795dd95..264691e068 100644 --- a/ly/paper16.ly +++ b/ly/paper16.ly @@ -23,7 +23,7 @@ paper_sixteen = \paper { arithmetic_basicspace = 2.; arithmetic_multiplier = 4.8\pt; - texsetting = "\\input lilyponddefs \\musixsixteendefs "; + texsetting = "\\input lilyponddefs "; pssetting = "(lilyponddefs.ps) findlibfile {exch pop //systemdict /run get exec} { /undefinedfilename signalerror } ifelse\n"; scmsetting = "\"(lilyponddefs.ps) findlibfile {exch pop //systemdict /run get exec} { /undefinedfilename signalerror } ifelse\";\n"; scmsetting = "\"\\\\input lilyponddefs \\\\musixsixteendefs\";\n"; diff --git a/ly/paper20.ly b/ly/paper20.ly index 25e85d7dc6..9159454699 100644 --- a/ly/paper20.ly +++ b/ly/paper20.ly @@ -30,7 +30,7 @@ paper_twenty = \paper { arithmetic_basicspace = 2.; arithmetic_multiplier = 6.\pt; - texsetting = "\\input lilyponddefs \\musixtwentydefs "; + texsetting = "\\input lilyponddefs "; pssetting = "(lilyponddefs.ps) findlibfile {exch pop //systemdict /run get exec} { /undefinedfilename signalerror } ifelse\n"; % urg, debugging only scmsetting = "\"(lilyponddefs.ps) findlibfile {exch pop //systemdict /run get exec} { /undefinedfilename signalerror } ifelse\";\n"; diff --git a/ly/params.ly b/ly/params.ly index c224318fba..afc68d5ab7 100644 --- a/ly/params.ly +++ b/ly/params.ly @@ -104,6 +104,8 @@ tie_slope_damping = 0.8; slur_thickness = 1.4 * \staffline; slur_height_limit = \staffheight; + + % slur_ratio = 0.3; % try bit flatter slurs slur_ratio = 0.25; @@ -165,6 +167,7 @@ mmrest_x_minimum = 2.0*\staffheight; % chop off this much when next to pp / ff sign. crescendo_shorten = 4.0 * \interline; +crescendo_thickness = \staffline; % in internote. restcollision_minimum_dist = 3.0; @@ -180,6 +183,8 @@ stemSpacingCorrection = 0.5*\interline; + + \include "engraver.ly"; diff --git a/ly/script.ly b/ly/script.ly index cbd3225c8e..38f89853d2 100644 --- a/ly/script.ly +++ b/ly/script.ly @@ -44,4 +44,4 @@ prallmordent = \script "prallmordent" upprall = \script "upprall" downprall = \script "downprall" segno = \script "segno" -wheel = \script "wheel" \ No newline at end of file +coda = \script "coda" \ No newline at end of file diff --git a/mf/feta-schrift.mf b/mf/feta-schrift.mf index 835a13c831..6f5a6c967f 100644 --- a/mf/feta-schrift.mf +++ b/mf/feta-schrift.mf @@ -666,31 +666,31 @@ fet_beginchar("Segno", "segno", "segno") fet_endchar; fet_beginchar("Coda", "coda", "coda") - save thin, thick, wheelwidth, wheelheight; + save thin, thick, codawidth, codaheight; thin# = 1.2 stafflinethickness#; thick# = 3.5 stafflinethickness#; - wheelwidth# = 2/3 interline#; - wheelheight# = 1 interline#; - define_pixels(thin, thick, wheelwidth, wheelheight); + codawidth# = 2/3 interline#; + codaheight# = 1 interline#; + define_pixels(thin, thick, codawidth, codaheight); - set_char_box(wheelwidth#+thick#, wheelwidth#+thick#, - wheelheight#+thick#, wheelheight#+thick#); + set_char_box(codawidth#+thick#, codawidth#+thick#, + codaheight#+thick#, codaheight#+thick#); penpos1(thick,0); penpos2(thin,-90); penpos3(thick,180); - x1l=-wheelwidth; - y2l=wheelheight; + x1l=-codawidth; + y2l=codaheight; y1=0; x2=0; z3 = - z1; penlabels(1,2,3); - path halfwheel; - halfwheel := z1l{up} .. z2l{right} .. z3l{down} -- + path halfcoda; + halfcoda := z1l{up} .. z2l{right} .. z3l{down} -- z3r{up} .. z2r{left} .. z1r{down} .. cycle; - fill halfwheel; - fill (halfwheel scaled -1); + fill halfcoda; + fill (halfcoda scaled -1); pickup pencircle scaled thin; draw (0,-h) -- (0,h); diff --git a/mutopia/J.S.Bach/Duette/GNUmakefile b/mutopia/J.S.Bach/Duette/GNUmakefile new file mode 100644 index 0000000000..15abf8ab41 --- /dev/null +++ b/mutopia/J.S.Bach/Duette/GNUmakefile @@ -0,0 +1,12 @@ +# mutopia/J.S.Bach/Duette/GNUmakefile + +depth = ../../.. + +SUBDIRS = +EXTRA_DIST_FILES= + +LOCALSTEPMAKE_TEMPLATES=mutopia +examples= + +include $(depth)/make/stepmake.make + diff --git a/mutopia/J.S.Bach/Duette/global-i.ly b/mutopia/J.S.Bach/Duette/global-i.ly new file mode 100644 index 0000000000..849b54bf18 --- /dev/null +++ b/mutopia/J.S.Bach/Duette/global-i.ly @@ -0,0 +1,6 @@ +\version "1.1.52"; + +$global_i = \notes{ + \time 12/8; + \key G; +} diff --git a/mutopia/J.S.Bach/Duette/global-ii.ly b/mutopia/J.S.Bach/Duette/global-ii.ly new file mode 100644 index 0000000000..da22bed0ff --- /dev/null +++ b/mutopia/J.S.Bach/Duette/global-ii.ly @@ -0,0 +1,5 @@ +$global_ii = \notes{ + \time 4/4; + \property Staff.timeSignatureStyle = "C2/2" + \key a\minor; +} diff --git a/mutopia/J.S.Bach/Duette/viola-i.ly b/mutopia/J.S.Bach/Duette/viola-i.ly new file mode 100644 index 0000000000..66451308b1 --- /dev/null +++ b/mutopia/J.S.Bach/Duette/viola-i.ly @@ -0,0 +1,22 @@ +\header{ +filename = "viola-i.ly"; +title = "Vier Duette"; +description = "Four duets for Violino and Violoncello (Viola)"; +opus = "BWV"; +composer = "Johann Sebastian Bach (1685-1750)"; +enteredby = "jcn"; +copyright = "Public Domain"; +} + +\version "1.1.52"; + +\include "global-i.ly" +\include "violoncello-i.ly"; + +$viola_i_staff = \context Staff = viola < + \property Staff.instrument = "viola" + %\property Staff.instrument = "violin" + \notes\transpose c'' \$violoncello_i + \clef alto; + \$global_i +> diff --git a/mutopia/J.S.Bach/Duette/viola-ii.ly b/mutopia/J.S.Bach/Duette/viola-ii.ly new file mode 100644 index 0000000000..5ccd1a9f72 --- /dev/null +++ b/mutopia/J.S.Bach/Duette/viola-ii.ly @@ -0,0 +1,21 @@ +\header{ +filename = "viola-ii.ly"; +title = "Vier Duette"; +description = "Four duets for Violino and Violoncello (Viola)"; +opus = "BWV"; +composer = "Johann Sebastian Bach (1685-1750)"; +enteredby = "jcn"; +copyright = "Public Domain"; +} + +\include "global-ii.ly" +\include "violoncello-ii.ly"; + +$viola_ii_staff = \context Staff = viola < + \property Staff.instrument = "viola" + %\property Staff.instrument = "violin" + \clef alto; + \$global_ii + \notes\transpose c'' \$violoncello_ii +> +\version "1.1.52"; diff --git a/mutopia/J.S.Bach/Duette/viola-part.ly b/mutopia/J.S.Bach/Duette/viola-part.ly new file mode 100644 index 0000000000..66df2cd2ca --- /dev/null +++ b/mutopia/J.S.Bach/Duette/viola-part.ly @@ -0,0 +1,43 @@ +\header{ +filename = "viola-part.ly"; +title = "Vier Duette"; +description = "Four duets for Violino and Violoncello (Viola)"; +opus = "BWV"; +composer = "Johann Sebastian Bach (1685-1750)"; +enteredby = "jcn"; +copyright = "Public Domain"; +} + +\version "1.1.52"; + +\include "global-i.ly" +\include "viola-i.ly" + +%{ +\score{ + \$viola_i_staff + \paper{ + \translator { \BarNumberingStaffContext } + } + \midi{ +%urg real/duration +% \tempo 4. = 69; + \tempo 4 . = 50; + } +} +%} + +\include "global-ii.ly" +\include "viola-ii.ly" + +\score{ + \$viola_ii_staff + \paper{ + castingalgorithm=0.0; + \translator { \BarNumberingStaffContext } + \translator { \ScoreContext skipBars = 1; } + } + \midi{ + \tempo 2 = 96; + } +} diff --git a/mutopia/J.S.Bach/Duette/violino-i.ly b/mutopia/J.S.Bach/Duette/violino-i.ly new file mode 100644 index 0000000000..8ee946729f --- /dev/null +++ b/mutopia/J.S.Bach/Duette/violino-i.ly @@ -0,0 +1,88 @@ +\header{ +filename = "violino-i.ly"; +title = "Vier Duette"; +description = "Four duets for Violino and Violoncello (Viola)"; +opus = "BWV"; +composer = "Johann Sebastian Bach (1685-1750)"; +enteredby = "jcn"; +copyright = "Public Domain"; +} + +\version "1.1.52"; + +$violino_i = \notes\relative c'' { + \property Voice.beamAutoEnd = "3/8" + %% should fix autobeamer: not only check shortest type's end in beam, + %%% but also the newly added type's end + \property Voice."beamAutoEnd_8" = "1/16" + %r4 r8 [g16(fis e)d] b'8 a r r [g16(fis e)d] c'8 | + r4 r8 g16(fis e)d b'8 a r r g16(fis e)d c'8 | + b r r d16(b)a g(e')c d(b)a g(c)a c(b)a g(a)fis | + g d(e fis g a )b d(c b c a )b g(a b c d )e g()fis e(d)cis | + a'd,(e fis g a )b a(g fis g e )fis a(g fis e )d + %%cis d e fis ~| + cis d e fis ~| +%5 + %%<\grace a,16 \grace d, g'16 > e(fis)d cis d + e(fis)d cis d + g,8 f16 d(e)c b c fis,!8 ~| + c(d)b a b e, b'(c)a g a d, a'(b)g fis g c, g'(a)fis e fis | + b,(d)e fis(g)a b(d)c b(a)g fis(g)a b(c)d e(a)g fis e d | + g d(e)fis g a b g(fis)g c, a' b, g'(fis)g a, c fis, g(a)b ~| + )b r [d16(b a)g] e'8 d r r [c16(b a)g] g'8 | +%10 + r r g16(fis)e d(b')g a(fis)e d(g)e g(fis)e d(e)cis | + ~ fis,(g e d)e ~ e,(fis d cis)d | + ~ e,(dis)e fis g a8 b ~ b(a)g fis e | + [dis e fis g] ~ fis(g)e d e b e(g)e dis e b e(g)e d e | + [cis d e fis] ~ e(fis)d cis d a d(fis)d cis d a d(fis)d c d | +%15 + [b c d e] ~ e(dis)e a e cis' a(gis)a dis a fis'8 [b,()a] | + g16 b(cis dis e fis )g b( a g fis e)dis cis( dis e fis g)a fis(e dis cis b | + )e g(fis)e a fis g b(a)g a fis g b(a)g fis e [dis()e fis()c] ~| + <)g b,> r [b,16(a g)fis] c'8 b r r [a16(g fis)e] e'8 | + dis8 r r e16 d(cis b g' e)fis d(cis b e cis)e d(cis b cis)ais | +%20 + ~ ais( b d cis)e d8 [b()cis\prall] d [gis()b] | + ~ gis,(a c! b)d [a()b\prall] c [fis()a]| + ~ a(b)g fis g e b'(c)a g a fis c'(d)b a b | + g d'(e)c b c a e'(s)d c d b8 ~c,(f! e d c | + )b c(f, a g f)e g(f e d c )g c(d e f g )a d(c)b a g | +%25 + c16 g a b c d e g(f)e f d e c'(b)c a f g c,(b)c ~| + d(e)c b c fis8 a ~ c,(d)b a b e,8 ~| + b(c)a gis a e' b(c)a g a fis' c(d)b a b g' d(e)c b c | + a' g(fis e d c)b d(c b a g)fis e'(d c b)a \breathe [g(fis e)d] b'8| + a r r r16 a, b c d(e)fis g a b c d [g,(fis e)d] c'8 | +%30 + b r r r4 r8 r4 r8 d16 b(a g e')c| + d b(a g c a)b d(c f c a)b g(fis g a fis)g b(a g a fis| + )g e(d)c f d e g(f)e f d e f(g)a d, f e a(b)c e, g| + fis g(a)b e, g fis b(c)d fis, a g a(b)c fis, a g c(d)e g, b| + a g(a b c)d [c(b a)g] r r d16(c b)a | +%35 + r r a16( fis e)d g(a)b e,(g)c, + fis(g)a d,(fis| + )b, d(e)f b,(d)g, b(c)d g,(b)d, g(a)b d,(g)b, d(e)f b,(d| + )g,8 r r e'16(d c)b f'8 e r r g16(fis e)d c'8 | + ~c16 b(a g)e' c()d b(a g)c a()c b(a)g + \context Staff< + %\context Voice { a16 f | g1. } + \context Voice { \property Voice.verticalDirection=1 a16 fis | g1. } + \context Voice=x { \property Voice.verticalDirection=-1 c,16 c | b1. } + > + \bar "|."; +} + +\include "global-i.ly" + +$violino_i_staff = \context Staff = violino < + %urg + % \notes\property Voice.textStyle = "large" s4^"Moderato" + % \notes {s4. \property Voice.textStyle = "large" s4^"Moderato"} + % urg, timidity violino patches broken? + %\property Staff.instrument = "violin" + \property Staff.instrument = "viola" + \$violino_i + \$global_i +> diff --git a/mutopia/J.S.Bach/Duette/violino-ii.ly b/mutopia/J.S.Bach/Duette/violino-ii.ly new file mode 100644 index 0000000000..5cf92fde1d --- /dev/null +++ b/mutopia/J.S.Bach/Duette/violino-ii.ly @@ -0,0 +1,102 @@ +\header{ +filename = "violino-ii.ly"; +title = "Vier Duette"; +description = "Four duets for Violino and Violoncello (Viola)"; +opus = "BWV"; +composer = "Johann Sebastian Bach (1685-1750)"; +enteredby = "jcn"; +copyright = "Public Domain"; +} + +$violino_ii = \notes\relative c''{ + R1*8 | + r2 e | +%10 + fis a,|c8(b)a2 b8()cis|d e f2 e8()dis|e(b e)fis e(b e)g| + fis(b,fis')g fis(b,fis')a| +%15 + g(b,g')a g(b,g')b|fis(b,fis')g fis(b,fis')a|g fis e2 d4|cis bes'(a\prall)g| + bes, g'(f\prall)e| +%20 + g, e'(d\prall)cis|d8 g,(f)e d4 c'|b as'(g\prall)f|as, f'(e\prall)d| + f, d'(c\prall)b| +%25 + c8 f,(e)d c4 bes'(|)a8 g'(f)e f d a4~|a8 g(a)b g c e4| f,8(e'd)c d b f4~| + f8 e(f)g e g c4| +%30 + d,8(c'b)a b gis d4|d8 c(d)e c f e d|e4 a,2()gis4|a2 a'|c e,| +%35 + f8(e)d2 e8()fis|g a bes2 a8()gis|a(e a)b a(e a)c|b(e,b')c b(e,b')d| + c(e,c')d c(e,c')d| +%40 + b(e,b')c b(e,b')d| c(b)a2 gis4|a8()c b d c()b c a|e4 fis g fis8()e|fis4 gis a2~ +%45 + a4 g8 fis g4 e~|e dis8 cis dis2\prall|e4 b' e2|e dis\prall|e4. d16(e f8)e d c| +%50 + b c d4. c8(b)a|gis a b4. a8(g)fis|gis()e gis a b()c d b|c()b a b c()d es c| + a b c4. b8(a)g| +%55 + fis g a4.g8(fis)e| fis()d fis g a()b c a|b()a g a b()c d b|c4 e()a, c(| + )fis, g8 a b4 g(| +%60 + )a c()fis, a(|)d, e8 fis g4 e(|)fis a()dis, fis(|)b, cis8 dis e2~| + e4 d8 cis d2~| +%65 + d4 e8 fis g2(|)g4 f8 e f2~|f4 g8 a bes2~|bes4 a8 gis a2~| + a gis\prall| +%70 + a e'|f a,|c8(b)a2 b8()cis|d e f2 e8()dis|e(b e)fis e(c)e g| +%75 + fis(b,fis')g fis(b,fis')a|g(b,g')a g(b,g')b|fis(b,fis')g fis(b,fis')a| + g\prall b,(e)fis g()a b()g|e f g4. f8(e)d| +%80 + cis d e4. d8(c)b|cis a cis d e()f g()e|f e d cis d4 c|b as'(g\prall)f| + as, f'(e\prall)d| +%85 + f, d'(c\prall)b| c8(g)c d c fis,(a)c|b(dis,)b' c b f,(b')d| + cis(a)cis dis e g,(c)e|d(f,)d' es d g,(d')f| +%90 + e(c)e fis g bes,(es)g|f(a,)f' g f bes,(d)f|e(gis,)e' f e a,(e')g| + f()g f e d()c b a|gis e()fis()g e gis a b| +%95 + c2 e,|f8 e(d)cis d e fis gis|a e a2 gis4(|)a b()c b8 a|b4()cis ~| +%100 + c8 b c4 ~| gis8 fis g2\prall| + | + %| + \context Staff< + \context Voice { + \property Voice.verticalDirection=1 + gis\prall|a8 g f4~f8 e(d)cis| +%105 + d c bes4~bes8 a(gis)fis|gis4 e | + %c2 b()\grace a| + c2 b| + a1| + } + \context Voice=x { + \property Voice.verticalDirection=-1 + d,4 ss| s2| +%105 + s2|s1| + %e2 d ()\grace c| + e2 d| + c1| + } + > + \bar "|."; +} + +\include "global-ii.ly" + +$violino_ii_staff = \context Staff = violino < + %urg + % \notes\property Voice.textStyle = "large" s4^"Moderato" + % \notes {s4. \property Voice.textStyle = "large" s4^"Moderato"} + % urg, timidity violino patches broken? + %\property Staff.instrument = "violin" + \property Staff.instrument = "viola" + \$violino_ii + \$global_ii +> +\version "1.1.52"; diff --git a/mutopia/J.S.Bach/Duette/violino-part.ly b/mutopia/J.S.Bach/Duette/violino-part.ly new file mode 100644 index 0000000000..f53fc6ff25 --- /dev/null +++ b/mutopia/J.S.Bach/Duette/violino-part.ly @@ -0,0 +1,43 @@ +\header{ +filename = "violino-part.ly"; +title = "Vier Duette"; +description = "Four duets for Violino and Violoncello (Viola)"; +opus = "BWV"; +composer = "Johann Sebastian Bach (1685-1750)"; +enteredby = "jcn"; +copyright = "Public Domain"; +} + +\version "1.1.52"; + +\include "global-i.ly" +\include "violino-i.ly" + +%{ +\score{ + \$violino_i_staff + \paper{ + \translator { \BarNumberingStaffContext } + } + \midi{ +% \tempo 4. = 69; + \tempo 4 . = 50; + } +} +%} + +\include "global-ii.ly" +\include "violino-ii.ly" + +\score{ + \$violino_ii_staff + \paper{ + \translator { \BarNumberingStaffContext } + castingalgorith=0; + } + \midi{ +% \tempo 4. = 69; + \tempo 4 . = 50; + } +} + diff --git a/mutopia/J.S.Bach/Duette/violino-viola.ly b/mutopia/J.S.Bach/Duette/violino-viola.ly new file mode 100644 index 0000000000..856c58db74 --- /dev/null +++ b/mutopia/J.S.Bach/Duette/violino-viola.ly @@ -0,0 +1,52 @@ +\header{ +filename = "violino-viola.ly"; +title = "Vier Duette"; +description = "Four duets for Violino and Violoncello (Viola)"; +opus = "BWV"; +composer = "Johann Sebastian Bach (1685-1750)"; +enteredby = "jcn"; +copyright = "Public Domain"; +} + +\version "1.1.52"; + +\include "violino-i.ly"; +\include "viola-i.ly"; + +\score{ + \context GrandStaff < + \$violino_i_staff + \$viola_i_staff + > + \paper{ + \translator { + \OrchestralScoreContext + } + } + \midi{ +%urg real/duration +% \tempo 4. = 69; + \tempo 4 . = 50; + } +} + + +\include "violino-ii.ly"; +\include "viola-ii.ly"; + +\score{ + \context GrandStaff < + \$violino_ii_staff + \$viola_ii_staff + > + \paper{ + \translator { + \OrchestralScoreContext + } + } + \midi{ +% \tempo 2 = 96; + \tempo 2 = 75; + } +} + diff --git a/mutopia/J.S.Bach/Duette/violino-violoncello.ly b/mutopia/J.S.Bach/Duette/violino-violoncello.ly new file mode 100644 index 0000000000..449f317748 --- /dev/null +++ b/mutopia/J.S.Bach/Duette/violino-violoncello.ly @@ -0,0 +1,50 @@ +\header{ +filename = "violino-violoncello.ly"; +title = "Vier Duette"; +description = "Four duets for Violino and Violoncello (Viola)"; +opus = "BWV"; +composer = "Johann Sebastian Bach (1685-1750)"; +enteredby = "jcn"; +copyright = "Public Domain"; +} + +\version "1.1.52"; + +\include "violino-i.ly"; +\include "violoncello-i.ly"; + +\score{ + \context GrandStaff < + \$violino_i_staff + \$violoncello_i_staff + > + \paper{ + \translator { + \OrchestralScoreContext + } + } + \midi{ +%urg, real/duration +% \tempo 4. = 69; + \tempo 4 . = 50; + } +} + +\include "violino-ii.ly"; +\include "violoncello-ii.ly"; + +\score{ + \context GrandStaff < + \$violino_ii_staff + \$violoncello_ii_staff + > + \paper{ + \translator { + \OrchestralScoreContext + } + } + \midi{ + \tempo 2 = 96; + } +} + diff --git a/mutopia/J.S.Bach/Duette/violoncello-i.ly b/mutopia/J.S.Bach/Duette/violoncello-i.ly new file mode 100644 index 0000000000..9b42424dad --- /dev/null +++ b/mutopia/J.S.Bach/Duette/violoncello-i.ly @@ -0,0 +1,71 @@ +\header{ +filename = "violoncello-i.ly"; +title = "Vier Duette"; +description = "Four duets for Violino and Violoncello (Viola)"; +opus = "BWV"; +composer = "Johann Sebastian Bach (1685-1750)"; +enteredby = "jcn"; +copyright = "Public Domain"; +} + +\version "1.1.52"; + +$violoncello_i = \notes\relative c{ + \property Voice.beamAutoEnd = "3/8" + g8()a d, g b()g d()fis a d a()fis | + g()d b' g b()c b()e fis g d()d, | + g r r [d'16(b a )g] e'8 d r r [c16(b a )b] g'8 | + fis r r g16 fis( e d b' g )a fis( e d g)e g fis( e d e)cis | +%5 + d8 d'()a b16 c(d)b g b c,8 c'()g a16 b(c)a fis a | + b,8()b' fis g a()e fis g()d e fis()d | + g r r g,16(fis e)d b'8 a r r g16(fis e )d c'8 | + b r r d16 b(a)g e' c d b(a)g c a c b(a)g a fis | + g d( e fis g a )b d(c b c )a b g(a b c b )e g( fis e d cis | +%10 + )a'16 d,( e fis g a)b a(g fis g e)fis a(g fis e d)cis d(e)fis g8~ | + g16 e(fis)d cis d b'4.~b16 d,(e)c b c a'4.~| + a16 fis(g)e dis e c'4.~c16 b(a)g fis e dis8(e)c | + b b'16(a g)fis e8 e,()fis g()b a g e()e' | + a,16 b(cis)d e cis d8 d,()e fis a()g fis d()d' | +%15 + g,16(a b)c! d b c8 c'()fis, a dis,()fis b,16 cis(dis e)fis d | + e8 e, r [e'16( dis cis)b] g'8 fis r r [e16(dis cis)b] a'8 | + g r r b16 g(fis)e c'! a b g(fis)e a fis a g(fis)e fis dis | + e b(cis dis)e fis g b(a)g a fis g e(fis)g a b cis e(dis)c b ais | + fis b,(cis)dis e fis g fis(e)d e cis d8()d, g' e fis()fis,| +%20 + b16 fis'(gis)ais b cis d cis(d)b ais b fis b(d)b ais b f b(d)b a b | + e, b'(e)d c b a b(c)a gis a e a(c)a gis a es a(c)a g a| + d, a'(d)c b a g8()g, b c a()c d()b d | + e c()e f g, f'~f16 e(f b, a)b e8()a f | + g g, r [c16(b a)g] e'8 d r r [c16(b a)g] f'8| +%25 + e r r g16 e(d)c a' f g e(d)c f d f e(d)c d b | + c8 c'()g a16 b(c)a g fis b8 b,()fis' gis16 a(b)g fis e | + a,8()a' b c b()c d()b d e [c()a]| + fis()d r [g16(fis e)d] b'8 a r r b16 d(c)b a g | + e e'(d)c b a [g(fis e)d] c'8 b r r r16 b, c d e fis | +%30 + g a(b c d)e d b(a g e')c d b(a g c)a b d(c b c)a| + b g(fis e a fis)g b(a g a fis)g b(a g c a)b g(fis e fis dis| + )e g(f)e a fis g e(d)c d c c8()c' b c a()c | + d,()d' cis d b()d e,()e' dis e c()e | + fis,()e d g [c,16(b a)g] c g'(a c b)d e8 [d,16(cis b)a]| +%35 + d a'(b cis d)e fis8 [g,16( fis e)d] g8()e c a d()d,| + g r r r16 d''(e)f b,(d)g, b(c)d g,(b)d, f(g)a d,(f| + )b, d(e)f b,(d)g,8 a()b c16 d(e f g a)b d(c b a)g| + fis [a(g)fis e d] g8()e c g'8 b, e c d d, | + g1.| + \bar "|."; +} + +\include "global-i.ly" + +$violoncello_i_staff = \context Staff = violoncello < + \property Staff.instrument = "cello" + \$violoncello_i + \clef bass; + \$global_i +> diff --git a/mutopia/J.S.Bach/Duette/violoncello-ii.ly b/mutopia/J.S.Bach/Duette/violoncello-ii.ly new file mode 100644 index 0000000000..19f5dfacfa --- /dev/null +++ b/mutopia/J.S.Bach/Duette/violoncello-ii.ly @@ -0,0 +1,78 @@ +\header{ +filename = "violoncello-ii.ly"; +title = "Vier Duette"; +description = "Four duets for Violino and Violoncello (Viola)"; +opus = "BWV"; +composer = "Johann Sebastian Bach (1685-1750)"; +enteredby = "jcn"; +copyright = "Public Domain"; +} + +\version "1.1.52"; + +$violoncello_ii = \notes\relative c{ + r2 a'2|c e,| f8(e)d2 e8()fis| g a bes2 a8()gis| +%5 + a(e)a b a(e)a c|b(e,b')c b(e,b')d|c(e,c')d c(e,c')e|b(e,b')c b(e,b')d| + c(b)a2 gis4| +%10 + a8()c b d c()b c a|e4 fis g fis8()e|fis4 gis a2~|a4 g8(fis)g4 e~| + e dis8 cis dis2\prall| +%15 + e4 b' e2~|e dis\prall|e4 e,8()fis g a bes g|e f g4. f8(e)d|cis d e4.d8(cis)b| +%20 + cis()a cis d e()f g e|f()e d e f()g as f|d e f4. e8(d)c|b c d4. c8(b)a| + b()g b c d()e f d| +%25 + e()d c d e()f g e|f4 a()d, f(|)b, c8 d e4 c(|)d f()b, d(|)a a8 b c4 a(| +%30 + )b d()gis, b(|)e, fis8()gis a4 b|c2 e,|f8 e d4~d8 e(fis)gis|a e a2 gis4| +%35 + a b c b8()a|b4 c d2~|d4 c8 b c4 a~|a gis8 gis gis2\prall|a4 e' a2~| +%40 + a gis\prall|a e|f a,|c8(b)a2 b8 cis|d()e f2 e8()dis| +%45 + e(b e)fis e(b e)g|fis(b,fis')g fis(b,fis')a|g(b,g')a g(b,g')b| + fis(b,fis')g fis(b,fis')a|g(fis)e2 fis4| +%50 + gis f'!(e\prall)d |f, d'(c\prall)b|d, b'(a\prall)gis|a8 d,(c)b a4 g'| + fis es'(d\prall)c| +%55 + es, c'(b\prall)a|c, a'(g\prall)fis|g8 c,(b)a g4 f'(|)e8 e'(c)b c()a e4~| + e8 d e fis d()g b4| +%60 + c,8(b'a)g a()fis c4~|c8 b c d b()d g4|a,8(g'fis)e fis()dis a4~| + a8 g a b g d' e g|fis(ais,fis')g fis(b,fis')g| +%65 + gis(e gis)ais b(e,g)b|a(cis,a')bes a(d,a')c|b(g c)cis d f,(bes)d| + c e,(c')d c f,(a)c|b d,(b')c b e,(b')d| +%70 + c a(c)e c a()b gis(|)a c(b)d c b(c)a|e4 fis g fis8()e|fis4 gis a2~| + a4 g8 fis g4 e~| +%75 + e dis8 cis dis2\prall|e4 b' e2~|e dis\prall|e r4 d|cis bes(a\prall)g| +%80 + bes, g'(()f\prall)e|g, e'(()d\prall)cis|d8()a d e f g as f|d e f4.(e8 d)c| + b c d4.(c8 b)a| +%85 + b()g b c d()e b d|e4 e, a2~|a4 g8 fis g2~|g4 a8 b c2~|c4 bes8 a bes2~| +%90 + bes4 c8 d es2~|es4 d8 cis d2~|d cis\prall|d4 e f d|e d' c b| +%95 + a8()e a2 gis4\prall| a2 b|c e,|c8(e)d2 e8()fis|g a bes2 a8()gis| +%100 + a(e a)b a(e a)c| b(e,b')c b(e,b')d|c(e,c')d c(e,c')e| + b(e,b')c b(e,b')d| c(a b)cis d()e f g| +%105 + f e d cis d4 d,~|d c8 b c4 d|e d e e,| + \bar "|."; +} + +\include "global-ii.ly" + +$violoncello_ii_staff = \context Staff = violoncello < + \property Staff.instrument = "cello" + \$violoncello_ii + \clef bass; + \$global_ii +> diff --git a/mutopia/J.S.Bach/Duette/violoncello-part.ly b/mutopia/J.S.Bach/Duette/violoncello-part.ly new file mode 100644 index 0000000000..bdac62748d --- /dev/null +++ b/mutopia/J.S.Bach/Duette/violoncello-part.ly @@ -0,0 +1,43 @@ +\header{ +filename = "violoncello-part.ly"; +title = "Vier Duette"; +description = "Four duets for Violino and Violoncello (Viola)"; +opus = "BWV"; +composer = "Johann Sebastian Bach (1685-1750)"; +enteredby = "jcn"; +copyright = "Public Domain"; +} + +\version "1.1.52"; + +\include "global-i.ly" +\include "violoncello-i.ly" + +%{ +\score{ + \$violoncello_i_staff + \paper{ + \translator { \BarNumberingStaffContext } + } + \midi{ +%urg, real/duration +% \tempo 4. = 69; + \tempo 4 . = 69; + } +} +%} + +\include "global-ii.ly" +\include "violoncello-ii.ly" + +\score{ + \$violoncello_ii_staff + \paper{ + castingalgorithm=0.; + \translator { \BarNumberingStaffContext } + } + \midi{ + \tempo 2 = 96; + } +} + diff --git a/mutopia/J.S.Bach/GNUmakefile b/mutopia/J.S.Bach/GNUmakefile index c7e99a35d2..bb33ed42dd 100644 --- a/mutopia/J.S.Bach/GNUmakefile +++ b/mutopia/J.S.Bach/GNUmakefile @@ -1,8 +1,8 @@ -# mutopia/J.S.Bach/Makefile +# mutopia/J.S.Bach/GNUmakefile depth = ../.. -SUBDIRS = Petites-Preludes Solo-Cello-Suites Cembalo-Partitas +SUBDIRS = Petites-Preludes Solo-Cello-Suites Cembalo-Partitas Duette EXTRA_DIST_FILES= diff --git a/ps/lily.ps b/ps/lily.ps index 75991aa5f0..3eeb87484a 100644 --- a/ps/lily.ps +++ b/ps/lily.ps @@ -18,9 +18,9 @@ closepath fill } bind def -/draw_decrescendo % width height cons +/draw_decrescendo % width height cons thick { - stafflinethickness setlinewidth + setlinewidth /cresc_cont exch def /cresc_ht exch def /cresc_wd exch def @@ -33,9 +33,9 @@ stroke } bind def -/draw_crescendo % width height cons +/draw_crescendo % width height cons thick { - stafflinethickness setlinewidth + setlinewidth /cresc_cont exch def /cresc_ht exch def /cresc_wd exch def @@ -99,9 +99,9 @@ } bind def % this is for drawing slurs. -/draw_bezier_sandwich +/draw_bezier_sandwich % thickness { - stafflinethickness setlinewidth + setlinewidth moveto curveto lineto diff --git a/ps/lilyponddefs.ps b/ps/lilyponddefs.ps index 9a369e9d51..6f2666422e 100644 --- a/ps/lilyponddefs.ps +++ b/ps/lilyponddefs.ps @@ -3,13 +3,11 @@ % hmm /setgray { 1 add } bind def -% urg -1 /stafflinethickness exch def +/stafflinethickness mudelapaperstaffline def +/staffheight mudelapaperstaffheight def /xoffset 30 def /yoffset 700 def -/staffrulethickness 1 def -/staffheight 20 def /placebox { @@ -22,151 +20,29 @@ grestore } bind def -/setbold % '(' text ')' -{ - settext -} bind def - -/settext % '(' text ')' -{ - gsave - % urg - /Times-Roman findfont 12 scalefont setfont - show - grestore -} bind def - -/setfinger % '(' text ')' -{ - gsave - % urg - /feta-nummer5 findfont 12 scalefont setfont - show - grestore -} bind def - -/setitalic % '(' text ')' -{ - gsave - % urg - /Times-Italic findfont 12 scalefont setfont - show - grestore -} bind def - -/vrule % width depth height -{ -} bind def - - % % FIXME. translate to middle of box. % /draw_box % breapth width depth height { + /h exch def + /d exch def + /w exch def + /b exch def gsave - 4 -1 roll - dup - neg 0 translate - 4 -1 roll - add - - setlinewidth - 0 exch moveto - neg 0 exch lineto stroke - - grestore -} bind def + 0 setlinewidth + b neg d neg rmoveto + b w add 0 rlineto + 0 d h add rlineto + b w add neg 0 rlineto + closepath % 0 d h add neg rlineto + fill -/extender % width -{ - gsave - 0 0 moveto - stafflinethickness 0.8 mul setlinewidth - 0 lineto stroke grestore } bind def -/widthbar % height width -{ - gsave - setlinewidth - 2 div dup neg 0 exch moveto - 0 exch lineto stroke - 2 div - grestore -} bind def - -/thickbar % height -{ - stafflinethickness 2 mul widthbar -} bind def - -/thinbar % height -{ - stafflinethickness 1.6 mul widthbar -} bind def - -/maatstreep % height -{ - thinbar -} bind def - -/fatdoublebar -{ - thickbar -} bind def - -/finishbar -{ - thickbar -} bind def - -/generalmeter % num den -{ - pop pop -} bind def - -/pianobrace % '(' char ')' -{ - gsave - /feta-braces20 findfont 12 scalefont setfont% - show - grestore -} bind def - -/doublebar -{ - thinbar -} bind def - -/repeatbar -{ - thickbar -} bind def - -/repeatbarstartrepeat -{ - thickbar -} bind def - -/startbar -{ - thickbar -} bind def - -/startrepeat -{ - thickbar -} bind def - -/stoprepeat -{ - thickbar -} bind def - /start_line { gsave @@ -181,7 +57,7 @@ grestore yoffset add /yoffset exch def % urg... - yoffset staffheight 8 mul sub /yoffset exch def + yoffset mudelapaperstaffheight 8 mul sub /yoffset exch def } bind def /unknown { (U) setbold } bind def diff --git a/scm/lily.scm b/scm/lily.scm index dbc8381e43..003a92a639 100644 --- a/scm/lily.scm +++ b/scm/lily.scm @@ -206,19 +206,22 @@ (embedded-ps ((ps-scm 'crescendo) w h cont))) (define (char i) - (string-append "\\show{" (inexact->string i 10) "}")) + (string-append "\\char" (inexact->string i 10) " ")) (define (decrescendo w h cont) (embedded-ps ((ps-scm 'decrescendo) w h cont))) + ;This sets CTM so that you get to the currentpoint + ; by executing a 0 0 moveto + (define (embedded-ps s) - (string-append "\\embeddedps{" s "}")) + (string-append "\\special{ps: @beginspecial @setspecial " s " @endspecial}")) (define (end-output) "\n\\EndLilyPondOutput") (define (experimental-on) - "\\turnOnExperimentalFeatures") + "") (define (font-switch i) (string-append @@ -228,11 +231,19 @@ (string-append "\\font" (font-switch i) "=" s "\n")) - (define (generalmeter num den) - (string-append - "\\generalmeter{" (number->string (inexact->exact num)) "}{" (number->string (inexact->exact den)) "}")) - - (define (header-end) "\\turnOnPostScript") + ;; UGH + + (define (header-end) (string-append +"\\special{!" +"/stafflinethickness \\mudelapaperstaffline0 def " ;may we burn in hell. +"/interline \\mudelapaperinterline0 %\n def " +"interline 3 div /bracket_b exch def " +"interline 2 mul /bracket_w exch def " +"stafflinethickness 2 mul /bracket_t exch def " +"interline 1.5 mul /bracket_v exch def " +"bracket_v /bracket_u exch def " +"50 /bracket_alpha exch def " +"1 setlinecap}")) (define (header creator generate) (string-append @@ -269,17 +280,17 @@ "\\placebox{" (number->dim y) "}{" (number->dim x) "}{" s "}")) - - ;;;; UGH! Junk \\bracefont ! - (define (pianobrace y) - (define step 1.0) - (define minht (* 2 mudelapaperstaffheight)) - (define maxht (* 7 minht)) - (string-append - "{\\bracefont " (char (max - 0 - (/ (- (min y (- maxht step)) minht) step))) "}")) - + ;;;; + (define (pianobrace y staffht) + (let* ((step 1.0) + (minht (* 2 staffht)) + (maxht (* 7 minht)) + ) + (string-append + (select-font (string-append "feta-braces" (number->string (inexact->exact staffht)))) + (char (max 0 (/ (- (min y (- maxht step)) minht) step)))) + ) + ) (define (rulesym h w) @@ -290,8 +301,8 @@ ) ) - (define (bezier-sandwich l) - (embedded-ps ((ps-scm 'bezier-sandwich) l))) + (define (bezier-sandwich l thick) + (embedded-ps ((ps-scm 'bezier-sandwich) l thick))) (define (start-line ht) @@ -310,8 +321,6 @@ "depth " (number->dim depth) "height " (number->dim height) " ")) - - (define (text s) (string-append "\\hbox{" (output-tex-string s) "}")) @@ -338,7 +347,6 @@ (define filledbox ,filledbox) (define font-def ,font-def) (define font-switch ,font-switch) - (define generalmeter ,generalmeter) (define header-end ,header-end) (define lily-def ,lily-def) (define header ,header) @@ -366,7 +374,6 @@ ((eq? action-name 'experimental-on) experimental-on) ((eq? action-name 'font-def) font-def) ((eq? action-name 'font-switch) font-switch) - ((eq? action-name 'generalmeter) generalmeter) ((eq? action-name 'header-end) header-end) ((eq? action-name 'lily-def) lily-def) ((eq? action-name 'header) header) @@ -432,9 +439,9 @@ (define (char i) (invoke-char " show" i)) - (define (crescendo w h cont) + (define (crescendo w h cont thick) (string-append - (numbers->string (list w h (inexact->exact cont))) + (numbers->string (list w h (inexact->exact cont) thick)) " draw_crescendo")) (define (dashed-slur thick dash l) @@ -446,9 +453,9 @@ (number->string (* 2 thick)) " ] 0 draw_dashed_slur")) - (define (decrescendo w h cont) + (define (decrescendo thick w h cont) (string-append - (numbers->string (list w h (inexact->exact cont))) + (numbers->string (list w h (inexact->exact cont) thick)) " draw_decrescendo")) @@ -471,17 +478,15 @@ (define (font-switch i) (string-append (font i) " ")) - (define (generalmeter num den) - (string-append (number->string (inexact->exact num)) " " (number->string (inexact->exact den)) " generalmeter ")) - (define (header-end) "") (define (lily-def key val) - (if (string=? (substring key 0 (string-length "mudelapaper") ) "mudelapaper") + (if (string=? (substring key 0 (min (string-length "mudelapaper") (string-length key))) "mudelapaper") (string-append "/" key " {" val "} bind def\n") (string-append "/" key " (" val ") def\n") ) ) + (define (header creator generate) (string-append "%!PS-Adobe-3.0\n" @@ -498,19 +503,29 @@ (define (placebox x y s) (string-append (number->string x) " " (number->string y) " {" s "} placebox ")) - (define (pianobrace y) - "" + + (define (pianobrace y staffht) + (let* ((step 1.0) + (minht (* 2 staffht)) + (maxht (* 7 minht)) + ) + (string-append + (select-font (string-append "feta-braces" (number->string (inexact->exact staffht)))) + (char (max 0 (/ (- (min y (- maxht step)) minht) step)))) + ) ) + (define (rulesym x y) (string-append (number->string x) " " (number->string y) " " " rulesym")) - (define (bezier-sandwich l) + (define (bezier-sandwich l thick) (string-append - (apply string-append (map control->string l)) + (apply string-append (map control->string l)) + (number->string thick) " draw_bezier_sandwich")) (define (start-line height) @@ -561,7 +576,6 @@ (define filledbox ,filledbox) (define font-def ,font-def) (define font-switch ,font-switch) - (define generalmeter ,generalmeter) (define pianobrace ,pianobrace) (define header-end ,header-end) (define lily-def ,lily-def) diff --git a/scm/script.scm b/scm/script.scm index fbeeae8615..534cffef89 100644 --- a/scm/script.scm +++ b/scm/script.scm @@ -35,7 +35,7 @@ ("upprall" . ((feta . ("upprall" . "upprall")) #f 0 1 0)) ("downprall" . ((feta . ("downprall" . "downprall")) #f 0 1 0)) ("segno" . ((feta . ("segno" . "segno")) #f 0 1 0)) - ("wheel" . ((feta . ("wheel" . "wheel")) #f 0 1 0))) + ("coda" . ((feta . ("coda" . "coda")) #f 0 1 0))) script-alist) ) diff --git a/scripts/convert-mudela.py b/scripts/convert-mudela.py index f7a68585e1..2c66ec21a4 100644 --- a/scripts/convert-mudela.py +++ b/scripts/convert-mudela.py @@ -362,6 +362,30 @@ if 1: 'deprecate \\grouping') +if 1: + def conv(lines): + newlines =[] + for x in lines: + x = re.sub ('\\\\wheel','\\\\coda', x) + newlines.append (x) + return newlines + + conversions.append ((1,1,55), conv, + '\\wheel -> \\coda') + + +if 1: + def conv(lines): + newlines =[] + for x in lines: + x = re.sub ('\\\\wheel','\\\\coda', x) + newlines.append (x) + return newlines + + conversions.append ((1,1,55), conv, + '\\wheel -> \\coda') + + ############################ diff --git a/scripts/ly2dvi.py b/scripts/ly2dvi.py index 25da9f8fce..ddc1138316 100644 --- a/scripts/ly2dvi.py +++ b/scripts/ly2dvi.py @@ -270,7 +270,6 @@ class TeXOutput: this.write(top) this.__mudelaDefs('') this.write("""\ -\\cmrtwenty% ugh \\makelilytitle """) diff --git a/tex/fetdefs.tex b/tex/fetdefs.tex index 8fca01e38f..730b17a85b 100644 --- a/tex/fetdefs.tex +++ b/tex/fetdefs.tex @@ -1,132 +1,3 @@ % fetdefs.tex % encapsulating tex backend for auto-generated feta definitions - -\def\placebox#1#2#3{% - \botalign{\hbox{\raise #1\leftalign{\kern #2{}#3}}}}% - -% -% -% UGH! JUNKME! -% -\def\fetsixteendefs{% - \font\fetasixteen = feta16 - \font\fetanummersixteen = feta-nummer8 - \font\dynfontsixteen = feta-din10 scaled \magstep 1 - \font\bracefontsixteen = feta-braces16 - \font\fingerfontsixteen = feta-nummer4 - \font\markfontsixteen = feta-nummer10 - \font\fetanummerjsixteen = feta-nummer5 -\def\currentsize{sixteen} -} - -\def\fettwentydefs{% - \font\fetatwenty = feta20 - \font\fetanummertwenty = feta-nummer10 - \font\dynfonttwenty = feta-din10 scaled \magstep 2 - \font\bracefonttwenty = feta-braces20 - \font\fingerfonttwenty = feta-nummer5 - \font\markfonttwenty = feta-nummer12 - \font\fetanummerjtwenty = feta-nummer7 -\def\currentsize{twenty} -} - -\def\fettwentysixdefs{% - \font\fetatwentysix = feta26 - \font\fetanummertwentysix = feta-nummer12 - \font\dynfonttwentysix = feta-din10 scaled \magstep 3 - \font\bracefonttwentysix = feta-braces16 - \font\fingerfonttwenty = feta-nummer7 - \font\markfonttwentysix = feta-nummer14 -\def\currentsize{twentysix} -} - -\def\fetthirteendefs{% - \font\fetathirteen = feta13 - \font\fetanummerthirteen = feta-nummer5 - \font\dynfontthirteen = feta-din10 scaled \magstep 0 - \font\bracefontthirteen = feta-braces16 - \font\fingerfontthirteen = feta-nummer3 - \font\markfonttwentysix = feta-nummer8 -\def\currentsize{thirteen} -} - -\def\fetelevendefs{% - \font\fetaeleven = feta11 - \font\fetanummereleven = feta-nummer5 - \font\dynfonteleven = feta-din10 % scaled \magstep-1 - \font\bracefonteleven = feta-braces16 - \font\fingerfonteleven = feta-nummer3 - \font\markfonttwentysix = feta-nummer7 - \def\currentsize{eleven} -} - -\def\sixteenfonts{\fetsixteendefs\cmrsixteen} -\def\twentyfonts{\fettwentydefs\cmrtwenty} -\def\twentysixfonts{\fettwentysixdefs\cmrtwenty} -\def\elevenfonts{\fetelevendefs\cmreleven} -\def\thirteenfonts{\fetthirteendefs\cmrthirteen} - -\def\bracefont{\csname bracefont\currentsize\endcsname} -\def\fetanummer{\csname fetanummer\currentsize\endcsname} -\def\dynfont{\csname dynfont\currentsize\endcsname} -\def\fingerfont{\csname fingerfont\currentsize\endcsname} -\def\fetanummerj{\csname fetanummerj\currentsize\endcsname} -\def\markfont{\csname markfont\currentsize\endcsname} - -%\sixteenfonts -%\twentysixfonts -%\twentyfonts -%\elevenfonts -%\thirteenfonts - -\def\switchfont#1{\def\currentsize{#1}\csname feta\currentsize\endcsname} - -\def\fetdef#1#2{% - \def#1{\hbox{\fetchar{#2}}}} -\def\fetchar#1{\char#1} -\def\show#1{\char#1} - -%\input feta16 -%\input feta20 - -% stacked numbers; overrules def in lilyponddefs -% widest num should be .40 balkheight -% oeps: \meter 12/8; -% -% \allabreve, \threetwometer etc. have zero as the second parameter. - -\def\generalmeter#1#2{% - \ifnum #2 = 0\relax - \vbox to 0pt{% - \vss - \hbox to 0.45\staffheight{\hss \fetanummer #1\hss}% - \vss}% - \else - \vbox to 0pt{% - \vss - \hbox to 0.45\staffheight{\hss \fetanummer #1\hss}% - \nointerlineskip - \hbox to 0.45\staffheight{\hss \fetanummer #2\hss}% - \vss}% - \fi} - -\def\pianobrace#1{{\bracefont\char #1}} -\def\staffbracket#1{{\centeralign{\bracketfont\char #1}}} - -\def\embeddedtex#1{} -\def\embeddedps#1{} -\def\embeddedmf#1#2{} -\def\embedclose{} - -\input lily-ps-defs - -% uncomment to use runtime MF -% -% \input lily-mf-defs - -\def\EndLilyPondOutput{% - \embedclose - \csname bye\endcsname -} - \endinput diff --git a/tex/lily-ps-defs.tex b/tex/lily-ps-defs.tex index 57a8108ffe..e94d198869 100644 --- a/tex/lily-ps-defs.tex +++ b/tex/lily-ps-defs.tex @@ -14,9 +14,6 @@ % ``compiles'' operatorname binding in the body of foo, making % the code faster, and more reliable (less flexible) -% transplant a TeX dimension into the PS output. -\def\PSsetTeXdimen#1{\expandafter\special{! /#1 (\the\csname #1\endcsname) deftexdimen}} - {% \def\par{ }% %Ugh. Don't try this at home, kids! % neat file-include trick by Piet van Oostrum @@ -43,47 +40,3 @@ \expandafter\special{! \includelilyps } } - -\special{! -% PS helper: convert (0.2pt) to the token 0.2 -/settexdimen -{ - /thestring exch def - thestring 0 thestring length 2 sub - getinterval - token - pop exch pop -} def -% -/deftexdimen -{ - settexdimen - def -} def -} - -\def\turnOnPostScript{% - \PSsetTeXdimen{stafflinethickness} - \PSsetTeXdimen{staffheight} - - % This sets CTM so that you get to the currentpoint - % by executing a 0 0 moveto - \def\embeddedps##1{% - \special{ps: @beginspecial @setspecial ##1 @endspecial} - } - % - - \special{! -/interline \mudelapaperinterline0 def % ugh. Only works x.yyyy floats -interline 3 div /bracket_b exch def -interline 2 mul /bracket_w exch def -stafflinethickness 2 mul /bracket_t exch def -interline 1.5 mul /bracket_v exch def -bracket_v /bracket_u exch def -50 /bracket_alpha exch def -staffheight 4 div /interline exch def -1 setlinecap} -} - -\def\turnOnExperimentalFeatures{} - diff --git a/tex/lilyponddefs.tex b/tex/lilyponddefs.tex index 5ef348b4dd..77b02d7f7a 100644 --- a/tex/lilyponddefs.tex +++ b/tex/lilyponddefs.tex @@ -2,7 +2,7 @@ %% include file for LilyPond %% %% this file defines various macros to accomodate lilypond output -%% +%% %% let's not make par before endinput % % TeXbook ex 7.7 @@ -16,185 +16,20 @@ \fi \SkipLilydefs % -\ifundefined{mudelacopyright} - \def\mudelacopyright{\copyright\ \number\year} -\fi -\ifundefined{mudelatagline} - \def\mudelatagline{Lily was here} -\fi -\ifundefined{documentclass} - \input lilypond-plaintex -\else - \input lilypond-latex -\fi - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% macros to shorten other definitions -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\def\musicmathdef#1#2{\def#1{\musicmathchar{#2}}} -\def\musicmathchar#1{\musicmathfont\char#1} - -\def\topalign#1{\vbox to 0pt{#1\vss}} \def\botalign#1{\vbox to 0pt{\vss #1}} - -\def\centeralign#1{\hbox to 0pt{\hss#1\hss}} \def\leftalign#1{\hbox to 0pt{#1\hss}} -\def\rightalign#1{\hbox to 0pt{\hss#1}} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -%% set up dimensions -% mudela-book don't like this: -%\parindent=0pt -\newdimen\interlinedist - -\newcount\n %duh. meaningful identifiers. -\newdimen\staffheight -\newdimen\stafflinethickness - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% set fonts and primary dimensions - -% -% TODO JUNK THIS -% -% ugh -\def\cmrtwenty{ - \font\smalltextfont=cmr8 - \font\textmusic=cmmi12 -} -\def\cmrsixteen{ - \font\smalltextfont=cmr6 - \font\textmusic=cmmi10 - } -\def\cmrthirteen{ - \font\smalltextfont=cmr6 - \font\textmusic=cmmi9 - } -\def\cmreleven{ - \font\smalltextfont=cmr5 - \font\textmusic=cmmi8 - } -%%%%%%% -% -\def\musixtwentydefs{ - \twentyfonts - \csname cmrtwenty\texsuffix\endcsname - \musixcalc -} - -\def\musixsixteendefs{ - \sixteenfonts - \csname cmrsixteen\texsuffix\endcsname - \musixcalc - } -\def\musixtwentysixdefs{ - \csname cmrtwentysix\texsuffix\endcsname - \twentysixfonts - \musixcalc - } -\def\musixthirteendefs{ - \thirteenfonts - \csname cmrthirteen\texsuffix\endcsname - \musixcalc -} -\def\musixelevendefs{ - \csname cmreleven\texsuffix\endcsname - \elevenfonts - \musixcalc -} - -\def\textsharp{\raise.4ex\hbox{\textmusic\char"5D}} -\def\textnatural{\raise.4ex\hbox{\textmusic\char"5C}} -\def\textflat{\raise.2ex\hbox{\textmusic\char"5B}} - - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -% do derivative calcs -% this has to be synced with the font definition -\def\musixcalc{ - \stafflinethickness=\mudelapaperrulethickness pt -} - - - -% stacked horizontal lines +% stacked horizontal lines \def\interscoreline{\vskip 16pt} - -% big fat marks, if errors are detected. -\def\columnerrormark{\placebox{-5pt}{0pt}{\bf C!}} -\def\scorelineerrormark{\placebox{0pt}{-10pt}{\bf L!}} -\def\errormark{{\bf E!}} -\def\unknown{% - %{\bf u} %FIXME -} - -\input fetdefs - - -% ugh -% see e.g. input/test/beam-pos.ly -% -% something's wrong with the aligment; sometimes all symbols -% look to be placed a bit too high (there's an ugly fix for -% the staccato-dot in script.cc) -% but this varies from line to line: it seems that xdvi -% does some rounding; i can't really check this from screen on i -% 600x600 res. -% -\def\rulesym#1#2{\dimen0=#1 %obsolete - \vrule height .5\dimen0 depth .5\dimen0 width #2} -\def\shiftedrulesym#1#2{\dimen0=#1% - \vrule height .7\dimen0 depth .3\dimen0 width #2} -\def\tinyrulesym#1#2{\dimen0=#1% - \vrule height .1\dimen0 depth .1\dimen0 width #2} -%would be nice for checking alignment -\def\openrulesym#1#2{\dimen0=#1% - \vbox to \dimen0{\vss% - \hbox{\vrule height .1\dimen0 width #2}% - \hbox{\vrule height .2\dimen0 width 0pt}% - \hbox{\vrule height .4\dimen0 width #2}% - \hbox{\vrule height .2\dimen0 width 0pt}% - \hbox{\vrule height .1\dimen0 width #2}% - \vss}} -%\let\rulesym\shiftedrulesym -%\let\rulesym\tinyrulesym -%\let\rulesym\openrulesym - -% the interline symbol. Redefine to remove it. -\def\defaultlineseparator{\vbox{\mussepline\vskip -5pt\mussepline}} -\def\lineseparator{\defaultlineseparator} -\def\beauty{% - \par\vskip 10pt plus 30pt minus 10pt\par - \hskip -5pt\lineseparator - \par\vskip 10pt plus 30pt minus 10pt\par -} - - -%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\def\placebox#1#2#3{% + \botalign{\hbox{\raise #1\leftalign{\kern #2{}#3}}}}% +\input lily-ps-defs +\def\EndLilyPondOutput{% + \csname bye\endcsname + } + + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + \def\postheader{} - -% -% macros suck. \ifundefined{nolilyfooter} gives wierd errors from time -% to time. -% - -% -% Warning: the order is conceptually weird. It says: - -% if not defined (``nolilyfooter''): -% do_footer () -% else -% dont_do_footer () -% -\ifx\csname nolilyfooter\endcsname\relax - \message{[footer defined]}% - \csname lilyfooter\texsuffix\endcsname% -\else - \message{[footer empty]} - \csname% - nolilyfooter\texsuffix\endcsname -\fi +\noindent diff --git a/tex/titledefs.tex b/tex/titledefs.tex index 5cda54d789..07b806cbb8 100644 --- a/tex/titledefs.tex +++ b/tex/titledefs.tex @@ -45,33 +45,33 @@ \def\makelilytitle{% \begin{center} \bfseries - \ifx\mudelanull\thetitle\else\sethuge{\thetitle}\\ \fi - \ifx\mudelanull\thesubtitle\else\setLarge{\thesubtitle}\\ \fi + \ifx\mudelanull\thetitle\else{\huge\thetitle}\\ \fi + \ifx\mudelanull\thesubtitle\else{\Large\thesubtitle}\\ \fi \end{center} \bigskip % urg \edef\saveparskip{\parskip}\parskip-5mm \begin{minipage}[t]{0.45\textwidth} - \ifx\mudelanull\thepoet\else\settext{\thepoet}\\ \fi - \ifx\mudelanull\themetre\else\settext{\themetre}\\ \fi + \ifx\mudelanull\thepoet\else{\thepoet}\\ \fi + \ifx\mudelanull\themetre\else{\themetre}\\ \fi \end{minipage}\hspace*{\fill} \begin{minipage}[t]{0.45\textwidth} \begin{flushright} - \ifx\mudelanull\thecomposer\else\setlarge{\normalfont\scshape\thecomposer}\\ \fi - \ifx\mudelanull\theopus\else\settext{\theopus}\\ \fi - \ifx\mudelanull\thearranger\else\settext{\thearranger}\\ \fi + \ifx\mudelanull\thecomposer\else{\large\normalfont\scshape\thecomposer}\\ \fi + \ifx\mudelanull\theopus\else{\theopus}\\ \fi + \ifx\mudelanull\thearranger\else{\thearranger}\\ \fi \end{flushright}% \end{minipage}\par \parskip\saveparskip - {\center\setlarge{\theinstrument}\par} - {\flushleft\setLarge{\normalfont\scshape\thepiece}} + {\center{\large\theinstrument}\par} + {\flushleft{\large\normalfont\scshape\thepiece}} \leavevmode } \def\makelilypiecetitle { \bigskip - {\flushright\settext{\theopus}\par} - {\flushleft\setLarge{\normalfont\scshape\thepiece}} + {\flushright{\theopus}\par} + {\flushleft{\large\normalfont\scshape\thepiece}} } \endinput -- 2.39.5