]> git.donarmstrong.com Git - lilypond.git/blob - TODO
release: 0.0.76
[lilypond.git] / TODO
1 0.1:
2
3         * versioning stuff (cvt mudela, mudela, etc.)
4
5 Features you cannot find in the doco as working, should be mentioned here.
6         
7 This is an assorted collection of stuff that will be done, might be
8 done, or is an idea that I want to think about
9
10 Most of the items are marked in the code as well, with full explanation. 
11 grep for TODO and ugh/ugr
12
13         * dots into separate item.
14
15         * lyrics in chords still fuck up.
16
17         * add to MIDI output:
18         - tempo change
19         - repeat
20         - slurs
21         - dynamics etc.
22
23         * rewire acknowledge_element() logic with a process_acknowledged()
24
25         * pushgroup/popgroup
26
27         * whole head on ledger line
28
29         * piano staff
30
31         * implement better breaking algorithm
32
33         * update 20 pt table
34
35         * decent TeX page layout
36
37         * enter script priority
38
39         * a hands on tutorial
40
41 PROJECTS
42
43         * grace notes
44         - adapt for multiple font sizes.
45         - make separate class for Grace_*_engravers 
46         (which is at Voice_gravs level)
47         - move stem, beam, slur into baseclass to adapt for (fixed
48         size) grace notes.
49
50         * accidentals per Voice_group
51
52         * Convert all ref/bib stuff into BibTeX.
53
54         * Output class, handles : (smallish)
55         - help text /(c) notice?
56         - version line
57         - warning /errors/progress
58         - abort on error/warning; exit status
59         - quiet/ignore-version options
60         - logfile output
61
62         * elaborate Staff_side baseclass:
63         - scripts
64         - text
65         - slur start/end
66
67         * Output an output format independent (ofi) typeset file; and 
68           make ofi2 TeX, MusixTex, PostScript, Ascii... interpreters. (difficult)
69         - poor man's ascii output possible?
70         - MusixTeX output possible? (would have to be done before break calc.)
71         - NIFF ?
72         - Common Music Notation
73         - PostScript output (esp. Beams, Slurs, etc)
74         - Move PScore, Items, Spanners etc. into libmutype.a
75
76         * separate Score_elem settings in user-settable (properties
77         .. ) and non-user-settable part. Maybe use something like X-resources:
78         "Staff=oboe*dir: 0", "Staff=*.Voice_group=solo*dir: 1"
79
80         * TeX spanners , use texbeam.cc as an example (smallish)
81         - Glissando
82         - trill
83         - bracket
84
85         * Rewrite Stem, Beam and Rhythmic_grouping (hairy)
86         - [c8. c32 c32]
87         - interbeam height
88         - doc on Rhythmic_grouping
89         - general shaving on Beam and Stem
90         - use plet grouping
91         - abbreviations [c2 c2]1/2
92         - separate visual from rhythmic info even more
93         - beams over bars
94
95
96         * Redo font support 
97         - rename mf fonts to avoid conflicts with musixtex
98         - use own fonts/update musixtex fonts/find older (c)-less fonts
99         - hack up mf sources for decent spacing info (and then 
100         read AFM/TFM directly, for text too)
101         - use MF to generate rules.
102         - rewrite : make a metafont iso font
103
104         * lines:
105         - Ledger lines, should be separate item: Ledger_lines, Ledger_lines
106         - set different line sizes / thicknesses
107         - stem down too far right
108         - beam stem showthrough, inter beam sizes (french vs german style)
109
110         * Collisions
111         - bring Collision::do_pre_processing to haircutter
112         - left/right note balls should be handled by Collision:
113         < \multi 2; { \stem 1; <b c> } { <f as b> } >
114
115         * Keys:
116         - merge key{item} & localkey{item}?
117         - do conventional keys (C G A, F B E, a e fis, d as des, etc ), 
118           besides lists of flats/sharps, possibly via declaration
119         - key transposition. 
120         - key undo: \key bes; .. . \key; should print natural   
121         - special key: \key 'b bes bis';
122         - spacing, national styles?
123
124 PARSER
125         * Duration -> Musical_duration, typedef Rational Duration?
126
127 BUGS
128
129         * fix mysterious Flex malloc bug 
130
131         * should adjust stemlength for flag number.
132
133         * lilypond - -> crash
134
135         * standchen triool beam up/down
136         
137         * (where are the) gcc compile warnings on linux
138         
139 SEVERELY LACKING:
140
141         * SPEED!
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         * lily \tempo
257
258         * C meter iso 4/4, idem for alla breve, etc.
259
260         * textspanner: center position
261
262         * script-spacing
263
264         * Brackets
265         
266         * use (char *) iso. String for communication between lexer and
267         parser.
268
269         * configure idealspacing: arithmetic spacing
270
271         * LilyPond .deb. Other packaging methods?
272
273         * detect -pipe
274
275 DOC
276         * Score_elem structure.
277
278         * all errors
279         
280         * config of TeX macros
281
282         * a test suite
283
284         * hacking-HOWTO
285
286 FUTURE
287
288         * auxilliary file for caching info.
289
290         * Reg_configure_request
291
292         * slur parts as a script
293         
294         * mixed fontsizes
295
296         * put scripts on bars
297
298         * guitar chord
299
300         * better beamslope calculation: QLP for beams?
301
302         * Text_crescendo
303
304         * clean solution for staffsize in items.
305
306         * revise calcideal
307
308         * volta
309
310 IDEAS
311         * check out CORBA for Score_elems?
312
313         * derive PCol from Score_elem? More in Score_elems? Spacing?
314
315         * scoping in Lexer: do general id- assignments in mudela.
316
317         ID '=' EXPR;
318
319         * create libmudela, or liblily_frontend
320
321         * move MIDI stuff (including Quantization) to a ANSI C libmidi library.
322
323         * use an embedded language: Python
324         for: 
325                 - Score_elems
326                 - Engraver
327                 - Translators
328                 - Complex mudela?
329
330         * y -dims in internote?
331
332         * merge Atom and Symbol?
333
334         * merge common code of Item, Atom/Molecule
335
336         * Spacing_request for manually adjusting spacing
337
338         * caching breakpoints
339
340         * #c <-> cis
341
342         * breath marks 
343
344         * used fixedpoint arithmetic for min. energy.
345
346         * default convert mudela-file.ly -> mudela-file.tex
347           - rename {standchen,scsii-menuetto,...}.tex
348
349         * stack scripts in chords:
350           % fingering:        footing:
351             < a-4 c-2 g-1 >   < c-\ltoe e-\lheel >
352
353         * parameterised scripts for fingering and footing:
354
355             % toe to bheel   four to five
356             %   ^_u            4_5  
357             %     -                           
358             %  --|x--         --|x--
359             %  --|---         --|---
360             %  --|---         --|---
361           (where "to" is a tiny bow)
362
363         * move towards incremental algorithms.
364
365         * design meta-language like TeX and Metafont