summaryrefslogtreecommitdiff
path: root/synth/TODO.done
blob: 0cd6d16ed25bad13457dc47c9d1c9364b0ec4b9b (plain)
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
TODO für den synth
   x knistern bei aktivem frameskip
   x tremolo und vibrato: phase nurnoch ++
   x rettack im monomode abschalten (sondern einfach nur freq ändern)
   x bei freqänderung: aufpassen, ob nicht das programm auch geändert
                       wurde. wenn ja: delete && new
   x note-limit
   x stereo: pan/balance
   x envelopes on-the-fly ändern
   x programs laden
   x beim note-limit: statt abzuschneiden ausblenden
   x einstellmöglichkeiten via MIDI-controller
   x grund-controller bearbeiten
   x ein port pro channel
   x controllern einen defaultwert pro programm mitgeben
   x monophoner modus
   x reattack
   x alwaysreattack setzen können
   x portamento testen
   x memcheck-clean!
   x memcpy durch copy() plus operator= ersetzen?
   x pitch-bend
   x controller-reset
   x key scale level, key scale rate
   x akkurates note-on
   x frameskip
   x globale config-datei, oder alle programs in einem verz. einlesen etc.
   x auf dateifehler reagieren!
   x sampler-"oscs", d.h. laden von wav-dateien, die sich sonst
     wie oscs verhalten (fm möglich usw.)
   x analoge synthese auf den output jeder note anwenden
   x tiefpass via def.datei setzen: trem, env, res
   x tiefpass via controller setzen
   x osc-sync
   x bei genügend xruns noten töten
   x filter knackst
   x bei self-mod mit faktor 1 (auch ohne filter): segfault
   x bei starken vibratos: segfault, weil fm zu extrem wird
   x bei bug.prog: auch ohne filter: knacksen bei den meisten noten (z.B. C)
   x per velocity statt lautstärke andere params steuern
   x frameskip so implementieren, dass bufsize irrelevant ist
   x lfo_update_frames einstellbar machen
     sollte durch frameskip dividiert werden
   x tremolo- und vibrato-arrays sind mit mehreren MB zu groß!
     ein wert pro sample ist unnötig. könnte auch rechenzeit in
     calc_foo sparen, da seltener aufgerufen
   x sample-and-hold -> fm_strength, -> freq, -> VCF
   * bei osc-envelopes ggf. auch nur alle n frames neu setzen? [verschoben]
   * filter optimieren? (arbeiten momentan mit floats) [verschoben]
     verstehen, optimieren und dann profilen
   x stimmt die stereo-implementierung?  [ja]


TODO fürs CLI
   x filter_update_frames, lfo_update_frames in config, in sec (auch im CLI)
   x max_port_time einstellen
   x manuelle program -> datei - mappings
   x automatische mappings ( xxxIGNORIERT.prg, xxx ist die programmnummer),
     alle dateien eines verzeichnisses einlesen. bei nichtexistenz
     auf normalen sinus zurückfallen
   x konfigdateien lesen (inhalt wie CLI-optionen)
   x vibrato- und tremolo-frequenzen einstellen
   x cleanup-intervall setzen
   x space-sicher machen
   x fehlerbehandlung:
     syntaxfehler sollten übergangen werden, sofern möglich
     in parser: throw!, sonst: meckern und nächste zeile parsen
   x automatisch an alle midi-outs hängen
   x interface div-by-zero-sicher machen