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