-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFuseModule.js
88 lines (82 loc) · 2.25 KB
/
FuseModule.js
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
var modelNames = {
// amplifiers
83 : "Fender 65 Deluxe Reverb",
100 : "Fender 59 Bassman",
103 : "Fender 57 Deluxe",
124 : "Fender 57 Champ",
106 : "Fender 65 Princeton",
117 : "Fender 65 Twin Reverb",
114 : "Fender Super Sonic",
97 : "British 60's",
121 : "British 70's",
94 : "British 80's",
93 : "American 90's",
109 : "Metal 2000",
// effects
60 : 'Overdrive',
73 : 'Fixed Wah',
74 : 'Touch Wah',
26 : 'Fuzz',
28 : 'Fuzz Touch Wah',
136 : 'Simple Compressor',
7 : 'Compressor',
18 : 'Sine Chorus',
19 : 'Triangle Chorus',
24 : 'Sine Flanger',
25 : 'Triangle Flanger',
45 : 'Vibratone',
64 : 'Vintage Tremolo',
65 : 'Sine Tremolo',
34 : 'Ring Modulator',
41 : 'Step Filter',
79 : 'Phaser',
31 : 'Pitch Shifer'
};
class FuseModule {
constructor(data) {
//console.log(data.__private);
var tobj = this;
this.Type = data.presetMessageType;
this.Data = data;
//this.Parameters = {};
//console.log('fuseModule');
//console.log(data);
var addProperty = (propertyName) => {
//console.log("Adding property " + propertyName);
var isEnumerable;
if(data.__private[propertyName]) {
isEnumerable = false;
} else {
isEnumerable = true;
}
Object.defineProperty(tobj, propertyName, {
get : () => {
return data.__data[data.__propertyIndex[propertyName]];
},
set : (value) => {
//data[propertyName] = value;
if(data.__data[data.__propertyIndex[propertyName]] !== value) {
console.log('setting value ' + propertyName + ' = ' + value);
data.__data[data.__propertyIndex[propertyName]] = value;
//console.log(data.__data);
if(tobj.onupdate) {
tobj.onupdate(data);
}
}
},
enumerable: isEnumerable
});
//tobj[propertyName] = data[propertyName];
//console.log(tobj[propertyName]);
};
for(var obj in data) {
addProperty(obj);
}
if(this.modelId) {
if(modelNames[this.modelId]) {
this.modelName = modelNames[this.modelId];
}
}
}
}
module.exports = FuseModule;