import numpy as np
 import sys
 
-wav_file = sys.argv[-1]
-#wav_file =  '/home/thomas/code/timeside/voix.wav'
+#wav_file = sys.argv[-1]
+wav_file =  '/home/thomas/code/timeside/voix.wav'
 
 # normal
 d = timeside.decoder.FileDecoder(wav_file)
 
 
 # Get the vamp plugin result and plot it
-vamp.results.keys()
+for key in vamp.results.keys():
+    print vamp.results[key].data
 
 res_vamp = vamp.results['vamp_simple_host.percussiononsets.detectionfunction']
 
 
             self.block_read += 1
         return frames, eod
 
-    def release(self):
+    def post_process(self):
 
         melenergy = self.new_result(data_mode='value', time_mode='framewise')
 
 
             self.block_read += 1
         return frames, eod
 
-    def release(self):
+    def post_process(self):
         # MFCC
         mfcc = self.new_result(data_mode='value', time_mode='framewise')
 
 
             self.block_read += 1
         return frames, eod
 
-    def release(self):
+    def post_process(self):
         # set Result
         pitch = self.new_result(data_mode='value', time_mode='framewise')
 
 
                     self.specdesc[method](fftgrain)[0]]
         return frames, eod
 
-    def release(self):
+    def post_process(self):
 
         # For each method store results in container
         for method in self.methods:
 
             self.block_read += 1
         return frames, eod
 
-    def release(self):
+    def post_process(self):
 
         #---------------------------------
         #  Onsets
 
             self.values = numpy.append(self.values, numpy.mean(frames))
         return frames, eod
 
-    def release(self):
+    def post_process(self):
         dc_result = self.new_result(data_mode='value', time_mode='global')
 
         # Set Data
 
 
         return frames, eod
 
-    def release(self):
+    def post_process(self):
         '''
 
         '''
 
         self.entropyValue.append(entropy(frames))
         return frames, eod
 
-    def release(self):
+    def post_process(self):
 
         entropyValue = array(self.entropyValue)
         w = self.modulLen * self.samplerate() / self.blocksize()
 
                                             np.mean(np.square(frames)))
         return frames, eod
 
-    def release(self):
+    def post_process(self):
         # Max level
         max_level = self.new_result(data_mode='value', time_mode='global')
 
 
 
         return frames, eod
 
-    def release(self):
+    def post_process(self):
         # set Result
         spectrogram = self.new_result(data_mode='value', time_mode='framewise')
 
 
         pass
         return frames, eod
 
-    def release(self):
+    def post_process(self):
         #plugin = 'vamp-example-plugins:amplitudefollower:amplitude'
 
         wavfile = self.mediainfo()['uri'].split('file://')[-1]
 
 
         return frames, eod
 
-    def release(self):
+    def post_process(self):
         # set Result
         waveform = self.new_result(data_mode='value', time_mode='framewise')
 
 
 
         return frames, eod
 
-    def release(self):
+    def post_process(self):
         # Get feature extraction results from yaafe
         featNames = self.yaafe_engine.getOutputs().keys()
         if len(featNames) == 0:
 
 
         Warning: it is required to call setup() before this method."""
 
+    def post_process(self):
+        '''
+        Post-Process data after processign the input frames with process()
+
+        Processors such as analyzers will produce Results during the Post-Process
+        '''
+
     def release(self):
         """Release resources owned by this processor. The processor cannot
         be used anymore after calling this method."""
 
     def process(self, frames, eod):
         return frames, eod
 
+    @interfacedoc
+    def post_process(self):
+        pass
+
     @interfacedoc
     def release(self):
         pass
             for item in items:
                 frames, eod = item.process(frames, eod)
 
+        for item in items:
+            item.post_process()
+
         for item in items:
             item.release()