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