-
Notifications
You must be signed in to change notification settings - Fork 5
/
TODO
125 lines (109 loc) · 4.02 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
NEWER TODOS:
VoiceSource:
- better names for WavSource formant correction
- better names inside VoiceSource; rename VoiceSource
Other:
- presets for 1.0.0
- 1-instrument-wav-source contains the data - not a good idea!
- LV2 archive storage doesn't seem to work
- fix asan issues in PandaResampler
- handle XPARAM scaled parameters for modulation
- update manual
- does mono work well with clap / clap ids?
- LV2 window resizing doesn't work in Ardour7
- JACK control-by-CC should use midi channel, too
- 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
NEXT RELEASE:
- [maybe] support formant correction for Source
- experiments for handling freq < 1 in spectral envelope
- portamento could morph while sliding
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
- key track
- "wave" table
- envelope
- 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
- maybe use integer phase representation (-> less floor()/float->int/int->float cycles)
- 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 ------------
- git tag
- debian updates
- pbuilder
- make distcheck
- instruments.tar.xz (in evaluation/: make-dist)
- update NEWS
- update spectmorph.org
- rebuild docs
- release tarball
- debs
- freshcode
- blog
- google+
- facebook
- release announcement mailing lists
- mail arch linux maintainer (AUR)
- test builds on gentoo and ubuntu 17.04
------------------------------------
[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.