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
|
TODO für den synth
o .so unloaden!
o note-compiler: wenn vel_influence für foo, aber foo ist konstant
null, bleibt foo trotzdem konstant.
o note-compiler: vel_influence ist IMMER gegeben für output, außer
wenn anders angegeben
o note-compiler: *1 bzw /2 optimierungen klappen nicht?
x note-compiler: pfactor nicht wegoptimieren, immer verwenden
o beide parser: envelopes von oscs mit out=0 standardmäßig deaktivieren
o envelope, filter, ggf. auch alles aus program.o im hauptprogramm
lassen? d.h. via init funktionspointer übergeben oder virtuelle
interfaceklassen benutzen (für envelope/filter z.B.)
x wave auf int*[] mit wave[i]=new int[] umbauen
x BUG: bei Note::set_param sollte statt dem eigentlichen param
der orig gesetzt werden und dann neu berechnet werden!
x BUG: bei release und reattack: BEIDE male die filter-envelope beachten!
o KSL mit powf und floats statt mit double umschreiben
o statt lfo-nummer direkten zugriff auf curr_lfo angeben?
x oscval-nullen kann in get_sample() weggelassen werden
o bei tremolo (und vibrato?): eventuell nicht prüfen, obs aktiviert
ist, sondern zur not einfach *1 rechnen?
x in get_sample(), beim aufaddieren zum out (und vmtl auch fm-)wert:
erst nach dem addieren scalen, statt für jeden faktor einzeln
o wenn sync global aus ist, kann auch osc.sync genullt werden
o beim default_program vielleicht auch ein optimiertes objekt benutzen?
x filter_envelope könnte mit anderem ctor geinitet werden (weniger schreibarbeit)
x notes compilieren und als .so-datei laden
o programme on-the-fly (um)laden
x parser-klasse durch parse-funktion ersetzen
x reattack a) garnicht, b) immer, c) nur wenn schon in releasephase
--> legatopedal!
o bei envelopes: releasephase abschalten (bei sustain bleiben)
o soft-pedal
o RAM aufräumen?
o jedes programm eigene LFOs?
o andere wellenformen bei LFOs?
o mehr wellen für wave[]
o parser: sehr redundante funktionen zusammenführen
o parser: direkt in result schreiben?
o parser: lässt sich sicher noch viel besser lösen, siehe auch oben
o attack und release ggf. auf niedrigen wert (<=0.01) initen, um
knackser zu vermeiden?
o chorus, reverb etc.
o konnte-nicht-verbinden-warnung weniger schlimm machen
o max_pitchbend per controller setzen?
o nur auf bestimmte channels reagieren
x diverse pedale (soft, sostenuto, halte, legato (?))
(o)lfo-maxima getrennt regeln. nää
(o)bei filter-envelopes: ksr/ksl? nää.
(o)resonanz-tremolo bei tiefpass? nää.
TODO fürs CLI
x ...
|