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