summaryrefslogtreecommitdiff
path: root/plugins/ZamSFZ/ZamSFZPlugin.cpp
diff options
context:
space:
mode:
authorDamien Zammit <damien@zamaudio.com>2015-02-13 20:13:41 +1100
committerDamien Zammit <damien@zamaudio.com>2015-02-13 20:13:41 +1100
commitd00365cc523b4d699e4b2b06394a552c45f5c1cc (patch)
tree7f7445f2e784b43fe88505e941f02023714a0b5d /plugins/ZamSFZ/ZamSFZPlugin.cpp
parent17e7dbd81a847777a48265778e3f255bd111117d (diff)
Update ZamSFZ
Signed-off-by: Damien Zammit <damien@zamaudio.com>
Diffstat (limited to 'plugins/ZamSFZ/ZamSFZPlugin.cpp')
-rw-r--r--plugins/ZamSFZ/ZamSFZPlugin.cpp18
1 files changed, 12 insertions, 6 deletions
diff --git a/plugins/ZamSFZ/ZamSFZPlugin.cpp b/plugins/ZamSFZ/ZamSFZPlugin.cpp
index 54b2cc2..9c436e5 100644
--- a/plugins/ZamSFZ/ZamSFZPlugin.cpp
+++ b/plugins/ZamSFZ/ZamSFZPlugin.cpp
@@ -279,14 +279,20 @@ void ZamSFZPlugin::d_run(const float**, float** outputs, uint32_t frames,
voice[k].vi = 0.f;
} else {
int n = voice[k].notenum;
- int vel = (int) (sfz.maxlayers[voice[k].notenum]
- * voice[k].vi);
+ int v = voice[k].vi * 127.;
+ int l = 0;
+ for (int k = 0; k < sfz.layers[n].max; k++) {
+ if (sfz.layers[n].l[k].lovel <= v && v <= sfz.layers[n].l[k].hivel) {
+ l = k;
+ break;
+ }
+ }
int pos = voice[k].rampstate;
- wavel = sfz.sample[n][vel][0][pos];
- waver = sfz.sample[n][vel][1][pos];
+ wavel = sfz.sample[n][l][0][pos];
+ waver = sfz.sample[n][l][1][pos];
}
- outl += wavel*voice[k].curamp/5.;
- outr += waver*voice[k].curamp/5.;
+ outl += wavel*voice[k].curamp/2.;
+ outr += waver*voice[k].curamp/2.;
}
if (signal) {
//outl;