diff options
author | Florian Jung <flo@thinkpad.(none)> | 2011-02-04 16:29:08 +0100 |
---|---|---|
committer | Florian Jung <flo@thinkpad.(none)> | 2011-02-04 16:29:08 +0100 |
commit | 080ddd252d94b9304db3858bc3b7f79cf2f89f33 (patch) | |
tree | 994f2b85138dc1f944481abc4d1e505cecf04bb8 /synth/note.cpp | |
parent | 6ea25018546ebc099845158de7fef29c1c4fb28d (diff) |
factor[foo] now accepts semitones instead of a factor
However, internally, factor still behaves as usual.
Only all functions which can set/change .factor do the calculation
from semitones to the real factor.
Diffstat (limited to 'synth/note.cpp')
-rw-r--r-- | synth/note.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/synth/note.cpp b/synth/note.cpp index 57d8302..d208ae8 100644 --- a/synth/note.cpp +++ b/synth/note.cpp @@ -178,7 +178,7 @@ void Note::set_param(const parameter_t &p, fixed_t v) //ACHTUNG: case KSR: oscillator[p.osc].ksr=float(v)/ONE; break; case KSL: oscillator[p.osc].ksl=float(v)/ONE; break; - case FACTOR: orig.oscillator[p.osc].factor=v; oscillator[p.osc].factor=v*freqfactor_factor[p.osc]; break; + case FACTOR: orig.oscillator[p.osc].factor=pow(2.0, (double)v/12.0/ONE)*ONE; oscillator[p.osc].factor=v*freqfactor_factor[p.osc]; break; case MODULATION: orig.oscillator[p.osc].fm_strength[p.index]=v; apply_pfactor(); break; case OUTPUT: orig.oscillator[p.osc].output=v; apply_pfactor(); break; case TREMOLO: oscillator[p.osc].tremolo_depth=v; break; |