-
Notifications
You must be signed in to change notification settings - Fork 9
/
Copy pathTODO
252 lines (145 loc) · 7.75 KB
/
TODO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
==============================================================================
[P]hase [H]armonic [A]dvanced [S]ynthesis [EX]permient
TODO LIST:
==============================================================================
------------------------------------------------------------------------------
Architectural changes:
------------------------------------------------------------------------------
* Eliminate memory leak in ALSA restart / shutdown. Find and
eliminate remaining memory leaks.
* Move GUI, phasex synth engine, audio and MIDI support, and
application framework into separate shared libraries.
* Add thread-safe signal handlers for SIGQUIT and SIGTERM for saving
patches, SIGUSR1 for LADISH, and SIGSTOP and SIGCONT for suspending
workloads.
* Handle misconfigured / missing audio or MIDI driver gracefully.
* Use a table and loop to speed up init_params().
* Add CPU affinity and cgroup configuration support.
------------------------------------------------------------------------------
Build system:
------------------------------------------------------------------------------
* Add build / packaging options to exclude MIDI clock code.
* Add build rules to render knob and icon images from .svg files.
* Use tagged version from git for version referenced from build system.
* Create dev logo to use as main icon/logo in dev builds.
* Add --disable-inputs as a build option to configure.ac.
------------------------------------------------------------------------------
API support:
------------------------------------------------------------------------------
* Support DSSI/OSC for DSSI plugin build. (low priority)
* Support LV2 for LV2 plugin build. (low priority)
* LV2 plugin support in input/output signal chain.
* Support LV2 and DSSI instrument plugin hosting.
* LADSPA plugin support in signal chain.
* PortAudio / PortMIDI support. (low priority)
* Better integration between LASH and native session management.
* Add LADISH support.
* Add Non Session Manager (NSM) support.
------------------------------------------------------------------------------
GUI improvements:
------------------------------------------------------------------------------
* Enable re-routing of JACK/ALSA audio connections in GUI.
* Create an improved ComboKnob widget that consists of a knob, an
editable MIDI cc value w/ up & down arrows, and a non-editable
display value in real units (like note value, freq in hz, dB, etc.)
* Add standard menus and menuitems where applicable.
* Add mouseover hints to show that param labels are clickable.
* Add BPM controller offset to the preferences.
* Add per-channel (per-part?) MIDI status indicators.
* Implement knob color switching (or even alpha-channel glowing rings)
to indicate status (locked, mapped, etc.)
* Add proper finalization for GtkKnob and GtkKnobAnim, possibly
turning GtkKnobAnim into a properl GTK class in the process.
* Finish alternate color themes.
* Add support for color coded knobs.
* Standardize config options with generic config item data structure.
* Add support and graphics to gtkknob for sliders.
* New layouts with parameters in horizontally arranged groups.
* New multi-tab layout (multiple pages of param groups).
* Add sensitivity_parent, sensitivity_parent_value_min,
sensitivity_parent_value_max, visibility_parent,
visibility_parent_value_min, and visibility_parent_value_max to
PARAM struct for improved sensitivity tracking and added visibility
tracking for auto-show / auto-hide parameters.
* Proper detection of desktop size for configuring theme on first launch.
* Add fixed-layout and skin support.
* New compact design for navigator bar.
* Error / Warning dialog popups and message log. Currently, there is
no mechanism in place to pass error, warning, or debug messages back
up to the GUI. This is a key step in eliminating the dependency of
the command line.
* Standardize naming and use of callback arguments.
* Add user-verification for Reset Patch.
* Add laptop mode to gtkknob button handling: Click once to grab a
knob. Once knob is grabbed, all touchpad L-R (or up-down) movements
are translated into relative knob movements. Any button events
received while the knob is grabbed release the grab.
------------------------------------------------------------------------------
Synth improvements / new parameters:
------------------------------------------------------------------------------
* Mono multichannel mode. Optionally map oscillators to different
MIDI channels.
* Optimize DSP algorithms. Use vectorization where possible. Replace
conditionals with the use of function pointers in key places
(starting with run_lfo() and run_osc()).
* Add fine tune and one-shot parameters for LFOs.
* Add Filter Cutoff Mod Amount to oscillators.
* Add modulations for Pan.
* Add pan flipping option to alternate pan between new notes.
* Implement generic parameter smoothing.
* Find a faster way than lookup tables for wave generation, that still
works with current phase accumulator algorithms.
* Fine tune input follower a little better.
* Compressor section that integrates with input follower.
* Add option to play filter cutoff frequencies as MIDI notes on
another MIDI channel.
* Add support for user loaded oscillator samples.
* Add support for full length sample playback.
* White / Pink noise generator w/ ability to modulate filter.
* Add a second filter with linking controls.
* Implement Hermite interpolation for under/over-sampling.
* Implement internal parameter smoothing for Chours Time.
* Add support for alternate tuning systems.
* More thorough support for velocity and aftertouch.
* Add a somewhat flexible modulation matrix.
* Implement an N-pole filter.
------------------------------------------------------------------------------
MIDI improvements:
------------------------------------------------------------------------------
* Add MIDI clock event handling and integrate with new MIDI clock.
* Implement handling of MIDI song position pointer messages for LFO
resync.
* Implement MMC and MTC.
* Add support for modwheel and generic high-res controllers.
* Add MIDI Program Change option to select sessions with values >= 64;
------------------------------------------------------------------------------
JACK improvements:
------------------------------------------------------------------------------
* Fix JACK Transport Tempo and LFO sync.
* Add JACK Freewheel mode.
* Add JACK audio connection tracking / routing.
* Add JACK connection tracking to save session state.
* Add JACK server selection support.
------------------------------------------------------------------------------
ALSA improvements:
------------------------------------------------------------------------------
* Allow connection to multiple (>2) outputs.
* Add ALSA persistent connection handling.
* Fix crash on changing ALSA PCM device when device is not ready.
* Implement retry on busy opening.
* Implement buffer size detection for no-config startup.
* Fix alsa_pcm_mix_parts() for 64-bit sample_t.
------------------------------------------------------------------------------
New major features:
------------------------------------------------------------------------------
* Create a programmable arpeggiator.
* Command line / console interface.
------------------------------------------------------------------------------
New minor features:
------------------------------------------------------------------------------
* Add configuration state to saved sessions.
* Print useful comments in patch output, like the real values that
correspond to the MIDI cc values.
------------------------------------------------------------------------------
Other:
------------------------------------------------------------------------------