lilypond-0.1.57
[lilypond.git] / TODO
blob4945d09179284ac0e3bf19bd145eddc54d06a57e
1 Features you cannot find in the doco as working, should be mentioned here.
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
6 Most of the items are marked in the code as well, with full explanation. 
7 grep for TODO and ugh/ugr
9 0.2:
11         * bf: abbrevbeam? 
13         * add full coriolan to website.
15         * robustify Beam (in case of no stems, 32nd notes)
17         * check for groff / troff/ nroff et
19         * latex quirk?
20         * use kpsepath to find all TeX dirs
21         - configure.in 
22         - clean-fonts.sh
24         * mudela-convert.
26         * nicen examples:
27         - remove all \multi
28         - break-up heavily-nested score blocks
30         * --metafont
32         * disable spaces in TeX stuff
33         
34         * handle ^C for tmp/file creation.
36         * WWW mirror/archive for the mailing lists.
38         * dots & rest collisions.
40         * add a screenshot to the website. :)
42         * documentation
43         - introduction?
44         - info?
45         - LaTeX?
46         - more manpages?
48         * naming Mozarella, Madeira, Muella?
50         * versioning for Feta
52         * the warning about the negative slur/tie length appears twice
53         which is irritating.
55         * The `3' in the meter key is a one or two pixels too thin (at 600dpi)
56         in the middle:
58         * better hshift (dots, distance, head dependent)
60         * stem len adjustable
62 STUFF
65         * give Items/Spanners access to unbroken originals      
67         * scoping for properties
69         {       c4
70                 \multi 2  < { \stemup .. } { \stemdown .. } >
71                 c2 
72         }
74         this modifies \stem for the c2
76         * use properties for:
77         - Text_style
78         - default_octave
79         - plet?
80         - default_duration?
81         - default abbreviation
82         - Staff_sym size
83         - default tempo.
84         - font size
85         - bartypes (get rid of derived Span_bar_engravers)
86         - cadenza mode? 
87         - MIDI instrument
88         - staff title
90         * page handling:
91         - PS output
92         - optimal pagebreaking.
94         * put errorlevel in Input class
96         * AFM for font input?
98 3RD PARTY BUGS:
100         * xdvi: PS in magnifying glass.
102         * Fix profiling. gprof bugreport?
104 PROJECTS
106         * Unicode support?
107         - 16 bit Strings
108         - -u switch
109         - detect of 16/8 bit files
110         - examples to go with it.
112         * Spring_spacer:
113         - write a faster Spring_spacer (without matrices if possible)
114         - use straight LP to find minimal "fitting force"
115         - relate energybound to linelen unitspace fontsize etc.
116         - used fixed point fp
118         * \header
119         - output header info to MIDI too.
122         * Makefile stuff:
123         - shared lib on Solaris too.
125         * Add mudela-output to Rosegarden.
127         * a musical dictionary. See Documentation/vocabulary-*, other
128 languages:
129         - italian
130         - german
131         - dutch
132         - swedish
133          .. ?
135         * chords
136         - guitar chords
137         - chord names
138         - basso continuo
139         - Syntax/parser
140         - MIDI output?
141         - typesetting
143         * integrate midi-elts from mi2mu and lily?
145         * Debug logs:
146         - derive lily_stream, Dstream, texstream from ostream?
147         - indentable stream as baseclass for TeX stream, lily stream, Dstream.
148         - use dstream feature in mi2mu
149         - integrate IO checking into stream class
151         * input converters
152         - NIFF?
153         - ABC? 
154         - SMDL?
156         * add to MIDI output:
157         - tempo change
158         - repeat
159         - slurs
160         - dynamics etc.
162         * grace notes
163         - make separate class for Grace_*_engravers 
164         (which is at Voice_gravs level)
165         - make encapsulated spacing problems.
167         * accidentals per Voice_group
169         * Convert all ref/bib stuff into BibTeX.
171         * Output class, handles : (smallish)
172         - help text /(c) notice?
173         - version line
174         - warning /errors/progress
175         - abort on error/warning; exit status
176         - quiet/ignore-version options
177         - logfile output
179         * piano staff
181         * elaborate Staff_side baseclass:
182         - scripts
183         - text
184         - slur start/end
186         * cautionary accidental
188         * Output an output format independent (ofi) typeset file; and 
189           make ofi2 TeX, MusiXTex, Display PostScript, PostScript,
190           Ascii... interpreters. (difficult)
192         - NIFF ?
193         - Common Music Notation
194         - PostScript output (esp. Beams, Slurs, etc)
195         - Move all Score_elems, into libmutype.a
197         * Documentation
198         - Doc Mutopia (Music To The People) 
199         - Doc (C) stuff of sheet music
200         - a better format?  SGML?  TeX?  Info?
201         - a tutorial
203         * TeX spanners , use texbeam.cc as an example (smallish)
204         - Glissando
205         - trill
207         * Rewrite Stem, Beam and Rhythmic_grouping (hairy)
208         - [c8. c32 c32]
209         - doc on Rhythmic_grouping
210         - general shaving on Beam and Stem
211         - use plet grouping
212         - separate visual from rhythmic info even more
213         - beams over bars
215         * Redo fonts
216         - adapt for multiple font sizes.
218         * lines:
219         - Ledger lines, should be separate item: Ledger_lines, Ledger_lines
220         - set different line sizes / thicknesses
221         - beam stem showthrough, inter beam sizes (french vs german style)
223         * Collisions
224         - left/right note balls should be handled by Collision:
225         < \multi 2; { \stem 1; <b c> } { <f as b> } >
227         * Keys:
228         - merge key{item} & localkey{item}?
229         - do conventional keys (C G A, F B E, a e fis, d as des, etc ), 
230           besides lists of flats/sharps, possibly via declaration
231         - key transposition. 
232         - key undo: \key bes; .. . \key; should print natural   
233         - special key: \key bes 'b bis';
234         - spacing, national styles?
236         * Support for TAB
237         - redo Notehead to allow digits as heads
238         - add a \tablature {} lexer mode for easy entering
240         * should adjust stemlength for flag number.
242         * breaking:
243         - caching breakpoints
244         - saving them
245         - penalties
246         - specify number of lines
248         * Rhythmic staff.
250         * multibar rests
252         * markers
255 INPUTLANGUAGE
257         * c4 4 4 4 for c4 c4 c4 c4?
259         * neatly (and readably) expressing concurrent
260         voices
262         * <c f a>4 ?
264         * Viola mode?
266                 @c c g e g 
267         for
268                 c g es g, 
270                 @A c g e g
271         for
272                 cis gis e gis
274         * relative mode for pitch entering
276         * bracket (bracketplets)
278         * configure pitch_byte
280         * rest name configurable
282         * Raw request syntax
284 SMALLISH PROJECTS
286         * progress when creating MIDI elts.
288         * A range for context errors (eg. mark both { and }. )
290         * lyric in staff  (sharpsharp in staff, text below)
292         * write Dynamic_line (to group dynamics horizontally)
294         * use Real for all y positions.
295         - use translate_axis( .. ,Y_AXIS) 
297         * half-sharps, half-flats
299         * adaptive accidental spacing.
301         * handle EOF graciously in error messages.
303         * caching Item/spanner dimensions.
305         * centered whole rest
307         * qtor, btor, mtor-> tor( QUIET_ver ), tor( DEBUG_ver ), etc.
308         - use tors feature in lily (?)
310         * declare notenametab?
312         * midi esp.: use I32 iso int where 32 bits are needed (or assumed...)
314         * Flower types:
315         - A decent scalar type
316         - String hash
317         - Pointer hash
319         * binsearch/hash for identifiers
321         * stafftypes: voice names/ instrument names.
323         * TeX stuff:    
324         - Decent TeX titledefs (\tempo, \metron, etc. )
325         - decent TeX page layout
327         * lily \tempo
329         * C meter iso 4/4, idem for alla breve, etc.
331         * textspanner: center position
333         * Brackets
334         
335         * Scripts:
336         - stack scripts in chords:
337           % fingering:        footing:
338             < a-4 c-2 g-1 >   < c-\ltoe e-\lheel >
339         - script-spacing
340         - slur parts as a script
341         - stack parameterised scripts for fingering and footing:
343             % toe to bheel   four to five
344             %   ^_u            4_5  
345             %     -                           
346             %  --|x--         --|x--
347             %  --|---         --|---
348             %  --|---         --|---
349           (where "to" is a tiny bow)
351         * auxilliary file for caching info.
353         * Text_crescendo
355         * clean solution for staffsize in items.
357         * revise calcideal
359         * volta
361 IDEAS
363         * Output data structures of Mudela in XML/SGML.
365         * create libmudela, or liblily_frontend
367         * move MIDI stuff (including Quantization) to a ANSI C libmidi library.
369         * use an embedded language: Python, Scheme
370         for: 
371                 - Score_elems
372                 - Engraver
373                 - Translators
374                 - Complex mudela?
376         * y -dims in internote? Staff-space? X-dimensions?
378         * Spacing_request for manually adjusting spacing
380         * caching breakpoints
382         * #c <-> cis
384         * breath marks 
386         * used fixedpoint arithmetic for min. energy.
388         * move towards incremental algorithms.
390         * far fetched language ideas
391         - design meta-language like TeX and Metafont
392         - programming/macros input
394         * Global type registration.
396                 My_class * p = create_object( My_class )
397                 Type t = get_type ( *p );
398                 if ( t <= get_type( q ))
399                         ..
401         * versioning stuff (cvt mudela, mudela, etc.)
403         * a real convert-mudela
405         * dots into separate item.
407         * use String iso Text_def for lyrics.
409         * Klavarskribo?
411         * lyrics in chords still fuck up.
413         * pushgroup/popgroup
415         * Use hooks/dependency graphs for properties