This task can be acomplished using two marcos as follows:
Name: INCREASE RINGER SOUND LEVEL
T: Call Incoming [Any Contact] or [Any Number]
A: Set Macrodroid Variable named e.g. ring_level:=15
DO / WHILE (choose condition „Do once and repeat while Phone Ringing“)
Volume Change (set Ringer to ring_level variable) with the added constraint Macrodroid Variable ring_level<99 on that action
Wait Before Next Action (*see explanation how to define the time delay)
Set Macrodroid Variable ring_level:=ring_level+14 with the added constraint Macrodroid Variable ring_level<99 on that action
Name: STOP RINGING
T: Call Active [Any Contact] or [Any Number]
Call Missed [Any Contact] or [Any Number]
A: Stop Sounds
Cancel Macro Actions INCREASE RINGER SOUND LEVEL
Logic behind these two macros is as follows: At the beginning of the 1st macro there is set an integer value for lowest possible sound level of ringer. Then the Do/While loop is started, which runs while call is ringing, i.e. until call is accepted, rejected or simply missed. Ringer continuously in steps increases its sound level until it reaches maximum value and even after then it continues to play theoretically forever.
In order not to play ringing sound forever, it comes to the scene 2nd macro, which is fired by accepting, rejecting or missing the call, respectively. If either of those respective conditions would occur, it immediately cease ringing sound and cancels 1st macro run, i.e. breaks otherwise infinite Do/While loop.
*You might set the wait time (Delay Period) taking into account the play time of your specific ringer sound. Then multiply this time length by 2. This will cause, that ringer will ring always twice with preset sound level and then the sound level will be increased, until reaches its maximum.
You can add global constrains to both macros that, e.g. would limit their run only while you are at home or office and not in the car, etc.