AudioManager.configureFilters issues

I am having trouble getting DSP effects on some sounds and not others.
It seems when I use the configureFilters function of the AudioManager, the FilterProperties get applied to ALL AudioManagers. For example:

import direct.directbase.DirectStart
from direct.showbase.DirectObject import DirectObject
from pandac.PandaModules import FilterProperties

class Game(DirectObject):
    def __init__(self):
        self.accept('escape', __import__('sys').exit, [0])
        fp = FilterProperties()
        sound = loader.loadMusic('music.wav')


This will cause the distortion effect to modify sounds played by the music AudioManager.
I noticed that AudioSound has a configureFilters function as well, but from searching the forum it seems that it was never implemented.

As an aside, is there a “better” way to add a new AudioManager than:

myaudio = base.sfxManagerList[0].createAudioManager()

Edit: I believe the “proper” way to do this is:

from pandac.PandaModules import AudioManager
myaudio = AudioManager.createAudioManager()

Looking into the source code of fmodAudioManager:

bool FmodAudioManager::
configure_filters(FilterProperties *config) {
  FMOD_RESULT result;
  FMOD::DSP *head;
  result = _system->getDSPHead(&head);
  if (result != 0) {
    audio_error("Getting DSP head: " << FMOD_ErrorString(result) );
    return false;
  update_dsp_chain(head, config);
  return true;

It is using “_system->getDSPHead” which would be for configuring the top-level effects. Each AudioManager should have what FMOD refers to as “channel group” which allows effects and volume control on a set of sounds.
I can kind of read C but not write it if that makes sense.
I might be able to modify it with trial and error but I would definitely appreciate assistance from someone who knows their stuff.

Nowadays I am preparing one project and when I am searching for that at that time I found this stuff and it helps me lot create my my coding .

You can find my fix to the C++ code here: