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