X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=TODO;h=b38448220b9a332b20937e0db6ad5160eae9665a;hb=c330618390bab7301500f0462e299ba8115ab0bf;hp=20b8e9aea56b1e47ac62f12b93f1b7f0916f2866;hpb=450905eed19bced95484ebb2639aba2eeb250b06;p=lilypond.git diff --git a/TODO b/TODO index 20b8e9aea5..b38448220b 100644 --- a/TODO +++ b/TODO @@ -1,236 +1,411 @@ -before 0.1 +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 - * update 20 pt table +Most of the items are marked in the code as well, with full explanation. +grep for TODO and ugh/ugr - * decent TeX page layout +0.2: + * add a screenshot to the website. - * per-pstaff item-widths + * fix stdin input - * script priority + * LILYSOURCEDIR + + * documentation -This is an assorted collection of stuff that will be done, might be -done, or is an idea that I want to think about + * spurious "Junk beam" warnings -PARSER - * Duration-> Musical_duration, typedef Rational Duration? + * standchen: warning: Excentric column (Meter dims?) -BUGS + * naming Mozarella, Madeira, Muella? - * hairpin width + * versioning for Feta - * problems with empty staff. + * bf: abbrevs over whole note - * help-lines +STUFF - * help-lines for rests + * give Items/Spanners access to unbroken originals - * [c8. c32 c32] + * scoping for properties - * cis ( | ) cis + { c4 + \multi 2 < { \stemup .. } { \stemdown .. } > + c2 + } - * lilypond - -> crash + this modifies \stem for the c2 - * \stem -1 < chord > rest + * 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 -SEVERELY LACKING: + * optimal pagebreaking. - * SPEED! + * put errorlevel in Input class - * grace notes + * AFM for font input? -FURTHER FOR ORCHESTRAL SCORE: +3RD PARTY BUGS: - * multibar rests + * Rational infty(HUGE_VAL) on glibc / w32 - * barnumbers, markers + * Fix profiling. gprof bugreport? - * abbreviations c4=16 +PROJECTS -INPUTLANGUAGE + * Unicode support? + - 16 bit Strings + - -u switch + - detect of 16/8 bit files + - examples to go with it. - * relative mode for pitch entering + * Spring_spacer: + - write a faster Spring_spacer (without matrices if possible) + - use straight QP to find minimal "fitting force" + - relate energybound to linelen unitspace fontsize etc. + - used fixed point fp - * configure pitch_byte + * \header + - write perl script for handling it into databases + - write TeX macros to generate titles + - adapt make-website to use \header info. - * special key. + * Makefile stuff: + - Use Automake + - shared lib on Solaris too. + - check libtool + - generate stuff in out/default, out/sun5-irix etc iso out/ + and out-sun5/ - * figured bass? + * Add mudela-output to Rosegarden. - * transposition + * a musical dictionary. See Documentation/vocabulary-*, other +languages: + - italian + - german + - dutch + - swedish + .. ? - * rest name configurable + * chords + - guitar chords + - chord names + - basso continuo + - Syntax/parser + - MIDI output? + - typesetting - * Raw request syntax + * integrate midi-elts from mi2mu and lily? - * subtime with Subtle_reqs + * 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 -SMALLISH PROJECTS + * input converters + - NIFF? + - ABC? + - SMDL? - * bugreport to doc++ devel: struct not in class hier; public - virtual baseclasses + * add to MIDI output: + - tempo change + - repeat + - slurs + - dynamics etc. - * half-sharps, half-flats - - * key undo + * grace notes + - make separate class for Grace_*_engravers + (which is at Voice_gravs level) + - make encapsulated spacing problems. - * unix style paths for LILYINCLUDE EN + * On-demand loading of simple-engravers? - * rpm package buildroot + * accidentals per Voice_group - * indentable stream as baseclass for TeX stream, lily stream, Dstream. + * Convert all ref/bib stuff into BibTeX. - * caching Item/spanner dimensions. + * 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 - * key transposition - - * caching breakpoints / saving them. + * piano staff - * use dstream feature in mi2mu + * elaborate Staff_side baseclass: + - scripts + - text + - slur start/end + + * Output an output format independent (ofi) typeset file; and + make ofi2 TeX, MusixTex, Display PostScript, PostScript, + Ascii... interpreters. (difficult) + + - poor man's ascii output possible? + - MusixTeX output possible? (would have to be done before break calc.) + - NIFF ? + - Common Music Notation + - PostScript output (esp. Beams, Slurs, etc) + - Move all Score_elems, into libmutype.a + + * Documentation + - Doc Mutopia (Music To The People) + - Doc (C) stuff of sheet music + - a tutorial + + * TeX spanners , use texbeam.cc as an example (smallish) + - Glissando + - trill + - bracket + + * 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; } { } > + + * 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 + - allowing users to set them. + - penalties + - specify number of lines + - set linelength per line + + * Rhythmic staff. + + * Baroque superstaff - * qtor, btor, mtor-> tor( QUIET_ver ), tor( DEBUG_ver ), etc. +SEVERELY LACKING: - - declare notenametab? + * SPEED! - * use tors feature in lily + * multibar rests - * do conventional keys (C G A, F B E, a e fis, d as des, etc ), - besides lists of flats/sharps + * markers - * midi esp.: use I32 iso int where 32 bits are needed (or assumed...) - * fix Staff_elem::width() derivs to use offset_ +INPUTLANGUAGE - * parshape + * c4 4 4 4 for c4 c4 c4 c4? - * read from mmap directly: bugreport to flex developers-> - yy_scan_buffer in C++.. + * neatly (and readably) expressing concurrent + voices - * binsearch/hash for identifiers + * 4 ? - * stafftypes: voice names/ instrument names. + * Viola mode? - * Lookup::tex_glissando, Lookup::tex_bracket, (use texbeam.cc as an - example.) + @c c g e g + for + c g es g, - * Decent TeX titledefs (\tempo, \metron, etc. ) + @A c g e g + for + cis gis e gis - * command priority into enum + * relative mode for pitch entering - * don't broadcast Staff_sym + * bracket (bracketplets) - * C meter iso 4/4 + * configure pitch_byte - * textspanner: center position - * script-spacing + * rest name configurable - * Brackets + * Raw request syntax - * caching of Register_group_register hierarchies. +SMALLISH PROJECTS - * use (char *) iso. String for communication between lexer and - parser. + * progress when creating MIDI elts. - * configure idealspacing: arithmetic + * A range for context errors (eg. mark both { and }. ) - * collision Request_register. + * lyric in staff (sharpsharp in staff, text below) - * add (good guess of) width to lyric items + * write Dynamic_line (to group dynamics horizontally) - * midi output: eat-up dynamic, key/meter/tempo changes, and -write them neatly + * use Real for all y positions. + - use translate_axis( .. ,Y_AXIS) - * LilyPond .deb + * half-sharps, half-flats -DOC + * adaptive accidental spacing. - * beam generation. + * unix style paths for LILYINCLUDE env - * all errors + * handle EOF graciously in error messages. - * a test suite + * caching Item/spanner dimensions. -FUTURE + * centered whole rest - * Reg_configure_request + * qtor, btor, mtor-> tor( QUIET_ver ), tor( DEBUG_ver ), etc. + - use tors feature in lily (?) - * slurs per voicegroup. + * declare notenametab? - * slur parts as a script - - * multiple scripst. + * midi esp.: use I32 iso int where 32 bits are needed (or assumed...) - * mixed fontsizes + * parshape - * put scripts on bars + * Flower types: + - A decent scalar type + - String hash + - Pointer hash - * glissando + * binsearch/hash for identifiers - * guitar chord + * stafftypes: voice names/ instrument names. - * Junk Staff_column, and find the requests while walking the Voices.? + * TeX stuff: + - Decent TeX titledefs (\tempo, \metron, etc. ) + - decent TeX page layout - * MIDI repeat: make lily understand repeats + * lily \tempo + * C meter iso 4/4, idem for alla breve, etc. - * better beamslope calculation: QLP for beams? + * textspanner: center position - * implement better breaking algorithm + * 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: + + % toe to bheel four to five + % ^_u 4_5 + % - + % --|x-- --|x-- + % --|--- --|--- + % --|--- --|--- + (where "to" is a tiny bow) + + * 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 - * integrate Register/Midi stuff + * Output abstract data structures associated with +Mudela. * create libmudela, or liblily_frontend - * Horizontal_align_item, Vertical_align_item. + * move MIDI stuff (including Quantization) to a ANSI C libmidi library. - * move MIDI io to a ANSI C libmidi library. + * use an embedded language: Python, Scheme + for: + - Score_elems + - Engraver + - Translators + - Complex mudela? - * use an embedded language: scheme, lisp, S-lang, Perl, GUILE, ? - - Items/Spanners - - Registers + * y -dims in internote? Staff-space? X-dimensions? - * y -dims in internote? + * Spacing_request for manually adjusting spacing - * hack up mf sources for decent spacing info (and then maybe - read TFM directly) + * caching breakpoints - * merge Atom and Symbol? + * #c <-> cis - * merge common code of Item, Atom/Molecule + * breath marks - * Spacing_request for manually adjusting spacing + * used fixedpoint arithmetic for min. energy. - * Staff_group, Score_request_register. + * move towards incremental algorithms. - * SHIT: meters/bars should be aligned, which is difficult if - we get different keychanges in different staffs. + * far fetched language ideas + - design meta-language like TeX and Metafont + - programming/macros input - * Integrating (objectiveC) MusicKit with LilyPond - - * MusixTeX output possible? + * Global type registration. - * PostScript output (esp. Beams, Slurs, etc) + My_class * p = create_object( My_class ) + Type t = get_type ( *p ); + if ( t <= get_type( q )) + .. - * caching breakpoints + * naming of Voice_group/Voice - * use exceptions iso assert? + * benchmark band_matrices. - * #c <-> cis + * versioning stuff (cvt mudela, mudela, etc.) - * breath marks + * a real convert-mudela - * used fixedpoint arithmetic for min. energy. + * dots into separate item. + + * use String iso Text_def for lyrics. + + * use position 0 for center of staff iso bottom. + + * Klavarskribo? + + * lyrics in chords still fuck up. + + - rewire acknowledge_element() logic with a process_acknowledged() + + * pushgroup/popgroup + + + * multi threading? + - 1 thread per element/ 1 thread per line + - 1 thread per Translator + + * Use hooks/dependency graphs for properties