From: fred Date: Sun, 24 Mar 2002 19:32:29 +0000 (+0000) Subject: lilypond-0.0.32 X-Git-Tag: release/1.5.59~5347 X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=595fa4707518a19ff518e87607b22147ca680ad5;p=lilypond.git lilypond-0.0.32 --- diff --git a/Documentation/CodingStyle.pod b/Documentation/CodingStyle.pod index 2b86193338..fdbab0668b 100644 --- a/Documentation/CodingStyle.pod +++ b/Documentation/CodingStyle.pod @@ -34,7 +34,7 @@ in emacs: Class::member() Type Class::member_type_ -the C is a Hungarian notation postfix for $C$. +the C is a Hungarian notation postfix for $C$. See below =head2 COMMENTS @@ -42,25 +42,26 @@ the C is a Hungarian notation postfix for $C$. The source is commented in the DOC++ style. Check out doc++ at http://www.zib.de/Visual/software/doc++/index.html - /// short description + /** + short description. + Long class documentation. + */ class Class { - /// short description - /** - long description + /** short description. + long description */ Data data_member_; - /****************/ - /// short memo + /** - long doco of member() + short memo. long doco of member() */ member(); + + /// memo only + boring_member(); }; - /** - Class documentation. - */ Unfortunately most of the code isn't really documented that good. @@ -87,13 +88,207 @@ Standard methods: /// print *this (and substructures) to debugging log void print() const - /// add some data to *this; - add( .. ) /** + protected member. Usually invoked by non-virtual A_virtual_func() + */ + virtual do_A_virtual_func() + + /**add some data to *this. Presence of these methods usually imply that it is not feasible to this via a constructor */ + add( .. ) /// replace some data of *this set( .. ) +=head1 HUNGARIAN NOTATION NAMING CONVENTION + +Proposed is a naming convention derived from the so-called I. + +=head2 Hungarian + +The Hungarian Notation was conceived by +or at least got its name from, +the hungarian programmer x. +It is a naming convention with the aim +to make code more readable (for fellow programmers) +and more accessible for programmers +that are new to a project. + +The essence of the Hungarian Notation +is that every identifier has a part +which identifies its type +(for functions this is the result type). +This is particularly useful in object oriented programming, +where a particular object implies a specific interface +(a set of member functions, perhaps some redefined operators), +and for accounting heap allocated memory pointers and links. + +=head2 Advantages + +Another fun quote from Microsoft Secrets: + + + The Hungarian naming convention gives developers the ability + to read other people's code relatively easily, with a minmum + number of comments in the source code. Jon De Vann estimated + that only about 1 percent of all lines in the Excel product + code consist of comments, but the code is still very + understandable due to the use of Hungarian: "if you look at + our source code, you also notice very few comments. Hungarian + gives us the ability to go in and read code..." + + +Wow! If you use Hungarian you don't have to document your software! +Just think of the hours I have wasted documenting while this "silver bullet" +existed. I feel so stupid and ashamed! + +=head2 Disadvantages + +=over 5 + +=item * +more keystrokes (disk space!) + +=item * +it looks silly C + +=item * +it looks like code from micro suckers + +=item * +(which) might scare away some (otherwise good?) +progammers, or make you a paria in the free +software community + +=item * +it has ambiguities + +=item * +not very useful if not used consistently + +=item * +usefullness in I +(but how many classes is very large?) +remains an issue. + +=back + + + +=head2 Proposal + +=over 5 + +=item * +learn about cut and paste / use emacs or vi +or lean to type using ten fingers + +=item * +Use emacs dabbrev-expand, with dabbrev-case-fold-search set to nil. + +=item * +use no, or pick less silly, abbrvs. + +=item * +use non-ambiguous postfixes C +=back + +Macros, Cs and Cs are all uppercase, +with the parts of the names separated by underscores. + +=head2 Types + +=over 5 + +=item C +bool + +=item C +bit + +=item C +char + +=item C +float + +=item C +signed integer + +=item C +string class + +=item C +Zero terminated c string + +=item C +unsigned integer + +=back + +=head2 User defined types + + + /** Slur blah. blah. + (slur) + */ + class Slur {}; + Slur* slur_p = new Slur; + +=head2 Modifiers + +The following types modify the meaning of the prefix. +These are precede the prefixes: + +=over 5 + +=item C +array + +=item C +user built array. + +=item C +const + +=item C +temporary pointer to object (link) + +=item C

+pointer to newed object + +=item C +reference + +=back + +=over 5 + +=item C +Variable loop: an integer + +=item C +Temporary variable: an unsigned integer + +=item C +Variable Test: a character + +=item C +Variable first_name: a String class object + +=item C +Variable first_name: a C array + +=item C +Variable Loop: an C that you must delete + +=item C +Variable Loop: an C that you must not delete + +=back + + + diff --git a/Documentation/README.pod b/Documentation/README.pod index d8f0d1eae7..87e2b65fbe 100644 --- a/Documentation/README.pod +++ b/Documentation/README.pod @@ -22,7 +22,7 @@ ASCII script input, with identifiers (for music reuse), customizable notenames, customizable fontset =item * -multiple staffs in one score +Multiple staffs in one score. Each staff can have a different meters. =item * multiple stafftypes (melodic, rhythmic) [broken from pl28 on] @@ -33,15 +33,14 @@ triplets, general n-plet (triplet, quadruplets, etc.), lyrics =item * multiple voices within one staff; beams optionally shared -between voices. +between voices. (well, more than 2 voices won't look pretty) =item * multiple scores within one input file. Each score is output to a different file. =item * -clef changes, meter changes, cadenza-mode, declaring markings -in the music, repeat bars +clef changes, meter changes, cadenza-mode, key changes, repeat bars =back @@ -96,7 +95,7 @@ LilyPond does not display notes directly, nor will it be rehacked to be used interactively. LilyPond writes output to a file. It will not be extended to play music, or to recognize music. -We're thinking about adding MIDI output, though +It will output MIDI, though (at some stage) =item * LilyPond is intended to run on Unix platforms, but it should @@ -112,8 +111,6 @@ broken systems. =back - - =head1 OPTIONS =over 5 @@ -124,7 +121,9 @@ add F to the search path for input files. =item B<-d,--debug>, -debugging. LilyPond will read the file F<.dstreamrc>, which tells for what functions to produce copious debugging output. +Turn debugging info. LilyPond will read the file F<.dstreamrc>, which +tells for what functions and classes may produce copious debugging +output. =item B<-w,--warranty>, @@ -138,9 +137,9 @@ Set the default output file to F. Show a summary of usage -=item B<--init, -i> +=item B<-i,--init=>F -set init file (default: symbol.ini) +set init file (default: F) =item B<--include, -I> add to file search path. @@ -163,11 +162,13 @@ Compilation: =over 5 =item * - Unix. Any decent Linux distribution is fine. LilyPond is known to run -on Linux, AIX, Digital Unix and Solaris +Unix. LilyPond is known to run on Linux, AIX, Digital Unix and +Solaris (if you have the Cygnus WIN32 port of the GNU utils, it will +even work in Lose NT/95) =item * -GNU C++ v2.7 or better, with libg++. Version 2.7.2 or better recommended. +GNU C++ v2.7 or better, with libg++ installed. Version 2.7.2 +or better recommended. I doubt if it will compile with AT&T CC. =item * GNU make. @@ -176,7 +177,7 @@ GNU make. flex (2.5.1 or better) =item * -Bison or YACC. +Bison. =item * The "Flower" library, which should be available from the same @@ -192,6 +193,10 @@ LilyPond does use a lot of resources. For operation you need the following: =over 5 +=item * +a fast computer (well; full page of music typically takes 1 +minute on my 486/66, using the DEBUG compile) + =item * TeX @@ -266,10 +271,20 @@ quality. If you're not discouraged; this is what I type in my xterm: This is what the output looks like over here: - hw:~/musix/spacer$ lilypond input/maartje.ly - LilyPond 0.0.27/FlowerLib 1.0.23. Compile: Feb 5 1997, 00:28:13 (g++ 2.7.2) - Parsing ... [./init//symbol.ini[./init/dutch.ini][./init/script.ini][./init/table_sixteen.ini]][./input/maartje.ly] - Processing music ... Preprocessing ... Calculating ... Postprocessing ... + LilyPond 0.0.pre32-3/FlowerLib 1.0.27. Compile: Feb 18 1997, 11:21:57 (g++ 2.7.2) + Parsing ... [./init//symbol.ini[./init//dutch.ini][./init//script.ini][./init//table_sixteen.ini]][./input/wohltemperirt.ly] + Setting up music ...Processing music ............ + Preprocessing ... + Calculating column positions ... [3][6][9] + Postprocessing ... + warning: slope_index(): beam steeper than 0.5 (-0.555556) + warning: slope_index(): beam steeper than 0.5 (-0.588346) + warning: slope_index(): beam steeper than 0.5 (-0.523166) + warning: slope_index(): beam steeper than 0.5 (0.571915) + warning: slope_index(): beam steeper than 0.5 (-0.555556) + warning: slope_index(): beam steeper than 0.5 (-0.588346) + warning: slope_index(): beam steeper than 0.5 (-0.523166) + warning: slope_index(): beam steeper than 0.5 (0.571915) output to lelie.out... hw:~/musix/spacer$ tex test @@ -329,7 +344,7 @@ among others: lilygut, lilyinput, error, faq, =head1 REMARKS LilyPond has no connection with the music package RoseGarden, other -than the names being similar. +than the names being similar :-) =head1 HISTORY diff --git a/Documentation/error.pod b/Documentation/error.pod index 0a73c5b627..e6ae1a689c 100644 --- a/Documentation/error.pod +++ b/Documentation/error.pod @@ -10,22 +10,4 @@ A correctly parsed F does not guarantuee output. A lot (most) of the checking is done B parsing (some checks even are done after the break calc!); I'm sorry. -[outdated] - -The parser's job is to construct appropriate objects. It will B -detect parse errors. - - can't find slur to end - -Eg. with: - - {d g ( } ) g8 - -The {} part generates two one-note Cs, the C another, which -is translated to start right after the chord. Slurs are contained -within voices. LilyPond can't find a slur which started in this -C's voice. (what should C<{ d( g ( } )g8 )g8 }> look like? Use - - { \music { d } \music { g()g8 } } - - +[yep.. has to be written..] diff --git a/Documentation/index.pod b/Documentation/index.pod new file mode 100644 index 0000000000..06364733d4 --- /dev/null +++ b/Documentation/index.pod @@ -0,0 +1,76 @@ +=head1 NAME + +LilyPond -- the Webpage + +=head1 DESCRIPTION + +Excuse me for this poor page. I don't really have time for doing this.. + +[and yes, i write webpages in POD :-] + +=head1 DOCUMENTATION + +=item * + +README + + +=item * + +internal structures. + + +=item * + +notes on the input format + + +=item * + +FAQ + + +=item * + +errors + + +=item * + +The lilypond logo (in PNG format) + + + +=item * + +An example inputfile: from Bach's WTK: c-minor fugue + + +=item * + +A Gif file of the example + + +=item * + +PS output + + diff --git a/Documentation/lilygut.pod b/Documentation/lilygut.pod index 5633ee211a..e348b644d0 100644 --- a/Documentation/lilygut.pod +++ b/Documentation/lilygut.pod @@ -8,6 +8,10 @@ This page documents some aspects of the internals of LilyPond. Some of this stuff comes from e-mail I wrote, some from e-mail others wrote, some are large comments taken away from the headers +You should use doc++ to take a peek at the sources. + +[have to do more doco; see TODO] + =head1 OVERVIEW LilyPond is a "5-pass" system: @@ -170,6 +174,10 @@ registers. There are a few groups: =item * Staff wide, contains Local_key_register + Bar_register + Key_register + Meter_register + Clef_register =item * Voice group, contains @@ -186,36 +194,6 @@ Voice, contains =item 1 -=head1 COMMANDS - - -This table decribes the proper order for the different commands: - - -=head2 interpret - - which priority - ======================== - - key 200 - clef 190 - meter 180 - bar 170 - -=head2 typeset - - which priority - ======================== - - bar 100 - clef 90 - currentclef 80 - key 70 - currentkey 60 - meter 40 - - - =head1 BREAKING [Source files: F, F] @@ -317,39 +295,6 @@ concept of pre- and post-breaks. minimum distance to other columns, to prevent symbols from running into symbols of other columns.) -=head1 POINTERS - -This describes the ownership of certain classes in LilyPond. + -signifies a "list of". (This is not complete) - - Score: - Paperdef - Staff+ - Score_commands - Score_columns+ - PScore - - Staff: - Voice - Staff_column+ - Command+ - - - Voice: - Voice_element - - Voice_element: - Request+ - - - PScore: - PStaff+ - PCol+ - Idealspacing+ - Item+ - Spanner+ - Spanner+ (broken) - =head1 SEE ALSO =head2 References @@ -401,7 +346,8 @@ Muziek'' afstudeerscriptie Bestuurlijke informatica, no 45327, Erasmus universiteit Rotterdam, 1991. (``An automated system for printing music'' Master's Thesis Management and Computer Science.) -C. Roemer, The Art of Music Copying. Roerick music co., Sherman Oaks (CA), 1973. +C. Roemer, The Art of Music Copying. Roerick music co., Sherman Oaks +(CA), 1973. Rosecrans, Glen. Music Notation Primer. New York: Passantino, 1979. diff --git a/Documentation/lilyinput.pod b/Documentation/lilyinput.pod index dfdd597948..b7d4888006 100644 --- a/Documentation/lilyinput.pod +++ b/Documentation/lilyinput.pod @@ -4,7 +4,8 @@ LilyInput - LilyPond input format =head1 DESCRIPTION -This page documents the the LilyPond input format, mudela. +This page globally documents the the LilyPond input format, mudela. +To get a better impression, please study some examples. =head2 Overview diff --git a/NEWS b/NEWS index 1899d8f4c7..34f241725c 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,31 @@ +pl 32 + - multiple meters, see rhythm.ly + + +pl 32-2 + - skip syntax/Skip_req + - command carnage + - score_wide_music: commands in staff now override commands in score. +Internal: + - Key_register + - Bar_register + - Meter_register + - meters now kept in baseclass Staff_walker + - Score_walker (to ease MIDI output) +Doc: + - Hungarian doco added to CodingStyle + +pl 32-1 + - music processing speedup + - website added to doco + - clef must *inside* music + - fixed spurious "beam too narrow" messages. +Internal + - merge musical / non-musical staff_column + - musical/ non-musical requests + - Clef_register + - split up request.hh, Musical_req vs. Nonmusical_req + pl 31 Examples diff --git a/TODO b/TODO index ab8df44987..1803ad21c3 100644 --- a/TODO +++ b/TODO @@ -1,12 +1,29 @@ + +before 0.1 + + * martien.ly, standchen.ly + + * pushgroup, popgroup. + + * basic dynamics + + * triplet notation + + * midi output + + * decent TeX page layout + + * < .. > vs. { .. } + This is an assorted collection of stuff that will be done, might be done, or is an idea that I want to think about BUGS - * first clef isn't printed - * key undo - * key print if + * key print if clef change. + + * $cis ( | ) cis$ SEVERELY LACKING: @@ -24,11 +41,15 @@ INPUTLANGUAGE * rest name configurable + * '*' vs. '/' + SMALLISH PROJECTS + * bar numbers + * read from mmap directly: study yy_scan_buffer - * binsearch for notenames + * binsearch/hash for notenames * stafftypes: voice names/ instrument names. @@ -56,10 +77,9 @@ SMALLISH PROJECTS * fix linking: `Warning: size of symbol' -BIGGISH PROJECT + * collision Request_register. - * merge musical & non-musical column. Scrap Commands in favour - of Requests, and do multiparallel meters + * LilyPond .rpm and .deb DOC @@ -69,11 +89,13 @@ DOC * a decent webpage + * a test suite + FUTURE - * warning: beam(): Beam too narrow: beam gen not per stem + * Register_container baseclass - * put scripts on barcommands + * put scripts on bars * glissando @@ -85,7 +107,7 @@ FUTURE * Implement all requests - * merge key{item} & localkey{item} + * merge key{item} & localkey{item}? * QLP for beams? @@ -93,6 +115,10 @@ FUTURE * eentje/tweetje + * piano staff + + * abbreviations a4*8 + IDEAS * enter Requests directly @@ -108,8 +134,6 @@ IDEAS * merge Atom and Symbol? - * merge Command/Input_command. - * merge common code of Item, Atom/Molecule * Spacing_request for manually adjusting spacing @@ -125,4 +149,6 @@ IDEAS * PostScript output (esp. Beams, Slurs, etc) - * caching breakpoints + * caching breakpoints + + * use exceptions? \ No newline at end of file diff --git a/configure b/configure index 2857ad2aa4..b1b21e0631 100755 --- a/configure +++ b/configure @@ -3,7 +3,7 @@ PREFIX=${PREFIX:-.} echo using PREFIX=$PREFIX -NEEDFLOWERVER=1.0.26 +NEEDFLOWERVER=1.0.27 flowertar=flower-$NEEDFLOWERVER here=`pwd` cd .. @@ -29,3 +29,4 @@ cd $here echo '#define LIBDIR "'$PREFIX'/"'> hdr/config.hh touch Site.make make -f Initial.make +