]> git.donarmstrong.com Git - lilypond.git/blob - TODO
85db7d288ddc49876eb342cc43a28fdb5e1a4ba0
[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         * adapt Script for new font conventions
10
11         * AFM for font input.
12
13         * Make general "spanning"-elements and "placer"-elements
14
15         - naming Mozarella, Madeira, Muella, Fontaigna, Feta?
16         - bf: abbrevs over whole note
17         - scoping for properties
18
19         {       c4
20                 \multi 2  < { \stemup .. } { \stemdown .. } >
21                 c2 }
22         
23         this modifies \stem for the c2
24
25         * use properties for:
26         - Text_style
27         - default_octave
28         - plet?
29         - default_duration?
30         - default abbreviation
31         - Staff_sym size
32         - default tempo.
33         - font size
34         - bartypes (get rid of derived Span_bar_engravers)
35         - cadenza mode? 
36         - MIDI instrument
37         - staff title
38
39         * check out egcs
40
41         * give Items/Spanners access to unbroken originals      
42
43         * Score_bar/Piano_braces, are *not* ordinary bars 
44
45 3RD PARTY BUGS:
46
47         * ICE: spring-spacer::calcideal()
48
49         * collision.cc: 138, g++ errors
50
51         * Rational infty(HUGE_VAL) on glibc / w32
52
53         * Fix profiling. gprof bugreport?
54
55         * read from mmap directly: bugreport to flex developers->
56         yy_scan_buffer in C++..
57
58         * (where are the) gcc compile warnings on linux
59
60 PROJECTS
61
62         * Spring_spacer:
63         - write a faster Spring_spacer ( without matrices if possible )
64         - relate energybound to linelen unitspace fontsize etc.
65         - used fixed point fp
66
67         * \header
68         - revise lexer mode
69         - write perl script for handling it into databases
70         - write TeX macros to generate titles
71
72         * Makefile stuff:
73         - have make dist produce tarball in out/ directory.
74         - Use Automake
75         - shared lib on Solaris too.
76         - check libtool
77         - generate stuff in out/default, out/sun5-irix etc iso out/ 
78         and out-sun5/
79
80         * Add mudela-output to Rosegarden.
81
82         * a musical dictionary. See Documentation/vocabulary-*, other
83 languages:
84         - italian
85         - german
86         - dutch
87         - swedish
88          .. ?
89
90         * chords
91         - guitar chords
92         - chord names
93         - basso continuo
94         - Syntax/parser
95         - MIDI output?
96         - typesetting
97
98         * integrate midi-elts from mi2mu and lily?
99
100         * Debug logs:
101         - derive lily_stream, Dstream, texstream from ostream?
102         - indentable stream as baseclass for TeX stream, lily stream, Dstream.
103         - use dstream feature in mi2mu
104
105         * input converters
106         - NIFF?
107         - ABC? 
108         - SMDL?
109
110         * robustification
111         - check write errors
112         - check read errors
113         
114         * placement of bar-numbers
115
116 ******************
117
118         \score { < 
119                 \melodic \type Staff { c'4 g'4 }
120                 \lyric { \id "Lyric" ""; hello4 bye4 < a chord > }
121                 \lyric { \id "Lyric" ""; bye4 hello4 }
122                 \melodic { \id "Staff" ""; c'4 g'4 }
123         > }
124
125 ******************
126
127         * add to MIDI output:
128         - tempo change
129         - repeat
130         - slurs
131         - dynamics etc.
132
133         * grace notes
134         - make separate class for Grace_*_engravers 
135         (which is at Voice_gravs level)
136         - make encapsulated spacing problems.
137
138         * On-demand loading of simple-engravers?
139
140         * accidentals per Voice_group
141
142         * Convert all ref/bib stuff into BibTeX.
143
144         * Output class, handles : (smallish)
145         - help text /(c) notice?
146         - version line
147         - warning /errors/progress
148         - abort on error/warning; exit status
149         - quiet/ignore-version options
150         - logfile output
151
152         * piano staff
153
154         * elaborate Staff_side baseclass:
155         - scripts
156         - text
157         - slur start/end
158
159         * Output an output format independent (ofi) typeset file; and 
160           make ofi2 TeX, MusixTex, Display PostScript, PostScript,
161           Ascii... interpreters. (difficult)
162
163         - poor man's ascii output possible?
164         - MusixTeX output possible? (would have to be done before break calc.)
165         - NIFF ?
166         - Common Music Notation
167         - PostScript output (esp. Beams, Slurs, etc)
168         - Move all Score_elems, into libmutype.a
169  
170         * Documentation
171         - Doc Mutopia (Music To The People) 
172         - Doc (C) stuff of sheet music
173         - a tutorial
174
175         * TeX spanners , use texbeam.cc as an example (smallish)
176         - Glissando
177         - trill
178         - bracket
179
180         * Rewrite Stem, Beam and Rhythmic_grouping (hairy)
181         - [c8. c32 c32]
182         - doc on Rhythmic_grouping
183         - general shaving on Beam and Stem
184         - use plet grouping
185         - separate visual from rhythmic info even more
186         - beams over bars
187
188         * Redo fonts
189         - adapt for multiple font sizes.
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         * Output abstract data structures associated with
349 Mudela.
350
351         * create libmudela, or liblily_frontend
352
353         * move MIDI stuff (including Quantization) to a ANSI C libmidi library.
354
355         * use an embedded language: Python
356         for: 
357                 - Score_elems
358                 - Engraver
359                 - Translators
360                 - Complex mudela?
361
362         * y -dims in internote? Staff-space? X-dimensions?
363
364         * Spacing_request for manually adjusting spacing
365
366         * caching breakpoints
367
368         * #c <-> cis
369
370         * breath marks 
371
372         * used fixedpoint arithmetic for min. energy.
373
374         * move towards incremental algorithms.
375
376         * far fetched language ideas
377         - design meta-language like TeX and Metafont
378         - programming/macros input
379
380         * Global type registration.
381
382                 My_class * p = create_object( My_class )
383                 Type t = get_type ( *p );
384                 if ( t <= get_type( q ))
385                         ..
386
387         * naming of Voice_group/Voice
388
389         * benchmark band_matrices.
390
391         * versioning stuff (cvt mudela, mudela, etc.)
392
393         * a real convert-mudela
394
395         * dots into separate item.
396
397         * use String iso Text_def for lyrics.
398
399         * use position 0 for center of staff iso bottom.
400
401         * Klavarskribo?
402
403         * lyrics in chords still fuck up.
404
405         - rewire acknowledge_element() logic with a process_acknowledged()
406
407         * pushgroup/popgroup
408
409         * whole head on ledger line
410
411         * multi threading?
412           - 1 thread per element/ 1 thread per line
413           - 1 thread per Translator
414
415         * Use hooks/dependency graphs for properties