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