summaryrefslogtreecommitdiff
path: root/synth/OPTIMIZATIONS
diff options
context:
space:
mode:
authorFlorian Jung <florian.a.jung@web.de>2012-04-11 16:36:45 +0200
committerFlorian Jung <florian.a.jung@web.de>2012-04-11 16:36:45 +0200
commit7c875a14b73d844f4f3b8390e4463610262d9415 (patch)
tree915e0023706f3f5a3a81c1707415989dde472bad /synth/OPTIMIZATIONS
parentaec14a264cdb19ccbd9e53596c58da9b60308909 (diff)
added FM-list (brings between 0% and 15% performance improvement)
cast-optimisation programs gets a better operator= commented out segfaulting cleanup()
Diffstat (limited to 'synth/OPTIMIZATIONS')
-rw-r--r--synth/OPTIMIZATIONS14
1 files changed, 14 insertions, 0 deletions
diff --git a/synth/OPTIMIZATIONS b/synth/OPTIMIZATIONS
index 14d5f4f..4a22fd4 100644
--- a/synth/OPTIMIZATIONS
+++ b/synth/OPTIMIZATIONS
@@ -2,6 +2,20 @@ Sinnlose Optimierungen
o if(foo.fm_strength!=0) ...: kein effekt, höchstens leichter anstieg!
Mögliche Optimierungen
+ o ??? if (out>0) und was mit lfo: vlt das if weglassen?
+ o 1% noten kriegen direkten pointer auf ihre waves; (custom_wave-check entfällt)
+ x 15% fm-liste (die nur die oscs mit fm[i]!=0 enthält) statt
+ in O(n²) alle durchzutesten: bei 2 oszillatoren kein effekt,
+ bei 9 oscs der form 1->2->3...->9 (also 9 mod-beziehungen)
+ 17% verbesserung
+ o ??? Channel::get_sample() soll mehrere frames berechnen.
+ soll außerdem das /ONE*VOL_FACTOR gleich mit einrechnen
+ (kann einmalig gleich mit Channel::volume verrechnet werden)
+ o 10% BOTTLENECKs in note.cpp fixen. actual_freq und abhängigkeiten
+ nur dann berechnen, wenn sie sich auch ändert (set_freq, porta,
+ pitchbend, freq-envelope)
+ o ??? log_verbose sollte ggf. garnicht interpretiert werden?
+
o 10% filter ganz auf fixed_t umstellen?
o 5% envelope::get_level nur alle n frames arbeiten lassen, sonst cachen?
o 2% bei LFOs: bei jedem LFO-update die werte für env-max, freqfactor