MuseScore
3.4
Music composition and notation
zerberus
zone.h
Go to the documentation of this file.
1
//=============================================================================
2
// MuseSynth
3
// Music Software Synthesizer
4
//
5
// Copyright (C) 2013 Werner Schweer
6
//
7
// This program is free software; you can redistribute it and/or modify
8
// it under the terms of the GNU General Public License version 2
9
// as published by the Free Software Foundation and appearing in
10
// the file LICENCE.GPL
11
//=============================================================================
12
13
#ifndef __ZONE_H__
14
#define __ZONE_H__
15
16
class
Sample
;
17
class
Channel
;
18
19
//---------------------------------------------------------
20
// Trigger
21
//---------------------------------------------------------
22
23
enum class
Trigger
: char {
24
ATTACK
,
RELEASE
,
FIRST
,
LEGATO
,
CC
25
};
26
27
//---------------------------------------------------------
28
// LoopMode
29
//---------------------------------------------------------
30
31
enum class
LoopMode
: char {
32
NO_LOOP
,
ONE_SHOT
,
CONTINUOUS
,
SUSTAIN
33
};
34
35
//---------------------------------------------------------
36
// OffMode
37
//---------------------------------------------------------
38
39
enum class
OffMode
: char {
40
FAST
,
NORMAL
41
};
42
43
enum class
FilterType
{
44
lpf_2p
,
//default, double-pole low-pass filter
45
lpf_1p
,
//single-pole low-pass filter
46
hpf_2p
,
//double-pole high-pass filter
47
hpf_1p
,
//single-pole high-pass filter
48
bpf_2p
,
//double-pole band-pass filter
49
brf_2p
//double-pole band-reject filter
50
};
51
52
//---------------------------------------------------------
53
// Zone
54
//---------------------------------------------------------
55
56
struct
Zone
{
57
Sample
* sample = 0;
58
long
long
offset = 0;
//[0, 4294967295]
59
int
seq
= 0;
60
int
seqLen = 0;
61
int
seqPos = 0;
62
63
char
keyLo = 0;
64
char
keyHi = 127;
65
char
veloLo = 0;
66
char
veloHi = 127;
67
char
keyBase = 60;
68
int
tune = 0;
// fine tuning in cent (-100 - +100)
69
double
pitchKeytrack = 100.0;
70
float
volume = 1.0;
71
float
lVol = .5;
72
float
rVol = .5;
73
float
ampVeltrack = 100;
// amplifier velocity tracking
74
float
ampegDelay = 0.0;
75
float
ampegStart = 0.0;
76
float
ampegAttack = 1.0;
77
float
ampegHold = 0.0;
78
float
ampegDecay = 0.0;
79
float
ampegSustain = 1.0;
80
float
ampegRelease = 200.0;
// release time in ms
81
float
ampegVel2Delay = 0.0;
82
float
ampegVel2Attack = 0.0;
83
float
ampegVel2Hold = 0.0;
84
float
ampegVel2Decay = 0.0;
85
float
ampegVel2Sustain = 0.0;
86
float
ampegVel2Release = 0.0;
87
float
rtDecay = 0.0;
88
float
delay = 0.0;
89
int
pan = 0;
90
float
group_volume = 1.0;
91
float
global_volume = 1.0;
92
93
//filters
94
bool
isCutoffDefined
;
95
float
cutoff
;
//[0, sampleRate / 2] Hz
96
int
fil_keytrack
;
//[0, 1200] cents
97
int
fil_keycenter
;
//[0, 127]
98
int
fil_veltrack
;
//[-9600, 9600] cents
99
FilterType
fil_type =
FilterType::lpf_2p
;
100
101
Trigger
trigger =
Trigger::ATTACK
;
102
LoopMode
loopMode =
LoopMode::NO_LOOP
;
103
OffMode
offMode =
OffMode::FAST
;
104
int
group = 0;
105
int
offBy = 0;
106
long
long
loopStart
, loopEnd;
107
double
loRand = 0.0;
108
double
hiRand = 1.0;
109
110
std::map<int, double>
gainOnCC
;
111
double
ccGain = 1.0;
112
113
int
onLocc[128];
114
int
onHicc[128];
115
int
locc[128];
116
int
hicc[128];
117
bool
useCC =
false
;
118
119
Zone
();
120
~
Zone
();
121
bool
match(
Channel
*,
int
key,
int
velo,
Trigger
,
double
rand,
int
cc,
int
ccVal);
122
void
updateCCGain(
Channel
* c);
123
};
124
125
#endif
126
Trigger::CC
Ms::seq
Seq * seq
Definition:
seq.cpp:62
LoopMode::ONE_SHOT
Zone::isCutoffDefined
bool isCutoffDefined
Definition:
zone.h:94
Zone::fil_veltrack
int fil_veltrack
Definition:
zone.h:98
OffMode::FAST
Trigger::ATTACK
Zone::fil_keycenter
int fil_keycenter
Definition:
zone.h:97
LoopMode::SUSTAIN
LoopMode::CONTINUOUS
LoopMode::NO_LOOP
Zone
Definition:
zone.h:56
Trigger
Trigger
Definition:
zone.h:23
FilterType::lpf_2p
FilterType::hpf_1p
FilterType::lpf_1p
FilterType::hpf_2p
Trigger::RELEASE
FilterType
FilterType
Definition:
zone.h:43
OffMode
OffMode
Definition:
zone.h:39
FilterType::bpf_2p
LoopMode
LoopMode
Definition:
zone.h:31
FilterType::brf_2p
Zone::cutoff
float cutoff
Definition:
zone.h:95
Zone::fil_keytrack
int fil_keytrack
Definition:
zone.h:96
Sample
Definition:
sample.h:20
Trigger::LEGATO
Zone::gainOnCC
std::map< int, double > gainOnCC
Definition:
zone.h:110
Zone::loopStart
long long loopStart
Definition:
zone.h:106
OffMode::NORMAL
Trigger::FIRST
Channel
Definition:
channel.h:23
Generated by
1.8.13