]> git.donarmstrong.com Git - lilypond.git/blobdiff - TODO
partial: 1.0.1.jcn
[lilypond.git] / TODO
diff --git a/TODO b/TODO
index 839412f6ede8edb06d479c6d7d36d1043bf148ab..7f9b738c65c41f91cae4624ce14c54f3e80c1091 100644 (file)
--- a/TODO
+++ b/TODO
-
-IMPORTANT
-
-       * update 20 pt table
-
-       * rename mf fonts to avoid conflicts with musixtex
-
-       * decent TeX page layout
-
-       * per-pstaff item-widths [JCN]
-
-       * script priority
-
-       * slur direction
-
-       * use own fonts/update musixtex fonts
-
-       * check return status in make_website
-
-       * a Hands on tutorial [HKN]
+Features you cannot find in the doco as working, should be mentioned here.
 
 This is an assorted collection of stuff that will be done, might be
 done, or is an idea that I want to think about
 
 Most of the items are marked in the code as well, with full explanation. 
-grep for TODO and ugh/ugr
-
-PARSER
-       * Duration-> Musical_duration, typedef Rational Duration?
+grep for TODO and ugh/ugr/urg
 
-HKN buglist:
+0.2:
+       * junk My_lily_parser::abbrev_beam_type_i_ 
 
-exitcode? (altijd 0)
+       * w32 blurb
 
-\bar || ook dunne streepjes? Sluit de balk niet af! (soms met de
-ruimte van een hele maat erachter (bij unmatching staffs)
+       * make sure all ex's have a mudela-version
 
-logfile?
+       * notes almost touch barline: whitespace at the begin of the bar 
+        should be at fixed at at least (about) one interline.
+        hack at spring-spacer.cc:662 doesn't work anymore
 
-Gepunteerde rusten kloppen niet (punt eronder/boven ipv ernaast)
+       * do rest-collisions for Multi_measure_rests as well.
 
-Hele rusten ook in andere maatsoort dan 4/4 (en centreren in de maat)
+       * split error/warning in error/warning/non_fatal_error
 
+       * add a Duration_convert member to Duration_iter to set parameters.
+       Junk global duration settings. 
+       * deps for ly2dvi
 
+       * fix .txt rules / make dist from freshly configured tar-ball
 
-------------------------\
-barcheck failed in lyric mode -> assert (zie barcheck.ly) (0.0.57)
-------------------------/
+       * document use of ly2dvi more prominently
 
-optie om te stoppen na eerste barcheck fail? (en wellicht in eerder
-stadium van precessing)
+       * clean up abbrev/plet/beam/abbrevbeam/duration mess in parser.
 
-noten staan vaak te dicht aan de rechterkant van de maatstreep.
+       * minimum length second part broken tie
+       * en-,discouraged linebreaking: 
+         - handle DISALLOW < penalty > FORCE
+         - discourage breaking of slurs
 
-optie om nummers/markers boven maatstrepen te zetten
+       * multibar rest
+         - symbol(s)
 
-tekst staat erg ver van notenbalken af
+       * fix variable define/lookup parser global<->paper
 
-barcheck her-synchroniseren? (evt met optie)
+       * fix position of bar number
 
-script ^"3" onder ondanks boven?
+       * fix position of brace in conjunction with bracket
 
-symbolen voor triller? (dus "tr---")
+       * fix title/instrument placements; see input/test/title.ly
 
-mogelijkheid om complete regions te commenten (met /* */ ofzo)
+       * <\voiceone c4. \voicetwo c4>
 
-waarom geen ; achter dingen in \paper? (\textwidth 180\mm)
-(sowieso: wanneer wel en geen ; ?)
+       * add full cello suites to web site (kom op, Maarten!)
 
-Onduidelijk wanneer wel en geen \ voor een woord. Maak liever
-verplichte regels
+       * rename
+         - plet -> tuplet
+         - grav -> engraver
+         - measure -> bar
+         - abbreviation-beam -> (measured/unmeasured) tremolo
 
-implementeren versieringen door duration *0 ofzo? (geeft nu assertion,
-zie duration0.ly)
+       * libtoolize flowerlib
+       * shared lib
 
-midi: instrumenten definieren?
-midi: tempo halverwege het stuk wijzigen?
-midi: gebonden noten niet herhalen?
+       * robustify Beam (in case of no stems, 32nd notes)
 
-TeX literals invoegen?
+       * check for groff / troff/ nroff et
 
---------/\
-Dit geeft gigantische trubbels
-        < [d8.( e'32*2/3 d'32*2/3 cis'32*2/3 b16 d'16 cis'16 )b'16]
-          [b8.  cis'32*2/3 b32*2/3 a32*2/3     gis16 fis16 e16 d16] >
-(zie file junkjunk.ly) Ik had natuurlijk wat accolades moeten
-plaatsen, maar ja...
+       * use kpsepath to find all TeX dirs
+       - configure.in 
+       - clean-fonts.sh
 
---------/\
-Inconsequent: ene keer wel, andere keer niet parse error?
-ipt.ini][/usr/local/share/lilypond/init//table_sixteen.ini]]./lacidarem.ly: 56: 
-error: parse error:
-        <[d8. b8.> \duration 32; <e'*
-                                     2/3 cis'*2/3> <d'*2/3 b*2/3>
-./lacidarem.ly: 56: error: parse error:
-        <[d8. b8.> \duration 32; <e'*2/3 cis'*2/3> <d'*
-                                                       2/3 b*2/3>
-./lacidarem.ly: 57: error: parse error:
-        <cis'*
-              2/3 a*2/3> \duration 16; <b gis> <d' fis> <cis' e> <b' d]> |
-]./lacidarem.ly: 65: warning: Score contains errors. Will not process it. :
---------/\
-De beam van de triool klopt niet.
-        <[d8. b8.> \duration 32; <e'32*2/3 cis'32*2/3> <d'32*2/3 b32*2/3>
-        <cis'32*2/3 a32*2/3> \duration 16; <b gis> <d' fis> <cis' e>
-<b d]> |
-(zie ook ergens in lacidarem-pianoI.ly)
---------/
-scales.ly compileert niet meer (vanwege transpose?)
+       * nicen examples:
+       - remove all \multi
+       - break-up heavily-nested score blocks
 
-Lengte van de stokken klopt vaak niet, zie bijv. de eerste maat van
-langestok.ly.
+       * disable spaces in TeX stuff
+       
+       * handle ^C for tmp/file creation.
 
-Triolen enzo: het zou handig zijn als je het cijfer "3" ook _tussen_
-twee noten kon plaatsen. Dat is bijvoorbeeld nodig in
-c4*2/3 c8*2/3
+       * dots & rest collisions.
 
----------------\
-\bar "||" \meter 6/8; op het eind van de regel staat door elkaar
-gedrukt.
+       * add a screenshot to the website. :)
 
+       * documentation
+       - introduction?
+       - info?
+       - LaTeX?
+       - more manpages?
 
-BUGS
+       * naming Mozarella, Madeira, Muella?
 
-       * detect -pipe
-       
-       * redo timing stuff <-> pulk to allow \meter 2/4; e2. to work
-       out correctly
+       * versioning for Feta
 
-       * key transposition.
+       * the warning about the negative slur/tie length appears twice
+       which is irritating.
 
-       * hairpin width
+       * The `3' in the meter key is a one or two pixels too thin (at 600dpi)
+       in the middle:
 
-       * help-lines for rests
+       * the tenuto script is too long and too thin
 
-       * [c8. c32 c32]
+       * the bracket is ugly (wings are too parabolic, should be more circular)
+       * better hshift (dots, distance, head dependent)
 
-       * cis ( | ) cis
+       * stem len adjustable
 
-       * lilypond - -> crash
+STUFF
+       * convert-mudela:
+       - automatically add  a \version if not present.
+       - better parsing
+       - make smarter
+       - fix convert-mudela -e *.ly ;
+       - convert-mudela -e empty.ly
+       - redo in python.
 
-       * chlapik balk ruimte 
+        * clefs (AG): The "8" should appear closer to the actual clef,
+          touching it.
 
-               * standchen triool beam up/down
+       * give Items/Spanners access to unbroken originals      
 
+       * generalised scopes for Parser/identifiers.
 
-SEVERELY LACKING:
+       * speed up PS code.
 
-       * SPEED!
+       * scoping for properties
 
-       * grace notes
+       {       c4
+               \multi 2  < { \stemup .. } { \stemdown .. } >
+               c2 
+       }
 
-FURTHER FOR ORCHESTRAL SCORE:
+       this modifies \stem for the c2
 
-       * multibar rests
+       * emacs mudela-mode
+       -  should handle block comments too.
+       -  handle lexer modes (\header, \melodic, \lyric) etc.
+       -  indentation
+       -  notenames?
+       -  fontlock: \melodic \melodic
 
-       * barnumbers, markers
+       * use properties for:
+       - Text_style
+       - default_octave
+       - plet?
+       - default_duration?
+       - default abbreviation
+       - Staff_sym size
+       - default tempo.
+       - font size
+       - bartypes (get rid of derived Span_bar_engravers)
+       - cadenza mode? 
+       - MIDI instrument
+       - staff title
 
-       * abbreviations c4=16
+       * page handling:
+       - PS output
+       - optimal pagebreaking.
 
-       * doublebar "||", finishbar "|||" (or "||." ?)
+       * put errorlevel in Input class
 
-INPUTLANGUAGE
+       * AFM for font input?
 
-       * relative mode for pitch entering
 
-       * configure pitch_byte
+3RD PARTY BUGS:
 
-       * special key.
+       * tried egcs 1.0.2: failed on lily/stem.cc -> flower/include/interval.hh
+         should narrow down and send bug report
 
-       * figured bass?
+       * gcc 2.8.1: see ice and RESIZE_ICE
 
-       * rest name configurable
+       * xdvi: PS in magnifying glass.
 
-       * Raw request syntax
+       * GNU patch 2.1: hardcoded limit of 1024 to the linelength
 
-       * subtime with Subtle_reqs
+       * GNU diff 2.7: diff -rN does not see a new directory with empty file
 
-SMALLISH PROJECTS
+       * GNU patch 2.1: <must find simple example> if patch chokes on a
+         hunk, or on allegedly unsorted hunks in a diff, it may stop 
+         without a trace of failure (create .rej file, print error or 
+         dump core) and just ignore any further diffs.
 
-       * write Rest_collision
+PROJECTS
 
-       * use Real for y positions.
+       * Unicode support?
+       - 16 bit Strings
+       - -u switch
+       - detect of 16/8 bit files
+       - examples to go with it.
 
-       * shared lib on Solaris too.
+       * Spring_spacer:
+       - write a faster Spring_spacer (without matrices if possible)
+       - use straight LP to find minimal "fitting force"
+       - relate energybound to linelen unitspace fontsize etc.
+       - used fixed point fp
 
-       * bugreport to doc++ devel: struct not in class hier; public
-       virtual baseclasses
+       * \header
+       - output header info to MIDI too.
 
-       * cleanup lily-proto.hh and proto.hh
+       * Add mudela-output to Rosegarden.
 
-       * half-sharps, half-flats
-       
-       * key undo
+       * a musical dictionary. See Documentation/vocabulary-*, other
+languages:
+       - explanation
+       - italian
+       - german
+       - dutch
+       - swedish
+        .. ?
+
+       * chords
+       - guitar chords
+       - chord names
+       - basso continuo
+       - Syntax/parser
+       - MIDI output?
+       - typesetting
 
-       * unix style paths for LILYINCLUDE EN
+       * integrate midi-elts from mi2mu and lily?
 
-       * indentable stream as baseclass for TeX stream, lily stream, Dstream.
+       * Debug logs:
+       - derive lily_stream, Dstream, texstream from ostream?
+       - indentable stream as baseclass for TeX stream, lily stream, Dstream.
+       - use dstream feature in mi2mu
+       - integrate IO checking into stream class
+
+       * input converters
+       - NIFF?
+       - ABC? 
+       - SMDL?
+
+       * add to MIDI output:
+       - tempo change
+       - ornaments (and trills?)
+       - repeat
+       - slurs
+       - accents
+       - dynamics
+       - account for rhythmic position in measure
+       - etc.
 
-       * caching Item/spanner dimensions.
+       * grace notes
+       - make separate class for Grace_*_engravers 
+       (which is at Voice_gravs level)
+       - make encapsulated spacing problems.
 
-       * key transposition
-       
-       * caching breakpoints / saving them. 
+       * accidentals per Voice_group
 
-       * hack ElectricFence to use with LD_PRELOAD
+       * Output class, handles : (smallish)
+       - help text /(c) notice?
+       - version line
+       - warning /errors/progress
+       - abort on error/warning; exit status
+       - quiet/ignore-version options
+       - logfile output
 
-       * use dstream feature in mi2mu
+       * piano staff
 
-        * qtor, btor, mtor-> tor( QUIET_ver ), tor( DEBUG_ver ), etc.
+       * elaborate Staff_side baseclass:
+       - scripts
+       - text
+       - slur start/end
 
-       - declare notenametab?
+       * cautionary accidental
 
-       * use tors feature in lily
+       * Output an output format independent (ofi) typeset file; and 
+         make ofi2 TeX, MusiXTex, Display PostScript, PostScript,
+         Ascii... interpreters. (difficult)
+
+       - NIFF ?
+       - Common Music Notation
+       - PostScript output (esp. Beams, Slurs, etc)
+       - Move all Score_elems, into libmutype.a
+       * Documentation
+       - Doc (C) stuff of sheet music
+       - a better format?  SGML?  TeX?  Info?
+       - a tutorial
+
+       * TeX spanners , use texbeam.cc as an example (smallish)
+       - Glissando
+       - trill
+
+       * Rewrite Stem, Beam and Rhythmic_grouping (hairy)
+       - [c8. c32 c32]
+       - doc on Rhythmic_grouping
+       - general shaving on Beam and Stem
+       - use plet grouping
+       - separate visual from rhythmic info even more
+       - beams over bars
+
+       * Redo fonts
+       - adapt for multiple font sizes.
+
+       * lines:
+       - Ledger lines, should be separate item: Ledger_lines, Ledger_lines
+       - set different line sizes / thicknesses
+       - beam stem showthrough, inter beam sizes (french vs german style)
+
+       * Collisions
+       - left/right note balls should be handled by Collision:
+       < \multi 2; { \stem 1; <b c> } { <f as b> } >
+
+       * Keys:
+       - merge key{item} & localkey{item}?
+       - do conventional keys (C G A, F B E, a e fis, d as des, etc ), 
+         besides lists of flats/sharps, possibly via declaration
+       - key transposition. 
+       - key undo: \key bes; .. . \key; should print natural   
+       - special key: \key bes 'b bis';
+       - spacing, national styles?
+
+       * Support for TAB
+       - redo Notehead to allow digits as heads
+       - add a \tablature {} lexer mode for easy entering
+
+       * should adjust stemlength for flag number.
+
+       * breaking:
+       - caching breakpoints
+       - saving them
+       - penalties
+       - specify number of lines
+
+       * Rhythmic staff.
+
+       * markers
 
-       * do conventional keys (C G A, F B E, a e fis, d as des, etc ), 
-         besides lists of flats/sharps
+INPUTLANGUAGE
 
-       * update for T70 fonts or newer
+       * c4 4 4 4 for c4 c4 c4 c4?
 
-       * midi esp.: use I32 iso int where 32 bits are needed (or assumed...)
+       * neatly (and readably) expressing concurrent
+       voices
 
-       * parshape
+       * <c f a>4 ?
 
-       * read from mmap directly: bugreport to flex developers->
-       yy_scan_buffer in C++..
+       * Viola mode?
 
-       * binsearch/hash for identifiers
+               @c c g e g 
+       for
+               c g es g, 
 
-       * stafftypes: voice names/ instrument names.
+               @A c g e g
+       for
+               cis gis e gis
 
-       * Lookup::tex_glissando, Lookup::tex_bracket,  (use texbeam.cc as an
-       example.)
+       * relative mode for pitch entering
 
-       * Decent TeX titledefs (\tempo, \metron, etc. )
+       * bracket (bracketplets)
 
-       * C meter iso 4/4
+       * configure pitch_byte
 
-       * textspanner: center position
+       * rest name configurable
 
-       * script-spacing
+       * Raw request syntax
 
-       * Brackets
+SMALLISH PROJECTS
 
-       * caching of Register_group_register hierarchies.
+       * progress when creating MIDI elts.
 
-       * use (char *) iso. String for communication between lexer and
-       parser.
+       * A range for context errors (eg. mark both { and }. )
 
-       * configure idealspacing: arithmetic spacing
+       * lyric in staff  (sharpsharp in staff, text below)
 
-       * midi output: eat-up dynamic, key/meter/tempo changes, and
-write them neatly
+       * write Dynamic_line (to group dynamics horizontally)
 
-       * LilyPond .deb
+       * use Real for all y positions.
+       - use translate_axis( .. ,Y_AXIS) 
 
-DOC
+       * half-sharps, half-flats
 
-       * beam generation.
+       * adaptive accidental spacing.
 
-       * all errors
+       * handle EOF graciously in error messages.
+oo
+       * caching Item/spanner dimensions.
 
-       * a test suite
+       * centered whole rest
 
-FUTURE
+        * qtor, btor, mtor-> tor( QUIET_ver ), tor( DEBUG_ver ), etc.
+       - use tors feature in lily (?)
 
-       * tie a ~ b, move slur reg into voice-group.
+       * declare notenametab?
 
-       * Reg_configure_request
+       * midi esp.: use I32 iso int where 32 bits are needed (or assumed...)
 
-       * bring Collision::do_pre_processing to haircutter
+       * Flower types:
+       - A decent scalar type
+       - String hash
+       - Pointer hash
 
-       * slurs per voicegroup.
+       * binsearch/hash for identifiers
 
-       * slur parts as a script
-       
-       * mixed fontsizes
+       * stafftypes: voice names/ instrument names.
 
-       * put scripts on bars
+       * TeX stuff:    
+       - Decent TeX titledefs (\tempo, \metron, etc. )
+       - decent TeX page layout
 
-       * glissando
+       * lily \tempo
 
-       * guitar chord
+       * C meter iso 4/4, idem for alla breve, etc.
 
-       * Junk Staff_column, and find the requests while walking the Voices.?
+       * textspanner: center position
 
-       * MIDI repeat: make lily understand repeats
+       * Brackets
+       
+       * Scripts:
+       - stack scripts in chords:
+         % fingering:        footing:
+           < a-4 c-2 g-1 >   < c-\ltoe e-\lheel >
+       - script-spacing
+       - slur parts as a script
+       - stack parameterised scripts for fingering and footing:
 
-       * better beamslope calculation: QLP for beams?
+            % toe to bheel   four to five
+           %   ^_u            4_5  
+           %     -                           
+           %  --|x--         --|x--
+           %  --|---         --|---
+           %  --|---         --|---
+          (where "to" is a tiny bow)
 
-       * implement better breaking algorithm
+       * auxilliary file for caching info.
 
        * Text_crescendo
 
        * clean solution for staffsize in items.
 
-       * merge key{item} & localkey{item}?
-
        * revise calcideal
 
        * volta
 
-       * piano staff
-
-       * vertical spanner
-
 IDEAS
 
-       * output an intermediate format, move backend/output routines into 
-       interpreter
-
-       * scoping in Lexer: do general id- assignments in mudela.
-
-       ID '=' EXPR;
-
-       * integrate Register/Midi stuff
+       * Output data structures of Mudela in XML/SGML.
 
        * create libmudela, or liblily_frontend
 
        * move MIDI stuff (including Quantization) to a ANSI C libmidi library.
 
-       * use an embedded language: scheme, lisp, S-lang, Perl, GUILE, ?
-       for 
-               - Items/Spanners
-               - Registers
-
-       * y -dims in internote?
+       * use an embedded language: Python, Scheme
+       for: 
+               - Score_elems
+               - Engraver
+               - Translators
+               - Complex mudela?
 
-       * hack up mf sources for decent spacing info (and then 
-       read TFM directly, for text too)
-
-       * merge Atom and Symbol?
-
-       * merge common code of Item, Atom/Molecule
+       * y -dims in internote? Staff-space? X-dimensions?
 
        * Spacing_request for manually adjusting spacing
 
-       * Staff_group, Score_request_register.
+       * caching breakpoints
 
-       * SHIT: meters/bars should be aligned, which is difficult if
-       we get different keychanges in different staffs.
+       * #c <-> cis
 
-       * Integrating (objectiveC) MusicKit with LilyPond?
-               
-       * MusixTeX output possible?
+       * breath marks 
 
-       * PostScript output (esp. Beams, Slurs, etc)
+       * used fixedpoint arithmetic for min. energy.
 
-       * poor man's ascii output possible?
+       * move towards incremental algorithms.
 
-       * Output an output format independent (ofi) typeset file; and 
-         make ofi2 TeX, MusixTex, PostScript, Ascii... interpreters.
+       * far fetched language ideas
+       - design meta-language like TeX and Metafont
+       - programming/macros input
 
-       * caching breakpoints
+       * Global type registration.
 
-       * use exceptions iso assert?
+               My_class * p = create_object( My_class )
+               Type t = get_type ( *p );
+               if ( t <= get_type( q ))
+                       ..
 
-       * #c <-> cis
+       * versioning stuff (cvt mudela, mudela, etc.)
 
-       * breath marks 
 
-       * used fixedpoint arithmetic for min. energy.
+       * dots into separate item.
 
-       * default convert mudela-file.ly -> mudela-file.tex
-         - move test.tex: '\include lilyponddefs' -> 
-           mudela-file.ly: '\texinclude "lilyponddefs";'
-           (junking test.tex and latex.test)
-         - rename {standchen,scsii-menuetto,...}.tex
+       * use String iso Text_def for lyrics.
 
-       * (related with above) --simple-mudela option for lily,
-         to lily input files with one-voice simple mudela 
-         (no red tape)
+       * Klavarskribo?
 
-       * stack scripts in chords:
-         % fingering:        footing:
-           < a-4 c-2 g-1 >   < c-\ltoe e-\lheel >
-
-       * parameterised scripts for fingering and footing:
+       * lyrics in chords still fuck up.
 
-            % toe to bheel   four to five
-           %   ^_u            4_5  
-           %     -                           
-           %  --|x--         --|x--
-           %  --|---         --|---
-           %  --|---         --|---
-          (where "to" is a tiny bow)
+       * pushgroup/popgroup
 
+       * Use hooks/dependency graphs for properties