]> git.donarmstrong.com Git - lilypond.git/blob - TODO
f617a2a566520854bcf4ffa5ae9defaf259e9fa9
[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         * generate stuff in out/default, out/sun5-irix etc iso out/ 
10 and out-sun5/
11
12         * derive dstream, texstream from ostream?
13
14         * A typical pop-music example.
15
16         * check libtool, automake
17
18         * have make dist produce tarball in out/ directory.
19
20         * write a faster Spring_spacer ( without matrices if possible )
21
22         * A decent scalar type
23
24         * relate energybound to linelen unitspace fontsize etc.
25
26         * naming of Voice_group/Voice
27
28         * benchmark band_matrices.
29
30         * versioning stuff (cvt mudela, mudela, etc.)
31
32         * get rid of gif files.
33
34         * set_midi_channel/staff() out of performer.
35
36         * dots into separate item.
37
38         * use String iso Text_def for lyrics.
39
40         * use position 0 for center of staff iso bottom.
41
42         * return status on exit
43
44         * lyrics in chords still fuck up.
45
46         * rewire acknowledge_element() logic with a process_acknowledged()
47         
48         * Global type registration.  
49
50                 My_class * p = create_object( My_class )
51                 Type t = get_type ( *p );
52                 if ( t <= get_type( q ))
53                         ..
54
55         * progress when creating MIDI elts.
56
57         * pushgroup/popgroup
58
59         * whole head on ledger line
60
61         * piano staff
62
63         * update 20 pt table
64
65         * decent TeX page layout
66
67         * a tutorial
68
69 3RD PARTY BUGS:
70
71         * bugreport to doc++ devel: struct not in class hier; public
72         virtual baseclasses
73
74         * DOC++ bugs/ newer version?
75
76         * Rational infty(HUGE_VAL) on glibc / w32
77
78         * Fix profiling. gprof bugreport?
79
80         * read from mmap directly: bugreport to flex developers->
81         yy_scan_buffer in C++..
82
83         * (where are the) gcc compile warnings on linux
84         
85
86 PROJECTS
87
88         * input converters
89         - NIFF?
90         - ABC? 
91         - SMDL?
92
93         * add to MIDI output:
94         - tempo change
95         - repeat
96         - slurs
97         - dynamics etc.
98
99         * grace notes
100         - adapt for multiple font sizes.
101         - make separate class for Grace_*_engravers 
102         (which is at Voice_gravs level)
103         - move stem, beam, slur into baseclass to adapt for (fixed
104         size) grace notes.
105
106         * accidentals per Voice_group
107
108         * Convert all ref/bib stuff into BibTeX.
109
110         * Output class, handles : (smallish)
111         - help text /(c) notice?
112         - version line
113         - warning /errors/progress
114         - abort on error/warning; exit status
115         - quiet/ignore-version options
116         - logfile output
117
118         * elaborate Staff_side baseclass:
119         - scripts
120         - text
121         - slur start/end
122
123         * Output an output format independent (ofi) typeset file; and 
124           make ofi2 TeX, MusixTex, PostScript, Ascii... interpreters. (difficult)
125         - poor man's ascii output possible?
126         - MusixTeX output possible? (would have to be done before break calc.)
127         - NIFF ?
128         - Common Music Notation
129         - PostScript output (esp. Beams, Slurs, etc)
130         - Move PScore, Items, Spanners etc. into libmutype.a
131
132         * separate Score_elem settings in user-settable (properties
133         .. ) and non-user-settable part. Maybe use something like X-resources:
134         "Staff=oboe*dir: 0", "Staff=*.Voice_group=solo*dir: 1"
135
136         * TeX spanners , use texbeam.cc as an example (smallish)
137         - Glissando
138         - trill
139         - bracket
140
141         * Rewrite Stem, Beam and Rhythmic_grouping (hairy)
142         - [c8. c32 c32]
143         - interbeam height
144         - doc on Rhythmic_grouping
145         - general shaving on Beam and Stem
146         - use plet grouping
147         - abbreviations [c2 c2]1/2
148         - separate visual from rhythmic info even more
149         - beams over bars
150
151
152         * Redo font support 
153         - rename mf fonts to avoid conflicts with musixtex
154         - use own fonts/update musixtex fonts/find older (c)-less fonts
155         - hack up mf sources for decent spacing info (and then 
156         read AFM/TFM directly, for text too)
157         - use MF to generate rules.
158         - rewrite : make a metafont iso font
159
160         * lines:
161         - Ledger lines, should be separate item: Ledger_lines, Ledger_lines
162         - set different line sizes / thicknesses
163         - stem down too far right
164         - beam stem showthrough, inter beam sizes (french vs german style)
165
166         * Collisions
167         - bring Collision::do_pre_processing to haircutter
168         - left/right note balls should be handled by Collision:
169         < \multi 2; { \stem 1; <b c> } { <f as b> } >
170
171         * Keys:
172         - merge key{item} & localkey{item}?
173         - do conventional keys (C G A, F B E, a e fis, d as des, etc ), 
174           besides lists of flats/sharps, possibly via declaration
175         - key transposition. 
176         - key undo: \key bes; .. . \key; should print natural   
177         - special key: \key 'b bes bis';
178         - spacing, national styles?
179
180 PARSER
181         * Duration -> Musical_duration, typedef Rational Duration?
182
183 BUGS
184
185         * should adjust stemlength for flag number.
186
187         * lilypond - -> crash
188
189 SEVERELY LACKING:
190
191         * SPEED!
192
193         * multibar rests
194
195         * barnumbers, markers
196
197         * abbreviations c4=16
198
199 INPUTLANGUAGE
200
201         * c4 4 4 4 for c4 c4 c4 c4?
202
203         * neatly (and readably) expressing concurrent
204         voices
205
206         * <c f a>4 ?
207
208         * should have \require{package.ly} to read req'd packages.
209
210         * Viola mode?
211
212                 @c c g e g 
213         for
214                 c g es g, 
215
216                 @A c g e g
217         for
218                 cis gis e gis
219
220         * relative mode for pitch entering
221
222         * bracket (bracketplets)
223
224         * \duration 8; e*2/3
225
226         * configure pitch_byte
227
228         * figured bass?
229
230         * rest name configurable
231
232         * Raw request syntax
233
234 PROJECTS
235
236         * Do RTTI i.s.o. static_name(), name() and request-junk.
237
238 SMALLISH PROJECTS
239
240         * A range for context errors (eg. mark both { and }. )
241
242         * lyric in staff  (sharpsharp in staff, text below)
243
244         * fix Egler definitions ( see tex/eglerdefs.tex )
245
246         * replace Score_elem member access by get()/set() methods, to enable
247         future embedded code.
248
249         * --fast/--draft: leave out constraints
250
251         * write Dynamic_line (to group dynamics horizontally)
252
253         * write Rest_collision
254
255         * use Real for y positions.
256
257         * shared lib on Solaris too.
258
259         * cleanup lily-proto.hh and proto.hh
260
261         * half-sharps, half-flats
262
263         * adaptive accidental spacing.
264
265         * unix style paths for LILYINCLUDE env
266
267         * indentable stream as baseclass for TeX stream, lily stream, Dstream.
268
269         * handle EOF graciously in error messages.
270
271         * caching Item/spanner dimensions.
272
273         * centered whole rest
274
275         * caching breakpoints / saving them. 
276
277         * use dstream feature in mi2mu
278
279         * qtor, btor, mtor-> tor( QUIET_ver ), tor( DEBUG_ver ), etc.
280         - use tors feature in lily (?)
281
282         * declare symtab
283
284         * declare notenametab?
285
286         * midi esp.: use I32 iso int where 32 bits are needed (or assumed...)
287
288         * parshape
289
290         * binsearch/hash for identifiers
291
292         * stafftypes: voice names/ instrument names.
293
294         * Decent TeX titledefs (\tempo, \metron, etc. )
295
296         * lily \tempo
297
298         * C meter iso 4/4, idem for alla breve, etc.
299
300         * textspanner: center position
301
302         * script-spacing
303
304         * Brackets
305         
306         * use (char *) iso. String for communication between lexer and
307         parser.
308
309         * configure idealspacing: arithmetic spacing
310
311         * LilyPond .deb. Other packaging methods?
312
313         * detect -pipe
314
315 DOC
316         * Score_elem structure.
317
318         * all errors
319         
320         * config of TeX macros
321
322         * a test suite
323
324         * hacking-HOWTO
325
326 FUTURE
327
328         * auxilliary file for caching info.
329
330         * Reg_configure_request
331
332         * slur parts as a script
333         
334         * mixed fontsizes
335
336         * put scripts on bars
337
338         * guitar chord
339
340         * Text_crescendo
341
342         * clean solution for staffsize in items.
343
344         * revise calcideal
345
346         * volta
347
348 IDEAS
349         * check out CORBA for Score_elems?
350
351         * derive PCol from Score_elem? More in Score_elems? Spacing?
352
353         * scoping in Lexer: do general id- assignments in mudela.
354
355         ID '=' EXPR;
356
357         * create libmudela, or liblily_frontend
358
359         * move MIDI stuff (including Quantization) to a ANSI C libmidi library.
360
361         * use an embedded language: Python
362         for: 
363                 - Score_elems
364                 - Engraver
365                 - Translators
366                 - Complex mudela?
367
368         * y -dims in internote? Staff-space? X-dimensions?
369
370         * merge Atom and Symbol?
371
372         * merge common code of Item, Atom/Molecule
373
374         * Spacing_request for manually adjusting spacing
375
376         * caching breakpoints
377
378         * #c <-> cis
379
380         * breath marks 
381
382         * used fixedpoint arithmetic for min. energy.
383
384         * default convert mudela-file.ly -> mudela-file.tex
385           - rename {standchen,scsii-menuetto,...}.tex
386
387         * stack scripts in chords:
388           % fingering:        footing:
389             < a-4 c-2 g-1 >   < c-\ltoe e-\lheel >
390
391         * parameterised scripts for fingering and footing:
392
393             % toe to bheel   four to five
394             %   ^_u            4_5  
395             %     -                           
396             %  --|x--         --|x--
397             %  --|---         --|---
398             %  --|---         --|---
399           (where "to" is a tiny bow)
400
401         * move towards incremental algorithms.
402
403         * design meta-language like TeX and Metafont