When you practice many times you want to create an A<->B loop. Then start slowly, and increase speed gradually.
My suggestion is to have an additional feature as follows:
0. Speed change mode on / off (if off - the app behaves as usual, if on at 'play' pressed, the Start speed is determined (see below) and speed changes according to the below parameters.
1. Indicator (text or slider) where you indicate at what speed percentage you want to stop your practice (you start where the speed slider is currently positioned).
2. Select of change method: either: 'loop count' or 'time based'
3. Number: 'loop count': After how many 'A' <-> 'B' loops speed change (increase if target speed is higher than current, and decrease if target speed is lower than current)
4. Number: 'time based': Every how many seconds speed change occurs
5. Change by how many percentages each time (1% - 100%)
Usage example (loop count):
You set a loop from 'A' at offset 0:10 to 'B' at offset 0:20
You select loop count
You select every 3 loops
You select change in 2%
Start speed is:50%
Target speed is: 80%
So the application plays the loops as follows:
1st loop: at 50%
2nd loop: at 50%
3rd loop: at 50%
4th loop: at 52%
5th loop: at 52%
6th loop: at 52%
7th loop: at 54% etc.
Until reaching 80%, continuing at 80% until the user stops the music
Another example (time based):
You set a loop from 'A' at offset 0:00 to 'B' at offset 0:42
You select 'time based'
You select every 12 seconds
You select change in 5%
Start speed is 80%
Target speed is 102%
So the application plays the music as follows:
0:00-0:12 - at 80%
0:12-0:24 - at 85%
0:24-0:36 - at 90%
0:36-0:42 continue 0:00-0:06 at 95% (end loop starting from 'A' - still counting time)
0:06-0:18 - at 100%
0:18 - continuing the loop until stopped at 102%
I will be happy to help in defining / testing the feature