How to set media player's volume nonlinear / logarithmic

Has someone already implemented a template in order to achieve a curved volume set?

e.g. Say the volume steps should be smaller if reaching maxium (pseudo code below for volume_up example)

    if mediaplayer.state.volume > 90 then set volume + 2
     else set volume + 5