blob: e9c8510ae08dc325900a4c235cea0e119c1e0203 (
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
|
!!! 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
o 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 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.)
|