1 |
/* |
2 |
* Copyright (c) 2014 - 2019 Christian Schoenebeck |
3 |
* |
4 |
* http://www.linuxsampler.org |
5 |
* |
6 |
* This file is part of LinuxSampler and released under the same terms. |
7 |
* See README file for details. |
8 |
*/ |
9 |
|
10 |
#include "InstrumentScriptVM.h" |
11 |
#include "../../common/global_private.h" |
12 |
#include "EngineChannel.h" |
13 |
|
14 |
namespace LinuxSampler { namespace gig { |
15 |
|
16 |
InstrumentScriptVM::InstrumentScriptVM() : |
17 |
LinuxSampler::InstrumentScriptVM(), m_fnGigSetDimZone(this), |
18 |
m_fnSameRegion(this) |
19 |
{ |
20 |
} |
21 |
|
22 |
std::map<String,vmint> InstrumentScriptVM::builtInConstIntVariables() { |
23 |
// first get built-in integer variables of derived VM class |
24 |
std::map<String,vmint> m = |
25 |
::LinuxSampler::InstrumentScriptVM::builtInConstIntVariables(); |
26 |
|
27 |
// add own built-in script constants |
28 |
m["$GIG_DIM_CHANNEL"] = ::gig::dimension_samplechannel; |
29 |
m["$GIG_DIM_LAYER"] = ::gig::dimension_layer; |
30 |
m["$GIG_DIM_VELOCITY"] = ::gig::dimension_velocity; |
31 |
m["$GIG_DIM_AFTERTOUCH"] = ::gig::dimension_channelaftertouch; |
32 |
m["$GIG_DIM_RELEASE"] = ::gig::dimension_releasetrigger; |
33 |
m["$GIG_DIM_KEYBOARD"] = ::gig::dimension_keyboard; |
34 |
m["$GIG_DIM_ROUNDROBIN"] = ::gig::dimension_roundrobin; |
35 |
m["$GIG_DIM_RANDOM"] = ::gig::dimension_random; |
36 |
m["$GIG_DIM_SMARTMIDI"] = ::gig::dimension_smartmidi; |
37 |
m["$GIG_DIM_ROUNDROBINKEY"] = ::gig::dimension_roundrobinkeyboard; |
38 |
m["$GIG_DIM_MODWHEEL"] = ::gig::dimension_modwheel; |
39 |
m["$GIG_DIM_BREATH"] = ::gig::dimension_breath; |
40 |
m["$GIG_DIM_FOOT"] = ::gig::dimension_foot; |
41 |
m["$GIG_DIM_PORTAMENTOTIME"] = ::gig::dimension_portamentotime; |
42 |
m["$GIG_DIM_EFFECT1"] = ::gig::dimension_effect1; |
43 |
m["$GIG_DIM_EFFECT2"] = ::gig::dimension_effect2; |
44 |
m["$GIG_DIM_GENPURPOSE1"] = ::gig::dimension_genpurpose1; |
45 |
m["$GIG_DIM_GENPURPOSE2"] = ::gig::dimension_genpurpose2; |
46 |
m["$GIG_DIM_GENPURPOSE3"] = ::gig::dimension_genpurpose3; |
47 |
m["$GIG_DIM_GENPURPOSE4"] = ::gig::dimension_genpurpose4; |
48 |
m["$GIG_DIM_SUSTAIN"] = ::gig::dimension_sustainpedal; |
49 |
m["$GIG_DIM_PORTAMENTO"] = ::gig::dimension_portamento; |
50 |
m["$GIG_DIM_SOSTENUTO"] = ::gig::dimension_sostenutopedal; |
51 |
m["$GIG_DIM_SOFT"] = ::gig::dimension_softpedal; |
52 |
m["$GIG_DIM_GENPURPOSE5"] = ::gig::dimension_genpurpose5; |
53 |
m["$GIG_DIM_GENPURPOSE6"] = ::gig::dimension_genpurpose6; |
54 |
m["$GIG_DIM_GENPURPOSE7"] = ::gig::dimension_genpurpose7; |
55 |
m["$GIG_DIM_GENPURPOSE8"] = ::gig::dimension_genpurpose8; |
56 |
m["$GIG_DIM_EFFECT1DEPTH"] = ::gig::dimension_effect1depth; |
57 |
m["$GIG_DIM_EFFECT2DEPTH"] = ::gig::dimension_effect2depth; |
58 |
m["$GIG_DIM_EFFECT3DEPTH"] = ::gig::dimension_effect3depth; |
59 |
m["$GIG_DIM_EFFECT4DEPTH"] = ::gig::dimension_effect4depth; |
60 |
m["$GIG_DIM_EFFECT5DEPTH"] = ::gig::dimension_effect5depth; |
61 |
|
62 |
return m; |
63 |
} |
64 |
|
65 |
VMFunction* InstrumentScriptVM::functionByName(const String& name) { |
66 |
// built-in script functions of this class |
67 |
if (name == "gig_set_dim_zone") return &m_fnGigSetDimZone; |
68 |
if (name == "same_region") return &m_fnSameRegion; |
69 |
|
70 |
// built-in script functions of derived VM class |
71 |
return ::LinuxSampler::InstrumentScriptVM::functionByName(name); |
72 |
} |
73 |
|
74 |
}} // namespace LinuxSampler::gig |