What’s the best way to arrange group volume control?

I have a bunch of layers related to a certain articulations and mics in the structure like this:

Artic_1_mic_1
Artic_1_mic_2
Artic_1_mic_3

Artic_2_mic_1
Artic_2_mic_2
Artic_2_mic_3

etc

And I want to control separately both: volume of each mic and volume of each articulation (so it’s like having a group volume).

What is the most convenient way to accomplish this? Also I’d like to keep intact the Level parameter on all layers, as I’m going to use it for manual tweaking of articulations volume/balance.

I would put the 3 mic layers in layer. So the parent layer controls the overall volume and you still have the level control of each mic layer to balance the sound within articulation.

No, no - as I said I’d like to keep Level parameter for my own manual tweaking. So I need another independent way to control volume.

The parent layer will give you one extra level control independent of the mic layers levels.

Hmmm… I still don’t get it. All in all I need 3 independent controls: 1) for manual tweaking (will stay unchangeable after instrument’s release); 2) volume for each articulation (available on UI); 3) volume for each mic (available on UI). The idea suggested above provides only two volume controls, not three.

Use zone amp section for this. You can edit multiple zones at once. Double click a zone in program tree. It should select all zones in that layer.

Alternatively you can also use layer controls while editing and then right click the layer in program tree and choose Apply layer settings to zones. This will apply those settings to zone amp section and reset the layer controls back to zero.

Another place where you can change the level is sample gain in mapping editor. But using the zone amp section is probably better in this case.

So if I want to keep zone’s gain and layer’s Level parameter for my own tweaking purposes there is no other way around to have two independent controls of layers volume? One for mics level and other for articulations volume?

And another question… Reading the manual I can’t get the idea of bus structure. I’ve created three Mic Buses in the Program.

изображение

How now can I route all layers with “_src1” postfix to Mic_1_Bus? Because in Mixer tab, with xxx_src1 layer selected, I see only Mic_2_Bus and Mic_3_Bus available for routing. Do I have to rearrange all layers? So first should go all xxx _src1 layers, then Mic_1_Bus, then all xxx _src2 layers, then Mic_2_Bus, etc?

You should make use of sub layers. Will make your life much easier. How you structure your program is up to you. But I would create 3 main layers. One for each mic. Put all mic1 layers in first main layer, all mic2 layers in second main layer and all mic 3 layers in third main layer.

So at the top level you only have 3 layers. All your other layers would be nested inside those 3 layers. This is easier to manage. Create one bus inside each of the 3 main layers.

Although it’s not clear from your picture, it’s better if you have only 1 program bus at the top level. Create as many busses as you need inside layers. Sure you can create busses like this but you may have a problem when you export the program as HSSE layer to make it compatible with the SE version.

You may also group the layers by articulation. Use parent layer level to control the volume of articulation. And mic busses to control the volume of each mic.

Just make sure you route each mic bus to program bus. By default the signal will go:
Mic 1 => Mic 2 => Mic 3 => Program Bus

Another option could be to use the busses for mic levels and script parameters for articulations.

layers = {}
layers.harmonics_1 = this.parent:findLayers(true, function(layer) return layer.name:find("harmonics_1") and true end)
layers.harmonics_2 = this.parent:findLayers(true, function(layer) return layer.name:find("harmonics_2") and true end)
layers.harmonics_3 = this.parent:findLayers(true, function(layer) return layer.name:find("harmonics_3") and true end)

levelDef = this.parent:getParameterDefinition("Level")

function levelChanged(layers, value)
	for i, layer in ipairs(layers) do
		layer:setParameter("Level", value)
	end
end

defineParameter("Level_harmonics_1", nil, levelDef, function() levelChanged(layers.harmonics_1, Level_harmonics_1) end)
defineParameter("Level_harmonics_2", nil, levelDef, function() levelChanged(layers.harmonics_2, Level_harmonics_2) end)
defineParameter("Level_harmonics_3", nil, levelDef, function() levelChanged(layers.harmonics_3, Level_harmonics_3) end)