private AudioMixer SpawnAudioMixer()
    {
                #if UNITY_EDITOR
        // define audio mixer name based on object ID
        audioMixerName = "AnaglyphAudioMixer" + gameObject.GetInstanceID();

        // create audio mixer (unity editor only)
        AssetDatabase.CopyAsset(AnaglyphConfig.GetAudioMixerAssetPath(), AnaglyphConfig.GetAudioMixerAssetPath(audioMixerName));

        // load audio mixer
        AudioMixer audMix = Resources.Load <AudioMixer> (audioMixerName);
        Debug.Log(gameObject.name + " audio mixer: " + audMix.name);

        // get all audio sources attached to object
        AudioSource[] audioSources = GetComponents <AudioSource>();

        // loop over audio sources and set output to Anaglyph audio mixer
        foreach (var audioSource in audioSources)
        {
            Debug.Log("object " + gameObject.name + ", audio source: " + audioSource.name);
            audioSource.outputAudioMixerGroup = audMix.FindMatchingGroups("Master")[0];
        }

        return(audMix);
                #else
        return(null);
                #endif
    }
    void OnDestroy()
    {
                #if UNITY_EDITOR
        // discard if script disabled (as OnDestroy method may be called even then..) or if spawn audio mixer option disabled
        if (!this.enabled || !spawnedAudioMixer)
        {
             return;
        }

        // delete audio mixer created for object instance
        AssetDatabase.DeleteAsset(AnaglyphConfig.GetAudioMixerAssetPath(audioMixerName));
                #endif
    }