File size: 1,333 Bytes
b0bfea8 |
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 |
/**
* @typedef {Object} SoundFontRange
* @property {number} min - the minimum midi note
* @property {number} max - the maximum midi note
*/
export class BasicZone
{
/**
* The zone's velocity range
* min -1 means that it is a default value
* @type {SoundFontRange}
*/
velRange = { min: -1, max: 127 };
/**
* The zone's key range
* min -1 means that it is a default value
* @type {SoundFontRange}
*/
keyRange = { min: -1, max: 127 };
/**
* Indicates if the zone is global
* @type {boolean}
*/
isGlobal = false;
/**
* The zone's generators
* @type {Generator[]}
*/
generators = [];
/**
* The zone's modulators
* @type {Modulator[]}
*/
modulators = [];
/**
* @returns {boolean}
*/
get hasKeyRange()
{
return this.keyRange.min !== -1;
}
/**
* @returns {boolean}
*/
get hasVelRange()
{
return this.velRange.min !== -1;
}
/**
* @param generatorType {generatorTypes}
* @param notFoundValue {number}
* @returns {number}
*/
getGeneratorValue(generatorType, notFoundValue)
{
return this.generators.find(g => g.generatorType === generatorType)?.generatorValue ?? notFoundValue;
}
}
|