             au[kDynamicsProcessorParam_MasterGain] = masterGain
     }
 
+    public var inputNode: AVAudioNode {
+        return inputGain.avAudioNode
+    }
+
     /// Function to start, play, or activate the node, all do the same thing
     open func start() {
         if isStopped {

    open dynamic var dryWetMix: Double = 100 {
        didSet {
            dryWetMix = (0...100).clamp(dryWetMix)
            inputGain?.volume = 1 - dryWetMix / 100
            effectGain?.volume = dryWetMix / 100
        }
    }

    fileprivate var lastKnownMix: Double = 100
    fileprivate var inputGain: AKMixer?
    fileprivate var effectGain: AKMixer?

    // Store the internal effect

    override open func disconnect() {
        stop()

        AudioKit.detach(nodes: [inputGain.avAudioNode, effectGain!.avAudioNode, mixer.avAudioNode])
        AudioKit.engine.detach(self.internalEffect)
    }
}
