last_position = 0;
interval = 250000; // microseconds
while (1) {
current_position = get_transport_position();
set_current_speed (current_position - last_position/interval);
usleep (interval);
}
set_current_speed ((get_current_speed() * X) + (current_position - last_position/interval) * Y);