-
Notifications
You must be signed in to change notification settings - Fork 0
/
TODO.txt
83 lines (75 loc) · 2.55 KB
/
TODO.txt
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
= Undo/redo
- Undo/redo on text fields (imgui has its own undo/redo for that so conflict?)
names also don't affect song output so undo/redo for that is possibly undesirable
- Undo/redo for module modification (research how lv2 and clap handles control changes)
- alternative FX mixer ui
- always once selected FX bus, add another docked window called "FX Bus"
- horizontal fx mixer layout
= Unit tests
= module serialization
= ring buffer
x message queue
x util functions
- sys.h
- song.h
- ui Vec2
- Plugin support
= LV2
- serialization
- Exampler crashes when press "Request Sample"
(this is because i did not implement the request value feature)
- investigate memory leak when loading lv2 plugins
- investigate why Exampler ui doesn't update with ui embedding enabled
- toggle between plugin ui and control ui
- pretty sure there are some bugs
- VST3
- CLAP
- Synths
x basic waveform
- omnisynth
essentially goldbox's advanced fm
- fluidsynth (.sf2 support)
- similar to audiokit's SynthOne
- harmonics
- spectrum
- noise (although probably part of omnisybth)
- sampler
- slicer
- Effects
- mono/stereo converter (similar to calf mono input)
- then, remove unused interlacing feature in LADSPA impl
= echo
- rewrite to use DelayLine class
x limiter
x compressor
= equalizer
x show frequency response
- configurable bandwidth
- distortion
- bitcrusher/downsampler
- chrous
- flanger
- phaser
= reverb
- Automation
- Importing MIDI tracks
- mp3 exports
- Automation
- Channel for playing audio clips
- Song change markers (time signature or tuning)
- Variable-length patterns (useful mainly for audio clips/sampling)
- metronome
- presets
TEMPORARY TODOS:
- RingBuffer/MessageQueue can make write handles(?)
x more memory-safety (prefer std::unique_ptr instead of new directly)
- create default dock layout in code
- don't use native file browser
(port the file browser i made with imgui/love2d to C++)
- figure out why keyboard interactions do not work sometimes with plugin UI embedding enabled
- try not to use spinlocks (used for lv2 port subscription)
x use ring buffer for message queue
- move all util classes/functions into a util namespace
- make audio rendering realtime-capable
(kind of hard, since it's (1.) an extra thread that (2.) can't do memory de/allocation)
- logs. used for plugins and debugging (including debugging for file loading)