-
Notifications
You must be signed in to change notification settings - Fork 6
/
TODO
156 lines (129 loc) · 4.89 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
1.0.0 (-beta3)?:
- update manual
- does mono work well with clap / clap ids?
- LV2 window resizing doesn't work in Ardour7
- debug difference between aurora mac aarch64-apple-darwin23.5.0 + sanitizers and linux
- implement spectral centroid feature
- allow unison audio tests with static phase reset
- experiment with smooth tuning for formant correction to reduce artifacts
- try using smooth (1/3 octave?) formant envelopes to reduce artifacts
NEXT RELEASE:
- [maybe] support formant correction for Source
- stereo unison
- experiments for handling freq < 1 in spectral envelope (bass boost)
- portamento could morph while sliding
Other:
- handle XPARAM scaled parameters for modulation
- non-linear modulation mapping
- visual feedback for adsr envelope
- try to get old performance from new inner loop
- could implement UI scaling for macOS
- maybe treat std::sin, std::cos like std::fabs
- maybe subharmonic tagging
- we may want to publish spectmorph vs. crossfade results
- why does white noise not sound like white noise?
- panning per note
- better spectral subtract [1]
- vibrato could have delay property
- possibly add MPE timbre
INTERESTING BRANCHES:
- morph-source-formant-correction: add formant correction to MorphSource
insts:
- tuba
- flute
new operators:
- crossfade by midi note -> control (bass-trombone / trumpet inst)
- tremolo
- "wave" table
- synthetic
_________
smenc:
- move partial pruning step to seperate step to be performed after attack optimization
- merge new-pruning-scaling branch somehow
- implement phase-correct "nearest frame" decoding instead of overlap-adding frames
- compute peak over nearest minimum in dB
- compute peak over local (frame) maximum in dB
- debug performance problems
=> implement downsampling for really low notes
=> use symmetry to speed up optimize_partials
=> make a squared window table (optimize_partials)
- implement sinc interpolation for spectrum phase
- make load() function of SpectMorph::Audio and SpectMorph::WavSet reset state
- optimize memory usage of encoder
- reanalyze residual after first pass
- increase time resolution for residual for low notes
- use NoiseBandPartition class to get faster noise band splitting
- adjust noise bands according to frequency specs
smlive:
- make FFTW integration thread safe
- SSEified noise generation:
* use a table of (sin[0] cos[0], .. sin[255] cos[255])
* load sincos[random] sincos[random+1] and shuffle values together
* write out result
* combine loop with apply window
- SSEify render_partial
lag diagrams of note start
documentation:
- update API documentation with new classes (LiveDecoder, GenericIn*)
sminspector:
- figure out why mix_freq is 0 for inspect1 foo.wav
morphing:
- performance: use O(n) loop to associate each freq with the nearest freq of the
other input -> less search cycles, since we already have the best match freq
lv2:
- could implement ui:showInterface for hosts that don't support X11UI
------------ NEW RELEASE ------------
- spectmorph-instruments (edit & run misc/make-dist-docker.sh, tag, github release)
- spectmorph (update INST_TAG)
- debian updates
- pbuilder
- make distcheck
- update NEWS
- spectmorph git tag
- github release
- windows installer
- static linux
- macOS pkg
- release tarball
- deb
- update spectmorph.org
- rebuild docs
- update pages (download...)
- release announcement mailing lists
- blog
- freshcode
- mastodon
- twitter (x)
------------------------------------
[1] encoder: better spectral subtract
Often, partials are not stable within one analysis frame - their amplitude
and/or frequency can change (see claudia-ah|claudia-ih|claudia-oh) - as a
result, the peak can be more wide than a mere windowed sine. The result
is extra noise (for instance claudia-ah-1-84.sm with frame size 20).
The idea of this change is to subtract a slightly wider peak from the
spectrum to compensate for unstable partials. A gaussian peak could be
tried, or sines with different frequency|amplitude variations could be
analyzed.
Noise very close to the partial would normally not be audible anyways, as
it should be masked.
------------------------------------
== List of plugin tests before releases: ==
1. create SpectMorph CLAP plugin
3. basic ui:
- do ui elements change color if you move over them without clicking?
- checkboxes work?
- sliders work?
- menus work?
- can you rename an operator?
4. does the default preset produce sound?
5. switching to 2x2 grid morph using ui preset
- does mouse interaction work with grid work & sound correctly?
6. load keytrack choir ah/oh preset
- does key tracking work?
- do you get visual feedback (grey dots in keytrack operator/grid)
- does changing control #1 from outside the plugin morph ah <-> oh?
7. create new user defined instrument
- does set loop range / name / midi note / tuning work?
- does play work?
- does play position pointer move properly while playing?
- does it work in WavSource after saving it?