A quick dirty test tells me your implementation is 35% slower than a traditional euclidean. In comparison i count three additional function calls and an additional division. And you're not even localizing the table lookups. :p
It's a pity the API doesn't allow changing volume after creation, so the sound stays at volume even if one moves really fast (say, in another train). I need doppler effects...