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