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