]> git.donarmstrong.com Git - lilypond.git/blob - TODO
release: 0.1.62
[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 0.2:
10         * do rest-collisions for Multi_measure_rests as well.
11
12         * split error/warning in error/warning/non_fatal_error
13
14         * add a Duration_convert member to Duration_iter to set parameters.
15         Junk global duration settings. 
16  
17         * deps for ly2dvi
18
19         * depracate \duration
20
21         * clean up abbrev/plet/beam/abbrevbeam/duration mess in parser.
22
23         * minimum length second part broken tie
24  
25         * en-,discouraged linebreaking: 
26           - handle DISALLOW < penalty > FORCE
27           - discourage breaking of slurs
28
29         * multibar rest
30           - symbol(s)
31
32         * latex mutopia/los-toros-oboe-16.tex: max memsize
33  
34         * move all hard-coded constants and staffheight dependent to runtime,
35           i.e. init/params.ly.  e.g.: stem length params, beam positions
36
37         * fix position of bar number
38
39         * fix position of brace in conjunction with bracket
40
41         * libtoolize flowerlib
42
43         * shared lib
44
45         * bf: abbrevbeam? 
46
47         * robustify Beam (in case of no stems, 32nd notes)
48
49         * check for groff / troff/ nroff et
50
51         * use kpsepath to find all TeX dirs
52         - configure.in 
53         - clean-fonts.sh
54
55
56         * nicen examples:
57         - remove all \multi
58         - break-up heavily-nested score blocks
59
60         * disable spaces in TeX stuff
61         
62         * handle ^C for tmp/file creation.
63
64         * dots & rest collisions.
65
66         * add a screenshot to the website. :)
67
68         * documentation
69         - introduction?
70         - info?
71         - LaTeX?
72         - more manpages?
73
74         * naming Mozarella, Madeira, Muella?
75
76         * versioning for Feta
77
78         * the warning about the negative slur/tie length appears twice
79         which is irritating.
80
81         * The `3' in the meter key is a one or two pixels too thin (at 600dpi)
82         in the middle:
83
84         * the tenuto script is too long and too thin
85
86         * the bracket is ugly (wings are too parabolic, should be more circular)
87
88         * better hshift (dots, distance, head dependent)
89
90         * stem len adjustable
91
92 STUFF
93         * convert-mudela:
94         - better parsing
95         - make smarter
96         - fix convert-mudela -e *.ly ;
97         - convert-mudela -e empty.ly
98         - redo in python.
99
100         * clefs (AG): The "8" should appear closer to the actual clef,
101           touching it.
102
103
104         * give Items/Spanners access to unbroken originals      
105
106         * scoping for properties
107
108         {       c4
109                 \multi 2  < { \stemup .. } { \stemdown .. } >
110                 c2 
111         }
112
113         this modifies \stem for the c2
114
115         * emacs mudela-mode
116         -  should handle block comments too.
117         -  handle lexer modes (\header, \melodic, \lyric) etc.
118         -  indentation
119         -  notenames?
120         -  fontlock: \melodic \melodic
121  
122
123         * use properties for:
124         - Text_style
125         - default_octave
126         - plet?
127         - default_duration?
128         - default abbreviation
129         - Staff_sym size
130         - default tempo.
131         - font size
132         - bartypes (get rid of derived Span_bar_engravers)
133         - cadenza mode? 
134         - MIDI instrument
135         - staff title
136
137         * page handling:
138         - PS output
139         - optimal pagebreaking.
140
141         * put errorlevel in Input class
142
143         * AFM for font input?
144
145
146 3RD PARTY BUGS:
147
148         * tried egcs 1.0.2: failed on lily/stem.cc -> flower/include/interval.hh
149           should narrow down and send bug report
150
151         * gcc 2.8.1: see ice and RESIZE_ICE
152
153         * xdvi: PS in magnifying glass.
154
155         * Fix profiling. gprof bugreport?
156
157         * GNU patch 2.1: hardcoded limit of 1024 to the linelength
158
159         * GNU diff 2.7: diff -rN does not see a new directory with empty file
160
161         * GNU patch 2.1: <must find simple example> if patch chokes on a
162           hunk, or on allegedly unsorted hunks in a diff, it may stop 
163           without a trace of failure (create .rej file, print error or 
164           dump core) and just ignore any further diffs.
165
166 PROJECTS
167
168         * Unicode support?
169         - 16 bit Strings
170         - -u switch
171         - detect of 16/8 bit files
172         - examples to go with it.
173
174         * Spring_spacer:
175         - write a faster Spring_spacer (without matrices if possible)
176         - use straight LP to find minimal "fitting force"
177         - relate energybound to linelen unitspace fontsize etc.
178         - used fixed point fp
179
180         * \header
181         - output header info to MIDI too.
182
183         * Add mudela-output to Rosegarden.
184
185         * a musical dictionary. See Documentation/vocabulary-*, other
186 languages:
187         - explanation
188         - italian
189         - german
190         - dutch
191         - swedish
192          .. ?
193
194         * chords
195         - guitar chords
196         - chord names
197         - basso continuo
198         - Syntax/parser
199         - MIDI output?
200         - typesetting
201
202         * integrate midi-elts from mi2mu and lily?
203
204         * Debug logs:
205         - derive lily_stream, Dstream, texstream from ostream?
206         - indentable stream as baseclass for TeX stream, lily stream, Dstream.
207         - use dstream feature in mi2mu
208         - integrate IO checking into stream class
209
210         * input converters
211         - NIFF?
212         - ABC? 
213         - SMDL?
214
215         * add to MIDI output:
216         - tempo change
217         - ornaments (and trills?)
218         - repeat
219         - slurs
220         - accents
221         - dynamics
222         - account for rhythmic position in measure
223         - etc.
224
225         * grace notes
226         - make separate class for Grace_*_engravers 
227         (which is at Voice_gravs level)
228         - make encapsulated spacing problems.
229
230         * accidentals per Voice_group
231
232         * Output class, handles : (smallish)
233         - help text /(c) notice?
234         - version line
235         - warning /errors/progress
236         - abort on error/warning; exit status
237         - quiet/ignore-version options
238         - logfile output
239
240         * piano staff
241
242         * elaborate Staff_side baseclass:
243         - scripts
244         - text
245         - slur start/end
246
247         * cautionary accidental
248
249         * Output an output format independent (ofi) typeset file; and 
250           make ofi2 TeX, MusiXTex, Display PostScript, PostScript,
251           Ascii... interpreters. (difficult)
252
253         - NIFF ?
254         - Common Music Notation
255         - PostScript output (esp. Beams, Slurs, etc)
256         - Move all Score_elems, into libmutype.a
257  
258         * Documentation
259         - Doc Mutopia (Music To The People) 
260         - Doc (C) stuff of sheet music
261         - a better format?  SGML?  TeX?  Info?
262         - a tutorial
263
264         * TeX spanners , use texbeam.cc as an example (smallish)
265         - Glissando
266         - trill
267
268         * Rewrite Stem, Beam and Rhythmic_grouping (hairy)
269         - [c8. c32 c32]
270         - doc on Rhythmic_grouping
271         - general shaving on Beam and Stem
272         - use plet grouping
273         - separate visual from rhythmic info even more
274         - beams over bars
275
276         * Redo fonts
277         - adapt for multiple font sizes.
278
279         * lines:
280         - Ledger lines, should be separate item: Ledger_lines, Ledger_lines
281         - set different line sizes / thicknesses
282         - beam stem showthrough, inter beam sizes (french vs german style)
283
284         * Collisions
285         - left/right note balls should be handled by Collision:
286         < \multi 2; { \stem 1; <b c> } { <f as b> } >
287
288         * Keys:
289         - merge key{item} & localkey{item}?
290         - do conventional keys (C G A, F B E, a e fis, d as des, etc ), 
291           besides lists of flats/sharps, possibly via declaration
292         - key transposition. 
293         - key undo: \key bes; .. . \key; should print natural   
294         - special key: \key bes 'b bis';
295         - spacing, national styles?
296
297         * Support for TAB
298         - redo Notehead to allow digits as heads
299         - add a \tablature {} lexer mode for easy entering
300
301         * should adjust stemlength for flag number.
302
303         * breaking:
304         - caching breakpoints
305         - saving them
306         - penalties
307         - specify number of lines
308
309         * Rhythmic staff.
310
311         * markers
312
313
314 INPUTLANGUAGE
315
316         * c4 4 4 4 for c4 c4 c4 c4?
317
318         * neatly (and readably) expressing concurrent
319         voices
320
321         * <c f a>4 ?
322
323         * Viola mode?
324
325                 @c c g e g 
326         for
327                 c g es g, 
328
329                 @A c g e g
330         for
331                 cis gis e gis
332
333         * relative mode for pitch entering
334
335         * bracket (bracketplets)
336
337         * configure pitch_byte
338
339         * rest name configurable
340
341         * Raw request syntax
342
343 SMALLISH PROJECTS
344
345         * progress when creating MIDI elts.
346
347         * A range for context errors (eg. mark both { and }. )
348
349         * lyric in staff  (sharpsharp in staff, text below)
350
351         * write Dynamic_line (to group dynamics horizontally)
352
353         * use Real for all y positions.
354         - use translate_axis( .. ,Y_AXIS) 
355
356         * half-sharps, half-flats
357
358         * adaptive accidental spacing.
359
360         * handle EOF graciously in error messages.
361 oo
362         * caching Item/spanner dimensions.
363
364         * centered whole rest
365
366         * qtor, btor, mtor-> tor( QUIET_ver ), tor( DEBUG_ver ), etc.
367         - use tors feature in lily (?)
368
369         * declare notenametab?
370
371         * midi esp.: use I32 iso int where 32 bits are needed (or assumed...)
372
373         * Flower types:
374         - A decent scalar type
375         - String hash
376         - Pointer hash
377
378         * binsearch/hash for identifiers
379
380         * stafftypes: voice names/ instrument names.
381
382         * TeX stuff:    
383         - Decent TeX titledefs (\tempo, \metron, etc. )
384         - decent TeX page layout
385
386         * lily \tempo
387
388         * C meter iso 4/4, idem for alla breve, etc.
389
390         * textspanner: center position
391
392         * Brackets
393         
394         * Scripts:
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             % toe to bheel   four to five
403             %   ^_u            4_5  
404             %     -                           
405             %  --|x--         --|x--
406             %  --|---         --|---
407             %  --|---         --|---
408           (where "to" is a tiny bow)
409
410         * auxilliary file for caching info.
411
412         * Text_crescendo
413
414         * clean solution for staffsize in items.
415
416         * revise calcideal
417
418         * volta
419
420 IDEAS
421
422         * Output data structures of Mudela in XML/SGML.
423
424         * create libmudela, or liblily_frontend
425
426         * move MIDI stuff (including Quantization) to a ANSI C libmidi library.
427
428         * use an embedded language: Python, Scheme
429         for: 
430                 - Score_elems
431                 - Engraver
432                 - Translators
433                 - Complex mudela?
434
435         * y -dims in internote? Staff-space? X-dimensions?
436
437         * Spacing_request for manually adjusting spacing
438
439         * caching breakpoints
440
441         * #c <-> cis
442
443         * breath marks 
444
445         * used fixedpoint arithmetic for min. energy.
446
447         * move towards incremental algorithms.
448
449         * far fetched language ideas
450         - design meta-language like TeX and Metafont
451         - programming/macros input
452
453         * Global type registration.
454
455                 My_class * p = create_object( My_class )
456                 Type t = get_type ( *p );
457                 if ( t <= get_type( q ))
458                         ..
459
460         * versioning stuff (cvt mudela, mudela, etc.)
461
462
463         * dots into separate item.
464
465         * use String iso Text_def for lyrics.
466
467         * Klavarskribo?
468
469         * lyrics in chords still fuck up.
470
471         * pushgroup/popgroup
472
473         * Use hooks/dependency graphs for properties