missing commit in generator.h
[galan.git] / TODO
blob123bb7c7bdb534f0ec91ca3fded10d320c3e45ae
1 ===========================================================================
2 Release protocol
3 ===========================================================================
5 1. Clean out existing binaries: make maintainer-clean
6 2. Test the distribution for yourself: ./configure, make, galan
7    (testing it on Win32 might not be a bad idea, either)
8    (you should also test the tutorial example and any other saved
9    files you can lay your hands on)
10 3. Until satisfied, make changes and return to 1. :-)
11 4. Update the version number:
12         a. change line 3 of configure.in
13         b. change the #define VERSION in config.h.w32
14         c. change the version entry in galan.spec
15         d. change the SSI directives in the webpages
16 5. Get automake to test the distribution: make distcheck
17 6. If this fails, fix it and go back to 1 or 5.
18 7. Inspect the distribution closely
19         - are any new files missing?
20         - is everything clearly copyrighted and GPLed?
21 8. Check the lot into CVS and update tags
22 9. Upload the tarball.
23 10. Update the webpage.
25 11. ...optionally :-), prepare RPMs and Win32 binaries.
27 ===========================================================================
28 Important things to do (not in any particular order)
29 ===========================================================================
31 Infrastructure-related:
32 ----------------------------------------
34 * test the latency preference on Win32 - for that matter, reinstall Windows
35   so that builds proceed correctly ;-(
37 * add BPM control to clock? (Is BPM even a sensible idea? I suppose
38   so, but...)
40 * make controls appear in a spot not already occupied...
41         * use the algorithm from smart-placement.jl in sawmill
43 * implement a "sample library" directory and make paths relative to that
45 * implement tabs in the control-panel and allow controls to be sent to
46   each tab separately.
47   ( do we still need this with control grouping ??? i will not erase this entry
48     because it is still a good idea to have different control panels )
50 * save, load
51         * make loading more robust across incompatible changes
52         * make sure can save/load...
53                 * samples independently
54                 * patterns independently
55         * save/load performances...
57 * variable output sample-rate/bit-depth/number-of-channels etc. to cope
58   with slower machines
59   ( this has to be done for jack support, too ).
60   
62 * make sure you can drive the program entirely from the keyboard!
63         * shortcuts for 'important' things?
64         * menu-popup-keys for the less-common things?
66 * make sure off-line processing works nicely
67 * rename some of the plugins more sensibly
69 * implement alsa_output once ALSA works on my soundcard
71 * implement those glue-diamonds so you can 'bend links round corners'
72         - not as urgent given subroutines?
74 * muting of individual components? individual links?
76 * selection in sheet
77 * selection in controls
79 * set connector to a value from connector menu on sheet
81 * add dialog box to numeric patterns 
82   ( set pattern to curve, one value, slide )
84 * property for numeric pattern from control
86 * change osc radiobutton to be smaller
88 * make iscomp connect to n connectors
89   ( this could be complicated when loading/saving )
91 * fix up down buttons in patloop.c
93 * the sheet (widget) should support layers so that documentation components can be turned on and off
94   And names of connectors can be on the sheet too. It is still not very convenient with the statusbar :(
95   
96 * a component needs to describe its capabilities so that i can find a common denominator for the context
97   menu of selected components. I could hard code deletion. But this is not really what i want.
98   the properties of a component should also be copyable. So that i can set the properties for 10 controls
99   at once. This would be really useful !!! For now it is a pain.
101 Documentation
102 ----------------------------------------
103 * glossary of synthesis terms
104 * document multiple sheets
105 * missing doc for plugins:
106    * ogg_ra
107    * scope
108    * sampler
109    * evt*
112 Controls:
113 ----------------------------------------
115 * led-display control.
117 Sound-related:
118 ----------------------------------------
120 * implement some cool generators/components
121         to do:
122         * A proper LFO!
123         * 5-voice (n-voice?) trigger sequencer?
124         * 5-voice (n-voice?) sample player? ('drum kit')
125         * 'loop' generator (RTRA? ...needs more thought)
126         * compressor/expander/gate/limiter
127         * phaser
128         * EQ-3, EQ-5... EQ like in xmms
129         * FM synth with, say, 5 modulators + vibrato
130         * Bell, Gaussian envelopes
131         * CD input source
134         done:
135         * RAW/WAV-file output device
136         * envelope generator
137         * (note/level) pattern memory/sequencer
138         * (trigger) pattern memory/sequencer
139         * (VCF) filter component a la 303
140         * pattern selector
141         * sample player (monophonic)
142         * add pitch control to sample player
143         * knob component
144         * slider component
145         * gain component
146         * VCA-style envelope-controlled gain component
147         * multitap delay a la Freebirth
148         * sample-reverser
149         * /dev/dsp sample source
151         maybe later:
152         * sample player (polyphonic)
153         * midi???
154         * network-messages --> distributed gAlan?
156 ===========================================================================
157 Less important things to do
158 ===========================================================================
160 * libtoolize the whole thing. I tried this once and couldn't get it to work
161   right. What's more, I couldn't find any help on the web at all. GIMP does
162   things very differently. What other software uses plugins like I am?
164 * use more of glib and less adhockery.
166 * implement 'entry' controls?
167 * allow individual controls to have their own entries in their popup menus
168 * change the text-entry part of controls to a spinbutton
169 * test on a slower machine (this is probably quite important, really)
170         - works relatively nicely on a P75 running Win95... relatively
172 * add some graphical indication (other than icons) to the user of what
173   generator-class a component is a wrapper for an instance of - it can
174   get bloody confusing (how should this be done ???)
176 * pretty icons etc. (general prettification of UI)
178 * make gtkknob and gtkslider share code properly. There's a hell of a lot in
179   common between the two.