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