Problem with stopping a channel using delay

So i have a system that combines an intro ogg and a looping ogg
First i start streaming the intro then set a delay the lenght of the intro ogg and then start playing the looping one
Everything works fine however when i call for the channel to stop, the intro doesn’t, it keeps playing untill its done
The looping one stops properly, both when i call it while the intro is still playing and when the loop itself is playing

Stopping the Channel group does stop the intro but that obviously also stops all other channels in the group

Does anyone know why this is happening?

Are you reusing the channel handle by chance? So when you go to stop it, it has been overwritten with a different channel, like the loops channel.

Yes, i play both the loop and the intro in the same channel
Would I need to make it two seperate channels to be able to stop both or is there another way?

Ok I think I know what the problem is.

When you play a sound through the Core Engine you will get a Channel handle back. This handle is created and controlled by the Core Engine, although you can use it to do things with a sound. Each sound will be given a unique handle and no two sounds will share a channel.

If you were to pass an existing handle into System::playSound it would just overwrite your old handle with a new one for the new sound. Now anything you do to the channel will only effect the new sound and not the old one.

The channel handle will also go immediately invalid when a sound ends.