Modulating volume of groups programmatically

paulhc
paulhc Member Posts: 5 Member

My intended design is to seamlessly crossfade between three groups using the Mod Wheel. Group 1 is at full volume when CC01 = 0. Then as CC01 increases, the volume of Group 1 decreases and Group 2 increases and so on.

Is there an established method of accomplishing this?

This is should work by my estimation (which shouldn't be trusted at all), but doesn't:

on controller
	$inc_value := (%CC[$CC_NUM] * 2) * 7812
	if ($CC_NUM = 1)
		select(%CC[$CC_NUM])
			case 0 to 63
				set_engine_par($ENGINE_PAR_VOLUME, 1000000 - (((%CC[$CC_NUM] * 2) / 128) * 1000000), 0, -1, -1)
				set_engine_par($ENGINE_PAR_VOLUME, $inc_value, 1, -1, -1)
				set_engine_par($ENGINE_PAR_VOLUME, 0, 2, -1, -1)
			case 64 to 127
				set_engine_par($ENGINE_PAR_VOLUME, 0, 0, -1, -1)
				set_engine_par($ENGINE_PAR_VOLUME, 1000000 - (((%CC[$CC_NUM] * 2) / 128) * 1000000), 1, -1, -1)
				set_engine_par($ENGINE_PAR_VOLUME, $inc_value, 2, -1, -1)
		end select
	end if
end on

Comments

  • stephen24
    stephen24 Member Posts: 279 Pro
    edited March 2023

    You don't need a script. Just modulate volume in the three groups with cc#1 and use a modulation shaper to put the peak where you want it in each group.

    \_   /\  _/

Back To Top