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