summaryrefslogtreecommitdiff
path: root/TODO
blob: 29f49cc1c766e6a2e2c91bd4c604bf1edc67a4bb (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
!!! 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()!

TODO für den synth
   o 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.)