DSP units removed on channel after sound ends

I set up a sound and play that sound, and it has the effects I’ve added via dsp, however once the sound ends, the dsp units are removed from my channel, without me explicitly calling the function. After the sound ends all of the dsp effects I’ve added have an id of 0, have a bypass state of false, and are all active.

result = soundsystem->createSound("/Users/djames18/Documents/FMOD_Programmers_API/api/lowlevel/examples/xcode32/Verse1.wav", FMOD_LOOP_NORMAL, 0, &sound);
result = soundsystem->createSound("/Users/djames18/Documents/FMOD_Programmers_API/api/lowlevel/examples/xcode32/Verse2.wav", FMOD_LOOP_NORMAL, 0, &sound2);
result = soundsystem->createSound("/Users/djames18/Documents/FMOD_Programmers_API/api/lowlevel/examples/xcode32/LocationVerse1NoBass.wav", FMOD_LOOP_NORMAL, 0, &sound3);

result = soundsystem->createSound("/Users/djames18/Documents/FMOD_Programmers_API/api/lowlevel/examples/xcode32/LocationChorusWithBass.wav", FMOD_LOOP_NORMAL, 0, &sound4);
result = soundsystem->createSound("/Users/djames18/Documents/FMOD_Programmers_API/api/lowlevel/examples/xcode32/Guitar.wav", FMOD_LOOP_NORMAL, 0, &sound5);
result = soundsystem->createSound("/Users/djames18/Documents/FMOD_Programmers_API/api/lowlevel/examples/xcode32/DooDooDo.wav", FMOD_LOOP_NORMAL, 0, &sound6);
result = soundsystem->createSound("/Users/djames18/Documents/FMOD_Programmers_API/api/lowlevel/examples/xcode32/DooDooDo2.wav", FMOD_LOOP_NORMAL, 0, &sound7);
result = soundsystem->createSound("/Users/djames18/Documents/FMOD_Programmers_API/api/lowlevel/examples/xcode32/BasslineAndDrums.wav", FMOD_LOOP_NORMAL, 0, &sound8);
// ERRCHECK(result);

result = soundsystem->playSound(sound, 0, false, &channel);
result = soundsystem->playSound(sound4, 0, false, &channelTwo);

// ERRCHECK(result);

    //Create some effects to play with

result = soundsystem->createDSPByType(FMOD_DSP_TYPE_LOWPASS, &dsplowpassOne);
result = soundsystem->createDSPByType(FMOD_DSP_TYPE_LOWPASS, &dsplowpassTwo);

// ERRCHECK(result);
result = soundsystem->createDSPByType(FMOD_DSP_TYPE_HIGHPASS, &dsphighpassOne);
result = soundsystem->createDSPByType(FMOD_DSP_TYPE_HIGHPASS, &dsphighpassTwo);
// ERRCHECK(result);
result = soundsystem->createDSPByType(FMOD_DSP_TYPE_ECHO, &dspechoOne);
result = soundsystem->createDSPByType(FMOD_DSP_TYPE_ECHO, &dspechoTwo);
// ERRCHECK(result);
result = soundsystem->createDSPByType(FMOD_DSP_TYPE_FLANGE, &dspflangeOne);
result = soundsystem->createDSPByType(FMOD_DSP_TYPE_FLANGE, &dspflangeTwo);
// ERRCHECK(result);
result = soundsystem->createDSPByType(FMOD_DSP_TYPE_THREE_EQ, &dspthreebandOne);
result = soundsystem->createDSPByType(FMOD_DSP_TYPE_THREE_EQ, &dspthreebandTwo);

    //Add them to the master channel group.
    //Each time an effect is added (to position 0) it pushes the others down the list.
result = channel->addDSP(1, dsplowpassOne);

// ERRCHECK(result);
result = channel->addDSP(1,dsphighpassOne);
// ERRCHECK(result);
result = channel->addDSP(1, dspechoOne);
// ERRCHECK(result);
result = channel->addDSP(1, dspflangeOne);
result = channel->addDSP(1,dspthreebandOne);

// ERRCHECK(result);
result = channelTwo->addDSP(1, dsplowpassTwo);
// ERRCHECK(result);
result = channelTwo->addDSP(1, dsphighpassTwo);
// ERRCHECK(result);
result = channelTwo->addDSP(1, dspechoTwo);
// ERRCHECK(result);
result = channelTwo->addDSP(1, dspflangeTwo);
result = channelTwo->addDSP(1,dspthreebandTwo);
cout<<“Added DSP for both channels”<<endl;
// By default, bypass all effects. This means let the original signal go through without processing.
// It will sound ‘dry’ until effects are enabled by the user.

result = dsplowpassOne->setBypass(false);
//ERRCHECK(result);
result = dsphighpassOne->setBypass(false);
//ERRCHECK(result);
result = dspechoOne->setBypass(false);
//ERRCHECK(result);
result = dspflangeOne->setBypass(false);

// ERRCHECK(result);
result = dsplowpassTwo->setBypass(false);
//ERRCHECK(result);
result = dsphighpassTwo->setBypass(false);
//ERRCHECK(result);
result = dspechoTwo->setBypass(false);
//ERRCHECK(result);
result = dspflangeTwo->setBypass(false);
//ERRCHECK(result);
result = dspthreebandOne->setBypass(false);
result = dspthreebandTwo->setBypass(false);
////DSP units deleted somehow
channelTwo->stop();
soundsystem->playSound(sound4,0,false,&channelTwo);

Channel::stop also removes any DSPs from the channel. This could be explained better in the docs, so I have made a task to add more information about it.