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