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