217 |
* |
* |
218 |
* Takes a planned new region (@a regionGroup) as argument and identifies which |
* Takes a planned new region (@a regionGroup) as argument and identifies which |
219 |
* precise dimensions would have to be created for that new region, along with |
* precise dimensions would have to be created for that new region, along with |
220 |
* the amount of dimension zones and their precise individual zone sizes. |
* the amount of dimension zones. |
221 |
* |
* |
222 |
* @param regionGroup - planned new region for a new instrument |
* @param regionGroup - planned new region for a new instrument |
223 |
* @returns set of dimensions that shall be created for the given planned region |
* @returns set of dimensions that shall be created for the given planned region |
242 |
for (uint z = 0; z < def.zones; ++z) { |
for (uint z = 0; z < def.zones; ++z) { |
243 |
int dr = z << previousBits; |
int dr = z << previousBits; |
244 |
gig::DimensionRegion* dimRgn = rgn->pDimensionRegions[dr]; |
gig::DimensionRegion* dimRgn = rgn->pDimensionRegions[dr]; |
245 |
// Store the individual dimension zone sizes (or actually their |
// NOTE: Originally this function collected dimensions' upper |
246 |
// upper limits here) for each dimension. |
// limits. However that caused combined instruments (e.g. with |
247 |
// HACK: Note that the velocity dimension is specially handled |
// unequal dimension zone counts, not being a power of two) to |
248 |
// here. Instead of taking over custom velocity split sizes |
// end up having too many dimension zones and those extra zones |
249 |
// here, only a bogus number (zone index number) is stored for |
// containing no sample. For that reason we simply collect the |
250 |
// each velocity zone, that way only the maxiumum amount of |
// required amount of output dimension zones here now instead. |
|
// velocity splits of all regions is stored here, and when their |
|
|
// individual DimensionRegions are finally copied (later), the |
|
|
// individual velocity split size are copied by that. |
|
251 |
const int upperLimit = |
const int upperLimit = |
252 |
|
/* |
253 |
(def.dimension == gig::dimension_velocity) ? |
(def.dimension == gig::dimension_velocity) ? |
254 |
z : (def.split_type == gig::split_type_bit) ? |
z : (def.split_type == gig::split_type_bit) ? |
255 |
((z+1) * 128/def.zones - 1) : dimRgn->DimensionUpperLimits[dr]; |
((z+1) * 128/def.zones - 1) : dimRgn->DimensionUpperLimits[dr]; |
256 |
|
*/ |
257 |
|
z; |
258 |
#if DEBUG_COMBINE_INSTRUMENTS |
#if DEBUG_COMBINE_INSTRUMENTS |
259 |
printf(" %d,", upperLimit); |
printf(" %d,", upperLimit); |
260 |
#endif |
#endif |