]> git.donarmstrong.com Git - lilypond.git/blob - TODO
release: 1.0.10
[lilypond.git] / TODO
1 Features you cannot find in the doco as working, should be mentioned here.
2
3
4 This is an assorted collection of stuff that will be done, might be
5 done, or is an idea that I want to think about
6
7 Most of the items are marked in the code as well, with full explanation. 
8 grep for TODO and ugh/ugr/urg
9
10         * egcs-1.1 support
11
12         * make engraver hacking robust.
13
14         * fix LOCALE settings, and \def\foo{2,000pt} output
15
16         * use streambufs and iostream
17         to provide IO handling for TeX stream, mudela stream, data-file.
18
19         * seriously buffer TeX output (do profile of writing .5 mb TeX file.)
20
21         * strip EXEs before installing
22
23         * zip target for binary windows dist (JBR)
24
25         * repeat bars: need distance after ":|" and before "|:"
26
27         * text continuationss
28
29         * revise documentation
30
31         * abbrev -> tremolo
32
33         * junking \skip req in lyrics
34
35         * \shape 1st dim skipped? 
36
37         * Language:
38         - general plet mechanism.
39
40                 \plet 2/3 { c8 c8 c8 }
41
42         ie.
43
44                 Music: PLET int '/' int Music
45
46         - \type -> \context ?
47         - \translator -> ?
48         - fix \partial 
49         - \bla {} vs \bla ; 
50         - mix engraver hacking with music ?
51         - \once\property  KEY = VAL
52         - \addtranslator, \removetranslator
53         - junk ^ and _ for scripts
54         - junk _ for lyrics.
55         - abstract grammar.
56
57         * install TeX stuff into tex/generic directory.
58
59         * percussion note heads
60
61         * mi2mu empty staffs.
62
63         * include MIDI list 
64
65         * make separate translation property list.
66
67         * make GNU style webpages.
68
69         * There seems to be an install error in lilypond-1.0.0.  Most of the
70         files in the "init" directory don't get installed in the
71         /usr/local/share/lilypond directory.  The files installed are of
72         the form feta*.ly.  In particular init.ly doesn't get installed.
73         I installed the files by hand and then the system seems to work.
74
75         * midi_instrument -> midiInstrument
76
77         * horizontal centering of dynamics 
78
79         * \font\fontA=feta20.afm (.afm?)
80
81         * gzip RH manpage
82
83         * stable make/config stuff
84
85         * stemup/stemdown; see test/updown.fly
86           - check examples; add \type Staff hither and thether
87
88         * $DEPENDENCIES_OUTPUT support
89
90         * use a fake-yodl.sh to mimick yodl when yodl is not installed
91
92         * fix BUGs
93
94         * fix weird behaviour when .AFMs not found.
95
96         * Xdvi zooming ?!
97                 gs: Error: /undefined in draw_beam
98                 gs: Operand stack:
99
100         * run texhash after installing .tex
101
102         * fix vertical alignment and stafflines
103
104         * GrandStaff needs more work -- I want a single word
105         `harpsichord' to the left of the grandstaff, not one on each
106         stave.  (Organ staff -- with separate pedal -- but common
107         properties may be something to think about.  Of course for
108         organ you want to be able to give stop indications on the way
109         through, so the \property Voice.Instrument would be a stop,
110         and \property GrandStaff.instrument would be PipeOrgan...)
111
112         * make Tie_req a "command" { <c g> ~ <c g> }
113
114         * bib ep1988
115
116         * revise the Score_priority_align_engraver concept.  It sucks. 
117
118         * ly2xdvi, ly2ps
119
120         * make new VoiceOne, VoiceTwo, VoiceThree contexts with
121 ydirection and hshift preset
122
123         * *.yo: fix pod manpage layout legacy
124
125         * text-items clash with stems/beams
126
127         * --include, -I option for ly2dvi (pass on to lily)
128
129         * fix placement of beam-less abbrev
130
131         * \meter 3/4;
132         <{\voiceone cis4. cis8 cis4 | cis4 cis cis | r1 }
133          {\voicetwo cis,4 r r | r2. | r1 }> |
134         }
135
136         * try to use template<Type> iso MACRO(Type)
137
138         - NEWS: ... Musical_pitch (analogous to Duration and Rhythmic_req)
139           think about, analogous to pitch: 
140            * { a4 a16 } c <-- duration of c?
141            * <a4 b8> c <-- duration of c?
142
143         * \tempo 4. = 90;
144
145         * fix audio-items (don't use (input) requests, but copy data)
146
147         * junk My_lily_parser::abbrev_beam_type_i_ 
148
149         * make sure all ex's have a mudela-version
150
151         * do rest-collisions for Multi_measure_rests as well.
152
153         * split error/warning in error/warning/non_fatal_error
154
155         * add a Duration_convert member to Duration_iter to set parameters.
156         Junk global duration settings. 
157  
158         * deps for ly2dvi
159
160         * clean up abbrev/plet/beam/abbrevbeam/duration mess in parser.
161
162         * minimum length second part broken tie
163  
164         * en-,discouraged linebreaking: 
165           - handle DISALLOW < penalty > FORCE
166           - discourage breaking of slurs
167
168         * multibar rest
169           - symbol(s)
170
171         * fix variable define/lookup parser global<->paper
172
173         * fix title/instrument placements; see input/test/title.ly
174
175         * <\voiceone c4. \voicetwo c4>
176
177         * add full cello suites to web site (kom op, Maarten!)
178
179         * Rethink Time_description
180           * \cadenza , \meter, \grouping should all be \properties
181
182         * rename
183           - plet -> tuplet
184           - measure -> bar
185           - abbreviation-beam -> (measured/unmeasured) tremolo
186           - partial -> anacrouse
187
188         * libtoolize flowerlib
189
190         * shared lib
191
192         * robustify Beam (in case of no stems, 32nd notes)
193
194         * decentralised spring factory
195
196         * move paper vars into engraver properties
197
198         * check for groff / troff/ nroff et
199
200         * more intelligent file searching
201         - use kpsepath
202         - make LilyPond fully relocatable
203
204         * use kpsepath to find all TeX dirs
205         - configure.in 
206         - clean-fonts.sh
207
208         * nicen examples:
209         - break-up heavily-nested score blocks
210
211         * disable spaces in TeX stuff
212         
213         * handle ^C for tmp/file creation.
214
215         * dots & rest collisions.
216
217         * documentation
218         - introduction?
219         - info?
220         - LaTeX?
221         - more manpages?
222
223         * versioning for Feta
224
225         * the warning about the negative slur/tie length appears twice
226         which is irritating.
227
228         * The `3' in the meter key is a one or two pixels too thin (at 600dpi)
229         in the middle:
230
231         * the bracket is ugly (wings are too parabolic, should be more circular)
232
233         * better hshift (dots, distance, head dependent)
234
235         * clefs (AG): The "8" should appear closer to the actual clef,
236           touching it.
237
238         * scoping for properties?
239
240         {       c4
241                 \multi 2  < { \stemup .. } { \stemdown .. } >
242                 c2 
243         }
244
245         this modifies \stem for the c2
246
247         * put errorlevel in Input class
248
249         * junk nesting slurs
250
251         * integrate midi-elts from mi2mu and lily?
252
253         * cautionary accidental
254
255         * score-bar-scripts
256         FMR: Free memory read:
257           * This is occurring while in:
258                 Bar_column::do_substitute_dependency(Score_element*,Score_element*) [bar
259         -column.cc:29]
260                 Score_element::unlink() [score-elem.cc:383]
261                 Paper_score::set_breaking(const Array<Column_x_positions>&) [p-score.cc:
262         150]
263                 Paper_score::calc_breaking() [p-score.cc:189]
264                 Paper_score::process() [p-score.cc:203]
265                 Score::run_translator(Music_output_def*) [score.cc:117]
266           * Reading 4 bytes from 0x65d3a0 in the heap.
267           * Address 0x65d3a0 is 160 bytes into a freed  block at 0x65d300 of 208 bytes.
268           * This block was allocated from:
269                 malloc         [rtlib.o]
270                 __builtin_new  [libgcc.a]
271                 Span_score_bar::clone()const [span-score-bar.hh:20]
272                 Item::copy_breakable_items() [item.cc:69]
273                 Item::do_breakable_col_processing() [item.cc:89]
274                 Score_element::calcalute_dependencies(int,int,void(Score_element::*)()*)
275          [score-elem.cc:171]
276           * There have been 22 frees since this block was freed from:
277                 free           [rtlib.o]
278                 __builtin_delete [libgcc.a]
279                 Span_score_bar::~Span_score_bar() [span-score-bar.hh:18]
280                 Paper_score::set_breaking(const Array<Column_x_positions>&) [p-score.cc:
281         156]
282                 Paper_score::calc_breaking() [p-score.cc:189]
283                 Paper_score::process() [p-score.cc:203]
284         Postprocessing elements... 
285         TeX output to score-bar-scripts.tex...
286
287
288 3RD PARTY BUGS:
289
290         * redhat (v?) graphical install bomb-out?
291
292         * egcs-1.03 ice: stem.cc:327; should localize bug (mine's still 10K)
293
294         * gcc 2.8.1: see ice and RESIZE_ICE
295
296         * xdvi: PS in magnifying glass.
297
298         * GNU diff 2.7: diff -rN does not see a new directory with empty file
299
300         * GNU patch 2.1: <must find simple example> if patch chokes on a
301           hunk, or on allegedly unsorted hunks in a diff, it may stop 
302           without a trace of failure (create .rej file, print error or 
303           dump core) and just ignore any further diffs.
304
305         * glibc 2.0:
306
307           f = fopen ("/dev/null", "r")
308           assert (feof (f))
309
310 3RD PARTY PROJECTS:
311
312         * GNU indent: handle C++
313
314         * GNU make: move hardcoded builtin rules to runtime ?
315
316         * GNU patch 
317           - 'double-fix' mode: ignore identical fix, rather than suggest 
318             to revert patch direction when (more or less? exactly) the same 
319             thing is fixed
320
321 PROJECTS
322
323         * Scripts:
324         - fix position of bar number
325         - stack scripts in chords:
326           % fingering:        footing:
327             < a-4 c-2 g-1 >   < c-\ltoe e-\lheel >
328         - script-spacing
329         - slur parts as a script
330         - stack parameterised scripts for fingering and footing:
331
332         * convert-mudela:
333         - automatically add  a \version if not present.
334         - better parsing
335         - make smarter
336         - convert-mudela -e empty.ly
337
338         * emacs mudela-mode
339         -  should handle block comments too.
340         -  handle lexer modes (\header, \melodic, \lyric) etc.
341         -  indentation
342         -  notenames?
343         -  fontlock: \melodic \melodic
344  
345
346         * use properties for:
347         - plet?
348         - Staff_sym size
349         - default tempo.
350         - font size
351         - bartypes (get rid of derived Span_bar_engravers)
352         - cadenza mode? 
353
354         * page handling:
355         - PS output
356         - optimal pagebreaking.
357
358         * Unicode support? -> man 7 unicode
359         - 16 bit Strings
360         - -u switch
361         - detect of 16/8 bit files
362         - examples to go with it.
363
364         * Spring_spacer:
365         - write a faster Spring_spacer (without matrices if possible)
366         - use straight LP to find minimal "fitting force"
367         - relate energybound to linelen unitspace fontsize etc.
368         - used fixed point fp
369
370         * \header
371         - output header info to MIDI too.
372
373         * a musical dictionary. See Documentation/vocabulary-*, other
374         languages:
375         - explanations
376         - italian
377         - german
378         - dutch
379         - swedish
380          .. ?
381
382         * chords
383         - guitar chords
384         - chord names
385         - basso continuo
386         - Syntax/parser
387         - MIDI output?
388         - typesetting
389
390         * Debug logs:
391         - derive lily_stream, Dstream, texstream from ostream?
392         - indentable stream as baseclass for TeX stream, lily stream, Dstream.
393         - use dstream feature in mi2mu
394         - integrate IO checking into stream class
395
396         * input converters
397         - NIFF?
398         - ABC? 
399         - SMDL?
400
401         * add to MIDI output:
402         - tempo change
403         - ornaments (and trills?)
404         - repeat
405         - slurs
406         - accents
407         - dynamics
408         - account for rhythmic position in measure
409         - etc.
410
411         * grace notes
412         - make separate class for Grace_*_engravers 
413         (which is at Voice_gravs level)
414         - make encapsulated spacing problems.
415
416         * accidentals per Voice_group
417
418         * Output class, handles : (smallish)
419         - help text /(c) notice?
420         - version line
421         - warning /errors/progress
422         - abort on error/warning; exit status
423         - quiet/ignore-version options
424         - logfile output
425
426         * piano staff
427
428         * elaborate Staff_side baseclass:
429         - scripts
430         - text
431         - slur start/end
432
433         * PS 
434         - speed up PS code.
435         - PS lines to .eps files
436         - write custom prolog
437
438
439         * Output an output format independent (ofi) typeset file; and 
440           make ofi2 TeX, MusiXTex, Display PostScript, PostScript,
441           Ascii... interpreters. (difficult)
442
443         - NIFF ?
444         - Common Music Notation
445         - PostScript output (esp. Beams, Slurs, etc)
446         - Move all Score_elems, into libmutype.a
447         - SGML
448
449  
450         * Documentation
451         - Doc (C) stuff of sheet music
452         - a better format?  SGML?  TeX?  Info?
453         - a tutorial
454
455         * more spanners (smallish)
456         - Glissando
457         - trill
458
459         * Rewrite Stem, Beam and Rhythmic_grouping (hairy)
460         - [c8. c32 c32]
461         - doc on Rhythmic_grouping
462         - general shaving on Beam and Stem
463         - use plet grouping
464         - separate visual from rhythmic info even more
465         - beams over bars
466         - endbeam req should be *after* the duration, so you can do
467         < { [c4]    }
468           { c8. c16 } >
469
470
471         * lines:
472         - Ledger lines, should be separate item: Ledger_lines, Ledger_lines
473         - set different line sizes / thicknesses
474         - beam stem showthrough, inter beam sizes (french vs german style)
475
476         * Collisions
477         - left/right note balls should be handled by Collision:
478         < \multi 2; { \stem 1; <b c> } { <f as b> } >
479
480         * Keys:
481         - merge key{item} & localkey{item}?
482         - Major/Minor
483         - spacing, national styles?
484
485         * Support for TAB
486         - redo Notehead to allow digits as heads
487         - add a \tablature {} lexer mode for easy entering
488
489         * should adjust stemlength for flag number.
490
491         * breaking:
492         - caching breakpoints
493         - saving them
494         - specify number of lines
495
496         * markers
497
498 INPUTLANGUAGE
499
500         * c4 4 4 4 for c4 c4 c4 c4?
501
502         * neatly (and readably) expressing concurrent
503         voices
504
505         * <c f a>4 ?
506
507         * Viola mode?
508
509                 @c c g e g 
510         for
511                 c g es g, 
512
513                 @A c g e g
514         for
515                 cis gis e gis
516
517         * relative mode for pitch entering
518
519         * bracket: volta 1,2
520
521         * configure pitch_byte
522
523         * rest name configurable
524
525 SMALLISH PROJECTS
526
527         * limit memory usage; the full coriolan takes up too much resources.
528
529         * fix confusing naming in Engraver vs Engraver_group_engraver (context)
530
531         * progress when creating MIDI elts.
532
533         * A range for context errors (eg. mark both { and }. )
534
535         * lyric in staff  (sharpsharp in staff, text below)
536
537         * half sharps/flats
538
539         * write Dynamic_line (to group dynamics horizontally)
540
541         * use Real for all y positions.
542         - use translate_axis( .. ,Y_AXIS)  iso separate variables.
543
544         * half-sharps, half-flats
545
546         * adaptive accidental spacing.
547
548         * handle EOF graciously in error messages.
549
550         * centered whole rest
551
552         * declare notenametab?
553
554         * midi esp.: use I32 iso int where 32 bits are needed (or assumed...)
555
556         * Flower types:
557         - A decent scalar type
558         - String hash
559         - Pointer hash
560
561         * binsearch/hash for identifiers
562
563         * stafftypes: voice names/ instrument names.
564
565         * lily \tempo
566
567         * C meter iso 4/4, idem for alla breve, etc.
568
569         * textspanner: center position
570
571         *   % toe to bheel   four to five
572             %   ^_u            4_5  
573             %     -                           
574             %  --|x--         --|x--
575             %  --|---         --|---
576             %  --|---         --|---
577           (where "to" is a tiny bow)
578
579         * auxilliary file for caching info.
580
581         * Text_crescendo
582
583         * clean solution for staffsize in items.
584
585         * revise calcideal
586
587         * volta
588
589 IDEAS
590
591
592         * Output data structures of Mudela in XML/SGML.
593
594         * create libmudela, or liblily_frontend
595
596         * move MIDI stuff (including Quantization) to a ANSI C libmidi library.
597
598         * use an embedded language: Python, Scheme
599         for: 
600                 - Score_elems
601                 - Translators
602
603         * y -dims in internote? Staff-space? X-dimensions?
604
605         * Spacing_request for manually adjusting spacing
606
607         * caching breakpoints
608
609         * breath marks 
610
611         * used fixedpoint arithmetic for min. energy.
612
613         * move towards incremental algorithms.
614
615         * far fetched language ideas
616         - design meta-language like TeX and Metafont
617         - programming/macros input
618
619         * versioning stuff (cvt mudela, mudela, etc.)
620
621         * Klavarskribo?
622
623         * lyrics in chords still fuck up.
624
625         * Use hooks/dependency graphs for properties
626