]> git.donarmstrong.com Git - lilypond.git/blob - TODO
release: 0.1.45
[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
8
9 0.2:
10         * use kpsepath to find all TeX dirs
11         - configure.in 
12         - clean-fonts.sh
13         
14         * forced breakpoints
15
16         * --metafont
17
18         * disable spaces in TeX stuff
19
20         * height of dyns.
21         
22         * handle ^C for tmp/file creation.
23
24         * WWW mirror/archive for the mailing lists.
25
26         * dots & rest collisions.
27
28         * add a screenshot to the website. :)
29
30         * fix stdin input
31
32         * documentation
33         - info?
34         - LaTeX?
35         - more manpages?
36
37         * naming Mozarella, Madeira, Muella?
38
39         * versioning for Feta
40
41         * bf: abbrevs over whole note
42
43 STUFF
44
45
46         * give Items/Spanners access to unbroken originals      
47
48         * scoping for properties
49
50         {       c4
51                 \multi 2  < { \stemup .. } { \stemdown .. } >
52                 c2 
53         }
54
55         this modifies \stem for the c2
56
57         * use properties for:
58         - Text_style
59         - default_octave
60         - plet?
61         - default_duration?
62         - default abbreviation
63         - Staff_sym size
64         - default tempo.
65         - font size
66         - bartypes (get rid of derived Span_bar_engravers)
67         - cadenza mode? 
68         - MIDI instrument
69         - staff title
70
71         * page handling:
72         - papersizes
73         - PS output
74         - optimal pagebreaking.
75
76         * put errorlevel in Input class
77
78         * AFM for font input?
79
80 3RD PARTY BUGS:
81
82         * xdvi: PS magnifying glass.
83
84         * Rational infty(HUGE_VAL) on glibc / w32
85
86         * Fix profiling. gprof bugreport?
87
88         * GS: /undefined in draw_beam after XDVI magnification.
89
90         * Rational global static var.
91
92 PROJECTS
93
94         * Unicode support?
95         - 16 bit Strings
96         - -u switch
97         - detect of 16/8 bit files
98         - examples to go with it.
99
100         * Spring_spacer:
101         - write a faster Spring_spacer (without matrices if possible)
102         - use straight LP to find minimal "fitting force"
103         - relate energybound to linelen unitspace fontsize etc.
104         - used fixed point fp
105
106         * \header
107         - output header info to MIDI too.
108
109
110         * Makefile stuff:
111         - Use Automake
112         - shared lib on Solaris too.
113         - check libtool
114         - generate stuff in out/default, out/sun5-irix etc iso out/ 
115         and out-sun5/
116
117         * Add mudela-output to Rosegarden.
118
119         * a musical dictionary. See Documentation/vocabulary-*, other
120 languages:
121         - italian
122         - german
123         - dutch
124         - swedish
125          .. ?
126
127         * chords
128         - guitar chords
129         - chord names
130         - basso continuo
131         - Syntax/parser
132         - MIDI output?
133         - typesetting
134
135         * integrate midi-elts from mi2mu and lily?
136
137         * Debug logs:
138         - derive lily_stream, Dstream, texstream from ostream?
139         - indentable stream as baseclass for TeX stream, lily stream, Dstream.
140         - use dstream feature in mi2mu
141         - integrate IO checking into stream class
142
143         * input converters
144         - NIFF?
145         - ABC? 
146         - SMDL?
147
148         * add to MIDI output:
149         - tempo change
150         - repeat
151         - slurs
152         - dynamics etc.
153
154         * grace notes
155         - make separate class for Grace_*_engravers 
156         (which is at Voice_gravs level)
157         - make encapsulated spacing problems.
158
159         * On-demand loading of simple-engravers?
160
161         * accidentals per Voice_group
162
163         * Convert all ref/bib stuff into BibTeX.
164
165         * Output class, handles : (smallish)
166         - help text /(c) notice?
167         - version line
168         - warning /errors/progress
169         - abort on error/warning; exit status
170         - quiet/ignore-version options
171         - logfile output
172
173         * piano staff
174
175         * elaborate Staff_side baseclass:
176         - scripts
177         - text
178         - slur start/end
179
180         * cautionary accidental
181
182         * Output an output format independent (ofi) typeset file; and 
183           make ofi2 TeX, MusiXTex, Display PostScript, PostScript,
184           Ascii... interpreters. (difficult)
185
186         - poor man's ascii output possible?
187         - MusiXTeX output possible? (would have to be done before break calc.)
188         - NIFF ?
189         - Common Music Notation
190         - PostScript output (esp. Beams, Slurs, etc)
191         - Move all Score_elems, into libmutype.a
192  
193         * Documentation
194         - Doc Mutopia (Music To The People) 
195         - Doc (C) stuff of sheet music
196         - a better format?  SGML?  TeX?  Info?
197         - a tutorial
198
199         * TeX spanners , use texbeam.cc as an example (smallish)
200         - Glissando
201         - trill
202         - bracket
203
204         * Rewrite Stem, Beam and Rhythmic_grouping (hairy)
205         - [c8. c32 c32]
206         - doc on Rhythmic_grouping
207         - general shaving on Beam and Stem
208         - use plet grouping
209         - separate visual from rhythmic info even more
210         - beams over bars
211
212         * Redo fonts
213         - adapt for multiple font sizes.
214
215         * lines:
216         - Ledger lines, should be separate item: Ledger_lines, Ledger_lines
217         - set different line sizes / thicknesses
218         - beam stem showthrough, inter beam sizes (french vs german style)
219
220         * Collisions
221         - left/right note balls should be handled by Collision:
222         < \multi 2; { \stem 1; <b c> } { <f as b> } >
223
224         * Keys:
225         - merge key{item} & localkey{item}?
226         - do conventional keys (C G A, F B E, a e fis, d as des, etc ), 
227           besides lists of flats/sharps, possibly via declaration
228         - key transposition. 
229         - key undo: \key bes; .. . \key; should print natural   
230         - special key: \key bes 'b bis';
231         - spacing, national styles?
232
233         * Support for TAB
234         - redo Notehead to allow digits as heads
235         - add a \tablature {} lexer mode for easy entering
236
237         * should adjust stemlength for flag number.
238
239         * breaking:
240         - caching breakpoints
241         - saving them
242         - allowing users to set them.
243         - penalties
244         - specify number of lines
245         - set linelength per line
246
247         * Rhythmic staff.
248
249         * Baroque superstaff
250
251 SEVERELY LACKING:
252
253         * SPEED!
254
255         * multibar rests
256
257         * markers
258
259
260 INPUTLANGUAGE
261
262         * c4 4 4 4 for c4 c4 c4 c4?
263
264         * neatly (and readably) expressing concurrent
265         voices
266
267         * <c f a>4 ?
268
269         * Viola mode?
270
271                 @c c g e g 
272         for
273                 c g es g, 
274
275                 @A c g e g
276         for
277                 cis gis e gis
278
279         * relative mode for pitch entering
280
281         * bracket (bracketplets)
282
283         * configure pitch_byte
284
285         * rest name configurable
286
287         * Raw request syntax
288
289 SMALLISH PROJECTS
290
291         * progress when creating MIDI elts.
292
293         * A range for context errors (eg. mark both { and }. )
294
295         * lyric in staff  (sharpsharp in staff, text below)
296
297         * write Dynamic_line (to group dynamics horizontally)
298
299         * use Real for all y positions.
300         - use translate_axis( .. ,Y_AXIS) 
301
302         * half-sharps, half-flats
303
304         * adaptive accidental spacing.
305
306         * handle EOF graciously in error messages.
307
308         * caching Item/spanner dimensions.
309
310         * centered whole rest
311
312         * qtor, btor, mtor-> tor( QUIET_ver ), tor( DEBUG_ver ), etc.
313         - use tors feature in lily (?)
314
315         * declare notenametab?
316
317         * midi esp.: use I32 iso int where 32 bits are needed (or assumed...)
318
319         * Flower types:
320         - A decent scalar type
321         - String hash
322         - Pointer hash
323
324         * binsearch/hash for identifiers
325
326         * stafftypes: voice names/ instrument names.
327
328         * TeX stuff:    
329         - Decent TeX titledefs (\tempo, \metron, etc. )
330         - decent TeX page layout
331
332         * lily \tempo
333
334         * C meter iso 4/4, idem for alla breve, etc.
335
336         * textspanner: center position
337
338         * Brackets
339         
340         * Scripts:
341         - stack scripts in chords:
342           % fingering:        footing:
343             < a-4 c-2 g-1 >   < c-\ltoe e-\lheel >
344         - script-spacing
345         - slur parts as a script
346         - stack parameterised scripts for fingering and footing:
347
348             % toe to bheel   four to five
349             %   ^_u            4_5  
350             %     -                           
351             %  --|x--         --|x--
352             %  --|---         --|---
353             %  --|---         --|---
354           (where "to" is a tiny bow)
355
356         * auxilliary file for caching info.
357
358         * Text_crescendo
359
360         * clean solution for staffsize in items.
361
362         * revise calcideal
363
364         * volta
365
366 IDEAS
367
368         * Output abstract data structures associated with
369 Mudela.
370
371         * create libmudela, or liblily_frontend
372
373         * move MIDI stuff (including Quantization) to a ANSI C libmidi library.
374
375         * use an embedded language: Python, Scheme
376         for: 
377                 - Score_elems
378                 - Engraver
379                 - Translators
380                 - Complex mudela?
381
382         * y -dims in internote? Staff-space? X-dimensions?
383
384         * Spacing_request for manually adjusting spacing
385
386         * caching breakpoints
387
388         * #c <-> cis
389
390         * breath marks 
391
392         * used fixedpoint arithmetic for min. energy.
393
394         * move towards incremental algorithms.
395
396         * far fetched language ideas
397         - design meta-language like TeX and Metafont
398         - programming/macros input
399
400         * Global type registration.
401
402                 My_class * p = create_object( My_class )
403                 Type t = get_type ( *p );
404                 if ( t <= get_type( q ))
405                         ..
406
407         * naming of Voice_group/Voice
408
409         * benchmark band_matrices.
410
411         * versioning stuff (cvt mudela, mudela, etc.)
412
413         * a real convert-mudela
414
415         * dots into separate item.
416
417         * use String iso Text_def for lyrics.
418
419         * use position 0 for center of staff iso bottom.
420
421         * Klavarskribo?
422
423         * lyrics in chords still fuck up.
424
425         - rewire acknowledge_element() logic with a process_acknowledged()
426
427         * pushgroup/popgroup
428
429         * multi threading?
430           - 1 thread per element/ 1 thread per line
431           - 1 thread per Translator
432
433         * Use hooks/dependency graphs for properties