I have in-memory sounds in Ogg Vorbis format. After the sound starts playing, I wish to change the volume setting for that sound. So I call SetVolume on the channel. This results in ERR_CHANNEL_STOLEN, "The specified channel has been reused to play another sound. "

Clearly the message description is not accurate. So what conditions can really raise this error on a SetVolume call?

That error generally means what is says, I am not aware of an issues to cause this error to pop up.

Is it possible the channel handle got corrupted? Check the value of the ‘channelraw’ handle returned from playSound inside the wrapper, and then step through and make sure it’s still the same when you call later call setVolume.

Now I am getting INVALID_HANDLE when I try to change the volume of a playing sound channel. The raw handle values for both SOUND and CHANNEL are unchanged from when they were created. All calls to FMOD happen in the same thread.

An initial call to setVolume, before the channel is unpaused, does work correctly. Later ones get the error. These modes are set: SOFTWARE, 3D, OPENMEMORY, NONBLOCKING, WORLDRELATIVE. If the sound is looped LOOP_NORMAL is also set.