     open var masterGain: Double = 0 {
         didSet {
             masterGain = (-40...40).clamp(masterGain)
-            AudioUnitSetParameter(
-                internalAU!,
-                kDynamicsProcessorParam_MasterGain,
-                kAudioUnitScope_Global, 0,
-                Float(masterGain), 0)
+            au[kDynamicsProcessorParam_MasterGain] = masterGain
         }
     }
 
     /// Compression Amount (dB) read only
     open var compressionAmount: Double {
-        AudioUnitGetParameter(internalAU!, kDynamicsProcessorParam_CompressionAmount, kAudioUnitScope_Global, 0,&internalCompressionAmount)
-        return Double(internalCompressionAmount)
+        return au[kDynamicsProcessorParam_CompressionAmount]
     }
 
     /// Input Amplitude (dB) read only
-    open var inputAmplitude:Double {
-        AudioUnitGetParameter(internalAU!, kDynamicsProcessorParam_CompressionAmount, kAudioUnitScope_Global, 0,&internalInputAmplitude)
-        return Double(internalInputAmplitude)
+    open var inputAmplitude: Double {
+        return au[kDynamicsProcessorParam_InputAmplitude]
     }
 
     /// Output Amplitude (dB) read only
     open var outputAmplitude: Double {
-        AudioUnitGetParameter(internalAU!, kDynamicsProcessorParam_CompressionAmount, kAudioUnitScope_Global, 0,&internalOutputAmplitude)
-        return Double(internalOutputAmplitude)
+        return au[kDynamicsProcessorParam_OutputAmplitude]
     }
 
     /// Dry/Wet Mix (Default 100)

        }
    }

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

    /// Tells whether the node is processing (ie. started, playing, or active)
    open var isStarted = true

    open var expansionThreshold: Double = 2 {
        didSet {
            expansionThreshold = (1...50).clamp(expansionThreshold)
            au[kDynamicsProcessorParam_ExpansionThreshold] = expansionThreshold
        }
    }

