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