It's clanky, but what I've done for the moment is to use Tasker to set Media Volume to zero, then in a simple loop I mimic pressing the "Volume Up" hardware button as many times as requested.
Task: Adjust Volume
A1: Media Volume [
Level: 0 ]
A2: Variable Set [
Name: %max
To: 17
Max Rounding Digits: 3
Structure Output (JSON, etc): On ]
A3: Variable Set [
Name: %num
To: 1
Max Rounding Digits: 3
Structure Output (JSON, etc): On ]
<loop>
A4: If [ %num < %max | %num = %max ]
A5: Button [
Button: Volume Up ]
A6: Variable Set [
Name: %num
To: %num + 1
Do Maths: On
Max Rounding Digits: 3
Structure Output (JSON, etc): On ]
A7: Goto [
Type: Action Label
Label: loop ]
A8: End If
A9: Flash [
Text: %VOLM
Continue Task Immediately: On
Dismiss On Click: On ]
I have the final Flash in there just to check out what Tasker is calling my required volume; I'll clearly be taking it out when I put the task into implementation, if I decide it works at least well enough for me.
For the record, I have a Samsung Galaxy S10e, on which I have used Sound Assistant to increase my volume rocker steps to 30.