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