summaryrefslogtreecommitdiff
path: root/TODO
blob: dffbaf42a31a058f0aa66cfb9f3e6eb38b82412f (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
72
73
74
75
!!! interface der compilten note und korrespondierende funktion
    im synth stimmen nicht mehr überein! ÄNDERN! [obsolet]

!!! SEGFAULT beim laden einer nicht-existenten datei per in-synth-cli
    wenn man danach die noten spielen will. nicht reproduzierbar
    
!!! SEGFAULT wegen nicht synchronisierter kommunikation bei panic()!

!!! cleanup() verursacht SEGFAULT, jedenfalls wenn man es durch
    callgrind laufen lässt

TODO für den synth
   x notes kriegen verkettete liste für FM-affect: "kein einfluss"
     steht dann garnicht in der liste (macht aus O(n²) ein O(n))
     (macht notencompiler hoffentlich obsolet)
   o evtl wieder AM implementieren: hätte hoffentlich dann keinen
     negativen einfluss wenn unbenutzt
   x kommunikation sauber synchronisieren: außerhalb von process()
     wird nurnoch ne struct mit funktionspointer und argument-union
     in einen ringbuffer geschrieben. der eigentliche call erfolgt
     dann in process()
   o saubere kommunikation bei ALLEN in-synth-CLI-sachen

   o defines säubern, schöner anordnen
   o frameskipping vlt immer einbauen?
   o testen, ob #define FRAMESKIP bei frameskip=0 nen speednachteil
     bringt
   o wenn nein: FS immer aktiv
     wenn ja: 2 process_callbacks, einen mit, einen ohne fs

   o file-watcher ist unsauber: inotify_map_mutex und prog_load_mutex
     werden eigentlich zu spät erstellt; bei EXTREM schnellen events
     könnte ein noch nicht existenter mutex gelockt werden
   o lock_and_load_program_no_watch_updates und auch die requests
     passen nicht wirklich ins in-synth-cli. vlt woandershin schieben?
	 o im in-synth-cli: lfos- und snh-neusetzen ist falsch
	 	    es muss IMMER gelockt werden.
	 	    allerdings muss maybe_calc_lfos gelockt werden, die noten können
	 	    weiter bestehen

   o max_pitchbend, max_port_time etc per controller setzen?
     per RPN, NRPN
   o nur auf bestimmte channels reagieren

   o jedes programm eigene LFOs?
   o andere wellenformen bei LFOs?
 
   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 konnte-nicht-verbinden-warnung weniger schlimm machen
 
  (o)bei program change vielleicht nicht _ALLE_ controller resetten?

  (o)fehlerklassen für fatale fehler (von string abgeleitet)



TODO fürs CLI
   x ...



obsolet: TODO für den compiler
   o freq-envelopes und pfactor dafür auch für compiled_notes implementieren!
   o envelopes nur alle N frames updaten auch bei compiled notes implementieren!
   o zu testen: funktionieren no-release-envs auch in compilierten noten?
   o 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.)