X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=TODO;h=ee47eb587a64ee5ed28cba3d0f41b07140a08c77;hb=f798a4c8737f0d279fcf54ba4f0951074565fa76;hp=cfc892e184165a95f7cc1fd69c92edb1007bb892;hpb=61c4b07cddc6231c3ca4b45a0aa86d27e25110b9;p=lilypond.git diff --git a/TODO b/TODO index cfc892e184..ee47eb587a 100644 --- a/TODO +++ b/TODO @@ -1,547 +1,2 @@ --*-outline-layout:(2 (-1 -1 0 :) 0);outline-stylish-prefixes:nil -*- -* GNU LilyPond TODO -Features you cannot find in the documentation 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 we want to think about. - -Most of the items are marked in the code as well -Grep -i for TODO, FIXME and ugh/ugr/urg. - -.* TODO before 1.2 -. * Break_req handling is silly (break_forbid () + \break fucks up.) -. * chord names. - -.* Cleanups needed -. * \$ and $ identifier syntax in examples. -. * Junk ghost positioning objects eg, Script leans on Staffside - leans on Staff. -. * bracket ps code. -. * mudela-book. -. * Key_engraver, Local_key_item -. * Think of comprehensive solution for "if (grace_b == self_grace_b_)" -. * String[String.length] doesn't trap. -. * y dimension units: staffspace vs. Point -. * Beam -. * Stem -. * Rhythmic_column and interaction stem/rhythmic_column/note_head/dots. -. * Duration -. * clef engraver -. * parser -. * Lookup::text -> needs to be TeX independent. -. * junk Music_iterator::first_b_ -. * Bezier - -.* BUGS -. * [c8. c16 c16 c16] in 6/8 timesig. -. * -> \context Staff < -> {\voiceone c''4. r8} -> {\voicetwo c,4 r4} -> > - -.* STUFF -. * We need feta-din*.mf files for more sizes than 10. -. * align left edge of broken (de)cresc/slur/tie/tuplet/volta -. * fix dynamics decently, ie. use kerning & ligatures. -. * key restorations & repeats -. * paperXX.ly \quartwidth, font setting not up to date. (Should read from AFM?) -. * * auto melismaBusy for beams. -. *In Caro Mio Ben, bar 8, there's a syllable that starts on a note, and -ends on a pair of grace notes. Standard practice is to mark this with -a slur starting on the main note and ending on the grace note, so a -singer knows where to break the words. - -In bar 27, there's a crescendo that's supposed to start at the start -of the grace notes and extend to the note after the grace notes. -. * 5. Sometimes lyrics extend past the right end of the staff. I guess that -this is a similar problem (if not another symptom of the same problem) as -one of the spacing bugs mentioned in the TODO. -. * 4. Lyrics and grace sections don't go too well together. - The words are aligned with the main note, not the start of the - grace note. This is usually wrong, but is sometimes right. -. * decimal point in \paper {} -. * tie-direction -. * repeats and partial measures. -. * rhythmic staff & accidentals. -. * use melismaBusy in Lyric context to typeset melismata correctly. -. * ly2dvi/lilypond logfile. -. * def stem dir. -. * hang Item on Spanner -. * do --safe for PS output? -. * msgfmt -o check? -. * collision of lyrics with span_bars. See star-spangled. -. * Auto_beam debugging output (waarom/wanneer heb jij die weggehaald?) -. * It is impossible to typeset two textual scripts that are stacked - on top of eachother and avoids note collisions and at the same - time are typeset with different textStyle. I tried to move around - the text_engraver and other engravers between Voice and Thread - but the granularity is not fine enough, the scripts have to - share the same engraver in order to be get correct vertical - position but than they cannot have different style. - In my opinion, all scripts that share the same staff, should - be stacked vertically, avoiding collisions with the notes - in all voices. - -. * break priority setting from SCM. -. * Matanya's tips: -. * don't shorten stems/staffs closer to each other. -. * accidentals closer to note head -. * to space the staffs/staffgroups contained in the score. -. * heavier beams? - -. * tuplets that are written as "number : note", for example - "3 : [image of a half note here]". possible? -. * a note with a circle after it, meaning: - - note + circle = note + 1/4 of its length - - the circle is like a dot that's not filled in. for example, on - page three, the c-sharp on the second line should be a quarter with - a circle, not a quarter tied to a sixteenth. is this at all - possible with lily? -. * scm-ify \property values. -. * make dependencies () a virtual function. -. * deprecate hangOnClef. -. * Abstraction for engravers: -. * make "in-between" engraver (Tie) -. * make wide_spanner_engraver (line_group_spanner, staff_symbol) -. * store req -> element, element -> element causes for warnings -. * compulsory hshift -. * My wish list for lyrics. I dream of a time when I will have enough time to -become familiar enough with the source code to be able to implement some of -these myself, but I don't know when that will be, so I thought I'd "publish" -my suggestions in case someone else is in a position to give them some -priority. Otherwise, perhaps they could go on the todo list? - -If any of these are already implemented, please let me what the syntax is to -use them! - -1. Stanza numbering. Numbering at the beginning of a song with the number -set to the left of the first note. It would also be nice (but not as -important) to be able to have some form of automatic numbering at the -beginning of each new line. This would make it easier to follow songs with a -large number of stanzas. - -3. Notes centred above/below lyrics rather than left-aligned. - -4. It would be very nice to be able to build some kind of phrasing into the -lyrics of hymns, etc, so that the first words of a phrase are left aligned -with each other, the last words are right aligned, and the words in between -are centred. - -5. In a song, with (say) four stanzas and a chorus, it would be nice to be -able to vertically align the chorus midway between the staves. - -6. It would be nice to be able to put vertical brackets either side of a -repeated section with different words for each repeat. - -. * Give # lines in linebreaking. -. * arrows on slurs. -. * rewrite context defs using Scheme -. * junk TeX specifics from internal code. -. * \selectmusic to cut pieces from music. -. * formatting of input stuff. -. * deps for ly2dvi -. * TODO: merge atom & molecule; make tree from molecule. -. * Align_element::padding ? -. * typo checks on property names? -. * use streambufs and iostream - to provide IO handling for TeX stream, mudela stream, data-file. -. * seriously buffer TeX output (do profile of writing .5 mb TeX file.) -. * strip EXEs before installing -. * zip target for binary windows dist (JBR) -. * fix partial measures in meaningful way. -. * uniformise recent feta contributions. -. * bigger and fatter 4/4 C -. * relative mode for midi2ly -. * junking \skip req in lyrics -. * midi2ly empty staffs. -. * use Fourier transformation for rhythmic quantisation. -. * horizontal centering of dynamics -. * $DEPENDENCIES_OUTPUT support -. * turn slope-damping on/off -. * sort out directory stuff. -. * --prefix option? -. * -I option per filetype? -. * kpathsea? -. * fix vertical alignment and stafflines -. * declaring Performers -. * *.yo: fix pod manpage layout legacy -. * text-items clash with stems/beams -. * --include, -I option for ly2dvi (pass on to lily) -. * fix placement of beam-less abbrev -. * \meter 3/4; - <{\voiceone cis4. cis8 cis4 | cis4 cis cis | r1 } - {\voicetwo cis,4 r r | r2. | r1 }> | - } -. * Musical_pitch (analogous to Duration and Rhythmic_req) - think about, analogous to pitch: - * { a4 a16 } c <-- duration of c? - * < a4 b8 > c <-- duration of c? -. * \tempo 4. = 90; -. * make sure all ex's have a mudela-version -. * do rest-collisions for Multi_measure_rests as well. -. * split error/warning in error/warning/non_fatal_error -. * add a Duration_convert member to Duration_iter to set parameters. - Junk global duration settings. -. * en-,discouraged linebreaking: -. * handle DISALLOW < penalty > FORCE -. * discourage breaking of slurs -. * fix variable define/lookup parser global<->paper -. * fix title/instrument placements; see input/test/title.ly -. * <\voiceone c4. \voicetwo c4> -. * I'd like to change the \repetitions command to Jan's suggested - syntax: \repeat "repeatsymbol" 2 {...}, but I'm not sure that - I understand the implementation of repeats well enough. -. * add full cello suites to web site (kom op, Maarten!) -. * rename 'staff_line_leading' (who is being lead where?) to -staff_space, interline; (or other meaningful name) and use throughout -lily - -[-> leading are the lead strips between the sticks (lines) of -typeface. ie. leading is vertical space --hwn] -. * add mudela-book-doc source to webstie. -. * Rethink Time_description -\cadenza , \meter, should all be \properties -. * fix singleStaffBracket -. * rename -. * partial -> anacrouse -. * move paper vars into engraver properties -. * add new glyphs to font.ly -. * check for groff / troff/ nroff et -. * more intelligent file searching -. * disable spaces in TeX stuff -. * handle ^C for tmp/file creation. -. * make LilyPond RPM fully relocatable -. * better hshift (dots, distance, head dependent) -. * didot / big point. -. * clefs (AG): The "8" should appear closer to the actual clef, -touching it. -. * put errorlevel in Input class -. * junk nesting slurs -. * distinguish between unset and empty properties. - -.* FONT -. * the bracket is ugly (wings are too parabolic, should be more circular) -. * versioning for Feta -. * rewrite dynamic signs. They're kind of spaghetti now. -. * The `3' in the meter key is a one or two pixels too thin (at 600dpi) - in the middle: -. * design macro for penstroke with rounded endings -. * timesig C: fat yet less curved. Check out relations. -. * design decent macro for bulbed endings -. * printer dependencies. -. * versioning -. * lo-res fixes. -. * work out sizes of character fonts. -. * more symbols -. * piano pedals: Ped/* -. * maxima notehead -. * coda signs: Segno, O+ -. * glissando, arpeggio -. * lengthened trill -. * include important spacing dims in fetalog -. * scalability: use blot_diameter everywhere, make font chubbier for - small sizes. - -.* 3RD PARTY BUGS -. * UMR: Uninitialized memory read - This is occurring while in: - qst [qsort.c] - qsort [libc.so.1] - Keyword_table::Keyword_table(Keyword_ent*) [keyword.cc:28] - My_lily_lexer::My_lily_lexer() [my-lily-lexer.cc:78] - My_lily_parser::parse_file(String,String) [my-lily-parser.cc:54] - do_one_file(String,String) [scores.cc:124] - Reading 4 bytes from 0xefffeca8 on the stack. - Address 0xefffeca8 is 728 bytes below frame pointer in function -. * GNU diff 2.7: diff -rN does not see a new directory with empty file -. * patch: don't touch timestamp if all patches fail. -. * MetaPost: should not generate setgray for unfill -. * mfplain.ini not in tetex 0.9 -. * mf-to-table -> add space 'before ; in AFM output. (-> check AFM -spec. Is this a bug in afm2tfm?) -. * check out GCC signatures? -. * glibc 2.0: - f = fopen ("/dev/null", "r") - assert (feof (f)) -. * tetex: mfplain.mem - -.* PROJECTS -. * 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: - -. * convert-mudela: -. * automatically add a \version if not present. -. * better parsing -. * make smarter -. * convert-mudela -e empty.ly - -. * emacs mudela-mode -. * should handle block comments too. -. * handle lexer modes (\header, \melodic, \lyric) etc. -. * indentation -. * notenames? -. * fontlock: \melodic \melodic - -. * use properties for: -. * default tempo. -. * cadenza mode? - -. * page handling: -. * PS output -. * optimal pagebreaking. - -. * internationalisation for input. -. * Unicode support? -> man 7 unicode -. * (The explanation below is mostly intended for Han-Wen and Jan) -> Before, the font was changed with macros declared separately for -> pure TeX and LaTeX, but now all the fonts are declared directly in -> the generated code using the low-level TeX commands. This circumvents -> the fontencoding mechanism of LaTeX and is a potential source of -> problems also for us users of the Latin-1 character set. -> I think it still works since the inputencoding latin1 is -> declared by ly2dvi, but it still means that e.g. an o with -> umlaut is typeset as a combination of the two symbols 'o' and -> 'umlaut' instead of as a single character, as would be the case -> if fontencoding OT1 had been used. This shouldn't give any -> difference in layout, though. One of the main argument for using -> fontencoding OT1 is for the hyphenation mechanism to work, an -> argument that's clearly irrelevant in our application. Yet we -> see the problem for August. - -. * \header -. * output header info to MIDI too. - -. * a musical dictionary. See Documentation/vocabulary-*, other -languages: -. * explanations -. * italian -. * german -. * dutch -. * swedish - .. ? - -. * chords -. * guitar chords (fret diagrams) -. * other chord name styles (american(?) style) -. * basso continuo -. * MIDI output? - -. * Debug logs: -. * derive lily_stream, Dstream, texstream from ostream? -. * indentable stream as baseclass for TeX stream, lily stream, Dstream. -. * use dstream feature in midi2ly -. * integrate IO checking into stream class - -. * input converters -. * NIFF? -. * ABC? -. * SMDL? - -. * add to MIDI output: -. * sharp / flat on trills (in MIDI ??) -. * ornaments (and trills?) -. * slurs -. * accents -. * dynamics -> Would it be hard to add support for proper dynamics in MIDI output? I -> would really like to have this feature... - -Concretely spoken, for dynamics you have to write a performer -(Dynamics_performer), that will take the input requests. If I -understand correctly, every MIDI note played must have its dynamic -strength set separately. That means the the Dynamics_performer must -set the strength of every Audio_note it finds. This means that one -has to modify existing Audio items. The best way of doing this is -with a broadcast/acknowledge process. - -So the best way of handling this, is - - 1 supporting dynamic settings in Audio_note - - 2 Write a Dynamics_performer that will modify - any notes it finds to set appropriate strengths. - -I'd say that the work involved is not hard, but you have to be fluent -with C++ and need some insight into the working of Notation Contexts -and friends. I guess I could do it in a day or so, but if you are not -so fluent with the inner workings of LilyPond, it could take you some -more time (A few more days?). - -Please note, that I am *not* going to code this myself: my days are -valuable, and I think I have more interesting things to do than fixing -the MIDI output (I don't even have a soundcard). But I *do* want to help -you or other people with implementing this, so if you need help, don't -hesitate to ask. -. * account for rhythmic position in measure -. * etc. - - -. * 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 - -. * PS -. * speed up PS code. -. * PS lines to .eps files -. * write custom prolog - -. * SGML input - -. * Documentation -. * remove links to non-free SW. -. * internal documentation -. * a general paper. -. * \properties -. * left/rightbeamcount -. * various other new properties. -. * introduction? -. * info? -. * LaTeX? -. * more manpages? -. * Doc (C) stuff of sheet music -. * a better format? SGML? TeX? Info? -. * a better tutorial - -. * more spanners (smallish) -. * Glissando -. * trill - -. * Rewrite Stem, Beam (hairy) -. * general shaving on Beam and Stem -. * use plet grouping -. * beams over bars - -. * lines: -. * Ledger lines, should be separate item: 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}? -. * 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 -. * specify number of lines - -.* INPUTLANGUAGE -. * convention for slurs vs. phrasing marks. -. * Language: -. * \translator -> ? -. * fix \partial -. * \bla {} vs \bla ; -. * mix engraver hacking with music ? -. * \once\property KEY = VAL -. * input property -. * abstract grammar. -. * Figure out semicolons. -. * 4 ? -. * Viola mode? - - @c c g e g - for - c g es g, - - @A c g e g - for - cis gis e gis -. * configure pitch_byte -. * rest name configurable - - -.* SMALLISH PROJECTS - -. * fix confusing naming in Engraver vs Engraver_group_engraver (context) - -. * A range for context errors (eg. mark both { and }. ) - -. * lyric in staff (sharpsharp in staff, text below) - -. * write Dynamic_line (to group dynamics horizontally) - -. * use Real for all y positions. - -. * half-sharps, half-flats - -. * adaptive accidental spacing. - -. * handle EOF graciously in error messages. - -. * midi esp.: use I32 iso int where 32 bits are needed (or assumed...) - -. * lily \tempo - -. * % toe to bheel four to five - % ^_u 4_5 - % - - % --|x-- --|x-- - % --|--- --|--- - % --|--- --|--- - (where "to" is a tiny bow) - -. * auxilliary file for caching info. -. * Text_crescendo - -.* IDEAS -. * Output data structures of Mudela in XML/SGML. -. * create libmudela, or liblily_frontend -. * move MIDI stuff (including Quantization) to a ANSI C libmidi library. -. * Spacing_request for manually adjusting spacing -. * caching breakpoints -. * used fixedpoint arithmetic for min. energy. - -* OUTLINE SETUP -.* .EMACS -;;; from outline.el -(defvar outline-font-lock-keywords - '(;; Highlight headings according to the level. - ;; must change this to allout node layout - ;;("^\\(\\*+\\)[ \t]*\\(.+\\)?[ \t]*$" - ("^\\([.]*[ ]*[*]\\)[ \t]*\\(.*\\)$" - (1 font-lock-string-face) - (2 (let ((len (- (match-end 1) (match-beginning 1)))) - (or (cdr (assq len '((1 . font-lock-function-name-face) - (2 . font-lock-keyword-face) - (3 . font-lock-comment-face)))) - font-lock-variable-name-face)) - nil t)) - ;; Highlight citations of the form [1] and [Mar94]. - ("\\[\\([A-Z][A-Za-z]+\\)*[0-9]+\\]" . font-lock-type-face)) - "Additional expressions to highlight in Outline mode.") - -(add-hook 'outline-mode-hook - '(lambda () - (setq font-lock-maximum-decoration t) - (setq font-lock-maximum-decoration t) - (make-local-variable 'font-lock-defaults) - (setq font-lock-defaults '(outline-font-lock-keywords t)) - (font-lock-mode global-font-lock-mode) - )) - -(require 'allout) -(outline-init 't) - - +[see http://www.cs.uu.nl/people/hanwen/lily-devel/index.html]