diff --git a/Source/Processors/AudioNode.cpp b/Source/Processors/AudioNode.cpp
index 0d274f5a52369c201d6ec23ef71ac2aa91bc157a..a804995f40141cd1993708d94bdd84d16ddfb929 100755
--- a/Source/Processors/AudioNode.cpp
+++ b/Source/Processors/AudioNode.cpp
@@ -142,7 +142,7 @@ void AudioNode::setParameter(int parameterIndex, float newValue)
     {
         // noiseGateLevel level
 
-        Expander.setThreshold(newValue); // in microVolts
+        expander.setThreshold(newValue); // in microVolts
 
     }
     else if (parameterIndex == 100)
@@ -359,9 +359,7 @@ void AudioNode::process(AudioSampleBuffer& buffer,
                     }
 
                     // Simple implementation of a "noise gate" on audio output
-                    // Modified from http://musicdsp.org/archive.php?classid=1#272:
-
-                    Expander.process(buffer.getWritePointer(0), // left channel
+                    expander.process(buffer.getWritePointer(0), // left channel
                                        buffer.getWritePointer(1), // right channel
                                        buffer.getNumSamples());
 
@@ -381,14 +379,14 @@ void AudioNode::process(AudioSampleBuffer& buffer,
 Expander::Expander()
 {
   threshold = 1.f;
-  attack = release = envelope_decay = 0.f;
   output = 1.f;
     
-  transfer_A = 0.f;
-  transfer_B = 1.f;
-    
   env = 0.f;
   gain = 1.f;
+
+  setAttack(1.0f);
+  setRelease(1.0f);
+  setRatio(1.2); // ratio > 1.0 will decrease gain below threshold
 }
 
 void Expander::setThreshold(float value)
@@ -432,13 +430,13 @@ void Expander::process(float* leftChan, float* rightChan, int numSamples)
 
       env = det >= env ? det : det + envelope_decay*(env-det);
 
-      transfer_gain = env > threshold ? pow(env, transfer_A) * transfer_B : output;
+      transfer_gain = env < threshold ? pow(env, transfer_A) * transfer_B : output;
 
       gain = transfer_gain < gain ?
                       transfer_gain + attack * (gain - transfer_gain) :
                       transfer_gain + release * (gain - transfer_gain);
 
-      leftChan[i] = leftChan[i] * gain;
+      leftChan[i] = leftChan[i] * gain; 
       rightChan[i] = rightChan[i] * gain;
   }
 }
\ No newline at end of file
diff --git a/Source/Processors/AudioNode.h b/Source/Processors/AudioNode.h
index f153208beec68e1461b9dfb4708f62d95d25b0bf..cec80c82bbc3bb0d553f8c6c903bde6acde9a9f5 100755
--- a/Source/Processors/AudioNode.h
+++ b/Source/Processors/AudioNode.h
@@ -139,7 +139,7 @@ private:
 
     bool bufferSwap;
 
-    Compressor compressor;
+    Expander expander;
 
     JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(AudioNode);