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