1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
|
//=========================================================
// MusE
// Linux Music Editor
// $Id:$
// (C) Copyright 2007 Werner Schweer (ws@seh.de)
//=========================================================
#include "mess2.h"
QList<SynthCtrl*> Mess2::ctrl;
//---------------------------------------------------------
// Mess2
//---------------------------------------------------------
Mess2::Mess2(int channels)
: Mess(channels)
{
initData = 0;
}
//---------------------------------------------------------
// Mess2
//---------------------------------------------------------
Mess2::~Mess2()
{
if (initData)
delete[] initData;
}
//---------------------------------------------------------
// addController
//---------------------------------------------------------
void Mess2::addController(const char* name, int id, int min, int max, int init)
{
SynthCtrl* c = new SynthCtrl(name, id, min, max, init);
ctrl.append(c);
}
//---------------------------------------------------------
// controllerIdx
//---------------------------------------------------------
int Mess2::controllerIdx(const char* name)
{
for (int i = 0; i < ctrl.size(); ++i) {
if (strcmp(ctrl[i]->name, name) == 0)
return i;
}
return -1;
}
//---------------------------------------------------------
// controllerIdx
//---------------------------------------------------------
int Mess2::controllerIdx(int ctrlId)
{
for (int i = 0; i < ctrl.size(); ++i) {
if (ctrl[i]->ctrl == ctrlId)
return i;
}
return -1;
}
//---------------------------------------------------------
// controllerId
//---------------------------------------------------------
int Mess2::controllerId(int idx)
{
if (idx < 0 || idx >= ctrl.size()) {
printf("controllId::illegal controller index %d\n", idx);
return -1;
}
return ctrl[idx]->ctrl;
}
//---------------------------------------------------------
// controllerName
//---------------------------------------------------------
const char* Mess2::controllerName(int idx)
{
if (idx < 0 || idx >= ctrl.size()) {
printf("controllerName::illegal controller index %d\n", idx);
return "?";
}
return ctrl[idx]->name;
}
//---------------------------------------------------------
// getInitData
//---------------------------------------------------------
void Mess2::getInitData(int* bytes, const unsigned char** data)
{
if (initData)
delete[] initData;
int n = ctrl.size() * sizeof(int);
initData = new unsigned char[n];
int* p = (int*)initData;
foreach(SynthCtrl* c, ctrl) {
*p++ = c->val;
}
*data = initData;
*bytes = n;
}
//---------------------------------------------------------
// getControllerInfo
//---------------------------------------------------------
int Mess2::getControllerInfo(int idx, const char** name, int* id, int* min, int* max)
{
if (idx < 0 || idx >= ctrl.size())
return 0;
*name = ctrl[idx]->name;
*id = ctrl[idx]->ctrl;
*min = ctrl[idx]->min;
*max = ctrl[idx]->max;
++idx;
return (idx >= ctrl.size()) ? 0 : idx;
}
|