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