[SCM] cecilia/master: Imported Upstream version 5.0.9

tiago at users.alioth.debian.org tiago at users.alioth.debian.org
Thu Nov 28 16:23:27 UTC 2013


The following commit has been merged in the master branch:
commit 97143112c6c78d04dc5fcdc0766b2faac9470470
Author: Tiago Bortoletto Vaz <tiago at debian.org>
Date:   Thu Nov 28 11:20:50 2013 -0500

    Imported Upstream version 5.0.9

diff --git a/Cecilia5.py b/Cecilia5.py
index 9a93098..dcca820 100755
--- a/Cecilia5.py
+++ b/Cecilia5.py
@@ -1,7 +1,7 @@
 #! /usr/bin/env python
 # encoding: utf-8
 """
-Copyright 2011 iACT, Universite de Montreal, Jean Piche, Olivier Belanger, Jean-Michel Dumas
+Copyright 2013 iACT, Universite de Montreal, Jean Piche, Olivier Belanger, Jean-Michel Dumas
 
 This file is part of Cecilia 5.
 
@@ -24,6 +24,7 @@ import os, sys, random
 from Resources.constants import *
 from Resources import audio, CeciliaMainFrame
 import Resources.CeciliaLib as CeciliaLib
+from Resources.splash import CeciliaSplashScreen
 
 def GetRoundBitmap( w, h, r ):
     maskColor = wx.Colour(0,0,0)
@@ -42,57 +43,29 @@ def GetRoundBitmap( w, h, r ):
 def GetRoundShape( w, h, r ):
     return wx.RegionFromBitmap(GetRoundBitmap(w,h,r))
 
-class CeciliaApp(wx.PySimpleApp):
+class CeciliaApp(wx.App):
     def __init__(self, *args, **kwargs):
-        wx.PySimpleApp.__init__(self, *args, **kwargs)
+        wx.App.__init__(self, *args, **kwargs)
 
     def MacOpenFile(self, filename):
         CeciliaLib.getVar("mainFrame").onOpen(filename)
 
-class CeciliaSplashScreen(wx.Frame):
-    def __init__(self, parent, y_pos):
-        wx.Frame.__init__(self, parent, -1, "", pos=(-1, y_pos),
-                         style = wx.FRAME_SHAPED | wx.SIMPLE_BORDER | wx.FRAME_NO_TASKBAR | wx.STAY_ON_TOP)
-        self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
-        self.Bind(wx.EVT_PAINT, self.OnPaint)
-
-        self.bmp = wx.Bitmap(os.path.join(RESOURCES_PATH, "Cecilia_splash.png"), wx.BITMAP_TYPE_PNG)
-        w, h = self.bmp.GetWidth(), self.bmp.GetHeight()
-        self.SetClientSize((w, h))
-
-        if CeciliaLib.getVar("systemPlatform") == 'linux2':
-            self.Bind(wx.EVT_WINDOW_CREATE, self.SetWindowShape)
-        else:
-            self.SetWindowShape()
-
-        dc = wx.ClientDC(self)
-        dc.DrawBitmap(self.bmp, 0,0,True)
-
-        self.fc = wx.FutureCall(3000, self.OnClose)
-
-        self.Center(wx.HORIZONTAL)
-        if CeciliaLib.getVar("systemPlatform") == 'win32':
-            self.Center(wx.VERTICAL)
-
-        self.Show(True)
-
-    def SetWindowShape(self, *evt):
-        r = GetRoundShape(512,256,18)
-        self.hasShape = self.SetShape(r)
+def onStart():
+    ceciliaMainFrame = CeciliaMainFrame.CeciliaMainFrame(None, -1)
+    CeciliaLib.setVar("mainFrame", ceciliaMainFrame)
 
-    def OnPaint(self, evt):
-        w,h = self.GetSize()
-        dc = wx.AutoBufferedPaintDC(self)
-        dc.SetPen(wx.Pen("#000000"))
-        dc.SetBrush(wx.Brush("#000000"))
-        dc.DrawRectangle(0,0,w,h)
-        dc.DrawBitmap(self.bmp, 0,0,True)
+    file = None
+    if len(sys.argv) >= 2:
+        file = sys.argv[1]
 
-    def OnClose(self):
-        self.Destroy()
-        # if not CeciliaLib.getVar("useMidi"):
-        #     CeciliaLib.showErrorDialog("Midi not initialized!",
-        #             "If you want to use Midi, please connect your interface and restart Cecilia5")
+    if file:
+        ceciliaMainFrame.onOpen(file)
+    else:
+        categories = [folder for folder in os.listdir(MODULES_PATH) if not folder.startswith(".")]
+        category = random.choice(categories)
+        files = [f for f in os.listdir(os.path.join(MODULES_PATH, category)) if f.endswith(FILE_EXTENSION)]
+        file = random.choice(files)
+        ceciliaMainFrame.onOpen(os.path.join(MODULES_PATH, category, file), True)
 
 if __name__ == '__main__':
     reload(sys)
@@ -106,10 +79,6 @@ if __name__ == '__main__':
     if not os.path.isdir(AUTOMATION_SAVE_PATH):
         os.mkdir(AUTOMATION_SAVE_PATH)
 
-    file = None
-    if len(sys.argv) >= 2:
-        file = sys.argv[1]
-
     audioServer = audio.AudioServer()
     CeciliaLib.setVar("audioServer", audioServer)
 
@@ -118,11 +87,10 @@ if __name__ == '__main__':
     except:
         pass
 
-    app = CeciliaApp()
+    app = CeciliaApp(redirect=False)
     wx.SetDefaultPyEncoding('utf-8')
 
     try:
-        X,Y = wx.SystemSettingss.GetMetric(wx.SYS_SCREEN_X), wx.SystemSettings.GetMetric(wx.SYS_SCREEN_Y)
         display = wx.Display()
         numDisp = display.GetCount()
         if CeciliaLib.getVar("DEBUG"):
@@ -141,7 +109,6 @@ if __name__ == '__main__':
             displayOffset.append(offset)
             displaySize.append(size)
     except:
-        X, Y = 1024, 768
         numDisp = 1
         displayOffset = [(0, 0)]
         displaySize = [(1024, 768)]
@@ -150,25 +117,6 @@ if __name__ == '__main__':
     CeciliaLib.setVar("displayOffset", displayOffset)
     CeciliaLib.setVar("displaySize", displaySize)
 
-    if CeciliaLib.getVar("systemPlatform") == 'linux2':
-        bmp = wx.Bitmap(os.path.join(RESOURCES_PATH, "Cecilia_splash.png"), wx.BITMAP_TYPE_PNG)
-        sp = wx.SplashScreen(bitmap=bmp, splashStyle=wx.SPLASH_TIMEOUT, milliseconds=3000, parent=None)
-        sp.Center()
-    else:
-        sp_y = Y/4
-        sp = CeciliaSplashScreen(None, sp_y)
-
-    ceciliaMainFrame = CeciliaMainFrame.CeciliaMainFrame(None, -1)
-    CeciliaLib.setVar("mainFrame", ceciliaMainFrame)
-
-    if file:
-        ceciliaMainFrame.onOpen(file)
-    else:
-        categories = [folder for folder in os.listdir(MODULES_PATH) if not folder.startswith(".")]
-        category = random.choice(categories)
-        files = [f for f in os.listdir(os.path.join(MODULES_PATH, category)) if f.endswith(FILE_EXTENSION)]
-        file = random.choice(files)
-        ceciliaMainFrame.onOpen(os.path.join(MODULES_PATH, category, file), True)
+    sp = CeciliaSplashScreen(None, img=SPLASH_FILE_PATH, callback=onStart)
 
     app.MainLoop()
-
diff --git a/Resources/API_interface.py b/Resources/API_interface.py
index f85da8f..220d9a0 100644
--- a/Resources/API_interface.py
+++ b/Resources/API_interface.py
@@ -46,18 +46,21 @@ self.sr : Cecilia's current sampling rate.
 self.nchnls : Cecilia's current number of channels.
 self.totalTime : Cecilia's current duration.
 self.number_of_voices : Number of voices from the cpoly widget.
-self.polyphony_spread : Spread factor from the cpoly widget.
+self.polyphony_spread : List of transposition factors from the cpoly widget.
+self.polyphony_scaling : Amplitude value according to polyphony number of voices
 
 Public methods:
 
 self.addFilein(name) : Creates a SndTable object from the name of a cfilein widget.
 self.addSampler(name, pitch, amp) : Creates a sampler/looper from the name of a csampler widget.
+self.getSamplerDur(name) : Returns the duration of the sound used by the sampler `name`. 
 self.duplicate(seq, num) : Duplicates elements in a sequence according to the `num` parameter.
 self.setGlobalSeed(x) : Sets the Server's global seed used by objects from the random family.
 
 """
 
 Interface_API = """
+The next functions describes every widgets available for building a Cecilia5 interface.
 
 """
 
@@ -176,21 +179,21 @@ def cpoly(name="poly", label="Polyphony", min=1, max=10, init=1, help=""):
     cpoly is a widget conceived to help manage the voice polyphony of a 
     module. cpoly comes with a popup menu that allows the user to choose how 
     many instances (voices) of a process will be simultaneously playing. It 
-    also provides a mini slider to adjust the voice spread of those different 
-    voices.
+    also provides another popup to choose the type of polyphony (phasing, chorus,
+    out-of-tune or one of the provided chords).
 
     cpoly has two values that are passed to the processing module: the number 
     of voices and the voice spread. The number of voices can be collected 
-    using `self.number_of_voices`. To access the voice deviation factor use 
-    `self.polyphony_spread`.
+    using `self.number_of_voices`. `self.polyphony_spread` gives access to 
+    the transposition factors defined by the type of polyphony.
 
     If a csampler is used, you don't need to take care of polyphony, it's 
     automatically handled inside the csampler. Without a csampler, user can 
-    retrieve polyphony popup and slider values with these builtin reserved 
+    retrieve polyphony popups values with these builtin reserved 
     variables :
         
         self.number_of_voices : int. Number of layers of polyphony.
-        self.polyphony_spread : float. Deviation factor.
+        self.polyphony_spread : list of floats. Transposition factors.
     
     No more than one `cpoly` can be declared in a module.
 
diff --git a/Resources/CeciliaLib.py b/Resources/CeciliaLib.py
index 7574e99..3d33cdc 100644
--- a/Resources/CeciliaLib.py
+++ b/Resources/CeciliaLib.py
@@ -26,6 +26,7 @@ import Variables as vars
 from API_interface import *
 import unicodedata
 from subprocess import Popen
+from pyolib._wxwidgets import SpectrumDisplay
 
 def setVar(var, value):
     vars.CeciliaVar[var] = value
@@ -60,10 +61,19 @@ def writeVarToDisk():
 def startCeciliaSound(timer=True, rec=False):
     # Check if soundfile is loaded
     for key in getVar("userInputs").keys():
-        if not os.path.isfile(getVar("userInputs")[key]['path']):
-            showErrorDialog('"%s", no input sound file!' % getControlPanel().getCfileinFromName(key).label, 'Please load one...')
-            getControlPanel().getCfileinFromName(key).onLoadFile()
+        if getVar("userInputs")[key]['mode'] == 0:
+            if not os.path.isfile(getVar("userInputs")[key]['path']):
+                showErrorDialog('"%s", no input sound file!' % getControlPanel().getCfileinFromName(key).label, 'Please load one...')
+                getControlPanel().getCfileinFromName(key).onLoadFile()
     getControlPanel().resetMeter()
+    if getVar('spectrumFrame') != None:
+        try:
+            getVar('spectrumFrame')._destroy(None)
+        except:
+            getVar('interface').menubar.spectrumSwitch(False)
+            setVar('showSpectrum', 0)
+        finally:
+            setVar('spectrumFrame', None)
     getVar("audioServer").shutdown()
     getVar("audioServer").reinit()
     getVar("audioServer").boot()
@@ -74,6 +84,11 @@ def startCeciliaSound(timer=True, rec=False):
     getVar("grapher").toolbar.convertSlider.Hide()
     getVar("presetPanel").presetChoice.setEnable(False)
     getVar("audioServer").start(timer=timer, rec=rec)
+    if getVar('showSpectrum'):
+        f = SpectrumDisplay(None, getVar("audioServer").spectrum)
+        getVar("audioServer").spectrum._setViewFrame(f)
+        setVar('spectrumFrame', f)
+        f.Show()
     getVar("grapher").toolbar.loadingMsg.SetForegroundColour(TITLE_BACK_COLOUR)
     wx.CallAfter(getVar("grapher").toolbar.loadingMsg.Refresh)
 
@@ -368,6 +383,7 @@ def loadPresetFromDict(preset):
         getVar("presetPanel").setLabel(preset)
         getVar("grapher").getPlotter().draw()
         setVar("currentModule", currentModule)
+        getVar("grapher").setTotalTime(getVar("totalTime"))
 
 def savePresetToDict(presetName):
     presetDict = dict()
@@ -429,6 +445,7 @@ def savePresetToDict(presetName):
 
 def completeUserInputsDict():
     for i in getVar("userInputs"):
+        getVar("userInputs")[i]['mode'] = 0
         if getVar("userInputs")[i]['type'] == 'csampler':
             cfilein = getControlPanel().getCfileinFromName(i)
             getVar("userInputs")[i]['off'+cfilein.getName()] = cfilein.getOffset()
diff --git a/Resources/CeciliaMainFrame.py b/Resources/CeciliaMainFrame.py
index e2cea40..ceb891c 100755
--- a/Resources/CeciliaMainFrame.py
+++ b/Resources/CeciliaMainFrame.py
@@ -86,19 +86,31 @@ class CeciliaMainFrame(wx.Frame):
         num_snds = len(cfileins[0].fileMenu.choice)
         dlg = wx.ProgressDialog("Batch processing on sound folder", "", maximum = num_snds, parent=self,
                                style = wx.PD_APP_MODAL | wx.PD_AUTO_HIDE | wx.PD_SMOOTH)
-        if CeciliaLib.getVar("systemPlatform") == "win32":
-            dlg.SetSize((600, 125))
-        else:
-            dlg.SetSize((600,100))
+        dlg.SetMinSize((600,-1))
+        dlg.SetClientSize((600,100))
         count = 0
+        totaltime = CeciliaLib.getVar("totalTime")
         for snd in cfileins[0].fileMenu.choice:
             cfileins[0].onSelectSound(-1, snd)
+            if CeciliaLib.getVar("useSoundDur"):
+                cfileins[0].setTotalTime()
             path, dump = os.path.split(cfileins[0].filePath)
             name, ext = os.path.splitext(snd)
-            if ext in [".wav", ".wave", ".WAV", ".WAVE", ".Wav", ".Wave"]:
+            lext = ext.lower()
+            if lext in [".wav", ".wave"]:
                 CeciliaLib.setVar('audioFileType', "wav")
-            else:
+            elif lext in [".aif", ".aiff", ".aifc"]:
                 CeciliaLib.setVar('audioFileType', "aif")
+            elif lext in [".ogg"]:
+                CeciliaLib.setVar('audioFileType', "ogg")
+            elif lext in [".flac"]:
+                CeciliaLib.setVar('audioFileType', "flac")
+            elif lext in [".au"]:
+                CeciliaLib.setVar('audioFileType', "au")
+            elif lext in [".sd2"]:
+                CeciliaLib.setVar('audioFileType', "sd2")
+            elif lext in [".caf"]:
+                CeciliaLib.setVar('audioFileType', "caf")
             if not os.path.isdir(os.path.join(path, folderName)):
                 os.mkdir(os.path.join(path, folderName))
             filename = os.path.join(path, folderName, "%s-%s%s" % (name, folderName, ext))
@@ -107,6 +119,10 @@ class CeciliaMainFrame(wx.Frame):
             CeciliaLib.getControlPanel().onBatchProcessing(filename)
             while (CeciliaLib.getVar("audioServer").isAudioServerRunning()):
                 time.sleep(.1)
+        if CeciliaLib.getVar("useSoundDur"):
+            CeciliaLib.getControlPanel().setTotalTime(totaltime)
+            CeciliaLib.getControlPanel().updateDurationSlider()
+
         dlg.Destroy()
         CeciliaLib.setVar('audioFileType', old_file_type)
 
@@ -123,10 +139,8 @@ class CeciliaMainFrame(wx.Frame):
         num_presets = len(presets)
         dlg = wx.ProgressDialog("Batch processing on preset sequence", "", maximum = num_presets, parent=self,
                                style = wx.PD_APP_MODAL | wx.PD_AUTO_HIDE | wx.PD_SMOOTH)
-        if CeciliaLib.getVar("systemPlatform") == "win32":
-            dlg.SetSize((600, 125))
-        else:
-            dlg.SetSize((600,100))
+        dlg.SetMinSize((600,-1))
+        dlg.SetClientSize((600,100))
         count = 0
         for preset in presets:
             CeciliaLib.loadPresetFromDict(preset)
@@ -156,15 +170,11 @@ class CeciliaMainFrame(wx.Frame):
         f.CenterOnScreen()
         f.Show()
 
-    def onSelectOutputFilename(self):
-        if CeciliaLib.getVar("audioFileType") == 'wav':
-            wildcard = "Wave file|*.wav;*.wave;*.WAV;*.WAVE;*.Wav;*.Wave|" \
-                       "All files|*.*"
-        else:
-            wildcard = "AIFF file|*.aif;*.aiff;*.aifc;*.AIF;*.AIFF;*.Aif;*.Aiff|" \
-                       "All files|*.*"
-        
-        file = CeciliaLib.saveFileDialog(self, wildcard, type='Save audio')
+    def onUseSoundDuration(self, evt):
+        CeciliaLib.setVar("useSoundDur", evt.GetInt())
+
+    def onSelectOutputFilename(self):        
+        file = CeciliaLib.saveFileDialog(self, AUDIO_FILE_WILDCARD, type='Save audio')
         if file != None:
             CeciliaLib.setVar("saveAudioFilePath", os.path.split(file)[0])
         return file
@@ -213,8 +223,11 @@ class CeciliaMainFrame(wx.Frame):
             for item in self.menubar.openRecentMenu.GetMenuItems():
                 self.menubar.openRecentMenu.DeleteItem(item)
             for file in recentFiles:
-                self.menubar.openRecentMenu.Append(subId2, file)
-                subId2 += 1
+                try:
+                    self.menubar.openRecentMenu.Append(subId2, file)
+                    subId2 += 1
+                except:
+                    pass
 
     def onOpen(self, event, builtin=False):
         if isinstance(event, wx.CommandEvent):
@@ -324,6 +337,12 @@ class CeciliaMainFrame(wx.Frame):
                 cfilein.onLoadFile(snds[i])
         wx.CallAfter(ceciliaInterface.OnSize, wx.PaintEvent(wx.ID_ANY))
 
+    def onShowSpectrum(self, event):
+        if event.GetInt():
+            CeciliaLib.setVar('showSpectrum', 1)
+        else:
+            CeciliaLib.setVar('showSpectrum', 0)
+            
     def onQuit(self, event):
         if not CeciliaLib.closeCeciliaFile(self):
             return
@@ -333,7 +352,14 @@ class CeciliaMainFrame(wx.Frame):
             pass
         if CeciliaLib.getVar("audioServer").isAudioServerRunning():
             CeciliaLib.getVar("audioServer").stop()
-            time.sleep(.1)
+            time.sleep(.2)
+        if CeciliaLib.getVar('spectrumFrame') != None:
+            try:
+                CeciliaLib.getVar('spectrumFrame')._destroy(None)
+            except:
+                pass
+            finally:
+                CeciliaLib.setVar('spectrumFrame', None)
         self.doc_frame.Destroy()
         self.closeInterface()
         CeciliaLib.writeVarToDisk()
diff --git a/Resources/CeciliaPlot.py b/Resources/CeciliaPlot.py
index 450b77f..b7af386 100644
--- a/Resources/CeciliaPlot.py
+++ b/Resources/CeciliaPlot.py
@@ -1095,18 +1095,11 @@ class PlotCanvas(wx.Panel):
         dc - drawing context - doesn't have to be specified.    
         If it's not, the offscreen buffer is used
         """
-
-        if dc == None:
-            # sets new dc and clears it 
-            dc = wx.BufferedDC(wx.ClientDC(self.canvas), self._Buffer)
-            dc.Clear()
-            
-        dc.BeginDrawing()
-        # dc.Clear()
-        
-        # set font size for every thing but title and legend
-        dc.SetFont(self._getFont(self._fontSizeAxis))
-
+        if self._zoomed:
+            minX, minY= _Numeric.minimum( self._zoomCorner1, self._zoomCorner2)
+            maxX, maxY= _Numeric.maximum( self._zoomCorner1, self._zoomCorner2)
+            xAxis = (minX,maxX)
+            yAxis = (minY,maxY)
         # sizes axis to axis type, create lower left and upper right corners of plot
         if xAxis == None or yAxis == None:
             # One or both axis not specified in Draw
@@ -1125,6 +1118,17 @@ class PlotCanvas(wx.Panel):
 
         self.last_draw = (graphics, _Numeric.array(xAxis), _Numeric.array(yAxis))       # saves most recient values
 
+        if dc == None:
+            # sets new dc and clears it 
+            dc = wx.BufferedDC(wx.ClientDC(self.canvas), self._Buffer)
+            dc.Clear()
+            
+        dc.BeginDrawing()
+        # dc.Clear()
+        
+        # set font size for every thing but title and legend
+        dc.SetFont(self._getFont(self._fontSizeAxis))
+
         # Get ticks and textExtents for axis if required
         if self._xSpec is not 'none':
             xticks = self._xticks(xAxis[0], xAxis[1])
diff --git a/Resources/Cecilia_splash.png b/Resources/Cecilia_splash.png
index 81b80fd..56f60dc 100644
Binary files a/Resources/Cecilia_splash.png and b/Resources/Cecilia_splash.png differ
diff --git a/Resources/Control.py b/Resources/Control.py
index ecaf1b3..c34512a 100644
--- a/Resources/Control.py
+++ b/Resources/Control.py
@@ -18,7 +18,7 @@ You should have received a copy of the GNU General Public License
 along with Cecilia 5.  If not, see <http://www.gnu.org/licenses/>.
 """
 
-import wx, os, time, math, sys
+import wx, os, time, math, sys, copy
 from constants import *
 import CeciliaLib
 from Widgets import *
@@ -26,14 +26,7 @@ from subprocess import Popen
 from types import ListType
 from TogglePopup import SamplerPopup, SamplerToggle  
 from Plugins import *
-import  wx.lib.scrolledpanel as scrolled
-
-def powerOf2(value):
-    for i in range(24):
-        p2 = int(math.pow(2,(i+1)))
-        if p2 > value:
-            break
-    return p2
+import wx.lib.scrolledpanel as scrolled
 
 def chooseColourFromName(name):
     def clip(x):
@@ -165,6 +158,8 @@ class CECControl(scrolled.ScrolledPanel):
 
         self.SetAutoLayout(1)
         self.SetupScrolling(scroll_x = False)
+        self.bagSizer.SetEmptyCellSize(self.plugins[0].GetSize())
+
 
         wx.CallAfter(self.updateOutputFormat)
 
@@ -172,7 +167,7 @@ class CECControl(scrolled.ScrolledPanel):
         win = wx.FindWindowAtPointer()
         if win != None:
             win = win.GetTopLevelParent()
-            if win not in [CeciliaLib.getVar("mainFrame"), CeciliaLib.getVar("interface")]:
+            if win not in [CeciliaLib.getVar("mainFrame"), CeciliaLib.getVar("interface"), CeciliaLib.getVar("spectrumFrame")]:
                 win.Raise()
         event.Skip()
 
@@ -195,13 +190,13 @@ class CECControl(scrolled.ScrolledPanel):
         choice = grapher.toolbar.getPopupChoice()
         choice.extend([knob.getLongLabel() for knob in knobs])
         grapher.toolbar.setPopupChoice(choice)
-        for knob in knobs:
+        for j, knob in enumerate(knobs):
             func = '0 %f 1 %f' % (knob.GetValue(), knob.GetValue())
             func = [float(v.replace('"', '')) for v in func.split()]
             func = [[func[i*2] * CeciliaLib.getVar("totalTime"), func[i*2+1]] for i in range(len(func) / 2)]
             mini = knob.getRange()[0]
             maxi = knob.getRange()[1]
-            colour = chooseColourFromName('red')
+            colour = chooseColourFromName('orange%d' % (j+1))
             label = knob.getLongLabel()
             log = knob.getLog()
             name = knob.getName()
@@ -221,30 +216,95 @@ class CECControl(scrolled.ScrolledPanel):
         grapher.toolbar.setPopupChoice(choice)
         grapher.plotter.removeLines(names)
 
+    def movePlugin(self, vpos, dir):
+        i1 = vpos
+        i2 = vpos + dir
+
+        grapher = CeciliaLib.getVar("grapher")
+        choice = grapher.toolbar.getPopupChoice()
+
+        for i in [i1, i2]:
+            if self.plugins[i].pluginName != 'None':
+                for label in self.plugins[i].getKnobLongLabels():
+                    choice.remove(label)
+       
+        tmp = copy.deepcopy(self.pluginsParams[i1])
+        self.pluginsParams[i1] = copy.deepcopy(self.pluginsParams[i2])
+        self.pluginsParams[i2] = tmp
+        self.plugins[i1], self.plugins[i2] = self.plugins[i2], self.plugins[i1]
+        self.plugins[i1].vpos = i1
+        self.plugins[i2].vpos = i2
+
+        for i in [i1, i2]:
+            self.plugins[i].setKnobLabels()
+            self.plugins[i].checkArrows()
+
+        graphData = CeciliaLib.getVar("grapher").getPlotter().getData()
+        
+        if self.plugins[i1].pluginName == 'None':
+            CeciliaLib.setPlugins(None, i1)
+        else:
+            oldKnobNames = self.plugins[i1].getKnobNames()
+            self.plugins[i1].setKnobNames()
+            for i, old in enumerate(oldKnobNames):
+                for line in graphData:
+                    if line.name == old:
+                        line.name = self.plugins[i1].getKnobNames()[i]
+                        break
+            CeciliaLib.setPlugins(self.plugins[i1], i1)
+            choice.extend(self.plugins[i1].getKnobLongLabels())
+            
+        if self.plugins[i2].pluginName == 'None':
+            CeciliaLib.setPlugins(None, i2)
+        else:
+            oldKnobNames = self.plugins[i2].getKnobNames()
+            self.plugins[i2].setKnobNames()
+            for i, old in enumerate(oldKnobNames):
+                for line in graphData:
+                    if line.name == old:
+                        line.name = self.plugins[i2].getKnobNames()[i]
+                        break
+            CeciliaLib.setPlugins(self.plugins[i2], i2)
+            choice.extend(self.plugins[i2].getKnobLongLabels())
+
+        grapher.toolbar.setPopupChoice(choice)
+
+        p1pos = self.bagSizer.GetItemPosition(self.plugins[i1])
+        p2pos = self.bagSizer.GetItemPosition(self.plugins[i2])
+        self.bagSizer.SetItemPosition(self.plugins[i1], (8,0))
+        self.bagSizer.SetItemPosition(self.plugins[i2], p1pos)
+        self.bagSizer.SetItemPosition(self.plugins[i1], p2pos)
+        self.plugins[i1].Refresh()
+        self.plugins[i2].Refresh()
+        self.bagSizer.Layout()
+        
+        if CeciliaLib.getVar("audioServer").isAudioServerRunning():
+            CeciliaLib.getVar("audioServer").movePlugin(vpos, dir)
+
     def replacePlugin(self, order, new):
-        self.pluginsParams[order][self.oldPlugins[order]] = self.plugins[order].getParams()
-        oldPlugin = self.plugins[order]
-        if self.oldPlugins[order] != 0:
-            self.removeGrapherLines(oldPlugin)
+        ind = PLUGINS_CHOICE.index(self.plugins[order].getName())
+        self.pluginsParams[order][ind] = self.plugins[order].getParams()
+        if ind != 0:
+            self.removeGrapherLines(self.plugins[order])
         plugin = self.pluginsDict[new](self.pluginsPanel, self.replacePlugin, order)
 
         if new != 'None':    
             CeciliaLib.setPlugins(plugin, order)
             self.createGrapherLines(plugin)
+            ind = PLUGINS_CHOICE.index(plugin.getName())
+            plugin.setParams(self.pluginsParams[order][ind])
         else:
             CeciliaLib.setPlugins(None, order)
+            plugin.setParams([0,0,0,0])
+            
+        itempos = self.bagSizer.GetItemPosition(self.plugins[order])
+        item = self.bagSizer.FindItem(self.plugins[order])
+        if item.IsWindow():
+            item.GetWindow().Destroy()
+        self.bagSizer.Add(plugin, itempos)
+        self.plugins[order] = plugin
+        self.bagSizer.Layout()
 
-        ind = PLUGINS_CHOICE.index(plugin.getName())
-        self.oldPlugins[order] = ind
-        plugin.setParams(self.pluginsParams[order][ind])
-        if CeciliaLib.getVar("systemPlatform")  == 'darwin':
-            self.pluginSizer.Replace(oldPlugin, plugin)
-        else:
-            item = self.pluginSizer.GetItem(oldPlugin)
-            item.DeleteWindows()
-            self.pluginSizer.Insert([2,8,13][order], plugin, 0) 
-        self.plugins[order] = plugin       
-        self.pluginsPanel.Layout()
         if CeciliaLib.getVar("audioServer").isAudioServerRunning():
             CeciliaLib.getVar("audioServer").setPlugin(order)
 
@@ -253,6 +313,9 @@ class CECControl(scrolled.ScrolledPanel):
             self.replacePlugin(key, pluginsDict[key][0])
             self.plugins[key].setParams(pluginsDict[key][1])
             self.plugins[key].setStates(pluginsDict[key][2])
+        for i in range(NUM_OF_PLUGINS):
+            if i not in pluginsDict.keys():
+                self.replacePlugin(i, "None")
 
     def updateTime(self, time):
         self.setTime(time)
@@ -421,23 +484,20 @@ class CECControl(scrolled.ScrolledPanel):
         self.outputPanel.SetSizer(outputSizer)
 
     def createPluginPanel(self):
-        self.oldPlugins = [0,0,0]
-        for i in range(3):
-            CeciliaLib.setPlugins(None, i)
-        self.pluginsParams = {  0: [[0,0,0,0], [.25,1,.5,1], [.25,.7,5000,1], [1,1000,1,1], [.5,.2,.5,1], [1000,1,-3,1], 
-                                [0,0,0,1], [-20,3,0,1], [-70,0.005,.01,1], [.7,.7,-12,1], [8,1,0,1], [100,5,1.1,1],
-                                [.1,0,0.5,1], [0.5,0.25,0.25,1], [-7,0,0.5,1], [80,2.01,0.33,1], [80,0.5,0.33,1]],
-                                1: [[0,0,0,0], [.25,1,.5,1], [.25,.7,5000,1], [1,1000,1,1], [.5,.2,.5,1], [1000,1,-3,1], 
-                                [0,0,0,1], [-20,3,0,1], [-70,0.005,.01,1], [.7,.7,-12,1], [8,1,0,1], [100,5,1.1,1],
-                                [.1,0,0.5,1], [0.5,0.25,0.25,1], [-7,0,0.5,1], [80,2.01,0.33,1], [80,0.5,0.33,1]],
-                                2: [[0,0,0,0], [.25,1,.5,1], [.25,.7,5000,1], [1,1000,1,1], [.5,.2,.5,1], [1000,1,-3,1], 
+        self.oldPlugins = [0] * NUM_OF_PLUGINS
+        paramsTemplate = [[0,0,0,0], [.25,1,.5,1], [.25,.7,5000,1], [1,1000,1,1], [.5,.2,.5,1], [1000,1,-3,1], 
                                 [0,0,0,1], [-20,3,0,1], [-70,0.005,.01,1], [.7,.7,-12,1], [8,1,0,1], [100,5,1.1,1],
-                                [.1,0,0.5,1], [0.5,0.25,0.25,1], [-7,0,0.5,1], [80,2.01,0.33,1], [80,0.5,0.33,1]]}
+                                [.1,0,0.5,1], [0.5,0.25,0.25,1], [-7,0,0.5,1], [80,2.01,0.33,1], [80,0.5,0.33,1],
+                                [0.025,0.5,1,2]]
+        self.pluginsParams = {}
+        for i in range(NUM_OF_PLUGINS):
+            CeciliaLib.setPlugins(None, i)
+            self.pluginsParams[i] = copy.deepcopy(paramsTemplate)
         self.pluginsDict = {'None': NonePlugin, 'Reverb': ReverbPlugin, 'WGVerb': WGReverbPlugin, 'Filter': FilterPlugin, 'Chorus': ChorusPlugin,
                             'Para EQ': EQPlugin, '3 Bands EQ': EQ3BPlugin, 'Compress': CompressPlugin, 'Gate': GatePlugin,
                             'Disto': DistoPlugin, 'AmpMod': AmpModPlugin, 'Phaser': PhaserPlugin, 'Delay': DelayPlugin,
                             'Flange': FlangePlugin, 'Harmonizer': HarmonizerPlugin, 'Resonators': ResonatorsPlugin,
-                            'DeadReson': DeadResonPlugin}
+                            'DeadReson': DeadResonPlugin, 'ChaosMod': ChaosModPlugin}
         self.pluginsPanel = wx.Panel(self, -1, style=wx.NO_BORDER)
         self.pluginsPanel.SetBackgroundColour(BACKGROUND_COLOUR)
         self.pluginSizer = wx.BoxSizer(wx.VERTICAL)
@@ -452,32 +512,21 @@ class CECControl(scrolled.ScrolledPanel):
         pluginTextSizer.Add(pluginText, 0, wx.ALIGN_RIGHT | wx.ALL, 3)
         pluginTextSizer.AddGrowableCol(0)
         pluginTextPanel.SetSizer(pluginTextSizer)
-        self.pluginSizer.Add(pluginTextPanel, 1, wx.EXPAND| wx.ALIGN_RIGHT, 0) # 1
-
-        self.pluginSizer.AddSpacer((5,3)) # 2
-
-        plugin1 = NonePlugin(self.pluginsPanel, self.replacePlugin, 0)
-        self.pluginSizer.Add(plugin1, 0) # 3
-
-        self.pluginSizer.AddSpacer((5,7)) # 4
-        self.pluginSizer.Add(Separator(self.pluginsPanel, (230,2), colour=BORDER_COLOUR), 0, wx.EXPAND) # 5
-        self.pluginSizer.AddSpacer((5,3)) # 6
-
-        plugin2 = NonePlugin(self.pluginsPanel, self.replacePlugin, 1)        
-        self.pluginSizer.Add(plugin2, 0) # 7
-
-        self.pluginSizer.AddSpacer((5,7)) # 8
-        self.pluginSizer.Add(Separator(self.pluginsPanel, (230,2), colour=BORDER_COLOUR), 0, wx.EXPAND) # 9
-        self.pluginSizer.AddSpacer((5,3)) # 10
+        self.pluginSizer.Add(pluginTextPanel, 0, wx.EXPAND| wx.ALIGN_RIGHT, 0)
 
-        plugin3 = NonePlugin(self.pluginsPanel, self.replacePlugin, 2)        
-        self.pluginSizer.Add(plugin3, 0) # 11
+        self.pluginSizer.AddSpacer((5,3))
 
-        self.pluginSizer.AddSpacer((5,7)) # 12
-        self.pluginSizer.Add(Separator(self.pluginsPanel, (230,2), colour=BORDER_COLOUR), 0, wx.EXPAND) # 13
-        self.pluginSizer.AddSpacer((5,1)) # 14
+        self.bagSizer = wx.GridBagSizer(5, 0)
+        self.plugins = []
+        for i in range(NUM_OF_PLUGINS):
+            plugin = NonePlugin(self.pluginsPanel, self.replacePlugin, i)
+            self.bagSizer.Add(plugin, (i*2, 0))
+            #self.pluginSizer.AddSpacer((5,7))
+            self.bagSizer.Add(Separator(self.pluginsPanel, (230,2), colour=BORDER_COLOUR), (i*2+1, 0))
+            #self.pluginSizer.AddSpacer((5,3))
+            self.plugins.append(plugin)
 
-        self.plugins = [plugin1, plugin2, plugin3]
+        self.pluginSizer.Add(self.bagSizer, 1, wx.EXPAND, 0)
         self.pluginsPanel.SetSizer(self.pluginSizer)
 
     def getCfileinList(self):
@@ -582,14 +631,7 @@ class CECControl(scrolled.ScrolledPanel):
         self.updatePeak(0)
 
     def onSelectOutputFilename(self):
-        if CeciliaLib.getVar("audioFileType") == 'wav':
-            wildcard = "Wave file|*.wave;*.WAV;*.WAVE;*.Wav;*.Wave*.wav|" \
-                       "All files|*.*"
-        else:
-            wildcard = "AIFF file|*.aiff;*.aifc;*.AIF;*.AIFF;*.Aif;*.Aiff*.aif|" \
-                       "All files|*.*"
-
-        file = CeciliaLib.saveFileDialog(self, wildcard, type='Save audio')
+        file = CeciliaLib.saveFileDialog(self, AUDIO_FILE_WILDCARD, type='Save audio')
 
         if file != None:
             self.filenameLabel.setLabel(CeciliaLib.shortenName(os.path.split(file)[1],self.charNumForLabel))
@@ -606,7 +648,7 @@ class CECControl(scrolled.ScrolledPanel):
         w2, h2 = self.lineSizer.GetSize()
         self.lineSizer.SetDimension(7, y+h+10, w2, h2)
         self.Layout()
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def onFormatChange(self, idx, choice):
         nchnls = int(choice)
@@ -634,22 +676,7 @@ class CECControl(scrolled.ScrolledPanel):
         self.durationSlider.SetValue(CeciliaLib.getVar("totalTime"))
 
     def updateNchnls(self):
-        nchnls = CeciliaLib.getVar("nchnls")
-
-        if nchnls==1:
-            format = 'Mono'
-        elif nchnls==2:
-            format = 'Stereo'
-        elif nchnls==4:
-            format = 'Quad'
-        elif nchnls==6:
-            format = '5.1'
-        elif nchnls==8:
-            format = 'Octo'
-        else:
-            format = 'Custom...'
-
-        self.formatChoice.setStringSelection(format)
+        self.formatChoice.setStringSelection(str(CeciliaLib.getVar("nchnls")))
         self.updateOutputFormat()
 
     def onChangeGain(self, gain):
@@ -669,48 +696,53 @@ class CECControl(scrolled.ScrolledPanel):
     def getCfileinList(self):
         return self.cfileinList
 
-class Cfilein(wx.Panel):
-    def __init__(self, parent, id=-1, label='', size=(-1,-1), style = wx.NO_BORDER, name=''):   
+class CInputBase(wx.Panel):
+    def __init__(self, parent, id=-1, label='', size=(-1,-1), style=wx.NO_BORDER, name=''):
         wx.Panel.__init__(self, parent, id, size=size, style=style, name=name)
         self.SetBackgroundColour(BACKGROUND_COLOUR)
-        
+
+        self.frameOpen = False
+        self.samplerFrame = None
         self.label = label
         self.name = name
-        self.duration = None
-        self.chnls = None
-        self.type = None
-        self.samprate = None
-        self.bitrate = None       
+        self.duration = 0
+        self.chnls = 0
+        self.type = ''
+        self.samprate = 0
+        self.bitrate = 0       
         self.filePath = ''
         self.folderInfo = None
-        
+        self.mode = 0
+
         mainSizer = wx.FlexGridSizer(4,1)        
         mainSizer.AddSpacer((200,4))
-        
+
         # Static label for the popup menu
         line1 = wx.BoxSizer(wx.HORIZONTAL)
-        textLabel = wx.StaticText(self, -1, self.label)
+        textLabel = wx.StaticText(self, -1, self.label + ' :')
         textLabel.SetFont(wx.Font(TEXT_LABELFORWIDGET_FONT, wx.NORMAL, wx.NORMAL, wx.BOLD, face=FONT_FACE))
         textLabel.SetForegroundColour(TEXT_LABELFORWIDGET_COLOUR)
-        line1.Add(textLabel,0,wx.ALL, 0)
-        
-        textDeuxPoints = wx.StaticText(self, -1, ' :')
-        textDeuxPoints.SetFont(wx.Font(TEXT_LABELFORWIDGET_FONT, wx.NORMAL, wx.NORMAL, wx.BOLD, face=FONT_FACE))
-        textDeuxPoints.SetForegroundColour(TEXT_LABELFORWIDGET_COLOUR)
-        line1.Add(textDeuxPoints,0,wx.ALL, 0)
-        
+        line1.Add(textLabel, 0, wx.LEFT, 2)
         mainSizer.Add(line1, 0, wx.LEFT, 8)
-        
+
         # Popup menu
         line2 = wx.BoxSizer(wx.HORIZONTAL)
+        line2.AddSpacer((2,-1))
         self.fileMenu = FolderPopup(self, path=None, init='', outFunction=self.onSelectSound,
                                     emptyFunction=self.onLoadFile, backColour=CONTROLLABEL_BACK_COLOUR, tooltip=TT_SEL_SOUND)
-                                   
-        line2.Add(self.fileMenu, 0, wx.ALIGN_CENTER | wx.RIGHT, 20)
-        line2.AddSpacer((8,5))
+        line2.Add(self.fileMenu, 0, wx.ALIGN_CENTER | wx.RIGHT, 6)
+        
+        self.inputBitmaps = [ICON_INPUT_1_FILE.GetBitmap(), 
+                            ICON_INPUT_2_LIVE.GetBitmap(), 
+                            ICON_INPUT_3_MIC.GetBitmap(), 
+                            ICON_INPUT_4_MIC_RECIRC.GetBitmap()]
+        self.modebutton = InputModeButton(self, 0, outFunction=self.onChangeMode)
+        line2.Add(self.modebutton, 0, wx.ALIGN_CENTER | wx.TOP, 2)
+
         self.toolbox = ToolBox(self, tools=['play','edit','open'],
                                outFunction=[self.listenSoundfile,self.editSoundfile, self.onShowSampler])
-        line2.Add(self.toolbox, 0, wx.ALIGN_CENTER | wx.LEFT, 2)
+        self.toolbox.setOpen(False)
+        line2.Add(self.toolbox,0,wx.ALIGN_CENTER | wx.TOP | wx.LEFT, 2)
         
         mainSizer.Add(line2, 1, wx.LEFT, 6)
         mainSizer.AddSpacer((5,2))
@@ -718,22 +750,31 @@ class Cfilein(wx.Panel):
         self.createSamplerFrame()
 
         self.SetSizer(mainSizer)
-        
+
         CeciliaLib.getVar("userInputs")[self.name] = dict()
-        CeciliaLib.getVar("userInputs")[self.name]['type'] = 'cfilein'
         CeciliaLib.getVar("userInputs")[self.name]['path'] = ''
 
-    def createSamplerFrame(self):
-        self.samplerFrame = CfileinFrame(self, self.name)
+    def enable(self, state):
+        self.toolbox.enable(state)
+
+    def onChangeMode(self, value):
+        if not CeciliaLib.getVar("audioServer").isAudioServerRunning():
+            self.mode = value
+            CeciliaLib.getVar("userInputs")[self.name]['mode'] = self.mode
+            self.processMode()
+
+    def getMode(self):
+        return self.mode
 
     def onShowSampler(self):
-        if self.samplerFrame.IsShown():
-            self.samplerFrame.Hide()
-        else:
-            pos = wx.GetMousePosition()
-            framepos = (pos[0]+10, pos[1]+20)
-            self.samplerFrame.SetPosition(framepos)
-            self.samplerFrame.Show()
+        if self.mode != 1:
+            if self.samplerFrame.IsShown():
+                self.samplerFrame.Hide()
+            else:
+                pos = wx.GetMousePosition()
+                framepos = (pos[0]+10, pos[1]+20)
+                self.samplerFrame.SetPosition(framepos)
+                self.samplerFrame.Show()
 
     def getDuration(self):
         return self.duration
@@ -742,9 +783,15 @@ class Cfilein(wx.Panel):
         if self.duration:
             CeciliaLib.getControlPanel().setTotalTime(self.duration)
             CeciliaLib.getControlPanel().updateDurationSlider()
-    
-    def onSelectSound(self, idx, file):
-        self.filePath = self.folderInfo[file]['path']
+
+    def reset(self):
+        self.fileMenu.reset()
+        self.filePath = ''
+        CeciliaLib.getVar("userInputs")[self.name]['path'] = self.filePath
+
+    def getSoundInfos(self, file):
+        file = CeciliaLib.ensureNFD(file)
+        self.filePath = CeciliaLib.ensureNFD(self.folderInfo[file]['path'])
         self.duration = self.folderInfo[file]['dur']
         self.chnls = self.folderInfo[file]['chnls']
         self.type = self.folderInfo[file]['type']
@@ -754,35 +801,28 @@ class Cfilein(wx.Panel):
         self.samplerFrame.offsetSlider.SetRange(0,self.duration)
         self.samplerFrame.offsetSlider.SetValue(self.getOffset())
         self.samplerFrame.update(path=self.filePath,
-                                             dur=self.duration,
-                                             type=self.type,
-                                             bitDepth=self.bitrate,
-                                             chanNum=self.chnls,
-                                             sampRate=self.samprate)    
-        
-        nsamps = self.samprate * self.duration
-        tableSize = powerOf2(nsamps)
-        fracPart = float(nsamps) / tableSize
-        CeciliaLib.getVar("userInputs")[self.name]['gensize%s' % self.name] = tableSize
+                                 dur=self.duration,
+                                 type=self.type,
+                                 bitDepth=self.bitrate,
+                                 chanNum=self.chnls,
+                                 sampRate=self.samprate)    
         CeciliaLib.getVar("userInputs")[self.name]['sr%s' % self.name] = self.samprate
         CeciliaLib.getVar("userInputs")[self.name]['dur%s' % self.name] = self.duration
         CeciliaLib.getVar("userInputs")[self.name]['nchnls%s' % self.name] = self.chnls
         CeciliaLib.getVar("userInputs")[self.name]['off%s' % self.name] = self.getOffset()
         CeciliaLib.getVar("userInputs")[self.name]['path'] = self.filePath
-    
-    def onLoadFile(self, filePath=''):
-        wildcard = "All files|*.*|" \
-                   "AIFF file|*.aif;*.aiff;*.aifc;*.AIF;*.AIFF;*.Aif;*.Aiff|"     \
-                   "Wave file|*.wav;*.wave;*.WAV;*.WAVE;*.Wav;*.Wave"
 
+    def onLoadFile(self, filePath=''):
         if filePath == '':        
-            path = CeciliaLib.openAudioFileDialog(self, wildcard, 
+            path = CeciliaLib.openAudioFileDialog(self, AUDIO_FILE_WILDCARD, 
                     defaultPath=CeciliaLib.getVar("openAudioFilePath", unicode=True))
         elif not os.path.isfile(filePath):
             return
         else:
             path = filePath
         
+        if path == None:
+            return
         if not CeciliaLib.getVar("audioServer").validateAudioFile(path):
             CeciliaLib.showErrorDialog("Unable to retrieve sound infos", "There is something wrong with this file, please select another one.")
             return
@@ -801,11 +841,6 @@ class Cfilein(wx.Panel):
             lastfiles.append(path)
             lastfiles = ";".join(lastfiles)
             CeciliaLib.setVar("lastAudioFiles", lastfiles)
- 
-    def reset(self):
-        self.fileMenu.reset()
-        self.filePath = ''
-        CeciliaLib.getVar("userInputs")[self.name]['path'] = self.filePath
 
     def updateMenuFromPath(self, path):
         if os.path.isfile(path):
@@ -833,16 +868,19 @@ class Cfilein(wx.Panel):
     
     def editSoundfile(self):
         CeciliaLib.editSoundfile(self.filePath)
-                
+
     def onOffsetSlider(self, value):
         CeciliaLib.getVar("userInputs")[self.name]['off%s' % self.name] = value
-        if self.duration != None:
+        if self.mode >= 2:
+            newMaxDur = value
+        elif self.duration != None:
             newMaxDur = self.duration - value
-            CeciliaLib.getVar("userInputs")[self.name]['dur%s' % self.name] = newMaxDur
-            try:
-                self.samplerFrame.loopOutSlider.setRange(0, newMaxDur)
-            except:
-                pass    
+        CeciliaLib.getVar("userInputs")[self.name]['dur%s' % self.name] = newMaxDur
+        try:
+            self.samplerFrame.loopInSlider.setRange(0, newMaxDur)
+            self.samplerFrame.loopOutSlider.setRange(0, newMaxDur)
+        except:
+            pass    
     
     def setOffset(self, value):
         CeciliaLib.getVar("userInputs")[self.name]['off%s' % self.name] = value
@@ -850,78 +888,75 @@ class Cfilein(wx.Panel):
         self.samplerFrame.offsetSlider.SetValue(value)
 
     def getOffset(self):
-        try:
-            off = CeciliaLib.getVar("userInputs")[self.name]['off%s' % self.name]
-        except:
-            off = self.samplerFrame.offsetSlider.GetValue()
-        return off
+        return self.samplerFrame.offsetSlider.GetValue()
 
     def getName(self):
         return self.name
-    
-class CSampler(Cfilein):
-    def __init__(self, parent, id=-1, label='', size=(-1,-1), style = wx.NO_BORDER, name=''):
-        
-        wx.Panel.__init__(self, parent, id, size=size, style=style, name=name)
-        self.SetBackgroundColour(BACKGROUND_COLOUR)
+
+    def getSamplerFrame(self):
+        return self.samplerFrame
+
+class Cfilein(CInputBase):
+    def __init__(self, parent, id=-1, label='', size=(-1,-1), style = wx.NO_BORDER, name=''):   
+        CInputBase.__init__(self, parent, id, label=label, size=size, style=style, name=name)
+        CeciliaLib.getVar("userInputs")[self.name]['type'] = 'cfilein'
         
-        self.frameOpen = False
-        self.samplerFrame = None        
-        self.folderInfo = None
-        self.label = label
-        self.name = name
-        self.duration = 0.
-        self.chnls = 0
+    def processMode(self):
+        if self.mode in [1,3]:
+            self.mode = (self.mode + 1) % 4
+            self.modebutton.setValue(self.mode)
+            CeciliaLib.getVar("userInputs")[self.name]['mode'] = self.mode
+        if self.mode == 0:
+            self.fileMenu.setEnable(True)
+            self.samplerFrame.textOffset.SetLabel('Offset :')
+            self.samplerFrame.offsetSlider.SetValue(0)
+            self.samplerFrame.liveInputHeader(False)
+        elif self.mode == 2:
+            self.fileMenu.setEnable(False)
+            self.samplerFrame.textOffset.SetLabel('Table Length (sec) :')
+            self.samplerFrame.offsetSlider.setEnable(True)
+            self.samplerFrame.offsetSlider.SetValue(5)
+            self.samplerFrame.liveInputHeader(True)
+
+    def createSamplerFrame(self):
+        self.samplerFrame = CfileinFrame(self, self.name)
+
+    def onSelectSound(self, idx, file):
+        self.getSoundInfos(file)
+
+class CSampler(CInputBase):
+    def __init__(self, parent, id=-1, label='', size=(-1,-1), style = wx.NO_BORDER, name=''):
+        CInputBase.__init__(self, parent, id, label=label, size=size, style=style, name=name)
+
         self.outputChnls = 1
         self.gainMod = None
         self.transMod = None
         self.startPos = None
-        self.type = ''
-        self.samprate = 0
-        self.bitrate = 0
-        self.filePath = ''
-        
-        mainSizer = wx.FlexGridSizer(4,1)
-        mainSizer.AddSpacer((200,4))
-        
-        # Static label for the popup menu
-        line1 = wx.BoxSizer(wx.HORIZONTAL)
-        textLabel = wx.StaticText(self, -1, self.label)
-        textLabel.SetFont(wx.Font(TEXT_LABELFORWIDGET_FONT, wx.NORMAL, wx.NORMAL, wx.BOLD, face=FONT_FACE))
-        textLabel.SetForegroundColour(TEXT_LABELFORWIDGET_COLOUR)
-        line1.Add(textLabel,0,wx.ALL, 0)
-        
-        textDeuxPoints = wx.StaticText(self, -1, ' :')
-        textDeuxPoints.SetFont(wx.Font(TEXT_LABELFORWIDGET_FONT, wx.NORMAL, wx.NORMAL, wx.BOLD, face=FONT_FACE))
-        textDeuxPoints.SetForegroundColour(TEXT_LABELFORWIDGET_COLOUR)
-        line1.Add(textDeuxPoints,0,wx.ALL, 0)
-        
-        mainSizer.Add(line1, 0, wx.LEFT, 8)
-        
-        # Popup menu
-        line2 = wx.BoxSizer(wx.HORIZONTAL)
-        self.fileMenu = FolderPopup(self, path=None, init='', outFunction=self.onSelectSound,
-                                    emptyFunction=self.onLoadFile, backColour=CONTROLLABEL_BACK_COLOUR, tooltip=TT_SEL_SOUND)
-        line2.Add(self.fileMenu, 0, wx.ALIGN_CENTER | wx.RIGHT, 20)
-        line2.AddSpacer((8,5))
-
-        self.toolbox = ToolBox(self, tools=['play','edit','open'],
-                               outFunction=[self.listenSoundfile,self.editSoundfile, self.onShowSampler],
-                               openSampler=True)
-        self.toolbox.setOpen(False)
-        line2.Add(self.toolbox,0,wx.ALIGN_CENTER | wx.TOP | wx.LEFT, 2)
-        
-        mainSizer.Add(line2, 1, wx.LEFT, 6)
-        mainSizer.AddSpacer((5,2))
-
-        self.createSamplerFrame()
-
-        self.SetSizer(mainSizer)
-        
-        CeciliaLib.getVar("userInputs")[self.name] = dict()
+       
         CeciliaLib.getVar("userInputs")[self.name]['type'] = 'csampler'
-        CeciliaLib.getVar("userInputs")[self.name]['path'] = ''
         
+    def processMode(self):
+        grapher = CeciliaLib.getVar('grapher')
+        if self.mode == 0:
+            self.fileMenu.setEnable(True)
+            grapher.setSamplerLineStates(self.name, True)
+            self.samplerFrame.textOffset.SetLabel('Offset :')
+            self.samplerFrame.offsetSlider.SetValue(0)
+            self.samplerFrame.liveInputHeader(False)
+        elif self.mode == 1:
+            self.fileMenu.setEnable(False)
+            grapher.setSamplerLineStates(self.name, False)
+            if self.samplerFrame.IsShown():
+                self.samplerFrame.Hide()
+                self.toolbox.setOpen(False)
+        else:
+            grapher.setSamplerLineStates(self.name, True)
+            self.samplerFrame.textOffset.SetLabel('Table Length (sec) :')
+            self.samplerFrame.offsetSlider.setEnable(True)
+            self.samplerFrame.offsetSlider.SetValue(5)
+            self.samplerFrame.loopInSlider.setValue(0)
+            self.samplerFrame.loopOutSlider.setValue(5)
+            self.samplerFrame.liveInputHeader(True, self.mode)
 
     def setOutputChnls(self, chnls):
         self.outputChnls = chnls
@@ -931,43 +966,9 @@ class CSampler(Cfilein):
 
     def createSamplerFrame(self):
         self.samplerFrame = SamplerFrame(self, self.name)
-        
-    def onShowSampler(self):
-        if self.samplerFrame.IsShown():
-            self.samplerFrame.Hide()
-        else:
-            pos = wx.GetMousePosition()
-            framepos = (pos[0]+10, pos[1]+20)
-            self.samplerFrame.SetPosition(framepos)
-            self.samplerFrame.Show()
 
     def onSelectSound(self, idx, file):
-        file = CeciliaLib.ensureNFD(file)
-        self.filePath = CeciliaLib.ensureNFD(self.folderInfo[file]['path'])
-        self.duration = self.folderInfo[file]['dur']
-        self.chnls = self.folderInfo[file]['chnls']
-        self.type = self.folderInfo[file]['type']
-        self.samprate = self.folderInfo[file]['samprate']
-        self.bitrate = self.folderInfo[file]['bitrate']
-        self.samplerFrame.offsetSlider.setEnable(True)
-        self.samplerFrame.offsetSlider.SetRange(0,self.duration)
-        self.samplerFrame.offsetSlider.SetValue(self.getOffset())
-        self.samplerFrame.update(path=self.filePath,
-                                             dur=self.duration,
-                                             type=self.type,
-                                             bitDepth=self.bitrate,
-                                             chanNum=self.chnls,
-                                             sampRate=self.samprate)    
-    
-        nsamps = self.samprate * self.duration
-        tableSize = powerOf2(nsamps)
-        fracPart = float(nsamps) / tableSize
-        CeciliaLib.getVar("userInputs")[self.name]['gensize%s' % self.name] = tableSize
-        CeciliaLib.getVar("userInputs")[self.name]['sr%s' % self.name] = self.samprate
-        CeciliaLib.getVar("userInputs")[self.name]['dur%s' % self.name] = self.duration
-        CeciliaLib.getVar("userInputs")[self.name]['nchnls%s' % self.name] = self.chnls
-        CeciliaLib.getVar("userInputs")[self.name]['off%s' % self.name] = self.getOffset()
-        CeciliaLib.getVar("userInputs")[self.name]['path'] = self.filePath
+        self.getSoundInfos(file)
 
         for line in CeciliaLib.getVar("grapher").plotter.getData():
             if line.getName() == self.samplerFrame.loopInSlider.getCName() or line.getName() == self.samplerFrame.loopOutSlider.getCName():
@@ -987,10 +988,7 @@ class CSampler(Cfilein):
         info['transp'] = self.samplerFrame.getTransp()
         info['xfadeshape'] = self.samplerFrame.getXfadeShape()
         return info
-    
-    def getSamplerFrame(self):
-        return self.samplerFrame
-    
+
     def getSamplerSliders(self):
         return self.getSamplerFrame().sliderlist
 
@@ -1034,11 +1032,11 @@ class CfileinFrame(wx.Frame):
         textLabel2.SetBackgroundColour(BACKGROUND_COLOUR)
         line3.Add(textLabel2,0,wx.ALL, 0)
         
-        textOffset = wx.StaticText(self, -1, ' Offset :')
-        textOffset.SetFont(wx.Font(TEXT_LABELFORWIDGET_FONT, wx.NORMAL, wx.NORMAL, wx.NORMAL, face=FONT_FACE))
-        textOffset.SetForegroundColour(TEXT_LABELFORWIDGET_COLOUR)
-        textOffset.SetBackgroundColour(BACKGROUND_COLOUR)
-        line3.Add(textOffset,0,wx.ALL, 0)
+        self.textOffset = wx.StaticText(self, -1, ' Offset :')
+        self.textOffset.SetFont(wx.Font(TEXT_LABELFORWIDGET_FONT, wx.NORMAL, wx.NORMAL, wx.NORMAL, face=FONT_FACE))
+        self.textOffset.SetForegroundColour(TEXT_LABELFORWIDGET_COLOUR)
+        self.textOffset.SetBackgroundColour(BACKGROUND_COLOUR)
+        line3.Add(self.textOffset,0,wx.ALL, 0)
         
         box.Add(line3, 0, wx.LEFT, 20)
               
@@ -1091,6 +1089,12 @@ class CfileinFrame(wx.Frame):
         header = '%s\n' % CeciliaLib.shortenName(self.path,48)
         header += '%0.2f sec - %s - %s - %d ch. - %2.1fkHz' % (self.dur, self.type, self.bitDepth, self.chanNum, self.sampRate)
         return header
+
+    def liveInputHeader(self, yes=True):
+        if yes:
+            self.title.setLabel("Audio table will be filled with live input.")
+        else:
+            self.title.setLabel("")
     
     def SetRoundShape(self, event=None):
         self.SetShape(GetRoundShape(385, 143, 1))
@@ -1111,7 +1115,7 @@ class SamplerFrame(wx.Frame):
         self.loopList = ['Off', 'Forward', 'Backward', 'Back & Forth']
             
         panel = wx.Panel(self, -1)
-        w, h = size #self.GetSize()
+        w, h = size
         panel.SetBackgroundColour(BACKGROUND_COLOUR)
         box = wx.BoxSizer(wx.VERTICAL)
         
@@ -1127,11 +1131,11 @@ class SamplerFrame(wx.Frame):
         textLabel2.SetBackgroundColour(BACKGROUND_COLOUR)
         line3.Add(textLabel2,0,wx.ALL, 0)
         
-        textOffset = wx.StaticText(panel, -1, ' Offset :')
-        textOffset.SetFont(wx.Font(TEXT_LABELFORWIDGET_FONT, wx.NORMAL, wx.NORMAL, wx.NORMAL, face=FONT_FACE))
-        textOffset.SetForegroundColour(TEXT_LABELFORWIDGET_COLOUR)
-        textOffset.SetBackgroundColour(BACKGROUND_COLOUR)
-        line3.Add(textOffset,0,wx.ALL, 0)
+        self.textOffset = wx.StaticText(panel, -1, ' Offset :')
+        self.textOffset.SetFont(wx.Font(TEXT_LABELFORWIDGET_FONT, wx.NORMAL, wx.NORMAL, wx.NORMAL, face=FONT_FACE))
+        self.textOffset.SetForegroundColour(TEXT_LABELFORWIDGET_COLOUR)
+        self.textOffset.SetBackgroundColour(BACKGROUND_COLOUR)
+        line3.Add(self.textOffset,0,wx.ALL, 0)
         
         box.Add(line3, 0, wx.LEFT, 20)
         
@@ -1156,6 +1160,7 @@ class SamplerFrame(wx.Frame):
         loopLabel.SetForegroundColour("#FFFFFF")
         loopBox.Add(loopLabel, 0, wx.ALIGN_CENTER_VERTICAL | wx.LEFT, 3)
         self.loopMenu = SamplerPopup(panel, self.loopList, self.loopList[1], self.name, outFunction=self.handleLoopMode)
+        self.loopMenu.popup.setBackColour(GREY_COLOUR)
         self.loopMenu.popup.SetToolTip(CECTooltip(TT_SAMPLER_LOOP))                                  
         loopBox.Add(self.loopMenu.popup, 0, wx.ALIGN_CENTER_VERTICAL)
 
@@ -1277,7 +1282,16 @@ class SamplerFrame(wx.Frame):
         header = '%s\n' % CeciliaLib.shortenName(self.path,48)
         header += '%0.2f sec - %s - %s - %d ch. - %2.1fkHz' % (self.dur, self.type, self.bitDepth, self.chanNum, self.sampRate)
         return header
-    
+
+    def liveInputHeader(self, yes=True, mode=2):
+        if yes:
+            if mode == 2:
+                self.title.setLabel("Audio table will be filled with live input.")
+            else:
+                self.title.setLabel("Audio table (double buffered) will be continuously filled with live input.")
+        else:
+            self.title.setLabel("")
+            
     def SetRoundShape(self, event=None):
         w, h = self.size
         self.SetShape(GetRoundShape(w, h, 1))
@@ -1293,8 +1307,14 @@ class SamplerFrame(wx.Frame):
         return self.xfadeSwitcher.getValue()
         
     def handleLoopMode(self, value):
-        if CeciliaLib.getVar("currentModule") != None:
-            CeciliaLib.getVar("currentModule")._samplers[self.name].setLoopMode(value)
+        """
+        Removed real-time loop mode switching until the bug with Looper object is resolved. 
+        Something to do with reset of the pointer when start and dur are not 0 and max.
+        -belangeo
+        """
+        pass
+        #if CeciliaLib.getVar("currentModule") != None:
+        #    CeciliaLib.getVar("currentModule")._samplers[self.name].setLoopMode(value)
         
     def setLoopMode(self, index):
         self.loopMenu.popup.setByIndex(index)
@@ -1315,9 +1335,27 @@ class SamplerFrame(wx.Frame):
     def setLoopX(self, values):
         self.loopXSlider.setValue(values[0])
         self.loopXSlider.setPlay(values[1])
+        if len(values) > 3:
+            self.loopXSlider.setMidiCtl(values[4])
+            self.loopXSlider.setMidiChannel(values[5])
+            if values[6] != None:
+                self.loopXSlider.setOpenSndCtrl("%d:%s" % (values[6][0], values[6][1]))
+            else:
+                self.loopXSlider.setOpenSndCtrl(None)
+            if values[7] != None:
+                self.loopXSlider.setOSCOut("%s:%d:%s" % (values[7][0], values[7][1], values[7][2]))
+            else:
+                self.loopXSlider.setOSCOut(None)
+        else:
+            self.loopXSlider.setMidiCtl(None)
+            self.loopXSlider.setMidiChannel(1)
+            self.loopXSlider.setOpenSndCtrl(None)
+            self.loopXSlider.setOSCOut(None)
         
     def getLoopX(self):
-        return [self.loopXSlider.getValue(), self.loopXSlider.getPlay(), self.loopXSlider.getRec()] 
+        return [self.loopXSlider.getValue(), self.loopXSlider.getPlay(), self.loopXSlider.getRec(),
+                self.loopXSlider.getWithMidi(), self.loopXSlider.getMidiCtl(), self.loopXSlider.getMidiChannel(),
+                self.loopXSlider.getOpenSndCtrl(), self.loopXSlider.getOSCOut()]
 
     def handleLoopIn(self, value):
         if CeciliaLib.getVar("currentModule") != None:
@@ -1326,9 +1364,29 @@ class SamplerFrame(wx.Frame):
     def setLoopIn(self, values):
         self.loopInSlider.setValue(values[0])
         self.loopInSlider.setPlay(values[1])
-        
+        if len(values) > 3:
+            self.loopInSlider.setMidiCtl(values[4])
+            self.loopInSlider.setMidiChannel(values[5])
+            self.loopInSlider.slider.SetRange(values[6], values[7])
+            if values[8] != None:
+                self.loopInSlider.setOpenSndCtrl("%d:%s" % (values[8][0], values[8][1]))
+            else:
+                self.loopInSlider.setOpenSndCtrl(None)
+            if values[9] != None:
+                self.loopInSlider.setOSCOut("%s:%d:%s" % (values[9][0], values[9][1], values[9][2]))
+            else:
+                self.loopInSlider.setOSCOut(None)
+        else:
+            self.loopInSlider.setMidiCtl(None)
+            self.loopInSlider.setMidiChannel(1)
+            self.loopInSlider.setOpenSndCtrl(None)
+            self.loopInSlider.setOSCOut(None)
+
     def getLoopIn(self):
-        return [self.loopInSlider.getValue(), self.loopInSlider.getPlay(), self.loopInSlider.getRec()]
+        return [self.loopInSlider.getValue(), self.loopInSlider.getPlay(), self.loopInSlider.getRec(), 
+                self.loopInSlider.getWithMidi(), self.loopInSlider.getMidiCtl(), self.loopInSlider.getMidiChannel(),
+                self.loopInSlider.slider.getMinValue(), self.loopInSlider.slider.getMaxValue(),
+                self.loopInSlider.getOpenSndCtrl(), self.loopInSlider.getOSCOut()]
 
     def handleLoopOut(self, value):
         if CeciliaLib.getVar("currentModule") != None:
@@ -1337,9 +1395,29 @@ class SamplerFrame(wx.Frame):
     def setLoopOut(self, values):
         self.loopOutSlider.setValue(values[0])
         self.loopOutSlider.setPlay(values[1])
+        if len(values) > 3:
+            self.loopOutSlider.setMidiCtl(values[4])
+            self.loopOutSlider.setMidiChannel(values[5])
+            self.loopOutSlider.slider.SetRange(values[6], values[7])
+            if values[8] != None:
+                self.loopOutSlider.setOpenSndCtrl("%d:%s" % (values[8][0], values[8][1]))
+            else:
+                self.loopOutSlider.setOpenSndCtrl(None)
+            if values[9] != None:
+                self.loopOutSlider.setOSCOut("%s:%d:%s" % (values[9][0], values[9][1], values[9][2]))
+            else:
+                self.loopOutSlider.setOSCOut(None)
+        else:
+            self.loopOutSlider.setMidiCtl(None)
+            self.loopOutSlider.setMidiChannel(1)
+            self.loopOutSlider.setOpenSndCtrl(None)
+            self.loopOutSlider.setOSCOut(None)
         
     def getLoopOut(self):
-        return [self.loopOutSlider.getValue(), self.loopOutSlider.getPlay(), self.loopOutSlider.getRec()]
+        return [self.loopOutSlider.getValue(), self.loopOutSlider.getPlay(), self.loopOutSlider.getRec(),
+                self.loopOutSlider.getWithMidi(), self.loopOutSlider.getMidiCtl(), self.loopOutSlider.getMidiChannel(),
+                self.loopOutSlider.slider.getMinValue(), self.loopOutSlider.slider.getMaxValue(),
+                self.loopOutSlider.getOpenSndCtrl(), self.loopOutSlider.getOSCOut()]
 
     def handleGain(self, value):
         if CeciliaLib.getVar("currentModule") != None:
@@ -1348,9 +1426,27 @@ class SamplerFrame(wx.Frame):
     def setGain(self, values):
         self.gainSlider.setValue(values[0])
         self.gainSlider.setPlay(values[1])
+        if len(values) > 3:
+            self.gainSlider.setMidiCtl(values[4])
+            self.gainSlider.setMidiChannel(values[5])
+            if values[6] != None:
+                self.gainSlider.setOpenSndCtrl("%d:%s" % (values[6][0], values[6][1]))
+            else:
+                self.gainSlider.setOpenSndCtrl(None)
+            if values[7] != None:
+                self.gainSlider.setOSCOut("%s:%d:%s" % (values[7][0], values[7][1], values[7][2]))
+            else:
+                self.gainSlider.setOSCOut(None)
+        else:
+            self.gainSlider.setMidiCtl(None)
+            self.gainSlider.setMidiChannel(1)
+            self.gainSlider.setOpenSndCtrl(None)
+            self.gainSlider.setOSCOut(None)
         
     def getGain(self):
-        return [self.gainSlider.getValue(), self.gainSlider.getPlay(), self.gainSlider.getRec()]
+        return [self.gainSlider.getValue(), self.gainSlider.getPlay(), self.gainSlider.getRec(),
+                self.gainSlider.getWithMidi(), self.gainSlider.getMidiCtl(), self.gainSlider.getMidiChannel(),
+                self.gainSlider.getOpenSndCtrl(), self.gainSlider.getOSCOut()]
         
     def handleTransp(self, value):
         if CeciliaLib.getVar("currentModule") != None:
@@ -1359,9 +1455,27 @@ class SamplerFrame(wx.Frame):
     def setTransp(self, values):
         self.transpSlider.setValue(values[0])
         self.transpSlider.setPlay(values[1])
+        if len(values) > 3:
+            self.transpSlider.setMidiCtl(values[4])
+            self.transpSlider.setMidiChannel(values[5])
+            if values[6] != None:
+                self.transpSlider.setOpenSndCtrl("%d:%s" % (values[6][0], values[6][1]))
+            else:
+                self.transpSlider.setOpenSndCtrl(None)
+            if values[7] != None:
+                self.transpSlider.setOSCOut("%s:%d:%s" % (values[7][0], values[7][1], values[7][2]))
+            else:
+                self.transpSlider.setOSCOut(None)
+        else:
+            self.transpSlider.setMidiCtl(None)
+            self.transpSlider.setMidiChannel(1)
+            self.transpSlider.setOpenSndCtrl(None)
+            self.transpSlider.setOSCOut(None)
         
     def getTransp(self):
-        return [self.transpSlider.getValue(), self.transpSlider.getPlay(), self.transpSlider.getRec()]
+        return [self.transpSlider.getValue(), self.transpSlider.getPlay(), self.transpSlider.getRec(),
+                self.transpSlider.getWithMidi(), self.transpSlider.getMidiCtl(), self.transpSlider.getMidiChannel(),
+                self.transpSlider.getOpenSndCtrl(), self.transpSlider.getOSCOut()]
     
 class SamplerPlayRecButtons(wx.Panel):
     def __init__(self, parent, id=wx.ID_ANY, pos=(0,0), size=(40,20)):
@@ -1406,7 +1520,7 @@ class SamplerPlayRecButtons(wx.Panel):
                 self.setRec(0)
             self.play = True
             self.playColour = SLIDER_PLAY_COLOUR_NO_BIND
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def setRec(self, x):
         if x == 0:
@@ -1434,7 +1548,7 @@ class SamplerPlayRecButtons(wx.Panel):
             self.setOverWait(1)
         self.playOver = False
         self.recOver = False
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         evt.Skip()
 
     def OnEnter(self, evt):
@@ -1453,7 +1567,7 @@ class SamplerPlayRecButtons(wx.Panel):
                     self.setRec(True)
             self.playOver = False
             self.recOver = False
-            self.Refresh()
+            wx.CallAfter(self.Refresh)
             evt.Skip()
 
     def MouseUp(self, evt):
@@ -1469,7 +1583,7 @@ class SamplerPlayRecButtons(wx.Panel):
                 self.playOver = False
                 self.recOver = True
             self.checkForOverReady(pos)
-            self.Refresh()
+            wx.CallAfter(self.Refresh)
             evt.Skip()
 
     def OnLeave(self, evt):
@@ -1478,7 +1592,7 @@ class SamplerPlayRecButtons(wx.Panel):
         self.recOver = False
         self.playOverWait = True
         self.recOverWait = True
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         evt.Skip()
 
     def OnPaint(self, evt):
@@ -1528,10 +1642,16 @@ class SamplerSlider:
                       'Loop X': name+'xfade', 'Gain': name+'gain', 'Transpo': name+'trans'}[label]
         self.path = os.path.join(AUTOMATION_SAVE_PATH, self.cname)
         self.convertSliderValue = 200
+        self.midictl = None
+        self.midichan = 1
+        self.openSndCtrl = None
+        self.OSCOut = None
 
         self.labelText = wx.StaticText(parent, -1, label)
         self.labelText.SetFont(wx.Font(TEXT_LABELFORWIDGET_FONT, wx.NORMAL, wx.NORMAL, wx.NORMAL, face=FONT_FACE))
         self.labelText.SetForegroundColour("#FFFFFF")
+        self.labelText.Bind(wx.EVT_RIGHT_DOWN, self.onMidiLearn)
+        self.labelText.Bind(wx.EVT_LEFT_DCLICK, self.onLabelDClick)
         self.buttons = SamplerPlayRecButtons(parent)
         self.slider = ControlSlider(parent, mini, maxi, init, size=(236, 15), integer=integer, outFunction=self.sendValue)
         self.slider.setSliderHeight(10) 
@@ -1637,3 +1757,86 @@ class SamplerSlider:
     def getAutomationData(self):
         return [[x[0],x[1]] for x in self.automationData]
 
+    def onMidiLearn(self, evt):
+        if evt.ShiftDown():
+            self.setMidiCtl(None)
+        elif CeciliaLib.getVar("useMidi"):
+            CeciliaLib.getVar("audioServer").midiLearn(self)
+            self.slider.inMidiLearnMode()
+
+    def setMidiCtl(self, ctl):
+        if ctl == None:
+            self.midictl = None
+            self.midichan = 1
+            self.slider.setMidiCtl('')
+        else:    
+            self.midictl = int(ctl)
+            self.slider.setMidiCtl("%d:%d" % (self.midictl, self.midichan))
+            self.openSndCtrl = None
+            self.slider.setOpenSndCtrl('')
+
+    def getMidiCtl(self):
+        return self.midictl
+
+    def setMidiChannel(self, chan):
+        self.midichan = int(chan)
+
+    def getMidiChannel(self):
+        return self.midichan
+        
+    def getWithMidi(self):
+        if self.getMidiCtl() != None and CeciliaLib.getVar("useMidi"):
+            return True
+        else:
+            return False
+
+    def update(self, val):
+        if not self.slider.HasCapture() and self.getPlay() != 1 and self.getWithMidi():
+            self.setValue(val)
+
+    def onLabelDClick(self, evt):
+        f = OSCPopupFrame(CeciliaLib.getVar('interface'), self)
+        f.CenterOnParent()
+        f.Show()
+
+    def setOSCInput(self, value):
+        self.setOpenSndCtrl(value)
+
+    def setOSCOutput(self, value):
+        self.setOSCOut(value)
+
+    def setOpenSndCtrl(self, value):
+        if value != None:
+            if value == "":
+                self.openSndCtrl = None
+                self.slider.setOpenSndCtrl("")
+            else:
+                sep = value.split(":")
+                port = int(sep[0].strip())
+                address = str(sep[1].strip())
+                self.openSndCtrl = (port, address)
+                self.slider.setOpenSndCtrl("%d:%s" % (port, address))
+                self.setMidiCtl(None)
+
+    def setOSCOut(self, value):
+        if value != None:
+            if value == "":
+                self.OSCOut = None
+            else:
+                sep = value.split(":")
+                host = str(sep[0].strip())
+                port = int(sep[1].strip())
+                address = str(sep[2].strip())
+                self.OSCOut = (host, port, address)
+
+    def getOpenSndCtrl(self):
+        return self.openSndCtrl
+
+    def getOSCOut(self):
+        return self.OSCOut
+
+    def getWithOSC(self):
+        if self.openSndCtrl != None:
+            return True
+        else:
+            return False
diff --git a/Resources/Grapher.py b/Resources/Grapher.py
index ded3755..d7bc102 100755
--- a/Resources/Grapher.py
+++ b/Resources/Grapher.py
@@ -154,6 +154,13 @@ class Line:
         self.lines = []
         self.dataToDraw = []
         self.initData = self.getLineState()
+        self.modified = True
+
+    def getModified(self):
+        return self.modified
+        
+    def setModified(self, state):
+        self.modified = state
 
     def getLineState(self):
         dict = {'data': self.normalize(),
@@ -166,6 +173,7 @@ class Line:
         self.data = self.denormalize(data)
         self.curved = dict.get('curved', False)
         self.checkIfCurved()
+        self.modified = True
 
     def changeYrange(self, newrange):
         d = self.getLineState()
@@ -173,6 +181,7 @@ class Line:
         self.scale = self.yrange[1] - self.yrange[0]
         self.offset = self.yrange[0]
         self.setLineState(d)
+        self.modified = True
 
     def getColour(self):
         return self.colour
@@ -189,35 +198,43 @@ class Line:
     def setData(self, list):
         self.data = list
         self.checkIfCurved()
+        self.modified = True
 
     def reset(self):
         self.setLineState(self.initData)
         self.initData = self.getLineState()
+        self.modified = True
 
     def setPoint(self, point, value):
         self.data[point] = value
         self.checkIfCurved()
+        self.modified = True
 
     def move(self, list, offset):
         self.data = [[l[0] - offset[0], l[1] - offset[1]] for l in list]
         self.checkIfCurved()
+        self.modified = True
 
     def moveLog(self, list, offset):
         self.data = [[l[0] - offset[0], l[1] * offset[1]] for l in list]
         self.checkIfCurved()
+        self.modified = True
 
     def insert(self, pos, value):
         self.data.insert(pos, value)
         self.checkIfCurved()
+        self.modified = True
 
     def deletePoint(self, pos):
         del self.data[pos]
         self.checkIfCurved()
+        self.modified = True
 
     def deletePointFromPoint(self, point):
         if point in self.data:
             self.data.remove(point)
             self.checkIfCurved()
+            self.modified = True
 
     def setShow(self, state):
         self.show = state
@@ -237,6 +254,9 @@ class Line:
     def getLabel(self):
         return self.label
 
+    def setName(self, name):
+        self.name = name
+
     def getName(self):
         return self.name
 
@@ -298,6 +318,7 @@ class Line:
             self.curved = True
             self.lines = linToCosCurve(data=[p for p in self.getData()], yrange=self.getYrange(),
                                        totaldur=CeciliaLib.getVar("totalTime"), points=1024, log=self.getLog())
+        self.modified = True
 
     def checkIfCurved(self):
         if self.getCurved():
@@ -331,6 +352,7 @@ class Grapher(plot.PlotCanvas):
         self.selectedPoints = []
         self.markSelectionStart = None
         self.lineOver = None # mouse hover curve
+        self.lineOverGate = True
         self.selected = 0 # selected curve
         self._oldSelected = -1
         self._graphCreation = True
@@ -350,7 +372,7 @@ class Grapher(plot.PlotCanvas):
         win = wx.FindWindowAtPointer()
         if win != None:
             win = win.GetTopLevelParent()
-            if win not in [CeciliaLib.getVar("mainFrame"), CeciliaLib.getVar("interface")]:
+            if win not in [CeciliaLib.getVar("mainFrame"), CeciliaLib.getVar("interface"), CeciliaLib.getVar("spectrumFrame")]:
                 win.Raise()
         event.Skip()
         
@@ -496,7 +518,8 @@ class Grapher(plot.PlotCanvas):
         else:
             self.menubarUndo.Enable(False)
             self.menubarRedo.Enable(False)
-         
+
+    # zoom() is no more used... #
     def zoom(self):
         if self._zoomed:
             minX, minY= _Numeric.minimum( self._zoomCorner1, self._zoomCorner2)
@@ -562,10 +585,8 @@ class Grapher(plot.PlotCanvas):
             self._zoomCorner1 = _Numeric.array(self.rescaleLogLin([_zoomCorner1], currentLine.getYrange(), newLine.getYrange()))[0]
             self._zoomCorner2 = _Numeric.array(self.rescaleLogLin([_zoomCorner2], currentLine.getYrange(), newLine.getYrange()))[0]
         elif not currentLine.getLog() and not newLine.getLog():
-            self._zoomCorner1 = _Numeric.array(self.rescaleLinLin([self._zoomCorner1], currentLine.getScale(), newLine.getScale(),
-                                                                                       currentLine.getOffset(), newLine.getOffset()))[0]
-            self._zoomCorner2 = _Numeric.array(self.rescaleLinLin([self._zoomCorner2], currentLine.getScale(), newLine.getScale(),
-                                                                                       currentLine.getOffset(), newLine.getOffset()))[0]
+            self._zoomCorner1 = _Numeric.array(self.rescaleLinLin([self._zoomCorner1], currentLine.getYrange(), newLine.getYrange()))[0]
+            self._zoomCorner2 = _Numeric.array(self.rescaleLinLin([self._zoomCorner2], currentLine.getYrange(), newLine.getYrange()))[0]
         elif not currentLine.getLog() and newLine.getLog():
             self._zoomCorner1 = _Numeric.array(self.rescaleLinLog([self._zoomCorner1], currentLine.getYrange(), newLine.getYrange()))[0]
             self._zoomCorner2 = _Numeric.array(self.rescaleLinLog([self._zoomCorner2], currentLine.getYrange(), newLine.getYrange()))[0]
@@ -628,7 +649,7 @@ class Grapher(plot.PlotCanvas):
                         marker = plot.PolyMarker([l.getData()[0], l.getData()[-1]], size=1.1, marker="bmp", fillcolour='black')
                     else:
                         marker = plot.PolyMarker(l.getData(), size=1.1, marker="bmp", fillcolour='black')
-                    if CeciliaLib.getVar("currentModule") != None:
+                    if CeciliaLib.getVar("currentModule") != None and l.getModified():
                         if widget_type == "graph":
                             CeciliaLib.getVar("currentModule")._graphs[l.name].setValue(data)
                         elif widget_type == "range":
@@ -637,6 +658,9 @@ class Grapher(plot.PlotCanvas):
                             CeciliaLib.getVar("currentModule")._samplers[sampler_name].setGraph(l.name, data)
                         elif widget_type == "slider":
                             CeciliaLib.getVar("currentModule")._sliders[l.name].setGraph(data)
+                        elif widget_type == "plugin_knob":
+                            CeciliaLib.getVar("audioServer").setPluginGraph(slider.getParentVPos(), slider.getKnobPos(), data)
+                        l.setModified(False)
                 else:
                     if needRedrawNonSelCurves:
                         if currentLog:
@@ -673,7 +697,6 @@ class Grapher(plot.PlotCanvas):
         gc = plot.PlotGraphics(lines, 'Title', '', '')
         self.Draw(gc, xAxis = (0, self.totaltime), yAxis = currentYrange)
         self._currentData = self.getRawData()
-        self.zoom()
 
     def OnLeave(self, event):
         self.curve = None
@@ -1027,6 +1050,7 @@ class Grapher(plot.PlotCanvas):
                             l = self.data.index(self.visibleLines[ldata[0]])
                             if self.data.index(curve) == l:
                                 self.lineOver = self.data.index(curve)
+                                self.lineOverGate = True
                 else:
                     # Check mouse over if not curved
                     currentYrange = curve.getYrange()
@@ -1039,16 +1063,24 @@ class Grapher(plot.PlotCanvas):
                         i = len(curveData) - 3
                     if distanceToSegment(checkPos, curveData[i], curveData[i+1], 0, self.totaltime, currentYrange[0], currentYrange[1], False, curve.getLog()) <= pourcent:
                         self.lineOver = self.data.index(curve)
+                        self.lineOverGate = True
                     elif distanceToSegment(checkPos, curveData[i-1], curveData[i], 0, self.totaltime, currentYrange[0], currentYrange[1], False, curve.getLog()) <= pourcent:
                         self.lineOver = self.data.index(curve)
+                        self.lineOverGate = True
                     elif distanceToSegment(checkPos, curveData[i+1], curveData[i+2], 0, self.totaltime, currentYrange[0], currentYrange[1], False, curve.getLog()) <= pourcent:
                         self.lineOver = self.data.index(curve)
+                        self.lineOverGate = True
                     else:
                         self.lineOver = None
-                self.draw()
+                if self.lineOverGate:
+                    self.draw()
+                if self.lineOver == None:
+                    self.lineOverGate = False
 
         elif self._tool == 1 and event.LeftIsDown():
             pos = self.GetXY(event)
+            if self._pencilOldPos == None:
+                self._pencilOldPos = pos
             line = self.data[self.selected]
             if pos[0] < 0.0: pos = [0.0, pos[1]]
             elif pos[0] > CeciliaLib.getVar("totalTime"): pos = [CeciliaLib.getVar("totalTime"), pos[1]]
@@ -1187,7 +1219,7 @@ class ToolBar(wx.Panel):
         self.parent = parent
         ffakePanel = wx.Panel(self, -1, size=(5, self.GetSize()[1]))
         ffakePanel.SetBackgroundColour(TITLE_BACK_COLOUR)
-        self.menu = CustomMenu(self, choice=[], size=(130,20), init=None, outFunction=self.parent.onPopupMenu)
+        self.menu = CustomMenu(self, choice=[], size=(150,20), init=None, outFunction=self.parent.onPopupMenu)
         self.menu.setBackgroundColour(TITLE_BACK_COLOUR)
         self.menu.SetToolTip(CECTooltip(TT_GRAPH_POPUP))
         self.toolbox = ToolBox(self, tools=tools, outFunction=toolFunctions)
@@ -1243,7 +1275,7 @@ class ToolBar(wx.Panel):
         win = wx.FindWindowAtPointer()
         if win != None:
             win = win.GetTopLevelParent()
-            if win not in [CeciliaLib.getVar("mainFrame"), CeciliaLib.getVar("interface")]:
+            if win not in [CeciliaLib.getVar("mainFrame"), CeciliaLib.getVar("interface"), CeciliaLib.getVar("spectrumFrame")]:
                 win.Raise()
         event.Skip()
 
@@ -1311,7 +1343,7 @@ class CursorPanel(wx.Panel):
         win = wx.FindWindowAtPointer()
         if win != None:
             win = win.GetTopLevelParent()
-            if win not in [CeciliaLib.getVar("mainFrame"), CeciliaLib.getVar("interface")]:
+            if win not in [CeciliaLib.getVar("mainFrame"), CeciliaLib.getVar("interface"), CeciliaLib.getVar("spectrumFrame")]:
                 win.Raise()
         event.Skip()
 
@@ -1400,6 +1432,25 @@ class CECGrapher(wx.Panel):
     def setTotalTime(self, time):
         self.plotter.setTotalTime(time)
 
+    def setSamplerLineStates(self, name, state):
+        names = ['%s %s' % (name, n) for n in ['Loop In', 'Loop Time', 'Loop X', 'Gain', 'Transpo']]
+        labels = self.toolbar.getPopupChoice()
+        if state:
+            for n in names:
+                if n not in labels:
+                    labels.append(n)
+        else:
+            for n in names:
+                if n in labels:
+                    labels.remove(n)
+        self.toolbar.setPopupChoice(labels)
+        names = ['%s%s' % (name, n) for n in ['start', 'end', 'xfade', 'gain', 'trans']]
+        if not state:
+            for line in self.plotter.getData():
+                if line.getName() in names:
+                    line.setShow(False)
+        self.plotter.draw()
+        
     def createLines(self, list):
         for l in list:
             self.createLine(l[0], l[1], l[2], l[3], l[4], l[5], l[6], l[7])
diff --git a/Resources/Plugins.py b/Resources/Plugins.py
index 743ae83..fc1e4aa 100644
--- a/Resources/Plugins.py
+++ b/Resources/Plugins.py
@@ -23,6 +23,55 @@ from constants import *
 import CeciliaLib
 from Widgets import *
 
+class PluginArrow(wx.Panel):
+    def __init__(self, parent, dir="up", size=(8,10), outFunction=None, colour=None):
+        wx.Panel.__init__(self, parent, -1, size=size)
+        self.SetMaxSize(self.GetSize())
+        self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
+        self.SetBackgroundColour(BACKGROUND_COLOUR)
+        self.outFunction = outFunction
+        self.dir = dir
+        self.hover = 0
+        if colour:
+            self.colour = colour
+        else:
+            self.colour = BACKGROUND_COLOUR
+        if self.dir == "up":
+            self.bitmaps = [ICON_PLUGINS_ARROW_UP.GetBitmap(), ICON_PLUGINS_ARROW_UP_HOVER.GetBitmap()]
+        else:
+            self.bitmaps = [ICON_PLUGINS_ARROW_DOWN.GetBitmap(), ICON_PLUGINS_ARROW_DOWN_HOVER.GetBitmap()]
+        self.Bind(wx.EVT_PAINT, self.OnPaint)
+        self.Bind(wx.EVT_LEFT_DOWN, self.MouseDown)
+        self.Bind(wx.EVT_ENTER_WINDOW, self.MouseEnter)
+        self.Bind(wx.EVT_LEAVE_WINDOW, self.MouseLeave)
+
+    def MouseEnter(self, evt):
+        self.hover = 1
+        wx.CallAfter(self.Refresh)
+        
+    def MouseLeave(self, evt):
+        self.hover = 0
+        wx.CallAfter(self.Refresh)
+
+    def OnPaint(self, event):
+        w,h = self.GetSize()
+        dc = wx.AutoBufferedPaintDC(self)
+
+        dc.SetBrush(wx.Brush(BACKGROUND_COLOUR, wx.SOLID))
+        dc.Clear()
+
+        # Draw background
+        dc.SetPen(wx.Pen(BACKGROUND_COLOUR, width=0, style=wx.SOLID))
+        dc.DrawRectangle(0, 0, w, h)
+
+        dc.DrawBitmap(self.bitmaps[self.hover], 0, 0, True)
+
+    def MouseDown(self, event):
+        if self.outFunction:
+            self.outFunction(self.dir)
+        #wx.CallAfter(self.Refresh)
+        event.Skip()
+
 class PluginKnob(ControlKnob):
     def __init__(self, parent, minvalue, maxvalue, init=None, pos=(0,0), size=(50,70), 
                 log=False, outFunction=None, integer=False, backColour=None, label=''):
@@ -45,6 +94,13 @@ class PluginKnob(ControlKnob):
         self.rec = False
         self.convertSliderValue = 200
 
+    def getParentVPos(self):
+        return self.GetParent().vpos
+
+    def getKnobPos(self):
+        names = self.GetParent().getKnobNames()
+        return names.index(self.name)
+
     def setConvertSliderValue(self, x, end=None):
         self.convertSliderValue = x
 
@@ -214,9 +270,20 @@ class Plugin(wx.Panel):
         self.SetBackgroundColour(BACKGROUND_COLOUR)
         self.choiceFunc = choiceFunc
         self.order = order
+        self.vpos = order
 
+    def setKnobLabels(self):
+        if self.pluginName != 'None':
+            for i, knob in enumerate(self.getKnobs()):
+                knob.setLongLabel("PP%d %s %s" % (self.vpos+1, self.pluginName, knob.getLabel()))
+
+    def setKnobNames(self):
+        if self.pluginName != 'None':
+            for i, knob in enumerate(self.getKnobs()):
+                knob.setName(self.knobNameTemplates[i] % self.vpos)
+        
     def replacePlugin(self, i, new):
-        self.choiceFunc(self.order, new)
+        self.choiceFunc(self.vpos, new)
 
     def getName(self):
         return self.pluginName
@@ -256,22 +323,63 @@ class Plugin(wx.Panel):
     def onChangeKnob1(self, x):
         if self.knob1.getState()[1] in [0,1]:
             if CeciliaLib.getVar("currentModule") != None:
-                CeciliaLib.getVar("audioServer").setPluginValue(self.order, 0, x)
+                CeciliaLib.getVar("audioServer").setPluginValue(self.vpos, 0, x)
 
     def onChangeKnob2(self, x):
         if self.knob2.getState()[1] in [0,1]:
             if CeciliaLib.getVar("currentModule") != None:
-                CeciliaLib.getVar("audioServer").setPluginValue(self.order, 1, x)
+                CeciliaLib.getVar("audioServer").setPluginValue(self.vpos, 1, x)
 
     def onChangeKnob3(self, x):
         if self.knob3.getState()[1] in [0,1]:
             if CeciliaLib.getVar("currentModule") != None:
-                CeciliaLib.getVar("audioServer").setPluginValue(self.order, 2, x)
+                CeciliaLib.getVar("audioServer").setPluginValue(self.vpos, 2, x)
 
     def onChangePreset(self, x, label=None):
         if CeciliaLib.getVar("currentModule") != None:
-            CeciliaLib.getVar("audioServer").setPluginPreset(self.order, x, label)
-        
+            CeciliaLib.getVar("audioServer").setPluginPreset(self.vpos, x, label)
+
+    def createHeadBox(self):
+        self.headBox = wx.BoxSizer(wx.HORIZONTAL)
+        plugChoiceText = wx.StaticText(self, -1, 'Effects:')
+        plugChoiceText.SetFont(wx.Font(CONTROLSLIDER_FONT, wx.ROMAN, wx.NORMAL, wx.NORMAL, face=FONT_FACE))
+        plugChoiceText.SetForegroundColour(TEXT_LABELFORWIDGET_COLOUR)
+        self.headBox.Add(plugChoiceText, 0)
+        self.tw,th = plugChoiceText.GetTextExtent('Effects:')
+        self.headBox.AddSpacer((75 - self.tw, -1))
+        self.arrowUp = PluginArrow(self, "up", outFunction=self.arrowLeftDown)
+        self.headBox.Add(self.arrowUp, 0)
+        self.arrowDown = PluginArrow(self, "down", outFunction=self.arrowLeftDown)
+        self.headBox.Add(self.arrowDown, 0)
+        if self.vpos == 0:
+            self.headBox.GetChildren()[1].SetSpacer((83 - self.tw, -1))
+            self.arrowUp.Hide()
+        if self.vpos == (NUM_OF_PLUGINS - 1):
+            self.arrowDown.Hide()
+
+    def checkArrows(self):
+        if self.vpos == 0:
+            self.headBox.GetChildren()[1].SetSpacer((83 - self.tw, -1))
+            self.arrowUp.Hide()
+            self.arrowDown.Show()
+            self.headBox.Layout()
+        elif self.vpos == (NUM_OF_PLUGINS - 1):
+            self.headBox.GetChildren()[1].SetSpacer((75 - self.tw, -1))
+            self.arrowUp.Show()
+            self.arrowDown.Hide()
+            self.headBox.Layout()
+        else:
+            self.headBox.GetChildren()[1].SetSpacer((75 - self.tw, -1))
+            self.arrowUp.Show()
+            self.arrowDown.Show()
+            self.headBox.Layout()
+
+    def arrowLeftDown(self, dir):
+        if dir == "up":
+            CeciliaLib.getControlPanel().movePlugin(self.vpos, -1)
+        else:
+            CeciliaLib.getControlPanel().movePlugin(self.vpos, 1)
+
 class NonePlugin(Plugin):
     def __init__(self, parent, choiceFunc, order):
         Plugin.__init__(self, parent, choiceFunc, order)
@@ -291,10 +399,8 @@ class NonePlugin(Plugin):
         self.knob3.setEnable(False)    
         self.sizer.Add(self.knob3)
         
-        plugChoiceText = wx.StaticText(self, -1, 'Effects:')
-        plugChoiceText.SetFont(wx.Font(CONTROLSLIDER_FONT, wx.ROMAN, wx.NORMAL, wx.NORMAL, face=FONT_FACE))
-        plugChoiceText.SetForegroundColour(TEXT_LABELFORWIDGET_COLOUR)
-        revMenuBox.Add(plugChoiceText, 0, wx.TOP, 0)
+        self.createHeadBox()
+        revMenuBox.Add(self.headBox, 0, wx.TOP, 0)
         self.choice = CustomMenu(self, choice=PLUGINS_CHOICE, init='None', size=(93,18), colour=PLUGINPOPUP_BACK_COLOUR, outFunction=self.replacePlugin)
         self.choice.SetToolTip(CECTooltip(TT_POST_ITEMS))
         revMenuBox.Add(self.choice, 0, wx.TOP, 2)
@@ -314,28 +420,26 @@ class ReverbPlugin(Plugin):
     def __init__(self, parent, choiceFunc, order):
         Plugin.__init__(self, parent, choiceFunc, order)
         self.pluginName = 'Reverb'
+        self.knobNameTemplates = ['plugin_%d_reverb_mix', 'plugin_%d_reverb_time', 'plugin_%d_reverb_damp']
         self.sizer = wx.FlexGridSizer(1,4,0,0)
         revMenuBox = wx.BoxSizer(wx.VERTICAL)
 
         self.knob1 = PluginKnob(self, 0, 1, 0.25, size=(43,70), log=False, outFunction=self.onChangeKnob1, label='Mix')
-        self.knob1.setName('plugin_%d_reverb_mix' % self.order)       
-        self.knob1.setLongLabel('plugin %d Reverb Mix' % (self.order+1))       
+        self.knob1.setName(self.knobNameTemplates[0] % self.order)       
         self.sizer.Add(self.knob1)
 
         self.knob2 = PluginKnob(self, 0.01, 10, 1, size=(43,70), log=False, outFunction=self.onChangeKnob2, label='Time')        
-        self.knob2.setName('plugin_%d_reverb_time' % self.order)       
-        self.knob2.setLongLabel('plugin %d Reverb Time' % (self.order+1))       
+        self.knob2.setName(self.knobNameTemplates[1] % self.order)       
         self.sizer.Add(self.knob2)
 
         self.knob3 = PluginKnob(self, 0, 1, 0.5, size=(43,70), log=False, outFunction=self.onChangeKnob3, label='Damp')        
-        self.knob3.setName('plugin_%d_reverb_damp' % self.order)       
-        self.knob3.setLongLabel('plugin %d Reverb Damp' % (self.order+1))       
+        self.knob3.setName(self.knobNameTemplates[2] % self.order)       
         self.sizer.Add(self.knob3)
+
+        self.setKnobLabels()
         
-        plugChoiceText = wx.StaticText(self, -1, 'Effects:')
-        plugChoiceText.SetFont(wx.Font(CONTROLSLIDER_FONT, wx.ROMAN, wx.NORMAL, wx.NORMAL, face=FONT_FACE))
-        plugChoiceText.SetForegroundColour(TEXT_LABELFORWIDGET_COLOUR)
-        revMenuBox.Add(plugChoiceText, 0, wx.TOP, 0)
+        self.createHeadBox()
+        revMenuBox.Add(self.headBox, 0, wx.TOP, 0)
         self.choice = CustomMenu(self, choice=PLUGINS_CHOICE, init='Reverb', size=(93,18), colour=PLUGINPOPUP_BACK_COLOUR, outFunction=self.replacePlugin)
         self.choice.SetToolTip(CECTooltip(TT_POST_ITEMS))
         revMenuBox.Add(self.choice, 0, wx.TOP, 2)
@@ -347,7 +451,7 @@ class ReverbPlugin(Plugin):
         self.preset = CustomMenu(self, choice=['Bypass', 'Active'], init='Active', size=(93,18), colour=CONTROLLABEL_BACK_COLOUR, outFunction=self.onChangePreset)
         self.presetName = 'plugin_%d_reverb_preset' % self.order                     
         revMenuBox.Add(self.preset, 0, wx.TOP, 2)
-        
+
         self.sizer.Add(revMenuBox, 0, wx.LEFT, 5)
         self.SetSizer(self.sizer)
 
@@ -355,28 +459,27 @@ class WGReverbPlugin(Plugin):
     def __init__(self, parent, choiceFunc, order):
         Plugin.__init__(self, parent, choiceFunc, order)
         self.pluginName = 'WGVerb'
+        self.knobNameTemplates = ['plugin_%d_wgreverb_mix', 'plugin_%d_wgreverb_feed', 'plugin_%d_wgreverb_lp']
         self.sizer = wx.FlexGridSizer(1,4,0,0)
         revMenuBox = wx.BoxSizer(wx.VERTICAL)
 
         self.knob1 = PluginKnob(self, 0, 1, 0.25, size=(43,70), log=False, outFunction=self.onChangeKnob1, label='Mix')
-        self.knob1.setName('plugin_%d_wgreverb_mix' % self.order)       
-        self.knob1.setLongLabel('plugin %d WGVerb Mix' % (self.order+1))       
+        self.knob1.setName(self.knobNameTemplates[0] % self.order)       
         self.sizer.Add(self.knob1)
 
         self.knob2 = PluginKnob(self, 0., 1, 0.7, size=(43,70), log=False, outFunction=self.onChangeKnob2, label='Feed')        
-        self.knob2.setName('plugin_%d_wgreverb_feed' % self.order)       
-        self.knob2.setLongLabel('plugin %d WGVerb Feed' % (self.order+1))       
+        self.knob2.setName(self.knobNameTemplates[1] % self.order)       
         self.sizer.Add(self.knob2)
 
         self.knob3 = PluginKnob(self, 100, 15000, 5000, size=(43,70), log=True, outFunction=self.onChangeKnob3, label='Cutoff')        
-        self.knob3.setName('plugin_%d_wgreverb_lp' % self.order)       
-        self.knob3.setLongLabel('plugin %d WGVerb Cutoff' % (self.order+1))       
+        self.knob3.setName(self.knobNameTemplates[2] % self.order)
+        self.knob3.setFloatPrecision(2)   
         self.sizer.Add(self.knob3)
 
-        plugChoiceText = wx.StaticText(self, -1, 'Effects:')
-        plugChoiceText.SetFont(wx.Font(CONTROLSLIDER_FONT, wx.ROMAN, wx.NORMAL, wx.NORMAL, face=FONT_FACE))
-        plugChoiceText.SetForegroundColour(TEXT_LABELFORWIDGET_COLOUR)
-        revMenuBox.Add(plugChoiceText, 0, wx.TOP, 0)
+        self.setKnobLabels()
+
+        self.createHeadBox()
+        revMenuBox.Add(self.headBox, 0, wx.TOP, 0)
         self.choice = CustomMenu(self, choice=PLUGINS_CHOICE, init='WGVerb', size=(93,18), colour=PLUGINPOPUP_BACK_COLOUR, outFunction=self.replacePlugin)
         self.choice.SetToolTip(CECTooltip(TT_POST_ITEMS))
         revMenuBox.Add(self.choice, 0, wx.TOP, 2)
@@ -396,29 +499,27 @@ class FilterPlugin(Plugin):
     def __init__(self, parent, choiceFunc, order):
         Plugin.__init__(self, parent, choiceFunc, order)
         self.pluginName = 'Filter'
+        self.knobNameTemplates = ['plugin_%d_filter_level', 'plugin_%d_filter_freq', 'plugin_%d_filter_q']
         self.sizer = wx.FlexGridSizer(1,4,0,0)
         revMenuBox = wx.BoxSizer(wx.VERTICAL)
 
         self.knob1 = PluginKnob(self, 0, 2, 1, size=(43,70), log=False, outFunction=self.onChangeKnob1, label='Level')
-        self.knob1.setName('plugin_%d_filter_level' % self.order)       
-        self.knob1.setLongLabel('plugin %d Filter Level' % (self.order+1))       
+        self.knob1.setName(self.knobNameTemplates[0] % self.order)       
         self.sizer.Add(self.knob1)
 
         self.knob2 = PluginKnob(self, 20, 18000, 1000, size=(43,70), log=True, outFunction=self.onChangeKnob2, label='Freq')        
-        self.knob2.setName('plugin_%d_filter_freq' % self.order)       
-        self.knob2.setLongLabel('plugin %d Filter Freq' % (self.order+1))  
+        self.knob2.setName(self.knobNameTemplates[1] % self.order)       
         self.knob2.setFloatPrecision(0)     
         self.sizer.Add(self.knob2)
 
         self.knob3 = PluginKnob(self, 0.5, 10, 1, size=(43,70), log=False, outFunction=self.onChangeKnob3, label='Q')        
-        self.knob3.setName('plugin_%d_filter_q' % self.order)       
-        self.knob3.setLongLabel('plugin %d Filter Q' % (self.order+1))       
+        self.knob3.setName(self.knobNameTemplates[2] % self.order)       
         self.sizer.Add(self.knob3)
 
-        plugChoiceText = wx.StaticText(self, -1, 'Effects:')
-        plugChoiceText.SetFont(wx.Font(CONTROLSLIDER_FONT, wx.ROMAN, wx.NORMAL, wx.NORMAL, face=FONT_FACE))
-        plugChoiceText.SetForegroundColour(TEXT_LABELFORWIDGET_COLOUR)
-        revMenuBox.Add(plugChoiceText, 0, wx.TOP, 0)
+        self.setKnobLabels()
+
+        self.createHeadBox()
+        revMenuBox.Add(self.headBox, 0, wx.TOP, 0)
         self.choice = CustomMenu(self, choice=PLUGINS_CHOICE, init='Filter', size=(93,18), colour=PLUGINPOPUP_BACK_COLOUR, outFunction=self.replacePlugin)
         self.choice.SetToolTip(CECTooltip(TT_POST_ITEMS))
         revMenuBox.Add(self.choice, 0, wx.TOP, 2)
@@ -439,29 +540,27 @@ class EQPlugin(Plugin):
     def __init__(self, parent, choiceFunc, order):
         Plugin.__init__(self, parent, choiceFunc, order)
         self.pluginName = 'Para EQ'
+        self.knobNameTemplates = ['plugin_%d_eq_freq', 'plugin_%d_eq_q', 'plugin_%d_eq_gain']
         self.sizer = wx.FlexGridSizer(1,4,0,0)
         revMenuBox = wx.BoxSizer(wx.VERTICAL)
 
         self.knob1 = PluginKnob(self, 20, 18000, 1000, size=(43,70), log=True, outFunction=self.onChangeKnob1, label='Freq')
-        self.knob1.setName('plugin_%d_eq_freq' % self.order)       
-        self.knob1.setLongLabel('plugin %d EQ Freq' % (self.order+1))       
+        self.knob1.setName(self.knobNameTemplates[0] % self.order)       
         self.knob1.setFloatPrecision(0)     
         self.sizer.Add(self.knob1)
 
         self.knob2 = PluginKnob(self, .5, 10, 1, size=(43,70), log=False, outFunction=self.onChangeKnob2, label='Q')
-        self.knob2.setName('plugin_%d_eq_q' % self.order)
-        self.knob2.setLongLabel('plugin %d EQ Q' % (self.order+1))
+        self.knob2.setName(self.knobNameTemplates[1] % self.order)
         self.sizer.Add(self.knob2)
 
         self.knob3 = PluginKnob(self, -48, 18, -3, size=(43,70), log=False, outFunction=self.onChangeKnob3, label='Gain')
-        self.knob3.setName('plugin_%d_eq_gain' % self.order)       
-        self.knob3.setLongLabel('plugin %d EQ Gain' % (self.order+1))       
+        self.knob3.setName(self.knobNameTemplates[2] % self.order)       
         self.sizer.Add(self.knob3)
 
-        plugChoiceText = wx.StaticText(self, -1, 'Effects:')
-        plugChoiceText.SetFont(wx.Font(CONTROLSLIDER_FONT, wx.ROMAN, wx.NORMAL, wx.NORMAL, face=FONT_FACE))
-        plugChoiceText.SetForegroundColour(TEXT_LABELFORWIDGET_COLOUR)
-        revMenuBox.Add(plugChoiceText, 0, wx.TOP, 0)
+        self.setKnobLabels()
+
+        self.createHeadBox()
+        revMenuBox.Add(self.headBox, 0, wx.TOP, 0)
         self.choice = CustomMenu(self, choice=PLUGINS_CHOICE, init='Para EQ', size=(93,18), colour=PLUGINPOPUP_BACK_COLOUR, outFunction=self.replacePlugin)
         self.choice.SetToolTip(CECTooltip(TT_POST_ITEMS))
         revMenuBox.Add(self.choice, 0, wx.TOP, 2)
@@ -482,31 +581,29 @@ class EQ3BPlugin(Plugin):
     def __init__(self, parent, choiceFunc, order):
         Plugin.__init__(self, parent, choiceFunc, order)
         self.pluginName = '3 Bands EQ'
+        self.knobNameTemplates = ['plugin_%d_eq3b_low', 'plugin_%d_eq3b_mid', 'plugin_%d_eq3b_high']
         self.sizer = wx.FlexGridSizer(1,4,0,0)
         revMenuBox = wx.BoxSizer(wx.VERTICAL)
 
         self.knob1 = PluginKnob(self, -60, 18, 0, size=(43,70), log=False, outFunction=self.onChangeKnob1, label='Low')
-        self.knob1.setName('plugin_%d_eq3b_low' % self.order)       
-        self.knob1.setLongLabel('plugin %d 3 Bands EQ Low' % (self.order+1))
+        self.knob1.setName(self.knobNameTemplates[0] % self.order)       
         self.knob1.setFloatPrecision(2)
         self.sizer.Add(self.knob1)
 
         self.knob2 = PluginKnob(self, -60, 18, 0, size=(43,70), log=False, outFunction=self.onChangeKnob2, label='Mid')        
-        self.knob2.setName('plugin_%d_eq3b_mid' % self.order)       
-        self.knob2.setLongLabel('plugin %d 3 Bands EQ Mid' % (self.order+1))  
+        self.knob2.setName(self.knobNameTemplates[1] % self.order)       
         self.knob2.setFloatPrecision(2)
         self.sizer.Add(self.knob2)
 
         self.knob3 = PluginKnob(self, -60, 18, 0, size=(43,70), log=False, outFunction=self.onChangeKnob3, label='High')        
-        self.knob3.setName('plugin_%d_eq3b_high' % self.order)       
-        self.knob3.setLongLabel('plugin %d 3 Bands EQ High' % (self.order+1))       
+        self.knob3.setName(self.knobNameTemplates[2] % self.order)       
         self.knob3.setFloatPrecision(2)
         self.sizer.Add(self.knob3)
 
-        plugChoiceText = wx.StaticText(self, -1, 'Effects:')
-        plugChoiceText.SetFont(wx.Font(CONTROLSLIDER_FONT, wx.ROMAN, wx.NORMAL, wx.NORMAL, face=FONT_FACE))
-        plugChoiceText.SetForegroundColour(TEXT_LABELFORWIDGET_COLOUR)
-        revMenuBox.Add(plugChoiceText, 0, wx.TOP, 0)
+        self.setKnobLabels()
+
+        self.createHeadBox()
+        revMenuBox.Add(self.headBox, 0, wx.TOP, 0)
         self.choice = CustomMenu(self, choice=PLUGINS_CHOICE, init='3 Bands EQ', size=(93,18), colour=PLUGINPOPUP_BACK_COLOUR, outFunction=self.replacePlugin)
         self.choice.SetToolTip(CECTooltip(TT_POST_ITEMS))
         revMenuBox.Add(self.choice, 0, wx.TOP, 2)
@@ -527,28 +624,26 @@ class ChorusPlugin(Plugin):
     def __init__(self, parent, choiceFunc, order):
         Plugin.__init__(self, parent, choiceFunc, order)
         self.pluginName = 'Chorus'
+        self.knobNameTemplates = ['plugin_%d_chorus_mix', 'plugin_%d_chorus_depth', 'plugin_%d_chorus_feed']
         self.sizer = wx.FlexGridSizer(1,4,0,0)
         revMenuBox = wx.BoxSizer(wx.VERTICAL)
 
         self.knob1 = PluginKnob(self, 0, 1, 0.5, size=(43,70), log=False, outFunction=self.onChangeKnob1, label='Mix')
-        self.knob1.setName('plugin_%d_chorus_mix' % self.order)       
-        self.knob1.setLongLabel('plugin %d Chorus Mix' % (self.order+1))       
+        self.knob1.setName(self.knobNameTemplates[0] % self.order)       
         self.sizer.Add(self.knob1)
 
         self.knob2 = PluginKnob(self, 0.001, 5., 0.2, size=(43,70), log=False, outFunction=self.onChangeKnob2, label='Depth')        
-        self.knob2.setName('plugin_%d_chorus_depth' % self.order)       
-        self.knob2.setLongLabel('plugin %d Chorus Depth' % (self.order+1))  
+        self.knob2.setName(self.knobNameTemplates[1] % self.order)       
         self.sizer.Add(self.knob2)
 
         self.knob3 = PluginKnob(self, 0, 1, .5, size=(43,70), log=False, outFunction=self.onChangeKnob3, label='Feed')        
-        self.knob3.setName('plugin_%d_chorus_feed' % self.order)       
-        self.knob3.setLongLabel('plugin %d Chorus Feed' % (self.order+1))       
+        self.knob3.setName(self.knobNameTemplates[2] % self.order)       
         self.sizer.Add(self.knob3)
 
-        plugChoiceText = wx.StaticText(self, -1, 'Effects:')
-        plugChoiceText.SetFont(wx.Font(CONTROLSLIDER_FONT, wx.ROMAN, wx.NORMAL, wx.NORMAL, face=FONT_FACE))
-        plugChoiceText.SetForegroundColour(TEXT_LABELFORWIDGET_COLOUR)
-        revMenuBox.Add(plugChoiceText, 0, wx.TOP, 0)
+        self.setKnobLabels()
+
+        self.createHeadBox()
+        revMenuBox.Add(self.headBox, 0, wx.TOP, 0)
         self.choice = CustomMenu(self, choice=PLUGINS_CHOICE, init='Chorus', size=(93,18), colour=PLUGINPOPUP_BACK_COLOUR, outFunction=self.replacePlugin)
         self.choice.SetToolTip(CECTooltip(TT_POST_ITEMS))
         revMenuBox.Add(self.choice, 0, wx.TOP, 2)
@@ -569,30 +664,28 @@ class CompressPlugin(Plugin):
     def __init__(self, parent, choiceFunc, order):
         Plugin.__init__(self, parent, choiceFunc, order)
         self.pluginName = 'Compress'
+        self.knobNameTemplates = ['plugin_%d_comp_thresh', 'plugin_%d_comp_ratio', 'plugin_%d_comp_gain']
         self.sizer = wx.FlexGridSizer(1,4,0,0)
         revMenuBox = wx.BoxSizer(wx.VERTICAL)
 
         self.knob1 = PluginKnob(self, -80, 0, -20, size=(43,70), log=False, outFunction=self.onChangeKnob1, label='Thresh')
-        self.knob1.setName('plugin_%d_comp_thresh' % self.order)       
-        self.knob1.setLongLabel('plugin %d Compress Thresh' % (self.order+1))       
+        self.knob1.setName(self.knobNameTemplates[0] % self.order)       
         self.knob1.setFloatPrecision(1)     
         self.sizer.Add(self.knob1)
 
         self.knob2 = PluginKnob(self, 0.125, 20, 3, size=(43,70), log=False, outFunction=self.onChangeKnob2, label='Ratio')        
-        self.knob2.setName('plugin_%d_comp_ratio' % self.order)       
-        self.knob2.setLongLabel('plugin %d Compress Ratio' % (self.order+1))  
+        self.knob2.setName(self.knobNameTemplates[1] % self.order)       
         self.knob2.setFloatPrecision(3)
         self.sizer.Add(self.knob2)
 
         self.knob3 = PluginKnob(self, -36, 36, 0, size=(43,70), log=False, outFunction=self.onChangeKnob3, label='Gain')        
-        self.knob3.setName('plugin_%d_comp_gain' % self.order)       
-        self.knob3.setLongLabel('plugin %d Compress Gain' % (self.order+1))       
+        self.knob3.setName(self.knobNameTemplates[2] % self.order)       
         self.sizer.Add(self.knob3)
 
-        plugChoiceText = wx.StaticText(self, -1, 'Effects:')
-        plugChoiceText.SetFont(wx.Font(CONTROLSLIDER_FONT, wx.ROMAN, wx.NORMAL, wx.NORMAL, face=FONT_FACE))
-        plugChoiceText.SetForegroundColour(TEXT_LABELFORWIDGET_COLOUR)
-        revMenuBox.Add(plugChoiceText, 0, wx.TOP, 0)
+        self.setKnobLabels()
+
+        self.createHeadBox()
+        revMenuBox.Add(self.headBox, 0, wx.TOP, 0)
         self.choice = CustomMenu(self, choice=PLUGINS_CHOICE, init='Compress', size=(93,18), colour=PLUGINPOPUP_BACK_COLOUR, outFunction=self.replacePlugin)
         self.choice.SetToolTip(CECTooltip(TT_POST_ITEMS))
         revMenuBox.Add(self.choice, 0, wx.TOP, 2)
@@ -613,28 +706,26 @@ class GatePlugin(Plugin):
     def __init__(self, parent, choiceFunc, order):
         Plugin.__init__(self, parent, choiceFunc, order)
         self.pluginName = 'Gate'
+        self.knobNameTemplates = ['plugin_%d_gate_thresh', 'plugin_%d_gate_rise', 'plugin_%d_gate_fall']
         self.sizer = wx.FlexGridSizer(1,4,0,0)
         revMenuBox = wx.BoxSizer(wx.VERTICAL)
 
         self.knob1 = PluginKnob(self, -120, 0, -70, size=(43,70), log=False, outFunction=self.onChangeKnob1, label='Thresh')
-        self.knob1.setName('plugin_%d_gate_thresh' % self.order)       
-        self.knob1.setLongLabel('plugin %d Gate Thresh' % (self.order+1))       
+        self.knob1.setName(self.knobNameTemplates[0] % self.order)       
         self.sizer.Add(self.knob1)
 
         self.knob2 = PluginKnob(self, 0.0005, .5, 0.005, size=(43,70), log=True, outFunction=self.onChangeKnob2, label='Rise')        
-        self.knob2.setName('plugin_%d_gate_rise' % self.order)       
-        self.knob2.setLongLabel('plugin %d Gate Rise' % (self.order+1))  
+        self.knob2.setName(self.knobNameTemplates[1] % self.order)       
         self.sizer.Add(self.knob2)
 
         self.knob3 = PluginKnob(self, 0.0005, .5, .01, size=(43,70), log=True, outFunction=self.onChangeKnob3, label='Fall')        
-        self.knob3.setName('plugin_%d_gate_fall' % self.order)       
-        self.knob3.setLongLabel('plugin %d Gate Fall' % (self.order+1))       
+        self.knob3.setName(self.knobNameTemplates[2] % self.order)       
         self.sizer.Add(self.knob3)
 
-        plugChoiceText = wx.StaticText(self, -1, 'Effects:')
-        plugChoiceText.SetFont(wx.Font(CONTROLSLIDER_FONT, wx.ROMAN, wx.NORMAL, wx.NORMAL, face=FONT_FACE))
-        plugChoiceText.SetForegroundColour(TEXT_LABELFORWIDGET_COLOUR)
-        revMenuBox.Add(plugChoiceText, 0, wx.TOP, 0)
+        self.setKnobLabels()
+
+        self.createHeadBox()
+        revMenuBox.Add(self.headBox, 0, wx.TOP, 0)
         self.choice = CustomMenu(self, choice=PLUGINS_CHOICE, init='Gate', size=(93,18), colour=PLUGINPOPUP_BACK_COLOUR, outFunction=self.replacePlugin)
         self.choice.SetToolTip(CECTooltip(TT_POST_ITEMS))
         revMenuBox.Add(self.choice, 0, wx.TOP, 2)
@@ -655,28 +746,26 @@ class DistoPlugin(Plugin):
     def __init__(self, parent, choiceFunc, order):
         Plugin.__init__(self, parent, choiceFunc, order)
         self.pluginName = 'Disto'
+        self.knobNameTemplates = ['plugin_%d_disto_drive', 'plugin_%d_disto_slope', 'plugin_%d_disto_gain']
         self.sizer = wx.FlexGridSizer(1,4,0,0)
         revMenuBox = wx.BoxSizer(wx.VERTICAL)
 
         self.knob1 = PluginKnob(self, 0, 1, .7, size=(43,70), log=False, outFunction=self.onChangeKnob1, label='Drive')
-        self.knob1.setName('plugin_%d_disto_drive' % self.order)       
-        self.knob1.setLongLabel('plugin %d Disto Drive' % (self.order+1))       
+        self.knob1.setName(self.knobNameTemplates[0] % self.order)       
         self.sizer.Add(self.knob1)
 
         self.knob2 = PluginKnob(self, 0, 1, .7, size=(43,70), log=False, outFunction=self.onChangeKnob2, label='Slope')        
-        self.knob2.setName('plugin_%d_disto_slope' % self.order)       
-        self.knob2.setLongLabel('plugin %d Disto Slope' % (self.order+1))  
+        self.knob2.setName(self.knobNameTemplates[1] % self.order)       
         self.sizer.Add(self.knob2)
 
         self.knob3 = PluginKnob(self, -60, 0, -12, size=(43,70), log=False, outFunction=self.onChangeKnob3, label='Gain')        
-        self.knob3.setName('plugin_%d_disto_gain' % self.order)       
-        self.knob3.setLongLabel('plugin %d Disto Gain' % (self.order+1))       
+        self.knob3.setName(self.knobNameTemplates[2] % self.order)       
         self.sizer.Add(self.knob3)
 
-        plugChoiceText = wx.StaticText(self, -1, 'Effects:')
-        plugChoiceText.SetFont(wx.Font(CONTROLSLIDER_FONT, wx.ROMAN, wx.NORMAL, wx.NORMAL, face=FONT_FACE))
-        plugChoiceText.SetForegroundColour(TEXT_LABELFORWIDGET_COLOUR)
-        revMenuBox.Add(plugChoiceText, 0, wx.TOP, 0)
+        self.setKnobLabels()
+
+        self.createHeadBox()
+        revMenuBox.Add(self.headBox, 0, wx.TOP, 0)
         self.choice = CustomMenu(self, choice=PLUGINS_CHOICE, init='Disto', size=(93,18), colour=PLUGINPOPUP_BACK_COLOUR, outFunction=self.replacePlugin)
         self.choice.SetToolTip(CECTooltip(TT_POST_ITEMS))
         revMenuBox.Add(self.choice, 0, wx.TOP, 2)
@@ -697,28 +786,26 @@ class AmpModPlugin(Plugin):
     def __init__(self, parent, choiceFunc, order):
         Plugin.__init__(self, parent, choiceFunc, order)
         self.pluginName = 'AmpMod'
+        self.knobNameTemplates = ['plugin_%d_ampmod_freq', 'plugin_%d_ampmod_amp', 'plugin_%d_ampmod_stereo']
         self.sizer = wx.FlexGridSizer(1,4,0,0)
         revMenuBox = wx.BoxSizer(wx.VERTICAL)
 
         self.knob1 = PluginKnob(self, 0.01, 1000, 8, size=(43,70), log=True, outFunction=self.onChangeKnob1, label='Freq')
-        self.knob1.setName('plugin_%d_ampmod_freq' % self.order)       
-        self.knob1.setLongLabel('plugin %d AmpMod Freq' % (self.order+1))       
+        self.knob1.setName(self.knobNameTemplates[0] % self.order)       
         self.sizer.Add(self.knob1)
 
         self.knob2 = PluginKnob(self, 0, 1, 1, size=(43,70), log=False, outFunction=self.onChangeKnob2, label='Amp')        
-        self.knob2.setName('plugin_%d_ampmod_amp' % self.order)       
-        self.knob2.setLongLabel('plugin %d AmpMod Amp' % (self.order+1))  
+        self.knob2.setName(self.knobNameTemplates[1] % self.order)       
         self.sizer.Add(self.knob2)
 
         self.knob3 = PluginKnob(self, 0, 0.5, 0, size=(43,70), log=False, outFunction=self.onChangeKnob3, label='Stereo')        
-        self.knob3.setName('plugin_%d_ampmod_stereo' % self.order)       
-        self.knob3.setLongLabel('plugin %d AmpMod Stereo' % (self.order+1))       
+        self.knob3.setName(self.knobNameTemplates[2] % self.order)       
         self.sizer.Add(self.knob3)
 
-        plugChoiceText = wx.StaticText(self, -1, 'Effects:')
-        plugChoiceText.SetFont(wx.Font(CONTROLSLIDER_FONT, wx.ROMAN, wx.NORMAL, wx.NORMAL, face=FONT_FACE))
-        plugChoiceText.SetForegroundColour(TEXT_LABELFORWIDGET_COLOUR)
-        revMenuBox.Add(plugChoiceText, 0, wx.TOP, 0)
+        self.setKnobLabels()
+
+        self.createHeadBox()
+        revMenuBox.Add(self.headBox, 0, wx.TOP, 0)
         self.choice = CustomMenu(self, choice=PLUGINS_CHOICE, init='AmpMod', size=(93,18), colour=PLUGINPOPUP_BACK_COLOUR, outFunction=self.replacePlugin)
         self.choice.SetToolTip(CECTooltip(TT_POST_ITEMS))
         revMenuBox.Add(self.choice, 0, wx.TOP, 2)
@@ -739,29 +826,27 @@ class PhaserPlugin(Plugin):
     def __init__(self, parent, choiceFunc, order):
         Plugin.__init__(self, parent, choiceFunc, order)
         self.pluginName = 'Phaser'
+        self.knobNameTemplates = ['plugin_%d_phaser_freq', 'plugin_%d_phaser_q', 'plugin_%d_phaser_spread']
         self.sizer = wx.FlexGridSizer(1,4,0,0)
         revMenuBox = wx.BoxSizer(wx.VERTICAL)
 
         self.knob1 = PluginKnob(self, 20, 1000, 100, size=(43,70), log=True, outFunction=self.onChangeKnob1, label='Freq')
-        self.knob1.setName('plugin_%d_phaser_freq' % self.order)       
-        self.knob1.setLongLabel('plugin %d Phaser Freq' % (self.order+1))       
+        self.knob1.setName(self.knobNameTemplates[0] % self.order)       
         self.knob1.setFloatPrecision(2)     
         self.sizer.Add(self.knob1)
 
         self.knob2 = PluginKnob(self, 1, 20, 5, size=(43,70), log=False, outFunction=self.onChangeKnob2, label='Q')        
-        self.knob2.setName('plugin_%d_phaser_q' % self.order)       
-        self.knob2.setLongLabel('plugin %d Phaser Q' % (self.order+1))  
+        self.knob2.setName(self.knobNameTemplates[1] % self.order)       
         self.sizer.Add(self.knob2)
 
         self.knob3 = PluginKnob(self, .5, 2, 1.1, size=(43,70), log=False, outFunction=self.onChangeKnob3, label='Spread')        
-        self.knob3.setName('plugin_%d_phaser_spread' % self.order)       
-        self.knob3.setLongLabel('plugin %d Phaser Spread' % (self.order+1))       
+        self.knob3.setName(self.knobNameTemplates[2] % self.order)       
         self.sizer.Add(self.knob3)
 
-        plugChoiceText = wx.StaticText(self, -1, 'Effects:')
-        plugChoiceText.SetFont(wx.Font(CONTROLSLIDER_FONT, wx.ROMAN, wx.NORMAL, wx.NORMAL, face=FONT_FACE))
-        plugChoiceText.SetForegroundColour(TEXT_LABELFORWIDGET_COLOUR)
-        revMenuBox.Add(plugChoiceText, 0, wx.TOP, 0)
+        self.setKnobLabels()
+
+        self.createHeadBox()
+        revMenuBox.Add(self.headBox, 0, wx.TOP, 0)
         self.choice = CustomMenu(self, choice=PLUGINS_CHOICE, init='Phaser', size=(93,18), colour=PLUGINPOPUP_BACK_COLOUR, outFunction=self.replacePlugin)
         self.choice.SetToolTip(CECTooltip(TT_POST_ITEMS))
         revMenuBox.Add(self.choice, 0, wx.TOP, 2)
@@ -782,28 +867,26 @@ class DelayPlugin(Plugin):
     def __init__(self, parent, choiceFunc, order):
         Plugin.__init__(self, parent, choiceFunc, order)
         self.pluginName = 'Delay'
+        self.knobNameTemplates = ['plugin_%d_delay_delay', 'plugin_%d_delay_feed', 'plugin_%d_delay_mix']
         self.sizer = wx.FlexGridSizer(1,4,0,0)
         revMenuBox = wx.BoxSizer(wx.VERTICAL)
 
         self.knob1 = PluginKnob(self, 0.01, 1, .1, size=(43,70), log=False, outFunction=self.onChangeKnob1, label='Delay')
-        self.knob1.setName('plugin_%d_delay_delay' % self.order)       
-        self.knob1.setLongLabel('plugin %d Delay Delay' % (self.order+1))       
+        self.knob1.setName(self.knobNameTemplates[0] % self.order)       
         self.sizer.Add(self.knob1)
 
         self.knob2 = PluginKnob(self, 0, .999, 0, size=(43,70), log=False, outFunction=self.onChangeKnob2, label='Feed')        
-        self.knob2.setName('plugin_%d_delay_feed' % self.order)       
-        self.knob2.setLongLabel('plugin %d Delay Feed' % (self.order+1))  
+        self.knob2.setName(self.knobNameTemplates[1] % self.order)       
         self.sizer.Add(self.knob2)
 
         self.knob3 = PluginKnob(self, 0, 1, 0.5, size=(43,70), log=False, outFunction=self.onChangeKnob3, label='Mix')        
-        self.knob3.setName('plugin_%d_delay_mix' % self.order)       
-        self.knob3.setLongLabel('plugin %d Delay Mix' % (self.order+1))       
+        self.knob3.setName(self.knobNameTemplates[2] % self.order)       
         self.sizer.Add(self.knob3)
 
-        plugChoiceText = wx.StaticText(self, -1, 'Effects:')
-        plugChoiceText.SetFont(wx.Font(CONTROLSLIDER_FONT, wx.ROMAN, wx.NORMAL, wx.NORMAL, face=FONT_FACE))
-        plugChoiceText.SetForegroundColour(TEXT_LABELFORWIDGET_COLOUR)
-        revMenuBox.Add(plugChoiceText, 0, wx.TOP, 0)
+        self.setKnobLabels()
+
+        self.createHeadBox()
+        revMenuBox.Add(self.headBox, 0, wx.TOP, 0)
         self.choice = CustomMenu(self, choice=PLUGINS_CHOICE, init='Delay', size=(93,18), colour=PLUGINPOPUP_BACK_COLOUR, outFunction=self.replacePlugin)
         self.choice.SetToolTip(CECTooltip(TT_POST_ITEMS))
         revMenuBox.Add(self.choice, 0, wx.TOP, 2)
@@ -824,28 +907,26 @@ class FlangePlugin(Plugin):
     def __init__(self, parent, choiceFunc, order):
         Plugin.__init__(self, parent, choiceFunc, order)
         self.pluginName = 'Flange'
+        self.knobNameTemplates = ['plugin_%d_flange_depth', 'plugin_%d_flange_freq', 'plugin_%d_flange_feed']
         self.sizer = wx.FlexGridSizer(1,4,0,0)
         revMenuBox = wx.BoxSizer(wx.VERTICAL)
 
         self.knob1 = PluginKnob(self, 0.001, .99, .5, size=(43,70), log=False, outFunction=self.onChangeKnob1, label='Depth')
-        self.knob1.setName('plugin_%d_flange_depth' % self.order)       
-        self.knob1.setLongLabel('plugin %d Flange Depth' % (self.order+1))       
+        self.knob1.setName(self.knobNameTemplates[0] % self.order)       
         self.sizer.Add(self.knob1)
 
         self.knob2 = PluginKnob(self, 0.005, 20, 1, size=(43,70), log=True, outFunction=self.onChangeKnob2, label='Freq')        
-        self.knob2.setName('plugin_%d_flange_freq' % self.order)       
-        self.knob2.setLongLabel('plugin %d Flange Freq' % (self.order+1))  
+        self.knob2.setName(self.knobNameTemplates[1] % self.order)       
         self.sizer.Add(self.knob2)
 
         self.knob3 = PluginKnob(self, 0, .999, 0.5, size=(43,70), log=False, outFunction=self.onChangeKnob3, label='Feed')        
-        self.knob3.setName('plugin_%d_flange_feed' % self.order)       
-        self.knob3.setLongLabel('plugin %d Flange Feed' % (self.order+1))       
+        self.knob3.setName(self.knobNameTemplates[2] % self.order)       
         self.sizer.Add(self.knob3)
 
-        plugChoiceText = wx.StaticText(self, -1, 'Effects:')
-        plugChoiceText.SetFont(wx.Font(CONTROLSLIDER_FONT, wx.ROMAN, wx.NORMAL, wx.NORMAL, face=FONT_FACE))
-        plugChoiceText.SetForegroundColour(TEXT_LABELFORWIDGET_COLOUR)
-        revMenuBox.Add(plugChoiceText, 0, wx.TOP, 0)
+        self.setKnobLabels()
+
+        self.createHeadBox()
+        revMenuBox.Add(self.headBox, 0, wx.TOP, 0)
         self.choice = CustomMenu(self, choice=PLUGINS_CHOICE, init='Flange', size=(93,18), colour=PLUGINPOPUP_BACK_COLOUR, outFunction=self.replacePlugin)
         self.choice.SetToolTip(CECTooltip(TT_POST_ITEMS))
         revMenuBox.Add(self.choice, 0, wx.TOP, 2)
@@ -866,28 +947,26 @@ class HarmonizerPlugin(Plugin):
     def __init__(self, parent, choiceFunc, order):
         Plugin.__init__(self, parent, choiceFunc, order)
         self.pluginName = 'Harmonizer'
+        self.knobNameTemplates = ['plugin_%d_harmonizer_transpo', 'plugin_%d_harmonizer_feed', 'plugin_%d_harmonizer_mix']
         self.sizer = wx.FlexGridSizer(1,4,0,0)
         revMenuBox = wx.BoxSizer(wx.VERTICAL)
 
         self.knob1 = PluginKnob(self, -24, 24, -7, size=(43,70), log=False, outFunction=self.onChangeKnob1, label='Transpo')
-        self.knob1.setName('plugin_%d_harmonizer_transpo' % self.order)       
-        self.knob1.setLongLabel('plugin %d Harmonizer Transpo' % (self.order+1))       
+        self.knob1.setName(self.knobNameTemplates[0] % self.order)       
         self.sizer.Add(self.knob1)
 
         self.knob2 = PluginKnob(self, 0, .999, 0, size=(43,70), log=False, outFunction=self.onChangeKnob2, label='Feed')        
-        self.knob2.setName('plugin_%d_harmonizer_feed' % self.order)       
-        self.knob2.setLongLabel('plugin %d Harmonizer Feed' % (self.order+1))  
+        self.knob2.setName(self.knobNameTemplates[1] % self.order)       
         self.sizer.Add(self.knob2)
 
         self.knob3 = PluginKnob(self, 0, 1, 0.5, size=(43,70), log=False, outFunction=self.onChangeKnob3, label='Mix')        
-        self.knob3.setName('plugin_%d_harmonizer_mix' % self.order)       
-        self.knob3.setLongLabel('plugin %d Harmonizer Mix' % (self.order+1))       
+        self.knob3.setName(self.knobNameTemplates[2] % self.order)       
         self.sizer.Add(self.knob3)
 
-        plugChoiceText = wx.StaticText(self, -1, 'Effects:')
-        plugChoiceText.SetFont(wx.Font(CONTROLSLIDER_FONT, wx.ROMAN, wx.NORMAL, wx.NORMAL, face=FONT_FACE))
-        plugChoiceText.SetForegroundColour(TEXT_LABELFORWIDGET_COLOUR)
-        revMenuBox.Add(plugChoiceText, 0, wx.TOP, 0)
+        self.setKnobLabels()
+
+        self.createHeadBox()
+        revMenuBox.Add(self.headBox, 0, wx.TOP, 0)
         self.choice = CustomMenu(self, choice=PLUGINS_CHOICE, init='Harmonizer', size=(93,18), colour=PLUGINPOPUP_BACK_COLOUR, outFunction=self.replacePlugin)
         self.choice.SetToolTip(CECTooltip(TT_POST_ITEMS))
         revMenuBox.Add(self.choice, 0, wx.TOP, 2)
@@ -909,29 +988,27 @@ class ResonatorsPlugin(Plugin):
     def __init__(self, parent, choiceFunc, order):
         Plugin.__init__(self, parent, choiceFunc, order)
         self.pluginName = 'Resonators'
+        self.knobNameTemplates = ['plugin_%d_resonators_freq', 'plugin_%d_resonators_spread', 'plugin_%d_resonators_mix']
         self.sizer = wx.FlexGridSizer(1,4,0,0)
         revMenuBox = wx.BoxSizer(wx.VERTICAL)
 
         self.knob1 = PluginKnob(self, 20, 1000, 80, size=(43,70), log=True, outFunction=self.onChangeKnob1, label='Freq')
-        self.knob1.setName('plugin_%d_resonators_freq' % self.order)       
-        self.knob1.setLongLabel('plugin %d Resonators Freq' % (self.order+1))       
+        self.knob1.setName(self.knobNameTemplates[0] % self.order)       
         self.knob1.setFloatPrecision(2)     
         self.sizer.Add(self.knob1)
 
         self.knob2 = PluginKnob(self, .25, 4, 2.01, size=(43,70), log=False, outFunction=self.onChangeKnob2, label='Spread')        
-        self.knob2.setName('plugin_%d_resonators_spread' % self.order)       
-        self.knob2.setLongLabel('plugin %d Resonators Spread' % (self.order+1))  
+        self.knob2.setName(self.knobNameTemplates[1] % self.order)       
         self.sizer.Add(self.knob2)
 
         self.knob3 = PluginKnob(self, 0, 1, 0.33, size=(43,70), log=False, outFunction=self.onChangeKnob3, label='Mix')        
-        self.knob3.setName('plugin_%d_resonators_mix' % self.order)       
-        self.knob3.setLongLabel('plugin %d Resonators Mix' % (self.order+1))       
+        self.knob3.setName(self.knobNameTemplates[2] % self.order)       
         self.sizer.Add(self.knob3)
 
-        plugChoiceText = wx.StaticText(self, -1, 'Effects:')
-        plugChoiceText.SetFont(wx.Font(CONTROLSLIDER_FONT, wx.ROMAN, wx.NORMAL, wx.NORMAL, face=FONT_FACE))
-        plugChoiceText.SetForegroundColour(TEXT_LABELFORWIDGET_COLOUR)
-        revMenuBox.Add(plugChoiceText, 0, wx.TOP, 0)
+        self.setKnobLabels()
+
+        self.createHeadBox()
+        revMenuBox.Add(self.headBox, 0, wx.TOP, 0)
         self.choice = CustomMenu(self, choice=PLUGINS_CHOICE, init='Resonators', size=(93,18), colour=PLUGINPOPUP_BACK_COLOUR, outFunction=self.replacePlugin)
         self.choice.SetToolTip(CECTooltip(TT_POST_ITEMS))
         revMenuBox.Add(self.choice, 0, wx.TOP, 2)
@@ -952,29 +1029,27 @@ class DeadResonPlugin(Plugin):
     def __init__(self, parent, choiceFunc, order):
         Plugin.__init__(self, parent, choiceFunc, order)
         self.pluginName = 'DeadReson'
+        self.knobNameTemplates = ['plugin_%d_deadresonators_freq', 'plugin_%d_deadresonators_detune', 'plugin_%d_deadresonators_mix']
         self.sizer = wx.FlexGridSizer(1,4,0,0)
         revMenuBox = wx.BoxSizer(wx.VERTICAL)
 
         self.knob1 = PluginKnob(self, 20, 1000, 80, size=(43,70), log=True, outFunction=self.onChangeKnob1, label='Freq')
-        self.knob1.setName('plugin_%d_deadresonators_freq' % self.order)       
-        self.knob1.setLongLabel('plugin %d DeadReson Freq' % (self.order+1))       
+        self.knob1.setName(self.knobNameTemplates[0] % self.order)       
         self.knob1.setFloatPrecision(2)     
         self.sizer.Add(self.knob1)
 
         self.knob2 = PluginKnob(self, 0, 1, 0.5, size=(43,70), log=False, outFunction=self.onChangeKnob2, label='Detune')        
-        self.knob2.setName('plugin_%d_deadresonators_detune' % self.order)       
-        self.knob2.setLongLabel('plugin %d DeadReson Detune' % (self.order+1))  
+        self.knob2.setName(self.knobNameTemplates[1] % self.order)       
         self.sizer.Add(self.knob2)
 
         self.knob3 = PluginKnob(self, 0, 1, 0.33, size=(43,70), log=False, outFunction=self.onChangeKnob3, label='Mix')        
-        self.knob3.setName('plugin_%d_deadresonators_mix' % self.order)       
-        self.knob3.setLongLabel('plugin %d DeadReson Mix' % (self.order+1))       
+        self.knob3.setName(self.knobNameTemplates[2] % self.order)       
         self.sizer.Add(self.knob3)
 
-        plugChoiceText = wx.StaticText(self, -1, 'Effects:')
-        plugChoiceText.SetFont(wx.Font(CONTROLSLIDER_FONT, wx.ROMAN, wx.NORMAL, wx.NORMAL, face=FONT_FACE))
-        plugChoiceText.SetForegroundColour(TEXT_LABELFORWIDGET_COLOUR)
-        revMenuBox.Add(plugChoiceText, 0, wx.TOP, 0)
+        self.setKnobLabels()
+
+        self.createHeadBox()
+        revMenuBox.Add(self.headBox, 0, wx.TOP, 0)
         self.choice = CustomMenu(self, choice=PLUGINS_CHOICE, init='DeadReson', size=(93,18), colour=PLUGINPOPUP_BACK_COLOUR, outFunction=self.replacePlugin)
         self.choice.SetToolTip(CECTooltip(TT_POST_ITEMS))
         revMenuBox.Add(self.choice, 0, wx.TOP, 2)
@@ -990,3 +1065,43 @@ class DeadResonPlugin(Plugin):
 
         self.sizer.Add(revMenuBox, 0, wx.LEFT, 5)
         self.SetSizer(self.sizer)
+
+class ChaosModPlugin(Plugin):
+    def __init__(self, parent, choiceFunc, order):
+        Plugin.__init__(self, parent, choiceFunc, order)
+        self.pluginName = 'ChaosMod'
+        self.knobNameTemplates = ['plugin_%d_chaosmod_freq', 'plugin_%d_chaosmod_amp', 'plugin_%d_chaosmod_amp']
+        self.sizer = wx.FlexGridSizer(1,4,0,0)
+        revMenuBox = wx.BoxSizer(wx.VERTICAL)
+
+        self.knob1 = PluginKnob(self, 0.001, 1, 0.025, size=(43,70), log=True, outFunction=self.onChangeKnob1, label='Speed')
+        self.knob1.setName(self.knobNameTemplates[0] % self.order)       
+        self.sizer.Add(self.knob1)
+
+        self.knob2 = PluginKnob(self, 0, 1, 0.5, size=(43,70), log=False, outFunction=self.onChangeKnob2, label='Chaos')    
+        self.knob2.setName(self.knobNameTemplates[1] % self.order)       
+        self.sizer.Add(self.knob2)
+
+        self.knob3 = PluginKnob(self, 0, 1, 1, size=(43,70), log=False, outFunction=self.onChangeKnob3, label='Amp')        
+        self.knob3.setName(self.knobNameTemplates[2] % self.order)       
+        self.sizer.Add(self.knob3)
+
+        self.setKnobLabels()
+
+        self.createHeadBox()
+        revMenuBox.Add(self.headBox, 0, wx.TOP, 0)
+        self.choice = CustomMenu(self, choice=PLUGINS_CHOICE, init='ChaosMod', size=(93,18), colour=PLUGINPOPUP_BACK_COLOUR, outFunction=self.replacePlugin)
+        self.choice.SetToolTip(CECTooltip(TT_POST_ITEMS))
+        revMenuBox.Add(self.choice, 0, wx.TOP, 2)
+
+        plugChoicePreset = wx.StaticText(self, -1, 'Type:')
+        plugChoicePreset.SetFont(wx.Font(CONTROLSLIDER_FONT, wx.ROMAN, wx.NORMAL, wx.NORMAL, face=FONT_FACE))
+        plugChoicePreset.SetForegroundColour(TEXT_LABELFORWIDGET_COLOUR)
+        revMenuBox.Add(plugChoicePreset, 0, wx.TOP, 6)
+        self.preset = CustomMenu(self, choice=['Bypass', 'Lorenz', 'Rossler'], init='Rossler', size=(93,18), 
+                                colour=CONTROLLABEL_BACK_COLOUR, outFunction=self.onChangePreset)
+        self.presetName = 'plugin_%d_chaosmod_preset' % self.order                     
+        revMenuBox.Add(self.preset, 0, wx.TOP, 2)
+
+        self.sizer.Add(revMenuBox, 0, wx.LEFT, 5)
+        self.SetSizer(self.sizer)
diff --git a/Resources/PreferencePanel.py b/Resources/PreferencePanel.py
index fc23435..358d6fc 100644
--- a/Resources/PreferencePanel.py
+++ b/Resources/PreferencePanel.py
@@ -35,7 +35,7 @@ class PreferenceFrame(wx.Frame):
         self.font = wx.Font(MENU_FONT, wx.NORMAL, wx.NORMAL, wx.NORMAL, face=FONT_FACE)
 
         if CeciliaLib.getVar("systemPlatform")  in ['win32', 'linux2']:
-            self.SetSize((350, 328))
+            self.SetSize((350, 388))
             
         if wx.Platform == '__WXGTK__':
             self.Bind(wx.EVT_WINDOW_CREATE, self.SetRoundShape)
@@ -54,6 +54,7 @@ class PreferenceFrame(wx.Frame):
         self.panelTitles = ['  Paths', '  Audio', '    Midi', 'Export', 'Cecilia']
         choice = PreferencesRadioToolBox(panel, size=(125,25), outFunction=self.onPageChange)
         self.panelTitle = wx.StaticText(panel, -1, 'Paths')
+        self.panelTitle.SetForegroundColour(PREFS_FOREGROUND)
         self.panelTitle.SetFont(self.font)
         headerSizer.AddMany([(choice, 0, wx.LEFT, 1), (self.panelTitle, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 90)])
                                         
@@ -84,14 +85,18 @@ class PreferenceFrame(wx.Frame):
         box.AddSpacer(10)
         closerBox = wx.BoxSizer(wx.HORIZONTAL)
         closer = CloseBox(panel, outFunction=self.onClose)
-        closerBox.Add(closer, 0, wx.LEFT, 290)
-        box.Add(closerBox, 0, wx.TOP, 35)
+        closerBox.Add(closer, 0, wx.LEFT, 288)
+        if CeciliaLib.getVar("systemPlatform") == 'win32':
+            box.Add(closerBox, 0, wx.TOP, 85)
+        else:
+            box.Add(closerBox, 0, wx.TOP, 95)
         box.AddSpacer(10)
+        box.Add(Separator(panel), 0, wx.EXPAND)
 
         panel.SetSizerAndFit(box)
 
     def SetRoundShape(self, event=None):
-        self.SetShape(GetRoundShape(350, 328, 1))
+        self.SetShape(GetRoundShape(350, 388, 1))
 
     def onClose(self, event=None):
         CeciliaLib.writeVarToDisk()
@@ -104,50 +109,55 @@ class PreferenceFrame(wx.Frame):
         self.panelsBox.Replace(self.panels[self.currentPane], self.panels[index])
         self.currentPane = index
         self.panelTitle.SetLabel(self.panelTitles[self.currentPane])
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
                     
     def createPathsPanel(self, panel):
         pathsPanel = wx.Panel(panel)
         pathsPanel.SetBackgroundColour(BACKGROUND_COLOUR)
         gridSizer = wx.FlexGridSizer(2,2,2,5)
 
-        #Soundfile Player
+        # Soundfile Player
         textSfPlayerLabel = wx.StaticText(pathsPanel, -1, 'Soundfile Player :')
+        textSfPlayerLabel.SetForegroundColour(PREFS_FOREGROUND)
         textSfPlayerLabel.SetFont(self.font)       
         self.textSfPlayerPath = wx.TextCtrl(pathsPanel, -1, CeciliaLib.getVar("soundfilePlayer"), size=(274,16), style=wx.TE_PROCESS_ENTER|wx.NO_BORDER)
         self.textSfPlayerPath.SetFont(self.font)       
         self.textSfPlayerPath.Bind(wx.EVT_TEXT_ENTER, self.handleEditPlayerPath)
-        self.textSfPlayerPath.SetForegroundColour((50,50,50))
-        self.textSfPlayerPath.SetBackgroundColour("#999999")
+        self.textSfPlayerPath.SetForegroundColour(PREFS_FOREGROUND)
+        self.textSfPlayerPath.SetBackgroundColour(PREFS_PATH_BACKGROUND)
         buttonSfPlayerPath = CloseBox(pathsPanel, outFunction=self.changeSfPlayer, label='Set...')
 
-        #Soundfile Editor
+        # Soundfile Editor
         textSfEditorLabel = wx.StaticText(pathsPanel, -1, 'Soundfile Editor :')
+        textSfEditorLabel.SetForegroundColour(PREFS_FOREGROUND)
         textSfEditorLabel.SetFont(self.font)       
         self.textSfEditorPath = wx.TextCtrl(pathsPanel, -1, CeciliaLib.getVar("soundfileEditor"), size=(274,16), style=wx.TE_PROCESS_ENTER|wx.NO_BORDER)
         self.textSfEditorPath.SetFont(self.font)       
         self.textSfEditorPath.Bind(wx.EVT_TEXT_ENTER, self.handleEditEditorPath)
-        self.textSfEditorPath.SetForegroundColour((50,50,50))
-        self.textSfEditorPath.SetBackgroundColour("#999999")
+        self.textSfEditorPath.SetForegroundColour(PREFS_FOREGROUND)
+        self.textSfEditorPath.SetBackgroundColour(PREFS_PATH_BACKGROUND)
         buttonSfEditorPath = CloseBox(pathsPanel, outFunction=self.changeSfEditor, label='Set...')
 
-        #Text Editor
+        # Text Editor
         textTxtEditorLabel = wx.StaticText(pathsPanel, -1, 'Text Editor :')
+        textTxtEditorLabel.SetForegroundColour(PREFS_FOREGROUND)
         textTxtEditorLabel.SetFont(self.font)       
         self.textTxtEditorPath = wx.TextCtrl(pathsPanel, -1, CeciliaLib.getVar("textEditor"), size=(274,16), style=wx.TE_PROCESS_ENTER|wx.NO_BORDER)
         self.textTxtEditorPath.SetFont(self.font)       
         self.textTxtEditorPath.Bind(wx.EVT_TEXT_ENTER, self.handleEditTextEditorPath)
-        self.textTxtEditorPath.SetForegroundColour((50,50,50))
-        self.textTxtEditorPath.SetBackgroundColour("#999999")
+        self.textTxtEditorPath.SetForegroundColour(PREFS_FOREGROUND)
+        self.textTxtEditorPath.SetBackgroundColour(PREFS_PATH_BACKGROUND)
         buttonTxtEditorPath = CloseBox(pathsPanel, outFunction=self.changeTxtEditor, label='Set...')
 
+        # Preferred Paths
         textPrefPathLabel = wx.StaticText(pathsPanel, -1, 'Preferred paths :')
+        textPrefPathLabel.SetForegroundColour(PREFS_FOREGROUND)
         textPrefPathLabel.SetFont(self.font)       
         self.textPrefPath = wx.TextCtrl(pathsPanel, -1, CeciliaLib.getVar("prefferedPath"), size=(274,16), style=wx.TE_PROCESS_ENTER|wx.NO_BORDER)
         self.textPrefPath.SetFont(self.font)       
         self.textPrefPath.Bind(wx.EVT_TEXT_ENTER, self.handleEditPrefPath)
-        self.textPrefPath.SetForegroundColour((50,50,50))
-        self.textPrefPath.SetBackgroundColour("#999999")
+        self.textPrefPath.SetForegroundColour(PREFS_FOREGROUND)
+        self.textPrefPath.SetBackgroundColour(PREFS_PATH_BACKGROUND)
         buttonPrefPath = CloseBox(pathsPanel, outFunction=self.addPrefPath, label='Add...')
 
         gridSizer.AddMany([ 
@@ -180,12 +190,14 @@ class PreferenceFrame(wx.Frame):
         gridSizer = wx.FlexGridSizer(4,3,10,3)
 
         textTotalTime = wx.StaticText(ceciliaPanel, 0, 'Total time default (sec) :')
+        textTotalTime.SetForegroundColour(PREFS_FOREGROUND)
         textTotalTime.SetFont(self.font)       
         self.choiceTotalTime = CustomMenu(ceciliaPanel, size=(80,20), 
                                     choice= ["10.0", "30.0", "60.0", "120.0", "300.0", "600.0", "1200.0", "2400.0", "3600.0"],
                                     init=str(CeciliaLib.getVar("defaultTotalTime")), outFunction=self.changeDefaultTotalTime)
 
         textGlobalFade = wx.StaticText(ceciliaPanel, 0, 'Global fadein/fadeout (sec) :')
+        textGlobalFade.SetForegroundColour(PREFS_FOREGROUND)
         textGlobalFade.SetFont(self.font)       
         self.choiceGlobalFade = CustomMenu(ceciliaPanel, size=(80,20),
                                     choice= ["0.0", "0.001", "0.002", "0.003", "0.004", "0.005", "0.01", "0.015", "0.02",
@@ -193,19 +205,22 @@ class PreferenceFrame(wx.Frame):
                                     init=str(CeciliaLib.getVar("globalFade")), outFunction=self.changeGlobalFade)
 
         textUseTooltips = wx.StaticText(ceciliaPanel, 0, 'Use tooltips :')
+        textUseTooltips.SetForegroundColour(PREFS_FOREGROUND)
         textUseTooltips.SetFont(self.font)       
         self.tooltipsToggle = Toggle(ceciliaPanel, CeciliaLib.getVar("useTooltips"), outFunction=self.enableTooltips)
 
         textgraphTexture = wx.StaticText(ceciliaPanel, 0, 'Use grapher texture :')
+        textgraphTexture.SetForegroundColour(PREFS_FOREGROUND)
         textgraphTexture.SetFont(self.font)       
         self.textureToggle = Toggle(ceciliaPanel, CeciliaLib.getVar("graphTexture"), outFunction=self.enableGraphTexture)
 
         textVerbose = wx.StaticText(ceciliaPanel, 0, 'Verbose :')
+        textVerbose.SetForegroundColour(PREFS_FOREGROUND)
         textVerbose.SetFont(self.font)       
         self.verboseToggle = Toggle(ceciliaPanel, CeciliaLib.getVar("DEBUG"), outFunction=self.enableVerbose)
 
         if sys.platform == "linux2":
-            spacerSize = 70
+            spacerSize = 82
         else:
             spacerSize = 86
         gridSizer.AddMany([ 
@@ -237,12 +252,14 @@ class PreferenceFrame(wx.Frame):
 
         # File Format
         textFileFormat = wx.StaticText(fileExportPanel, 0, 'File Format :')
+        textFileFormat.SetForegroundColour(PREFS_FOREGROUND)
         textFileFormat.SetFont(self.font)       
-        self.choiceFileFormat = CustomMenu(fileExportPanel, choice=AUDIO_FILE_FORMATS, 
+        self.choiceFileFormat = CustomMenu(fileExportPanel, choice=sorted(AUDIO_FILE_FORMATS.keys()), 
                                       init=CeciliaLib.getVar("audioFileType"), outFunction=self.changeFileType)
         
         # Bit depth
         textBD = wx.StaticText(fileExportPanel, 0, 'Bit Depth :')
+        textBD.SetForegroundColour(PREFS_FOREGROUND)
         textBD.SetFont(self.font)       
         self.choiceBD = CustomMenu(fileExportPanel, choice=sorted(BIT_DEPTHS.keys()), outFunction=self.changeSampSize)
         for item in BIT_DEPTHS.items():
@@ -251,7 +268,7 @@ class PreferenceFrame(wx.Frame):
  
         gridSizer.AddMany([ 
                             (textFileFormat, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, PADDING),
-                            (wx.StaticText(fileExportPanel, -1, '', size=(125,-1)), 1, wx.EXPAND),
+                            (wx.StaticText(fileExportPanel, -1, '', size=(153,-1)), 1, wx.EXPAND),
                             (self.choiceFileFormat, 0, wx.ALIGN_CENTER_VERTICAL),
                             (textBD, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, PADDING),
                             (wx.StaticText(fileExportPanel, -1, ''), 1, wx.EXPAND),
@@ -271,13 +288,14 @@ class PreferenceFrame(wx.Frame):
         gridSizer1 = wx.FlexGridSizer(5, 3, 5, 5)
         # Audio driver
         textInOutConfig = wx.StaticText(midiParamPanel, 0, 'Midi Driver :')
+        textInOutConfig.SetForegroundColour(PREFS_FOREGROUND)
         textInOutConfig.SetFont(self.font)       
         self.midiDriverChoice = CustomMenu(midiParamPanel, choice=['PortMidi'], 
                                        init='PortMidi', outFunction=self.onMidiDriverPageChange)
 
         gridSizer1.AddMany([ 
                             (textInOutConfig, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, PADDING),
-                            (self.midiDriverChoice, 1, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 155),
+                            (self.midiDriverChoice, 1, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 156),
                             ])
 
         self.midiDriverBox = wx.BoxSizer(wx.VERTICAL)
@@ -291,11 +309,12 @@ class PreferenceFrame(wx.Frame):
 
         gridSizer2 = wx.FlexGridSizer(5, 3, 5, 5)
         textAutoBinding = wx.StaticText(midiParamPanel, 0, 'Automatic Midi Bindings :')
+        textAutoBinding.SetForegroundColour(PREFS_FOREGROUND)
         textAutoBinding.SetFont(self.font)       
         self.autoMidiToggle = Toggle(midiParamPanel, CeciliaLib.getVar("automaticMidiBinding"), outFunction=self.enableAutomaticBinding)
         gridSizer2.AddMany([ 
                             (textAutoBinding, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, PADDING),
-                            (self.autoMidiToggle, 1, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 170),
+                            (self.autoMidiToggle, 1, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 163),
                             ])
 
         gridSizer1.AddGrowableCol(1, 1)
@@ -314,22 +333,17 @@ class PreferenceFrame(wx.Frame):
         box = wx.BoxSizer(wx.VERTICAL)
 
         gridSizer1 = wx.FlexGridSizer(5, 3, 5, 5)
+
         # Audio driver
         textInOutConfig = wx.StaticText(audioParamPanel, 0, 'Audio Driver :')
+        textInOutConfig.SetForegroundColour(PREFS_FOREGROUND)
         textInOutConfig.SetFont(self.font)       
         self.driverChoice = CustomMenu(audioParamPanel, choice=AUDIO_DRIVERS, 
-                                       init=CeciliaLib.getVar("audioHostAPI"), outFunction=self.onDriverPageChange)
-        # self.updatePortaudioButton = CloseBox(audioParamPanel, outFunction=self.updateAudioInOut, label='Update')
-        # if self.driverChoice.getLabel() == 'portaudio':
-        #     self.updatePortaudioButton.Show()
-        # else:    
-        #     self.updatePortaudioButton.Hide()
+                                       init=CeciliaLib.getVar("audioHostAPI"), 
+                                       outFunction=self.onDriverPageChange)
         
-        gridSizer1.AddMany([ 
-                            (textInOutConfig, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, PADDING),
-                            (self.driverChoice, 1, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 147),
-                            #(self.updatePortaudioButton, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 0),
-                            ])
+        gridSizer1.AddMany([(textInOutConfig, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, PADDING),
+                            (self.driverChoice, 1, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 147)])
         
         # Audio driver panels
         self.driverBox = wx.BoxSizer(wx.VERTICAL)
@@ -353,12 +367,14 @@ class PreferenceFrame(wx.Frame):
 
         # Sample precision
         textSamplePrecision = wx.StaticText(audioParamPanel, 0, 'Sample Precision :')
+        textSamplePrecision.SetForegroundColour(PREFS_FOREGROUND)
         textSamplePrecision.SetFont(self.font)       
         self.choiceSamplePrecision = CustomMenu(audioParamPanel, choice=['32 bit', '64 bit'], 
                                       init=CeciliaLib.getVar("samplePrecision"), outFunction=self.changeSamplePrecision)
         
         # Bit depth
         textBufferSize = wx.StaticText(audioParamPanel, 0, 'Buffer Size :')
+        textBufferSize.SetForegroundColour(PREFS_FOREGROUND)
         textBufferSize.SetFont(self.font)       
         self.choiceBufferSize = CustomMenu(audioParamPanel, choice=['64','128','256','512','1024','2048'], 
                                            init=CeciliaLib.getVar("bufferSize"), outFunction=self.changeBufferSize)
@@ -366,19 +382,35 @@ class PreferenceFrame(wx.Frame):
                        
         # Number of channels        
         textNCHNLS = wx.StaticText(audioParamPanel, 0, 'Default # of channels :')
+        textNCHNLS.SetForegroundColour(PREFS_FOREGROUND)
         textNCHNLS.SetFont(self.font)       
         self.choiceNCHNLS = CustomMenu(audioParamPanel, choice=[str(x) for x in range(1,37)], 
-                            init=CeciliaLib.getVar("defaultNchnls"), outFunction=self.changeNchnls)
+                            init=str(CeciliaLib.getVar("defaultNchnls")), outFunction=self.changeNchnls)
  
         # Sampling rate
         textSR = wx.StaticText(audioParamPanel, 0, 'Sample Rate :')
+        textSR.SetForegroundColour(PREFS_FOREGROUND)
         textSR.SetFont(self.font)       
         self.comboSR = CustomMenu(audioParamPanel, choice=SAMPLE_RATES, 
                             init=str(CeciliaLib.getVar("sr")), outFunction=self.changeSr)        
-                
+
+        # First physical input        
+        textFPI = wx.StaticText(audioParamPanel, 0, 'First Physical Input :')
+        textFPI.SetForegroundColour(PREFS_FOREGROUND)
+        textFPI.SetFont(self.font)       
+        self.choiceFPI = CustomMenu(audioParamPanel, choice=[str(x) for x in range(36)], 
+                            init=str(CeciliaLib.getVar("defaultFirstInput")), outFunction=self.changeFPI)
+
+        # First physical output        
+        textFPO = wx.StaticText(audioParamPanel, 0, 'First Physical Output :')
+        textFPO.SetForegroundColour(PREFS_FOREGROUND)
+        textFPO.SetFont(self.font)       
+        self.choiceFPO = CustomMenu(audioParamPanel, choice=[str(x) for x in range(36)], 
+                            init=str(CeciliaLib.getVar("defaultFirstOutput")), outFunction=self.changeFPO)
+
         gridSizer3.AddMany([ 
                             (textSamplePrecision, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, PADDING),
-                            (wx.StaticText(audioParamPanel, -1, '', size=(98,-1)), 1, wx.EXPAND),
+                            (wx.StaticText(audioParamPanel, -1, '', size=(89,-1)), 1, wx.EXPAND),
                             (self.choiceSamplePrecision, 0, wx.ALIGN_CENTER_VERTICAL),
                             (textBufferSize, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, PADDING),
                             (wx.StaticText(audioParamPanel, -1, ''), 1, wx.EXPAND),
@@ -389,6 +421,12 @@ class PreferenceFrame(wx.Frame):
                             (textSR, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, PADDING),
                             (wx.StaticText(audioParamPanel, -1, ''), 1, wx.EXPAND),
                             (self.comboSR, 0, wx.ALIGN_CENTER_VERTICAL),
+                            (textFPI, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, PADDING),
+                            (wx.StaticText(audioParamPanel, -1, ''), 1, wx.EXPAND),
+                            (self.choiceFPI, 0, wx.ALIGN_CENTER_VERTICAL),
+                            (textFPO, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, PADDING),
+                            (wx.StaticText(audioParamPanel, -1, ''), 1, wx.EXPAND),
+                            (self.choiceFPO, 0, wx.ALIGN_CENTER_VERTICAL),
                          ])
         
         gridSizer1.AddGrowableCol(1, 1)
@@ -408,6 +446,7 @@ class PreferenceFrame(wx.Frame):
         gridSizer = wx.FlexGridSizer(5, 3, 5, 5)
         # Input
         textIn = wx.StaticText(portmidiPanel, 0, 'Input Device :')
+        textIn.SetForegroundColour(PREFS_FOREGROUND)
         textIn.SetFont(self.font)
         availableMidiIns = []
         for d in CeciliaLib.getVar("availableMidiInputs"):
@@ -424,7 +463,7 @@ class PreferenceFrame(wx.Frame):
 
         gridSizer.AddMany([ 
                             (textIn, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, PADDING),
-                             (wx.StaticText(portmidiPanel, -1, '', size=(74,-1)), 1, wx.EXPAND),
+                             (wx.StaticText(portmidiPanel, -1, '', size=(72,-1)), 1, wx.EXPAND),
                             (self.midiChoiceInput, 0, wx.ALIGN_CENTER_VERTICAL),
                             ])
                             
@@ -439,6 +478,7 @@ class PreferenceFrame(wx.Frame):
         gridSizer = wx.FlexGridSizer(5, 3, 5, 5)
         # Input
         textIn = wx.StaticText(portaudioPanel, 0, 'Input Device :')
+        textIn.SetForegroundColour(PREFS_FOREGROUND)
         textIn.SetFont(self.font)
         availableAudioIns = []
         for d in CeciliaLib.getVar("availableAudioInputs"):
@@ -460,6 +500,7 @@ class PreferenceFrame(wx.Frame):
         
         # Output
         textOut = wx.StaticText(portaudioPanel, 0, 'Output Device :')
+        textOut.SetForegroundColour(PREFS_FOREGROUND)
         textOut.SetFont(self.font)
         availableAudioOuts = []
         for d in CeciliaLib.getVar("availableAudioOutputs"):
@@ -476,10 +517,10 @@ class PreferenceFrame(wx.Frame):
         
         gridSizer.AddMany([ 
                             (textIn, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, PADDING),
-                            (self.inputToggle, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 45),
+                            (self.inputToggle, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, 43),
                             (self.choiceInput, 0, wx.ALIGN_CENTER_VERTICAL),
                             (textOut, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, PADDING),
-                            (wx.StaticText(portaudioPanel, -1, '', size=(65,-1)), 1, wx.EXPAND),
+                            (wx.StaticText(portaudioPanel, -1, '', size=(63,-1)), 1, wx.EXPAND),
                             (self.choiceOutput, 0, wx.ALIGN_CENTER_VERTICAL),
                             ])
         gridSizer.AddGrowableCol(1, 1)
@@ -496,23 +537,24 @@ class PreferenceFrame(wx.Frame):
         gridSizer = wx.FlexGridSizer(3, 3, 5, 5)
         
         jackClientLabel = wx.StaticText(jackPanel, -1, 'Jack client :')
+        jackClientLabel.SetForegroundColour(PREFS_FOREGROUND)
         jackClientLabel.SetFont(self.font)       
         self.jackClient = wx.TextCtrl(jackPanel, -1, CeciliaLib.getVar("jack")['client'], size=(235,-1), style=wx.TE_PROCESS_ENTER|wx.NO_BORDER)
         self.jackClient.SetFont(self.font)       
         self.jackClient.Bind(wx.EVT_TEXT_ENTER, self.changeJackClient)
-        self.jackClient.SetForegroundColour((50,50,50))
-        self.jackClient.SetBackgroundColour("#999999")
+        self.jackClient.SetForegroundColour(PREFS_FOREGROUND)
+        self.jackClient.SetBackgroundColour(PREFS_PATH_BACKGROUND)
 
         gridSizer.AddMany([ 
                             (jackClientLabel, 0, wx.LEFT | wx.ALIGN_CENTER_VERTICAL, PADDING),
-                            (wx.StaticText(jackPanel, -1, '', size=(15,-1)), 1, wx.EXPAND),
+                            (wx.StaticText(jackPanel, -1, '', size=(17,-1)), 1, wx.EXPAND),
                             (self.jackClient, 0, wx.ALIGN_CENTER_VERTICAL),
-                            (wx.StaticText(jackPanel, -1, '', size=(15,-1)), 1, wx.EXPAND),
-                            (wx.StaticText(jackPanel, -1, '', size=(15,-1)), 1, wx.EXPAND),
-                            (wx.StaticText(jackPanel, -1, '', size=(15,-1)), 1, wx.EXPAND),
-                            (wx.StaticText(jackPanel, -1, '', size=(15,-1)), 1, wx.EXPAND),
-                            (wx.StaticText(jackPanel, -1, '', size=(15,-1)), 1, wx.EXPAND),
-                            (wx.StaticText(jackPanel, -1, '', size=(15,-1)), 1, wx.EXPAND),
+                            (wx.StaticText(jackPanel, -1, '', size=(17,-1)), 1, wx.EXPAND),
+                            (wx.StaticText(jackPanel, -1, '', size=(17,-1)), 1, wx.EXPAND),
+                            (wx.StaticText(jackPanel, -1, '', size=(17,-1)), 1, wx.EXPAND),
+                            (wx.StaticText(jackPanel, -1, '', size=(17,-1)), 1, wx.EXPAND),
+                            (wx.StaticText(jackPanel, -1, '', size=(17,-1)), 1, wx.EXPAND),
+                            (wx.StaticText(jackPanel, -1, '', size=(17,-1)), 1, wx.EXPAND),
                          ])
         
         gridSizer.AddGrowableCol(1, 1)
@@ -526,7 +568,7 @@ class PreferenceFrame(wx.Frame):
         self.driverPanels[label].SetPosition(self.driverBox.GetPosition())
         self.driverBox.Replace(self.driverPanels[self.driverCurrentPane], self.driverPanels[label])
         self.driverCurrentPane = label
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def onMidiDriverPageChange(self, index, label):
         pass
@@ -626,6 +668,12 @@ class PreferenceFrame(wx.Frame):
         CeciliaLib.setVar("nchnls", nchnls)
         CeciliaLib.updateNchnlsDevices()
 
+    def changeFPI(self, index, choice):
+        CeciliaLib.setVar("defaultFirstInput", index)
+
+    def changeFPO(self, index, choice):
+        CeciliaLib.setVar("defaultFirstOutput", index)
+        
     def changeJackClient(self, event):
         CeciliaLib.setJackParams(client=event.GetString())
 
diff --git a/Resources/Sliders.py b/Resources/Sliders.py
index 8a1ac6d..6f1f868 100644
--- a/Resources/Sliders.py
+++ b/Resources/Sliders.py
@@ -96,7 +96,7 @@ class PlayRecButtons(wx.Panel):
                 self.setOverWait(1)
             self.playOver = False
             self.recOver = False
-            self.Refresh()
+            wx.CallAfter(self.Refresh)
             evt.Skip()
 
     def OnEnter(self, evt):
@@ -113,7 +113,7 @@ class PlayRecButtons(wx.Panel):
                     self.setRec(True)
             self.playOver = False
             self.recOver = False
-            self.Refresh()
+            wx.CallAfter(self.Refresh)
             evt.Skip()
 
     def MouseUp(self, evt):
@@ -129,7 +129,7 @@ class PlayRecButtons(wx.Panel):
                 self.playOver = False
                 self.recOver = True
             self.checkForOverReady(pos)
-            self.Refresh()
+            wx.CallAfter(self.Refresh)
             evt.Skip()
 
     def OnLeave(self, evt):
@@ -138,7 +138,7 @@ class PlayRecButtons(wx.Panel):
         self.recOver = False
         self.playOverWait = True
         self.recOverWait = True
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         evt.Skip()
 
     def OnPaint(self, evt):
@@ -182,7 +182,7 @@ class PlayRecButtons(wx.Panel):
             if self.rec:
                 self.setRec(0)
             self.playColour = SLIDER_PLAY_COLOUR_NO_BIND
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def getPlay(self):
         return self.play
@@ -274,14 +274,14 @@ class Slider(wx.Panel):
         self.pos = clamp(evt.GetPosition()[0], self.knobHalfSize, size[0]-self.knobHalfSize)
         self.value = self.scale()
         self.CaptureMouse()
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def MouseMotion(self, evt):
         size = self.GetSize()
         if evt.Dragging() and evt.LeftIsDown() and self.HasCapture():
             self.pos = clamp(evt.GetPosition()[0], self.knobHalfSize, size[0]-self.knobHalfSize)
             self.value = self.scale()
-            self.Refresh()
+            wx.CallAfter(self.Refresh)
                    
     def MouseUp(self, evt):
         if self.HasCapture():
@@ -295,7 +295,7 @@ class Slider(wx.Panel):
         self.createBackgroundBitmap()
         self.createKnobMaskBitmap()
         self.clampPos()    
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def clampPos(self):
         size = self.GetSize()
@@ -342,7 +342,7 @@ class HSlider(Slider):
         self.createKnobMaskBitmap()
         self.createBackgroundBitmap()
         self.createKnobBitmap()
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def createBackgroundBitmap(self):
         w,h = self.GetSize()
@@ -382,7 +382,7 @@ class HSlider(Slider):
 
     def inMidiLearnMode(self):
         self.midiLearn = True
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def setOpenSndCtrl(self, str):
         self.openSndCtrl = str
@@ -456,6 +456,7 @@ class CECSlider:
         self.automationData = []
         self.path = None
         self.openSndCtrl = None
+        self.OSCOut = None
         self.midictl = None
         self.midichan = 1
         self.minvalue = minvalue
@@ -476,7 +477,11 @@ class CECSlider:
 
         self.label = Label(parent, label, size=(100,16), outFunction=self.onLabelClick, dclickFunction=self.onLabelDClick)
         self.label.SetToolTip(CECTooltip(TT_SLIDER_LABEL))
-        self.entryUnit = EntryUnit(parent, self.slider.GetValue(), unit, size=(120,16),
+        if self.half:
+            unitX = 100
+        else:
+            unitX = 120
+        self.entryUnit = EntryUnit(parent, self.slider.GetValue(), unit, size=(unitX,16),
                                    valtype=valtype, outFunction=self.entryReturn)
         self.entryUnit.SetToolTip(CECTooltip(TT_SLIDER_DISPLAY))                           
         self.buttons = PlayRecButtons(parent, self, size=(40,16))
@@ -515,6 +520,9 @@ class CECSlider:
     def setOSCInput(self, value):
         self.setOpenSndCtrl(value)
 
+    def setOSCOutput(self, value):
+        self.setOSCOut(value)
+
     def setConvertSliderValue(self, x, end=None):
         self.convertSliderValue = x
 
@@ -583,7 +591,7 @@ class CECSlider:
         return self.buttons.getRec()
 
     def getState(self):
-        return [self.getValue(), self.getPlay(), self.getMidiCtl(), self.getMidiChannel(), self.getOpenSndCtrl()]
+        return [self.getValue(), self.getPlay(), self.getMidiCtl(), self.getMidiChannel(), self.getOpenSndCtrl(), self.getOSCOut()]
 
     def setState(self, values):
         self.setValue(values[0])
@@ -594,6 +602,9 @@ class CECSlider:
         if len(values) >= 5:
             if values[4] != None:
                 self.setOpenSndCtrl("%d:%s" % (values[4][0], values[4][1]))
+        if len(values) >= 6:
+            if values[5] != None:
+                self.setOSCOut("%s:%d:%s" % (values[5][0], values[5][1], values[5][2]))
 
     def getPath(self):
         return self.path
@@ -638,9 +649,23 @@ class CECSlider:
                 self.slider.setOpenSndCtrl("%d:%s" % (port, address))
                 self.setMidiCtl(None)
 
+    def setOSCOut(self, value):
+        if value != None:
+            if value == "":
+                self.OSCOut = None
+            else:
+                sep = value.split(":")
+                host = str(sep[0].strip())
+                port = int(sep[1].strip())
+                address = str(sep[2].strip())
+                self.OSCOut = (host, port, address)
+
     def getOpenSndCtrl(self):
         return self.openSndCtrl
 
+    def getOSCOut(self):
+        return self.OSCOut
+
     def getWithOSC(self):
         if self.openSndCtrl != None:
             return True
@@ -770,7 +795,7 @@ class RangeSlider(wx.Panel):
             self.action = 'drag'
             self.handles = self.scale(self.handlePos)
             self.CaptureMouse()
-            self.Refresh()
+            wx.CallAfter(self.Refresh)
         
     def MouseDown(self, evt):
         size = self.GetSize()
@@ -789,7 +814,7 @@ class RangeSlider(wx.Panel):
             self.action = 'right'
         self.handles = self.scale(self.handlePos)
         self.CaptureMouse()
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def MouseMotion(self, evt):
         size = self.GetSize()
@@ -805,7 +830,7 @@ class RangeSlider(wx.Panel):
             elif self.action == 'right':
                 self.handlePos[1] = clamp(xpos, self.handlePos[0]+1, size[0]-1)
             self.handles = self.scale(self.handlePos)
-            self.Refresh()
+            wx.CallAfter(self.Refresh)
 
     def MouseUp(self, evt):
         if self.HasCapture():
@@ -817,7 +842,7 @@ class RangeSlider(wx.Panel):
         self.createSliderBitmap()
         self.createBackgroundBitmap()
         self.clampHandlePos()
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def clampHandlePos(self):
         size = self.GetSize()
@@ -847,7 +872,7 @@ class HRangeSlider(RangeSlider):
         self.sliderHeight = height
         self.createSliderBitmap()
         self.createBackgroundBitmap()
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def createBackgroundBitmap(self):
         w,h = self.GetSize()
@@ -875,7 +900,7 @@ class HRangeSlider(RangeSlider):
 
     def inMidiLearnMode(self):
         self.midiLearn = True
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def setOpenSndCtrl(self, str, side):
         if side == 'left':
@@ -987,6 +1012,7 @@ class CECRange:
         self.midictl = None
         self.midichan = [1,1]
         self.openSndCtrl = None
+        self.OSCOut = None
 
         pos = (0,0)
         size = (200,16)
@@ -1042,6 +1068,9 @@ class CECRange:
     def setOSCInput(self, value, side):
         self.setOpenSndCtrl(value, side)
 
+    def setOSCOutput(self, value, side):
+        self.setOSCOut(value, side)
+
     def setConvertSliderValue(self, x, end='min'):
         self.convertSliderValue[end] = x
 
@@ -1123,7 +1152,7 @@ class CECRange:
         return self.buttons.getRec()
 
     def getState(self):
-        return [self.getValue(), self.getPlay(), self.getMidiCtl(), self.getMidiChannel(), self.getOpenSndCtrl()]
+        return [self.getValue(), self.getPlay(), self.getMidiCtl(), self.getMidiChannel(), self.getOpenSndCtrl(), self.getOSCOut()]
 
     def setState(self, values):
         self.setValue(values[0])
@@ -1139,6 +1168,14 @@ class CECRange:
                             self.setOpenSndCtrl("%d:%s" % (tup[0], tup[1]), 'left')
                         else:
                             self.setOpenSndCtrl("%d:%s" % (tup[0], tup[1]), 'right')
+        if len(values) >= 6:
+            if values[5] != None:
+                for i, tup in enumerate(values[5]):
+                    if tup != ():
+                        if i == 0:
+                            self.setOSCOut("%s:%d:%s" % (tup[0], tup[1], tup[2]), 'left')
+                        else:
+                            self.setOSCOut("%s:%d:%s" % (tup[0], tup[1], tup[2]), 'right')
 
     def getPath(self):
         return self.path
@@ -1199,9 +1236,38 @@ class CECRange:
                         self.openSndCtrl = (self.openSndCtrl[0], (port, address))
                 self.slider.setOpenSndCtrl("%d:%s" % (port, address), side)
 
+    def setOSCOut(self, value, side='left'):
+        if value != None:
+            if value == "":
+                if self.OSCOut != None:
+                    if side == 'left':
+                        self.OSCOut = ((), self.OSCOut[1])
+                    else:
+                        self.OSCOut = (self.OSCOut[0], ())
+                    if self.OSCOut == ((), ()):
+                        self.OSCOut = None
+            else:
+                sep = value.split(":")
+                host = str(sep[0].strip())
+                port = int(sep[1].strip())
+                address = str(sep[2].strip())
+                if self.OSCOut == None:
+                    if side == 'left':
+                        self.OSCOut = ((host, port, address), ())
+                    else:
+                        self.OSCOut = ((), (host, port, address))
+                else:
+                    if side == 'left':
+                        self.OSCOut = ((host, port, address), self.OSCOut[1])
+                    else:
+                        self.OSCOut = (self.OSCOut[0], (host, port, address))
+                
     def getOpenSndCtrl(self):
         return self.openSndCtrl
 
+    def getOSCOut(self):
+        return self.OSCOut
+
     def getWithOSC(self):
         if self.openSndCtrl != None:
             return True
@@ -1371,7 +1437,7 @@ class SplitterSlider(wx.Panel):
             return
         self.setHandlePosition(xpos)
         self.CaptureMouse()
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def MouseMotion(self, evt):
         size = self.GetSize()
@@ -1379,7 +1445,7 @@ class SplitterSlider(wx.Panel):
             pos = evt.GetPosition()
             xpos = pos[0]
             self.setHandlePosition(xpos)
-            self.Refresh()
+            wx.CallAfter(self.Refresh)
 
     def MouseUp(self, evt):
         if self.HasCapture():
@@ -1391,7 +1457,7 @@ class SplitterSlider(wx.Panel):
         self.createSliderBitmap()
         self.createBackgroundBitmap()
         self.clampHandlePos()
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def clampHandlePos(self):
         size = self.GetSize()
@@ -1421,7 +1487,7 @@ class HSplitterSlider(SplitterSlider):
         self.sliderHeight = height
         self.createSliderBitmap()
         self.createBackgroundBitmap()
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def createBackgroundBitmap(self):
         w,h = self.GetSize()
@@ -1462,7 +1528,7 @@ class HSplitterSlider(SplitterSlider):
 
     def inMidiLearnMode(self):
         self.midiLearn = True
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def SetValue(self, values):
         self.lasthandles = self.handles
diff --git a/Resources/TogglePopup.py b/Resources/TogglePopup.py
index 957c0e2..2d9d271 100644
--- a/Resources/TogglePopup.py
+++ b/Resources/TogglePopup.py
@@ -206,25 +206,22 @@ class CECPoly:
         self.up = 1
         popupLabel = '# of ' + label.capitalize()
         self.popup = CECPopup(parent, popupLabel, values, init, "i", self.name + 'num', colour, tooltip, output=False)
+        chordLabel = label.capitalize() + ' Chords'
+        self.chord = CECPopup(parent, chordLabel, sorted(POLY_CHORDS.keys()), '00 - None', "i", self.name, colour, tooltip, output=False)
         self.popup.label.SetToolTip(CECTooltip(TT_POLY_LABEL))
-        sliderLabel = label.capitalize() + ' Spread'
-        self.slider = PolySlider(parent, self.name, sliderLabel, self.onSlider, colour)
-        self.slider.label.SetToolTip(CECTooltip(TT_POLY_SPREAD))
-        self.slider.setSliderHeight(10)
-        self.slider.setFloatPrecision(4)
-        self.slider.setbackColour(colour[1])
         if tooltip != '':
             self.popup.popup.SetToolTip(CECTooltip(tooltip))
 
+    # to remove...?
     def getValue(self):
         return self.popup.getValue()
 
+    def getChordValue(self):
+        return self.chord.getValue()
+
     def getUp(self):
         return self.up
-   
-    def onSlider(self, value):
-        pass
-        
+
 class SamplerPopup:
     def __init__(self, parent, values, init, name, outFunction=None):
         self.name = name+'loopi'
@@ -388,10 +385,10 @@ def buildTogglePopupBox(parent, list):
         cpoly = CECPoly(parent, label, name, values, init, colour, tooltip)
         box = wx.FlexGridSizer(1,2,2,10)
         box.AddMany([(cpoly.popup.label, 0, wx.TOP | wx.ALIGN_RIGHT, 2), (cpoly.popup.popup, 0, wx.ALIGN_LEFT | wx.TOP, 2),
-                    (cpoly.slider.label, 0, wx.TOP | wx.ALIGN_RIGHT, 2), (cpoly.slider, 0, wx.ALIGN_LEFT | wx.TOP, 6)]) 
+                    (cpoly.chord.label, 0, wx.TOP | wx.ALIGN_RIGHT, 2), (cpoly.chord.popup, 0, wx.ALIGN_LEFT | wx.TOP, 2)])
         mainBox.Add(box, 0, wx.TOP | wx.BOTTOM, 1)
         objects.append(cpoly.popup)
-        objects.append(cpoly.slider)
+        objects.append(cpoly.chord)
 
     outBox.Add(mainBox, 0, wx.ALL, 8)
     return outBox, objects
diff --git a/Resources/Variables.py b/Resources/Variables.py
index ad9dce2..bb0f411 100644
--- a/Resources/Variables.py
+++ b/Resources/Variables.py
@@ -76,7 +76,7 @@ CeciliaVar['interfaceSize'] = (1000, 600)
 CeciliaVar['interfacePosition'] = None
 CeciliaVar['grapher'] = None
 CeciliaVar['gainSlider'] = None
-CeciliaVar['plugins'] = [None, None, None]
+CeciliaVar['plugins'] = [None] * NUM_OF_PLUGINS
 CeciliaVar['userSliders'] = []
 CeciliaVar['userTogglePopups'] = []
 CeciliaVar['userSamplers'] = []
@@ -96,13 +96,15 @@ CeciliaVar['startOffset'] = 0.0
 CeciliaVar['globalFade'] = 0.005
 CeciliaVar['audioServer'] = None
 CeciliaVar['automaticMidiBinding'] = 0
+CeciliaVar['showSpectrum'] = 0
+CeciliaVar['spectrumFrame'] = None
 
 # Server Flags
 CeciliaVar['sr'] = 44100
 CeciliaVar['nchnls'] = 2
 CeciliaVar['defaultNchnls'] = 2
 CeciliaVar['sampSize'] = 0
-CeciliaVar['audioFileType'] = 'aif' # aif, wav, 
+CeciliaVar['audioFileType'] = 'aif' # aif, wav, flac, ogg, sd2, au, caf
 CeciliaVar['samplePrecision'] = '32 bit' # '32 bit', '64 bit'
 CeciliaVar['bufferSize'] = '512'
 CeciliaVar['audioHostAPI'] = 'portaudio'
@@ -110,9 +112,12 @@ CeciliaVar['audioOutput'] = 0
 CeciliaVar['audioInput'] = 0
 CeciliaVar['enableAudioInput'] = 0
 CeciliaVar['useMidi'] = 0
+CeciliaVar['useSoundDur'] = 0
 CeciliaVar['midiPort'] = 'portmidi'
 CeciliaVar['midiDeviceIn'] = 0
-CeciliaVar['jack'] = {'client':'pyo'}
+CeciliaVar['defaultFirstInput'] = 0
+CeciliaVar['defaultFirstOutput'] = 0
+CeciliaVar['jack'] = {'client': 'cecilia5'}
 
 CeciliaVar['lastAudioFiles'] = ""
 
@@ -128,7 +133,8 @@ def readCeciliaPrefsFromFile():
         
         #### Some special cases ####
         convertToInt = ['sr', 'defaultNchnls', 'audioOutput', 'audioInput', 'sampSize', 'automaticMidiBinding',
-                        'midiDeviceIn', 'useTooltips', 'enableAudioInput', 'graphTexture']  
+                        'midiDeviceIn', 'useTooltips', 'enableAudioInput', 'graphTexture', 'showSpectrum', 'useSoundDur',
+                        'defaultFirstInput', 'defaultFirstOutput']  
         convertToFloat = ['defaultTotalTime', 'globalFade', 'DEBUG']                      
         convertToTuple = ['interfaceSize', 'interfacePosition']
         jackPrefs = ['client']
@@ -175,7 +181,8 @@ def writeCeciliaPrefsToFile():
                   'audioInput', 'midiPort', 'midiDeviceIn', 'samplePrecision', 'client', 'graphTexture', 
                   'globalFade', 'bufferSize', 'soundfilePlayer', 'soundfileEditor', 'prefferedPath', 'DEBUG',
                   'openFilePath', 'saveFilePath', 'saveAudioFilePath', 'openAudioFilePath', 'grapherLinePath',
-                  'defaultTotalTime', 'lastAudioFiles', 'automaticMidiBinding']
+                  'defaultTotalTime', 'lastAudioFiles', 'automaticMidiBinding', 'showSpectrum', 'useSoundDur',
+                  'defaultFirstInput', 'defaultFirstOutput']
     
     print('Writing Cecilia preferences...')
     
diff --git a/Resources/Widgets.py b/Resources/Widgets.py
index 84f79ff..d2aa121 100644
--- a/Resources/Widgets.py
+++ b/Resources/Widgets.py
@@ -254,7 +254,7 @@ class MenuFrame(wx.Frame):
         win = wx.FindWindowAtPointer()
         if win != None:
             win = win.GetTopLevelParent()
-            if win in [CeciliaLib.getVar("mainFrame"), CeciliaLib.getVar("interface")]:
+            if win in [CeciliaLib.getVar("mainFrame"), CeciliaLib.getVar("interface"), CeciliaLib.getVar("spectrumFrame")]:
                 win.Raise()
         try:
             self.parent.setLabel(self.choice[self.which], True)
@@ -268,7 +268,7 @@ class MenuFrame(wx.Frame):
             if rec.Contains(pos):
                 self.which = self.rects.index(rec)
                 break
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         event.Skip()
 
     def OnEnter(self, event):
@@ -318,11 +318,13 @@ class FolderPopup(wx.Panel):
         self.Bind(wx.EVT_RIGHT_DOWN, self.MouseRightDown)
         self.backColour = backColour
         self.closed = True
+        self._enable = True
         self.outFunction = outFunction
         self.emptyFunction = emptyFunction
         self.tooltip = tooltip
         self.tip = wx.ToolTip(self.tooltip)
-        self.SetToolTip(self.tip) 
+        if CeciliaLib.getVar("useTooltips"):
+            self.SetToolTip(self.tip) 
         self.choice = []
         self.arrowRect = wx.Rect(110, 0, 20, 20)
         
@@ -333,10 +335,14 @@ class FolderPopup(wx.Panel):
         else:
             self.setLabel('')
 
+    def setEnable(self, enable):
+        self._enable = enable
+        wx.CallAfter(self.Refresh)
+
     def reset(self):
         self.choice = []
         self.setLabel('')
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         
     def setChoice(self, choice):
         self.choice = choice
@@ -356,40 +362,42 @@ class FolderPopup(wx.Panel):
             self.tip.SetTip(self.tooltip)
         else:
             self.tip.SetTip(self.label) 
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         
     def setByIndex(self, ind):
         self.label = self.choice[ind]
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         
     def setBackColour(self, colour):
         self.backColour = colour
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         
     def setClosed(self):
         self.closed = True
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         
     def MouseDown(self, event):
-        off = self.GetScreenPosition()
-        pos = (off[0]+10, off[1]+10)
-        if self.arrowRect.Contains(event.GetPosition()) and self.choice != []:
-            f = FolderMenuFrame(self, pos, self.choice, self.label)
-            self.closed = False
-            self.Refresh()
-        else:
-            if self.emptyFunction:
-                self.emptyFunction()
+        if self._enable:
+            off = self.GetScreenPosition()
+            pos = (off[0]+10, off[1]+10)
+            if self.arrowRect.Contains(event.GetPosition()) and self.choice != []:
+                f = FolderMenuFrame(self, pos, self.choice, self.label)
+                self.closed = False
+                wx.CallAfter(self.Refresh)
+            else:
+                if self.emptyFunction:
+                    self.emptyFunction()
         
     def MouseRightDown(self, event):
-        off = self.GetScreenPosition()
-        pos = (off[0]+10, off[1]+10)
-        lastfiles = CeciliaLib.getVar("lastAudioFiles")
-        if lastfiles != "":
-            lastfiles = lastfiles.split(";")
-            f = FolderMenuFrame(self, pos, lastfiles, lastfiles[0], self.emptyFunction)
-            self.closed = False
-            self.Refresh()
+        if self._enable:
+            off = self.GetScreenPosition()
+            pos = (off[0]+10, off[1]+10)
+            lastfiles = CeciliaLib.getVar("lastAudioFiles")
+            if lastfiles != "":
+                lastfiles = lastfiles.split(";")
+                f = FolderMenuFrame(self, pos, lastfiles, lastfiles[0], self.emptyFunction)
+                self.closed = False
+                wx.CallAfter(self.Refresh)
         
     def OnPaint(self, event):
         w,h = self.GetSize()
@@ -402,8 +410,11 @@ class FolderPopup(wx.Panel):
         dc.SetPen(wx.Pen(BACKGROUND_COLOUR, width=0, style=wx.SOLID))
         dc.DrawRectangle(0, 0, w, h)
 
-        if self.backColour: backColour = self.backColour
-        else: backColour = POPUP_BACK_COLOUR 
+        if self._enable:
+            if self.backColour: backColour = self.backColour
+            else: backColour = POPUP_BACK_COLOUR 
+        else:
+            backColour = POPUP_DISABLE_COLOUR
 
         rec = wx.Rect(0, 0, w, h)
         dc.SetBrush(wx.Brush(backColour))
@@ -524,7 +535,7 @@ class FolderMenuFrame(wx.Frame):
         self.defineArrows()
         self.showArrows()
         self.buildRects()
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
     
     def changePageDown(self):
         self.currPage -= 1
@@ -535,7 +546,7 @@ class FolderMenuFrame(wx.Frame):
         self.defineArrows()
         self.showArrows()
         self.buildRects()
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def SetRoundShape(self, event=None):
         w, h = self.GetSizeTuple()
@@ -649,7 +660,7 @@ class FolderMenuFrame(wx.Frame):
                     self.which = None
                     self.arrowOver = None
         
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         event.Skip()
 
 #---------------------------
@@ -672,12 +683,12 @@ class MainLabel(wx.Panel):
 
     def setBackColour(self, colour):
         self.colour = colour
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
     
     def setLabel(self, label):
         self.italic = False
         self.label = label
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def OnPaint(self, event):
         w,h = self.GetSize()
@@ -710,7 +721,7 @@ class MainLabel(wx.Panel):
     def setItalicLabel(self, label):
         self.italic = True
         self.label = label
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         
     def getLabel(self):
         return self.label
@@ -756,7 +767,8 @@ class Label(MainLabel):
             side = 'left'
         else:
             side = 'right'
-        self.dclickFunction(side)
+        if self.dclickFunction != None:
+            self.dclickFunction(side)
  
 class OutputLabel(MainLabel):
     def __init__(self, parent, label, size=(100,20), font=None, colour=None, outFunction=None):
@@ -794,7 +806,7 @@ class PeakLabel(MainLabel):
         self.italic = False
         self.label = label
         self.canCmdClick = True
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
 class FrameLabel(wx.Panel):
     def __init__(self, parent, label, size=(100,20), font=None, colour=None):
@@ -814,11 +826,11 @@ class FrameLabel(wx.Panel):
        
     def setBackColour(self, colour):
         self.colour = colour
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
     
     def setLabel(self, label):
         self.label = label
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def MouseDown(self, event):
         self.pos = event.GetPosition()
@@ -880,7 +892,7 @@ class AboutLabel(wx.Panel):
 
     def setBackColour(self, colour):
         self.colour = colour
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def OnPaint(self, event):
         w,h = self.GetSize()
@@ -905,9 +917,9 @@ class AboutLabel(wx.Panel):
         dc.DrawCircle(w/2, h/2,self.img_side/2-1)
         
         dc.SetTextForeground(LABEL_LABEL_COLOUR)
-        rec = wx.Rect(5, 68, 50, 10)
+        rec = wx.Rect(10, 68, 50, 10)
         dc.DrawLabel(self.copyright, rec, wx.ALIGN_CENTER)
-        rec = wx.Rect(545, 68, 50, 10)
+        rec = wx.Rect(540, 68, 50, 10)
         dc.DrawLabel(self.version, rec, wx.ALIGN_CENTER)
 
 #---------------------------
@@ -954,14 +966,14 @@ class Toggle(wx.Panel):
     def MouseDown(self, event):
         if self.state: self.state = 0
         else: self.state = 1
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         event.Skip()
 
     def OnEnter(self, event):
         if event.ButtonIsDown(wx.MOUSE_BTN_LEFT):
             if self.state: self.state = 0
             else: self.state = 1
-            self.Refresh()
+            wx.CallAfter(self.Refresh)
         event.Skip()
 
     def getValue(self):
@@ -969,7 +981,7 @@ class Toggle(wx.Panel):
     
     def setValue(self, value):
         self.state = value
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
 #---------------------------
 # Xfade switcher (return 0, 1 or 2)
@@ -1013,7 +1025,7 @@ class XfadeSwitcher(wx.Panel):
 
     def MouseDown(self, event):
         self.state = (self.state+1) % 3
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         event.Skip()
 
     def getValue(self):
@@ -1021,7 +1033,7 @@ class XfadeSwitcher(wx.Panel):
 
     def setValue(self, value):
         self.state = value
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
 #---------------------------
 # Button (send a trigger)
@@ -1067,14 +1079,14 @@ class Button(wx.Panel):
         self.state = True
         if self.outFunction:
             self.outFunction(1)
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         event.Skip()
 
     def MouseUp(self, event):
         self.state = False
         if self.outFunction:
             self.outFunction(0)
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         event.Skip()
 
 #---------------------------
@@ -1116,12 +1128,12 @@ class MinMaxToggle(wx.Panel):
         else: self.state = 1
         if self.outFunction:
             self.outFunction(self.state)
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         event.Skip()
 
     def SetValue(self, value):
         self.state = value
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def GetValue(self):
         return self.state
@@ -1175,7 +1187,7 @@ class Clocker(wx.Panel):
 
     def setTime(self, m ,s, c):
         self.time = '%02d:%02d:%02d' % (m, s, c)
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
 #---------------------------
 # EntryUnit
@@ -1195,13 +1207,23 @@ class EntryUnit(wx.Panel):
         self.oldValue = value
         self.increment = 0.001
         self.new = ''
+        self.sizeX = size[0]
         self.font = wx.Font(ENTRYUNIT_FONT, wx.NORMAL, wx.NORMAL, wx.NORMAL, face=FONT_FACE)
         self.unitFont = wx.Font(ENTRYUNIT_FONT, wx.ROMAN, wx.ITALIC, wx.LIGHT, face=FONT_FACE)
-        self.entryRect = wx.Rect(40, 1, 52, self.GetSize()[1]-2)
+        if self.sizeX == 120:
+            self.entryRect = wx.Rect(40, 1, 52, self.GetSize()[1]-2)
+        else:
+            self.entryRect = wx.Rect(20, 1, 52, self.GetSize()[1]-2)
         if CeciliaLib.getVar("systemPlatform") == 'win32':
-            self.starttext = 55
-        else:    
-            self.starttext = 90
+            if self.sizeX == 120:
+                self.starttext = 55
+            else:
+                self.starttext = 35
+        else:
+            if self.sizeX == 120:
+                self.starttext = 90
+            else:
+                self.starttext = 70
         if colour:
             self.backColour = colour
         else:
@@ -1237,13 +1259,16 @@ class EntryUnit(wx.Panel):
 
         # Draw unit
         dc.SetFont(self.unitFont)
-        dc.DrawLabel(self.unit, wx.Rect(95, 1, w-95, h), wx.ALIGN_CENTER_VERTICAL)
+        if self.sizeX == 120:
+            dc.DrawLabel(self.unit, wx.Rect(95, 1, w-95, h), wx.ALIGN_CENTER_VERTICAL)
+        else:
+            dc.DrawLabel(self.unit, wx.Rect(75, 1, w-75, h), wx.ALIGN_CENTER_VERTICAL)
         dc.SelectObject(wx.NullBitmap)
 
     def setBackColour(self, colour):
         self.backColour = colour
         self.createBackgroundBitmap()
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def LooseFocus(self, event):
         if self.new != '':
@@ -1252,7 +1277,7 @@ class EntryUnit(wx.Panel):
         self.selected = False
         if self.outFunction:
             self.outFunction(self.value)
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def OnPaint(self, event):
         w,h = self.GetSize()
@@ -1301,7 +1326,7 @@ class EntryUnit(wx.Panel):
             self.selected = True
             self.new = ''
             self.CaptureMouse()
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         event.Skip()
 
     def MouseMotion(self, evt):
@@ -1314,7 +1339,7 @@ class EntryUnit(wx.Panel):
                 self.value = self.oldValue + off    
                 if self.outFunction:
                     self.outFunction(self.value)
-            self.Refresh()
+            wx.CallAfter(self.Refresh)
 
     def MouseUp(self, evt):
         if self.HasCapture():
@@ -1347,13 +1372,13 @@ class EntryUnit(wx.Panel):
                 self.selected = False
                 if self.outFunction:
                     self.outFunction(self.value)
-            self.Refresh()
+            wx.CallAfter(self.Refresh)
 
     def setValue(self, val):
         self.value = val
         self.selected = False
         self.new = ''
-        self.Refresh() # need by Windows
+        wx.CallAfter(self.Refresh) # need by Windows
         self.OnPaint(wx.PaintEvent(wx.ID_ANY)) # need by OS X
 
 class RangeEntryUnit(wx.Panel):
@@ -1421,7 +1446,7 @@ class RangeEntryUnit(wx.Panel):
     def setBackColour(self, colour):
         self.backColour = colour
         self.createBackgroundBitmap()
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def LooseFocus(self, event):
         if self.new != '':
@@ -1430,7 +1455,7 @@ class RangeEntryUnit(wx.Panel):
         self.selected = False
         if self.outFunction:
             self.outFunction(self.value)
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def OnPaint(self, event):
         w,h = self.GetSize()
@@ -1500,7 +1525,7 @@ class RangeEntryUnit(wx.Panel):
                 self.CaptureMouse()
             self.selected = True
             self.new = ''
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         event.Skip()
 
     def MouseMotion(self, evt):
@@ -1513,7 +1538,7 @@ class RangeEntryUnit(wx.Panel):
                 self.value = self.oldValue + off    
                 if self.outFunction:
                     self.outFunction(self.value)
-            self.Refresh()
+            wx.CallAfter(self.Refresh)
 
     def MouseUp(self, evt):
         if self.HasCapture():
@@ -1552,13 +1577,13 @@ class RangeEntryUnit(wx.Panel):
                 self.selected = False
                 if self.outFunction:
                     self.outFunction(self.value)
-            self.Refresh()
+            wx.CallAfter(self.Refresh)
 
     def setValue(self, val):
         self.value = val
         self.selected = False
         self.new = ''
-        self.Refresh() # need by Windows
+        wx.CallAfter(self.Refresh) # need by Windows
         self.OnPaint(wx.PaintEvent(wx.ID_ANY)) # need by OS X
 
 class SplitterEntryUnit(wx.Panel):
@@ -1627,7 +1652,7 @@ class SplitterEntryUnit(wx.Panel):
     def setBackColour(self, colour):
         self.backColour = colour
         self.createBackgroundBitmap()
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def LooseFocus(self, event):
         if self.new != '':
@@ -1636,7 +1661,7 @@ class SplitterEntryUnit(wx.Panel):
         self.selected = False
         if self.outFunction:
             self.outFunction(self.value)
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def OnPaint(self, event):
         w,h = self.GetSize()
@@ -1691,7 +1716,7 @@ class SplitterEntryUnit(wx.Panel):
                 self.CaptureMouse()
             self.selected = True
             self.new = ''
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         event.Skip()
 
     def MouseMotion(self, evt):
@@ -1704,7 +1729,7 @@ class SplitterEntryUnit(wx.Panel):
                 self.value = self.oldValue + off    
                 if self.outFunction:
                     self.outFunction(self.value)
-            self.Refresh()
+            wx.CallAfter(self.Refresh)
 
     def MouseUp(self, evt):
         if self.HasCapture():
@@ -1742,13 +1767,13 @@ class SplitterEntryUnit(wx.Panel):
                 self.selected = False
                 if self.outFunction:
                     self.outFunction(self.value)
-            self.Refresh()
+            wx.CallAfter(self.Refresh)
 
     def setValue(self, val):
         self.value = val
         self.selected = False
         self.new = ''
-        self.Refresh() # need by Windows
+        wx.CallAfter(self.Refresh) # need by Windows
         self.OnPaint(wx.PaintEvent(wx.ID_ANY)) # need by OS X
 
 #---------------------------
@@ -1793,7 +1818,7 @@ class ListEntry(wx.Panel):
     def setBackColour(self, colour):
         self.backColour = colour
         self.createBackgroundBitmap()
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def OnPaint(self, event):
         w,h = self.GetSize()
@@ -1826,7 +1851,7 @@ class ListEntry(wx.Panel):
         self.value = val
         if self.outFunction != None:
             self.outFunction(self.value)
-        self.Refresh() # need by Windows
+        wx.CallAfter(self.Refresh) # need by Windows
         self.OnPaint(wx.PaintEvent(wx.ID_ANY)) # need by OS X
 
     def getValue(self):
@@ -1885,8 +1910,9 @@ class OSCPopupFrame(wx.Frame):
         self.parent = parent
         self.slider = slider
         self.side = side
-        self.value = init = ""
-        self.SetSize((320,100))
+        self.value = init = outinit = ""
+        self.Ysize = 128
+        self.SetSize((320,self.Ysize))
 
         if wx.Platform == '__WXGTK__':
             self.Bind(wx.EVT_WINDOW_CREATE, self.SetRoundShape)
@@ -1904,13 +1930,24 @@ class OSCPopupFrame(wx.Frame):
         box.Add(title, 0, wx.ALL, 1)
 
         if self.slider.openSndCtrl != None:
+            osc = self.slider.openSndCtrl
             if self.slider.widget_type == "slider":
-                init = "%d:%s" % (self.slider.openSndCtrl[0], self.slider.openSndCtrl[1])
+                init = "%d:%s" % (osc[0], osc[1])
             elif self.slider.widget_type == "range":
-                if side == 'left' and self.slider.openSndCtrl[0] != ():
-                    init = "%d:%s" % (self.slider.openSndCtrl[0][0], self.slider.openSndCtrl[0][1])
-                elif side == 'right' and self.slider.openSndCtrl[1] != ():
-                    init = "%d:%s" % (self.slider.openSndCtrl[1][0], self.slider.openSndCtrl[1][1])
+                if side == 'left' and osc[0] != ():
+                    init = "%d:%s" % (osc[0][0], osc[0][1])
+                elif side == 'right' and osc[1] != ():
+                    init = "%d:%s" % (osc[1][0], osc[1][1])
+
+        if self.slider.OSCOut != None:
+            osc = self.slider.OSCOut
+            if self.slider.widget_type == "slider":
+                outinit = "%s:%d:%s" % (osc[0], osc[1], osc[2])
+            elif self.slider.widget_type == "range":
+                if side == 'left' and osc[0] != ():
+                    outinit = "%s:%d:%s" % (osc[0][0], osc[0][1], osc[0][2])
+                elif side == 'right' and osc[1] != ():
+                    outinit = "%s:%d:%s" % (osc[1][0], osc[1][1], osc[1][2])
 
         self.entry = wx.TextCtrl(panel, -1, init, size=(300,15), style=wx.TE_PROCESS_ENTER|wx.NO_BORDER)
         self.entry.SetFocus()
@@ -1919,6 +1956,15 @@ class OSCPopupFrame(wx.Frame):
         self.entry.Bind(wx.EVT_TEXT_ENTER, self.OnApply)
         box.Add(self.entry, 0, wx.ALL, 10)
 
+        outtext = wx.StaticText(panel, -1, label="OSC Output, optional (host:port:address)")
+        outtext.SetForegroundColour("#FFFFFF")
+        box.Add(outtext, 0, wx.LEFT, 10)
+        
+        self.entry2 = wx.TextCtrl(panel, -1, outinit, size=(300,15), style=wx.TE_PROCESS_ENTER|wx.NO_BORDER)
+        self.entry2.SetBackgroundColour(GRAPHER_BACK_COLOUR)
+        self.entry2.SetFont(self.font)       
+        box.Add(self.entry2, 0, wx.LEFT|wx.RIGHT|wx.BOTTOM, 10)
+        
         applyBox = wx.BoxSizer(wx.HORIZONTAL)
         apply = ApplyToolBox(panel, tools=['Cancel', 'Apply'], outFunction=[self.OnCancel, self.OnApply])
         applyBox.Add(apply, 0, wx.LEFT, 210)
@@ -1927,14 +1973,17 @@ class OSCPopupFrame(wx.Frame):
         panel.SetSizerAndFit(box)
 
     def SetRoundShape(self, event=None):
-        self.SetShape(GetRoundShape(320, 90, 1))
+        self.SetShape(GetRoundShape(320, self.Ysize, 1))
 
     def OnApply(self, event=None):
         self.value = self.entry.GetValue()
+        outvalue = self.entry2.GetValue()
         if self.slider.widget_type == "slider":
             self.slider.setOSCInput(self.value)
+            self.slider.setOSCOutput(outvalue)
         elif self.slider.widget_type == "range":
             self.slider.setOSCInput(self.value, self.side)
+            self.slider.setOSCOutput(outvalue, self.side)
         self.Destroy()
 
     def OnCancel(self, event=None):
@@ -1981,12 +2030,12 @@ class BatchPopupFrame(wx.Frame):
         self.SetShape(GetRoundShape(320, 90, 1))
 
     def OnApply(self, event=None):
-        self.outFunction(self.entry.GetValue().strip())
+        wx.CallAfter(self.outFunction, self.entry.GetValue().strip())
         self.MakeModal(False)
         self.Destroy()
 
     def OnCancel(self, event=None):
-        self.outFunction("")
+        wx.CallAfter(self.outFunction, "")
         self.MakeModal(False)
         self.Destroy()
 
@@ -2398,6 +2447,9 @@ class ControlSlider(wx.Panel):
         self._enable = True
         self.new = ''
         self.floatPrecision = '%.2f'
+        self.midictl = ''
+        self.midiLearn = False
+        self.openSndCtrl = ''
         if backColour: self.backColour = backColour
         else: self.backColour = CONTROLSLIDER_BACK_COLOUR
         if init != None: 
@@ -2420,7 +2472,7 @@ class ControlSlider(wx.Panel):
 
     def setFloatPrecision(self, x):
         self.floatPrecision = '%.' + '%df' % x
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         
     def getMinValue(self):
         return self.minvalue
@@ -2430,13 +2482,13 @@ class ControlSlider(wx.Panel):
 
     def setEnable(self, enable):
         self._enable = enable
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def setSliderHeight(self, height):
         self.sliderHeight = height
         self.createSliderBitmap()
         self.createKnobBitmap()
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def createSliderBitmap(self):
         w, h = self.GetSize()
@@ -2471,6 +2523,19 @@ class ControlSlider(wx.Panel):
         b.SetMaskColour("#787878")
         self.knobMask = b
 
+    def inMidiLearnMode(self):
+        self.midiLearn = True
+        wx.CallAfter(self.Refresh)
+
+    def setMidiCtl(self, str):
+        self.midictl = str
+        self.midiLearn = False
+        wx.CallAfter(self.Refresh)
+
+    def setOpenSndCtrl(self, str):
+        self.openSndCtrl = str
+        self.OnResize(None)
+
     def getInit(self):
         return self.init
 
@@ -2502,7 +2567,7 @@ class ControlSlider(wx.Panel):
             self.value = int(self.value)
         self.clampPos()
         self.selected = False
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def GetValue(self):
         if self.log:
@@ -2516,7 +2581,7 @@ class ControlSlider(wx.Panel):
 
     def LooseFocus(self, event):
         self.selected = False
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def keyDown(self, event):
         if self.selected:
@@ -2542,7 +2607,7 @@ class ControlSlider(wx.Panel):
                 self.SetValue(eval(self.new))
                 self.new = ''
                 self.selected = False
-            self.Refresh()
+            wx.CallAfter(self.Refresh)
  
     def MouseDown(self, evt):
         if evt.ShiftDown():
@@ -2554,7 +2619,7 @@ class ControlSlider(wx.Panel):
             self.value = self.scale()
             self.CaptureMouse()
             self.selected = False
-            self.Refresh()
+            wx.CallAfter(self.Refresh)
         evt.Skip()
 
     def MouseUp(self, evt):
@@ -2567,7 +2632,7 @@ class ControlSlider(wx.Panel):
             pos = event.GetPosition()
             if wx.Rect(self.pos-self.knobHalfSize, 0, self.knobSize, h).Contains(pos):
                 self.selected = True
-            self.Refresh()
+            wx.CallAfter(self.Refresh)
         event.Skip()
             
     def MouseMotion(self, evt):
@@ -2577,12 +2642,12 @@ class ControlSlider(wx.Panel):
                 self.pos = clamp(evt.GetPosition()[0], self.knobHalfSize, size[0]-self.knobHalfSize)
                 self.value = self.scale()
                 self.selected = False
-                self.Refresh()
+                wx.CallAfter(self.Refresh)
 
     def OnResize(self, evt):
         self.createSliderBitmap()
         self.clampPos()    
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def clampPos(self):
         size = self.GetSize()
@@ -2611,6 +2676,16 @@ class ControlSlider(wx.Panel):
         dc.GradientFillLinear(rec, GRADIENT_DARK_COLOUR, sliderColour, wx.BOTTOM)
         dc.DrawBitmap(self.sliderMask, 0, 0, True)
 
+        dc.SetFont(wx.Font(CONTROLSLIDER_FONT, wx.ROMAN, wx.NORMAL, wx.NORMAL, face=FONT_FACE))
+        dc.SetTextForeground(CONTROLSLIDER_TEXT_COLOUR)
+
+        if self.midiLearn:
+            dc.DrawLabel("Move a MIDI controller...", wx.Rect(0, 1, w-5, h), wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
+        elif self.openSndCtrl:
+            dc.DrawLabel(self.openSndCtrl, wx.Rect(0, 1, w-5, h), wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)            
+        elif self.midictl != "":
+            dc.DrawLabel(self.midictl, wx.Rect(0, 1, w-5, h), wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL)
+
         # Draw knob
         if self._enable: knobColour = CONTROLSLIDER_KNOB_COLOUR
         else: knobColour = CONTROLSLIDER_DISABLE_COLOUR
@@ -2624,7 +2699,6 @@ class ControlSlider(wx.Panel):
             dc.SetPen(wx.Pen(CONTROLSLIDER_SELECTED_COLOUR, width=self.borderWidth, style=wx.SOLID))  
             dc.DrawRoundedRectangleRect(rec2, 3)
 
-        dc.SetFont(wx.Font(CONTROLSLIDER_FONT, wx.ROMAN, wx.NORMAL, wx.NORMAL, face=FONT_FACE))
 
         # Draw text
         if self.selected and self.new:
@@ -2638,7 +2712,6 @@ class ControlSlider(wx.Panel):
             width = len(val) * (dc.GetCharWidth() - 3)
         else:
             width = len(val) * dc.GetCharWidth()
-        dc.SetTextForeground(CONTROLSLIDER_TEXT_COLOUR)
         dc.DrawLabel(val, rec, wx.ALIGN_CENTER)
 
         # Send value
@@ -2713,15 +2786,15 @@ class PlainSlider(wx.Panel):
         self.SetBackgroundColour(col)
         self.createSliderBitmap()
         self.createKnobBitmap()
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def Show(self):
         self.show = True
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def Hide(self):
         self.show = False
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
     
     def SetRange(self, minvalue, maxvalue):   
         self.minvalue = minvalue
@@ -2741,7 +2814,7 @@ class PlainSlider(wx.Panel):
         else:
             self.value = interpFloat(t, self.minvalue, self.maxvalue)
         self.clampPos()
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def GetValue(self):
         if self.log:
@@ -2756,7 +2829,7 @@ class PlainSlider(wx.Panel):
         self.pos = clamp(evt.GetPosition()[0], self.knobHalfSize, size[0]-self.knobHalfSize)
         self.value = self.scale()
         self.CaptureMouse()
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def MouseUp(self, evt):
         if self.HasCapture():
@@ -2767,12 +2840,12 @@ class PlainSlider(wx.Panel):
         if evt.Dragging() and evt.LeftIsDown():
             self.pos = clamp(evt.GetPosition()[0], self.knobHalfSize, size[0]-self.knobHalfSize)
             self.value = self.scale()
-            self.Refresh()
+            wx.CallAfter(self.Refresh)
 
     def OnResize(self, evt):
         self.createSliderBitmap()
         self.clampPos()    
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def clampPos(self):
         size = self.GetSize()
@@ -2812,12 +2885,13 @@ class PlainSlider(wx.Panel):
 # ToolBox (need a list of outFunctions axxociated with tools)
 # --------------------------
 class ToolBox(wx.Panel):
-    def __init__(self, parent, size=(80,20), tools=[], outFunction=None, openSampler=False):
+    def __init__(self, parent, size=(80,20), tools=[], outFunction=None):
         wx.Panel.__init__(self, parent, -1, size=size)
         self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
         self.SetBackgroundColour(BACKGROUND_COLOUR)
         self._backColour = BACKGROUND_COLOUR
         self.parent = parent
+        self.enabled = True
         toolsLength = len(tools)
         if len(tools) == 0:
             raise('ToolBox must have at least a list of one tool!')
@@ -2854,7 +2928,6 @@ class ToolBox(wx.Panel):
         self.oversWait = [True] * self.num
         self.show = True
         self.open = False
-        self.openSampler = openSampler
         self.samplerFrame = None
         self.outFunction = outFunction
 
@@ -2884,7 +2957,7 @@ class ToolBox(wx.Panel):
     def setBackColour(self, col):
         self._backColour = col
         self.SetBackgroundColour(col)
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def setOverWait(self, which):
         self.oversWait[which] = False
@@ -2901,13 +2974,13 @@ class ToolBox(wx.Panel):
             if rec.Contains(pos) and self.oversWait[i]:
                 self.overs[i] = True
         self.checkForOverReady(pos)
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         event.Skip()
 
     def OnLeave(self, event):
         self.overs = [False] * self.num
         self.oversWait = [True] * self.num
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def OnPaint(self, event):
         w,h = self.GetSize()
@@ -2920,29 +2993,30 @@ class ToolBox(wx.Panel):
         dc.SetPen(wx.Pen(self._backColour, width=0, style=wx.SOLID))
         dc.DrawRectangle(0, 0, w, h)
 
-        for i, tool in enumerate(self.tools):
-            if not self.overs[i]:
-                if tool == 'show':
-                    if self.show: icon = self.graphics[tool][0]
-                    else: icon = self.graphics[tool][2]
-                elif tool == 'open':
-                    if self.open: icon = self.graphics[tool][2]
-                    else: icon = self.graphics[tool][0]
-                else:
-                    icon = self.graphics[tool][0]
-            else:
-                if tool == 'show':
-                    if self.show: icon = self.graphics[tool][1]
-                    else: icon = self.graphics[tool][3]
-                elif tool == 'open':
-                    if self.open: icon = self.graphics[tool][3]
-                    else: icon = self.graphics[tool][1]
+        if self.enabled:
+            for i, tool in enumerate(self.tools):
+                if not self.overs[i]:
+                    if tool == 'show':
+                        if self.show: icon = self.graphics[tool][0]
+                        else: icon = self.graphics[tool][2]
+                    elif tool == 'open':
+                        if self.open: icon = self.graphics[tool][2]
+                        else: icon = self.graphics[tool][0]
+                    else:
+                        icon = self.graphics[tool][0]
                 else:
-                    icon = self.graphics[tool][1]
-            dc.DrawBitmap(icon, self.rectList[i][0]+2, self.rectList[i][1]+1, True)
-        dc.SetPen(wx.Pen(WHITE_COLOUR, width=1, style=wx.SOLID))  
-        for i in range((self.num-1)):
-            dc.DrawLine((i+1)*20, 2, (i+1)*20, h-2)
+                    if tool == 'show':
+                        if self.show: icon = self.graphics[tool][1]
+                        else: icon = self.graphics[tool][3]
+                    elif tool == 'open':
+                        if self.open: icon = self.graphics[tool][3]
+                        else: icon = self.graphics[tool][1]
+                    else:
+                        icon = self.graphics[tool][1]
+                dc.DrawBitmap(icon, self.rectList[i][0]+2, self.rectList[i][1]+1, True)
+            dc.SetPen(wx.Pen(WHITE_COLOUR, width=1, style=wx.SOLID))  
+            for i in range((self.num-1)):
+                dc.DrawLine((i+1)*20, 2, (i+1)*20, h-2)
 
     def MouseDown(self, event):
         pos = event.GetPosition()
@@ -2953,7 +3027,7 @@ class ToolBox(wx.Panel):
                 break
         if self.outFunction:
             self.maps[tool]()
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def onSave(self):
         self.outFunction[self.tools.index('save')]()
@@ -2982,7 +3056,7 @@ class ToolBox(wx.Panel):
             self.open = False
         else:
             self.open = True
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def onTime(self):
         self.outFunction[self.tools.index('time')]()
@@ -2994,11 +3068,15 @@ class ToolBox(wx.Panel):
 
     def setShow(self, state):
         self.show = state
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
     
     def setOpen(self, state):
         self.open = state
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
+        
+    def enable(self, state):
+        self.enabled = state
+        wx.CallAfter(self.Refresh)
         
 #---------------------------
 # RadioToolBox (need a list of outFunctions axxociated with tools)
@@ -3054,13 +3132,13 @@ class RadioToolBox(wx.Panel):
             if rec.Contains(pos) and self.oversWait[i]:
                 self.overs[i] = True
         self.checkForOverReady(pos)
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         event.Skip()
 
     def OnLeave(self, event):
         self.overs = [False] * self.num
         self.oversWait = [True] * self.num
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def OnPaint(self, event):
         w,h = self.GetSize()
@@ -3090,7 +3168,7 @@ class RadioToolBox(wx.Panel):
         self.selected = self.tools.index(tool)
         if self.outFunction:
             self.maps[tool]()
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def MouseDown(self, event):
         pos = event.GetPosition()
@@ -3102,7 +3180,7 @@ class RadioToolBox(wx.Panel):
                 break
         if self.outFunction:
             self.maps[tool]()
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         event.Skip()
 
     def onPointer(self):
@@ -3170,13 +3248,13 @@ class PreferencesRadioToolBox(wx.Panel):
             if rec.Contains(pos) and self.oversWait[i]:
                 self.overs[i] = True
         self.checkForOverReady(pos)
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         event.Skip()
 
     def OnLeave(self, event):
         self.overs = [False] * self.num
         self.oversWait = [True] * self.num
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def OnPaint(self, event):
         w,h = self.GetSize()
@@ -3206,7 +3284,7 @@ class PreferencesRadioToolBox(wx.Panel):
         self.selected = self.tools.index(tool)
         if self.outFunction:
             self.maps[tool]()
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def MouseDown(self, event):
         pos = event.GetPosition()
@@ -3218,7 +3296,7 @@ class PreferencesRadioToolBox(wx.Panel):
                 break
         if self.outFunction:
             self.outFunction(self.selected)
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         event.Skip()
 
 #---------------------------
@@ -3266,13 +3344,13 @@ class ApplyToolBox(wx.Panel):
             if rec.Contains(pos) and self.oversWait[i]:
                 self.overs[i] = True
         self.checkForOverReady(pos)
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         event.Skip()
 
     def OnLeave(self, event):
         self.overs = [False] * self.num
         self.oversWait = [True] * self.num
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def OnPaint(self, event):
         w,h = self.GetSize()
@@ -3307,7 +3385,7 @@ class ApplyToolBox(wx.Panel):
                 break
         if self.outFunction:
             self.maps[tool]()
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         event.Skip()
 
     def onApply(self):
@@ -3340,16 +3418,16 @@ class CloseBox(wx.Panel):
 
     def setTextMagnify(self, point):
         self.textMagnify = point
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         
     def setBackgroundColour(self, colour):
         self._backColour = colour
         self.SetBackgroundColour(colour)
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def setInsideColour(self, colour):
         self._insideColour = colour
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         
     def setOverWait(self):
         self.overWait = False
@@ -3357,13 +3435,13 @@ class CloseBox(wx.Panel):
     def OnMotion(self, event):
         pos = event.GetPosition()
         self.over = True
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         event.Skip()
 
     def OnLeave(self, event):
         self.over = False
         self.overWait = True
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def OnPaint(self, event):
         w,h = self.GetSize()
@@ -3391,7 +3469,7 @@ class CloseBox(wx.Panel):
         pos = event.GetPosition()
         if self.outFunction:
             self.outFunction()
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         event.Skip()
 
 #---------------------------
@@ -3450,13 +3528,13 @@ class PaletteToolBox(wx.Panel):
             if rec.Contains(pos) and self.oversWait[i]:
                 self.overs[i] = True
         self.checkForOverReady(pos)
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         event.Skip()
 
     def OnLeave(self, event):
         self.overs = [False] * self.num
         self.oversWait = [True] * self.num
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def OnPaint(self, event):
         w,h = self.GetSize()
@@ -3488,7 +3566,7 @@ class PaletteToolBox(wx.Panel):
                 self.setOverWait(i)
                 break
         self.maps[tool]()
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def checkForOpenFrame(self, index):
         if index != 0:
@@ -4815,7 +4893,7 @@ class Transport(wx.Panel):
         
     def setPlay(self, play):
         self.playing = play
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def getPlay(self):
         return self.playing
@@ -4831,7 +4909,7 @@ class Transport(wx.Panel):
             self.recordColour = TR_RECORD_OFF_COLOUR
         else:
             self.recordColour = TR_RECORD_ON_COLOUR
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
     
     def getRecord(self):
         return self.recording
@@ -4855,7 +4933,7 @@ class Transport(wx.Panel):
             self.playOver = False
             self.recordOver = True
         self.checkForOverReady(pos)
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         event.Skip()
 
     def setOverWait(self, which):
@@ -4890,7 +4968,7 @@ class Transport(wx.Panel):
                         self.outRecordFunction(self.recording)
                 self.setOverWait(i)
                 break
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         event.Skip()
 
     def MouseUp(self, event):
@@ -4908,14 +4986,14 @@ class Transport(wx.Panel):
                     if self.outPlayFunction:
                         self.outPlayFunction(self.playing)
                 break
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def OnLeave(self, event):
         self.playOver = False
         self.recordOver = False
         self.playOverWait = True
         self.recordOverWait = True
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         event.Skip()
 
     def OnPaint(self, event):
@@ -5001,9 +5079,10 @@ class VuMeter(wx.Panel):
             self.SetMaxSize((218, 5*self.nchnls+1))
         else:
             self.SetSize((218, 5*self.nchnls+1))
+            self.SetMinSize((218, 5*self.nchnls+1))
             self.SetMaxSize((218, 5*self.nchnls+1))
             self.parent.SetSize((parentSize[0], parentSize[1]+gap))
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         CeciliaLib.getVar("interface").OnSize(wx.SizeEvent())
 
     def setRms(self, *args):
@@ -5036,7 +5115,7 @@ class VuMeter(wx.Panel):
 
     def reset(self):
         self.amplitude = [0 for i in range(self.nchnls)]
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
 
     def seekPeak(self):
         newPeak = False
@@ -5078,7 +5157,7 @@ class TabsPanel(wx.Panel):
                 self.selected = self.choices[i]
                 break
         self.outFunction(i)
-        self.Refresh()
+        wx.CallAfter(self.Refresh)
         event.Skip()
 
     def OnPaint(self, event):
@@ -5111,6 +5190,56 @@ class TabsPanel(wx.Panel):
         for choice in choices:
             draw(choice)
 
+#---------------------------
+# Input Mode Button (return 0, 1, 2 or 3)
+# --------------------------
+class InputModeButton(wx.Panel):
+    def __init__(self, parent, state, size=(20,20), outFunction=None, colour=None):
+        wx.Panel.__init__(self, parent, -1, size=size)
+        self.SetMaxSize(self.GetSize())
+        self.SetBackgroundStyle(wx.BG_STYLE_CUSTOM)
+        self.SetBackgroundColour(BACKGROUND_COLOUR)
+        self.outFunction = outFunction
+        self.state = state
+        if colour:
+            self.colour = colour
+        else:
+            self.colour = BACKGROUND_COLOUR
+
+        self.bitmaps = [ICON_INPUT_1_FILE.GetBitmap(), 
+                            ICON_INPUT_2_LIVE.GetBitmap(), 
+                            ICON_INPUT_3_MIC.GetBitmap(), 
+                            ICON_INPUT_4_MIC_RECIRC.GetBitmap()]
+        self.Bind(wx.EVT_PAINT, self.OnPaint)
+        self.Bind(wx.EVT_LEFT_DOWN, self.MouseDown)
+
+    def OnPaint(self, event):
+        w,h = self.GetSize()
+        dc = wx.AutoBufferedPaintDC(self)
+
+        dc.SetBrush(wx.Brush(BACKGROUND_COLOUR, wx.SOLID))
+        dc.Clear()
+
+        # Draw background
+        dc.SetPen(wx.Pen(BACKGROUND_COLOUR, width=0, style=wx.SOLID))
+        dc.DrawRectangle(0, 0, w, h)
+
+        dc.DrawBitmap(self.bitmaps[self.state], 0, 0, True)
+
+    def MouseDown(self, event):
+        self.state = (self.state+1) % 4
+        if self.outFunction:
+            self.outFunction(self.state)
+        wx.CallAfter(self.Refresh)
+        event.Skip()
+
+    def getValue(self):
+        return self.state
+
+    def setValue(self, value):
+        self.state = value
+        wx.CallAfter(self.Refresh)
+
 class CECTooltip(wx.ToolTip):            
     def __init__(self, tip):
         if CeciliaLib.getVar("useTooltips"):
diff --git a/Resources/audio.py b/Resources/audio.py
index 45322e9..4145785 100755
--- a/Resources/audio.py
+++ b/Resources/audio.py
@@ -33,26 +33,36 @@ class CeciliaFilein:
     def __init__(self, parent, name):
         self.parent = parent
         self.name = name
-        userInputs = CeciliaLib.getVar("userInputs")
+        info = CeciliaLib.getVar("userInputs")[name]
         chnls = CeciliaLib.getVar("nchnls")
-        info = userInputs[name]
-        snd_chnls = info['nchnls'+self.name]
-        if snd_chnls == 1:
-            self.table = SndTable([info['path'] for i in range(chnls)], start=info["off"+self.name])
+        for filein in CeciliaLib.getControlPanel().cfileinList:
+            if filein.name == name:
+                break
+        offset = filein.getOffset()
+        mode = filein.getMode()
+        if mode == 0:
+            snd_chnls = info['nchnls'+self.name]
+            if snd_chnls == 1:
+                self.table = SndTable([info['path'] for i in range(chnls)], start=info["off"+self.name])
+            else:
+                self.table = SndTable(info['path'], start=info["off"+self.name])
         else:
-            self.table = SndTable(info['path'], start=info["off"+self.name])
-
+            self.table = NewTable(length=offset, chnls=chnls, feedback=0.0)
+            self.livein = Input(chnl=[x for x in range(chnls)], mul=0.7)
+            self.filltabrec = TableRec(self.livein, self.table, fadetime=0.05).play()
+    
     def sig(self):
         return self.table
 
 class CeciliaSampler:
     def __init__(self, parent, name, user_pitch, user_amp):
+        self.type = "sampler"
         self.parent = parent
+        self.baseModule = parent
         self.name = name
         self.user_pitch = user_pitch
         self.user_amp = user_amp
-        userInputs = CeciliaLib.getVar("userInputs")
-        info = userInputs[name]
+        info = CeciliaLib.getVar("userInputs")[name]
         totalTime = CeciliaLib.getVar("totalTime")
         chnls = CeciliaLib.getVar("nchnls")
         samplerList = CeciliaLib.getVar("userSamplers")
@@ -61,193 +71,377 @@ class CeciliaSampler:
                 sinfo = sampler.getSamplerInfo()
                 break
         self.sampler = sampler
-            
-        graph_lines = {}
-        for line in CeciliaLib.getVar("grapher").plotter.getData():
-            if line.name.startswith(self.name):
-                graph_lines[line.name] = line
+        self.mode = self.sampler.mode
 
-        if 0:
-            print info
-            print sinfo
-            print graph_lines
-        
-        paths = [slider.getPath() for slider in sampler.getSamplerSliders()]
-        
-        start_init, self.start_play, self.start_rec = sinfo['loopIn'][0], sinfo['loopIn'][1], sinfo['loopIn'][2]
-        line = graph_lines[self.name+'start']
-        curved = line.getCurved()
-        if curved:
-            self.start_table = CosTable()
-        else:
-            self.start_table = LinTable()
-        if not self.start_play:
-            self.start = SigTo(value=start_init, time=0.025, init=start_init)
-        if self.start_rec:
-            self.start_record = ControlRec(self.start, filename=paths[0], rate=1000, dur=totalTime).play()
-        if self.start_play:
-            data = line.getData()
-            data = [tuple(x) for x in data]
-            self.setGraph('start', data)
-            self.start = TableRead(self.start_table, freq=1.0/totalTime).play()
-        
-        dur_init, self.dur_play, self.dur_rec = sinfo['loopOut'][0], sinfo['loopOut'][1], sinfo['loopOut'][2]
-        line = graph_lines[self.name+'end']
-        curved = line.getCurved()
-        if curved:
-            self.dur_table = CosTable()
-        else:
-            self.dur_table = LinTable()
-        if not self.dur_play:
-            self.dur = SigTo(value=dur_init, time=0.025, init=dur_init)
-        if self.dur_rec:
-            self.dur_record = ControlRec(self.dur, filename=paths[1], rate=1000, dur=totalTime).play()
-        if self.dur_play:
-            data = line.getData()
-            data = [tuple(x) for x in data]
-            self.setGraph('end', data)
-            self.dur = TableRead(self.dur_table, freq=1.0/totalTime).play()
-        
-        xfade_init, self.xfade_play, self.xfade_rec = sinfo['loopX'][0], sinfo['loopX'][1], sinfo['loopX'][2]
-        line = graph_lines[self.name+'xfade']
-        curved = line.getCurved()
-        if curved:
-            self.xfade_table = CosTable()
-        else:
-            self.xfade_table = LinTable()
-        if not self.xfade_play:
-            self.xfade = SigTo(value=xfade_init, time=0.025, init=xfade_init)
-        if self.xfade_rec:
-            self.xfade_record = ControlRec(self.xfade, filename=paths[2], rate=1000, dur=totalTime).play()
-        if self.xfade_play:
-            data = line.getData()
-            data = [tuple(x) for x in data]
-            self.setGraph('xfade', data)
-            self.xfade = TableRead(self.xfade_table, freq=1.0/totalTime).play()
-       
-        gain_init, self.gain_play, self.gain_rec = sinfo['gain'][0], sinfo['gain'][1], sinfo['gain'][2]
-        line = graph_lines[self.name+'gain']
-        curved = line.getCurved()
-        if curved:
-            self.gain_table = CosTable()
-        else:
-            self.gain_table = LinTable()
-        if not self.gain_play:
-            self.gain_in = SigTo(value=gain_init, time=0.025, init=gain_init)
-        if self.gain_rec:
-            self.gain_record = ControlRec(self.gain_in, filename=paths[3], rate=1000, dur=totalTime).play()
-        if self.gain_play:
-            data = line.getData()
-            data = [tuple(x) for x in data]
-            self.setGraph('gain', data)
-            self.gain_in = TableRead(self.gain_table, freq=1.0/totalTime).play()
-        self.gain = Pow(10, self.gain_in * 0.05, mul=self.user_amp)
-        
-        pitch_init, self.pitch_play, self.pitch_rec = sinfo['transp'][0], sinfo['transp'][1], sinfo['transp'][2]
-        line = graph_lines[self.name+'trans']
-        curved = line.getCurved()
-        if curved:
-            self.pitch_table = CosTable()
-        else:
-            self.pitch_table = LinTable()
-        if not self.pitch_play:
-            self.pitch_in = SigTo(value=pitch_init, time=0.025, init=pitch_init)
-        if self.pitch_rec:
-            self.pitch_record = ControlRec(self.pitch_in, filename=paths[4], rate=1000, dur=totalTime).play()
-        if self.pitch_play:
-            data = line.getData()
-            data = [tuple(x) for x in data]
-            self.setGraph('trans', data)
-            self.pitch_in = TableRead(self.pitch_table, freq=1.0/totalTime).play()
-        self.pitch = Pow(1.0594630943593, self.pitch_in, self.user_pitch)
-        if CeciliaLib.getVar("automaticMidiBinding") and CeciliaLib.getVar("useMidi"):
-            self.checkNoteIn = Notein(poly=1, scale=0, first=0, last=120)
-            self.onNewNote = Change(self.checkNoteIn["pitch"])
-            self.noteTrigFunc = TrigFunc(self.onNewNote, self.newMidiPitch)
-    
-        self.table = SndTable(info['path'], start=info["off"+self.name])
-        if self.parent.number_of_voices > 1:
-            sp_freq = [random.uniform(.2,1) for i in range(self.parent.number_of_voices*len(self.table))]
-            sp_phase = [random.random() for i in range(self.parent.number_of_voices*len(self.table))]
-            self.pitch_rnd = Sine(sp_freq, sp_phase, mul=self.parent.polyphony_spread, add=1)
+        self.start_play, self.start_midi = False, False
+        self.dur_play, self.dur_midi = False, False
+        self.xfade_play, self.xfade_midi = False, False
+        self.gain_play, self.gain_midi = False, False
+        self.pitch_play, self.pitch_midi = False, False
+
+        if self.mode != 1:
+            graph_lines = {}
+            for line in CeciliaLib.getVar("grapher").plotter.getData():
+                if line.name.startswith(self.name):
+                    graph_lines[line.name] = line
+           
+            paths = [slider.getPath() for slider in sampler.getSamplerSliders()]
+            
+            ################ start ################
+            start_init, self.start_play, self.start_rec = sinfo['loopIn'][0], sinfo['loopIn'][1], sinfo['loopIn'][2]
+            try:
+                self.start_midi, start_midictl, start_midichnl = sinfo['loopIn'][3], sinfo['loopIn'][4], sinfo['loopIn'][5]
+                self.start_mini, self.start_maxi = sinfo['loopIn'][6], sinfo['loopIn'][7]
+                self.start_osc = sinfo['loopIn'][8]
+            except:
+                self.start_midi, start_midictl, start_midichnl, self.start_mini, self.start_maxi = False, None, 1, 0, 1
+                self.start_osc = None
+            line = graph_lines[self.name+'start']
+            curved = line.getCurved()
+            if curved:
+                self.start_table = CosTable()
+            else:
+                self.start_table = LinTable()
+            if not self.start_play and not self.start_midi:
+                self.start = SigTo(value=start_init, time=0.025, init=start_init)
+            if self.start_play:
+                data = line.getData()
+                data = [tuple(x) for x in data]
+                self.setGraph('start', data)
+                self.start = TableRead(self.start_table, freq=1.0/totalTime).play()
+            elif self.start_midi:
+                self.start = Midictl(start_midictl, self.start_mini, self.start_maxi, start_init, start_midichnl)
+                self.start.setInterpolation(False)
+            elif self.start_osc != None:
+                self.baseModule._addOpenSndCtrlWidget(self.start_osc[0], self.start_osc[1], self, name='start')
+            if self.start_rec:
+                self.start_record = ControlRec(self.start, filename=paths[0], rate=1000, dur=totalTime).play()
+            
+            ################  dur  ################
+            dur_init, self.dur_play, self.dur_rec = sinfo['loopOut'][0], sinfo['loopOut'][1], sinfo['loopOut'][2]
+            try:
+                self.dur_midi, dur_midictl, dur_midichnl = sinfo['loopOut'][3], sinfo['loopOut'][4], sinfo['loopOut'][5]
+                self.dur_mini, self.dur_maxi = sinfo['loopOut'][6], sinfo['loopOut'][7]
+                self.dur_osc = sinfo['loopOut'][8]
+            except:
+                self.dur_midi, dur_midictl, dur_midichnl, self.dur_mini, self.dur_maxi = False, None, 1, 0, 1
+                self.dur_osc = None
+            line = graph_lines[self.name+'end']
+            curved = line.getCurved()
+            if curved:
+                self.dur_table = CosTable()
+            else:
+                self.dur_table = LinTable()
+            if not self.dur_play and not self.dur_midi:
+                self.dur = SigTo(value=dur_init, time=0.025, init=dur_init)
+            if self.dur_play:
+                data = line.getData()
+                data = [tuple(x) for x in data]
+                self.setGraph('end', data)
+                self.dur = TableRead(self.dur_table, freq=1.0/totalTime).play()
+            elif self.dur_midi:
+                self.dur = Midictl(dur_midictl, self.dur_mini, self.dur_maxi, dur_init, dur_midichnl)
+                self.dur.setInterpolation(False)
+            elif self.dur_osc != None:
+                self.baseModule._addOpenSndCtrlWidget(self.dur_osc[0], self.dur_osc[1], self, name='dur')
+            if self.dur_rec:
+                self.dur_record = ControlRec(self.dur, filename=paths[1], rate=1000, dur=totalTime).play()
+            
+            ################ xfade ################
+            xfade_init, self.xfade_play, self.xfade_rec = sinfo['loopX'][0], sinfo['loopX'][1], sinfo['loopX'][2]
+            try:
+                self.xfade_midi, xfade_midictl, xfade_midichnl = sinfo['loopX'][3], sinfo['loopX'][4], sinfo['loopX'][5]
+                self.xfade_osc = sinfo['loopX'][6]
+            except:
+                self.xfade_midi, xfade_midictl, xfade_midichnl = False, None, 1
+                self.xfade_osc = None
+            line = graph_lines[self.name+'xfade']
+            curved = line.getCurved()
+            if curved:
+                self.xfade_table = CosTable()
+            else:
+                self.xfade_table = LinTable()
+            if not self.xfade_play and not self.xfade_midi:
+                self.xfade = SigTo(value=xfade_init, time=0.025, init=xfade_init)
+            if self.xfade_play:
+                data = line.getData()
+                data = [tuple(x) for x in data]
+                self.setGraph('xfade', data)
+                self.xfade = TableRead(self.xfade_table, freq=1.0/totalTime).play()
+            elif self.xfade_midi:
+                self.xfade = Midictl(xfade_midictl, 0, 50, xfade_init, xfade_midichnl)
+                self.xfade.setInterpolation(False)
+            elif self.xfade_osc != None:
+                self.baseModule._addOpenSndCtrlWidget(self.xfade_osc[0], self.xfade_osc[1], self, name='xfade')
+            if self.xfade_rec:
+                self.xfade_record = ControlRec(self.xfade, filename=paths[2], rate=1000, dur=totalTime).play()
+           
+            ################ gain ################
+            gain_init, self.gain_play, self.gain_rec = sinfo['gain'][0], sinfo['gain'][1], sinfo['gain'][2]
+            try:
+                self.gain_midi, gain_midictl, gain_midichnl = sinfo['gain'][3], sinfo['gain'][4], sinfo['gain'][5]
+                self.gain_osc = sinfo['gain'][6]
+            except:
+                self.gain_midi, gain_midictl, gain_midichnl = False, None, 1
+                self.gain_osc = None
+            line = graph_lines[self.name+'gain']
+            curved = line.getCurved()
+            if curved:
+                self.gain_table = CosTable()
+            else:
+                self.gain_table = LinTable()
+            if not self.gain_play and not self.gain_midi:
+                self.gain_in = SigTo(value=gain_init, time=0.025, init=gain_init)
+            if self.gain_play:
+                data = line.getData()
+                data = [tuple(x) for x in data]
+                self.setGraph('gain', data)
+                self.gain_in = TableRead(self.gain_table, freq=1.0/totalTime).play()
+            elif self.gain_midi:
+                self.gain_in = Midictl(gain_midictl, -48, 18, gain_init, gain_midichnl)
+                self.gain_in.setInterpolation(False)
+            elif self.gain_osc != None:
+                self.baseModule._addOpenSndCtrlWidget(self.gain_osc[0], self.gain_osc[1], self, name='gain')
+            if self.gain_rec:
+                self.gain_record = ControlRec(self.gain_in, filename=paths[3], rate=1000, dur=totalTime).play()
+            self.gain = Pow(10, self.gain_in * 0.05, mul=self.user_amp)
+            
+            ################ pitch ################
+            pitch_init, self.pitch_play, self.pitch_rec = sinfo['transp'][0], sinfo['transp'][1], sinfo['transp'][2]
+            try:
+                self.pitch_midi, pitch_midictl, pitch_midichnl = sinfo['transp'][3], sinfo['transp'][4], sinfo['transp'][5]
+                self.pitch_osc = sinfo['transp'][6]
+            except:
+                self.pitch_midi, pitch_midictl, pitch_midichnl = False, None, 1
+                self.pitch_osc = None
+            line = graph_lines[self.name+'trans']
+            curved = line.getCurved()
+            if curved:
+                self.pitch_table = CosTable()
+            else:
+                self.pitch_table = LinTable()
+            if not self.pitch_play and not self.pitch_midi:
+                self.pitch_in = SigTo(value=pitch_init, time=0.025, init=pitch_init)
+            if self.pitch_play:
+                data = line.getData()
+                data = [tuple(x) for x in data]
+                self.setGraph('trans', data)
+                self.pitch_in = TableRead(self.pitch_table, freq=1.0/totalTime).play()
+            elif self.pitch_midi:
+                self.pitch_in = Midictl(pitch_midictl, -48, 48, pitch_init, pitch_midichnl)
+                self.pitch_in.setInterpolation(False)
+            elif self.pitch_osc != None:
+                self.baseModule._addOpenSndCtrlWidget(self.pitch_osc[0], self.pitch_osc[1], self, name='pitch')
+            if self.pitch_rec:
+                self.pitch_record = ControlRec(self.pitch_in, filename=paths[4], rate=1000, dur=totalTime).play()
+            self.pitch = Pow(1.0594630943593, self.pitch_in, self.user_pitch)
+            if CeciliaLib.getVar("automaticMidiBinding") and CeciliaLib.getVar("useMidi"):
+                self.checkNoteIn = Notein(poly=1, scale=0, first=0, last=120)
+                self.onNewNote = Change(self.checkNoteIn["pitch"])
+                self.noteTrigFunc = TrigFunc(self.onNewNote, self.newMidiPitch)
+
+            if self.mode == 0:
+                self.table = SndTable(info['path'], start=info["off"+self.name])
+            elif self.mode == 2:
+                self.table = NewTable(length=self.sampler.getOffset(), chnls=chnls)
+                self.livein = Input(chnl=[x for x in range(chnls)], mul=0.7)
+                self.filltabrec = TableRec(self.livein, self.table).play()
+            elif self.mode == 3:
+                self.table = NewTable(length=self.sampler.getOffset(), chnls=chnls)
+                self.table2 = NewTable(length=self.sampler.getOffset(), chnls=chnls)
+                self.livein = Input(chnl=[x for x in range(chnls)], mul=0.7)
+                self.rectrig = Metro(time=self.sampler.getOffset(), poly=2).play()
+                self.tmprec1 = TrigTableRec(self.livein, self.rectrig[0], self.table)
+                self.tmprec2 = TrigTableRec(self.livein, self.rectrig[1], self.table2)
+                self.morphind = Counter(self.rectrig.mix(1), min=0, max=2, dir=0)
+                self.interp = SigTo(self.morphind, time=0.1)
+
+            self.pitch_rnd = [x for x in self.parent.polyphony_spread for y in range(len(self.table))]
+            if self.mode != 3:
+                self.looper = Looper( table=self.table,
+                                            pitch=self.pitch*self.pitch_rnd,
+                                            start=self.start,
+                                            dur=self.dur,
+                                            xfade=self.xfade,
+                                            mode=sinfo['loopMode'],
+                                            xfadeshape=sinfo['xfadeshape'],
+                                            startfromloop=sinfo['startFromLoop'],
+                                            interp=4,
+                                            autosmooth=True,
+                                            mul=self.gain)
+                self.mix = Mix(self.looper, voices=chnls, mul=self.parent.polyphony_scaling)
+            else:
+                self.looper = Looper( table=self.table,
+                                            pitch=self.pitch*self.pitch_rnd,
+                                            start=self.start,
+                                            dur=self.dur,
+                                            xfade=self.xfade,
+                                            mode=sinfo['loopMode'],
+                                            xfadeshape=sinfo['xfadeshape'],
+                                            startfromloop=sinfo['startFromLoop'],
+                                            interp=4,
+                                            autosmooth=True,
+                                            mul=self.gain)
+                self.looper2 = Looper( table=self.table2,
+                                            pitch=self.pitch*self.pitch_rnd,
+                                            start=self.start,
+                                            dur=self.dur,
+                                            xfade=self.xfade,
+                                            mode=sinfo['loopMode'],
+                                            xfadeshape=sinfo['xfadeshape'],
+                                            startfromloop=sinfo['startFromLoop'],
+                                            interp=4,
+                                            autosmooth=True,
+                                            mul=self.gain)
+                self.loopinterp = Interp(self.looper, self.looper2, self.interp)
+                self.mix = Mix(self.loopinterp, voices=chnls, mul=self.parent.polyphony_scaling)
+                
         else:
-            self.pitch_rnd = 1.0
-        self.looper = Looper( table=self.table,
-                                    pitch=self.pitch*self.pitch_rnd,
-                                    start=self.start,
-                                    dur=self.dur,
-                                    xfade=self.xfade,
-                                    mode=sinfo['loopMode'],
-                                    xfadeshape=sinfo['xfadeshape'],
-                                    startfromloop=sinfo['startFromLoop'],
-                                    interp=4,
-                                    autosmooth=True,
-                                    mul=self.gain)
-        self.mix = Mix(self.looper, voices=chnls)
+            self.mix = Input(chnl=[x for x in range(chnls)], mul=0.7)
+
+    def setValueFromOSC(self, val, name):
+        if self.mode != 1:
+            if name == 'start':
+                val = rescale(val, ymin=self.start_mini, ymax=self.start_maxi)
+                self.sampler.getSamplerFrame().loopInSlider.setValue(val)
+                if not self.sampler.getSamplerFrame().loopInSlider.slider.IsShownOnScreen():
+                    self.sampler.getSamplerFrame().loopInSlider.sendValue(val)
+            elif name == 'dur':
+                val = rescale(val, ymin=self.dur_mini, ymax=self.dur_maxi)
+                self.sampler.getSamplerFrame().loopOutSlider.setValue(val)
+                if not self.sampler.getSamplerFrame().loopOutSlider.slider.IsShownOnScreen():
+                    self.sampler.getSamplerFrame().loopOutSlider.sendValue(val)
+            elif name == 'xfade':
+                val = rescale(val, ymin=0, ymax=50)
+                self.sampler.getSamplerFrame().loopXSlider.setValue(val)
+                if not self.sampler.getSamplerFrame().loopXSlider.slider.IsShownOnScreen():
+                    self.sampler.getSamplerFrame().loopXSlider.sendValue(val)
+            elif name == 'gain':
+                val = rescale(val, ymin=-48, ymax=18)
+                self.sampler.getSamplerFrame().gainSlider.setValue(val)
+                if not self.sampler.getSamplerFrame().gainSlider.slider.IsShownOnScreen():
+                    self.sampler.getSamplerFrame().gainSlider.sendValue(val)
+            elif name == 'pitch':
+                val = rescale(val, ymin=-48, ymax=48)
+                self.sampler.getSamplerFrame().transpSlider.setValue(val)
+                if not self.sampler.getSamplerFrame().transpSlider.slider.IsShownOnScreen():
+                    self.sampler.getSamplerFrame().transpSlider.sendValue(val)
+
+    def getWidget(self, name):
+        if name == 'start':
+            widget = self.sampler.getSamplerFrame().loopInSlider
+        elif name == 'dur':
+            widget = self.sampler.getSamplerFrame().loopOutSlider
+        elif name == 'xfade':
+            widget = self.sampler.getSamplerFrame().loopXSlider
+        elif name == 'gain':
+            widget = self.sampler.getSamplerFrame().gainSlider
+        elif name == 'pitch':
+            widget = self.sampler.getSamplerFrame().transpSlider
+        return widget
+
+    def updateWidgets(self):
+        if self.mode != 1:
+            if self.start_midi and not self.start_play:
+                val = self.start.get()
+                wx.CallAfter(self.sampler.getSamplerFrame().loopInSlider.setValue, val)
+            if self.dur_midi and not self.dur_play:
+                val = self.dur.get()
+                wx.CallAfter(self.sampler.getSamplerFrame().loopOutSlider.setValue, val)
+            if self.xfade_midi and not self.xfade_play:
+                val = self.xfade.get()
+                wx.CallAfter(self.sampler.getSamplerFrame().loopXSlider.setValue, val)
+            if self.gain_midi and not self.gain_play:
+                val = self.gain_in.get()
+                wx.CallAfter(self.sampler.getSamplerFrame().gainSlider.setValue, val)
+            if self.pitch_midi and not self.pitch_play:
+                val = self.pitch_in.get()
+                wx.CallAfter(self.sampler.getSamplerFrame().transpSlider.setValue, val)
 
     def newMidiPitch(self):
-        pit = self.checkNoteIn.get()
-        self.sampler.getSamplerFrame().transpSlider.setValue(pit - 60)
-        if not self.sampler.getSamplerFrame().transpSlider.slider.IsShownOnScreen():
-            self.sampler.getSamplerFrame().transpSlider.sendValue(pit - 60)
+        if not self.pitch_midi:
+            pit = self.checkNoteIn.get()
+            self.sampler.getSamplerFrame().transpSlider.setValue(pit - 60)
+            if not self.sampler.getSamplerFrame().transpSlider.slider.IsShownOnScreen():
+                self.sampler.getSamplerFrame().transpSlider.sendValue(pit - 60)
 
     def setGraph(self, which, func):
-        totalTime = CeciliaLib.getVar("totalTime")
-        func = [(int(x/float(totalTime)*8192), y) for x, y in func]
-        if which.endswith('start'):
-            self.start_table.replace(func)
-        elif which.endswith('end'):
-            self.dur_table.replace(func)
-        elif which.endswith('xfade'):
-            self.xfade_table.replace(func)
-        elif which.endswith('gain'):
-            self.gain_table.replace(func)
-        elif which.endswith('trans'):
-            self.pitch_table.replace(func)
+        if self.mode != 1:
+            totalTime = CeciliaLib.getVar("totalTime")
+            func = [(int(x/float(totalTime)*8192), y) for x, y in func]
+            if which.endswith('start'):
+                self.start_table.replace(func)
+            elif which.endswith('end'):
+                self.dur_table.replace(func)
+            elif which.endswith('xfade'):
+                self.xfade_table.replace(func)
+            elif which.endswith('gain'):
+                self.gain_table.replace(func)
+            elif which.endswith('trans'):
+                self.pitch_table.replace(func)
     
     def checkForAutomation(self):
-        if self.start_rec:
-            self.start_record.write()
-        if self.dur_rec:
-            self.dur_record.write()
-        if self.xfade_rec:
-            self.xfade_record.write()
-        if self.gain_rec:
-            self.gain_record.write()
-        if self.pitch_rec:
-            self.pitch_record.write()
+        if self.mode != 1:
+            if self.start_rec:
+                self.start_record.write()
+            if self.dur_rec:
+                self.dur_record.write()
+            if self.xfade_rec:
+                self.xfade_record.write()
+            if self.gain_rec:
+                self.gain_record.write()
+            if self.pitch_rec:
+                self.pitch_record.write()
 
     def sig(self):
         return self.mix
-    
+
+    def getDur(self):
+        if self.mode != 1:
+            return self.table.getDur(False)
+        else:
+            return CeciliaLib.getVar("totalTime")
+
     def setSound(self, snd):
-        self.table.setSound(snd)
+        if self.mode == 0:
+            self.table.setSound(snd)
     
     def setStart(self, x):
-        if not self.start_play:
-            self.start.value = x
+        if self.mode != 1:
+            if not self.start_play:
+                self.start.value = x
     
     def setDur(self, x):
-        if not self.dur_play:
-            self.dur.value = x
+        if self.mode != 1:
+            if not self.dur_play:
+                self.dur.value = x
     
     def setXfade(self, x):
-        if not self.xfade_play:
-            self.xfade.value = x
+        if self.mode != 1:
+            if not self.xfade_play:
+                self.xfade.value = x
     
     def setGain(self, x):
-        if not self.gain_play:
-            self.gain_in.value = x
+        if self.mode != 1:
+            if not self.gain_play:
+                self.gain_in.value = x
     
     def setPitch(self, x):
-        if not self.pitch_play:
-            self.pitch_in.value = x
+        if self.mode != 1:
+            if not self.pitch_play:
+                self.pitch_in.value = x
 
     def setLoopMode(self, x):
-        self.looper.mode = x
+        if self.mode != 1:
+            self.looper.mode = x
+            if self.mode == 3:
+                self.looper2.mode = x
     
     def setXfadeShape(self, x):
-        self.looper.xfadeshape = x
+        if self.mode != 1:
+            self.looper.xfadeshape = x
+            if self.mode == 3:
+                self.looper2.xfadeshape = x
 
 class CeciliaSlider:
     def __init__(self, dic, baseModule):
@@ -541,13 +735,16 @@ class BaseModule:
         self._polyphony = None
         self._openSndCtrlDict = {}
         self._openSndCtrlSliderDict = {}
+        self._OSCOutList = []
 
         ###### Public attributes ######
         self.sr = CeciliaLib.getVar("sr")
         self.nchnls = CeciliaLib.getVar("nchnls")
         self.totalTime = CeciliaLib.getVar("totalTime")
+        self.server = CeciliaLib.getVar("audioServer").server
         self.number_of_voices = 1
-        self.polyphony_spread = 0.0
+        self.polyphony_spread = [1.0]
+        self.polyphony_scaling = 1.0
         ###############################
 
         interfaceWidgets = copy.deepcopy(CeciliaLib.getVar("interfaceWidgets"))
@@ -579,7 +776,7 @@ class BaseModule:
                 if togPop.name.endswith("num"):
                     self.number_of_voices = togPop.getValue() + 1
                 else:
-                    self.polyphony_spread = togPop.getValue()
+                    self._definePolyTranspo(togPop.getLabel())
             if togPop.type == "popup":
                 name = togPop.name
                 setattr(self, name + "_index", togPop.getValue())
@@ -629,6 +826,9 @@ class BaseModule:
         self._samplers[name] = CeciliaSampler(self, name, pitch, amp)
         return self._samplers[name].sig()
 
+    def getSamplerDur(self, name):
+        return self._samplers[name].getDur()
+        
     def duplicate(self, seq, num):
         """
         Duplicates elements in a sequence according to the `num` parameter.
@@ -663,6 +863,26 @@ class BaseModule:
     ############################
 
     ###### Private methods ######
+    def _definePolyTranspo(self, chord):
+        if self.number_of_voices <= 1:
+            return
+        tmp = 0
+        for i in range(self.number_of_voices):
+            tmp -= {0: 0, 1: 3, 2: 3, 3: 2, 4: 2, 5: 2, 6: 1, 7: 1, 8: 1, 9: 1}.get(i, 1)
+        self.polyphony_scaling = pow(10.0, tmp * 0.05)
+        if chord == "None":
+            self.polyphony_spread = [1.0] * self.number_of_voices
+            return
+        else:
+            self.polyphony_spread = [1.0]
+        pool = POLY_CHORDS[chord]
+        for i in range(1, self.number_of_voices):
+            note = pool[i%len(pool)]
+            if i % 2 == 1 or note < 1.0:
+                self.polyphony_spread.append(midiToTranspo(note+60))
+            else:
+                self.polyphony_spread.append(midiToTranspo(note-12+60))
+            
     def _deleteOscReceivers(self):
         if hasattr(self, "oscReceivers"):
             del self.oscReceivers
@@ -672,17 +892,52 @@ class BaseModule:
             self.oscReceivers = {}
             for key in self._openSndCtrlDict.keys():
                 self.oscReceivers[key] = OscReceive(key, self._openSndCtrlDict[key])
-
-    def _addOpenSndCtrlWidget(self, port, address, slider, side=0):
+                for slider in self._openSndCtrlSliderDict[key]:
+                    if type(slider) == type(()):
+                        slider, side = slider[0], slider[1]
+                        if slider.type == "sampler": # sampler slider
+                            widget = slider.getWidget(side)
+                            path = widget.openSndCtrl[1]
+                            val = rescale(widget.getValue(), xmin=widget.getMinValue(), xmax=widget.getMaxValue(), xlog=widget.getLog())
+                            self.oscReceivers[key].setValue(path, val)
+                            if widget.OSCOut != None:
+                                tmpout = OscDataSend("f", widget.OSCOut[1], widget.OSCOut[2], widget.OSCOut[0])
+                                tmpout.send([val])
+                                self._OSCOutList.append(tmpout)
+                        else: # range slider
+                            widget = slider.widget
+                            path = widget.openSndCtrl[side][1]
+                            val = rescale(widget.getValue()[side], xmin=widget.getMinValue(), xmax=widget.getMaxValue(), xlog=widget.getLog())
+                            self.oscReceivers[key].setValue(path, val)
+                            if widget.OSCOut != None:
+                                if widget.OSCOut[side] != ():
+                                    tmpout = OscDataSend("f", widget.OSCOut[side][1], widget.OSCOut[side][2], widget.OSCOut[side][0])
+                                    tmpout.send([val])
+                                    self._OSCOutList.append(tmpout)
+                    else: # slider
+                        widget = slider.widget
+                        path = widget.openSndCtrl[1]
+                        val = rescale(widget.getValue(), xmin=widget.getMinValue(), xmax=widget.getMaxValue(), xlog=widget.getLog())
+                        self.oscReceivers[key].setValue(path, val)
+                        if widget.OSCOut != None:
+                            tmpout = OscDataSend("f", widget.OSCOut[1], widget.OSCOut[2], widget.OSCOut[0])
+                            tmpout.send([val])
+                            self._OSCOutList.append(tmpout)
+
+    def _addOpenSndCtrlWidget(self, port, address, slider, side=0, name=""):
         if self._openSndCtrlDict.has_key(port):
             self._openSndCtrlDict[port].append(address)
-            if slider.type == 'slider':
+            if slider.type == 'sampler':
+                self._openSndCtrlSliderDict[port].append((slider, name))
+            elif slider.type == 'slider':
                 self._openSndCtrlSliderDict[port].append(slider)
             elif slider.type == 'range':
                 self._openSndCtrlSliderDict[port].append((slider, side))
         else:
             self._openSndCtrlDict[port] = [address]
-            if slider.type == 'slider':
+            if slider.type == 'sampler':
+                self._openSndCtrlSliderDict[port] = [(slider, name)]
+            elif slider.type == 'slider':
                 self._openSndCtrlSliderDict[port] = [slider]
             elif slider.type == 'range':
                 self._openSndCtrlSliderDict[port] = [(slider, side)]
@@ -695,6 +950,9 @@ class BaseModule:
                 slider.record.write()
 
     def _updateWidgets(self):
+        if self._samplers != {}:
+            for key in self._samplers.keys():
+                self._samplers[key].updateWidgets()
         for slider in self._sliders.values():
             if slider.play == 1 or slider.midi:
                 slider.updateWidget()
@@ -747,12 +1005,14 @@ class BaseModule:
 
     def __del__(self):
         self.oscReceivers = {}
+        self._OSCOutList = []
         for key in self.__dict__.keys():
             del self.__dict__[key]
+        del self
 
 class CeciliaPlugin:
     def __init__(self, input, params=None, knobs=None):
-        self.input = Sig(input)
+        self.input = InputFader(input)
         gliss = 0.05
         totalTime = CeciliaLib.getVar("totalTime")
         if params == None:
@@ -853,8 +1113,8 @@ class CeciliaPlugin:
         else:
             self.out.interp = 1
 
-    def setInput(self, input):
-        self.input.value = input
+    def setInput(self, input, fadetime=0.05):
+        self.input.setInput(input, fadetime)
 
     def setGraph(self, which, func):
         totalTime = CeciliaLib.getVar("totalTime")
@@ -1136,26 +1396,64 @@ class CeciliaDeadResonPlugin(CeciliaPlugin):
         self.mix = Interp(self.input, self.total, self.sig3())
         self.out = Interp(self.input, self.mix, inter)
 
+class CeciliaChaosModPlugin(CeciliaPlugin):
+    def __init__(self, input, params, knobs):
+        CeciliaPlugin.__init__(self, input, params, knobs)
+
+        self.lfolo = Lorenz(self.sig1(), self.sig2(), stereo=True, mul=0.5, add=0.5)
+        self.lforo = Rossler(self.sig1(), self.sig2(), stereo=True, mul=0.5, add=0.5)
+        self.lfo = Sig(self.lfolo)
+        self.iamp = 1.0 - self.sig3()
+        self.modu = self.input * (self.lfo * self.sig3() + self.iamp)
+
+        if self.preset == 0:
+            inter = 0
+        else:
+            if self.preset == 1:
+                self.lfo.value = self.lfolo
+            else:
+                self.lfo.value = self.lforo
+            inter = 1
+            
+        self.out = Interp(self.input, self.modu, inter)
+
+    def setPreset(self, x, label):
+        self.preset = x
+        if self.preset == 0:
+            self.out.interp = 0
+        else:
+            if self.preset == 1:
+                self.lfo.value = self.lfolo
+            else:
+                self.lfo.value = self.lforo
+            self.out.interp = 1
+
 class AudioServer():
     def __init__(self):
         self.amp = 1.0
-        sr, bufsize, nchnls, duplex, host, outdev, indev = self.getPrefs()
+        sr, bufsize, nchnls, duplex, host, outdev, indev, firstin, firstout = self.getPrefs()
+        jackname = CeciliaLib.getVar("jack").get("client", "cecilia5")
         if CeciliaLib.getVar("DEBUG"):
-            print "AUDIO CONFIG:\nsr: %s, buffer size: %s, num of channels: %s, duplex: %s, host: %s, output device: %s, input device: %s" % (sr, bufsize, nchnls, duplex, host, outdev, indev)
-        self.server = Server(sr=sr, buffersize=bufsize, nchnls=nchnls, duplex=duplex, audio=host)
+            print "AUDIO CONFIG:"
+            print "sr: %s, buffer size: %s, num of channels: %s, duplex: %s, host: %s, output device: %s, input device: %s" % (sr, bufsize, nchnls, duplex, host, outdev, indev)
+            print "first physical input: %s, first physical output: %s" % (firstin, firstout)
+        self.server = Server(sr=sr, buffersize=bufsize, nchnls=nchnls, duplex=duplex, audio=host, jackname=jackname)
         if CeciliaLib.getVar("DEBUG"):
             self.server.verbosity = 15
+        if host == 'jack':
+            self.server.setJackAuto(True , True)
         self.setTimeCallable()
         self.timeOpened = True
         self.recording = False
         self.withTimer = False
-        self.plugins = [None, None, None]
-        self.out = self.plugin1 = self.plugin2 = self.plugin3 = None
+        self.withSpectrum = False
+        self.pluginObjs = [None] * NUM_OF_PLUGINS
+        self.out = self.spectrum = None
         self.pluginDict = {"Reverb": CeciliaReverbPlugin, "WGVerb": CeciliaWGReverbPlugin, "Filter": CeciliaFilterPlugin, "Para EQ": CeciliaEQPlugin, 
                            "Chorus": CeciliaChorusPlugin, "3 Bands EQ": CeciliaEQ3BPlugin, "Compress": CeciliaCompressPlugin, "Gate": CeciliaGatePlugin, 
                            "Disto": CeciliaDistoPlugin, "AmpMod": CeciliaAmpModPlugin, "Phaser": CeciliaPhaserPlugin, "Delay": CeciliaDelayPlugin, 
                            "Flange": CeciliaFlangePlugin, "Harmonizer": CeciliaHarmonizerPlugin, "Resonators": CeciliaResonatorsPlugin, 
-                           "DeadReson": CeciliaDeadResonPlugin}
+                           "DeadReson": CeciliaDeadResonPlugin, 'ChaosMod': CeciliaChaosModPlugin}
 
     def getPrefs(self):
         sr = CeciliaLib.getVar("sr")
@@ -1165,7 +1463,12 @@ class AudioServer():
         host = CeciliaLib.getVar("audioHostAPI")
         outdev = CeciliaLib.getVar("audioOutput")
         indev = CeciliaLib.getVar("audioInput")
-        return sr, bufsize, nchnls, duplex, host, outdev, indev
+        firstin = CeciliaLib.getVar("defaultFirstInput")
+        firstout = CeciliaLib.getVar("defaultFirstOutput")
+        return sr, bufsize, nchnls, duplex, host, outdev, indev, firstin, firstout
+
+    def dump(self, l):
+        pass
 
     def start(self, timer=True, rec=False):
         if CeciliaLib.getVar("DEBUG"):
@@ -1184,17 +1487,19 @@ class AudioServer():
             self.ctl7TrigFunc = TrigFunc(self.onNewCtl7Value, self.newCtl7Value)
         if rec:
             self.recording = True
-            fileformat = {"wav": 0, "aif": 1}[CeciliaLib.getVar("audioFileType")]
+            fileformat = AUDIO_FILE_FORMATS[CeciliaLib.getVar("audioFileType")]
             sampletype = CeciliaLib.getVar("sampSize")
             self.recamp = SigTo(self.amp, time=0.05, init=self.amp)
-            self.recorder = Record(self.plugin3.out * self.recamp, CeciliaLib.getVar("outputFile"), CeciliaLib.getVar("nchnls"),
+            self.recorder = Record(self.pluginObjs[-1].out * self.recamp, CeciliaLib.getVar("outputFile"), CeciliaLib.getVar("nchnls"),
                                    fileformat=fileformat, sampletype=sampletype, buffering=8)
+        if CeciliaLib.getVar("showSpectrum"):
+            self.withSpectrum = True
+            self.specamp = SigTo(self.amp, time=0.05, init=self.amp, mul=self.pluginObjs[-1].out)
+            self.spectrum = Spectrum(self.specamp, function=self.dump)
         if CeciliaLib.getVar("startOffset") > 0.0:
             self.server.startoffset = CeciliaLib.getVar("startOffset")
         if timer:
             self.withTimer = True
-            self.endcall = wx.CallLater(int((CeciliaLib.getVar("totalTime")+0.05)*1000), CeciliaLib.stopCeciliaSound)
-            #self.endcall = CallAfter(function=CeciliaLib.stopCeciliaSound, time=CeciliaLib.getVar("totalTime")+0.2)
             self.server.start()
         else:
             self.server.start()
@@ -1206,12 +1511,15 @@ class AudioServer():
         if CeciliaLib.getVar("DEBUG"):
             print "Audio server stop: begin"
         if self.withTimer:
-            self.endcall.Stop()
             self.withTimer = False
         self.server.stop()
         if self.recording:
             self.recording = False
             self.recorder.stop()
+        if self.withSpectrum:
+            self.withSpectrum = False
+            self.spectrum.poll(False)
+            self.spectrum.stop()
         self.timeOpened = False
         if CeciliaLib.getVar("grapher") != None:
             CeciliaLib.getVar("grapher").cursorPanel.setTime(CeciliaLib.getVar("startOffset"))
@@ -1225,15 +1533,19 @@ class AudioServer():
         self.server.shutdown()
 
     def boot(self):
-        sr, bufsize, nchnls, duplex, host, outdev, indev = self.getPrefs()
+        sr, bufsize, nchnls, duplex, host, outdev, indev, firstin, firstout = self.getPrefs()
         if CeciliaLib.getVar("DEBUG"):
-            print "AUDIO CONFIG:\nsr: %s, buffer size: %s, num of channels: %s, duplex: %s, host: %s, output device: %s, input device: %s" % (sr, bufsize, nchnls, duplex, host, outdev, indev)
+            print "AUDIO CONFIG:"
+            print "sr: %s, buffer size: %s, num of channels: %s, duplex: %s, host: %s, output device: %s, input device: %s" % (sr, bufsize, nchnls, duplex, host, outdev, indev)
+            print "first physical input: %s, first physical output: %s" % (firstin, firstout)
             print "MIDI CONFIG: \ninput device: %d" % CeciliaLib.getVar("midiDeviceIn")
         self.server.setSamplingRate(sr)
         self.server.setBufferSize(bufsize)
         self.server.setNchnls(nchnls)
         self.server.setDuplex(duplex)
         self.server.setOutputDevice(outdev)
+        self.server.setInputOffset(firstin)
+        self.server.setOutputOffset(firstout)
         if CeciliaLib.getVar("enableAudioInput"):
             self.server.setInputDevice(indev)
         if CeciliaLib.getVar("useMidi"):
@@ -1241,14 +1553,15 @@ class AudioServer():
         self.server.boot()
 
     def reinit(self):
+        jackname = CeciliaLib.getVar("jack").get("client", "cecilia5")
         if CeciliaLib.getVar("toDac"):
-            sr, bufsize, nchnls, duplex, host, outdev, indev = self.getPrefs()
-            self.server.reinit(audio=host)
+            sr, bufsize, nchnls, duplex, host, outdev, indev, firstin, firstout = self.getPrefs()
+            self.server.reinit(audio=host, jackname=jackname)
         else:
-            self.server.reinit(audio="offline_nb")
+            self.server.reinit(audio="offline_nb", jackname=jackname)
             dur = CeciliaLib.getVar("totalTime")
             filename = CeciliaLib.getVar("outputFile")
-            fileformat = {"wav": 0, "aif": 1}[CeciliaLib.getVar("audioFileType")]
+            fileformat = AUDIO_FILE_FORMATS[CeciliaLib.getVar("audioFileType")]
             sampletype = CeciliaLib.getVar("sampSize")
             self.server.recordOptions(dur=dur, filename=filename, fileformat=fileformat, sampletype=sampletype)
 
@@ -1264,7 +1577,9 @@ class AudioServer():
             CeciliaLib.getVar("grapher").cursorPanel.setTime(time)
             CeciliaLib.getVar("interface").controlPanel.setTime(time, args[1], args[2], args[3]/10)
             if time >= (CeciliaLib.getVar("totalTime") - 0.5):
-                wx.CallLater(250, CeciliaLib.getControlPanel().closeBounceToDiskDialog)
+                wx.CallAfter(CeciliaLib.getControlPanel().closeBounceToDiskDialog)
+            if time >= (CeciliaLib.getVar("totalTime")):
+                wx.CallAfter(CeciliaLib.stopCeciliaSound)
         else:
             CeciliaLib.getVar("grapher").cursorPanel.setTime(CeciliaLib.getVar("startOffset"))
             CeciliaLib.getVar("interface").controlPanel.setTime(0, 0, 0, 0)
@@ -1286,6 +1601,10 @@ class AudioServer():
             self.recamp.value = self.amp
         except:
             pass
+        try:
+            self.specamp.value = self.amp
+        except:
+            pass
 
     def setInOutDevice(self, device):
         self.server.setInOutDevice(device)
@@ -1305,6 +1624,12 @@ class AudioServer():
         else:
             return False
 
+    def isAudioServerBooted(self):
+        if self.server.getIsBooted():
+            return True
+        else:
+            return False
+
     def openCecFile(self, filepath):
         CeciliaLib.setVar("currentModule", None)
         CeciliaLib.setVar("currentModuleRef", None)
@@ -1335,12 +1660,17 @@ class AudioServer():
         CeciliaLib.getVar("mainFrame").onUpdateInterface(None)
 
     def loadModule(self, module):
-        if self.plugin1 != None:
-            del self.plugin1
-        if self.plugin2 != None:
-            del self.plugin2
-        if self.plugin3 != None:
-            del self.plugin3
+        for i in range(NUM_OF_PLUGINS):
+            if self.pluginObjs[i] != None:
+               del self.pluginObjs[i].out
+               self.pluginObjs[i] = None 
+        if self.spectrum != None:
+            del self.specamp
+            del self.spectrum._timer
+            del self.spectrum
+            self.spectrum = None
+        if self.out != None:
+            del self.out
         if CeciliaLib.getVar("systemPlatform") == "darwin":
             try:
                 del self.globalamp
@@ -1375,124 +1705,99 @@ class AudioServer():
         currentModule._createOpenSndCtrlReceivers()
         self.out = Sig(currentModule.out)
 
-        self.plugins = CeciliaLib.getVar("plugins")
-
-        if self.plugins[0] == None:
-            self.plugin1 = CeciliaNonePlugin(self.out)
-            self.plugin1.name = "None"
-        else:
-            pl = self.plugins[0]
-            name, params, knobs = pl.getName(), pl.getParams(), pl.getKnobs()
-            self.plugin1 = self.pluginDict[name](self.out, params, knobs)
-            self.plugin1.name = name
+        plugins = CeciliaLib.getVar("plugins")
 
-        if self.plugins[1] == None:
-            self.plugin2 = CeciliaNonePlugin(self.plugin1.out)
-            self.plugin2.name = "None"
-        else:
-            pl = self.plugins[1]
-            name, params, knobs = pl.getName(), pl.getParams(), pl.getKnobs()
-            self.plugin2 = self.pluginDict[name](self.plugin1.out, params, knobs)
-            self.plugin2.name = name
-
-        if self.plugins[2] == None:
-            self.plugin3 = CeciliaNonePlugin(self.plugin2.out)
-            self.plugin3.name = "None"
-        else:
-            pl = self.plugins[2]
-            name, params, knobs = pl.getName(), pl.getParams(), pl.getKnobs()
-            self.plugin3 = self.pluginDict[name](self.plugin2.out, params, knobs)
-            self.plugin3.name = name
+        for i in range(NUM_OF_PLUGINS):
+            if i == 0:
+                tmp_out = self.out
+            else:
+                tmp_out = self.pluginObjs[i-1].out
+            if plugins[i] == None:
+                self.pluginObjs[i] = CeciliaNonePlugin(tmp_out)
+                self.pluginObjs[i].name = "None"
+            else:
+                pl = plugins[i]
+                name, params, knobs = pl.getName(), pl.getParams(), pl.getKnobs()
+                self.pluginObjs[i] = self.pluginDict[name](tmp_out, params, knobs)
+                self.pluginObjs[i].name = name
 
-        self.plugin3.out.out()
+        self.pluginObjs[NUM_OF_PLUGINS-1].out.out()
         CeciliaLib.setVar("currentModule", currentModule)
         currentModule._setWidgetValues()
 
+    def movePlugin(self, vpos, dir):
+        i1 = vpos
+        i2 = vpos + dir
+        tmp = self.pluginObjs[i2]
+        self.pluginObjs[i2] = self.pluginObjs[i1]
+        self.pluginObjs[i1] = tmp
+        for i in range(NUM_OF_PLUGINS):
+            if i == 0:
+                tmp_out = self.out
+            else:
+                tmp_out = self.pluginObjs[i-1].out
+            self.pluginObjs[i].setInput(tmp_out)
+            self.pluginObjs[i].out.play()
+        self.pluginObjs[NUM_OF_PLUGINS-1].out.out()
+
     def setPlugin(self, order):
+        plugins = CeciliaLib.getVar("plugins")
+        tmp = self.pluginObjs[order]
         if order == 0:
-            tmp = self.plugin1
-            if self.plugins[0] == None:
-                self.plugin1 = CeciliaNonePlugin(self.out)
-                self.plugin1.name = "None"
-            else:
-                pl = self.plugins[0]
-                name, params, knobs = pl.getName(), pl.getParams(), pl.getKnobs()
-                self.plugin1 = self.pluginDict[name](self.out, params, knobs)
-                self.plugin1.name = name
-            self.plugin2.input.value = self.plugin1.out
-            del tmp
-        elif order == 1:
-            tmp = self.plugin2
-            if self.plugins[1] == None:
-                self.plugin2 = CeciliaNonePlugin(self.plugin1.out)
-                self.plugin2.name = "None"
-            else:
-                pl = self.plugins[1]
-                name, params, knobs = pl.getName(), pl.getParams(), pl.getKnobs()
-                self.plugin2 = self.pluginDict[name](self.plugin1.out, params, knobs)
-                self.plugin2.name = name
-            self.plugin3.input.value = self.plugin2.out
-            del tmp
-        elif order == 2:
-            tmp = self.plugin3
-            if self.plugins[2] == None:
-                self.plugin3 = CeciliaNonePlugin(self.plugin2.out)
-                self.plugin3.name = "None"
-            else:
-                pl = self.plugins[2]
-                name, params, knobs = pl.getName(), pl.getParams(), pl.getKnobs()
-                self.plugin3 = self.pluginDict[name](self.plugin2.out, params, knobs)
-                self.plugin3.name = name
-            self.plugin3.out.out()
-            del tmp
+            tmp_out = self.out
+        else:
+            tmp_out = self.pluginObjs[order-1].out
+        if plugins[order] == None:
+            self.pluginObjs[order] = CeciliaNonePlugin(tmp_out)
+            self.pluginObjs[order].name = "None"
+        else:
+            pl = plugins[order]
+            name, params, knobs = pl.getName(), pl.getParams(), pl.getKnobs()
+            self.pluginObjs[order] = self.pluginDict[name](tmp_out, params, knobs)
+            self.pluginObjs[order].name = name
+        if order < (NUM_OF_PLUGINS - 1):
+            self.pluginObjs[order+1].setInput(self.pluginObjs[order].out)
+        else:
+            self.pluginObjs[order].out.out()
+        del tmp
 
     def checkForAutomation(self):
-        if self.plugins[0] != None:
-            if self.plugins[0].getName() == self.plugin1.name:
-                self.plugin1.checkForAutomation()
-        if self.plugins[1] != None:
-            if self.plugins[1].getName() == self.plugin2.name:
-                self.plugin2.checkForAutomation()
-        if self.plugins[2] != None:
-            if self.plugins[2].getName() == self.plugin3.name:
-                self.plugin3.checkForAutomation()
+        plugins = CeciliaLib.getVar("plugins")
+        for i in range(NUM_OF_PLUGINS):
+            if plugins[i] != None:
+                if plugins[i].getName() == self.pluginObjs[i].name:
+                    self.pluginObjs[i].checkForAutomation()
 
     def updatePluginWidgets(self):
-        if self.plugins[0] != None:
-            if self.plugins[0].getName() == self.plugin1.name:
-                self.plugin1.updateWidget()
-        if self.plugins[1] != None:
-            if self.plugins[1].getName() == self.plugin2.name:
-                self.plugin2.updateWidget()
-        if self.plugins[2] != None:
-            if self.plugins[2].getName() == self.plugin3.name:
-                self.plugin3.updateWidget()
+        plugins = CeciliaLib.getVar("plugins")
+        for i in range(NUM_OF_PLUGINS):
+            if plugins[i] != None:
+                if plugins[i].getName() == self.pluginObjs[i].name:
+                    self.pluginObjs[i].updateWidget()
 
     def setPluginValue(self, order, which, x):
-        pl = self.plugins[order]
-        if pl != None:
-            if order == 0 and pl.getName() == self.plugin1.name:
-                self.plugin1.setValue(which, x)
-            elif order == 1 and pl.getName() == self.plugin2.name:
-                self.plugin2.setValue(which, x)
-            elif order == 2 and pl.getName() == self.plugin3.name:
-                self.plugin3.setValue(which, x)
-
-    def setPluginPreset(self, order, x, label):
-        pl = self.plugins[order]
-        if pl != None:
-            if order == 0 and pl.getName() == self.plugin1.name:
-                self.plugin1.setPreset(x, label)
-            elif order == 1 and pl.getName() == self.plugin2.name:
-                self.plugin2.setPreset(x, label)
-            elif order == 2 and pl.getName() == self.plugin3.name:
-                self.plugin3.setPreset(x, label)
-
+        plugins = CeciliaLib.getVar("plugins")
+        if plugins[order] != None:
+            if plugins[order].getName() == self.pluginObjs[order].name:
+                self.pluginObjs[order].setValue(which, x)
+
+    def setPluginPreset(self, order, which, label):
+        plugins = CeciliaLib.getVar("plugins")
+        if plugins[order] != None:
+            if plugins[order].getName() == self.pluginObjs[order].name:
+                self.pluginObjs[order].setPreset(which, label)
+
+    def setPluginGraph(self, order, which, func):
+        plugins = CeciliaLib.getVar("plugins")
+        if plugins[order] != None:
+            if plugins[order].getName() == self.pluginObjs[order].name:
+                self.pluginObjs[order].setGraph(which, func)
+        
     def getMidiCtlNumber(self, number, midichnl=1): 
         if not self.midiLearnRange:
             self.midiLearnSlider.setMidiCtl(number)
             self.midiLearnSlider.setMidiChannel(midichnl)
-            wx.CallAfter(self.server.stop)
+            wx.CallLater(250, self.server.stop)
         else:
             tmp = [number, midichnl]
             if not tmp in self.midiLearnCtlsAndChnls:
@@ -1500,7 +1805,7 @@ class AudioServer():
                 if len(self.midiLearnCtlsAndChnls) == 2:
                     self.midiLearnSlider.setMidiCtl([self.midiLearnCtlsAndChnls[0][0], self.midiLearnCtlsAndChnls[1][0]])
                     self.midiLearnSlider.setMidiChannel([self.midiLearnCtlsAndChnls[0][1], self.midiLearnCtlsAndChnls[1][1]])
-                    wx.CallAfter(self.server.stop)
+                    wx.CallLater(250, self.server.stop)
 
     def midiLearn(self, slider, rangeSlider=False):
         self.midiLearnSlider = slider
diff --git a/Resources/constants.py b/Resources/constants.py
index be6d59e..2d1205c 100644
--- a/Resources/constants.py
+++ b/Resources/constants.py
@@ -25,8 +25,8 @@ reload(sys)
 sys.setdefaultencoding("utf-8")
 
 APP_NAME = 'Cecilia5'
-APP_VERSION = '5.0.8 beta'
-APP_COPYRIGHT = 'iACT,  2012'
+APP_VERSION = '5.0.9 beta'
+APP_COPYRIGHT = 'iACT,  2013'
 FILE_EXTENSION = "c5"
 PRESETS_DELIMITER = "####################################\n" \
                     "##### Cecilia reserved section #####\n" \
@@ -49,8 +49,8 @@ PREFERENCES_FILE = os.path.join(TMP_PATH, 'ceciliaPrefs.txt')
 LOG_FILE = os.path.join(TMP_PATH, 'ceciliaLog.txt')
 DOC_PATH = os.path.join(TMP_PATH, 'doc')
 MODULES_PATH = os.path.join(RESOURCES_PATH, 'modules')
-# Folder to save automations
 AUTOMATION_SAVE_PATH = os.path.join(TMP_PATH, 'automation_save')
+SPLASH_FILE_PATH = os.path.join(RESOURCES_PATH, "Cecilia_splash.png")
 
 # Meter icons
 ICON_VUMETER = catalog['vu-metre2.png']
@@ -58,6 +58,10 @@ ICON_VUMETER_DARK = catalog['vu-metre-dark2.png']
 # Plugin icons
 ICON_PLUGINS_KNOB = catalog['knob-trans-sm.png']
 ICON_PLUGINS_KNOB_DISABLE = catalog['knob-disab-sm.png']
+ICON_PLUGINS_ARROW_UP = catalog['arrow_up.png']
+ICON_PLUGINS_ARROW_UP_HOVER = catalog['arrow_up_hover.png']
+ICON_PLUGINS_ARROW_DOWN = catalog['arrow_down.png']
+ICON_PLUGINS_ARROW_DOWN_HOVER = catalog['arrow_down_hover.png']
 # Toolbox icons
 ICON_TB_LOAD = catalog['load-normal-trans.png']
 ICON_TB_LOAD_OVER = catalog['load-hover-trans.png']
@@ -122,6 +126,11 @@ ICON_PTB_RANDOM = catalog['random-normal-trans.png']
 ICON_PTB_RANDOM_OVER = catalog['random-hover-trans.png']
 ICON_PTB_WAVES = catalog['waves-normal-trans.png']
 ICON_PTB_WAVES_OVER = catalog['waves-hover-trans.png']
+# Input icons
+ICON_INPUT_1_FILE = catalog['input-1-file.png']
+ICON_INPUT_2_LIVE = catalog['input-2-live.png']
+ICON_INPUT_3_MIC = catalog['input-3-mic.png']
+ICON_INPUT_4_MIC_RECIRC = catalog['input-4-mic-recirc.png']
 # Crossfade icons
 ICON_XFADE_LINEAR = catalog['xfade-linear.png']
 ICON_XFADE_POWER = catalog['xfade-power.png']
@@ -153,13 +162,31 @@ MIDI_DRIVERS = ['portmidi']
 
 # plugin types
 PLUGINS_CHOICE = ['None', 'Reverb', 'WGVerb', 'Filter', 'Chorus', 'Para EQ', '3 Bands EQ', 'Compress', 'Gate', 
-                  'Disto', 'AmpMod', 'Phaser', 'Delay', 'Flange', 'Harmonizer', 'Resonators', 'DeadReson']
+                  'Disto', 'AmpMod', 'Phaser', 'Delay', 'Flange', 'Harmonizer', 'Resonators', 'DeadReson', 'ChaosMod']
+NUM_OF_PLUGINS = 4
 
 # Audio settings
-AUDIO_FILE_FORMATS = ['aif', 'wav']
 SAMPLE_RATES = ['22050','44100','48000', '88200', '96000']
 BIT_DEPTHS= {'16 bits int': 0, '24 bits int': 1, '32 bits int': 2, '32 bits float': 3}
 BUFFER_SIZES = ['64','128','256','512','1024','2048','4096','8192','16384']
+AUDIO_FILE_FORMATS = {'wav': 0, 'aif': 1, 'au': 2, 'sd2': 4, 'flac': 5, 'caf': 6, 'ogg': 7}
+AUDIO_FILE_WILDCARD =  "All files|*.*|" \
+            "Wave file|*.wave;*.WAV;*.WAVE;*.Wav;*.Wave;*.wav|" \
+            "AIFF file|*.aif;*.aiff;*.aifc;*.AIF;*.AIFF;*.Aif;*.Aiff|" \
+            "Flac file|*.flac;*.FLAC;*.Flac;|" \
+            "OGG file|*.ogg;*.OGG;*.Ogg;|" \
+            "SD2 file|*.sd2;*.SD2;*.Sd2;|" \
+            "AU file|*.au;*.AU;*.Au;|" \
+            "CAF file|*.caf;*.CAF;*.Caf"
+
+POLY_CHORDS = {'00 - None': [0], '06 - Major':[0,4,7,12], '07 - Minor':[0,3,7,12], '08 - Seventh':[0,4,7,10], 
+                '10 - Minor 7':[0,3,7,10], '09 - Major 7':[0,4,7,11],  '13 - Major 11':[0,4,7,11,18],
+                '15 - Minor 7b5':[0,3,6,10], '16 - Dimini.':[0,3,6,9], '12 - Minor 9':[0,3,7,10,14], 
+                '11 - Major 9':[0,4,7,11,14], '17 - Ninth':[0,4,7,10,14], '14 - Minor 11':[0,3,7,10,17], 
+                '04 - Serial':[0,1,2,3,4,5,6,7,8,9,10,11], '05 - Whole T.': [0,2,4,6,8,10], 
+                '01 - Phasing': [0,0.1291,0.1171,0.11832,0.125001,0.12799,0.11976,0.138711,0.12866,0.13681],
+                '02 - Chorus': [0,0.291,0.371,0.2832,0.35001,0.2799,0.2976,0.38711,0.3866,0.3681],
+                '03 - Detuned': [0,0.8291,0.9371,1.2832,1.35001,0.82799,0.92976,1.38711,1.3866,0.93681]}
 
 # Menu Ids
 ID_OPEN = 1002
@@ -175,12 +202,14 @@ ID_PLAY_STOP = 1034
 ID_BOUNCE = 1035
 ID_BATCH_FOLDER = 1036
 ID_BATCH_PRESET = 1037
+ID_USE_SOUND_DUR = 1040
 ID_USE_MIDI = 2052
 ID_MARIO = 3002
 ID_OPEN_RECENT = 4000
 ID_OPEN_BUILTIN = 4100
 ID_OPEN_AS_TEXT = 4500
 ID_UPDATE_INTERFACE = 4501
+ID_SHOW_SPECTRUM = 4550
 ID_MODULE_INFO = 4600
 ID_DOC_FRAME = 4601
 
@@ -232,6 +261,7 @@ GRADIENT_DARK_COLOUR = "#313740"
 WIDGET_BORDER_COLOUR = "#BBBBBB"
 KNOB_BORDER_COLOUR = "#929292"
 POPUP_BACK_COLOUR = "#80A0B0"
+POPUP_DISABLE_COLOUR = "#888888"
 POPUP_BORDER_COLOUR = "#222222"
 POPUP_LABEL_COLOUR = "#FFFFFF"
 POPUP_HIGHLIGHT_COLOR = "#DDDDDD"
@@ -271,6 +301,8 @@ TR_PLAY_NORMAL_COLOUR = '#009911'
 TR_PLAY_CLICK_COLOUR = '#007A29'
 TR_RECORD_OFF_COLOUR = '#6E3131'
 TR_RECORD_ON_COLOUR = '#FF0000'
+PREFS_FOREGROUND = '#222222'
+PREFS_PATH_BACKGROUND = '#AAAAAA'
 
 # Hue, Brightness, Saturation
 COLOUR_CLASSES = {'green': [100., 0.25, .75], 
@@ -292,23 +324,23 @@ COLOUR_CLASSES = {'green': [100., 0.25, .75],
         'filterred': [342., 0.44, .47], 
         'compblue': [240., 0.44, .22], 
         'grey': [0., 0.34, 0.],
-        'green1': [100., 0.25, .75], 
-        'green2': [85., 0.3, .6], 
+        'green1': [100., 0.25, .75], # filters popup and freq
+        'green2': [85., 0.3, .6], # filters Q
         'green3': [75., 0.4, .6],
         'green4': [65., 0.45, .4],
-        'blue1': [230., 0.35, .55], 
+        'blue1': [230., 0.35, .55], # dry/wet, amplitude, balance
         'blue2': [220., 0.4, .45], 
         'blue3': [203., 0.43, .4], 
         'blue4': [190., 0.5, .35],
-        'red1': [0., .28, .75],        
+        'red1': [0., .28, .75], # Pitch, transposition
         'red2': [355., 0.35, .65], 
         'red3': [350., 0.45, .55], 
         'red4': [345., 0.5, .45], 
-        'orange1': [22., 0.35, .85], 
+        'orange1': [22., 0.35, .85], # post-processing knob lines
         'orange2': [18., 0.4, .7], 
         'orange3': [16., 0.47, .55], 
         'orange4': [14., 0.52, .45],
-        'purple1': [290., 0.3, .65], 
+        'purple1': [290., 0.3, .65], # process specific parameters 
         'purple2': [280., 0.4, .6], 
         'purple3': [270., 0.47, .55], 
         'purple4': [260., 0.52, .45]
diff --git a/Resources/images.py b/Resources/images.py
index 6f5d170..0c66049 100644
--- a/Resources/images.py
+++ b/Resources/images.py
@@ -27571,3 +27571,110 @@ Cecilia_about_small_png = PyEmbeddedImage(
 index.append('Cecilia_about_small.png')
 catalog['Cecilia_about_small.png'] = Cecilia_about_small_png
 
+arrow_up_png = PyEmbeddedImage(
+    "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAKCAYAAACJxx+AAAAABHNCSVQICAgIfAhkiAAAAAlw"
+    "SFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoA"
+    "AADZSURBVBiVZZChboRAGIRnC6ayBnvIipakcimSIHgDGgyXDQ9Q36TyXqAeV4lfDOYsDo0i"
+    "KQmpILm0CelOTdlcep+aTP7/EyNIYiNJkkcA0Foft87FGUEQvBljCODh4kAI4TRNc7euK4QQ"
+    "DskfAABJkIRS6pUkjTHM8/xl6682g5Ry/2ey2RrSNL2fpokbwzBQSnlrDWEYHjzPs0++7yOK"
+    "ooM1tG37zX/UdX0iCWee5+eyLFOt9VfXdZ9935/GcXTjOL7OsuzDXZblRin1VFXV+/kmRVHs"
+    "Se5+AQJZhQOlqy7aAAAAAElFTkSuQmCC")
+index.append('arrow_up.png')
+catalog['arrow_up.png'] = arrow_up_png
+
+arrow_up_hover_png = PyEmbeddedImage(
+    "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAKCAYAAACJxx+AAAAABHNCSVQICAgIfAhkiAAAAAlw"
+    "SFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoA"
+    "AACDSURBVBiVdc2hDkEBFAbg79gVBJtgEwnMFE0z3TMInku0qd5FxQNooqAcwcW9xr/95ew7"
+    "58hMr6KPbm32BXbY/ARo4IrLP7BElp3/AvsK2NYAerhXwA2dzNTwzBpNn7SwwvvCsbL96iEz"
+    "FRGxwBAHnMsLI0wjYlagjUlmniovRMQYgwcxmnE+EQDXdAAAAABJRU5ErkJggg==")
+index.append('arrow_up_hover.png')
+catalog['arrow_up_hover.png'] = arrow_up_hover_png
+
+arrow_down_png = PyEmbeddedImage(
+    "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAKCAYAAACJxx+AAAAABHNCSVQICAgIfAhkiAAAAAlw"
+    "SFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoA"
+    "AADaSURBVBiVXYyxaoNQGIWPpim9uLj4FL5AB18kg4h7B6cutQ/QqTh10UAG38FJGgS5KIKC"
+    "GbO1goOd2zTt6dIrkm/6+c75j+Z53rNpmscoil5I/uAf13U3JG813/fv4zh+KsvyNAzDhxBi"
+    "LYQwHMe5CYLgEQC0LMs+eUGe518AdJ0kpZSvuEBKuSf5qwNAVVXhOI5zOE0Tuq57AACQBEkk"
+    "SfKm5tM0fVdeV19N02wX926eU00A66IoznVdn23bvlb+alH8DsPwYBiG1vf9Sfm5AABt295Z"
+    "lrVauj8obIq9NbpJHwAAAABJRU5ErkJggg==")
+index.append('arrow_down.png')
+catalog['arrow_down.png'] = arrow_down_png
+
+arrow_down_hover_png = PyEmbeddedImage(
+    "iVBORw0KGgoAAAANSUhEUgAAAAgAAAAKCAYAAACJxx+AAAAABHNCSVQICAgIfAhkiAAAAAlw"
+    "SFlzAAAN1wAADdcBQiibeAAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoA"
+    "AACNSURBVBiVbdCxakJREIThb8N9gpDG3lj6DAYEX1LLFOnzIloYQppUKbSwNdVY5Fw5aBYW"
+    "lpl/lmULK3wn+dRVVc0wHXDCvqp2+Gr+M+ZYSAJb5KY/knhoiY37WsO44RHnLv2LpyR/QINe"
+    "O+DtqnfASwcs/wMKBxxRoz6MFyVJVb03M9d/dLOqmjTtZ9QuhhBbdE2yjxkAAAAASUVORK5C"
+    "YII=")
+index.append('arrow_down_hover.png')
+catalog['arrow_down_hover.png'] = arrow_down_hover_png
+
+input_1_file_png = PyEmbeddedImage(
+    "iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABmJLR0QA/wD/AP+gvaeTAAAA"
+    "CXBIWXMAAAsSAAALEgHS3X78AAAAB3RJTUUH3QoEFi81+6IJKwAAAXBJREFUOMvF1L9qlFEQ"
+    "BfDfbELAQjSIyFaWsUmpiIWIWGqhrWhraSEWeQcrESzW1Da+QgQXfAXLCAqKMRo0qAm6ORb5"
+    "FtblW7MrogcuXObOHM78u/xvJPnte407V5Ukl3ALA6Txm8f9quonqapqZe78wr5Pdhr38AWf"
+    "sY2POIUnSS5XVQ5SOqryW5KbLfZekpUkr5JcnRTfabHNYavF3kcX17GS5EaS+WkU7iS51twr"
+    "yZFhekmuJFlLsp59HJuV8GiS5SSdYdOSLCY5l+RdkuPTpDyKEziLhWHTqmoLn7DXFjCpBnNJ"
+    "DpMl6g42kjzHV/xo6mxawuAkHlJdLGEVT/ECb7Azi8LCBno4g4tYwyO8beazO6lck1Lerqpn"
+    "SXbJY+p2Vb0fadyhWeZwZCXzmlptNmXiyh5E2MH3Jm4T6y31Gkwibkt5gMVmTHbxssVnoTmZ"
+    "hvA8ekkuNCMyjj0s4y4+/On3Nb7r/ap68M8/27+Cn+kPyYT4OERuAAAAAElFTkSuQmCC")
+index.append('input-1-file.png')
+catalog['input-1-file.png'] = input_1_file_png
+
+input_2_live_png = PyEmbeddedImage(
+    "iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABmJLR0QA/wD/AP+gvaeTAAAA"
+    "CXBIWXMAAAsSAAALEgHS3X78AAAAB3RJTUUH3QoEFjI2ncc0jQAAAZFJREFUOMvtVLGKFEEQ"
+    "fT0OmJkogsEGBhtctBj7F4LZxfoPmsoFh99gPLCBiRgIK8sGGsjBJu7ibSAm7gzuTLIz3V3d"
+    "VV0GuroI3s1ykeCLuquqH/VeUwX8xz7atr3w3htlWQIAVNVYawsisl3X3b8SKQCEEJ7rTzDz"
+    "R+fcrStJJqLzHWFKSUXk6LI3+UVJVaXd2RiTjDF6GWH2Z2CxWGA+n+/iZr9WVWU2m11bLpdZ"
+    "7w4Hg8F1AI+qqloC8HupjojujEaj4yzLXgH40Ms3Vb2RUvrsnDslojP9ja219qGIqKo+7i05"
+    "hKApJZvn+TdjzBvVH7allM67rvtkjIGI9P/ZzWaTE9GJiFTr9fqu9/5pjPFFXddHzFyklOqm"
+    "aYaHTshtZn7NzF2M8TSE8IyZz0Sk9t4/AABmRl8PAQDW2psxxmNmficiNsZ4QkT3djWr1aqf"
+    "h+PxGADgnDNN07xl5omqft1uty/btm0AYDqdYjgcHrwYnsQYv4hIqaoVM5fe+/cHj1tRFL9k"
+    "/82SyWTyD+/Q79RjMTK6t+geAAAAAElFTkSuQmCC")
+index.append('input-2-live.png')
+catalog['input-2-live.png'] = input_2_live_png
+
+input_3_mic_png = PyEmbeddedImage(
+    "iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABmJLR0QA/wD/AP+gvaeTAAAA"
+    "CXBIWXMAAAsSAAALEgHS3X78AAAAB3RJTUUH3QoEFjMatgRpLwAAAc1JREFUOMvtlLGKU0EU"
+    "hv8ZvVx2I4IiCUgIiNsIFoJYpvcJrPcJLHwCBS0tfAS7kEK2CSgSYyFEQxCrvYSAsViXhHCv"
+    "KXIzk3PmzFiYyHqJmhUr8e+G/8x3zjD/DPBff03j8RgAYIy5ZIx5b4xJ8jwvA8B8Pv9zMDM/"
+    "CysR0YuiH0LYHtbtdneIaLkGeu/JWru7AbobQrgTQoiLni4UKgB2vVZKmTiOi7ALAI4A7AM4"
+    "sxF4eHio+v2+ns1mUmiiiUharZZOkkStmnwBcAtAAkAVgWcBoFarXfbe71cqlechhDmAcyt/"
+    "bq29Xq/Xbyulnq4mA4Cd4ul+AJZKpWoI4YH3fqS19icLoii6Fsfxfa31yxPAn0oDABG5EIKN"
+    "ougIwOu16Zx7R0SflFJORIr74l9l8DwzvxKRD4PBoLxcLh8T0ZPRaFQWkbfOuTdpml7cKjbW"
+    "frvUPM9viEjinJsw8yNmfigin0VkaIy5uZr499nr9Xrfu1prrzDzXREZOec+OufuGWOuricb"
+    "DofbBbrZbAIA0jStZlm2x8wHRHQwnU73siyrAkCn0zn9s1ssFk1mPvbeT7z3E2Y+ttY2Tw1q"
+    "NBrrV7JRIQTVbrf/kW/wK1BnLU12SNmKAAAAAElFTkSuQmCC")
+index.append('input-3-mic.png')
+catalog['input-3-mic.png'] = input_3_mic_png
+
+input_4_mic_recirc_png = PyEmbeddedImage(
+    "iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABmJLR0QA/wD/AP+gvaeTAAAA"
+    "CXBIWXMAAAsSAAALEgHS3X78AAAAB3RJTUUH3QoEFjMseb78tgAAA6xJREFUOMuFVE1oXFUU"
+    "Pq8TK3TCVBMjZCSuRKx1IxaJilIwzaIRFHSpu7hRcCVYpRVBQRAh/pEs7Ma46KYLNyKlTYTG"
+    "pBnMhESSCZn8MJmZzGQy8+bNe6++9+7PuZ+LzpNJYurZ3e+e893v3u/cQ/QfMT8/f2A9PT1t"
+    "BUFgjYyMWDEGgEZHR4/UWoeBZrNJPT09RERUr9efUko9mUwmn0gmk6ZcLpuBgYFbU1NT5eHh"
+    "YY/+L7LZLBERFQqF047j/CClzGutwcwwxkBKCWYueZ53s16vnyMi2tjYsO5LurS09HIYhkUA"
+    "UEqh0Wj8atv2uwDOViqVy1rrOWMMmNnd2tr6ti3gIMnc3BwREQ0ODlpCiE0AsG37z62trWfa"
+    "72UFQfBwnO+67iVjTENKiWKx+Mmx6hqNxjUAcF33j4WFhX4iIinlCSnl+1JKRFH0SpyrlHqO"
+    "mf8G0Gg0GoNHyAqFwvNSShdAPZ/P98VOSilTWus1AGDm2x0uf1yr1X5iZgRB8Lkx5jKAh/4l"
+    "rFar3xlj0Gq1fonJiIjCMDytlCrgXmQ6RRhjqsYYAIDned/kcrmT1HHi9wAEgPMx1mq1Tvq+"
+    "/4hSartNeIeIyHGcrnbNqDGGhRBT2Wy258CVAfQBOAOgO8aEEJ+5rvuRUmqpTXjD9/0Poyh6"
+    "O86pVCpvLi8vP05EVCqV7jU2M1MikegktyzLAjNnjDF5Iurp6uq6yMxXiag3kUiULcv6oFqt"
+    "Wv39/YjrMpkMUTqd7iTKAViN12EYvsfMO0EQXFRK/ej7/iAzV6Moej3O2dnZGVlfX/9rZmbm"
+    "xc4bn2o2m7/HD2yM+S02RSl1jZk3pZSfMvNdKeVXh1qtJIRAqVR6o1PZq3t7e1eklE0hRNBs"
+    "Nn/uNEcpdYWZ/SiK3ursgNXV1TNCCDBz1vO8NHVuEhFprSeMMXBd9+sY8zzvglLqNjO7Qojr"
+    "vu8/S0Q0Pj7e7TjOLAA4jnP1gMOzs7NERDQ2NpYKggBKKWxvb3/ZVndSKfUogD4pZR+AxOTk"
+    "ZMq27RvMDACFlZWVgcPiaGJiIlb8NIC7SikA+KJcLp8HcApACkB3vV5/TWt9nZkhhIh2d3ff"
+    "ISIqFotH/3J8QhAELwghFrTWkFLCGJMHkDfGbCqloLVGGIa39vf3zxER1Wo169gBG8fa2tpj"
+    "6XT6JQAXUqnUWcuy2BhzwnXdDBHdXFxcvDM0NNSybZt6e3uPn4eZzIHvSrlc7kGtdTeApJQy"
+    "mclkHrjfPP0H15gBcemMfZQAAAAASUVORK5CYII=")
+index.append('input-4-mic-recirc.png')
+catalog['input-4-mic-recirc.png'] = input_4_mic_recirc_png
+
diff --git a/Resources/menubar.py b/Resources/menubar.py
index 13829ea..520d013 100644
--- a/Resources/menubar.py
+++ b/Resources/menubar.py
@@ -26,11 +26,11 @@ def buildFileTree():
     root = MODULES_PATH
     directories = []
     files = {}
-    for dir in os.listdir(MODULES_PATH):
+    for dir in sorted(os.listdir(MODULES_PATH)):
         if not dir.startswith('.'):
             directories.append(dir)
             files[dir] = []
-            for f in os.listdir(os.path.join(root, dir)):
+            for f in sorted(os.listdir(os.path.join(root, dir))):
                 if not f.startswith('.'):
                     files[dir].append(f)
     return root, directories, files
@@ -81,9 +81,12 @@ class InterfaceMenuBar(wx.MenuBar):
                         except:
                             ok = False 
                         if ok:
-                            menu.Append(subId1, file)
-                            self.frame.Bind(wx.EVT_MENU, self.mainFrame.onOpenPrefModule, id=subId1)
-                            subId1 += 1
+                            try:
+                                menu.Append(subId1, CeciliaLib.ensureNFD(file))
+                                self.frame.Bind(wx.EVT_MENU, self.mainFrame.onOpenPrefModule, id=subId1)
+                                subId1 += 1
+                            except:
+                                pass
                 
         self.fileMenu.AppendMenu(-1, 'Modules', self.openBuiltinMenu)
 
@@ -102,7 +105,7 @@ class InterfaceMenuBar(wx.MenuBar):
         if recentFiles:
             for file in recentFiles:
                 try:
-                    self.openRecentMenu.Append(subId2, file)
+                    self.openRecentMenu.Append(subId2, CeciliaLib.ensureNFD(file))
                     subId2 += 1
                 except:
                     pass
@@ -145,24 +148,33 @@ class InterfaceMenuBar(wx.MenuBar):
         self.frame.Bind(wx.EVT_MENU, self.mainFrame.onRememberInputSound, id=ID_REMEMBER)
 
         # Action Options Menu
-        actionMenu = wx.Menu()
-        actionMenu.Append(ID_PLAY_STOP, 'Play / Stop\tCtrl+.', 'Start and stop audio server')
+        self.actionMenu = wx.Menu()
+        self.actionMenu.Append(ID_PLAY_STOP, 'Play / Stop\tCtrl+.', 'Start and stop audio server')
         self.frame.Bind(wx.EVT_MENU, self.mainFrame.onShortPlayStop, id=ID_PLAY_STOP)
-        actionMenu.AppendSeparator()
-        actionMenu.Append(ID_BOUNCE, 'Bounce to Disk\tCtrl+B', 'Record the audio processing in a soundfile')
+        self.actionMenu.AppendSeparator()
+        self.actionMenu.Append(ID_BOUNCE, 'Bounce to Disk\tCtrl+B', 'Record the audio processing in a soundfile')
         self.frame.Bind(wx.EVT_MENU, self.mainFrame.onBounceToDisk, id=ID_BOUNCE)
-        actionMenu.Append(ID_BATCH_FOLDER, 'Batch Processing on Sound Folder', '')
-        self.frame.Bind(wx.EVT_MENU, self.mainFrame.onBatchProcessing, id=ID_BATCH_FOLDER)
-        actionMenu.Append(ID_BATCH_PRESET, 'Batch Processing on Preset Sequence', '')
+        self.actionMenu.Append(ID_BATCH_PRESET, 'Batch Processing on Preset Sequence', '')
         self.frame.Bind(wx.EVT_MENU, self.mainFrame.onBatchProcessing, id=ID_BATCH_PRESET)
-        actionMenu.AppendSeparator()
-        actionMenu.Append(ID_USE_MIDI, 'Use MIDI', 'Allow Cecilia to use a midi device.', kind=wx.ITEM_CHECK)
+        self.actionMenu.Append(ID_BATCH_FOLDER, 'Batch Processing on Sound Folder', '')
+        self.frame.Bind(wx.EVT_MENU, self.mainFrame.onBatchProcessing, id=ID_BATCH_FOLDER)
+        self.actionMenu.Append(ID_USE_SOUND_DUR, 'Use Sound Duration on Folder Batch Processing', kind=wx.ITEM_CHECK)
+        if CeciliaLib.getVar("useSoundDur") == 1: 
+            self.actionMenu.FindItemById(ID_USE_SOUND_DUR).Check(True)
+        self.frame.Bind(wx.EVT_MENU, self.mainFrame.onUseSoundDuration, id=ID_USE_SOUND_DUR)
+        self.actionMenu.AppendSeparator()
+        self.actionMenu.Append(ID_SHOW_SPECTRUM, 'Show Spectrum', '', kind=wx.ITEM_CHECK)
+        self.frame.Bind(wx.EVT_MENU, self.mainFrame.onShowSpectrum, id=ID_SHOW_SPECTRUM)
+        if CeciliaLib.getVar('showSpectrum'):
+            self.actionMenu.FindItemById(ID_SHOW_SPECTRUM).Check(True)
+        self.actionMenu.AppendSeparator()
+        self.actionMenu.Append(ID_USE_MIDI, 'Use MIDI', 'Allow Cecilia to use a midi device.', kind=wx.ITEM_CHECK)
         if CeciliaLib.getVar("useMidi") == 1: midiCheck = True
         else: midiCheck = False
-        actionMenu.FindItemById(ID_USE_MIDI).Check(midiCheck)
-        actionMenu.FindItemById(ID_USE_MIDI).Enable(False)
+        self.actionMenu.FindItemById(ID_USE_MIDI).Check(midiCheck)
+        self.actionMenu.FindItemById(ID_USE_MIDI).Enable(False)
         self.frame.Bind(wx.EVT_MENU, self.mainFrame.onUseMidi, id=ID_USE_MIDI)
-    
+
         windowMenu = wx.Menu()
         windowMenu.Append(ID_MARIO, 'Eh Oh Mario!\tShift+Ctrl+E', '', kind=wx.ITEM_CHECK)
         self.frame.Bind(wx.EVT_MENU, self.marioSwitch, id=ID_MARIO)
@@ -177,10 +189,13 @@ class InterfaceMenuBar(wx.MenuBar):
  
         self.Append(self.fileMenu, '&File')
         self.Append(self.editMenu, '&Edit')
-        self.Append(actionMenu, '&Action')
+        self.Append(self.actionMenu, '&Action')
         self.Append(windowMenu, '&Window')
         self.Append(helpMenu, '&Help')
 
+    def spectrumSwitch(self, state):
+        self.actionMenu.FindItemById(ID_SHOW_SPECTRUM).Check(state)
+
     def marioSwitch(self, evt):
         if evt.GetInt() == 1:
             self.FindItemById(ID_MARIO).Check(1)
diff --git a/Resources/modules/Dynamics/Degrade.c5 b/Resources/modules/Dynamics/Degrade.c5
index aa18420..48a71a0 100644
--- a/Resources/modules/Dynamics/Degrade.c5
+++ b/Resources/modules/Dynamics/Degrade.c5
@@ -51,15 +51,16 @@ class Module(BaseModule):
         self.biquad.type = index
 
 Interface = [   csampler(name="snd"), 
-                cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue"),
-                cslider(name="bit", label="Bit Depth", min=1, max=16, init=8, rel="lin", unit="bit", col="olivegreen"),
-                cslider(name="sr", label="Sampling Rate Ratio", min=0.01, max=1, init=0.25, rel="log", unit="x", col="green"),
-                cslider(name="clip", label="Wrap Threshold", min=0.01, max=1, init=0.8, rel="lin", unit="x", col="lightgreen"),
-                cslider(name="filter", label="Filter Freq", min=30, max=20000, init=15000, rel="log", unit="Hz", col="tan"),
-                cslider(name="filterq", label="Filter Q", min=0.5, max=10, init=0.707, rel="log", unit="Q", col="tan"),
-                cslider(name="drywet", label="Dry / Wet", min=0, max=1, init=1, rel="lin", unit="x", col="blue"),
-                cpopup(name="filttype", label="Filter Type", init="Lowpass", col="tan", value=["Lowpass","Highpass","Bandpass","Bandstop"]),
-                cpopup(name="balance", label = "Balance", init= "Off", col="blue", value=["Off","Compress", "Source"]),
+                cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue1"),
+                cslider(name="bit", label="Bit Depth", min=1, max=16, init=8, rel="lin", unit="bit", col="purple1"),
+                cslider(name="sr", label="Sample Rate Ratio", min=0.01, max=1, init=0.25, rel="log", unit="x", col="purple2"),
+                cslider(name="clip", label="Wrap Threshold", min=0.01, max=1, init=0.8, rel="lin", unit="x", col="purple3"),
+                cslider(name="filter", label="Filter Freq", min=30, max=20000, init=15000, rel="log", unit="Hz", col="green1"),
+                cslider(name="filterq", label="Filter Q", min=0.5, max=10, init=0.707, rel="log", unit="Q", col="green2"),
+                cslider(name="drywet", label="Dry / Wet", min=0, max=1, init=1, rel="lin", unit="x", col="blue1"),
+                cpopup(name="filttype", label="Filter Type", init="Lowpass", col="green1", value=["Lowpass","Highpass","Bandpass","Bandstop"]),
+                cpopup(name="balance", label = "Balance", init= "Off", col="blue1", value=["Off","Compress", "Source"]),
+                cpoly()
           ]
 
 
@@ -1481,4 +1482,4 @@ CECILIA_PRESETS = {u'01-Bass Crunch': {'active': False,
                                      'filter': [8001.7780146563609, 0, None, 1],
                                      'filterq': [0.70197917803316123, 0, None, 1],
                                      'sr': [0.086574585635359108, 0, None, 1]},
-                     'userTogglePopups': {'cliptype': 1, 'filttype': 1, 'polynum': 0, 'polyspread': 0.001}}}
\ No newline at end of file
+                     'userTogglePopups': {'cliptype': 1, 'filttype': 1, 'polynum': 0, 'polyspread': 0.001}}}
diff --git a/Resources/modules/Dynamics/Distortion.c5 b/Resources/modules/Dynamics/Distortion.c5
index 891a0d6..7a962b5 100644
--- a/Resources/modules/Dynamics/Distortion.c5
+++ b/Resources/modules/Dynamics/Distortion.c5
@@ -52,15 +52,16 @@ class Module(BaseModule):
         self.out.type = index
 
 Interface = [   csampler(name="snd"), 
-                cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue"),
-                cslider(name="prefiltf", label="Pre Filter Freq", min=100, max=18000, init=250, rel="log", unit="Hz", col="green"),
-                cslider(name="prefiltq", label="Pre Filter Q", min=.5, max=10, init=0.707, rel="log", col="green"),
-                cslider(name="drv", label="Drive", min=0.5, max=1, init=.9, rel="lin", col="blue"),
-                cslider(name="cut", label="Post Filter Freq", min=100, max=18000, init=5000, rel="log", col="red"),
-                cslider(name="q", label="Post Filter Q", min=.5, max=10, init=0.707, rel="log", col="red"),
-                cpopup(name="prefilttype", label="Pre Filter Type", init="Highpass", col="green", value=["Lowpass","Highpass","Bandpass","Bandstop"]),
-                cpopup(name="postfilttype", label="Post Filter Type", init="Lowpass", col="red", value=["Lowpass","Highpass","Bandpass","Bandstop"]),
+                cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue1"),
+                cslider(name="prefiltf", label="Pre Filter Freq", min=100, max=18000, init=250, rel="log", unit="Hz", col="green1"),
+                cslider(name="prefiltq", label="Pre Filter Q", min=.5, max=10, init=0.707, rel="log", col="green2"),
+                cslider(name="drv", label="Drive", min=0.5, max=1, init=.9, rel="lin", col="purple1"),
+                cslider(name="cut", label="Post Filter Freq", min=100, max=18000, init=5000, rel="log", col="green3"),
+                cslider(name="q", label="Post Filter Q", min=.5, max=10, init=0.707, rel="log", col="green4"),
+                cpopup(name="prefilttype", label="Pre Filter Type", init="Highpass", col="green1", value=["Lowpass","Highpass","Bandpass","Bandstop"]),
+                cpopup(name="postfilttype", label="Post Filter Type", init="Lowpass", col="green3", value=["Lowpass","Highpass","Bandpass","Bandstop"]),
                 cpopup(name="balance", label = "Balance", init= "Off", col="blue", value=["Off","Compress", "Source"]),
+                cpoly()
             ]
 
 
diff --git a/Resources/modules/Dynamics/DynamicsProcessor.c5 b/Resources/modules/Dynamics/DynamicsProcessor.c5
index 103ba4c..022ac6a 100644
--- a/Resources/modules/Dynamics/DynamicsProcessor.c5
+++ b/Resources/modules/Dynamics/DynamicsProcessor.c5
@@ -42,14 +42,14 @@ class Module(BaseModule):
 Interface = [   csampler(name="snd"), 
                 cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue"),
                 cslider(name="inputgain", label="Input Gain", min=-48, max=18, init=0, rel="lin", unit="dB", col="blue"),
-                cslider(name="compthresh", label="Compress Thresh", min=-60, max=-0.1, init=-20, rel="lin", unit="dB", col="orange"),
-                cslider(name="comprise", label="Compress Rise Time", min=0.01, max=1, init=0.01, rel="lin", unit="sec", col="orange"),
-                cslider(name="compfall", label="Compress Fall Time", min=0.01, max=1, init=0.1, rel="lin", unit="sec", col="orange"),
-                cslider(name="compknee", label="Compress Knee", min=0, max=1, init=0, rel="lin", unit="x", col="orange"),
+                cslider(name="compthresh", label="Comp Thresh", min=-60, max=-0.1, init=-20, rel="lin", unit="dB", col="orange"),
+                cslider(name="comprise", label="Comp Rise Time", min=0.01, max=1, init=0.01, rel="lin", unit="sec", col="orange"),
+                cslider(name="compfall", label="Comp Fall Time", min=0.01, max=1, init=0.1, rel="lin", unit="sec", col="orange"),
+                cslider(name="compknee", label="Comp Knee", min=0, max=1, init=0, rel="lin", unit="x", col="orange"),
                 cslider(name="gatethresh", label="Gate Thresh", min=-80, max=-0.1, init=-60, rel="lin", unit="dB", col="grey"),
                 cslider(name="gateslope", label="Gate Slope", min=0.01, max=1, init=0.05, rel="lin", unit="x", col="grey"),
                 cslider(name="outputgain", label="Output Gain", min=-48, max=18, init=0, rel="lin", unit="dB", col="blue"),
-                cpopup(name="compratio", label="Compress Ratio", init="1:1", col="orange", value=["0.25:1", "0.5:1", "1:1", "2:1", "3:1", "5:1", "8:1", "13:1", "21:1",
+                cpopup(name="compratio", label="Comp Ratio", init="1:1", col="orange", value=["0.25:1", "0.5:1", "1:1", "2:1", "3:1", "5:1", "8:1", "13:1", "21:1",
                         "34:1", "55:1", "100:1"]),
                 cpoly()
           ]
diff --git a/Resources/modules/Filters/BrickWall.c5 b/Resources/modules/Filters/BrickWall.c5
index 8d59dc6..3185ef2 100644
--- a/Resources/modules/Filters/BrickWall.c5
+++ b/Resources/modules/Filters/BrickWall.c5
@@ -38,7 +38,7 @@ Interface = [
     cslider(name="freq", label="Cutoff Frequency", min=20, max=18000, init=1000, rel="log", unit="Hz", col="green"),
     cslider(name="bw", label="Bandwidth", min=20, max=18000, init=1000, rel="log", unit="Hz", col="green"),
     cslider(name="order", label="Filter Order", min=32, max=1024, init=256, res="int", rel="lin", up=True, col="grey"),
-    cpopup(name="type", label="Label Type", value=["Lowpass", "Highpass","BandStop","BandPass"], init="Lowpass", col="green"),
+    cpopup(name="type", label="Filter Type", value=["Lowpass", "Highpass","BandStop","BandPass"], init="Lowpass", col="green"),
     cpopup(name="balance", label = "Balance", init= "Off", col="blue", value=["Off","Compress", "Source"]),
     cpoly()
 ]
diff --git a/Resources/modules/Filters/MaskFilter.c5 b/Resources/modules/Filters/MaskFilter.c5
index 5a341c9..18d9fa5 100644
--- a/Resources/modules/Filters/MaskFilter.c5
+++ b/Resources/modules/Filters/MaskFilter.c5
@@ -32,7 +32,7 @@ class Module(BaseModule):
         self.balanced2 = Balance(self.hp2, self.osc, freq=10)
         self.out1 = Interp(self.hp, self.balanced1)
         self.out2 = Interp(self.hp2, self.balanced2)
-        self.out = (self.out1*self.mix + self.out2*(1.0-self.mix)) * 0.5
+        self.out = (self.out1*(1.0-self.mix) + self.out2*self.mix) * 0.5
 
 #INIT
         self.balance(self.balance_index, self.balance_value)
@@ -67,2591 +67,3 @@ Interface = [   csampler(name="snd"),
                 cpopup(name="balance", label = "Balance", init= "Off", col="blue", value=["Off","Compress", "Source"]),
                 cpoly()
           ]
-
-
-####################################
-##### Cecilia reserved section #####
-#### Presets saved from the app ####
-####################################
-
-
-CECILIA_PRESETS = {u'01-Moving Slice': {'active': False,
-                      'gainSlider': 0.0,
-                      'nchnls': 2,
-                      'plugins': {0: ['None', [0, 0, 0, 0], [[0, 0, None], [0, 0, None], [0, 0, None]]],
-                                  1: ['None', [0, 0, 0, 0], [[0, 0, None], [0, 0, None], [0, 0, None]]],
-                                  2: ['None', [0, 0, 0, 0], [[0, 0, None], [0, 0, None], [0, 0, None]]]},
-                      'totalTime': 30.000000000000071,
-                      'userGraph': {'env': {'curved': False, 'data': [[0.0, 1.0], [1.0, 1.0]]},
-                                    'filtrangemax': {'curved': True,
-                                                     'data': [[0.0, 0.68731742364597714],
-                                                              [0.17708229674594481, 0.2721963370719806],
-                                                              [0.30644840282615182, 0.47741323455387913],
-                                                              [0.64578565031346402, 0.67101408123491524],
-                                                              [0.77316150860782173, 0.48644794073232728],
-                                                              [1.0, 0.73541217620258414]]},
-                                    'filtrangemin': {'curved': True,
-                                                     'data': [[0.0, 0.61569799099068045],
-                                                              [0.16912130560254748, 0.23992952929180797],
-                                                              [0.34426311075728921, 0.43869306521767193],
-                                                              [0.6288685441337446, 0.61164315491939758],
-                                                              [0.77515175639367107, 0.44127440984008565],
-                                                              [1.0, 0.7044360407336181]]},
-                                    'sndend': {'curved': False, 'data': [[0.0, 1.0], [1.0, 1.0]]},
-                                    'sndgain': {'curved': False, 'data': [[0.0, 0.72727272727272729], [1.0, 0.72727272727272729]]},
-                                    'sndstart': {'curved': False, 'data': [[0.0, 0.0], [1.0, 0.0]]},
-                                    'sndtrans': {'curved': False, 'data': [[0.0, 0.5], [1.0, 0.5]]},
-                                    'sndxfade': {'curved': False, 'data': [[0.0, 0.02], [1.0, 0.02]]}},
-                      'userInputs': {'snd': {'dursnd': 5.3334465026855469,
-                                             'gain': [0.0, False, False],
-                                             'gensizesnd': 262144,
-                                             'loopIn': [0.0, False, False],
-                                             'loopMode': 1,
-                                             'loopOut': [5.3334465026855469, False, False],
-                                             'loopX': [1.0, False, False],
-                                             'nchnlssnd': 2,
-                                             'offsnd': 0.0,
-                                             'path': u'/Users/jm/Desktop/Dropbox/Maitrise/svnBKP/memoire/bub/snds/guitar.wav',
-                                             'srsnd': 44100.0,
-                                             'startFromLoop': 0,
-                                             'transp': [0.0, False, False],
-                                             'type': 'csampler'}},
-                      'userSliders': {'filtrange': [[1847.2304092671259, 2320.8560784296797], 1, None, [1, 1]]},
-                      'userTogglePopups': {'filtnum': 3, 'polynum': 0, 'polyspread': 0.001}},
- u'02-Open Up!': {'active': True,
-                  'gainSlider': 0.0,
-                  'nchnls': 2,
-                  'plugins': {0: ['None', [0, 0, 0, 0], [[0, 0, None], [0, 0, None], [0, 0, None]]],
-                              1: ['None', [0, 0, 0, 0], [[0, 0, None], [0, 0, None], [0, 0, None]]],
-                              2: ['None', [0, 0, 0, 0], [[0, 0, None], [0, 0, None], [0, 0, None]]]},
-                  'totalTime': 30.000000000000071,
-                  'userGraph': {'env': {'curved': False, 'data': [[0.0, 1.0], [1.0, 1.0]]},
-                                'filtrangemax': {'curved': False, 'data': [[0.0, 0.56986624332614866], [1.0, 0.99741865537758645]]},
-                                'filtrangemin': {'curved': False, 'data': [[0.0, 0.56665244316481811], [1.0, 3.2144248885109565e-17]]},
-                                'sndend': {'curved': False, 'data': [[0.0, 1.0], [1.0, 1.0]]},
-                                'sndgain': {'curved': False, 'data': [[0.0, 0.72727272727272729], [1.0, 0.72727272727272729]]},
-                                'sndstart': {'curved': False, 'data': [[0.0, 0.0], [1.0, 0.0]]},
-                                'sndtrans': {'curved': False, 'data': [[0.0, 0.5], [1.0, 0.5]]},
-                                'sndxfade': {'curved': False, 'data': [[0.0, 0.02], [1.0, 0.02]]}},
-                  'userInputs': {'snd': {'dursnd': 5.3334465026855469,
-                                         'gain': [0.0, False, False],
-                                         'gensizesnd': 262144,
-                                         'loopIn': [0.0, False, False],
-                                         'loopMode': 1,
-                                         'loopOut': [5.3334465026855469, False, False],
-                                         'loopX': [1.0, False, False],
-                                         'nchnlssnd': 2,
-                                         'offsnd': 0.0,
-                                         'path': u'/Users/jm/Desktop/Dropbox/Maitrise/svnBKP/memoire/bub/snds/guitar.wav',
-                                         'srsnd': 44100.0,
-                                         'startFromLoop': 0,
-                                         'transp': [0.0, False, False],
-                                         'type': 'csampler'}},
-                  'userSliders': {'filtrange': [[21.895503093250564, 19610.600292032068], 1, None, [1, 1]]},
-                  'userTogglePopups': {'filtnum': 3, 'polynum': 0, 'polyspread': 0.001}},
- u'03-Mid Tunnel': {'gainSlider': 0.0,
-                    'nchnls': 2,
-                    'plugins': {0: ['None', [0, 0, 0, 0], [[0, 0, None], [0, 0, None], [0, 0, None]]],
-                                1: ['None', [0, 0, 0, 0], [[0, 0, None], [0, 0, None], [0, 0, None]]],
-                                2: ['None', [0, 0, 0, 0], [[0, 0, None], [0, 0, None], [0, 0, None]]]},
-                    'totalTime': 30.000000000000135,
-                    'userGraph': {'env': {'curved': False, 'data': [[0.0, 1.0], [1.0, 1.0]]},
-                                  'filtrangemax': {'curved': False,
-                                                   'data': [[0.0, 1.0],
-                                                            [0.02084784555677175, 0.72393164599439863],
-                                                            [0.16713105781669813, 0.56646962402715595],
-                                                            [0.3333167479351179, 0.72651299061681229],
-                                                            [0.49950243805353767, 0.56776029633836267],
-                                                            [0.66568812817195755, 0.72909433523922607],
-                                                            [0.83286894218330187, 0.56905096864956961],
-                                                            [1.0, 0.726377470024136]]},
-                                  'filtrangemin': {'curved': False,
-                                                   'data': [[0.0, 3.2144248885109565e-17],
-                                                            [0.026818588914319774, 0.38964751739180947],
-                                                            [0.1691213056025474, 0.56388827940474195],
-                                                            [0.3333167479351179, 0.38835684508060248],
-                                                            [0.49950243805353767, 0.56130693478232807],
-                                                            [0.66767837595780666, 0.38835684508060248],
-                                                            [0.83386406607622654, 0.56388827940474195],
-                                                            [1.0, 0.38849236567327944]]},
-                                  'sndend': {'curved': False, 'data': [[0.0, 1.0], [1.0, 1.0]]},
-                                  'sndgain': {'curved': False, 'data': [[0.0, 0.72727272727272729], [1.0, 0.72727272727272729]]},
-                                  'sndstart': {'curved': False, 'data': [[0.0, 0.0], [1.0, 0.0]]},
-                                  'sndtrans': {'curved': False, 'data': [[0.0, 0.5], [1.0, 0.5]]},
-                                  'sndxfade': {'curved': False, 'data': [[0.0, 0.02], [1.0, 0.02]]}},
-                    'userInputs': {'snd': {'dursnd': 5.3334465026855469,
-                                           'gain': [0.0, False, False],
-                                           'gensizesnd': 262144,
-                                           'loopIn': [0.0, False, False],
-                                           'loopMode': 1,
-                                           'loopOut': [5.3334465026855469, False, False],
-                                           'loopX': [1.0, False, False],
-                                           'nchnlssnd': 2,
-                                           'offsnd': 0.0,
-                                           'path': u'/Users/jm/Desktop/Dropbox/Maitrise/svnBKP/memoire/bub/snds/guitar.wav',
-                                           'srsnd': 44100.0,
-                                           'startFromLoop': 0,
-                                           'transp': [0.0, False, False],
-                                           'type': 'csampler'}},
-                    'userSliders': {'filtrange': [[300.77782404124252, 2997.9798884480952], 1, None, [1, 1]]},
-                    'userTogglePopups': {'filtnum': 3, 'polynum': 0, 'polyspread': 0.001}},
- u'04-Large Auto-Wah': {'gainSlider': 0.0,
-                        'nchnls': 2,
-                        'plugins': {0: ['None', [0, 0, 0, 0], [[0, 0, None], [0, 0, None], [0, 0, None]]],
-                                    1: ['None', [0, 0, 0, 0], [[0, 0, None], [0, 0, None], [0, 0, None]]],
-                                    2: ['None', [0, 0, 0, 0], [[0, 0, None], [0, 0, None], [0, 0, None]]]},
-                        'totalTime': 30.000000000000135,
-                        'userGraph': {'env': {'curved': False, 'data': [[0.0, 1.0], [1.0, 1.0]]},
-                                      'filtrangemax': {'curved': False,
-                                                       'data': [[0.0, 0.60325378489655268],
-                                                                [0.002004008016032064, 0.67765844545718024],
-                                                                [0.0040080160320641279, 0.74531978782668717],
-                                                                [0.0060120240480961915, 0.80010564289902353],
-                                                                [0.0080160320641282558, 0.83705075110117688],
-                                                                [0.01002004008016032, 0.85280676545682466],
-                                                                [0.012024048096192383, 0.84594571334404423],
-                                                                [0.014028056112224447, 0.81708941411089453],
-                                                                [0.016032064128256512, 0.76885312338895984],
-                                                                [0.018036072144288574, 0.70560851163875393],
-                                                                [0.02004008016032064, 0.63308745825724044],
-                                                                [0.022044088176352703, 0.55786256951426938],
-                                                                [0.024048096192384766, 0.48675150114354554],
-                                                                [0.026052104208416832, 0.42619907202228946],
-                                                                [0.028056112224448895, 0.38169316817448556],
-                                                                [0.030060120240480961, 0.35726737390477065],
-                                                                [0.032064128256513023, 0.355135406762428],
-                                                                [0.03406813627254509, 0.37549048761165493],
-                                                                [0.036072144288577149, 0.41648782896282271],
-                                                                [0.038076152304609222, 0.47441182865286996],
-                                                                [0.040080160320641281, 0.54401281605808449],
-                                                                [0.04208416833667334, 0.61898283142227384],
-                                                                [0.044088176352705406, 0.6925273182675955],
-                                                                [0.046092184368737472, 0.75798091622194408],
-                                                                [0.048096192384769532, 0.80941154476194621],
-                                                                [0.050100200400801598, 0.84215802956866348],
-                                                                [0.052104208416833664, 0.85325254624737923],
-                                                                [0.05410821643286573, 0.84168959520199882],
-                                                                [0.056112224448897789, 0.8085171303851354],
-                                                                [0.058116232464929855, 0.75674158289611004],
-                                                                [0.060120240480961921, 0.69105538716856252],
-                                                                [0.062124248496993981, 0.61741170413646662],
-                                                                [0.064128256513026047, 0.54248488435407083],
-                                                                [0.066132264529058113, 0.47306556946982137],
-                                                                [0.068136272545090179, 0.41544525420121126],
-                                                                [0.070140280561122245, 0.37484608615567955],
-                                                                [0.072144288577154297, 0.35494758092220913],
-                                                                [0.074148296593186364, 0.35755314639629904],
-                                                                [0.076152304609218444, 0.38242663934542609],
-                                                                [0.078156312625250496, 0.42731376714575803],
-                                                                [0.080160320641282562, 0.48814639504387419],
-                                                                [0.082164328657314628, 0.55941124251099872],
-                                                                [0.08416833667334668, 0.63464955362120501],
-                                                                [0.086172344689378746, 0.70704245616735184],
-                                                                [0.088176352705410813, 0.7700289582307982],
-                                                                [0.090180360721442879, 0.81790057297806873],
-                                                                [0.092184368737474945, 0.84631868064890592],
-                                                                [0.094188376753507011, 0.85270773905320973],
-                                                                [0.096192384769539063, 0.83648870578372669],
-                                                                [0.098196392785571129, 0.79913151701467522],
-                                                                [0.1002004008016032, 0.74402186671599446],
-                                                                [0.10220440881763526, 0.67615436012565333],
-                                                                [0.10420841683366733, 0.60167985107899413],
-                                                                [0.10621242484969939, 0.52734798815777406],
-                                                                [0.10821643286573146, 0.45989549187976353],
-                                                                [0.11022044088176351, 0.40543560356292324],
-                                                                [0.11222444889779558, 0.36890404030892743],
-                                                                [0.11422845691382764, 0.35361166938314109],
-                                                                [0.11623246492985971, 0.36094444325510305],
-                                                                [0.11823647294589178, 0.39023779028280065],
-                                                                [0.12024048096192384, 0.43883684505320336],
-                                                                [0.1222444889779559, 0.50233705968402498],
-                                                                [0.12424849699398796, 0.57498338940745553],
-                                                                [0.12625250501002003, 0.65019187411869728],
-                                                                [0.12825651302605209, 0.72114634478668915],
-                                                                [0.13026052104208416, 0.78141617503410954],
-                                                                [0.13226452905811623, 0.82553909086332267],
-                                                                [0.13426853707414826, 0.84951621829634794],
-                                                                [0.13627254509018036, 0.85117450260285388],
-                                                                [0.13827655310621242, 0.83036365294560177],
-                                                                [0.14028056112224449, 0.78896976328710744],
-                                                                [0.14228456913827653, 0.73074437509039492],
-                                                                [0.14428857715430859, 0.66096447391595825],
-                                                                [0.14629258517034066, 0.58595423453213502],
-                                                                [0.14829659318637273, 0.51251185893253715],
-                                                                [0.15030060120240479, 0.447293453114401],
-                                                                [0.15230460921843689, 0.3962097820625487],
-                                                                [0.15430861723446893, 0.36389057522776519],
-                                                                [0.15631262525050099, 0.35326493266547015],
-                                                                [0.15831663326653306, 0.3652958597605786],
-                                                                [0.16032064128256512, 0.3988929897413695],
-                                                                [0.16232464929859719, 0.45101140396885037],
-                                                                [0.16432865731462926, 0.51692759388718146],
-                                                                [0.16633266533066132, 0.59066755411529492],
-                                                                [0.16833667334669336, 0.66554820846586438],
-                                                                [0.17034068136272543, 0.73478309927830188],
-                                                                [0.17234468937875749, 0.79209744624774459],
-                                                                [0.17434869739478956, 0.83229683177159641],
-                                                                [0.17635270541082163, 0.85173797267871842],
-                                                                [0.17835671342685369, 0.84865891214883404],
-                                                                [0.18036072144288576, 0.82333870642286],
-                                                                [0.18236472945891782, 0.77807213384651241],
-                                                                [0.18436873747494989, 0.71696171837465927],
-                                                                [0.18637274549098196, 0.64554591651275717],
-                                                                [0.18837675350701402, 0.57029716523182705],
-                                                                [0.19038076152304609, 0.49803528293502364],
-                                                                [0.19238476953907813, 0.43530938713387296],
-                                                                [0.19438877755511019, 0.38780434583291878],
-                                                                [0.19639278557114226, 0.35982555612370198],
-                                                                [0.19839679358717432, 0.3539087446689087],
-                                                                [0.20040080160320639, 0.37059015398367068],
-                                                                [0.20240480961923848, 0.40835794260485664],
-                                                                [0.20440881763527052, 0.46378920376656357],
-                                                                [0.20641282565130259, 0.53186018453541306],
-                                                                [0.20841683366733466, 0.60640159014616624],
-                                                                [0.21042084168336672, 0.68065770916005996],
-                                                                [0.21242484969939879, 0.74789868575387608],
-                                                                [0.21442885771543085, 0.80203044870630702],
-                                                                [0.21643286573146292, 0.83814701902243194],
-                                                                [0.21843687374749496, 0.8529751403796153],
-                                                                [0.22044088176352702, 0.84517093539524912],
-                                                                [0.22244488977955909, 0.81544170166388985],
-                                                                [0.22444889779559116, 0.76648180914997555],
-                                                                [0.22645290581162322, 0.70272850857593072],
-                                                                [0.22845691382765529, 0.62995978196957059],
-                                                                [0.23046092184368736, 0.55477068230435089],
-                                                                [0.23246492985971942, 0.48397562173841208],
-                                                                [0.23446893787575149, 0.42399077926052237],
-                                                                [0.23647294589178355, 0.38025260033558955],
-                                                                [0.23847695390781562, 0.35672509011287018],
-                                                                [0.24048096192384769, 0.35554055437107773],
-                                                                [0.24248496993987975, 0.37680634796346296],
-                                                                [0.24448897795591179, 0.41859514521311753],
-                                                                [0.24649298597194386, 0.47711961405568681],
-                                                                [0.24849699398797592, 0.54707566315605627],
-                                                                [0.25050100200400799, 0.62212315340300572],
-                                                                [0.25250501002004005, 0.69546050674528048],
-                                                                [0.25450901803607212, 0.76044113538642544],
-                                                                [0.25651302605210419, 0.81117582416324197],
-                                                                [0.25851703406813625, 0.84306647200018237],
-                                                                [0.26052104208416832, 0.85322281928091204],
-                                                                [0.26252505010020039, 0.8407243930020275],
-                                                                [0.26452905811623245, 0.80670392953584358],
-                                                                [0.26653306613226452, 0.7542447143705715],
-                                                                [0.26853707414829653, 0.68810114296007774],
-                                                                [0.27054108216432865, 0.61426782834281124],
-                                                                [0.27254509018036072, 0.53943630744425353],
-                                                                [0.27454909819639278, 0.47038858494451902],
-                                                                [0.27655310621242485, 0.41338247802440858],
-                                                                [0.27855711422845691, 0.3735844683922302],
-                                                                [0.28056112224448898, 0.35460146239364781],
-                                                                [0.28256513026052099, 0.35815389593560382],
-                                                                [0.28456913827655306, 0.38391981082965004],
-                                                                [0.28657314629258518, 0.42956403396557102],
-                                                                [0.28857715430861719, 0.49094981479746175],
-                                                                [0.29058116232464926, 0.56251374036918689],
-                                                                [0.29258517034068132, 0.63776994921051477],
-                                                                [0.29458917835671339, 0.70989794703720566],
-                                                                [0.29659318637274545, 0.77236075033009532],
-                                                                [0.29859719438877752, 0.81949733524283241],
-                                                                [0.30060120240480959, 0.84703569800422385],
-                                                                [0.30260521042084165, 0.85248002798677158],
-                                                                [0.30460921843687377, 0.83533690382233594],
-                                                                [0.30661322645290578, 0.79716001233859224],
-                                                                [0.30861723446893785, 0.74140933742476223],
-                                                                [0.31062124248496992, 0.67313758058477058],
-                                                                [0.31262525050100198, 0.59853223298341873],
-                                                                [0.31462925851703405, 0.52435480114253463],
-                                                                [0.31663326653306612, 0.45732800944167123],
-                                                                [0.31863727454909818, 0.40352651745676482],
-                                                                [0.32064128256513025, 0.36782637161928405],
-                                                                [0.32264529058116237, 0.35346308756813666],
-                                                                [0.32464929859719438, 0.36173841433216758],
-                                                                [0.32665330661322645, 0.39190235639920212],
-                                                                [0.32865731462925851, 0.44122114604926271],
-                                                                [0.33066132264529058, 0.50522500559765238],
-                                                                [0.33266533066132264, 0.57811324477654968],
-                                                                [0.33466933867735466, 0.65327997914981106],
-                                                                [0.33667334669338672, 0.72391282353286768],
-                                                                [0.33867735470941879, 0.78361030064149872],
-                                                                [0.34068136272545085, 0.82696200902615169],
-                                                                [0.34268537074148292, 0.85003896948628055],
-                                                                [0.34468937875751499, 0.85074970971230102],
-                                                                [0.34669338677354705, 0.82902981509013951],
-                                                                [0.34869739478957912, 0.78684776661831501],
-                                                                [0.35070140280561118, 0.72802653684526153],
-                                                                [0.35270541082164325, 0.65789711264416706],
-                                                                [0.35470941883767532, 0.58281534616709874],
-                                                                [0.35671342685370738, 0.50958592193101349],
-                                                                [0.35871743486973945, 0.44484564608294147],
-                                                                [0.36072144288577151, 0.39446195053554928],
-                                                                [0.36272545090180358, 0.36300112573570686],
-                                                                [0.36472945891783565, 0.35331447630038237],
-                                                                [0.36673346693386771, 0.36627990636697882],
-                                                                [0.36873747494989978, 0.40072235486049063],
-                                                                [0.37074148296593185, 0.45352029165467256],
-                                                                [0.37274549098196391, 0.51988862284606208],
-                                                                [0.37474949899799598, 0.59381236534535975],
-                                                                [0.37675350701402804, 0.66859178671920416],
-                                                                [0.37875751503006011, 0.73744960408407445],
-                                                                [0.38076152304609218, 0.79414521142229921],
-                                                                [0.38276553106212424, 0.83354026770201506],
-                                                                [0.38476953907815625, 0.8520643863688121],
-                                                                [0.38677354709418837, 0.84803872062143937],
-                                                                [0.38877755511022039, 0.82182811783452481],
-                                                                [0.39078156312625245, 0.77580805332428471],
-                                                                [0.39278557114228452, 0.71414934026062282],
-                                                                [0.39478957915831658, 0.64244012753515978],
-                                                                [0.39679358717434865, 0.56717944403935305],
-                                                                [0.39879759519038072, 0.49518818959680888],
-                                                                [0.40080160320641278, 0.43299095463003773],
-                                                                [0.40280561122244485, 0.38622469444303081],
-                                                                [0.40480961923847697, 0.35912785015860949],
-                                                                [0.40681362725450898, 0.35415621744344722],
-                                                                [0.40881763527054105, 0.37176037696110892],
-                                                                [0.41082164328657311, 0.41034485810235627],
-                                                                [0.41282565130260518, 0.46641273699690672],
-                                                                [0.41482965931863724, 0.53488256384257815],
-                                                                [0.41683366733466931, 0.60954889632658593],
-                                                                [0.41883767535070138, 0.68364470084767559],
-                                                                [0.42084168336673344, 0.7504546509364024],
-                                                                [0.42284569138276556, 0.80392373944151296],
-                                                                [0.42484969939879758, 0.8392060457652587],
-                                                                [0.42685370741482964, 0.85310392319754424],
-                                                                [0.42885771543086171, 0.84435780266028926],
-                                                                [0.43086172344689377, 0.81376034785595763],
-                                                                [0.43286573146292584, 0.76408461590260635],
-                                                                [0.43486973947895791, 0.69983273428007264],
-                                                                [0.43687374749498992, 0.62682787157611397],
-                                                                [0.43887775551102198, 0.55168648185425695],
-                                                                [0.44088176352705405, 0.48121865330520536],
-                                                                [0.44288577154308612, 0.42181090777535452],
-                                                                [0.44488977955911818, 0.37884738824857206],
-                                                                [0.44689378757515025, 0.35622189224502449],
-                                                                [0.44889779559118231, 0.355984975706156],
-                                                                [0.45090180360721438, 0.37815811045368147],
-                                                                [0.45290581162324645, 0.42073173819151566],
-                                                                [0.45490981963927851, 0.47984739741706345],
-                                                                [0.45691382765531058, 0.55014741702166459],
-                                                                [0.45891783567134264, 0.62526048373724663],
-                                                                [0.46092184368737471, 0.69837907629622931],
-                                                                [0.46292585170340678, 0.76287643326192989],
-                                                                [0.46492985971943884, 0.81290713853771324],
-                                                                [0.46693386773547091, 0.84393689329795929],
-                                                                [0.46893787575150297, 0.85315346094129962],
-                                                                [0.47094188376753504, 0.83972154099353424],
-                                                                [0.47294589178356711, 0.80485847265684585],
-                                                                [0.47494989979959917, 0.7517239069684335],
-                                                                [0.47695390781563124, 0.68513344661614772],
-                                                                [0.47895791583166331, 0.6111222063262004],
-                                                                [0.48096192384769537, 0.53639784848471928],
-                                                                [0.48296593186372744, 0.46773266554966425],
-                                                                [0.4849699398797595, 0.41134980501870816],
-                                                                [0.48697394789579157, 0.37235926358050797],
-                                                                [0.48897795591182358, 0.35429476647997493],
-                                                                [0.49098196392785565, 0.35879350486875811],
-                                                                [0.49298597194388771, 0.3854477566473884],
-                                                                [0.49498997995991978, 0.43184183844958968],
-                                                                [0.49699398797595185, 0.49377103979863168],
-                                                                [0.49899799599198391, 0.56562269736304593],
-                                                                [0.50100200400801598, 0.64088487243005454],
-                                                                [0.50300601202404804, 0.71273652999446913],
-                                                                [0.50501002004008011, 0.77466573134351202],
-                                                                [0.50701402805611218, 0.82105981314571463],
-                                                                [0.50901803607214424, 0.8477140649243462],
-                                                                [0.51102204408817631, 0.85221280331313087],
-                                                                [0.51302605210420837, 0.83414830621259795],
-                                                                [0.51503006012024044, 0.79515776477440048],
-                                                                [0.51703406813627251, 0.7387749042434425],
-                                                                [0.51903807615230457, 0.67010972130839097],
-                                                                [0.52104208416833664, 0.59538536346690651],
-                                                                [0.5230460921843687, 0.5213741231769623],
-                                                                [0.52505010020040077, 0.45478366282467597],
-                                                                [0.52705410821643284, 0.40164909713626268],
-                                                                [0.5290581162324649, 0.36678602879957284],
-                                                                [0.53106212424849697, 0.3533541088518059],
-                                                                [0.53306613226452904, 0.36257067649514479],
-                                                                [0.5350701402805611, 0.39360043125538952],
-                                                                [0.53707414829659306, 0.44363113653117181],
-                                                                [0.53907815631262523, 0.50812849349687461],
-                                                                [0.5410821643286573, 0.58124708605585373],
-                                                                [0.54308617234468937, 0.65636015277143933],
-                                                                [0.54509018036072143, 0.72666017237603742],
-                                                                [0.5470941883767535, 0.7857758316015887],
-                                                                [0.54909819639278556, 0.82834945933942172],
-                                                                [0.55110220440881763, 0.85052259408694908],
-                                                                [0.5531062124248497, 0.8502856775480816],
-                                                                [0.55511022044088165, 0.82766018154453391],
-                                                                [0.55711422845691383, 0.78469666201775423],
-                                                                [0.5591182364729459, 0.72528891648790139],
-                                                                [0.56112224448897796, 0.6548210879388533],
-                                                                [0.56312625250501003, 0.57967969821699283],
-                                                                [0.56513026052104198, 0.50667483551303738],
-                                                                [0.56713426853707405, 0.44242295389050285],
-                                                                [0.56913827655310611, 0.39274722193715039],
-                                                                [0.57114228456913818, 0.36214976713281849],
-                                                                [0.57314629258517036, 0.35340364659556101],
-                                                                [0.57515030060120231, 0.36730152402784372],
-                                                                [0.57715430861723438, 0.40258383035158946],
-                                                                [0.57915831663326645, 0.45605291885669735],
-                                                                [0.58116232464929851, 0.522862868945425],
-                                                                [0.58316633266533058, 0.59695867346651266],
-                                                                [0.58517034068136264, 0.67162500595052232],
-                                                                [0.58717434869739471, 0.74009483279619304],
-                                                                [0.58917835671342678, 0.79616271169074582],
-                                                                [0.59118236472945895, 0.83474719283199372],
-                                                                [0.59318637274549091, 0.85235135234965786],
-                                                                [0.59519038076152297, 0.84737971963449743],
-                                                                [0.59719438877755504, 0.82028287535007693],
-                                                                [0.59919839679358711, 0.77351661516307246],
-                                                                [0.60120240480961917, 0.71131938019630114],
-                                                                [0.60320641282565124, 0.63932812575375897],
-                                                                [0.60521042084168331, 0.56406744225795047],
-                                                                [0.60721442885771537, 0.4923582295324887],
-                                                                [0.60921843687374755, 0.43069951646882415],
-                                                                [0.6112224448897795, 0.38467945195858388],
-                                                                [0.61322645290581157, 0.35846884917166683],
-                                                                [0.61523046092184364, 0.35444318342429265],
-                                                                [0.6172344689378757, 0.3729673020910888],
-                                                                [0.61923847695390777, 0.41236235837080404],
-                                                                [0.62124248496993983, 0.46905796570902974],
-                                                                [0.6232464929859719, 0.53791578307389809],
-                                                                [0.62525050100200397, 0.61269520444774428],
-                                                                [0.62725450901803614, 0.6866189469470404],
-                                                                [0.6292585170340681, 0.7529872781384318],
-                                                                [0.63126252505010017, 0.8057852149326129],
-                                                                [0.63326653306613223, 0.84022766342612609],
-                                                                [0.6352705410821643, 0.85319309349272288],
-                                                                [0.63727454909819636, 0.84350644405739894],
-                                                                [0.63927855711422843, 0.81204561925755803],
-                                                                [0.6412825651302605, 0.76166192371016495],
-                                                                [0.64328657314629256, 0.69692164786209509],
-                                                                [0.64529058116232474, 0.62369222362601162],
-                                                                [0.64729458917835669, 0.54861045714894152],
-                                                                [0.64929859719438876, 0.47848103294784811],
-                                                                [0.65130260521042083, 0.4196598031747924],
-                                                                [0.65330661322645289, 0.37747775470296796],
-                                                                [0.65531062124248496, 0.35575786008080484],
-                                                                [0.65731462925851702, 0.35646860030682398],
-                                                                [0.65931863727454909, 0.37954556076695223],
-                                                                [0.66132264529058116, 0.42289726915160325],
-                                                                [0.66332665330661333, 0.48259474626023485],
-                                                                [0.66533066132264529, 0.55322759064328941],
-                                                                [0.66733466933867724, 0.62839432501655079],
-                                                                [0.66933867735470931, 0.70128256419544677],
-                                                                [0.67134268537074138, 0.76528642374383893],
-                                                                [0.67334669338677344, 0.81460521339389957],
-                                                                [0.67535070140280551, 0.84476915546093656],
-                                                                [0.67735470941883758, 0.85304448222496887],
-                                                                [0.67935871743486964, 0.83868119817382247],
-                                                                [0.68136272545090171, 0.80298105233634354],
-                                                                [0.68336673346693377, 0.74917956035143674],
-                                                                [0.68537074148296584, 0.6821527686505755],
-                                                                [0.68737474949899791, 0.60797533680968996],
-                                                                [0.68937875751502997, 0.53336998920833956],
-                                                                [0.69138276553106204, 0.4650982323683488],
-                                                                [0.6933867735470941, 0.40934755745451623],
-                                                                [0.69539078156312617, 0.37117066597077192],
-                                                                [0.69739478957915824, 0.35402754180633417],
-                                                                [0.6993987975951903, 0.35947187178888002],
-                                                                [0.70140280561122237, 0.38701023455027023],
-                                                                [0.70340681362725443, 0.43414681946300498],
-                                                                [0.7054108216432865, 0.49660962275589515],
-                                                                [0.70741482965931857, 0.56873762058258404],
-                                                                [0.70941883767535063, 0.64399382942391359],
-                                                                [0.7114228456913827, 0.71555775499563756],
-                                                                [0.71342685370741477, 0.77694353582753062],
-                                                                [0.71543086172344683, 0.82258775896345204],
-                                                                [0.7174348697394789, 0.84835367385750049],
-                                                                [0.71943887775551096, 0.85190610739945816],
-                                                                [0.72144288577154303, 0.83292310140087655],
-                                                                [0.7234468937875751, 0.79312509176870016],
-                                                                [0.72545090180360716, 0.73611898484858906],
-                                                                [0.72745490981963923, 0.66707126234885672],
-                                                                [0.72945891783567129, 0.59223974145029745],
-                                                                [0.73146292585170336, 0.5184064268330324],
-                                                                [0.73346693386773543, 0.45226285542253636],
-                                                                [0.73547094188376749, 0.39980364025726473],
-                                                                [0.73747494989979956, 0.3657831767910788],
-                                                                [0.73947895791583163, 0.35328475051219349],
-                                                                [0.74148296593186369, 0.36344109779292255],
-                                                                [0.74348697394789576, 0.39533174562986167],
-                                                                [0.74549098196392782, 0.4460664344066787],
-                                                                [0.74749498997995989, 0.51104706304782199],
-                                                                [0.74949899799599196, 0.58438441639009808],
-                                                                [0.75150300601202402, 0.65943190663704587],
-                                                                [0.75350701402805609, 0.72938795573741722],
-                                                                [0.75551102204408815, 0.78791242457998578],
-                                                                [0.75751503006012022, 0.82970122182964179],
-                                                                [0.75951903807615229, 0.85096701542202735],
-                                                                [0.76152304609218435, 0.84978247968023546],
-                                                                [0.76352705410821642, 0.82625496945751709],
-                                                                [0.76553106212424848, 0.7825167905325866],
-                                                                [0.76753507014028055, 0.72253194805469623],
-                                                                [0.76953907815631251, 0.65173688748876113],
-                                                                [0.77154308617234457, 0.57654778782353999],
-                                                                [0.77354709418837675, 0.50377906121718086],
-                                                                [0.7755511022044087, 0.4400257606431337],
-                                                                [0.77755511022044077, 0.39106586812921912],
-                                                                [0.77955911823647284, 0.36133663439785763],
-                                                                [0.7815631262525049, 0.35353242941348978],
-                                                                [0.78356713426853697, 0.36836055077067176],
-                                                                [0.78557114228456904, 0.40447712108679429],
-                                                                [0.7875751503006011, 0.45860888403922512],
-                                                                [0.78957915831663317, 0.52584986063303996],
-                                                                [0.79158316633266534, 0.60010597964693513],
-                                                                [0.7935871743486973, 0.67464738525768675],
-                                                                [0.79559118236472937, 0.74271836602653829],
-                                                                [0.79759519038076143, 0.79814962718824523],
-                                                                [0.7995991983967935, 0.83591741580943302],
-                                                                [0.80160320641282556, 0.85259882512419638],
-                                                                [0.80360721442885763, 0.84668201366940432],
-                                                                [0.8056112224448897, 0.81870322396018957],
-                                                                [0.80761523046092176, 0.77119818265923568],
-                                                                [0.80961923847695394, 0.70847228685808561],
-                                                                [0.81162324649298589, 0.63621040456128408],
-                                                                [0.81362725450901796, 0.56096165328035219],
-                                                                [0.81563126252505003, 0.48954585141845125],
-                                                                [0.81763527054108209, 0.428435435946596],
-                                                                [0.81963927855711416, 0.3831688633702483],
-                                                                [0.82164328657314623, 0.35784865764427209],
-                                                                [0.82364729458917829, 0.35476959711438621],
-                                                                [0.82565130260521036, 0.37421073802150739],
-                                                                [0.82765531062124253, 0.41441012354535695],
-                                                                [0.82965931863727449, 0.47172447051479988],
-                                                                [0.83166332665330656, 0.54095936132723521],
-                                                                [0.83366733466933862, 0.61584001567780733],
-                                                                [0.83567134268537069, 0.68957997590591924],
-                                                                [0.83767535070140275, 0.7554961658242525],
-                                                                [0.83967935871743482, 0.80761458005173337],
-                                                                [0.84168336673346689, 0.84121171003252604],
-                                                                [0.84368737474949895, 0.85324263712763526],
-                                                                [0.84569138276553113, 0.84261699456534089],
-                                                                [0.84769539078156309, 0.81029778773055894],
-                                                                [0.84969939879759515, 0.75921411667870897],
-                                                                [0.85170340681362722, 0.69399571086056866],
-                                                                [0.85370741482965928, 0.62055333526097256],
-                                                                [0.85571142284569135, 0.54554309587715111],
-                                                                [0.85771543086172342, 0.47576319470271561],
-                                                                [0.85971943887775548, 0.41753780650599781],
-                                                                [0.86172344689378755, 0.37614391684750426],
-                                                                [0.86372745490981973, 0.35533306719025193],
-                                                                [0.86573146292585168, 0.35699135149675659],
-                                                                [0.86773547094188375, 0.38096847892978292],
-                                                                [0.86973947895791581, 0.42509139475899538],
-                                                                [0.87174348697394788, 0.4853612250064141],
-                                                                [0.87374749498997983, 0.55631569567440398],
-                                                                [0.8757515030060119, 0.63152418038564395],
-                                                                [0.87775551102204397, 0.70417051010907328],
-                                                                [0.87975951903807603, 0.76767072473989495],
-                                                                [0.8817635270541081, 0.81626977951030255],
-                                                                [0.88376753507014016, 0.84556312653800092],
-                                                                [0.88577154308617223, 0.85289590040996466],
-                                                                [0.8877755511022043, 0.83760352948418093],
-                                                                [0.88977955911823636, 0.80107196623018417],
-                                                                [0.89178356713426843, 0.74661207791334594],
-                                                                [0.8937875751503005, 0.67915958163533785],
-                                                                [0.89579158316633256, 0.60482771871411944],
-                                                                [0.89779559118236463, 0.53035320966745469],
-                                                                [0.89979959919839669, 0.46248570307711462],
-                                                                [0.90180360721442876, 0.40737605277843403],
-                                                                [0.90380761523046083, 0.37001886400938161],
-                                                                [0.90581162324649289, 0.35379983073989579],
-                                                                [0.90781563126252496, 0.3601888891441985],
-                                                                [0.90981963927855702, 0.38860699681503369],
-                                                                [0.91182364729458909, 0.43647861156230183],
-                                                                [0.91382765531062116, 0.49946511362575174],
-                                                                [0.91583166332665322, 0.5718580161718968],
-                                                                [0.91783567134268529, 0.64709632728210165],
-                                                                [0.91983967935871735, 0.71836117474922545],
-                                                                [0.92184368737474942, 0.77919380264734661],
-                                                                [0.92384769539078149, 0.82408093044767794],
-                                                                [0.92585170340681355, 0.84895442339680549],
-                                                                [0.92785571142284562, 0.85155998887089701],
-                                                                [0.92985971943887769, 0.83166148363742887],
-                                                                [0.93186372745490975, 0.79106231559189555],
-                                                                [0.93386773547094182, 0.73344200032328766],
-                                                                [0.93587174348697388, 0.66402268543903986],
-                                                                [0.93787575150300595, 0.58909586565664596],
-                                                                [0.93987975951903802, 0.51545218262454462],
-                                                                [0.94188376753507008, 0.44976598689699826],
-                                                                [0.94388777555110215, 0.39799043940797291],
-                                                                [0.94589178356713421, 0.36481797459110865],
-                                                                [0.94789579158316628, 0.35325502354572613],
-                                                                [0.94989979959919835, 0.36434954022444099],
-                                                                [0.95190380761523041, 0.39709602503115643],
-                                                                [0.95390781563126248, 0.44852665357115651],
-                                                                [0.95591182364729455, 0.51398025152550908],
-                                                                [0.95791583166332661, 0.58752473837082897],
-                                                                [0.95991983967935868, 0.66249475373501709],
-                                                                [0.96192384769539074, 0.73209574114023057],
-                                                                [0.96392785571142281, 0.79001974083028237],
-                                                                [0.96593186372745488, 0.83101708218144965],
-                                                                [0.96793587174348694, 0.85137216303067698],
-                                                                [0.96993987975951901, 0.84924019588833577],
-                                                                [0.97194388777555107, 0.82481440161861963],
-                                                                [0.97394789579158314, 0.78030849777081679],
-                                                                [0.9759519038076151, 0.71975606864956898],
-                                                                [0.97795591182364716, 0.64864500027884076],
-                                                                [0.97995991983967923, 0.57342011153587114],
-                                                                [0.98196392785571129, 0.50089905815435876],
-                                                                [0.98396793587174336, 0.4376544464041528],
-                                                                [0.98597194388777543, 0.38941815568221322],
-                                                                [0.98797595190380749, 0.36056185644906247],
-                                                                [0.98997995991983956, 0.35370080433628032],
-                                                                [0.99198396793587174, 0.3694568186919252],
-                                                                [0.99398797595190369, 0.40640192689407978],
-                                                                [0.99599198396793576, 0.46118778196641408],
-                                                                [0.99799599198396782, 0.52884912433591846],
-                                                                [0.99999999999999989, 0.60325378489654413]]},
-                                      'filtrangemin': {'curved': False,
-                                                       'data': [[1.1842378929334949e-16, 0.43933840137327529],
-                                                                [0.0020040080160321824, 0.51374306193390284],
-                                                                [0.0040080160320642468, 0.58140440430340978],
-                                                                [0.0060120240480963103, 0.63619025937574614],
-                                                                [0.0080160320641283738, 0.67313536757789949],
-                                                                [0.01002004008016044, 0.68889138193354726],
-                                                                [0.012024048096192503, 0.68203032982076683],
-                                                                [0.014028056112224567, 0.65317403058761714],
-                                                                [0.01603206412825663, 0.60493773986568244],
-                                                                [0.018036072144288692, 0.54169312811547665],
-                                                                [0.020040080160320758, 0.46917207473396316],
-                                                                [0.022044088176352821, 0.39394718599099199],
-                                                                [0.024048096192384884, 0.3228361176202682],
-                                                                [0.02605210420841695, 0.26228368849901212],
-                                                                [0.028056112224449013, 0.21777778465120823],
-                                                                [0.030060120240481079, 0.19335199038149328],
-                                                                [0.032064128256513141, 0.19122002323915058],
-                                                                [0.034068136272545207, 0.21157510408837754],
-                                                                [0.036072144288577267, 0.25257244543954543],
-                                                                [0.03807615230460934, 0.31049644512959257],
-                                                                [0.040080160320641399, 0.38009743253480704],
-                                                                [0.042084168336673458, 0.45506744789899645],
-                                                                [0.044088176352705524, 0.52861193474431811],
-                                                                [0.04609218436873759, 0.59406553269866669],
-                                                                [0.04809619238476965, 0.64549616123866882],
-                                                                [0.050100200400801716, 0.67824264604538609],
-                                                                [0.052104208416833782, 0.68933716272410184],
-                                                                [0.054108216432865848, 0.67777421167872143],
-                                                                [0.056112224448897907, 0.644601746861858],
-                                                                [0.058116232464929973, 0.59282619937283276],
-                                                                [0.060120240480962039, 0.52714000364528524],
-                                                                [0.062124248496994099, 0.45349632061318929],
-                                                                [0.064128256513026172, 0.37856950083079349],
-                                                                [0.066132264529058238, 0.30915018594654392],
-                                                                [0.068136272545090304, 0.25152987067793392],
-                                                                [0.070140280561122356, 0.21093070263240221],
-                                                                [0.072144288577154408, 0.19103219739893176],
-                                                                [0.074148296593186475, 0.19363776287302167],
-                                                                [0.076152304609218555, 0.2185112558221487],
-                                                                [0.078156312625250621, 0.26339838362248064],
-                                                                [0.080160320641282687, 0.32423101152059686],
-                                                                [0.082164328657314753, 0.39549585898772133],
-                                                                [0.084168336673346805, 0.47073417009792767],
-                                                                [0.086172344689378857, 0.54312707264407445],
-                                                                [0.088176352705410924, 0.60611357470752081],
-                                                                [0.09018036072144299, 0.65398518945479134],
-                                                                [0.092184368737475056, 0.68240329712562853],
-                                                                [0.094188376753507136, 0.68879235552993234],
-                                                                [0.096192384769539188, 0.6725733222604493],
-                                                                [0.098196392785571254, 0.63521613349139783],
-                                                                [0.10020040080160332, 0.58010648319271707],
-                                                                [0.10220440881763537, 0.51223897660237594],
-                                                                [0.10420841683366744, 0.4377644675557168],
-                                                                [0.1062124248496995, 0.36343260463449673],
-                                                                [0.10821643286573157, 0.29598010835648619],
-                                                                [0.11022044088176364, 0.24152022003964591],
-                                                                [0.1122244488977957, 0.20498865678565006],
-                                                                [0.11422845691382777, 0.18969628585986373],
-                                                                [0.11623246492985984, 0.19702905973182572],
-                                                                [0.1182364729458919, 0.22632240675952328],
-                                                                [0.12024048096192395, 0.27492146152992597],
-                                                                [0.12224448897795601, 0.33842167616074753],
-                                                                [0.12424849699398807, 0.41106800588417808],
-                                                                [0.12625250501002017, 0.48627649059541983],
-                                                                [0.1282565130260522, 0.55723096126341176],
-                                                                [0.13026052104208427, 0.61750079151083215],
-                                                                [0.13226452905811634, 0.66162370734004539],
-                                                                [0.1342685370741484, 0.68560083477307054],
-                                                                [0.13627254509018047, 0.68725911907957649],
-                                                                [0.13827655310621256, 0.66644826942232449],
-                                                                [0.1402805611222446, 0.62505437976383005],
-                                                                [0.14228456913827667, 0.56682899156711763],
-                                                                [0.14428857715430871, 0.49704909039268091],
-                                                                [0.14629258517034077, 0.42203885100885768],
-                                                                [0.14829659318637284, 0.34859647540925981],
-                                                                [0.1503006012024049, 0.2833780695911236],
-                                                                [0.152304609218437, 0.23229439853927125],
-                                                                [0.15430861723446904, 0.19997519170448783],
-                                                                [0.15631262525050113, 0.18934954914219279],
-                                                                [0.15831663326653317, 0.20138047623730124],
-                                                                [0.16032064128256526, 0.23497760621809216],
-                                                                [0.1623246492985973, 0.28709602044557297],
-                                                                [0.16432865731462937, 0.35301221036390412],
-                                                                [0.16633266533066143, 0.42675217059201764],
-                                                                [0.16833667334669347, 0.5016328249425871],
-                                                                [0.17034068136272557, 0.5708677157550246],
-                                                                [0.1723446893787576, 0.62818206272446719],
-                                                                [0.1743486973947897, 0.66838144824831902],
-                                                                [0.17635270541082174, 0.68782258915544103],
-                                                                [0.1783567134268538, 0.68474352862555665],
-                                                                [0.18036072144288587, 0.65942332289958261],
-                                                                [0.18236472945891793, 0.61415675032323513],
-                                                                [0.18436873747495, 0.55304633485138188],
-                                                                [0.18637274549098207, 0.48163053298947989],
-                                                                [0.18837675350701416, 0.40638178170854972],
-                                                                [0.1903807615230462, 0.33411989941174625],
-                                                                [0.19238476953907827, 0.27139400361059562],
-                                                                [0.1943887775551103, 0.22388896230964142],
-                                                                [0.19639278557114237, 0.19591017260042454],
-                                                                [0.19839679358717444, 0.18999336114563134],
-                                                                [0.2004008016032065, 0.20667477046039331],
-                                                                [0.2024048096192386, 0.24444255908157927],
-                                                                [0.20440881763527063, 0.29987382024328618],
-                                                                [0.20641282565130273, 0.36794480101213561],
-                                                                [0.20841683366733477, 0.44248620662288879],
-                                                                [0.21042084168336686, 0.51674232563678257],
-                                                                [0.2124248496993989, 0.58398330223059869],
-                                                                [0.21442885771543096, 0.63811506518302974],
-                                                                [0.21643286573146303, 0.67423163549915455],
-                                                                [0.21843687374749507, 0.68905975685633791],
-                                                                [0.22044088176352716, 0.68125555187197173],
-                                                                [0.2224448897795592, 0.65152631814061246],
-                                                                [0.2244488977955913, 0.60256642562669815],
-                                                                [0.22645290581162333, 0.53881312505265333],
-                                                                [0.2284569138276554, 0.4660443984462932],
-                                                                [0.23046092184368747, 0.39085529878107361],
-                                                                [0.23246492985971953, 0.32006023821513468],
-                                                                [0.2344689378757516, 0.26007539573724497],
-                                                                [0.23647294589178366, 0.21633721681231224],
-                                                                [0.23847695390781576, 0.19280970658959282],
-                                                                [0.2404809619238478, 0.1916251708478004],
-                                                                [0.24248496993987989, 0.21289096444018565],
-                                                                [0.2444889779559119, 0.25467976168984013],
-                                                                [0.24649298597194397, 0.31320423053240948],
-                                                                [0.24849699398797603, 0.38316027963277888],
-                                                                [0.2505010020040081, 0.45820776987972839],
-                                                                [0.25250501002004017, 0.53154512322200309],
-                                                                [0.25450901803607223, 0.59652575186314816],
-                                                                [0.2565130260521043, 0.64726044063996457],
-                                                                [0.25851703406813636, 0.67915108847690497],
-                                                                [0.26052104208416843, 0.68930743575763465],
-                                                                [0.2625250501002005, 0.67680900947875011],
-                                                                [0.26452905811623256, 0.6427885460125663],
-                                                                [0.26653306613226463, 0.59032933084729411],
-                                                                [0.26853707414829669, 0.52418575943680035],
-                                                                [0.27054108216432876, 0.4503524448195339],
-                                                                [0.27254509018036083, 0.37552092392097619],
-                                                                [0.27454909819639289, 0.30647320142124163],
-                                                                [0.27655310621242502, 0.24946709450113122],
-                                                                [0.27855711422845703, 0.20966908486895286],
-                                                                [0.28056112224448909, 0.19068607887037048],
-                                                                [0.2825651302605211, 0.19423851241232645],
-                                                                [0.28456913827655317, 0.22000442730637271],
-                                                                [0.28657314629258529, 0.26564865044229363],
-                                                                [0.2885771543086173, 0.32703443127418436],
-                                                                [0.29058116232464937, 0.39859835684590955],
-                                                                [0.29258517034068143, 0.47385456568723733],
-                                                                [0.29458917835671355, 0.54598256351392827],
-                                                                [0.29659318637274557, 0.60844536680681793],
-                                                                [0.29859719438877763, 0.65558195171955513],
-                                                                [0.3006012024048097, 0.68312031448094646],
-                                                                [0.30260521042084176, 0.68856464446349419],
-                                                                [0.30460921843687389, 0.67142152029905855],
-                                                                [0.3066132264529059, 0.63324462881531496],
-                                                                [0.30861723446893796, 0.57749395390148484],
-                                                                [0.31062124248497003, 0.50922219706149319],
-                                                                [0.31262525050100215, 0.4346168494601414],
-                                                                [0.31462925851703416, 0.3604394176192573],
-                                                                [0.31663326653306623, 0.2934126259183939],
-                                                                [0.31863727454909829, 0.23961113393348751],
-                                                                [0.32064128256513036, 0.20391098809600672],
-                                                                [0.32264529058116248, 0.18954770404485932],
-                                                                [0.32464929859719449, 0.19782303080889022],
-                                                                [0.32665330661322656, 0.22798697287592476],
-                                                                [0.32865731462925862, 0.27730576252598532],
-                                                                [0.33066132264529075, 0.34130962207437504],
-                                                                [0.33266533066132276, 0.41419786125327235],
-                                                                [0.33466933867735477, 0.48936459562653378],
-                                                                [0.33667334669338683, 0.5599974400095904],
-                                                                [0.3386773547094189, 0.61969491711822133],
-                                                                [0.34068136272545102, 0.6630466255028743],
-                                                                [0.34268537074148303, 0.68612358596300316],
-                                                                [0.3446893787575151, 0.68683432618902363],
-                                                                [0.34669338677354716, 0.66511443156686212],
-                                                                [0.34869739478957923, 0.62293238309503773],
-                                                                [0.3507014028056113, 0.56411115332198425],
-                                                                [0.35270541082164336, 0.49398172912088972],
-                                                                [0.35470941883767543, 0.41889996264382146],
-                                                                [0.35671342685370749, 0.34567053840773609],
-                                                                [0.35871743486973962, 0.28093026255966408],
-                                                                [0.36072144288577163, 0.23054656701227191],
-                                                                [0.36272545090180369, 0.1990857422124295],
-                                                                [0.36472945891783576, 0.18939909277710501],
-                                                                [0.36673346693386782, 0.20236452284370143],
-                                                                [0.36873747494989989, 0.23680697133721329],
-                                                                [0.37074148296593196, 0.28960490813139522],
-                                                                [0.37274549098196402, 0.35597323932278463],
-                                                                [0.37474949899799609, 0.42989698182208236],
-                                                                [0.37675350701402821, 0.50467640319592688],
-                                                                [0.37875751503006022, 0.57353422056079706],
-                                                                [0.38076152304609229, 0.63022982789902193],
-                                                                [0.38276553106212435, 0.66962488417873767],
-                                                                [0.38476953907815636, 0.68814900284553471],
-                                                                [0.38677354709418849, 0.68412333709816198],
-                                                                [0.3887775551102205, 0.65791273431124742],
-                                                                [0.39078156312625256, 0.61189266980100743],
-                                                                [0.39278557114228463, 0.55023395673734554],
-                                                                [0.39478957915831675, 0.47852474401188244],
-                                                                [0.39679358717434876, 0.40326406051607561],
-                                                                [0.39879759519038083, 0.33127280607353143],
-                                                                [0.40080160320641289, 0.26907557110676039],
-                                                                [0.40280561122244496, 0.22230931091975348],
-                                                                [0.40480961923847708, 0.19521246663533207],
-                                                                [0.40681362725450909, 0.19024083392016988],
-                                                                [0.40881763527054116, 0.20784499343783158],
-                                                                [0.41082164328657322, 0.24642947457907891],
-                                                                [0.41282565130260535, 0.30249735347362933],
-                                                                [0.41482965931863736, 0.37096718031930087],
-                                                                [0.41683366733466942, 0.4456335128033086],
-                                                                [0.41883767535070149, 0.51972931732439831],
-                                                                [0.42084168336673355, 0.58653926741312501],
-                                                                [0.42284569138276568, 0.64000835591823557],
-                                                                [0.42484969939879769, 0.67529066224198131],
-                                                                [0.42685370741482975, 0.68918853967426685],
-                                                                [0.42885771543086182, 0.68044241913701187],
-                                                                [0.43086172344689394, 0.64984496433268035],
-                                                                [0.43286573146292595, 0.60016923237932907],
-                                                                [0.43486973947895802, 0.53591735075679525],
-                                                                [0.43687374749499003, 0.46291248805283658],
-                                                                [0.43887775551102209, 0.3877710983309795],
-                                                                [0.44088176352705422, 0.31730326978192802],
-                                                                [0.44288577154308623, 0.25789552425207718],
-                                                                [0.44488977955911829, 0.2149320047252947],
-                                                                [0.44689378757515036, 0.19230650872174715],
-                                                                [0.44889779559118242, 0.19206959218287867],
-                                                                [0.45090180360721449, 0.21424272693040405],
-                                                                [0.45290581162324656, 0.25681635466823821],
-                                                                [0.45490981963927862, 0.31593201389378611],
-                                                                [0.45691382765531069, 0.38623203349838725],
-                                                                [0.45891783567134281, 0.46134510021396924],
-                                                                [0.46092184368737482, 0.53446369277295191],
-                                                                [0.46292585170340689, 0.5989610497386525],
-                                                                [0.46492985971943895, 0.64899175501443584],
-                                                                [0.46693386773547102, 0.6800215097746819],
-                                                                [0.46893787575150309, 0.68923807741802223],
-                                                                [0.47094188376753515, 0.67580615747025685],
-                                                                [0.47294589178356722, 0.64094308913356846],
-                                                                [0.47494989979959928, 0.58780852344515622],
-                                                                [0.47695390781563141, 0.52121806309287033],
-                                                                [0.47895791583166342, 0.44720682280292307],
-                                                                [0.48096192384769548, 0.37248246496144194],
-                                                                [0.48296593186372755, 0.30381728202638686],
-                                                                [0.48496993987975962, 0.24743442149543074],
-                                                                [0.48697394789579168, 0.20844388005723061],
-                                                                [0.48897795591182369, 0.19037938295669757],
-                                                                [0.49098196392785576, 0.19487812134548077],
-                                                                [0.49298597194388782, 0.22153237312411103],
-                                                                [0.49498997995991995, 0.26792645492631229],
-                                                                [0.49699398797595196, 0.32985565627535435],
-                                                                [0.49899799599198402, 0.4017073138397686],
-                                                                [0.50100200400801609, 0.47696948890677721],
-                                                                [0.50300601202404815, 0.54882114647119173],
-                                                                [0.50501002004008022, 0.61075034782023463],
-                                                                [0.50701402805611229, 0.65714442962243724],
-                                                                [0.50901803607214435, 0.68379868140106881],
-                                                                [0.51102204408817642, 0.68829741978985348],
-                                                                [0.51302605210420849, 0.67023292268932055],
-                                                                [0.51503006012024055, 0.63124238125112309],
-                                                                [0.51703406813627262, 0.57485952072016511],
-                                                                [0.51903807615230468, 0.50619433778511369],
-                                                                [0.52104208416833675, 0.43146997994362918],
-                                                                [0.52304609218436882, 0.35745873965368496],
-                                                                [0.52505010020040088, 0.29086827930139864],
-                                                                [0.52705410821643295, 0.23773371361298531],
-                                                                [0.52905811623246501, 0.20287064527629542],
-                                                                [0.53106212424849708, 0.18943872532852854],
-                                                                [0.53306613226452915, 0.19865529297186738],
-                                                                [0.53507014028056132, 0.22968504773211215],
-                                                                [0.53707414829659328, 0.27971575300789436],
-                                                                [0.53907815631262535, 0.34421310997359728],
-                                                                [0.54108216432865741, 0.4173317025325764],
-                                                                [0.54308617234468948, 0.492444769248162],
-                                                                [0.54509018036072154, 0.56274478885276003],
-                                                                [0.54709418837675361, 0.62186044807831142],
-                                                                [0.54909819639278568, 0.66443407581614433],
-                                                                [0.55110220440881774, 0.68660721056367169],
-                                                                [0.55310621242484992, 0.68637029402480421],
-                                                                [0.55511022044088187, 0.66374479802125663],
-                                                                [0.55711422845691394, 0.62078127849447695],
-                                                                [0.55911823647294601, 0.561373532964624],
-                                                                [0.56112224448897807, 0.49090570441557602],
-                                                                [0.56312625250501014, 0.4157643146937155],
-                                                                [0.56513026052104209, 0.3427594519897601],
-                                                                [0.56713426853707416, 0.27850757036722545],
-                                                                [0.56913827655310623, 0.22883183841387303],
-                                                                [0.57114228456913829, 0.19823438360954115],
-                                                                [0.57314629258517047, 0.18948826307228359],
-                                                                [0.57515030060120242, 0.2033861405045663],
-                                                                [0.57715430861723449, 0.23866844682831212],
-                                                                [0.57915831663326656, 0.29213753533342007],
-                                                                [0.58116232464929862, 0.35894748542214772],
-                                                                [0.58316633266533069, 0.43304328994323527],
-                                                                [0.58517034068136276, 0.50770962242724493],
-                                                                [0.58717434869739482, 0.57617944927291564],
-                                                                [0.58917835671342689, 0.63224732816746854],
-                                                                [0.59118236472945906, 0.67083180930871633],
-                                                                [0.59318637274549102, 0.68843596882638047],
-                                                                [0.59519038076152309, 0.68346433611122004],
-                                                                [0.59719438877755515, 0.65636749182679954],
-                                                                [0.59919839679358722, 0.60960123163979518],
-                                                                [0.60120240480961928, 0.54740399667302386],
-                                                                [0.60320641282565135, 0.47541274223048163],
-                                                                [0.60521042084168342, 0.40015205873467313],
-                                                                [0.60721442885771548, 0.32844284600921136],
-                                                                [0.60921843687374766, 0.26678413294554681],
-                                                                [0.61122244488977961, 0.22076406843530649],
-                                                                [0.61322645290581168, 0.19455346564838949],
-                                                                [0.61523046092184375, 0.19052779990101529],
-                                                                [0.61723446893787581, 0.20905191856781144],
-                                                                [0.61923847695390788, 0.24844697484752667],
-                                                                [0.62124248496993995, 0.30514258218575241],
-                                                                [0.62324649298597201, 0.37400039955062075],
-                                                                [0.62525050100200408, 0.44877982092446689],
-                                                                [0.62725450901803625, 0.52270356342376301],
-                                                                [0.62925851703406821, 0.58907189461515441],
-                                                                [0.63126252505010028, 0.64186983140933562],
-                                                                [0.63326653306613234, 0.6763122799028487],
-                                                                [0.63527054108216441, 0.68927770996944548],
-                                                                [0.63727454909819647, 0.67959106053412155],
-                                                                [0.63927855711422854, 0.64813023573428075],
-                                                                [0.64128256513026061, 0.59774654018688766],
-                                                                [0.64328657314629267, 0.5330062643388177],
-                                                                [0.64529058116232485, 0.45977684010273429],
-                                                                [0.64729458917835681, 0.38469507362566419],
-                                                                [0.64929859719438887, 0.31456564942457071],
-                                                                [0.65130260521042094, 0.25574441965151501],
-                                                                [0.653306613226453, 0.2135623711796906],
-                                                                [0.65531062124248507, 0.1918424765575274],
-                                                                [0.65731462925851714, 0.19255321678354662],
-                                                                [0.6593186372745492, 0.21563017724367486],
-                                                                [0.66132264529058127, 0.25898188562832586],
-                                                                [0.66332665330661345, 0.31867936273695746],
-                                                                [0.6653306613226454, 0.38931220712001208],
-                                                                [0.66733466933867736, 0.46447894149327351],
-                                                                [0.66933867735470942, 0.53736718067216949],
-                                                                [0.67134268537074149, 0.60137104022056154],
-                                                                [0.67334669338677355, 0.65068982987062218],
-                                                                [0.67535070140280562, 0.68085377193765917],
-                                                                [0.67735470941883769, 0.68912909870169148],
-                                                                [0.67935871743486975, 0.67476581465054508],
-                                                                [0.68136272545090193, 0.63906566881306615],
-                                                                [0.68336673346693388, 0.58526417682815934],
-                                                                [0.68537074148296595, 0.51823738512729811],
-                                                                [0.68737474949899802, 0.44405995328641262],
-                                                                [0.68937875751503008, 0.36945460568506211],
-                                                                [0.69138276553106215, 0.30118284884507146],
-                                                                [0.69338677354709422, 0.24543217393123887],
-                                                                [0.69539078156312628, 0.20725528244749458],
-                                                                [0.69739478957915835, 0.19011215828305683],
-                                                                [0.69939879759519052, 0.19555648826560265],
-                                                                [0.70140280561122248, 0.22309485102699289],
-                                                                [0.70340681362725455, 0.27023143593972765],
-                                                                [0.70541082164328661, 0.33269423923261782],
-                                                                [0.70741482965931868, 0.4048222370593067],
-                                                                [0.70941883767535074, 0.48007844590063625],
-                                                                [0.71142284569138281, 0.55164237147236028],
-                                                                [0.71342685370741488, 0.61302815230425334],
-                                                                [0.71543086172344694, 0.65867237544017476],
-                                                                [0.71743486973947912, 0.6844382903342231],
-                                                                [0.71943887775551107, 0.68799072387618077],
-                                                                [0.72144288577154314, 0.66900771787759916],
-                                                                [0.72344689378757521, 0.62920970824542288],
-                                                                [0.72545090180360727, 0.57220360132531167],
-                                                                [0.72745490981963934, 0.50315587882557933],
-                                                                [0.72945891783567141, 0.42832435792702012],
-                                                                [0.73146292585170347, 0.35449104330975501],
-                                                                [0.73346693386773554, 0.28834747189925908],
-                                                                [0.73547094188376771, 0.23588825673398739],
-                                                                [0.73747494989979967, 0.20186779326780144],
-                                                                [0.73947895791583174, 0.18936936698891615],
-                                                                [0.7414829659318638, 0.19952571426964519],
-                                                                [0.74348697394789587, 0.23141636210658426],
-                                                                [0.74549098196392793, 0.28215105088340137],
-                                                                [0.74749498997996, 0.34713167952454455],
-                                                                [0.74949899799599207, 0.42046903286682075],
-                                                                [0.75150300601202413, 0.49551652311376854],
-                                                                [0.75350701402805631, 0.56547257221413993],
-                                                                [0.75551102204408827, 0.6239970410567085],
-                                                                [0.75751503006012033, 0.66578583830636451],
-                                                                [0.7595190380761524, 0.68705163189874996],
-                                                                [0.76152304609218446, 0.68586709615695807],
-                                                                [0.76352705410821653, 0.66233958593423981],
-                                                                [0.7655310621242486, 0.61860140700930921],
-                                                                [0.76753507014028066, 0.55861656453141884],
-                                                                [0.76953907815631262, 0.48782150396548368],
-                                                                [0.77154308617234468, 0.41263240430026271],
-                                                                [0.77354709418837686, 0.33986367769390347],
-                                                                [0.77555110220440882, 0.27611037711985637],
-                                                                [0.77755511022044088, 0.22715048460594175],
-                                                                [0.77955911823647295, 0.19742125087458026],
-                                                                [0.78156312625250501, 0.18961704589021242],
-                                                                [0.78356713426853708, 0.20444516724739445],
-                                                                [0.78557114228456915, 0.24056173756351684],
-                                                                [0.78757515030060121, 0.29469350051594778],
-                                                                [0.78957915831663328, 0.36193447710976262],
-                                                                [0.79158316633266546, 0.43619059612365768],
-                                                                [0.79358717434869741, 0.51073200173440936],
-                                                                [0.79559118236472948, 0.5788029825032609],
-                                                                [0.79759519038076154, 0.63423424366496783],
-                                                                [0.79959919839679361, 0.67200203228615563],
-                                                                [0.80160320641282568, 0.68868344160091899],
-                                                                [0.80360721442885774, 0.68276663014612693],
-                                                                [0.80561122244488981, 0.65478784043691218],
-                                                                [0.80761523046092187, 0.60728279913595828],
-                                                                [0.80961923847695405, 0.54455690333480822],
-                                                                [0.81162324649298601, 0.47229502103800675],
-                                                                [0.81362725450901807, 0.39704626975707485],
-                                                                [0.81563126252505014, 0.32563046789517391],
-                                                                [0.8176352705410822, 0.26452005242331855],
-                                                                [0.81963927855711427, 0.21925347984697094],
-                                                                [0.82164328657314634, 0.19393327412099473],
-                                                                [0.8236472945891784, 0.19085421359110888],
-                                                                [0.82565130260521047, 0.21029535449823],
-                                                                [0.82765531062124265, 0.25049474002207955],
-                                                                [0.8296593186372746, 0.30780908699152254],
-                                                                [0.83166332665330667, 0.37704397780395787],
-                                                                [0.83366733466933873, 0.45192463215452988],
-                                                                [0.8356713426853708, 0.52566459238264185],
-                                                                [0.83767535070140287, 0.59158078230097522],
-                                                                [0.83967935871743493, 0.64369919652845609],
-                                                                [0.841683366733467, 0.67729632650924865],
-                                                                [0.84368737474949906, 0.68932725360435787],
-                                                                [0.84569138276553124, 0.6787016110420635],
-                                                                [0.8476953907815632, 0.64638240420728155],
-                                                                [0.84969939879759526, 0.59529873315543158],
-                                                                [0.85170340681362733, 0.53008032733729127],
-                                                                [0.85370741482965939, 0.45663795173769528],
-                                                                [0.85571142284569146, 0.38162771235387383],
-                                                                [0.85771543086172353, 0.31184781117943822],
-                                                                [0.85971943887775559, 0.25362242298272047],
-                                                                [0.86172344689378766, 0.21222853332422684],
-                                                                [0.86372745490981984, 0.19141768366697462],
-                                                                [0.86573146292585179, 0.19307596797347923],
-                                                                [0.86773547094188386, 0.21705309540650553],
-                                                                [0.86973947895791592, 0.26117601123571804],
-                                                                [0.87174348697394799, 0.32144584148313676],
-                                                                [0.87374749498997994, 0.39240031215112664],
-                                                                [0.87575150300601201, 0.46760879686236662],
-                                                                [0.87775551102204408, 0.54025512658579589],
-                                                                [0.87975951903807614, 0.60375534121661756],
-                                                                [0.88176352705410832, 0.65235439598702516],
-                                                                [0.88376753507014028, 0.68164774301472353],
-                                                                [0.88577154308617234, 0.68898051688668727],
-                                                                [0.88777555110220441, 0.67368814596090354],
-                                                                [0.88977955911823647, 0.63715658270690689],
-                                                                [0.89178356713426854, 0.58269669439006855],
-                                                                [0.89378757515030061, 0.51524419811206046],
-                                                                [0.89579158316633267, 0.440912335190842],
-                                                                [0.89779559118236474, 0.36643782614417736],
-                                                                [0.89979959919839692, 0.29857031955383728],
-                                                                [0.90180360721442887, 0.24346066925515661],
-                                                                [0.90380761523046094, 0.20610348048610427],
-                                                                [0.905811623246493, 0.18988444721661846],
-                                                                [0.90781563126252507, 0.19627350562092116],
-                                                                [0.90981963927855714, 0.22469161329175635],
-                                                                [0.9118236472945892, 0.2725632280390245],
-                                                                [0.91382765531062127, 0.33554973010247435],
-                                                                [0.91583166332665333, 0.40794263264861935],
-                                                                [0.91783567134268551, 0.48318094375882431],
-                                                                [0.91983967935871747, 0.55444579122594806],
-                                                                [0.92184368737474953, 0.61527841912406922],
-                                                                [0.9238476953907816, 0.66016554692440066],
-                                                                [0.92585170340681366, 0.6850390398735281],
-                                                                [0.92785571142284573, 0.68764460534761962],
-                                                                [0.9298597194388778, 0.66774610011415148],
-                                                                [0.93186372745490986, 0.62714693206861827],
-                                                                [0.93386773547094193, 0.56952661680001027],
-                                                                [0.93587174348697411, 0.50010730191576247],
-                                                                [0.93787575150300606, 0.42518048213336862],
-                                                                [0.93987975951903813, 0.35153679910126723],
-                                                                [0.94188376753507019, 0.28585060337372087],
-                                                                [0.94388777555110226, 0.23407505588469554],
-                                                                [0.94589178356713433, 0.20090259106783129],
-                                                                [0.94789579158316639, 0.18933964002244882],
-                                                                [0.94989979959919846, 0.20043415670116363],
-                                                                [0.95190380761523052, 0.23318064150787909],
-                                                                [0.9539078156312627, 0.28461127004787917],
-                                                                [0.95591182364729466, 0.35006486800223174],
-                                                                [0.95791583166332672, 0.42360935484755152],
-                                                                [0.95991983967935879, 0.49857937021173965],
-                                                                [0.96192384769539085, 0.56818035761695318],
-                                                                [0.96392785571142292, 0.62610435730700498],
-                                                                [0.96593186372745499, 0.66710169865817226],
-                                                                [0.96793587174348705, 0.68745677950739958],
-                                                                [0.96993987975951912, 0.68532481236505838],
-                                                                [0.9719438877755513, 0.66089901809534235],
-                                                                [0.97394789579158325, 0.61639311424753951],
-                                                                [0.97595190380761521, 0.5558406851262917],
-                                                                [0.97795591182364727, 0.48472961675556331],
-                                                                [0.97995991983967934, 0.4095047280125938],
-                                                                [0.9819639278557114, 0.33698367463108148],
-                                                                [0.98396793587174347, 0.27373906288087546],
-                                                                [0.98597194388777554, 0.22550277215893588],
-                                                                [0.9879759519038076, 0.1966464729257851],
-                                                                [0.98997995991983967, 0.18978542081300295],
-                                                                [0.99198396793587185, 0.20554143516864787],
-                                                                [0.9939879759519038, 0.24248654337080244],
-                                                                [0.99599198396793587, 0.29727239844313674],
-                                                                [0.99799599198396793, 0.36493374081264102],
-                                                                [1.0, 0.43933840137326668]]},
-                                      'sndend': {'curved': False, 'data': [[0.0, 1.0], [1.0, 1.0]]},
-                                      'sndgain': {'curved': False, 'data': [[0.0, 0.72727272727272729], [1.0, 0.72727272727272729]]},
-                                      'sndstart': {'curved': False, 'data': [[0.0, 0.0], [1.0, 0.0]]},
-                                      'sndtrans': {'curved': False, 'data': [[0.0, 0.5], [1.0, 0.5]]},
-                                      'sndxfade': {'curved': False, 'data': [[0.0, 0.02], [1.0, 0.02]]}},
-                        'userInputs': {'snd': {'dursnd': 5.3334465026855469,
-                                               'gain': [0.0, False, False],
-                                               'gensizesnd': 262144,
-                                               'loopIn': [0.0, False, False],
-                                               'loopMode': 1,
-                                               'loopOut': [5.3334465026855469, False, False],
-                                               'loopX': [1.0, False, False],
-                                               'nchnlssnd': 2,
-                                               'offsnd': 0.0,
-                                               'path': u'/Users/jm/Desktop/Dropbox/Maitrise/svnBKP/memoire/bub/snds/guitar.wav',
-                                               'srsnd': 44100.0,
-                                               'startFromLoop': 0,
-                                               'transp': [0.0, False, False],
-                                               'type': 'csampler'}},
-                        'userSliders': {'filtrange': [[260.50880564451268, 810.56523578378403], 1, None, [1, 1]]},
-                        'userTogglePopups': {'filtnum': 3, 'polynum': 0, 'polyspread': 0.001}},
- u'05-Thin Auto-Wah': {'gainSlider': -6.0,
-                       'nchnls': 2,
-                       'plugins': {0: ['None', [0, 0, 0, 0], [[0, 0, None], [0, 0, None], [0, 0, None]]],
-                                   1: ['None', [0, 0, 0, 0], [[0, 0, None], [0, 0, None], [0, 0, None]]],
-                                   2: ['None', [0, 0, 0, 0], [[0, 0, None], [0, 0, None], [0, 0, None]]]},
-                       'totalTime': 30.000000000000135,
-                       'userGraph': {'env': {'curved': False, 'data': [[0.0, 1.0], [1.0, 1.0]]},
-                                     'filtrangemax': {'curved': False,
-                                                      'data': [[0.0, 0.62132319725344931],
-                                                               [0.0014306151645207439, 0.64223322263638616],
-                                                               [0.0028612303290414878, 0.65931063863311568],
-                                                               [0.0042918454935622317, 0.66942531681755557],
-                                                               [0.0057224606580829757, 0.67072333258472738],
-                                                               [0.0071530758226037196, 0.66296677195214671],
-                                                               [0.0085836909871244635, 0.64757733893693858],
-                                                               [0.010014306151645207, 0.62737577068993577],
-                                                               [0.011444921316165951, 0.60606482312183829],
-                                                               [0.012875536480686695, 0.58755059085389538],
-                                                               [0.014306151645207439, 0.57522655711097392],
-                                                               [0.015736766809728183, 0.57135160042306332],
-                                                               [0.017167381974248927, 0.57663596360915903],
-                                                               [0.018597997138769671, 0.59011107300298093],
-                                                               [0.020028612303290415, 0.60930706882209729],
-                                                               [0.021459227467811159, 0.63070550704711625],
-                                                               [0.022889842632331903, 0.6503842568489514],
-                                                               [0.024320457796852647, 0.66473638998059625],
-                                                               [0.02575107296137339, 0.67113129652431625],
-                                                               [0.027181688125894134, 0.66839685074642485],
-                                                               [0.028612303290414878, 0.65703425063030496],
-                                                               [0.030042918454935619, 0.63912615303835851],
-                                                               [0.031473533619456366, 0.61795494245664229],
-                                                               [0.032904148783977114, 0.59740110104177113],
-                                                               [0.034334763948497854, 0.58123195303590258],
-                                                               [0.035765379113018594, 0.57241114995448739],
-                                                               [0.037195994277539342, 0.57255546136449664],
-                                                               [0.038626609442060082, 0.58163843635281998],
-                                                               [0.04005722460658083, 0.5979952517278343],
-                                                               [0.041487839771101563, 0.61862785832476497],
-                                                               [0.042918454935622317, 0.63975449499042591],
-                                                               [0.044349070100143065, 0.65750284954437022],
-                                                               [0.045779685264663805, 0.66861981688474115],
-                                                               [0.047210300429184546, 0.67106776230787002],
-                                                               [0.048640915593705293, 0.6643980006288378],
-                                                               [0.05007153075822604, 0.64983303592148856],
-                                                               [0.051502145922746781, 0.63004248811333874],
-                                                               [0.052932761087267521, 0.60865377696589673],
-                                                               [0.054363376251788269, 0.58958725042715898],
-                                                               [0.055793991416309016, 0.57633762202503835],
-                                                               [0.057224606580829757, 0.57133342301417211],
-                                                               [0.058655221745350497, 0.57549187562400561],
-                                                               [0.060085836909871237, 0.58805077492113145],
-                                                               [0.061516452074391992, 0.6067081937464428],
-                                                               [0.062947067238912732, 0.62804440413678575],
-                                                               [0.064377682403433473, 0.64814868103513301],
-                                                               [0.065808297567954227, 0.66333610111248731],
-                                                               [0.067238912732474967, 0.67082295427406091],
-                                                               [0.068669527896995708, 0.66923697132482873],
-                                                               [0.070100143061516448, 0.65886884790127465],
-                                                               [0.071530758226037189, 0.64161896271756813],
-                                                               [0.072961373390557943, 0.62064905616643051],
-                                                               [0.074391988555078684, 0.5998027132844147],
-                                                               [0.075822603719599424, 0.58290087105913857],
-                                                               [0.077253218884120164, 0.57304147690914808],
-                                                               [0.078683834048640919, 0.57203166429648133],
-                                                               [0.080114449213161659, 0.58005652229811133],
-                                                               [0.0815450643776824, 0.59564517053313137],
-                                                               [0.082975679542203126, 0.61594035758985355],
-                                                               [0.084406294706723894, 0.63722216811743904],
-                                                               [0.085836909871244635, 0.65558984803789044],
-                                                               [0.087267525035765375, 0.66767677578204332],
-                                                               [0.08869814020028613, 0.6712675321012701],
-                                                               [0.09012875536480687, 0.6657039654093998],
-                                                               [0.091559370529327611, 0.65200582472794533],
-                                                               [0.092989985693848351, 0.63268384935960331],
-                                                               [0.094420600858369091, 0.61127957418061607],
-                                                               [0.09585121602288986, 0.59171619987838586],
-                                                               [0.097281831187410586, 0.57757950746481979],
-                                                               [0.098712446351931327, 0.57146061861681263],
-                                                               [0.10014306151645208, 0.57448106764159546],
-                                                               [0.10157367668097282, 0.58608723487248016],
-                                                               [0.10300429184549356, 0.60415181990440425],
-                                                               [0.1044349070100143, 0.62536375558735935],
-                                                               [0.10586552217453504, 0.64583509523982363],
-                                                               [0.1072961373390558, 0.66181363641041757],
-                                                               [0.10872675250357654, 0.6703706640092828],
-                                                               [0.11015736766809728, 0.66993775601431116],
-                                                               [0.11158798283261803, 0.66059426035619617],
-                                                               [0.11301859799713877, 0.64405275119510641],
-                                                               [0.11444921316165951, 0.62334513031555905],
-                                                               [0.11587982832618025, 0.60226690827746632],
-                                                               [0.11731044349070099, 0.58468152331910439],
-                                                               [0.11874105865522175, 0.57381220976071878],
-                                                               [0.12017167381974247, 0.57165120971596484],
-                                                               [0.12160228898426323, 0.57859461400268952],
-                                                               [0.12303290414878398, 0.59336976245170703],
-                                                               [0.12446351931330472, 0.61326851044859054],
-                                                               [0.12589413447782546, 0.63464360616317972],
-                                                               [0.12732474964234622, 0.65357719722721896],
-                                                               [0.12875536480686695, 0.66659893592482977],
-                                                               [0.1301859799713877, 0.67132206102338643],
-                                                               [0.13161659513590845, 0.66688086847645944],
-                                                               [0.13304721030042918, 0.65408938676701733],
-                                                               [0.13447782546494993, 0.63529217320502418],
-                                                               [0.13590844062947066, 0.61393457880335078],
-                                                               [0.13733905579399142, 0.5939312481055391],
-                                                               [0.13876967095851217, 0.57894860195918973],
-                                                               [0.1402002861230329, 0.57173281733918035],
-                                                               [0.14163090128755365, 0.57360647914710805],
-                                                               [0.14306151645207438, 0.5842261629394282],
-                                                               [0.14449213161659513, 0.60164538137164414],
-                                                               [0.14592274678111589, 0.62267135687218012],
-                                                               [0.14735336194563661, 0.64345022749769909],
-                                                               [0.14878397711015737, 0.66017342328543405],
-                                                               [0.15021459227467812, 0.66977574101493553],
-                                                               [0.15164520743919885, 0.67049716689447136],
-                                                               [0.1530758226037196, 0.66220547040080135],
-                                                               [0.15450643776824033, 0.64642044088029083],
-                                                               [0.15593705293276108, 0.62603532457219291],
-                                                               [0.15736766809728184, 0.60478652000642519],
-                                                               [0.15879828326180256, 0.5865687315811422],
-                                                               [0.16022889842632332, 0.57472110717569802],
-                                                               [0.16165951359084407, 0.57141520400578227],
-                                                               [0.1630901287553648, 0.57725696277624206],
-                                                               [0.16452074391988555, 0.59117564449534532],
-                                                               [0.16595135908440625, 0.61062008677933866],
-                                                               [0.16738197424892703, 0.6320263077275593],
-                                                               [0.16881258941344779, 0.65147075001155308],
-                                                               [0.17024320457796852, 0.66538943173065646],
-                                                               [0.17167381974248927, 0.67123119050111635],
-                                                               [0.17310443490701002, 0.66792528733120049],
-                                                               [0.17453505007153075, 0.65607766292575698],
-                                                               [0.17596566523605151, 0.63785987450047354],
-                                                               [0.17739628040057226, 0.61661106993470538],
-                                                               [0.17882689556509296, 0.59622595362660791],
-                                                               [0.18025751072961374, 0.58044092410609716],
-                                                               [0.18168812589413447, 0.57214922761242715],
-                                                               [0.18311874105865522, 0.57287065349196331],
-                                                               [0.18454935622317598, 0.58247297122146435],
-                                                               [0.1859799713876967, 0.59919616700919931],
-                                                               [0.18741058655221746, 0.61997503763471817],
-                                                               [0.18884120171673818, 0.64100101313525437],
-                                                               [0.19027181688125894, 0.65842023156747009],
-                                                               [0.19170243204577972, 0.66903991535979046],
-                                                               [0.19313304721030042, 0.67091357716771816],
-                                                               [0.19456366237482117, 0.66369779254770866],
-                                                               [0.19599427753934193, 0.64871514640135963],
-                                                               [0.19742489270386265, 0.62871181570354839],
-                                                               [0.19885550786838341, 0.60735422130187466],
-                                                               [0.20028612303290416, 0.58855700773988151],
-                                                               [0.20171673819742489, 0.57576552603043929],
-                                                               [0.20314735336194564, 0.57132433348351219],
-                                                               [0.20457796852646637, 0.57604745858206863],
-                                                               [0.20600858369098712, 0.58906919727967921],
-                                                               [0.20743919885550788, 0.60800278834371901],
-                                                               [0.2088698140200286, 0.62937788405830775],
-                                                               [0.21030042918454936, 0.64927663205519193],
-                                                               [0.21173104434907009, 0.66405178050420866],
-                                                               [0.21316165951359084, 0.67099518479093367],
-                                                               [0.21459227467811159, 0.66883418474617995],
-                                                               [0.21602288984263235, 0.65796487118779412],
-                                                               [0.21745350500715308, 0.64037948622943242],
-                                                               [0.21888412017167383, 0.61930126419133991],
-                                                               [0.22031473533619456, 0.59859364331179243],
-                                                               [0.22174535050071531, 0.58205213415070256],
-                                                               [0.22317596566523606, 0.57270863849258735],
-                                                               [0.22460658082975679, 0.5722757304976156],
-                                                               [0.22603719599427755, 0.58083275809648116],
-                                                               [0.22746781115879827, 0.5968112992670741],
-                                                               [0.22889842632331903, 0.61728263891953905],
-                                                               [0.23032904148783978, 0.63849457460249426],
-                                                               [0.23175965665236051, 0.65655915963441835],
-                                                               [0.23319027181688126, 0.66816532686530306],
-                                                               [0.23462088698140199, 0.67118577589008588],
-                                                               [0.23605150214592274, 0.66506688704207884],
-                                                               [0.2374821173104435, 0.65093019462851265],
-                                                               [0.23891273247496422, 0.63136682032628288],
-                                                               [0.24034334763948495, 0.60996254514729553],
-                                                               [0.24177396280400573, 0.59064056977895296],
-                                                               [0.24320457796852646, 0.57694242909749882],
-                                                               [0.24463519313304721, 0.57137886240562841],
-                                                               [0.24606580829756797, 0.5749696187248553],
-                                                               [0.24749642346208869, 0.58705654646900818],
-                                                               [0.24892703862660945, 0.60542422638945947],
-                                                               [0.25035765379113017, 0.62670603691704474],
-                                                               [0.25178826895565093, 0.64700122397376725],
-                                                               [0.25321888412017168, 0.66258987220878707],
-                                                               [0.25464949928469244, 0.67061473021041718],
-                                                               [0.25608011444921314, 0.66960491759775043],
-                                                               [0.25751072961373389, 0.65974552344776016],
-                                                               [0.25894134477825465, 0.64284368122248425],
-                                                               [0.2603719599427754, 0.62199733834046844],
-                                                               [0.26180257510729615, 0.60102743178933027],
-                                                               [0.26323319027181691, 0.58377754660562386],
-                                                               [0.26466380543633761, 0.57340942318207011],
-                                                               [0.26609442060085836, 0.5718234402328376],
-                                                               [0.26752503576537912, 0.57931029339441142],
-                                                               [0.26895565092989987, 0.59449771347176561],
-                                                               [0.27038626609442062, 0.61460199037011287],
-                                                               [0.27181688125894132, 0.63593820076045493],
-                                                               [0.27324749642346208, 0.65459561958576706],
-                                                               [0.27467811158798283, 0.66715451888289279],
-                                                               [0.27610872675250359, 0.67131297149272628],
-                                                               [0.27753934191702434, 0.66630877248185982],
-                                                               [0.27896995708154504, 0.65305914407973964],
-                                                               [0.28040057224606579, 0.63399261754100233],
-                                                               [0.28183118741058655, 0.61260390639356022],
-                                                               [0.2832618025751073, 0.59281335858540984],
-                                                               [0.28469241773962806, 0.57824839387806071],
-                                                               [0.28612303290414876, 0.57157863219902871],
-                                                               [0.28755364806866951, 0.57402657762215736],
-                                                               [0.28898426323319026, 0.58514354496252841],
-                                                               [0.29041487839771102, 0.6028918995164726],
-                                                               [0.29184549356223177, 0.62401853618213343],
-                                                               [0.29327610872675253, 0.6446511427790641],
-                                                               [0.29470672389127323, 0.66100795815407853],
-                                                               [0.29613733905579404, 0.67009093314240176],
-                                                               [0.29756795422031473, 0.67023524455241124],
-                                                               [0.29899856938483549, 0.66141444147099626],
-                                                               [0.30042918454935624, 0.64524529346512705],
-                                                               [0.30185979971387694, 0.624691452050257],
-                                                               [0.3032904148783977, 0.60352024146854066],
-                                                               [0.30472103004291845, 0.58561214387659399],
-                                                               [0.3061516452074392, 0.57424954376047366],
-                                                               [0.30758226037195996, 0.57151509798258227],
-                                                               [0.30901287553648066, 0.57791000452630226],
-                                                               [0.31044349070100141, 0.59226213765794666],
-                                                               [0.31187410586552217, 0.61194088745978226],
-                                                               [0.31330472103004292, 0.63333932568480089],
-                                                               [0.31473533619456368, 0.65253532150391758],
-                                                               [0.31616595135908443, 0.6660104308977397],
-                                                               [0.31759656652360513, 0.67129479408383508],
-                                                               [0.31902718168812588, 0.66741983739592492],
-                                                               [0.32045779685264664, 0.65509580365300346],
-                                                               [0.32188841201716745, 0.63658157138505989],
-                                                               [0.32331902718168815, 0.61527062381696274],
-                                                               [0.32474964234620884, 0.59506905556996048],
-                                                               [0.3261802575107296, 0.57967962255475225],
-                                                               [0.32761087267525035, 0.57192306192217124],
-                                                               [0.32904148783977111, 0.57322107768934305],
-                                                               [0.33047210300429186, 0.58333575587378295],
-                                                               [0.3319027181688125, 0.60041317187051169],
-                                                               [0.33333333333333331, 0.62132319725344898],
-                                                               [0.33476394849785407, 0.64223322263638605],
-                                                               [0.33619456366237482, 0.65931063863311534],
-                                                               [0.33762517882689558, 0.66942531681755535],
-                                                               [0.33905579399141633, 0.67072333258472738],
-                                                               [0.34048640915593703, 0.66296677195214693],
-                                                               [0.34191702432045779, 0.64757733893693914],
-                                                               [0.34334763948497854, 0.62737577068993611],
-                                                               [0.34477825464949929, 0.60606482312183829],
-                                                               [0.34620886981402005, 0.58755059085389538],
-                                                               [0.34763948497854075, 0.57522655711097415],
-                                                               [0.3490701001430615, 0.57135160042306332],
-                                                               [0.35050071530758226, 0.57663596360915903],
-                                                               [0.35193133047210301, 0.59011107300298071],
-                                                               [0.35336194563662376, 0.60930706882209718],
-                                                               [0.35479256080114452, 0.6307055070471167],
-                                                               [0.35622317596566522, 0.65038425684895107],
-                                                               [0.35765379113018592, 0.66473638998059614],
-                                                               [0.35908440629470673, 0.67113129652431625],
-                                                               [0.36051502145922748, 0.66839685074642474],
-                                                               [0.36194563662374823, 0.65703425063030496],
-                                                               [0.36337625178826893, 0.63912615303835907],
-                                                               [0.36480686695278969, 0.61795494245664273],
-                                                               [0.36623748211731044, 0.59740110104177113],
-                                                               [0.3676680972818312, 0.58123195303590258],
-                                                               [0.36909871244635195, 0.57241114995448739],
-                                                               [0.37052932761087265, 0.57255546136449653],
-                                                               [0.3719599427753934, 0.58163843635281964],
-                                                               [0.37339055793991416, 0.59799525172783419],
-                                                               [0.37482117310443491, 0.61862785832476463],
-                                                               [0.37625178826895567, 0.63975449499042636],
-                                                               [0.37768240343347637, 0.65750284954436988],
-                                                               [0.37911301859799712, 0.66861981688474093],
-                                                               [0.38054363376251787, 0.67106776230787013],
-                                                               [0.38197424892703863, 0.6643980006288378],
-                                                               [0.38340486409155944, 0.64983303592148844],
-                                                               [0.38483547925608014, 0.63004248811333874],
-                                                               [0.38626609442060084, 0.60865377696589729],
-                                                               [0.38769670958512159, 0.5895872504271592],
-                                                               [0.38912732474964234, 0.57633762202503835],
-                                                               [0.3905579399141631, 0.57133342301417211],
-                                                               [0.39198855507868385, 0.57549187562400539],
-                                                               [0.39341917024320455, 0.58805077492113123],
-                                                               [0.39484978540772531, 0.60670819374644236],
-                                                               [0.39628040057224606, 0.62804440413678531],
-                                                               [0.39771101573676682, 0.64814868103513268],
-                                                               [0.39914163090128757, 0.66333610111248742],
-                                                               [0.40057224606580832, 0.67082295427406091],
-                                                               [0.40200286123032902, 0.66923697132482873],
-                                                               [0.40343347639484978, 0.65886884790127498],
-                                                               [0.40486409155937053, 0.6416189627175678],
-                                                               [0.40629470672389129, 0.62064905616643051],
-                                                               [0.40772532188841204, 0.5998027132844147],
-                                                               [0.40915593705293274, 0.58290087105913913],
-                                                               [0.41058655221745349, 0.57304147690914808],
-                                                               [0.41201716738197425, 0.57203166429648122],
-                                                               [0.413447782546495, 0.58005652229811122],
-                                                               [0.41487839771101576, 0.59564517053313182],
-                                                               [0.41630901287553645, 0.61594035758985344],
-                                                               [0.41773962804005721, 0.6372221681174387],
-                                                               [0.41917024320457791, 0.65558984803789011],
-                                                               [0.42060085836909872, 0.66767677578204332],
-                                                               [0.42203147353361947, 0.6712675321012701],
-                                                               [0.42346208869814017, 0.66570396540940024],
-                                                               [0.42489270386266093, 0.65200582472794588],
-                                                               [0.42632331902718168, 0.63268384935960331],
-                                                               [0.42775393419170243, 0.61127957418061662],
-                                                               [0.42918454935622319, 0.5917161998783862],
-                                                               [0.43061516452074394, 0.57757950746481956],
-                                                               [0.4320457796852647, 0.57146061861681263],
-                                                               [0.4334763948497854, 0.57448106764159512],
-                                                               [0.43490701001430615, 0.58608723487247982],
-                                                               [0.4363376251788269, 0.6041518199044047],
-                                                               [0.43776824034334766, 0.62536375558735902],
-                                                               [0.43919885550786836, 0.64583509523982274],
-                                                               [0.44062947067238911, 0.66181363641041724],
-                                                               [0.44206008583690987, 0.6703706640092828],
-                                                               [0.44349070100143062, 0.66993775601431116],
-                                                               [0.44492131616595143, 0.66059426035619628],
-                                                               [0.44635193133047213, 0.64405275119510597],
-                                                               [0.44778254649499283, 0.62334513031555916],
-                                                               [0.44921316165951358, 0.60226690827746721],
-                                                               [0.45064377682403434, 0.58468152331910472],
-                                                               [0.45207439198855509, 0.57381220976071856],
-                                                               [0.45350500715307585, 0.57165120971596484],
-                                                               [0.45493562231759654, 0.57859461400268908],
-                                                               [0.4563662374821173, 0.59336976245170636],
-                                                               [0.45779685264663805, 0.61326851044859076],
-                                                               [0.45922746781115881, 0.63464360616317916],
-                                                               [0.46065808297567956, 0.65357719722721919],
-                                                               [0.46208869814020026, 0.66659893592482955],
-                                                               [0.46351931330472101, 0.67132206102338643],
-                                                               [0.46494992846924177, 0.66688086847645967],
-                                                               [0.46638054363376252, 0.65408938676701711],
-                                                               [0.46781115879828328, 0.63529217320502351],
-                                                               [0.46924177396280398, 0.61393457880335056],
-                                                               [0.47067238912732473, 0.59393124810553977],
-                                                               [0.47210300429184548, 0.57894860195919007],
-                                                               [0.47353361945636624, 0.57173281733918024],
-                                                               [0.47496423462088699, 0.57360647914710794],
-                                                               [0.47639484978540775, 0.58422616293942842],
-                                                               [0.47782546494992845, 0.60164538137164358],
-                                                               [0.4792560801144492, 0.62267135687218034],
-                                                               [0.4806866952789699, 0.64345022749769865],
-                                                               [0.48211731044349071, 0.66017342328543427],
-                                                               [0.48354792560801146, 0.66977574101493564],
-                                                               [0.48497854077253216, 0.67049716689447136],
-                                                               [0.48640915593705292, 0.66220547040080191],
-                                                               [0.48783977110157367, 0.64642044088029094],
-                                                               [0.48927038626609443, 0.62603532457219246],
-                                                               [0.49070100143061518, 0.60478652000642552],
-                                                               [0.49213161659513593, 0.58656873158114176],
-                                                               [0.49356223175965669, 0.57472110717569802],
-                                                               [0.49499284692417739, 0.57141520400578227],
-                                                               [0.49642346208869814, 0.57725696277624194],
-                                                               [0.4978540772532189, 0.59117564449534543],
-                                                               [0.49928469241773965, 0.61062008677933843],
-                                                               [0.50071530758226035, 0.63202630772755963],
-                                                               [0.50214592274678116, 0.65147075001155375],
-                                                               [0.50357653791130186, 0.66538943173065646],
-                                                               [0.50500715307582256, 0.67123119050111635],
-                                                               [0.50643776824034337, 0.6679252873312006],
-                                                               [0.50786838340486407, 0.6560776629257572],
-                                                               [0.50929899856938488, 0.63785987450047366],
-                                                               [0.51072961373390557, 0.61661106993470682],
-                                                               [0.51216022889842627, 0.59622595362660802],
-                                                               [0.51359084406294708, 0.58044092410609693],
-                                                               [0.51502145922746778, 0.57214922761242737],
-                                                               [0.51645207439198859, 0.57287065349196331],
-                                                               [0.51788268955650929, 0.58247297122146413],
-                                                               [0.51931330472102999, 0.59919616700919809],
-                                                               [0.5207439198855508, 0.61997503763471773],
-                                                               [0.5221745350500715, 0.64100101313525315],
-                                                               [0.52360515021459231, 0.65842023156747065],
-                                                               [0.52503576537911301, 0.66903991535979046],
-                                                               [0.52646638054363382, 0.67091357716771816],
-                                                               [0.52789699570815452, 0.66369779254770878],
-                                                               [0.52932761087267521, 0.64871514640136041],
-                                                               [0.53075822603719602, 0.62871181570354862],
-                                                               [0.53218884120171672, 0.60735422130187555],
-                                                               [0.53361945636623753, 0.58855700773988062],
-                                                               [0.53505007153075823, 0.57576552603043896],
-                                                               [0.53648068669527893, 0.57132433348351219],
-                                                               [0.53791130185979974, 0.57604745858206874],
-                                                               [0.53934191702432044, 0.58906919727967899],
-                                                               [0.54077253218884125, 0.60800278834371879],
-                                                               [0.54220314735336195, 0.62937788405830741],
-                                                               [0.54363376251788265, 0.64927663205519037],
-                                                               [0.54506437768240346, 0.66405178050420899],
-                                                               [0.54649499284692415, 0.67099518479093356],
-                                                               [0.54792560801144496, 0.66883418474617973],
-                                                               [0.54935622317596566, 0.65796487118779423],
-                                                               [0.55078683834048636, 0.64037948622943308],
-                                                               [0.55221745350500717, 0.61930126419134002],
-                                                               [0.55364806866952787, 0.59859364331179321],
-                                                               [0.55507868383404868, 0.58205213415070178],
-                                                               [0.55650929899856949, 0.57270863849258735],
-                                                               [0.55793991416309008, 0.5722757304976156],
-                                                               [0.55937052932761089, 0.58083275809648083],
-                                                               [0.56080114449213159, 0.5968112992670741],
-                                                               [0.5622317596566524, 0.61728263891953894],
-                                                               [0.5636623748211731, 0.63849457460249337],
-                                                               [0.56509298998569379, 0.65655915963441724],
-                                                               [0.5665236051502146, 0.66816532686530306],
-                                                               [0.5679542203147353, 0.67118577589008599],
-                                                               [0.56938483547925611, 0.66506688704207861],
-                                                               [0.57081545064377681, 0.65093019462851298],
-                                                               [0.57224606580829751, 0.63136682032628366],
-                                                               [0.57367668097281832, 0.60996254514729564],
-                                                               [0.57510729613733902, 0.59064056977895429],
-                                                               [0.57653791130185983, 0.57694242909749838],
-                                                               [0.57796852646638053, 0.57137886240562852],
-                                                               [0.57939914163090134, 0.57496961872485552],
-                                                               [0.58082975679542204, 0.58705654646900796],
-                                                               [0.58226037195994274, 0.60542422638945859],
-                                                               [0.58369098712446355, 0.62670603691704452],
-                                                               [0.58512160228898424, 0.64700122397376625],
-                                                               [0.58655221745350505, 0.66258987220878707],
-                                                               [0.58798283261802575, 0.6706147302104174],
-                                                               [0.58941344778254645, 0.66960491759775043],
-                                                               [0.59084406294706726, 0.65974552344775983],
-                                                               [0.59227467811158807, 0.64284368122248459],
-                                                               [0.59370529327610877, 0.62199733834046789],
-                                                               [0.59513590844062947, 0.60102743178933127],
-                                                               [0.59656652360515017, 0.58377754660562475],
-                                                               [0.59799713876967098, 0.57340942318207011],
-                                                               [0.59942775393419168, 0.5718234402328376],
-                                                               [0.60085836909871249, 0.57931029339441154],
-                                                               [0.60228898426323318, 0.59449771347176539],
-                                                               [0.60371959942775388, 0.61460199037011198],
-                                                               [0.60515021459227469, 0.63593820076045549],
-                                                               [0.60658082975679539, 0.6545956195857664],
-                                                               [0.6080114449213162, 0.66715451888289279],
-                                                               [0.6094420600858369, 0.67131297149272651],
-                                                               [0.6108726752503576, 0.66630877248186027],
-                                                               [0.61230329041487841, 0.6530591440797392],
-                                                               [0.61373390557939911, 0.63399261754100256],
-                                                               [0.61516452074391992, 0.61260390639355988],
-                                                               [0.61659513590844062, 0.59281335858541062],
-                                                               [0.61802575107296132, 0.57824839387806071],
-                                                               [0.61945636623748213, 0.57157863219902871],
-                                                               [0.62088698140200282, 0.57402657762215703],
-                                                               [0.62231759656652363, 0.58514354496252874],
-                                                               [0.62374821173104433, 0.60289189951647237],
-                                                               [0.62517882689556514, 0.62401853618213388],
-                                                               [0.62660944206008584, 0.64465114277906388],
-                                                               [0.62804005722460643, 0.66100795815407798],
-                                                               [0.62947067238912735, 0.67009093314240176],
-                                                               [0.63090128755364805, 0.67023524455241146],
-                                                               [0.63233190271816886, 0.6614144414709956],
-                                                               [0.63376251788268956, 0.64524529346512727],
-                                                               [0.63519313304721026, 0.62469145205025711],
-                                                               [0.63662374821173107, 0.60352024146854],
-                                                               [0.63805436337625177, 0.58561214387659399],
-                                                               [0.63948497854077258, 0.57424954376047388],
-                                                               [0.64091559370529327, 0.57151509798258227],
-                                                               [0.64234620886981397, 0.57791000452630137],
-                                                               [0.64377682403433489, 0.59226213765794755],
-                                                               [0.64520743919885548, 0.61194088745978192],
-                                                               [0.64663805436337629, 0.63333932568480156],
-                                                               [0.64806866952789699, 0.65253532150391746],
-                                                               [0.64949928469241769, 0.66601043089773893],
-                                                               [0.6509298998569385, 0.67129479408383508],
-                                                               [0.6523605150214592, 0.66741983739592525],
-                                                               [0.6537911301859799, 0.65509580365300257],
-                                                               [0.65522174535050071, 0.63658157138506033],
-                                                               [0.6566523605150214, 0.61527062381696362],
-                                                               [0.65808297567954221, 0.59506905556995993],
-                                                               [0.65951359084406291, 0.57967962255475247],
-                                                               [0.66094420600858372, 0.57192306192217124],
-                                                               [0.66237482117310442, 0.57322107768934272],
-                                                               [0.66380543633762501, 0.58333575587378173],
-                                                               [0.66523605150214593, 0.6004131718705128],
-                                                               [0.66666666666666663, 0.62132319725344898],
-                                                               [0.66809728183118744, 0.64223322263638638],
-                                                               [0.66952789699570814, 0.65931063863311534],
-                                                               [0.67095851216022895, 0.66942531681755557],
-                                                               [0.67238912732474965, 0.67072333258472749],
-                                                               [0.67381974248927035, 0.66296677195214748],
-                                                               [0.67525035765379116, 0.64757733893693914],
-                                                               [0.67668097281831185, 0.62737577068993577],
-                                                               [0.67811158798283266, 0.60606482312183785],
-                                                               [0.67954220314735347, 0.58755059085389549],
-                                                               [0.68097281831187406, 0.57522655711097415],
-                                                               [0.68240343347639487, 0.57135160042306332],
-                                                               [0.68383404864091557, 0.57663596360915881],
-                                                               [0.68526466380543638, 0.59011107300298049],
-                                                               [0.68669527896995708, 0.6093070688220964],
-                                                               [0.68812589413447778, 0.6307055070471157],
-                                                               [0.68955650929899859, 0.6503842568489514],
-                                                               [0.69098712446351929, 0.66473638998059592],
-                                                               [0.6924177396280401, 0.67113129652431625],
-                                                               [0.6938483547925608, 0.66839685074642496],
-                                                               [0.69527896995708149, 0.65703425063030607],
-                                                               [0.6967095851216023, 0.63912615303835907],
-                                                               [0.698140200286123, 0.61795494245664362],
-                                                               [0.69957081545064381, 0.5974011010417708],
-                                                               [0.70100143061516451, 0.58123195303590258],
-                                                               [0.70243204577968521, 0.57241114995448761],
-                                                               [0.70386266094420602, 0.57255546136449653],
-                                                               [0.70529327610872672, 0.5816384363528192],
-                                                               [0.70672389127324753, 0.59799525172783408],
-                                                               [0.70815450643776823, 0.61862785832476375],
-                                                               [0.70958512160228904, 0.6397544949904268],
-                                                               [0.71101573676680974, 0.65750284954437033],
-                                                               [0.71244635193133043, 0.66861981688474093],
-                                                               [0.71387696709585124, 0.67106776230787002],
-                                                               [0.71530758226037183, 0.66439800062883814],
-                                                               [0.71673819742489275, 0.64983303592148856],
-                                                               [0.71816881258941345, 0.63004248811333963],
-                                                               [0.71959942775393415, 0.60865377696589817],
-                                                               [0.72103004291845496, 0.58958725042715876],
-                                                               [0.72246065808297566, 0.57633762202503858],
-                                                               [0.72389127324749647, 0.57133342301417211],
-                                                               [0.72532188841201717, 0.57549187562400539],
-                                                               [0.72675250357653787, 0.58805077492113067],
-                                                               [0.72818311874105868, 0.60670819374644236],
-                                                               [0.72961373390557938, 0.62804440413678442],
-                                                               [0.7310443490701003, 0.64814868103513379],
-                                                               [0.73247496423462088, 0.66333610111248731],
-                                                               [0.73390557939914158, 0.6708229542740608],
-                                                               [0.73533619456366239, 0.66923697132482873],
-                                                               [0.73676680972818309, 0.6588688479012752],
-                                                               [0.7381974248927039, 0.64161896271756813],
-                                                               [0.7396280400572246, 0.6206490561664314],
-                                                               [0.7410586552217453, 0.59980271328441603],
-                                                               [0.74248927038626611, 0.58290087105913824],
-                                                               [0.74391988555078681, 0.57304147690914831],
-                                                               [0.74535050071530762, 0.57203166429648133],
-                                                               [0.74678111587982832, 0.580056522298111],
-                                                               [0.74821173104434902, 0.59564517053313049],
-                                                               [0.74964234620886983, 0.6159403575898531],
-                                                               [0.75107296137339041, 0.63722216811743781],
-                                                               [0.75250357653791133, 0.655589848037891],
-                                                               [0.75393419170243203, 0.66767677578204332],
-                                                               [0.75536480686695273, 0.6712675321012701],
-                                                               [0.75679542203147354, 0.66570396540940002],
-                                                               [0.75822603719599424, 0.65200582472794599],
-                                                               [0.75965665236051505, 0.63268384935960365],
-                                                               [0.76108726752503575, 0.61127957418061696],
-                                                               [0.76251788268955656, 0.5917161998783862],
-                                                               [0.76394849785407726, 0.57757950746481979],
-                                                               [0.76537911301859796, 0.57146061861681263],
-                                                               [0.76680972818311888, 0.57448106764159557],
-                                                               [0.76824034334763946, 0.58608723487247971],
-                                                               [0.76967095851216027, 0.60415181990440459],
-                                                               [0.77110157367668097, 0.62536375558735868],
-                                                               [0.77253218884120167, 0.64583509523982274],
-                                                               [0.77396280400572248, 0.66181363641041713],
-                                                               [0.77539341917024318, 0.6703706640092828],
-                                                               [0.77682403433476399, 0.66993775601431105],
-                                                               [0.77825464949928469, 0.66059426035619628],
-                                                               [0.77968526466380539, 0.64405275119510741],
-                                                               [0.7811158798283262, 0.62334513031555927],
-                                                               [0.7825464949928469, 0.60226690827746743],
-                                                               [0.78397711015736771, 0.58468152331910472],
-                                                               [0.78540772532188841, 0.57381220976071912],
-                                                               [0.7868383404864091, 0.57165120971596484],
-                                                               [0.78826895565092991, 0.57859461400268997],
-                                                               [0.78969957081545061, 0.59336976245170636],
-                                                               [0.79113018597997142, 0.61326851044859054],
-                                                               [0.79256080114449212, 0.63464360616317894],
-                                                               [0.79399141630901282, 0.65357719722721797],
-                                                               [0.79542203147353363, 0.66659893592482933],
-                                                               [0.79685264663805433, 0.67132206102338643],
-                                                               [0.79828326180257514, 0.66688086847645911],
-                                                               [0.79971387696709584, 0.65408938676701744],
-                                                               [0.80114449213161665, 0.63529217320502385],
-                                                               [0.80257510729613724, 0.61393457880335078],
-                                                               [0.80400572246065805, 0.59393124810553999],
-                                                               [0.80543633762517886, 0.57894860195919029],
-                                                               [0.80686695278969955, 0.57173281733918035],
-                                                               [0.80829756795422036, 0.57360647914710838],
-                                                               [0.80972818311874106, 0.58422616293942842],
-                                                               [0.81115879828326176, 0.60164538137164325],
-                                                               [0.81258941344778257, 0.62267135687218012],
-                                                               [0.81402002861230327, 0.64345022749769853],
-                                                               [0.81545064377682408, 0.66017342328543405],
-                                                               [0.81688125894134478, 0.6697757410149352],
-                                                               [0.81831187410586548, 0.67049716689447181],
-                                                               [0.81974248927038629, 0.66220547040080124],
-                                                               [0.82117310443490699, 0.64642044088029105],
-                                                               [0.8226037195994278, 0.62603532457219258],
-                                                               [0.82403433476394849, 0.60478652000642563],
-                                                               [0.82546494992846919, 0.58656873158114298],
-                                                               [0.82689556509299, 0.57472110717569802],
-                                                               [0.8283261802575107, 0.57141520400578227],
-                                                               [0.82975679542203151, 0.57725696277624261],
-                                                               [0.83118741058655221, 0.59117564449534532],
-                                                               [0.83261802575107291, 0.61062008677933821],
-                                                               [0.83404864091559372, 0.6320263077275593],
-                                                               [0.83547925608011442, 0.6514707500115523],
-                                                               [0.83690987124463523, 0.66538943173065623],
-                                                               [0.83834048640915582, 0.67123119050111624],
-                                                               [0.83977110157367663, 0.66792528733120127],
-                                                               [0.84120171673819744, 0.65607766292575631],
-                                                               [0.84263233190271813, 0.63785987450047388],
-                                                               [0.84406294706723894, 0.61661106993470549],
-                                                               [0.84549356223175964, 0.59622595362660824],
-                                                               [0.84692417739628034, 0.58044092410609804],
-                                                               [0.84835479256080115, 0.57214922761242737],
-                                                               [0.84978540772532185, 0.57287065349196276],
-                                                               [0.85121602288984266, 0.58247297122146391],
-                                                               [0.85264663805436336, 0.59919616700919931],
-                                                               [0.85407725321888428, 0.61997503763471895],
-                                                               [0.85550786838340487, 0.64100101313525304],
-                                                               [0.85693848354792557, 0.65842023156746954],
-                                                               [0.85836909871244638, 0.66903991535979046],
-                                                               [0.85979971387696708, 0.67091357716771816],
-                                                               [0.86123032904148789, 0.66369779254770822],
-                                                               [0.86266094420600858, 0.64871514640136063],
-                                                               [0.86409155937052939, 0.62871181570354873],
-                                                               [0.86552217453505009, 0.60735422130187444],
-                                                               [0.86695278969957079, 0.58855700773988306],
-                                                               [0.8683834048640916, 0.57576552603043851],
-                                                               [0.8698140200286123, 0.57132433348351219],
-                                                               [0.871244635193133, 0.57604745858206874],
-                                                               [0.87267525035765381, 0.58906919727967988],
-                                                               [0.87410586552217451, 0.60800278834371735],
-                                                               [0.87553648068669532, 0.62937788405830708],
-                                                               [0.87696709585121602, 0.64927663205519148],
-                                                               [0.87839771101573672, 0.66405178050420754],
-                                                               [0.87982832618025753, 0.67099518479093367],
-                                                               [0.88125894134477822, 0.66883418474618017],
-                                                               [0.88268955650929903, 0.65796487118779445],
-                                                               [0.88412017167381973, 0.64037948622943208],
-                                                               [0.88555078683834043, 0.61930126419134168],
-                                                               [0.88698140200286124, 0.59859364331179332],
-                                                               [0.88841201716738194, 0.58205213415070289],
-                                                               [0.88984263233190286, 0.57270863849258735],
-                                                               [0.89127324749642345, 0.57227573049761582],
-                                                               [0.89270386266094426, 0.58083275809648172],
-                                                               [0.89413447782546496, 0.59681129926707388],
-                                                               [0.89556509298998566, 0.61728263891953883],
-                                                               [0.89699570815450647, 0.63849457460249448],
-                                                               [0.89842632331902716, 0.65655915963441713],
-                                                               [0.89985693848354797, 0.6681653268653025],
-                                                               [0.90128755364806867, 0.67118577589008599],
-                                                               [0.90271816881258937, 0.66506688704207872],
-                                                               [0.90414878397711018, 0.65093019462851187],
-                                                               [0.90557939914163088, 0.631366820326284],
-                                                               [0.90701001430615169, 0.60996254514729575],
-                                                               [0.90844062947067239, 0.59064056977895329],
-                                                               [0.90987124463519309, 0.57694242909749971],
-                                                               [0.9113018597997139, 0.57137886240562852],
-                                                               [0.9127324749642346, 0.57496961872485486],
-                                                               [0.91416309012875541, 0.58705654646900784],
-                                                               [0.91559370529327611, 0.60542422638945981],
-                                                               [0.9170243204577968, 0.62670603691704285],
-                                                               [0.91845493562231761, 0.64700122397376614],
-                                                               [0.91988555078683831, 0.66258987220878696],
-                                                               [0.92131616595135912, 0.6706147302104174],
-                                                               [0.92274678111587982, 0.66960491759775087],
-                                                               [0.92417739628040052, 0.65974552344776083],
-                                                               [0.92560801144492122, 0.6428436812224847],
-                                                               [0.92703862660944203, 0.62199733834046811],
-                                                               [0.92846924177396284, 0.60102743178932994],
-                                                               [0.92989985693848354, 0.58377754660562498],
-                                                               [0.93133047210300424, 0.57340942318207011],
-                                                               [0.93276108726752505, 0.5718234402328376],
-                                                               [0.93419170243204575, 0.57931029339441009],
-                                                               [0.93562231759656656, 0.5944977134717665],
-                                                               [0.93705293276108725, 0.61460199037011187],
-                                                               [0.93848354792560795, 0.63593820076045526],
-                                                               [0.93991416309012876, 0.65459561958576729],
-                                                               [0.94134477825464946, 0.66715451888289223],
-                                                               [0.94277539341917027, 0.67131297149272651],
-                                                               [0.94420600858369097, 0.66630877248186049],
-                                                               [0.94563662374821178, 0.65305914407973953],
-                                                               [0.94706723891273248, 0.63399261754100122],
-                                                               [0.94849785407725318, 0.61260390639356122],
-                                                               [0.94992846924177399, 0.59281335858541084],
-                                                               [0.9513590844062948, 0.57824839387806082],
-                                                               [0.9527896995708155, 0.5715786321990286],
-                                                               [0.95422031473533619, 0.57402657762215692],
-                                                               [0.95565092989985689, 0.58514354496252763],
-                                                               [0.9570815450643777, 0.60289189951647215],
-                                                               [0.9585121602288984, 0.62401853618213377],
-                                                               [0.95994277539341921, 0.64465114277906499],
-                                                               [0.9613733905579398, 0.66100795815407787],
-                                                               [0.96280400572246061, 0.67009093314240176],
-                                                               [0.96423462088698142, 0.67023524455241112],
-                                                               [0.96566523605150212, 0.66141444147099737],
-                                                               [0.96709585121602293, 0.64524529346512616],
-                                                               [0.96852646638054363, 0.62469145205025722],
-                                                               [0.96995708154506433, 0.60352024146854044],
-                                                               [0.97138769670958514, 0.58561214387659322],
-                                                               [0.97281831187410583, 0.57424954376047443],
-                                                               [0.97424892703862664, 0.57151509798258215],
-                                                               [0.97567954220314734, 0.57791000452630203],
-                                                               [0.97711015736766804, 0.59226213765794522],
-                                                               [0.97854077253218885, 0.61194088745978326],
-                                                               [0.97997138769670955, 0.63333932568479989],
-                                                               [0.98140200286123036, 0.65253532150391735],
-                                                               [0.98283261802575106, 0.66601043089773959],
-                                                               [0.98426323319027187, 0.67129479408383519],
-                                                               [0.98569384835479257, 0.66741983739592525],
-                                                               [0.98712446351931338, 0.65509580365300379],
-                                                               [0.98855507868383408, 0.63658157138506033],
-                                                               [0.98998569384835478, 0.6152706238169624],
-                                                               [0.99141630901287559, 0.59506905556995893],
-                                                               [0.99284692417739628, 0.57967962255475247],
-                                                               [0.99427753934191698, 0.57192306192217124],
-                                                               [0.99570815450643779, 0.57322107768934327],
-                                                               [0.99713876967095849, 0.58333575587378173],
-                                                               [0.9985693848354793, 0.60041317187051135],
-                                                               [1.0, 0.62132319725344864]]},
-                                     'filtrangemin': {'curved': False,
-                                                      'data': [[0.0, 0.57873101098362156],
-                                                               [0.0014306151645207439, 0.59964103636655841],
-                                                               [0.0028612303290414878, 0.61671845236328793],
-                                                               [0.0042918454935622317, 0.62683313054772782],
-                                                               [0.0057224606580829757, 0.62813114631489964],
-                                                               [0.0071530758226037196, 0.62037458568231896],
-                                                               [0.0085836909871244635, 0.60498515266711084],
-                                                               [0.010014306151645207, 0.58478358442010792],
-                                                               [0.011444921316165951, 0.56347263685201054],
-                                                               [0.012875536480686695, 0.54495840458406763],
-                                                               [0.014306151645207439, 0.53263437084114618],
-                                                               [0.015736766809728183, 0.52875941415323557],
-                                                               [0.017167381974248927, 0.53404377733933128],
-                                                               [0.018597997138769671, 0.54751888673315308],
-                                                               [0.020028612303290415, 0.56671488255226954],
-                                                               [0.021459227467811159, 0.5881133207772884],
-                                                               [0.022889842632331903, 0.60779207057912354],
-                                                               [0.024320457796852647, 0.62214420371076851],
-                                                               [0.02575107296137339, 0.6285391102544885],
-                                                               [0.027181688125894134, 0.62580466447659711],
-                                                               [0.028612303290414878, 0.61444206436047721],
-                                                               [0.030042918454935619, 0.59653396676853065],
-                                                               [0.031473533619456366, 0.57536275618681443],
-                                                               [0.032904148783977114, 0.55480891477194338],
-                                                               [0.034334763948497854, 0.53863976676607483],
-                                                               [0.035765379113018594, 0.52981896368465964],
-                                                               [0.037195994277539342, 0.5299632750946689],
-                                                               [0.038626609442060082, 0.53904625008299223],
-                                                               [0.04005722460658083, 0.55540306545800655],
-                                                               [0.041487839771101563, 0.57603567205493722],
-                                                               [0.042918454935622317, 0.59716230872059817],
-                                                               [0.044349070100143065, 0.61491066327454236],
-                                                               [0.045779685264663805, 0.6260276306149134],
-                                                               [0.047210300429184546, 0.62847557603804227],
-                                                               [0.048640915593705293, 0.62180581435901006],
-                                                               [0.05007153075822604, 0.6072408496516607],
-                                                               [0.051502145922746781, 0.58745030184351099],
-                                                               [0.052932761087267521, 0.56606159069606898],
-                                                               [0.054363376251788269, 0.54699506415733123],
-                                                               [0.055793991416309016, 0.53374543575521061],
-                                                               [0.057224606580829757, 0.52874123674434437],
-                                                               [0.058655221745350497, 0.53289968935417775],
-                                                               [0.060085836909871237, 0.54545858865130359],
-                                                               [0.061516452074391992, 0.56411600747661506],
-                                                               [0.062947067238912732, 0.585452217866958],
-                                                               [0.064377682403433473, 0.60555649476530526],
-                                                               [0.065808297567954227, 0.62074391484265956],
-                                                               [0.067238912732474967, 0.62823076800423305],
-                                                               [0.068669527896995708, 0.62664478505500099],
-                                                               [0.070100143061516448, 0.6162766616314469],
-                                                               [0.071530758226037189, 0.59902677644774027],
-                                                               [0.072961373390557943, 0.57805686989660277],
-                                                               [0.074391988555078684, 0.55721052701458673],
-                                                               [0.075822603719599424, 0.54030868478931082],
-                                                               [0.077253218884120164, 0.53044929063932034],
-                                                               [0.078683834048640919, 0.52943947802665359],
-                                                               [0.080114449213161659, 0.53746433602828358],
-                                                               [0.0815450643776824, 0.55305298426330363],
-                                                               [0.082975679542203126, 0.5733481713200258],
-                                                               [0.084406294706723894, 0.59462998184761129],
-                                                               [0.085836909871244635, 0.6129976617680627],
-                                                               [0.087267525035765375, 0.62508458951221557],
-                                                               [0.08869814020028613, 0.62867534583144236],
-                                                               [0.09012875536480687, 0.62311177913957205],
-                                                               [0.091559370529327611, 0.60941363845811758],
-                                                               [0.092989985693848351, 0.59009166308977556],
-                                                               [0.094420600858369091, 0.56868738791078832],
-                                                               [0.09585121602288986, 0.54912401360855811],
-                                                               [0.097281831187410586, 0.53498732119499193],
-                                                               [0.098712446351931327, 0.52886843234698488],
-                                                               [0.10014306151645208, 0.53188888137176771],
-                                                               [0.10157367668097282, 0.54349504860265241],
-                                                               [0.10300429184549356, 0.5615596336345765],
-                                                               [0.1044349070100143, 0.5827715693175316],
-                                                               [0.10586552217453504, 0.60324290896999588],
-                                                               [0.1072961373390558, 0.61922145014058982],
-                                                               [0.10872675250357654, 0.62777847773945505],
-                                                               [0.11015736766809728, 0.62734556974448341],
-                                                               [0.11158798283261803, 0.61800207408636831],
-                                                               [0.11301859799713877, 0.60146056492527866],
-                                                               [0.11444921316165951, 0.58075294404573119],
-                                                               [0.11587982832618025, 0.55967472200763857],
-                                                               [0.11731044349070099, 0.54208933704927664],
-                                                               [0.11874105865522175, 0.53122002349089104],
-                                                               [0.12017167381974247, 0.52905902344613709],
-                                                               [0.12160228898426323, 0.53600242773286177],
-                                                               [0.12303290414878398, 0.55077757618187928],
-                                                               [0.12446351931330472, 0.57067632417876279],
-                                                               [0.12589413447782546, 0.59205141989335197],
-                                                               [0.12732474964234622, 0.61098501095739122],
-                                                               [0.12875536480686695, 0.62400674965500202],
-                                                               [0.1301859799713877, 0.62872987475355868],
-                                                               [0.13161659513590845, 0.6242886822066317],
-                                                               [0.13304721030042918, 0.61149720049718947],
-                                                               [0.13447782546494993, 0.59269998693519643],
-                                                               [0.13590844062947066, 0.57134239253352292],
-                                                               [0.13733905579399142, 0.55133906183571135],
-                                                               [0.13876967095851217, 0.53635641568936199],
-                                                               [0.1402002861230329, 0.52914063106935261],
-                                                               [0.14163090128755365, 0.53101429287728019],
-                                                               [0.14306151645207438, 0.54163397666960045],
-                                                               [0.14449213161659513, 0.55905319510181639],
-                                                               [0.14592274678111589, 0.58007917060235237],
-                                                               [0.14735336194563661, 0.60085804122787134],
-                                                               [0.14878397711015737, 0.6175812370156063],
-                                                               [0.15021459227467812, 0.62718355474510779],
-                                                               [0.15164520743919885, 0.62790498062464362],
-                                                               [0.1530758226037196, 0.6196132841309735],
-                                                               [0.15450643776824033, 0.60382825461046308],
-                                                               [0.15593705293276108, 0.58344313830236516],
-                                                               [0.15736766809728184, 0.56219433373659733],
-                                                               [0.15879828326180256, 0.54397654531131445],
-                                                               [0.16022889842632332, 0.53212892090587027],
-                                                               [0.16165951359084407, 0.52882301773595441],
-                                                               [0.1630901287553648, 0.5346647765064142],
-                                                               [0.16452074391988555, 0.54858345822551757],
-                                                               [0.16595135908440625, 0.56802790050951091],
-                                                               [0.16738197424892703, 0.58943412145773155],
-                                                               [0.16881258941344779, 0.60887856374172533],
-                                                               [0.17024320457796852, 0.6227972454608286],
-                                                               [0.17167381974248927, 0.6286390042312886],
-                                                               [0.17310443490701002, 0.62533310106137274],
-                                                               [0.17453505007153075, 0.61348547665592912],
-                                                               [0.17596566523605151, 0.5952676882306458],
-                                                               [0.17739628040057226, 0.57401888366487763],
-                                                               [0.17882689556509296, 0.55363376735678016],
-                                                               [0.18025751072961374, 0.53784873783626941],
-                                                               [0.18168812589413447, 0.5295570413425994],
-                                                               [0.18311874105865522, 0.53027846722213545],
-                                                               [0.18454935622317598, 0.53988078495163661],
-                                                               [0.1859799713876967, 0.55660398073937156],
-                                                               [0.18741058655221746, 0.57738285136489043],
-                                                               [0.18884120171673818, 0.59840882686542662],
-                                                               [0.19027181688125894, 0.61582804529764223],
-                                                               [0.19170243204577972, 0.62644772908996271],
-                                                               [0.19313304721030042, 0.62832139089789041],
-                                                               [0.19456366237482117, 0.62110560627788092],
-                                                               [0.19599427753934193, 0.60612296013153177],
-                                                               [0.19742489270386265, 0.58611962943372065],
-                                                               [0.19885550786838341, 0.56476203503204692],
-                                                               [0.20028612303290416, 0.54596482147005365],
-                                                               [0.20171673819742489, 0.53317333976061143],
-                                                               [0.20314735336194564, 0.52873214721368433],
-                                                               [0.20457796852646637, 0.53345527231224077],
-                                                               [0.20600858369098712, 0.54647701100985147],
-                                                               [0.20743919885550788, 0.56541060207389127],
-                                                               [0.2088698140200286, 0.58678569778848],
-                                                               [0.21030042918454936, 0.60668444578536407],
-                                                               [0.21173104434907009, 0.62145959423438091],
-                                                               [0.21316165951359084, 0.62840299852110593],
-                                                               [0.21459227467811159, 0.6262419984763522],
-                                                               [0.21602288984263235, 0.61537268491796637],
-                                                               [0.21745350500715308, 0.59778729995960467],
-                                                               [0.21888412017167383, 0.57670907792151216],
-                                                               [0.22031473533619456, 0.55600145704196469],
-                                                               [0.22174535050071531, 0.53945994788087481],
-                                                               [0.22317596566523606, 0.5301164522227596],
-                                                               [0.22460658082975679, 0.52968354422778785],
-                                                               [0.22603719599427755, 0.53824057182665341],
-                                                               [0.22746781115879827, 0.55421911299724635],
-                                                               [0.22889842632331903, 0.5746904526497113],
-                                                               [0.23032904148783978, 0.59590238833266651],
-                                                               [0.23175965665236051, 0.61396697336459061],
-                                                               [0.23319027181688126, 0.62557314059547531],
-                                                               [0.23462088698140199, 0.62859358962025813],
-                                                               [0.23605150214592274, 0.62247470077225109],
-                                                               [0.2374821173104435, 0.6083380083586849],
-                                                               [0.23891273247496422, 0.58877463405645503],
-                                                               [0.24034334763948495, 0.56737035887746778],
-                                                               [0.24177396280400573, 0.54804838350912521],
-                                                               [0.24320457796852646, 0.53435024282767107],
-                                                               [0.24463519313304721, 0.52878667613580066],
-                                                               [0.24606580829756797, 0.53237743245502755],
-                                                               [0.24749642346208869, 0.54446436019918043],
-                                                               [0.24892703862660945, 0.56283204011963173],
-                                                               [0.25035765379113017, 0.58411385064721688],
-                                                               [0.25178826895565093, 0.60440903770393939],
-                                                               [0.25321888412017168, 0.61999768593895921],
-                                                               [0.25464949928469244, 0.62802254394058943],
-                                                               [0.25608011444921314, 0.62701273132792268],
-                                                               [0.25751072961373389, 0.61715333717793242],
-                                                               [0.25894134477825465, 0.60025149495265651],
-                                                               [0.2603719599427754, 0.57940515207064058],
-                                                               [0.26180257510729615, 0.55843524551950252],
-                                                               [0.26323319027181691, 0.54118536033579601],
-                                                               [0.26466380543633761, 0.53081723691224236],
-                                                               [0.26609442060085836, 0.52923125396300963],
-                                                               [0.26752503576537912, 0.53671810712458357],
-                                                               [0.26895565092989987, 0.55190552720193775],
-                                                               [0.27038626609442062, 0.57200980410028512],
-                                                               [0.27181688125894132, 0.59334601449062718],
-                                                               [0.27324749642346208, 0.61200343331593932],
-                                                               [0.27467811158798283, 0.62456233261306504],
-                                                               [0.27610872675250359, 0.62872078522289854],
-                                                               [0.27753934191702434, 0.62371658621203208],
-                                                               [0.27896995708154504, 0.61046695780991189],
-                                                               [0.28040057224606579, 0.59140043127117459],
-                                                               [0.28183118741058655, 0.57001172012373247],
-                                                               [0.2832618025751073, 0.55022117231558199],
-                                                               [0.28469241773962806, 0.53565620760823296],
-                                                               [0.28612303290414876, 0.52898644592920097],
-                                                               [0.28755364806866951, 0.5314343913523295],
-                                                               [0.28898426323319026, 0.54255135869270066],
-                                                               [0.29041487839771102, 0.56029971324664485],
-                                                               [0.29184549356223177, 0.58142634991230568],
-                                                               [0.29327610872675253, 0.60205895650923635],
-                                                               [0.29470672389127323, 0.61841577188425079],
-                                                               [0.29613733905579404, 0.62749874687257401],
-                                                               [0.29756795422031473, 0.62764305828258349],
-                                                               [0.29899856938483549, 0.61882225520116851],
-                                                               [0.30042918454935624, 0.6026531071952993],
-                                                               [0.30185979971387694, 0.58209926578042925],
-                                                               [0.3032904148783977, 0.56092805519871292],
-                                                               [0.30472103004291845, 0.54301995760676625],
-                                                               [0.3061516452074392, 0.53165735749064591],
-                                                               [0.30758226037195996, 0.52892291171275452],
-                                                               [0.30901287553648066, 0.53531781825647451],
-                                                               [0.31044349070100141, 0.5496699513881188],
-                                                               [0.31187410586552217, 0.56934870118995451],
-                                                               [0.31330472103004292, 0.59074713941497314],
-                                                               [0.31473533619456368, 0.60994313523408983],
-                                                               [0.31616595135908443, 0.62341824462791184],
-                                                               [0.31759656652360513, 0.62870260781400733],
-                                                               [0.31902718168812588, 0.62482765112609717],
-                                                               [0.32045779685264664, 0.6125036173831756],
-                                                               [0.32188841201716745, 0.59398938511523214],
-                                                               [0.32331902718168815, 0.57267843754713499],
-                                                               [0.32474964234620884, 0.55247686930013262],
-                                                               [0.3261802575107296, 0.5370874362849245],
-                                                               [0.32761087267525035, 0.52933087565234349],
-                                                               [0.32904148783977111, 0.5306288914195153],
-                                                               [0.33047210300429186, 0.5407435696039552],
-                                                               [0.3319027181688125, 0.55782098560068394],
-                                                               [0.33333333333333331, 0.57873101098362123],
-                                                               [0.33476394849785407, 0.59964103636655819],
-                                                               [0.33619456366237482, 0.61671845236328759],
-                                                               [0.33762517882689558, 0.6268331305477276],
-                                                               [0.33905579399141633, 0.62813114631489964],
-                                                               [0.34048640915593703, 0.62037458568231918],
-                                                               [0.34191702432045779, 0.60498515266711139],
-                                                               [0.34334763948497854, 0.58478358442010836],
-                                                               [0.34477825464949929, 0.56347263685201054],
-                                                               [0.34620886981402005, 0.54495840458406763],
-                                                               [0.34763948497854075, 0.5326343708411464],
-                                                               [0.3490701001430615, 0.52875941415323557],
-                                                               [0.35050071530758226, 0.53404377733933128],
-                                                               [0.35193133047210301, 0.54751888673315297],
-                                                               [0.35336194563662376, 0.56671488255226943],
-                                                               [0.35479256080114452, 0.58811332077728884],
-                                                               [0.35622317596566522, 0.60779207057912321],
-                                                               [0.35765379113018592, 0.6221442037107684],
-                                                               [0.35908440629470673, 0.6285391102544885],
-                                                               [0.36051502145922748, 0.62580466447659699],
-                                                               [0.36194563662374823, 0.6144420643604771],
-                                                               [0.36337625178826893, 0.59653396676853132],
-                                                               [0.36480686695278969, 0.57536275618681498],
-                                                               [0.36623748211731044, 0.55480891477194338],
-                                                               [0.3676680972818312, 0.53863976676607483],
-                                                               [0.36909871244635195, 0.52981896368465964],
-                                                               [0.37052932761087265, 0.52996327509466867],
-                                                               [0.3719599427753934, 0.5390462500829919],
-                                                               [0.37339055793991416, 0.55540306545800644],
-                                                               [0.37482117310443491, 0.57603567205493689],
-                                                               [0.37625178826895567, 0.59716230872059861],
-                                                               [0.37768240343347637, 0.61491066327454214],
-                                                               [0.37911301859799712, 0.62602763061491318],
-                                                               [0.38054363376251787, 0.62847557603804238],
-                                                               [0.38197424892703863, 0.62180581435900995],
-                                                               [0.38340486409155944, 0.60724084965166059],
-                                                               [0.38483547925608014, 0.58745030184351099],
-                                                               [0.38626609442060084, 0.56606159069606954],
-                                                               [0.38769670958512159, 0.54699506415733146],
-                                                               [0.38912732474964234, 0.53374543575521061],
-                                                               [0.3905579399141631, 0.52874123674434437],
-                                                               [0.39198855507868385, 0.53289968935417764],
-                                                               [0.39341917024320455, 0.54545858865130348],
-                                                               [0.39484978540772531, 0.56411600747661461],
-                                                               [0.39628040057224606, 0.58545221786695745],
-                                                               [0.39771101573676682, 0.60555649476530493],
-                                                               [0.39914163090128757, 0.62074391484265956],
-                                                               [0.40057224606580832, 0.62823076800423305],
-                                                               [0.40200286123032902, 0.62664478505500099],
-                                                               [0.40343347639484978, 0.61627666163144723],
-                                                               [0.40486409155937053, 0.59902677644774005],
-                                                               [0.40629470672389129, 0.57805686989660277],
-                                                               [0.40772532188841204, 0.55721052701458673],
-                                                               [0.40915593705293274, 0.54030868478931138],
-                                                               [0.41058655221745349, 0.53044929063932034],
-                                                               [0.41201716738197425, 0.52943947802665348],
-                                                               [0.413447782546495, 0.53746433602828347],
-                                                               [0.41487839771101576, 0.55305298426330396],
-                                                               [0.41630901287553645, 0.57334817132002569],
-                                                               [0.41773962804005721, 0.59462998184761096],
-                                                               [0.41917024320457791, 0.61299766176806236],
-                                                               [0.42060085836909872, 0.62508458951221557],
-                                                               [0.42203147353361947, 0.62867534583144236],
-                                                               [0.42346208869814017, 0.6231117791395725],
-                                                               [0.42489270386266093, 0.60941363845811813],
-                                                               [0.42632331902718168, 0.59009166308977556],
-                                                               [0.42775393419170243, 0.56868738791078888],
-                                                               [0.42918454935622319, 0.54912401360855845],
-                                                               [0.43061516452074394, 0.53498732119499182],
-                                                               [0.4320457796852647, 0.52886843234698488],
-                                                               [0.4334763948497854, 0.53188888137176737],
-                                                               [0.43490701001430615, 0.54349504860265208],
-                                                               [0.4363376251788269, 0.56155963363457695],
-                                                               [0.43776824034334766, 0.58277156931753116],
-                                                               [0.43919885550786836, 0.60324290896999488],
-                                                               [0.44062947067238911, 0.61922145014058949],
-                                                               [0.44206008583690987, 0.62777847773945505],
-                                                               [0.44349070100143062, 0.62734556974448341],
-                                                               [0.44492131616595143, 0.61800207408636854],
-                                                               [0.44635193133047213, 0.60146056492527822],
-                                                               [0.44778254649499283, 0.58075294404573141],
-                                                               [0.44921316165951358, 0.55967472200763946],
-                                                               [0.45064377682403434, 0.54208933704927698],
-                                                               [0.45207439198855509, 0.5312200234908907],
-                                                               [0.45350500715307585, 0.52905902344613709],
-                                                               [0.45493562231759654, 0.53600242773286133],
-                                                               [0.4563662374821173, 0.55077757618187861],
-                                                               [0.45779685264663805, 0.57067632417876302],
-                                                               [0.45922746781115881, 0.59205141989335142],
-                                                               [0.46065808297567956, 0.61098501095739144],
-                                                               [0.46208869814020026, 0.6240067496550018],
-                                                               [0.46351931330472101, 0.62872987475355868],
-                                                               [0.46494992846924177, 0.62428868220663192],
-                                                               [0.46638054363376252, 0.61149720049718936],
-                                                               [0.46781115879828328, 0.59269998693519577],
-                                                               [0.46924177396280398, 0.57134239253352281],
-                                                               [0.47067238912732473, 0.55133906183571202],
-                                                               [0.47210300429184548, 0.53635641568936232],
-                                                               [0.47353361945636624, 0.5291406310693525],
-                                                               [0.47496423462088699, 0.53101429287728019],
-                                                               [0.47639484978540775, 0.54163397666960067],
-                                                               [0.47782546494992845, 0.55905319510181584],
-                                                               [0.4792560801144492, 0.58007917060235259],
-                                                               [0.4806866952789699, 0.6008580412278709],
-                                                               [0.48211731044349071, 0.61758123701560641],
-                                                               [0.48354792560801146, 0.6271835547451079],
-                                                               [0.48497854077253216, 0.62790498062464362],
-                                                               [0.48640915593705292, 0.61961328413097416],
-                                                               [0.48783977110157367, 0.60382825461046319],
-                                                               [0.48927038626609443, 0.58344313830236472],
-                                                               [0.49070100143061518, 0.56219433373659766],
-                                                               [0.49213161659513593, 0.54397654531131401],
-                                                               [0.49356223175965669, 0.53212892090587027],
-                                                               [0.49499284692417739, 0.52882301773595441],
-                                                               [0.49642346208869814, 0.53466477650641409],
-                                                               [0.4978540772532189, 0.54858345822551768],
-                                                               [0.49928469241773965, 0.56802790050951069],
-                                                               [0.50071530758226035, 0.58943412145773177],
-                                                               [0.50214592274678116, 0.60887856374172589],
-                                                               [0.50357653791130186, 0.6227972454608286],
-                                                               [0.50500715307582256, 0.6286390042312886],
-                                                               [0.50643776824034337, 0.62533310106137285],
-                                                               [0.50786838340486407, 0.61348547665592945],
-                                                               [0.50929899856938488, 0.59526768823064591],
-                                                               [0.51072961373390557, 0.57401888366487896],
-                                                               [0.51216022889842627, 0.55363376735678027],
-                                                               [0.51359084406294708, 0.53784873783626919],
-                                                               [0.51502145922746778, 0.52955704134259951],
-                                                               [0.51645207439198859, 0.53027846722213545],
-                                                               [0.51788268955650929, 0.53988078495163638],
-                                                               [0.51931330472102999, 0.55660398073937034],
-                                                               [0.5207439198855508, 0.57738285136488998],
-                                                               [0.5221745350500715, 0.5984088268654254],
-                                                               [0.52360515021459231, 0.6158280452976429],
-                                                               [0.52503576537911301, 0.62644772908996271],
-                                                               [0.52646638054363382, 0.62832139089789041],
-                                                               [0.52789699570815452, 0.62110560627788092],
-                                                               [0.52932761087267521, 0.60612296013153266],
-                                                               [0.53075822603719602, 0.58611962943372087],
-                                                               [0.53218884120171672, 0.5647620350320478],
-                                                               [0.53361945636623753, 0.54596482147005287],
-                                                               [0.53505007153075823, 0.53317333976061121],
-                                                               [0.53648068669527893, 0.52873214721368433],
-                                                               [0.53791130185979974, 0.53345527231224099],
-                                                               [0.53934191702432044, 0.54647701100985124],
-                                                               [0.54077253218884125, 0.56541060207389104],
-                                                               [0.54220314735336195, 0.58678569778847955],
-                                                               [0.54363376251788265, 0.60668444578536262],
-                                                               [0.54506437768240346, 0.62145959423438113],
-                                                               [0.54649499284692415, 0.62840299852110582],
-                                                               [0.54792560801144496, 0.62624199847635198],
-                                                               [0.54935622317596566, 0.61537268491796648],
-                                                               [0.55078683834048636, 0.59778729995960533],
-                                                               [0.55221745350500717, 0.57670907792151227],
-                                                               [0.55364806866952787, 0.55600145704196546],
-                                                               [0.55507868383404868, 0.53945994788087404],
-                                                               [0.55650929899856949, 0.5301164522227596],
-                                                               [0.55793991416309008, 0.52968354422778785],
-                                                               [0.55937052932761089, 0.53824057182665308],
-                                                               [0.56080114449213159, 0.55421911299724624],
-                                                               [0.5622317596566524, 0.57469045264971119],
-                                                               [0.5636623748211731, 0.59590238833266562],
-                                                               [0.56509298998569379, 0.6139669733645895],
-                                                               [0.5665236051502146, 0.62557314059547531],
-                                                               [0.5679542203147353, 0.62859358962025824],
-                                                               [0.56938483547925611, 0.62247470077225076],
-                                                               [0.57081545064377681, 0.60833800835868512],
-                                                               [0.57224606580829751, 0.58877463405645591],
-                                                               [0.57367668097281832, 0.5673703588774679],
-                                                               [0.57510729613733902, 0.54804838350912655],
-                                                               [0.57653791130185983, 0.53435024282767052],
-                                                               [0.57796852646638053, 0.52878667613580077],
-                                                               [0.57939914163090134, 0.53237743245502778],
-                                                               [0.58082975679542204, 0.54446436019918021],
-                                                               [0.58226037195994274, 0.56283204011963084],
-                                                               [0.58369098712446355, 0.58411385064721677],
-                                                               [0.58512160228898424, 0.6044090377039385],
-                                                               [0.58655221745350505, 0.61999768593895921],
-                                                               [0.58798283261802575, 0.62802254394058965],
-                                                               [0.58941344778254645, 0.62701273132792268],
-                                                               [0.59084406294706726, 0.61715333717793208],
-                                                               [0.59227467811158807, 0.60025149495265684],
-                                                               [0.59370529327610877, 0.57940515207064014],
-                                                               [0.59513590844062947, 0.55843524551950341],
-                                                               [0.59656652360515017, 0.54118536033579701],
-                                                               [0.59799713876967098, 0.53081723691224236],
-                                                               [0.59942775393419168, 0.52923125396300985],
-                                                               [0.60085836909871249, 0.53671810712458379],
-                                                               [0.60228898426323318, 0.55190552720193742],
-                                                               [0.60371959942775388, 0.57200980410028424],
-                                                               [0.60515021459227469, 0.59334601449062763],
-                                                               [0.60658082975679539, 0.61200343331593865],
-                                                               [0.6080114449213162, 0.62456233261306504],
-                                                               [0.6094420600858369, 0.62872078522289865],
-                                                               [0.6108726752503576, 0.62371658621203252],
-                                                               [0.61230329041487841, 0.61046695780991145],
-                                                               [0.61373390557939911, 0.59140043127117481],
-                                                               [0.61516452074391992, 0.57001172012373202],
-                                                               [0.61659513590844062, 0.55022117231558287],
-                                                               [0.61802575107296132, 0.53565620760823296],
-                                                               [0.61945636623748213, 0.52898644592920097],
-                                                               [0.62088698140200282, 0.53143439135232928],
-                                                               [0.62231759656652363, 0.54255135869270099],
-                                                               [0.62374821173104433, 0.56029971324664463],
-                                                               [0.62517882689556514, 0.58142634991230613],
-                                                               [0.62660944206008584, 0.60205895650923613],
-                                                               [0.62804005722460643, 0.61841577188425023],
-                                                               [0.62947067238912735, 0.62749874687257401],
-                                                               [0.63090128755364805, 0.62764305828258371],
-                                                               [0.63233190271816886, 0.61882225520116785],
-                                                               [0.63376251788268956, 0.60265310719529952],
-                                                               [0.63519313304721026, 0.58209926578042936],
-                                                               [0.63662374821173107, 0.56092805519871225],
-                                                               [0.63805436337625177, 0.54301995760676625],
-                                                               [0.63948497854077258, 0.53165735749064613],
-                                                               [0.64091559370529327, 0.52892291171275452],
-                                                               [0.64234620886981397, 0.53531781825647362],
-                                                               [0.64377682403433489, 0.54966995138811969],
-                                                               [0.64520743919885548, 0.56934870118995418],
-                                                               [0.64663805436337629, 0.5907471394149737],
-                                                               [0.64806866952789699, 0.60994313523408961],
-                                                               [0.64949928469241769, 0.62341824462791118],
-                                                               [0.6509298998569385, 0.62870260781400733],
-                                                               [0.6523605150214592, 0.62482765112609751],
-                                                               [0.6537911301859799, 0.61250361738317483],
-                                                               [0.65522174535050071, 0.59398938511523247],
-                                                               [0.6566523605150214, 0.57267843754713577],
-                                                               [0.65808297567954221, 0.55247686930013218],
-                                                               [0.65951359084406291, 0.53708743628492461],
-                                                               [0.66094420600858372, 0.52933087565234349],
-                                                               [0.66237482117310442, 0.53062889141951497],
-                                                               [0.66380543633762501, 0.54074356960395398],
-                                                               [0.66523605150214593, 0.55782098560068494],
-                                                               [0.66666666666666663, 0.57873101098362123],
-                                                               [0.66809728183118744, 0.59964103636655852],
-                                                               [0.66952789699570814, 0.61671845236328759],
-                                                               [0.67095851216022895, 0.62683313054772782],
-                                                               [0.67238912732474965, 0.62813114631489975],
-                                                               [0.67381974248927035, 0.62037458568231962],
-                                                               [0.67525035765379116, 0.60498515266711139],
-                                                               [0.67668097281831185, 0.58478358442010803],
-                                                               [0.67811158798283266, 0.56347263685200999],
-                                                               [0.67954220314735347, 0.54495840458406775],
-                                                               [0.68097281831187406, 0.5326343708411464],
-                                                               [0.68240343347639487, 0.52875941415323557],
-                                                               [0.68383404864091557, 0.53404377733933095],
-                                                               [0.68526466380543638, 0.54751888673315274],
-                                                               [0.68669527896995708, 0.56671488255226854],
-                                                               [0.68812589413447778, 0.58811332077728784],
-                                                               [0.68955650929899859, 0.60779207057912366],
-                                                               [0.69098712446351929, 0.62214420371076817],
-                                                               [0.6924177396280401, 0.6285391102544885],
-                                                               [0.6938483547925608, 0.62580466447659722],
-                                                               [0.69527896995708149, 0.61444206436047832],
-                                                               [0.6967095851216023, 0.59653396676853132],
-                                                               [0.698140200286123, 0.57536275618681587],
-                                                               [0.69957081545064381, 0.55480891477194294],
-                                                               [0.70100143061516451, 0.53863976676607483],
-                                                               [0.70243204577968521, 0.52981896368465986],
-                                                               [0.70386266094420602, 0.52996327509466867],
-                                                               [0.70529327610872672, 0.53904625008299145],
-                                                               [0.70672389127324753, 0.55540306545800633],
-                                                               [0.70815450643776823, 0.57603567205493589],
-                                                               [0.70958512160228904, 0.59716230872059906],
-                                                               [0.71101573676680974, 0.61491066327454258],
-                                                               [0.71244635193133043, 0.62602763061491318],
-                                                               [0.71387696709585124, 0.62847557603804227],
-                                                               [0.71530758226037183, 0.62180581435901039],
-                                                               [0.71673819742489275, 0.6072408496516607],
-                                                               [0.71816881258941345, 0.58745030184351188],
-                                                               [0.71959942775393415, 0.56606159069607043],
-                                                               [0.72103004291845496, 0.54699506415733101],
-                                                               [0.72246065808297566, 0.53374543575521083],
-                                                               [0.72389127324749647, 0.52874123674434437],
-                                                               [0.72532188841201717, 0.53289968935417764],
-                                                               [0.72675250357653787, 0.54545858865130292],
-                                                               [0.72818311874105868, 0.56411600747661461],
-                                                               [0.72961373390557938, 0.58545221786695667],
-                                                               [0.7310443490701003, 0.60555649476530593],
-                                                               [0.73247496423462088, 0.62074391484265956],
-                                                               [0.73390557939914158, 0.62823076800423294],
-                                                               [0.73533619456366239, 0.62664478505500099],
-                                                               [0.73676680972818309, 0.61627666163144734],
-                                                               [0.7381974248927039, 0.59902677644774027],
-                                                               [0.7396280400572246, 0.57805686989660365],
-                                                               [0.7410586552217453, 0.55721052701458829],
-                                                               [0.74248927038626611, 0.54030868478931049],
-                                                               [0.74391988555078681, 0.53044929063932045],
-                                                               [0.74535050071530762, 0.52943947802665359],
-                                                               [0.74678111587982832, 0.53746433602828325],
-                                                               [0.74821173104434902, 0.55305298426330274],
-                                                               [0.74964234620886983, 0.57334817132002536],
-                                                               [0.75107296137339041, 0.59462998184761007],
-                                                               [0.75250357653791133, 0.61299766176806325],
-                                                               [0.75393419170243203, 0.62508458951221557],
-                                                               [0.75536480686695273, 0.62867534583144236],
-                                                               [0.75679542203147354, 0.62311177913957227],
-                                                               [0.75822603719599424, 0.60941363845811825],
-                                                               [0.75965665236051505, 0.5900916630897759],
-                                                               [0.76108726752503575, 0.56868738791078921],
-                                                               [0.76251788268955656, 0.54912401360855845],
-                                                               [0.76394849785407726, 0.53498732119499193],
-                                                               [0.76537911301859796, 0.52886843234698488],
-                                                               [0.76680972818311888, 0.53188888137176782],
-                                                               [0.76824034334763946, 0.54349504860265185],
-                                                               [0.76967095851216027, 0.56155963363457684],
-                                                               [0.77110157367668097, 0.58277156931753094],
-                                                               [0.77253218884120167, 0.60324290896999488],
-                                                               [0.77396280400572248, 0.61922145014058938],
-                                                               [0.77539341917024318, 0.62777847773945505],
-                                                               [0.77682403433476399, 0.6273455697444833],
-                                                               [0.77825464949928469, 0.61800207408636854],
-                                                               [0.77968526466380539, 0.60146056492527966],
-                                                               [0.7811158798283262, 0.58075294404573152],
-                                                               [0.7825464949928469, 0.55967472200763957],
-                                                               [0.78397711015736771, 0.54208933704927698],
-                                                               [0.78540772532188841, 0.53122002349089137],
-                                                               [0.7868383404864091, 0.52905902344613709],
-                                                               [0.78826895565092991, 0.53600242773286211],
-                                                               [0.78969957081545061, 0.55077757618187861],
-                                                               [0.79113018597997142, 0.57067632417876279],
-                                                               [0.79256080114449212, 0.59205141989335119],
-                                                               [0.79399141630901282, 0.61098501095739022],
-                                                               [0.79542203147353363, 0.62400674965500158],
-                                                               [0.79685264663805433, 0.62872987475355868],
-                                                               [0.79828326180257514, 0.62428868220663136],
-                                                               [0.79971387696709584, 0.6114972004971897],
-                                                               [0.80114449213161665, 0.5926999869351961],
-                                                               [0.80257510729613724, 0.57134239253352292],
-                                                               [0.80400572246065805, 0.55133906183571224],
-                                                               [0.80543633762517886, 0.53635641568936243],
-                                                               [0.80686695278969955, 0.52914063106935261],
-                                                               [0.80829756795422036, 0.53101429287728064],
-                                                               [0.80972818311874106, 0.54163397666960067],
-                                                               [0.81115879828326176, 0.5590531951018155],
-                                                               [0.81258941344778257, 0.58007917060235237],
-                                                               [0.81402002861230327, 0.60085804122787079],
-                                                               [0.81545064377682408, 0.6175812370156063],
-                                                               [0.81688125894134478, 0.62718355474510734],
-                                                               [0.81831187410586548, 0.62790498062464406],
-                                                               [0.81974248927038629, 0.61961328413097327],
-                                                               [0.82117310443490699, 0.6038282546104633],
-                                                               [0.8226037195994278, 0.58344313830236483],
-                                                               [0.82403433476394849, 0.56219433373659788],
-                                                               [0.82546494992846919, 0.54397654531131523],
-                                                               [0.82689556509299, 0.53212892090587027],
-                                                               [0.8283261802575107, 0.52882301773595441],
-                                                               [0.82975679542203151, 0.53466477650641475],
-                                                               [0.83118741058655221, 0.54858345822551757],
-                                                               [0.83261802575107291, 0.56802790050951046],
-                                                               [0.83404864091559372, 0.58943412145773155],
-                                                               [0.83547925608011442, 0.60887856374172455],
-                                                               [0.83690987124463523, 0.62279724546082837],
-                                                               [0.83834048640915582, 0.62863900423128849],
-                                                               [0.83977110157367663, 0.62533310106137352],
-                                                               [0.84120171673819744, 0.61348547665592856],
-                                                               [0.84263233190271813, 0.59526768823064613],
-                                                               [0.84406294706723894, 0.57401888366487774],
-                                                               [0.84549356223175964, 0.55363376735678049],
-                                                               [0.84692417739628034, 0.5378487378362703],
-                                                               [0.84835479256080115, 0.52955704134259951],
-                                                               [0.84978540772532185, 0.53027846722213501],
-                                                               [0.85121602288984266, 0.53988078495163616],
-                                                               [0.85264663805436336, 0.55660398073937156],
-                                                               [0.85407725321888428, 0.5773828513648912],
-                                                               [0.85550786838340487, 0.59840882686542518],
-                                                               [0.85693848354792557, 0.61582804529764168],
-                                                               [0.85836909871244638, 0.62644772908996271],
-                                                               [0.85979971387696708, 0.62832139089789041],
-                                                               [0.86123032904148789, 0.62110560627788036],
-                                                               [0.86266094420600858, 0.60612296013153288],
-                                                               [0.86409155937052939, 0.58611962943372098],
-                                                               [0.86552217453505009, 0.56476203503204669],
-                                                               [0.86695278969957079, 0.54596482147005532],
-                                                               [0.8683834048640916, 0.53317333976061076],
-                                                               [0.8698140200286123, 0.52873214721368433],
-                                                               [0.871244635193133, 0.53345527231224099],
-                                                               [0.87267525035765381, 0.54647701100985213],
-                                                               [0.87410586552217451, 0.5654106020738896],
-                                                               [0.87553648068669532, 0.58678569778847922],
-                                                               [0.87696709585121602, 0.60668444578536362],
-                                                               [0.87839771101573672, 0.6214595942343798],
-                                                               [0.87982832618025753, 0.62840299852110593],
-                                                               [0.88125894134477822, 0.62624199847635242],
-                                                               [0.88268955650929903, 0.61537268491796671],
-                                                               [0.88412017167381973, 0.59778729995960433],
-                                                               [0.88555078683834043, 0.57670907792151382],
-                                                               [0.88698140200286124, 0.55600145704196546],
-                                                               [0.88841201716738194, 0.53945994788087515],
-                                                               [0.88984263233190286, 0.5301164522227596],
-                                                               [0.89127324749642345, 0.52968354422778796],
-                                                               [0.89270386266094426, 0.53824057182665397],
-                                                               [0.89413447782546496, 0.55421911299724613],
-                                                               [0.89556509298998566, 0.57469045264971108],
-                                                               [0.89699570815450647, 0.59590238833266673],
-                                                               [0.89842632331902716, 0.61396697336458927],
-                                                               [0.89985693848354797, 0.62557314059547475],
-                                                               [0.90128755364806867, 0.62859358962025824],
-                                                               [0.90271816881258937, 0.62247470077225098],
-                                                               [0.90414878397711018, 0.60833800835868412],
-                                                               [0.90557939914163088, 0.58877463405645625],
-                                                               [0.90701001430615169, 0.56737035887746801],
-                                                               [0.90844062947067239, 0.54804838350912555],
-                                                               [0.90987124463519309, 0.53435024282767196],
-                                                               [0.9113018597997139, 0.52878667613580077],
-                                                               [0.9127324749642346, 0.53237743245502711],
-                                                               [0.91416309012875541, 0.5444643601991801],
-                                                               [0.91559370529327611, 0.56283204011963206],
-                                                               [0.9170243204577968, 0.5841138506472151],
-                                                               [0.91845493562231761, 0.60440903770393839],
-                                                               [0.91988555078683831, 0.61999768593895921],
-                                                               [0.92131616595135912, 0.62802254394058965],
-                                                               [0.92274678111587982, 0.62701273132792312],
-                                                               [0.92417739628040052, 0.61715333717793308],
-                                                               [0.92560801144492122, 0.60025149495265695],
-                                                               [0.92703862660944203, 0.57940515207064036],
-                                                               [0.92846924177396284, 0.55843524551950219],
-                                                               [0.92989985693848354, 0.54118536033579712],
-                                                               [0.93133047210300424, 0.53081723691224236],
-                                                               [0.93276108726752505, 0.52923125396300985],
-                                                               [0.93419170243204575, 0.53671810712458223],
-                                                               [0.93562231759656656, 0.55190552720193875],
-                                                               [0.93705293276108725, 0.57200980410028401],
-                                                               [0.93848354792560795, 0.5933460144906274],
-                                                               [0.93991416309012876, 0.61200343331593954],
-                                                               [0.94134477825464946, 0.62456233261306449],
-                                                               [0.94277539341917027, 0.62872078522289865],
-                                                               [0.94420600858369097, 0.62371658621203274],
-                                                               [0.94563662374821178, 0.61046695780991178],
-                                                               [0.94706723891273248, 0.59140043127117348],
-                                                               [0.94849785407725318, 0.57001172012373347],
-                                                               [0.94992846924177399, 0.5502211723155831],
-                                                               [0.9513590844062948, 0.53565620760823307],
-                                                               [0.9527896995708155, 0.52898644592920074],
-                                                               [0.95422031473533619, 0.53143439135232906],
-                                                               [0.95565092989985689, 0.54255135869269977],
-                                                               [0.9570815450643777, 0.5602997132466444],
-                                                               [0.9585121602288984, 0.58142634991230602],
-                                                               [0.95994277539341921, 0.60205895650923724],
-                                                               [0.9613733905579398, 0.61841577188425001],
-                                                               [0.96280400572246061, 0.62749874687257401],
-                                                               [0.96423462088698142, 0.62764305828258338],
-                                                               [0.96566523605150212, 0.61882225520116962],
-                                                               [0.96709585121602293, 0.60265310719529841],
-                                                               [0.96852646638054363, 0.58209926578042948],
-                                                               [0.96995708154506433, 0.56092805519871258],
-                                                               [0.97138769670958514, 0.54301995760676547],
-                                                               [0.97281831187410583, 0.53165735749064669],
-                                                               [0.97424892703862664, 0.52892291171275441],
-                                                               [0.97567954220314734, 0.53531781825647429],
-                                                               [0.97711015736766804, 0.54966995138811747],
-                                                               [0.97854077253218885, 0.56934870118995551],
-                                                               [0.97997138769670955, 0.59074713941497214],
-                                                               [0.98140200286123036, 0.6099431352340895],
-                                                               [0.98283261802575106, 0.62341824462791184],
-                                                               [0.98426323319027187, 0.62870260781400744],
-                                                               [0.98569384835479257, 0.62482765112609751],
-                                                               [0.98712446351931338, 0.61250361738317605],
-                                                               [0.98855507868383408, 0.59398938511523247],
-                                                               [0.98998569384835478, 0.57267843754713466],
-                                                               [0.99141630901287559, 0.55247686930013118],
-                                                               [0.99284692417739628, 0.53708743628492461],
-                                                               [0.99427753934191698, 0.52933087565234349],
-                                                               [0.99570815450643779, 0.53062889141951541],
-                                                               [0.99713876967095849, 0.54074356960395398],
-                                                               [0.9985693848354793, 0.55782098560068361],
-                                                               [1.0, 0.5787310109836209]]},
-                                     'sndend': {'curved': False, 'data': [[0.0, 1.0], [1.0, 1.0]]},
-                                     'sndgain': {'curved': False, 'data': [[0.0, 0.72727272727272729], [1.0, 0.72727272727272729]]},
-                                     'sndstart': {'curved': False, 'data': [[0.0, 0.0], [1.0, 0.0]]},
-                                     'sndtrans': {'curved': False, 'data': [[0.0, 0.5], [1.0, 0.5]]},
-                                     'sndxfade': {'curved': False, 'data': [[0.0, 0.02], [1.0, 0.02]]}},
-                       'userInputs': {'snd': {'dursnd': 21.282176971435547,
-                                              'gain': [0.0, False, False],
-                                              'gensizesnd': 1048576,
-                                              'loopIn': [0.0, False, False],
-                                              'loopMode': 1,
-                                              'loopOut': [21.282176971435547, False, False],
-                                              'loopX': [1.0, False, False],
-                                              'nchnlssnd': 2,
-                                              'offsnd': 0.0,
-                                              'path': u'/Users/jm/Desktop/Dropbox/Maitrise/svnBKP/memoire/bub/snds/orch.aif',
-                                              'srsnd': 44100.0,
-                                              'startFromLoop': 0,
-                                              'transp': [0.0, False, False],
-                                              'type': 'csampler'}},
-                       'userSliders': {'filtrange': [[774.66560755361559, 1039.6588002939066], 1, None, [1, 1]]},
-                       'userTogglePopups': {'filtnum': 9, 'polynum': 0, 'polyspread': 0.001}}}
\ No newline at end of file
diff --git a/Resources/modules/Filters/ParamEQ.c5 b/Resources/modules/Filters/ParamEQ.c5
index 8926c01..e1c369d 100644
--- a/Resources/modules/Filters/ParamEQ.c5
+++ b/Resources/modules/Filters/ParamEQ.c5
@@ -199,55 +199,4 @@ CECILIA_PRESETS = {u'01-Losing Weight': {'active': False,
                                    'freq4': [2000.0000000000002, 0, None, 1],
                                    'freq4gain': [-48.0, 0, None, 1],
                                    'freq4q': [0.70699999999999996, 0, None, 1]},
-                   'userTogglePopups': {'eq1type': 1, 'eq2type': 0, 'eq3type': 0, 'eq4type': 2, 'polynum': 0, 'polyspread': 0.001}},
- 'last save': {'gainSlider': 0.0,
-               'nchnls': 2,
-               'plugins': {0: ['None', [0, 0, 0, 0], [[0, 0, None], [0, 0, None], [0, 0, None]]],
-                           1: ['None', [0, 0, 0, 0], [[0, 0, None], [0, 0, None], [0, 0, None]]],
-                           2: ['None', [0, 0, 0, 0], [[0, 0, None], [0, 0, None], [0, 0, None]]]},
-               'totalTime': 753.70060135883728,
-               'userGraph': {'env': {'curved': False, 'data': [[0.0, 1.0], [1.0, 1.0]]},
-                             'freq1': {'curved': False, 'data': [[0.0, 0.62751713125854613], [1.0, 0.62751713125854613]]},
-                             'freq1gain': {'curved': False, 'data': [[0.0, 0.68181818181818177], [1.0, 0.68181818181818177]]},
-                             'freq1q': {'curved': False, 'data': [[0.0, 0.021789473684210522], [1.0, 0.021789473684210522]]},
-                             'freq2': {'curved': False, 'data': [[0.0, 0.69750734196794839], [1.0, 0.69750734196794839]]},
-                             'freq2gain': {'curved': False, 'data': [[0.0, 0.68181818181818177], [1.0, 0.68181818181818177]]},
-                             'freq2q': {'curved': False, 'data': [[0.0, 0.021789473684210522], [1.0, 0.021789473684210522]]},
-                             'freq3': {'curved': False, 'data': [[0.0, 0.73844899065052094], [1.0, 0.73844899065052094]]},
-                             'freq3gain': {'curved': False, 'data': [[0.0, 0.68181818181818177], [1.0, 0.68181818181818177]]},
-                             'freq3q': {'curved': False, 'data': [[0.0, 0.021789473684210522], [1.0, 0.021789473684210522]]},
-                             'freq4': {'curved': False, 'data': [[0.0, 0.76749755267735054], [1.0, 0.76749755267735054]]},
-                             'freq4gain': {'curved': False, 'data': [[0.0, 0.68181818181818177], [1.0, 0.68181818181818177]]},
-                             'freq4q': {'curved': False, 'data': [[0.0, 0.021789473684210522], [1.0, 0.021789473684210522]]},
-                             'sndend': {'curved': False, 'data': [[0.0, 1.0], [1.0, 1.0]]},
-                             'sndgain': {'curved': False, 'data': [[0.0, 0.72727272727272729], [1.0, 0.72727272727272729]]},
-                             'sndstart': {'curved': False, 'data': [[0.0, 0.0], [1.0, 0.0]]},
-                             'sndtrans': {'curved': False, 'data': [[0.0, 0.5], [1.0, 0.5]]},
-                             'sndxfade': {'curved': False, 'data': [[0.0, 0.02], [1.0, 0.02]]}},
-               'userInputs': {'snd': {'dursnd': 1168.52001953125,
-                                      'gain': [0.0, False, False],
-                                      'gensizesnd': 16777216,
-                                      'loopIn': [0.0, False, False],
-                                      'loopMode': 1,
-                                      'loopOut': [1168.52001953125, False, False],
-                                      'loopX': [1.0, False, False],
-                                      'nchnlssnd': 2,
-                                      'offsnd': 0.0,
-                                      'path': u'/Users/fciadmin/Music/iTunes/iTunes Music/Jean Piche/Works/Blizzard.aif',
-                                      'srsnd': 44100.0,
-                                      'startFromLoop': 0,
-                                      'transp': [0.0, False, False],
-                                      'type': 'csampler'}},
-               'userSliders': {'freq1': [499.99999999999994, 0, None, 1, None],
-                               'freq1gain': [-3.0, 0, None, 1, None],
-                               'freq1q': [0.70699999999999996, 0, None, 1, None],
-                               'freq2': [1000.0, 0, None, 1, None],
-                               'freq2gain': [-3.0, 0, None, 1, None],
-                               'freq2q': [0.70699999999999996, 0, None, 1, None],
-                               'freq3': [1500.0000000000005, 0, None, 1, None],
-                               'freq3gain': [-3.0, 0, None, 1, None],
-                               'freq3q': [0.70699999999999996, 0, None, 1, None],
-                               'freq4': [2000.0000000000002, 0, None, 1, None],
-                               'freq4gain': [-0.2142857142857153, 0, None, 1, None],
-                               'freq4q': [0.70699999999999996, 0, None, 1, None]},
-               'userTogglePopups': {'balance': 0, 'eq1type': 1, 'eq2type': 0, 'eq3type': 0, 'eq4type': 2, 'polynum': 0, 'polyspread': 0.001}}}
\ No newline at end of file
+                   'userTogglePopups': {'eq1type': 1, 'eq2type': 0, 'eq3type': 0, 'eq4type': 2, 'polynum': 0, 'polyspread': 0.001}}}
\ No newline at end of file
diff --git a/Resources/modules/Multiband/MultiBandBeatMaker.c5 b/Resources/modules/Multiband/MultiBandBeatMaker.c5
index e910b3d..21cb01b 100644
--- a/Resources/modules/Multiband/MultiBandBeatMaker.c5
+++ b/Resources/modules/Multiband/MultiBandBeatMaker.c5
@@ -18,11 +18,6 @@ class Module(BaseModule):
         - Beat 2 Gain : Gain of the second beat
         - Beat 3 Gain : Gain of the third beat
         - Global Seed : Seed value for the algorithmic beats, using the same seed with the same distributions will yield the exact same beats
-
-    Dropdown menus, toggles and sliders on the bottom left:
-
-        - # of Voices : Number of voices played simultaneously (polyphony), only available at initialization time
-        - Polyphony Spread : Pitch variation between voices (chorus), only available at initialization time
         
     Graph only parameters :
     
@@ -62,11 +57,7 @@ class Module(BaseModule):
         self.pointer3 = Biquad(Pointer(table=self.snd, index=self.linseg3, mul=self.tre3*self.again3), freq=self.splitter[2], q=0.707, type=1)
         self.pointer4 = Biquad(Pointer(table=self.snd, index=self.linseg4, mul=self.tre4*self.again4), freq=self.splitter[2], q=0.707, type=1)
         self.mixx = self.pointer1+self.pointer2+self.pointer3+self.pointer4
-        self.sig = Sig(self.mixx, mul=self.env).mix(self.nchnls)
-        self.chorusd = Scale(input=Sig(self.polyphony_spread), inmin=0.0001, inmax=0.5, outmin=0, outmax=5)
-        self.chorusb = Scale(input=Sig(self.number_of_voices), inmin=1, inmax=10, outmin=0, outmax=1)
-        self.out = Chorus(input=self.sig, depth=self.chorusd, feedback=0.25, bal=self.chorusb)
-        
+        self.out = Sig(self.mixx, mul=self.env).mix(self.nchnls)
         
         self.trigend = TrigFunc(self.beat1["end"], self.newdist)
         
@@ -169,27 +160,26 @@ Interface = [   cfilein(name="snd", label="Audio"),
                 cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue"),
                 csplitter(name="splitter", label="Frequency Splitter", min=100, max=18000, init=[150, 500, 2000], 
                           num_knobs=3, rel="log", unit="Hz", col="grey"),
-                cgraph(name="adsr1", label="Beat 1 ADSR", func=[(0,0),(0.1,1),(0.122,0.25),(1,0)], table=True, col="blue"),
-                cgraph(name="adsr2", label="Beat 2 ADSR", func=[(0,0),(0.1,1),(0.122,0.25),(1,0)], table=True, col="blue"),
-                cgraph(name="adsr3", label="Beat 3 ADSR", func=[(0,0),(0.1,1),(0.122,0.25),(1,0)], table=True, col="blue"),
-                cgraph(name="adsr4", label="Beat 4 ADSR", func=[(0,0),(0.1,1),(0.122,0.25),(1,0)], table=True, col="blue"),
-                cslider(name="taps", label="# of Taps", min=1, max=64, init=16, res="int", rel="lin", unit="x"),
-                cslider(name="tempo", label="Tempo", min=20, max=240, gliss=0, init=120, rel="lin", unit="bpm", col="green"),
-                cslider(name="tapsl", label="Tap Length", min=0.1, max=1, init=0.1, rel="lin", unit="sec", col="tan"),
-                cslider(name="bindex1", label="Beat 1 Index", min=0, max=1, init=0, rel="lin", unit="x", col="olivegreen",half=True),
-                cslider(name="bindex2", label="Beat 2 Index", min=0, max=1, init=0.4, rel="lin", unit="x", col="lightblue",half=True),
-                cslider(name="we1", label="Beat 1 Distribution", min=0, max=100, init=80, res="int", rel="lin", unit="%", col="olivegreen",half=True),
-                cslider(name="we2", label="Beat 2 Distribution", min=0, max=100, init=80, res="int", rel="lin", unit="%", col="lightblue",half=True),
-                cslider(name="gain1", label="Beat 1 Gain", min=-48, max=18, init=0, rel="lin", unit="dB", col="olivegreen",half=True),
-                cslider(name="gain2", label="Beat 2 Gain", min=-48, max=18, init=0, rel="lin", unit="dB", col="lightblue",half=True),
-                cslider(name="bindex3", label="Beat 3 Index", min=0, max=1, init=0.8, rel="lin", unit="x", col="lightblue",half=True),
-                cslider(name="bindex4", label="Beat 4 Index", min=0, max=1, init=0.9, rel="lin", unit="x", col="olivegreen",half=True),
-                cslider(name="we3", label="Beat 3 Distribution", min=0, max=100, init=30, rel="lin", res="int", unit="%", col="lightblue",half=True),
-                cslider(name="we4", label="Beat 4 Distribution", min=0, max=100, init=20, rel="lin", res="int", unit="%", col="olivegreen",half=True),
-                cslider(name="gain3", label="Beat 3 Gain", min=-48, max=18, init=0, rel="lin", unit="dB", col="lightblue",half=True),
-                cslider(name="gain4", label="Beat 4 Gain", min=-48, max=18, init=0, rel="lin", unit="dB", col="olivegreen",half=True),
+                cgraph(name="adsr1", label="Beat 1 ADSR", func=[(0,0),(0.04,1),(0.13,0.5),(0.8,0.5),(1,0)], table=True, col="blue1"),
+                cgraph(name="adsr2", label="Beat 2 ADSR", func=[(0,0),(0.03,1),(0.12,0.5),(0.7,0.45),(1,0)], table=True, col="blue2"),
+                cgraph(name="adsr3", label="Beat 3 ADSR", func=[(0,0),(0.02,1),(0.11,0.5),(0.6,0.4),(1,0)], table=True, col="blue3"),
+                cgraph(name="adsr4", label="Beat 4 ADSR", func=[(0,0),(0.01,1),(0.1,0.5),(0.5,0.35),(1,0)], table=True, col="blue4"),
+                cslider(name="taps", label="# of Taps", min=1, max=64, init=16, res="int", rel="lin", unit="x", col="orange1"),
+                cslider(name="tempo", label="Tempo", min=20, max=240, gliss=0, init=120, rel="lin", unit="bpm", col="orange2"),
+                cslider(name="tapsl", label="Tap Length", min=0.1, max=1, init=0.1, rel="lin", unit="sec", col="orange3"),
+                cslider(name="bindex1", label="Beat 1 Index", min=0, max=1, init=0, rel="lin", unit="x", col="purple1",half=True),
+                cslider(name="bindex2", label="Beat 2 Index", min=0, max=1, init=0.4, rel="lin", unit="x", col="purple2",half=True),
+                cslider(name="we1", label="Beat 1 Distribution", min=0, max=100, init=80, res="int", rel="lin", unit="%", col="green1",half=True),
+                cslider(name="we2", label="Beat 2 Distribution", min=0, max=100, init=80, res="int", rel="lin", unit="%", col="green2",half=True),
+                cslider(name="gain1", label="Beat 1 Gain", min=-48, max=18, init=0, rel="lin", unit="dB", col="red1",half=True),
+                cslider(name="gain2", label="Beat 2 Gain", min=-48, max=18, init=0, rel="lin", unit="dB", col="red2",half=True),
+                cslider(name="bindex3", label="Beat 3 Index", min=0, max=1, init=0.8, rel="lin", unit="x", col="purple3",half=True),
+                cslider(name="bindex4", label="Beat 4 Index", min=0, max=1, init=0.9, rel="lin", unit="x", col="purple4",half=True),
+                cslider(name="we3", label="Beat 3 Distribution", min=0, max=100, init=30, rel="lin", res="int", unit="%", col="green3",half=True),
+                cslider(name="we4", label="Beat 4 Distribution", min=0, max=100, init=20, rel="lin", res="int", unit="%", col="green4",half=True),
+                cslider(name="gain3", label="Beat 3 Gain", min=-48, max=18, init=0, rel="lin", unit="dB", col="red3",half=True),
+                cslider(name="gain4", label="Beat 4 Gain", min=-48, max=18, init=0, rel="lin", unit="dB", col="red4",half=True),
                 cslider(name="seed", label="Global seed", min=0, max=5000, init=0, rel="lin", res="int", unit="x", up=True),
-                cpoly()
           ]
 
 
diff --git a/Resources/modules/Multiband/MultiBandDelay.c5 b/Resources/modules/Multiband/MultiBandDelay.c5
index e53c1fe..479ad45 100644
--- a/Resources/modules/Multiband/MultiBandDelay.c5
+++ b/Resources/modules/Multiband/MultiBandDelay.c5
@@ -57,18 +57,18 @@ Interface = [   csampler(name="snd"),
                 cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue"),
                 csplitter(name="splitter", label="Frequency Splitter", min=100, max=18000, init=[150, 500, 2000], 
                           num_knobs=3, rel="log", gliss=0, up=True, unit="Hz", col="grey"),
-                cslider(name="del1", label="Delay Band 1", min=0.0001, max=15, init=0.5, gliss=0.1, rel="log", unit="sec", half=True, col="forestgreen"),
-                cslider(name="del2", label="Delay Band 2", min=0.0001, max=15, init=0.5, gliss=0.1, rel="log", unit="sec", half=True, col="lightblue"),
-                cslider(name="fb1", label="Feedback Band 1", min=0, max=0.999, init=0.6, rel="lin", unit="x", half=True, col="forestgreen"),
-                cslider(name="fb2", label="Feedback Band 2", min=0, max=0.999, init=0.6, rel="lin", unit="x", half=True, col="lightblue"),
-                cslider(name="gain1", label="Gain Band 1", min=-48, max=18, init=0, rel="lin", unit="dB", half=True, col="forestgreen"),
-                cslider(name="gain2", label="Gain Band 2", min=-48, max=18, init=0, rel="lin", unit="dB", half=True, col="lightblue"),
-                cslider(name="del3", label="Delay Band 3", min=0.0001, max=15, init=0.5, gliss=0.1, rel="log", unit="sec", half=True, col="lightblue"),
-                cslider(name="del4", label="Delay Band 4", min=0.0001, max=15, init=0.5, gliss=0.1, rel="log", unit="sec", half=True, col="forestgreen"),
-                cslider(name="fb3", label="Feedback Band 3", min=0, max=0.999, init=0.6, rel="lin", unit="x", half=True, col="lightblue"),
-                cslider(name="fb4", label="Feedback Band 4", min=0, max=0.999, init=0.6, rel="lin", unit="x", half=True, col="forestgreen"),
-                cslider(name="gain3", label="Gain Band 3", min=-48, max=18, init=0, rel="lin", unit="dB", half=True, col="lightblue"),
-                cslider(name="gain4", label="Gain Band 4", min=-48, max=18, init=0, rel="lin", unit="dB", half=True, col="forestgreen"),
+                cslider(name="del1", label="Delay Band 1", min=0.0001, max=15, init=0.5, gliss=0.1, rel="log", unit="sec", half=True, col="purple1"),
+                cslider(name="del2", label="Delay Band 2", min=0.0001, max=15, init=0.25, gliss=0.1, rel="log", unit="sec", half=True, col="purple2"),
+                cslider(name="fb1", label="Feedback Band 1", min=0, max=0.999, init=0.6, rel="lin", unit="x", half=True, col="green1"),
+                cslider(name="fb2", label="Feedback Band 2", min=0, max=0.999, init=0.6, rel="lin", unit="x", half=True, col="green2"),
+                cslider(name="gain1", label="Gain Band 1", min=-48, max=18, init=0, rel="lin", unit="dB", half=True, col="red1"),
+                cslider(name="gain2", label="Gain Band 2", min=-48, max=18, init=0, rel="lin", unit="dB", half=True, col="red2"),
+                cslider(name="del3", label="Delay Band 3", min=0.0001, max=15, init=0.33, gliss=0.1, rel="log", unit="sec", half=True, col="purple3"),
+                cslider(name="del4", label="Delay Band 4", min=0.0001, max=15, init=0.66, gliss=0.1, rel="log", unit="sec", half=True, col="purple4"),
+                cslider(name="fb3", label="Feedback Band 3", min=0, max=0.999, init=0.6, rel="lin", unit="x", half=True, col="green3"),
+                cslider(name="fb4", label="Feedback Band 4", min=0, max=0.999, init=0.6, rel="lin", unit="x", half=True, col="green4"),
+                cslider(name="gain3", label="Gain Band 3", min=-48, max=18, init=0, rel="lin", unit="dB", half=True, col="red3"),
+                cslider(name="gain4", label="Gain Band 4", min=-48, max=18, init=0, rel="lin", unit="dB", half=True, col="red4"),
                 cslider(name="drywet", label="Dry / Wet", min=0, max=1, init=1, rel="lin", unit="x", col="blue"),
                 cpoly()
           ]
@@ -1422,4 +1422,4 @@ CECILIA_PRESETS = {u'01-Space Flute': {'active': False,
                                          'gain3': [0.0, 0, None, 1],
                                          'gain4': [-9.5303867403314939, 0, None, 1],
                                          'splitter': [[318.7988325993901, 457.40443633415589, 638.2983794153555], 0, None, [1, 1]]},
-                         'userTogglePopups': {'polynum': 0, 'polyspread': 0.001}}}
\ No newline at end of file
+                         'userTogglePopups': {'polynum': 0, 'polyspread': 0.001}}}
diff --git a/Resources/modules/Multiband/MultiBandDisto.c5 b/Resources/modules/Multiband/MultiBandDisto.c5
index 0d4f637..0c0c048 100644
--- a/Resources/modules/Multiband/MultiBandDisto.c5
+++ b/Resources/modules/Multiband/MultiBandDisto.c5
@@ -41,7 +41,7 @@ class Module(BaseModule):
         self.mul4 = DBToA(self.drive4mul)
         self.muls = self.duplicate([self.mul1,self.mul2,self.mul3,self.mul4], len(self.snd))
         self.disto = Disto(input=self.split, drive=self.drives, slope=self.slopes, mul=[i*0.1 for i in self.muls]).mix(self.nchnls)
-        self.out = self.disto*self.env
+        self.out = Interp(self.snd, self.disto, self.drywet, mul=self.env)
 
     def splitter_up(self, value):
         self.FBfade.value = 0
@@ -56,18 +56,19 @@ Interface = [   csampler(name="snd"),
                 cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue"),
                 csplitter(name="splitter", label="Frequency Splitter", min=100, max=18000, init=[150, 500, 2000], 
                           num_knobs=3, rel="log", gliss=0, up=True, unit="Hz", col="grey"),
-                cslider(name="drive1", label="Band 1 Drive", min=0, max=1, init=0.75, rel="lin", unit="x", col="lightblue", half=True),
-                cslider(name="drive1slope", label="Band 1 Slope", min=0, max=1, init=0.5, rel="lin", unit="x", col="green2", half=True),
-                cslider(name="drive2", label="Band 2 Drive", min=0, max=1, init=0.75, rel="lin", unit="x", col="lightblue", half=True),
-                cslider(name="drive2slope", label="Band 2 Slope", min=0, max=1, init=0.5, rel="lin", unit="x", col="green2", half=True),
-                cslider(name="drive3", label="Band 3 Drive", min=0, max=1, init=0.75, rel="lin", unit="x", col="lightblue", half=True),
-                cslider(name="drive3slope", label="Band 3 Slope", min=0, max=1, init=0.5, rel="lin", unit="x", col="green2", half=True),
-                cslider(name="drive4", label="Band 4 Drive", min=0, max=1, init=0.75, rel="lin", unit="x", col="lightblue", half=True),
-                cslider(name="drive4slope", label="Band 4 Slope", min=0, max=1, init=0.5, rel="lin", unit="x", col="green2", half=True),
-                cslider(name="drive1mul", label="Band 1 Gain", min=-48, max=18, init=0, rel="lin", unit="dB", col="red3", half=True),
-                cslider(name="drive2mul", label="Band 2 Gain", min=-48, max=18, init=0, rel="lin", unit="dB", col="red3", half=True),
+                cslider(name="drive1", label="Band 1 Drive", min=0, max=1, init=0.5, rel="lin", unit="x", col="purple1", half=True),
+                cslider(name="drive2", label="Band 2 Drive", min=0, max=1, init=0.95, rel="lin", unit="x", col="purple2", half=True),
+                cslider(name="drive1slope", label="Band 1 Slope", min=0, max=1, init=0.85, rel="lin", unit="x", col="green1", half=True),
+                cslider(name="drive2slope", label="Band 2 Slope", min=0, max=1, init=0.8, rel="lin", unit="x", col="green2", half=True),
+                cslider(name="drive1mul", label="Band 1 Gain", min=-48, max=18, init=0, rel="lin", unit="dB", col="red1", half=True),
+                cslider(name="drive2mul", label="Band 2 Gain", min=-48, max=18, init=0, rel="lin", unit="dB", col="red2", half=True),
+                cslider(name="drive3", label="Band 3 Drive", min=0, max=1, init=0.75, rel="lin", unit="x", col="purple3", half=True),
+                cslider(name="drive4", label="Band 4 Drive", min=0, max=1, init=0.5, rel="lin", unit="x", col="purple4", half=True),
+                cslider(name="drive3slope", label="Band 3 Slope", min=0, max=1, init=0.75, rel="lin", unit="x", col="green3", half=True),
+                cslider(name="drive4slope", label="Band 4 Slope", min=0, max=1, init=0.5, rel="lin", unit="x", col="green4", half=True),
                 cslider(name="drive3mul", label="Band 3 Gain", min=-48, max=18, init=0, rel="lin", unit="dB", col="red3", half=True),
-                cslider(name="drive4mul", label="Band 4 Gain", min=-48, max=18, init=0, rel="lin", unit="dB", col="red3", half=True),
+                cslider(name="drive4mul", label="Band 4 Gain", min=-48, max=18, init=0, rel="lin", unit="dB", col="red4", half=True),
+                cslider(name="drywet", label="Dry / Wet", min=0, max=1, init=1, rel="lin", unit="x", col="blue"),
                 cpoly()
           ]
 
diff --git a/Resources/modules/Multiband/MultiBandFreqShift.c5 b/Resources/modules/Multiband/MultiBandFreqShift.c5
index e34ff04..a218123 100644
--- a/Resources/modules/Multiband/MultiBandFreqShift.c5
+++ b/Resources/modules/Multiband/MultiBandFreqShift.c5
@@ -36,22 +36,7 @@ class Module(BaseModule):
         self.mul3 = DBToA(self.gain3)
         self.mul4 = DBToA(self.gain4)
         self.muls = self.duplicate([self.mul1,self.mul2,self.mul3,self.mul4], len(self.snd))
-        self.fs = Hilbert(input=self.split)
-        self.quad = Sine(self.shifts, [0, 0.25])
-        self.mod1 = self.fs['real'][0]*self.quad[0]
-        self.mod2 = self.fs['imag'][0]*self.quad[1]
-        self.mod3 = self.fs['real'][1]*self.quad[2]
-        self.mod4 = self.fs['imag'][1]*self.quad[3]
-        self.mod5 = self.fs['real'][2]*self.quad[4]
-        self.mod6 = self.fs['imag'][2]*self.quad[5]
-        self.mod7 = self.fs['real'][3]*self.quad[6]
-        self.mod8 = self.fs['imag'][3]*self.quad[7]
-        self.up1 = Sig(self.mod1-self.mod2)
-        self.up2 = Sig(self.mod3-self.mod4)
-        self.up3 = Sig(self.mod5-self.mod6)
-        self.up4 = Sig(self.mod7-self.mod8)
-        self.ups = Mix([self.up1, self.up2, self.up3, self.up4], voices=len(self.snd)*4)
-        self.realups = Sig(self.ups, mul=self.muls).mix(self.nchnls)
+        self.realups = FreqShift(self.split, self.shifts, self.muls)
         self.out = Interp(self.snd, self.realups, self.drywet, mul=self.env*0.2)
 
     def splitter_up(self, value):
@@ -67,14 +52,14 @@ Interface = [   csampler(name="snd"),
                 cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue"),
                 csplitter(name="splitter", label="Frequency Splitter", min=100, max=18000, init=[150, 500, 2000], 
                           num_knobs=3, rel="log", gliss=0, up=True, unit="Hz", col="grey"),
-                cslider(name="shift1", label="Freq Shift Band 1", min=0, max=2000, init=500, rel="lin", unit="Hz", col="lightgreen", half=True),
-                cslider(name="gain1", label="Gain Band 1", min=-48, max=18, init=0, rel="lin", unit="dB", col="lightblue", half=True),
-                cslider(name="shift2", label="Freq Shift Band 2", min=0, max=2000, init=500, rel="lin", unit="Hz", col="lightgreen", half=True),
-                cslider(name="gain2", label="Gain Band 2", min=-48, max=18, init=0, rel="lin", unit="dB", col="lightblue", half=True),
-                cslider(name="shift3", label="Freq Shift Band 3", min=0, max=2000, init=500, rel="lin", unit="Hz", col="lightgreen", half=True),
-                cslider(name="gain3", label="Gain Band 3", min=-48, max=18, init=0, rel="lin", unit="dB", col="lightblue", half=True),
-                cslider(name="shift4", label="Freq Shift Band 4", min=0, max=2000, init=500, rel="lin", unit="Hz", col="lightgreen", half=True),
-                cslider(name="gain4", label="Gain Band 4", min=-48, max=18, init=0, rel="lin", unit="dB", col="lightblue", half=True),
+                cslider(name="shift1", label="Freq Shift Band 1", min=0, max=2000, init=600, rel="lin", unit="Hz", col="green1", half=True),
+                cslider(name="gain1", label="Gain Band 1", min=-48, max=18, init=0, rel="lin", unit="dB", col="red1", half=True),
+                cslider(name="shift2", label="Freq Shift Band 2", min=0, max=2000, init=500, rel="lin", unit="Hz", col="green2", half=True),
+                cslider(name="gain2", label="Gain Band 2", min=-48, max=18, init=0, rel="lin", unit="dB", col="red2", half=True),
+                cslider(name="shift3", label="Freq Shift Band 3", min=0, max=2000, init=400, rel="lin", unit="Hz", col="green3", half=True),
+                cslider(name="gain3", label="Gain Band 3", min=-48, max=18, init=0, rel="lin", unit="dB", col="red3", half=True),
+                cslider(name="shift4", label="Freq Shift Band 4", min=0, max=2000, init=300, rel="lin", unit="Hz", col="green4", half=True),
+                cslider(name="gain4", label="Gain Band 4", min=-48, max=18, init=0, rel="lin", unit="dB", col="red4", half=True),
                 cslider(name="drywet", label="Dry / Wet", min=0, max=1, init=1, rel="lin", unit="x", col="blue"),
                 cpoly()
           ]
\ No newline at end of file
diff --git a/Resources/modules/Multiband/MultiBandGate.c5 b/Resources/modules/Multiband/MultiBandGate.c5
index 1a23656..f027840 100644
--- a/Resources/modules/Multiband/MultiBandGate.c5
+++ b/Resources/modules/Multiband/MultiBandGate.c5
@@ -39,7 +39,7 @@ class Module(BaseModule):
         self.muls = self.duplicate([self.mul1,self.mul2,self.mul3,self.mul4], len(self.snd))
         self.gate = Gate(input=self.split, thresh=self.threshs, risetime=self.gaterise, falltime=self.gatefall, lookahead=5.00,
                             outputAmp=False, mul=self.muls).mix(self.nchnls)
-        self.out = self.gate*self.env
+        self.out = Interp(Delay(self.snd, 0.005, maxdelay=0.005), self.gate, self.drywet, mul=self.env)
 
     def splitter_up(self, value):
         self.FBfade.value = 0
@@ -54,15 +54,16 @@ Interface = [   csampler(name="snd"),
                 cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue"),
                 csplitter(name="splitter", label="Frequency Splitter", min=100, max=18000, init=[150, 500, 2000], 
                           num_knobs=3, rel="log", gliss=0, up=True, unit="Hz", col="grey"),
-                cslider(name="thresh1", label="Threshold Band 1", min=-80, max=-0.1, init=-60, rel="lin", unit="dB", col="red"),
-                cslider(name="gain1", label="Gain Band 1", min=-48, max=18, init=0, rel="lin", unit="dB", col="red"),
-                cslider(name="thresh2", label="Threshold Band 2", min=-80, max=-0.1, init=-60, rel="lin", unit="dB", col="chorusyellow"),
-                cslider(name="gain2", label="Gain Band 2", min=-48, max=18, init=0, rel="lin", unit="dB", col="chorusyellow"),
-                cslider(name="thresh3", label="Threshold Band 3", min=-80, max=-0.1, init=-60, rel="lin", unit="dB", col="green"),
-                cslider(name="gain3", label="Gain Band 3", min=-48, max=18, init=0, rel="lin", unit="dB", col="green"),
-                cslider(name="thresh4", label="Threshold Band 4", min=-80, max=-0.1, init=-60, rel="lin", unit="dB", col="orange"),
-                cslider(name="gain4", label="Gain Band 4", min=-48, max=18, init=0, rel="lin", unit="dB", col="orange"),
-                cslider(name="gaterise", label="Rise Time", min=0.001, max=1, init=0.01, rel="lin", unit="sec", col="blue"),
-                cslider(name="gatefall", label="Fall Time", min=0.001, max=1, init=0.01, rel="lin", unit="sec", col="blue"),
+                cslider(name="thresh1", label="Threshold Band 1", min=-80, max=-0.1, init=-60, rel="lin", unit="dB", col="green1", half=True),
+                cslider(name="gain1", label="Gain Band 1", min=-48, max=18, init=0, rel="lin", unit="dB", col="red1", half=True),
+                cslider(name="thresh2", label="Threshold Band 2", min=-80, max=-0.1, init=-60, rel="lin", unit="dB", col="green2", half=True),
+                cslider(name="gain2", label="Gain Band 2", min=-48, max=18, init=0, rel="lin", unit="dB", col="red2", half=True),
+                cslider(name="thresh3", label="Threshold Band 3", min=-80, max=-0.1, init=-60, rel="lin", unit="dB", col="green3", half=True),
+                cslider(name="gain3", label="Gain Band 3", min=-48, max=18, init=0, rel="lin", unit="dB", col="red3", half=True),
+                cslider(name="thresh4", label="Threshold Band 4", min=-80, max=-0.1, init=-60, rel="lin", unit="dB", col="green4", half=True),
+                cslider(name="gain4", label="Gain Band 4", min=-48, max=18, init=0, rel="lin", unit="dB", col="red4", half=True),
+                cslider(name="gaterise", label="Rise Time", min=0.001, max=1, init=0.01, rel="lin", unit="sec", col="purple1"),
+                cslider(name="gatefall", label="Fall Time", min=0.001, max=1, init=0.01, rel="lin", unit="sec", col="purple2"),
+                cslider(name="drywet", label="Dry / Wet", min=0, max=1, init=1, rel="lin", unit="x", col="blue1"),
                 cpoly()
           ]
\ No newline at end of file
diff --git a/Resources/modules/Multiband/MultiBandHarmonizer.c5 b/Resources/modules/Multiband/MultiBandHarmonizer.c5
index 8405263..935ad7e 100644
--- a/Resources/modules/Multiband/MultiBandHarmonizer.c5
+++ b/Resources/modules/Multiband/MultiBandHarmonizer.c5
@@ -62,19 +62,19 @@ Interface = [   csampler(name="snd"),
                 cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue"),
                 csplitter(name="splitter", label="Frequency Splitter", min=100, max=18000, init=[150, 500, 2000], 
                           num_knobs=3, rel="log", gliss=0, up=True, unit="Hz", col="grey"),
-                cslider(name="transp1", label="Transpo Band 1", min=-24, max=24, init=2, rel="lin", unit="semi", col="green"),
-                cslider(name="fb1", label="Feedback Band 1", min=0, max=0.999, init=0.6, rel="lin", unit="x", col="green"),
-                cslider(name="gain1", label="Gain Band 1", min=-48, max=18, init=0, rel="lin", unit="dB", col="green"),
-                cslider(name="transp2", label="Transpo Band 2", min=-24, max=24, init=4, rel="lin", unit="semi", col="forestgreen"),
-                cslider(name="fb2", label="Feedback Band 2", min=0, max=0.999, init=0.5, rel="lin", unit="x", col="forestgreen"),
-                cslider(name="gain2", label="Gain Band 2", min=-48, max=18, init=0, rel="lin", unit="dB", col="forestgreen"),
-                cslider(name="transp3", label="Transpo Band 3", min=-24, max=24, init=-2, rel="lin", unit="semi", col="olivegreen"),
-                cslider(name="fb3", label="Feedback Band 3", min=0, max=0.999, init=0.5, rel="lin", unit="x", col="olivegreen"),
-                cslider(name="gain3", label="Gain Band 3", min=-48, max=18, init=0, rel="lin", unit="dB", col="olivegreen"),
-                cslider(name="transp4", label="Transpo Band 4", min=-24, max=24, init=-4, rel="lin", unit="semi", col="lightgreen"),
-                cslider(name="fb4", label="Feedback Band 4", min=0, max=0.999, init=0.6, rel="lin", unit="x", col="lightgreen"),
-                cslider(name="gain4", label="Gain Band 4", min=-48, max=18, init=0, rel="lin", unit="dB", col="lightgreen"),
-                cslider(name="drywet", label="Dry / Wet", min=0, max=1, init=1, rel="lin", unit="x", col="blue"),
-                cpopup(name="winsize", label="Win Size", init="0.1", col="chorusyellow", value=["0.025","0.05","0.1","0.15","0.2","0.25","0.5","0.75","1"]),
+                cslider(name="transp1", label="Transpo Band 1", min=-24, max=24, init=2, rel="lin", unit="semi", col="purple1", half=True),
+                cslider(name="transp2", label="Transpo Band 2", min=-24, max=24, init=4, rel="lin", unit="semi", col="purple2", half=True),
+                cslider(name="fb1", label="Feedback Band 1", min=0, max=0.999, init=0.6, rel="lin", unit="x", col="green1", half=True),
+                cslider(name="fb2", label="Feedback Band 2", min=0, max=0.999, init=0.5, rel="lin", unit="x", col="green2", half=True),
+                cslider(name="gain1", label="Gain Band 1", min=-48, max=18, init=0, rel="lin", unit="dB", col="red1", half=True),
+                cslider(name="gain2", label="Gain Band 2", min=-48, max=18, init=0, rel="lin", unit="dB", col="red2", half=True),
+                cslider(name="transp3", label="Transpo Band 3", min=-24, max=24, init=-2, rel="lin", unit="semi", col="purple3", half=True),
+                cslider(name="transp4", label="Transpo Band 4", min=-24, max=24, init=-4, rel="lin", unit="semi", col="purple4", half=True),
+                cslider(name="fb3", label="Feedback Band 3", min=0, max=0.999, init=0.5, rel="lin", unit="x", col="green3", half=True),
+                cslider(name="fb4", label="Feedback Band 4", min=0, max=0.999, init=0.6, rel="lin", unit="x", col="green4", half=True),
+                cslider(name="gain3", label="Gain Band 3", min=-48, max=18, init=0, rel="lin", unit="dB", col="red3", half=True),
+                cslider(name="gain4", label="Gain Band 4", min=-48, max=18, init=0, rel="lin", unit="dB", col="red4", half=True),
+                cslider(name="drywet", label="Dry / Wet", min=0, max=1, init=1, rel="lin", unit="x", col="blue1"),
+                cpopup(name="winsize", label="Win Size", init="0.1", col="purple1", value=["0.025","0.05","0.1","0.15","0.2","0.25","0.5","0.75","1"]),
                 cpoly()
           ]
\ No newline at end of file
diff --git a/Resources/modules/Multiband/MultiBandReverb.c5 b/Resources/modules/Multiband/MultiBandReverb.c5
index cc9878c..a9f7da6 100644
--- a/Resources/modules/Multiband/MultiBandReverb.c5
+++ b/Resources/modules/Multiband/MultiBandReverb.c5
@@ -54,22 +54,22 @@ class Module(BaseModule):
         self.FBfade.value = 1
 
 Interface = [   csampler(name="snd"), 
-                cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue"),
+                cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue1"),
                 csplitter(name="splitter", label="Frequency Splitter", min=100, max=18000, init=[150, 500, 2000], 
                           num_knobs=3, rel="log", gliss=0, up=True, unit="Hz", col="grey"),
-                cslider(name="fb1", label="Reverb Band 1", min=0, max=0.999, init=0.5, rel="lin", unit="x", col="chorusyellow"),
-                cslider(name="cutoff1", label="CutOff Band 1", min=20, max=20000, init=5000, rel="log", unit="Hz", col="chorusyellow"),
-                cslider(name="gain1", label="Gain Band 1", min=-48, max=18, init=0, rel="lin", unit="dB", col="chorusyellow"),
-                cslider(name="fb2", label="Reverb Band 2", min=0, max=0.999, init=0.5, rel="lin", unit="x", col="green"),
-                cslider(name="cutoff2", label="CutOff Band 2", min=20, max=20000, init=5000, rel="log", unit="Hz", col="green"),
-                cslider(name="gain2", label="Gain Band 2", min=-48, max=18, init=0, rel="lin", unit="dB", col="green"),
-                cslider(name="fb3", label="Reverb Band 3", min=0, max=0.999, init=0.5, rel="lin", unit="x", col="orange"),
-                cslider(name="cutoff3", label="CutOff Band 3", min=20, max=20000, init=5000, rel="log", unit="Hz", col="orange"),
-                cslider(name="gain3", label="Gain Band 3", min=-48, max=18, init=0, rel="lin", unit="dB", col="orange"),
-                cslider(name="fb4", label="Reverb Band 4", min=0, max=0.999, init=0.5, rel="lin", unit="x", col="tan"),
-                cslider(name="cutoff4", label="CutOff Band 4", min=20, max=20000, init=5000, rel="log", unit="Hz", col="tan"),
-                cslider(name="gain4", label="Gain Band 4", min=-48, max=18, init=0, rel="lin", unit="dB", col="tan"),
-                cslider(name="drywet", label="Dry / Wet", min=0, max=1, init=0.8, rel="lin", unit="x", col="blue"),
+                cslider(name="fb1", label="Reverb Band 1", min=0, max=0.999, init=0.5, rel="lin", unit="x", col="purple1", half=True),
+                cslider(name="fb2", label="Reverb Band 2", min=0, max=0.999, init=0.75, rel="lin", unit="x", col="purple2", half=True),
+                cslider(name="cutoff1", label="CutOff Band 1", min=20, max=20000, init=2500, rel="log", unit="Hz", col="green1", half=True),
+                cslider(name="cutoff2", label="CutOff Band 2", min=20, max=20000, init=4000, rel="log", unit="Hz", col="green2", half=True),
+                cslider(name="gain1", label="Gain Band 1", min=-48, max=18, init=0, rel="lin", unit="dB", col="red1", half=True),
+                cslider(name="gain2", label="Gain Band 2", min=-48, max=18, init=0, rel="lin", unit="dB", col="red2", half=True),
+                cslider(name="fb3", label="Reverb Band 3", min=0, max=0.999, init=0.85, rel="lin", unit="x", col="purple3", half=True),
+                cslider(name="fb4", label="Reverb Band 4", min=0, max=0.999, init=0.65, rel="lin", unit="x", col="purple4", half=True),
+                cslider(name="cutoff3", label="CutOff Band 3", min=20, max=20000, init=5000, rel="log", unit="Hz", col="green3", half=True),
+                cslider(name="cutoff4", label="CutOff Band 4", min=20, max=20000, init=6000, rel="log", unit="Hz", col="green4", half=True),
+                cslider(name="gain3", label="Gain Band 3", min=-48, max=18, init=0, rel="lin", unit="dB", col="red3", half=True),
+                cslider(name="gain4", label="Gain Band 4", min=-48, max=18, init=0, rel="lin", unit="dB", col="red4", half=True),
+                cslider(name="drywet", label="Dry / Wet", min=0, max=1, init=0.5, rel="lin", unit="x", col="blue1"),
                 cpoly()
           ]
 
diff --git a/Resources/modules/Pitch/FreqShift.c5 b/Resources/modules/Pitch/FreqShift.c5
index 0f61fac..58b889b 100644
--- a/Resources/modules/Pitch/FreqShift.c5
+++ b/Resources/modules/Pitch/FreqShift.c5
@@ -49,8 +49,8 @@ class Module(BaseModule):
 
 Interface = [   csampler(name="snd"), 
                 cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue"),
-                cslider(name="shift1", label="Frequency Shift 1", min=0, max=2000, init=500, rel="lin", unit="Hz", col="green"),
-                cslider(name="shift2", label="Frequency Shift 2", min=0, max=2000, init=100, rel="lin", unit="Hz", col="green"),
+                cslider(name="shift1", label="Frequency Shift 1", min=-2000, max=2000, init=500, rel="lin", unit="Hz", col="green"),
+                cslider(name="shift2", label="Frequency Shift 2", min=-2000, max=2000, init=100, rel="lin", unit="Hz", col="green"),
                 cslider(name="filter", label="Filter Freq", min=30, max=20000, init=15000, rel="log", unit="Hz", col="olivegreen",half=True),
                 cslider(name="filterq", label="Filter Q", min=0.5, max=10, init=0.707, rel="log", unit="Q", col="olivegreen",half=True),
                 cslider(name="delay", label="Feedback Delay", min=0.001, max=1, init=.1, rel="lin", unit="sec", col="orange1"),
diff --git a/Resources/modules/Pitch/Harmonizer.c5 b/Resources/modules/Pitch/Harmonizer.c5
index 72b68fe..5fb4393 100644
--- a/Resources/modules/Pitch/Harmonizer.c5
+++ b/Resources/modules/Pitch/Harmonizer.c5
@@ -23,31 +23,42 @@ class Module(BaseModule):
     def __init__(self):
         BaseModule.__init__(self)
         self.snd = self.addSampler("snd")
+        self.ws1 = float(self.winsize_value)
+        self.ws2 = float(self.winsize2_value)
+        self.avg_winsize = (self.ws1 + self.ws2) * 0.5
+        self.snd_del = Delay(self.snd, self.avg_winsize)
         self.harm1 = Harmonizer(input=self.snd, transpo=self.transp1, feedback=self.fb, winsize=float(self.winsize_value), mul=.5)
         self.harm2 = Harmonizer(input=self.snd, transpo=self.transp2, feedback=self.fb, winsize=float(self.winsize2_value), mul=.5)
         self.harms = self.harm2*self.mix + self.harm1*(1-self.mix)
         self.dcb = DCBlock(self.harms)
-        self.out = Interp(self.snd, self.dcb, self.drywet, mul=self.env)    
+        self.out = Interp(self.snd_del, self.dcb, self.drywet, mul=self.env)    
 
     def winsize(self, index, value):
         self.harm1.winsize = float(value)
+        self.ws1 = float(value)
+        self.avg_winsize = (self.ws1 + self.ws2) * 0.5
+        self.snd_del.delay = self.avg_winsize
 
     def winsize2(self, index, value):
         if index == 9:
             self.harm2.winsize = float(self.winsize_value)+0.01
+            self.ws2 = float(self.winsize_value)+0.01
         else:
             self.harm2.winsize = float(value)
+            self.ws2 = float(value)
+        self.avg_winsize = (self.ws1 + self.ws2) * 0.5
+        self.snd_del.delay = self.avg_winsize
         
 Interface = [   csampler(name="snd"), 
-                cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue"),
-                cslider(name="transp1", label="Transpo Voice 1", min=-36, max=36, init=-7, rel="lin", unit="semi", col="red"),
-                cslider(name="transp2", label="Transpo Voice 2", min=-36, max=36, init=3, rel="lin", unit="semi", col="red"),
-                cslider(name="fb", label="Feedback", min=0, max=0.999, init=0, rel="lin", unit="x", col="orange"),
-                cslider(name="mix", label="Harm1 / Harm2", min=0, max=1, init=.5, rel="lin", unit="x", col="green"),
-                cslider(name="drywet", label="Dry / Wet", min=0, max=1, init=1, rel="lin", unit="x", col="blue"),
-                cpopup(name="winsize", label="Win Size Voice 1", init="0.1", col="chorusyellow", 
+                cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue1"),
+                cslider(name="transp1", label="Transpo Voice 1", min=-36, max=36, init=-7, rel="lin", unit="semi", col="red1"),
+                cslider(name="transp2", label="Transpo Voice 2", min=-36, max=36, init=3, rel="lin", unit="semi", col="red2"),
+                cslider(name="fb", label="Feedback", min=0, max=0.999, init=0, rel="lin", unit="x", col="orange1"),
+                cslider(name="mix", label="Harm1 / Harm2", min=0, max=1, init=.5, rel="lin", unit="x", col="green1"),
+                cslider(name="drywet", label="Dry / Wet", min=0, max=1, init=1, rel="lin", unit="x", col="blue1"),
+                cpopup(name="winsize", label="Win Size Voice 1", init="0.1", col="red1", 
                         value=["0.025","0.05","0.1","0.15","0.2","0.25","0.5","0.75","1"]),
-                cpopup(name="winsize2", label="Win Size Voice 2", init="0.1", col="chorusyellow", 
+                cpopup(name="winsize2", label="Win Size Voice 2", init="0.1", col="red2", 
                         value=["0.025","0.05","0.1","0.15","0.2","0.25","0.5","0.75","1","Voice 1 + 0.01"]),
                 cpoly()
           ]
\ No newline at end of file
diff --git a/Resources/modules/Pitch/LooperBank.c5 b/Resources/modules/Pitch/LooperBank.c5
new file mode 100644
index 0000000..98843fa
--- /dev/null
+++ b/Resources/modules/Pitch/LooperBank.c5
@@ -0,0 +1,62 @@
+class Module(BaseModule):
+    """
+    Sound looper bank (up to 500 players) with independant pitch and amplitude random
+    
+    Sliders under the graph:
+    
+        - Transposition : Transposition of the base frequency of the process, given by the sound length.
+        - Frequency Spread : Coefficient of expansion used to compute partial frequencies. If 0, all 
+                             partials will be at the base frequency. A value of 1 will generate integer 
+                             harmonics, a value of 2 will skip even harmonics and non-integer values will 
+                             generate different series of inharmonic frequencies.
+        - Amplitude Slope : Specifies the multiplier in the series of amplitude coefficients.
+        - Boost / Cut : Controls the overall amplitude.
+        - Freq Rand Speed : Frequency, in cycle per second, of the frequency modulations.
+        - Freq Rand Gain : Maximum frequency deviation (positive and negative) in portion of the partial 
+                           frequency. A value of 1 means that the frequency can drift from 0 Hz to twice 
+                           the partial frequency. A value of 0 deactivates the frequency deviations.
+        - Amp Rand Speed : Frequency, in cycle per second, of the amplitude modulations.
+        - Amp Rand Gain : Amount of amplitude deviation. 0 deactivates the amplitude modulations 
+                          and 1 gives full amplitude modulations.
+        - Voices Per Channel : Number of loopers created for each output channel. Changes will be 
+                               effective on next start.
+    
+    Dropdown menus, toggles and sliders on the bottom left:
+    
+        - Partials Freq Jitter : If active, a small jitter is added to the frequency of each partial. For a 
+                                 large number of oscillators and a very small `Frequency Spread`, the
+                                 periodicity between partial frequencies can cause very strange artefact. 
+                                 Adding a jitter breaks the periodicity.
+    
+    Graph only parameters :
+    
+        - Overall Amplitude : The amplitude curve applied on the total duration of the performance
+
+    """
+    def __init__(self):
+        BaseModule.__init__(self)
+        self.snd = self.addFilein("snd")
+        self.gain = DBToA(self.boost, mul=self.env)
+        self.transpo = CentsToTranspo(self.pitch, mul=self.snd.getRate())
+        self.out = OscBank(self.snd, self.transpo, self.spread, self.slope, self.frndf, self.frnda, self.arndf, self.arnda, 
+                           [int(self.num.get())]*self.nchnls, self.fjit_value, self.gain).out()
+
+    def num_up(self, value):
+        pass
+
+    def fjit(self, value):
+        self.out.fjit = value
+
+Interface = [   cfilein(name="snd"), 
+                cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue1"),
+                cslider(name="pitch", label="Transposition", min=-4800, max=4800, init=0, rel="lin", unit="cnts", col="green1"),
+                cslider(name="spread", label="Frequency Spread", min=0, max=2, init=0.002, rel="lin", unit="x", col="green2"),
+                cslider(name="slope", label="Amplitude Slope", min=0, max=1, init=0.9, rel="lin", unit="x", col="red1"),
+                cslider(name="boost", label="Boost / Cut", min=-32, max=32, init=0, rel="lin", unit="dB", col="red2"),
+                cslider(name="frndf", label="Freq Rand Speed", min=0.001, max=20, init=1, rel="log", unit="Hz", col="green3", half=True),
+                cslider(name="arndf", label="Amp Rand Speed", min=0.001, max=20, init=1, rel="log", unit="Hz", col="red3", half=True),
+                cslider(name="frnda", label="Freq Rand Gain", min=0, max=1, init=0, rel="lin", unit="x", col="green4", half=True),
+                cslider(name="arnda", label="Amp Rand Gain", min=0, max=1, init=0, rel="lin", unit="x", col="red4", half=True),
+                cslider(name="num", label="Voices Per Channel", min=1, max=500, init=100, rel="lin", res="int", unit="x", up=True),
+                ctoggle(name="fjit", label="Partials Freq Jitter", init=False, col="green1"),
+          ]
\ No newline at end of file
diff --git a/Resources/modules/Pitch/LooperMod.c5 b/Resources/modules/Pitch/LooperMod.c5
index ae86774..e0e4915 100644
--- a/Resources/modules/Pitch/LooperMod.c5
+++ b/Resources/modules/Pitch/LooperMod.c5
@@ -9,7 +9,6 @@ class Module(BaseModule):
         - AM Speed : Frequency of the AM LFO
         - FM Range : Amplitude of the FM LFO
         - FM Speed : Frequency of the FM LFO
-        - Index Range : Range of the soundfile to loop
         - Dry / Wet : Mix between the original signal and the processed signal
     
     Dropdown menus, toggles and sliders on the bottom left:
@@ -18,8 +17,8 @@ class Module(BaseModule):
         - AM On/Off : Activate or deactivate amplitude modulation
         - FM LFO Type : Shape of the FM wave
         - FM On/Off : Activate or deactivate frequency modulation
-        - # of Voices : Number of voices played simultaneously (polyphony), only available at initialization time
-        - Polyphony Spread : Pitch variation between voices (chorus), only available at initialization time
+        - # of Polyphony : Number of voices played simultaneously (polyphony), only available at initialization time
+        - Polyphony Chords : Pitch variation between voices (chorus), only available at initialization time
     
     Graph only parameters :
     
@@ -28,22 +27,24 @@ class Module(BaseModule):
     def __init__(self):
         BaseModule.__init__(self)
         self.snd = self.addFilein("snd")
+        if type(self.snd.getRate()) == type([]):
+            rate = self.snd.getRate()[0]
+        else:
+            rate = self.snd.getRate()
         self.lfoam = LFO(freq=self.amspeed, sharp=1, type=self.ampwave_index, mul=0.37, add=0.6)
         self.lfoamrange = Randi(min=self.amrange[0], max=self.amrange[1], freq=self.amspeed, mul=self.lfoam)
         self.lfofm = LFO(freq=self.fmspeed, sharp=1, type=self.freqwave_index, mul=0.05, add=1)
         self.sig1 = Sig(self.fmrange[0])
         self.sig2 = Sig(self.fmrange[1])
         self.lfofmrange = Randi(min=1-self.sig1, max=1+self.sig2, freq=self.fmspeed, mul=self.lfofm)
-        self.getdur = self.snd.getDur(False)
-        self.loopdur = self.index[1]*self.getdur-self.index[0]*self.getdur
-        self.pitrnds = [random.uniform(1.0-self.polyphony_spread, 1.0+self.polyphony_spread) for i in range(self.number_of_voices*2)]
+        self.pitrnds = [x*rate for x in self.polyphony_spread for j in range(self.nchnls)]
         self.ply = [i*self.lfofmrange for i in self.pitrnds]
-        self.pointer = Looper(self.snd, pitch=self.ply, start=self.index[0]*self.getdur, dur=self.loopdur, startfromloop=True,
-                                    xfadeshape=1, autosmooth=True, mul=self.lfoamrange)
-        self.pointer2 = Looper(self.snd, pitch=self.pitrnds, start=self.index[0]*self.getdur, dur=self.loopdur, xfadeshape=1, startfromloop=True,
-                                    autosmooth=True, mul=1)
-        self.out = Interp(self.pointer2, self.pointer, self.drywet, mul=self.env)
-        
+        self.index = Phasor(freq=self.pitrnds)
+        self.pointer = Pointer(self.snd, self.index)
+        self.index2 = Phasor(freq=self.pitrnds)
+        self.pointer2 = Pointer(self.snd, self.index2)
+        self.out = Interp(self.pointer2.mix(self.nchnls), self.pointer.mix(self.nchnls), self.drywet, mul=self.polyphony_scaling*0.5*self.env)
+
         #INIT
         self.onoffam(self.onoffam_value)
         self.onofffm(self.onofffm_value)
@@ -62,23 +63,22 @@ class Module(BaseModule):
         
     def onofffm(self, value):
         if value == 0:
-            self.pointer.pitch = self.pitrnds
+            self.index.freq = self.pitrnds
         else:
-            self.pointer.pitch = self.lfofmrange*self.pitrnds
+            self.index.freq = self.ply
 
 Interface = [   cfilein(name="snd"), 
-                cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue"),
-                crange(name="amrange", label="AM Range", min=0.001, max=1, init=[0.3,0.5], rel="lin", unit="x", col="green"),
-                cslider(name="amspeed", label="AM Speed", min=0.001, max=2000, init=4, rel="log", unit="Hz", col="green"),
-                crange(name="fmrange", label="FM Range", min=0.001, max=0.2, init=[0.01,0.05], rel="lin", unit="x", col="orange"),
-                cslider(name="fmspeed", label="FM Speed", min=0.001, max=2000, init=4, rel="log", unit="Hz", col="orange"),
-                crange(name="index", label="Loop Range", min=0, max=1, init=[0,1], rel="lin", unit="x", col="tan"),
-                cslider(name="drywet", label="Dry / Wet", min=0, max=1, init=1, rel="lin", unit="x", col="grey"),
-                cpopup(name="ampwave", label="AM LFO Type", init="Square", col="green", value=["Saw Up", "Saw Down", "Square", "Triangle", "Pulse", "Bipolar Pulse",
-                            "Sample and Hold", "Modulated Sine"]),
-                ctoggle(name="onoffam", label="AM On/Off", init=0, col="green"),
-                cpopup(name="freqwave", label="FM LFO Type", init="Square", col="orange", value=["Saw Up", "Saw Down", "Square", "Triangle", "Pulse", "Bipolar Pulse",
-                            "Sample and Hold", "Modulated Sine"]),
-                ctoggle(name="onofffm", label="FM On/Off", init=0, col="orange"),
+                cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue1"),
+                crange(name="amrange", label="AM Range", min=0.001, max=1, init=[0.3,0.5], rel="lin", unit="x", col="green1"),
+                cslider(name="amspeed", label="AM Speed", min=0.001, max=2000, init=8, rel="log", unit="Hz", col="green2"),
+                crange(name="fmrange", label="FM Range", min=0.001, max=0.2, init=[0.01,0.05], rel="lin", unit="x", col="red1"),
+                cslider(name="fmspeed", label="FM Speed", min=0.001, max=2000, init=200, rel="log", unit="Hz", col="red2"),
+                cslider(name="drywet", label="Dry / Wet", min=0, max=1, init=1, rel="lin", unit="x", col="blue1"),
+                cpopup(name="ampwave", label="AM LFO Type", init="Square", col="green1", value=["Saw Up", "Saw Down", "Square", 
+                            "Triangle", "Pulse", "Bipolar Pulse", "Sample&Hold", "Mod Sine"]),
+                ctoggle(name="onoffam", label="AM On/Off", init=1, col="green2"),
+                cpopup(name="freqwave", label="FM LFO Type", init="Square", col="red1", value=["Saw Up", "Saw Down", "Square", 
+                            "Triangle", "Pulse", "Bipolar Pulse", "Sample&Hold", "Mod Sine"]),
+                ctoggle(name="onofffm", label="FM On/Off", init=1, col="red2"),
                 cpoly()
           ]
\ No newline at end of file
diff --git a/Resources/modules/Pitch/PitchLooper.c5 b/Resources/modules/Pitch/PitchLooper.c5
index 1ca243e..492182f 100644
--- a/Resources/modules/Pitch/PitchLooper.c5
+++ b/Resources/modules/Pitch/PitchLooper.c5
@@ -53,10 +53,7 @@ class Module(BaseModule):
         self.voice4 = Pointer(self.snd, self.phasor4, mul=self.mul4*0.2)
         self.voice5 = Pointer(self.snd, self.phasor5, mul=self.mul5*0.2)
         self.mixxx = self.voice1+self.voice2+self.voice3+self.voice4+self.voice5
-        self.sig = self.mixxx*self.env
-        self.chorusd = Scale(input=Sig(self.polyphony_spread), inmin=0.0001, inmax=0.5, outmin=0, outmax=5)
-        self.chorusb = Scale(input=Sig(self.number_of_voices), inmin=1, inmax=10, outmin=0, outmax=1)
-        self.out = Chorus(input=self.sig, depth=self.chorusd, feedback=0.25, bal=self.chorusb)
+        self.out = self.mixxx*self.env
 
     def onoffv1(self, value):
         self.mul1.mul = value
@@ -90,48 +87,4 @@ Interface = [   cfilein(name="snd"),
                 ctoggle(name="onoffv3", label="", init=1, stack=True, col="green"),
                 ctoggle(name="onoffv4", label="", init=1, stack=True, col="green"),
                 ctoggle(name="onoffv5", label="", init=1, stack=True, col="green"),
-                cpoly()
           ]
-
-
-####################################
-##### Cecilia reserved section #####
-#### Presets saved from the app ####
-####################################
-
-
-CECILIA_PRESETS = {'last save': {'gainSlider': 0.0,
-               'nchnls': 2,
-               'plugins': {0: ['None', [0, 0, 0, 0], [[0, 0, None], [0, 0, None], [0, 0, None]]],
-                           1: ['None', [0, 0, 0, 0], [[0, 0, None], [0, 0, None], [0, 0, None]]],
-                           2: ['None', [0, 0, 0, 0], [[0, 0, None], [0, 0, None], [0, 0, None]]]},
-               'totalTime': 30.000000000000071,
-               'userGraph': {'env': {'curved': False, 'data': [[0.0, 1.0], [1.0, 1.0]]},
-                             'gain1': {'curved': False, 'data': [[0.0, 0.72727272727272729], [1.0, 0.72727272727272729]]},
-                             'gain2': {'curved': False, 'data': [[0.0, 0.72727272727272729], [1.0, 0.72727272727272729]]},
-                             'gain3': {'curved': False, 'data': [[0.0, 0.72727272727272729], [1.0, 0.72727272727272729]]},
-                             'gain4': {'curved': False, 'data': [[0.0, 0.72727272727272729], [1.0, 0.72727272727272729]]},
-                             'gain5': {'curved': False, 'data': [[0.0, 0.72727272727272729], [1.0, 0.72727272727272729]]},
-                             'transpo1': {'curved': False, 'data': [[0.0, 0.5], [1.0, 0.5]]},
-                             'transpo2': {'curved': False, 'data': [[0.0, 0.50104166666666672], [1.0, 0.50104166666666672]]},
-                             'transpo3': {'curved': False, 'data': [[0.0, 0.54166666666666663], [1.0, 0.54166666666666663]]},
-                             'transpo4': {'curved': False, 'data': [[0.0, 0.46875], [1.0, 0.46875]]},
-                             'transpo5': {'curved': False, 'data': [[0.0, 0.41666666666666669], [1.0, 0.41666666666666669]]}},
-               'userInputs': {'snd': {'dursnd': 278.048095703125,
-                                      'gensizesnd': 16777216,
-                                      'nchnlssnd': 2,
-                                      'offsnd': 0.0,
-                                      'path': u'/Users/fciadmin/Music/iTunes/iTunes Music/Jean Piche/Works/Flying.aif',
-                                      'srsnd': 44100.0,
-                                      'type': 'cfilein'}},
-               'userSliders': {'gain1': [0.0, 0, None, 1, None],
-                               'gain2': [0.0, 0, None, 1, None],
-                               'gain3': [0.0, 0, None, 1, None],
-                               'gain4': [0.0, 0, None, 1, None],
-                               'gain5': [0.0, 0, None, 1, None],
-                               'transpo1': [1805.787781350482, 0, None, 1, None],
-                               'transpo2': [3071.3826366559488, 0, None, 1, None],
-                               'transpo3': [3287.4598070739548, 0, None, 1, None],
-                               'transpo4': [2021.8649517684889, 0, None, 1, None],
-                               'transpo5': [2577.4919614147911, 0, None, 1, None]},
-               'userTogglePopups': {'onoffv1': 1, 'onoffv2': 1, 'onoffv3': 1, 'onoffv4': 1, 'onoffv5': 1, 'polynum': 0, 'polyspread': 0.001}}}
\ No newline at end of file
diff --git a/Resources/modules/Resonators&Verbs/ConvolutionReverb.c5 b/Resources/modules/Resonators&Verbs/ConvolutionReverb.c5
new file mode 100644
index 0000000..d582f4d
--- /dev/null
+++ b/Resources/modules/Resonators&Verbs/ConvolutionReverb.c5
@@ -0,0 +1,14 @@
+class Module(BaseModule):
+    def __init__(self):
+        BaseModule.__init__(self)
+        self.snd = self.addSampler("snd")
+        self.table = self.addFilein("impulse")
+        self.out = CvlVerb(self.snd, self.table.path, bal=self.drywet, mul=self.env)
+        
+Interface = [
+            csampler(name="snd", label="Audio"),
+            cfilein(name="impulse", label="Impulse response"),
+            cgraph(name="env"),
+            cslider(name="drywet", label="Mix dry/wet", min=0, max=1, init=0.5, col="blue"),
+
+]
diff --git a/Resources/modules/Resonators&Verbs/Convolve.c5 b/Resources/modules/Resonators&Verbs/Convolve.c5
index ccdd288..94558fe 100644
--- a/Resources/modules/Resonators&Verbs/Convolve.c5
+++ b/Resources/modules/Resonators&Verbs/Convolve.c5
@@ -2,15 +2,22 @@ class Module(BaseModule):
     """
     Circular convolution filtering module
     
+    Circular convolution is very expensive to compute, so the impulse response must be kept 
+    very short to run in real time.
+    
     Sliders under the graph:
     
+        - Impulse index 1 : Position of the first impulse response in the soundfile (mouse up)
+        - Impulse index 2 : Position of the second impulse response in the soundfile (mouse up)
+        - Imp 1 <--> Imp 2 : Morphing between the two impulse responses
         - Dry / Wet : Mix between the original signal and the convoluted signal
     
     Dropdown menus, toggles and sliders on the bottom left:
     
         - Size : Buffer size of the convolution
-        - # of Voices : Number of voices played simultaneously (polyphony), only available at initialization time
-        - Polyphony Spread : Pitch variation between voices (chorus), only available at initialization time
+        - Balance : Post-processing amplitude mapping
+        - # of Polyphony : Number of voices played simultaneously (polyphony), only available at initialization time
+        - Polyphony Chords : Pitch variation between voices (chorus), only available at initialization time
     
     Graph only parameters :
     
@@ -19,8 +26,18 @@ class Module(BaseModule):
     def __init__(self):
         BaseModule.__init__(self)
         self.snd = self.addSampler("snd")
-        self.sndtable = self.addFilein("sndtable")
-        self.convo = Convolve(self.snd, self.sndtable, size=int(self.size_value), mul=0.5)
+        self.dump = self.addFilein("sndtable")
+        self.sizeInSec = sampsToSec(int(self.size_value))
+        self.snddur = sndinfo(self.dump.path)[1]
+        start = self.snddur*(self.index.get()*0.01)
+        start2 = self.snddur*(self.index2.get()*0.01)
+
+        self.sndtable = SndTable(self.dump.path, start=start, stop=start+self.sizeInSec)
+        self.sndtable2 = SndTable(self.dump.path, start=start2, stop=start2+self.sizeInSec)
+        self.mtable = NewTable(self.sizeInSec, self.nchnls)
+
+        self.morphing= TableMorph(self.morph, self.mtable, [self.sndtable, self.sndtable2])
+        self.convo = Convolve(self.snd, self.mtable, size=int(self.size_value), mul=0.5)
         self.deg = Interp(self.snd, self.convo, self.drywet, mul=self.env)
 
         self.osc = Sine(10000,mul=.1)
@@ -30,6 +47,14 @@ class Module(BaseModule):
         #INIT
         self.balance(self.balance_index, self.balance_value)
 
+    def index_up(self, value):
+        start = self.snddur*(value*0.01)
+        self.sndtable.setSound(self.dump.path, start=start, stop=start+self.sizeInSec)
+
+    def index2_up(self, value):
+        start2 = self.snddur*(value*0.01)
+        self.sndtable2.setSound(self.dump.path, start=start2, stop=start2+self.sizeInSec)
+        
     def balance(self,index,value):
        if index == 0:
            self.out.interp  = 0
@@ -40,14 +65,14 @@ class Module(BaseModule):
           self.out.interp = 1
           self.balanced.input2 = self.snd
 
-        
-        
-
 Interface = [   csampler(name="snd"),
                 cfilein(name="sndtable", label="Impulse"),
                 cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue"),
+                cslider(name="index", label="Impulse index 1", min=0, max=100, init=25, rel="lin", unit="%", up=True),
+                cslider(name="index2", label="Impulse index 2", min=0, max=100, init=50, rel="lin", unit="%", up=True),
+                cslider(name="morph", label="Imp 1 <--> Imp 2", min=0, max=1, init=0.5, rel="lin", unit="x", col="red"),
                 cslider(name="drywet", label="Dry / Wet", min=0, max=1, init=1, rel="lin", unit="x", col="blue"),
-                cpopup(name="size", label="Size", init="512", col="grey", rate="i", value=["128","256","512","1024","2048"]),
+                cpopup(name="size", label="Size", init="512", col="grey", rate="i", value=["128","256","512","1024","2048","4096","8192"]),
                 cpopup(name="balance", label = "Balance", init= "Off", col="blue", value=["Off","Compress", "Audio"]),
                 cpoly()
           ]
\ No newline at end of file
diff --git a/Resources/modules/Resonators&Verbs/DetunedResonators.c5 b/Resources/modules/Resonators&Verbs/DetunedResonators.c5
index c3fb9d0..d5aca27 100644
--- a/Resources/modules/Resonators&Verbs/DetunedResonators.c5
+++ b/Resources/modules/Resonators&Verbs/DetunedResonators.c5
@@ -109,7 +109,7 @@ Interface = [   csampler(name="snd"),
                 cslider(name="voice6", label="Pitch Voice 6", min=1, max=130, init=67, rel="lin", unit="semi", half=True, col="green"),
                 cslider(name="voice7", label="Pitch Voice 7", min=1, max=130, init=36, rel="lin", unit="semi", half=True, col="green"),
                 cslider(name="voice8", label="Pitch Voice 8", min=1, max=130, init=87, rel="lin", unit="semi", half=True, col="green"),
-                cslider(name="fb", label="Feedback", min=0.01, max=0.9999, init=0.5, rel="lin", unit="x", col="red"),
+                cslider(name="fb", label="Feedback", min=0.01, max=0.9999, init=0.95, rel="lin", unit="x", col="red"),
                 cslider(name="drywet", label="Dry / Wet", min=0, max=1, init=1, rel="lin", unit="x", col="blue"),
                 ctoggle(name="onoffv1", label="Voice Activation ( 1 --> 8 )", init=1, stack=True, col="green"),
                 ctoggle(name="onoffv2", label="", init=1, stack=True, col="green"),
diff --git a/Resources/modules/Resonators&Verbs/Resonators.c5 b/Resources/modules/Resonators&Verbs/Resonators.c5
index a6dcc96..f71bac9 100644
--- a/Resources/modules/Resonators&Verbs/Resonators.c5
+++ b/Resources/modules/Resonators&Verbs/Resonators.c5
@@ -122,10 +122,10 @@ Interface = [   csampler(name="snd"),
                 cslider(name="rnddelamp", label="Delay Rand Amp", min=0, max=0.25, init=0, rel="lin", unit="x", col="marineblue", half=True),
                 cslider(name="rndspeed", label="Amp Rand Speed", min=0.001, max=100, init=0.25, rel="log", unit="Hz", col="lightblue", half=True),
                 cslider(name="rnddelspeed", label="Delay Rand Speed", min=0.001, max=100, init=6, rel="log", unit="Hz", col="marineblue", half=True),
-                cslider(name="fb", label="Feedback", min=0.01, max=0.999, init=0.5, rel="lin", unit="x", col="red"),
+                cslider(name="fb", label="Feedback", min=0.01, max=0.999, init=0.95, rel="lin", unit="x", col="red"),
                 cslider(name="drywet", label="Dry / Wet", min=0, max=1, init=1, rel="lin", unit="x", col="blue"),
                 cpopup(name="balance", label = "Balance", init= "Off", col="blue", value=["Off","Compress", "Source"]),
-                ctoggle(name="onoffv1", label="Voice Activation / 1 > 8", init=1, stack=True, col="green"),
+                ctoggle(name="onoffv1", label="Voice Activation / 1 > 8", init=1, stack=True, col="green2"),
                 ctoggle(name="onoffv2", label="", init=1, stack=True, col="green2"),
                 ctoggle(name="onoffv3", label="", init=1, stack=True, col="green2"),
                 ctoggle(name="onoffv4", label="", init=1, stack=True, col="green2"),
diff --git a/Resources/modules/Resonators&Verbs/WGuideBank.c5 b/Resources/modules/Resonators&Verbs/WGuideBank.c5
index 9ed8d5d..b2ca8b6 100644
--- a/Resources/modules/Resonators&Verbs/WGuideBank.c5
+++ b/Resources/modules/Resonators&Verbs/WGuideBank.c5
@@ -62,8 +62,8 @@ class Module(BaseModule):
 Interface = [   csampler(name="snd"), 
                 cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue"),
                 cslider(name="basefreq", label="Base Freq", min=10, max=1000, init=40, rel="log", unit="Hz", col="blue"),
-                cslider(name="exp", label="WG Expansion", min=0, max=4, init=0.9975, rel="lin", unit="x", col="lightblue"),
-                cslider(name="fb", label="WG Feedback", min=0, max=0.999, init=0.7, rel="lin", unit="x", col="lightblue"),
+                cslider(name="exp", label="WG Expansion", min=0, max=4, init=1.33, rel="lin", unit="x", col="lightblue"),
+                cslider(name="fb", label="WG Feedback", min=0, max=0.999, init=0.95, rel="lin", unit="x", col="lightblue"),
                 cslider(name="filter", label="Filter Cutoff", min=50, max=20000, init=20000, rel="log", unit="Hz", col="chorusyellow"),
                 cslider(name="dev", label="Amp Dev Amp", min=0.001, max=1, init=0.01, rel="log", unit="x", col="green4", half = True),
                 cslider(name="fdev", label="Freq Dev Amp", min=0.001, max=1, init=0.01, rel="log", unit="x", col="green2", half = True),
diff --git a/Resources/modules/Spectral/AddResynth.c5 b/Resources/modules/Spectral/AddResynth.c5
new file mode 100644
index 0000000..3b21958
--- /dev/null
+++ b/Resources/modules/Spectral/AddResynth.c5
@@ -0,0 +1,86 @@
+class Module(BaseModule):
+    """
+    Phase vocoder additive resynthesis
+    
+    Sliders under the graph:
+    
+        - Transpo : Transposition factor
+        - # of oscs : Number of oscillators used to synthesize the sound
+        - First bin : First synthesized bin
+        - Increment : Step between synthesized bins
+        - Dry / Wet : Mix between the original signal and the delayed signals
+    
+    Dropdown menus, toggles and sliders on the bottom left:
+
+        - FFT Size : Size of the FFT
+        - FFT Envelope : Shape of the FFT
+        - FFT Overlaps : Number of FFT overlaps
+        - # of Voices : Number of voices played simultaneously (polyphony), 
+          only available at initialization time
+        - Polyphony Spread : Pitch variation between voices (chorus), 
+          only available at initialization time
+        
+    Graph only parameters :
+    
+        - Overall Amplitude : The amplitude curve applied on the total duration of the performance
+    """
+    def __init__(self):
+        BaseModule.__init__(self)
+        self.snd = self.addSampler("snd")
+
+        size = int(self.fftsize_value)
+        olaps = int(self.overlaps_value)
+        wintype = self.wtype_index
+        self.oneOverSr = 1.0 / self.sr
+
+        self.delsrc = Delay(self.snd, delay=size*self.oneOverSr)
+
+        self.fin = PVAnal(self.snd, size=size, overlaps=olaps, wintype=wintype)
+        self.fout = PVAddSynth(self.fin, pitch=self.transpo, num=int(self.num.get()), 
+                            first=int(self.first.get()), inc=int(self.inc.get()))
+        self.fade = SigTo(value=1, time=.05, init=1)
+        self.out = Interp(self.delsrc*0.7, self.fout, self.mix, mul=self.fade*self.env)
+
+    def fftsize(self, index, value):
+        newsize = int(value)
+        self.fade.value = 0
+        time.sleep(.05)
+        self.delsrc.delay = newsize*self.oneOverSr
+        self.fin.size = newsize
+        time.sleep(.05)
+        self.fade.value = 1
+
+    def overlaps(self, index, value):
+        olaps = int(value)
+        self.fade.value = 0
+        time.sleep(.05)
+        self.fin.overlaps = olaps
+        time.sleep(.05)
+        self.fade.value = 1
+
+    def wtype(self, index, value):
+        self.fin.wintype = index
+
+    def num_up(self, value):
+        self.fout.num = int(value)
+
+    def first_up(self, value):
+        self.fout.first = int(value)
+
+    def inc_up(self, value):
+        self.fout.inc = int(value)
+
+Interface = [   csampler(name="snd"), 
+                cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue"),
+                cslider(name="transpo", label="Transpo", min=0.25, max=4, init=1, rel="lin", unit="x", col="green1"),
+                cslider(name="num", label="# of oscs", min=1, max=500, init=100, rel="lin", res="int", unit="x", up=True),
+                cslider(name="first", label="First bin", min=0, max=50, init=0, rel="lin", res="int", unit="x", up=True),
+                cslider(name="inc", label="Increment", min=1, max=25, init=1, rel="lin", res="int", unit="x", up=True),
+                cslider(name="mix", label="Dry / Wet", min=0, max=1, init=1, rel="lin", unit="x", col="blue"),
+                cpopup(name="fftsize", label="FFT Size", init="1024", value=["16", "32", "64", "128", "256", "512", "1024", "2048", "4096", "8192"], col="red"),
+                cpopup(name="wtype", label="FFT Envelope", init="Hanning", col="red", value=["Rectangular", "Hamming", "Hanning", "Bartlett",
+                            "Blackman 3", "Blackman 4", "Blackman 7", "Tuckey", "Sine"]),
+                cpopup(name="overlaps", label="FFT Overlaps", init="4", col="red", value=["1", "2", "4", "8", "16"]),
+                cpoly()
+          ]
+
diff --git a/Resources/modules/Spectral/BinModulator.c5 b/Resources/modules/Spectral/BinModulator.c5
new file mode 100644
index 0000000..06deb1c
--- /dev/null
+++ b/Resources/modules/Spectral/BinModulator.c5
@@ -0,0 +1,121 @@
+class Module(BaseModule):
+    """
+    Frequency independent amplitude and frequency modulations.
+    
+    Sliders under the graph:
+    
+        - AM Base Freq : Base amplitude modulation frequency, in Hertz.
+        - AM Spread : Spreading factor for AM oscillator frequencies. 0 means every 
+          oscillator has the same frequency.
+        - FM Base Freq : Base frequency modulation frequency, in Hertz.
+        - FM Spread : Spreading factor for FM oscillator frequencies. 0 means every 
+          oscillator has the same frequency.
+        - FM Depth : Amplitude of the modulating oscillators.
+        - Dry / Wet : Mix between the original signal and the delayed signals
+    
+    Dropdown menus, toggles and sliders on the bottom left:
+
+        - Reset : On mouse down, this button reset the phase of all bin's oscillators to 0. 
+        - Routing : Path of the sound
+        - FFT Size : Size of the FFT
+        - FFT Envelope : Shape of the FFT
+        - FFT Overlaps : Number of FFT overlaps
+        - # of Voices : Number of voices played simultaneously (polyphony), 
+          only available at initialization time
+        - Polyphony Spread : Pitch variation between voices (chorus), 
+          only available at initialization time
+        
+    Graph only parameters :
+    
+        - Overall Amplitude : The amplitude curve applied on the total duration of the performance
+    """
+    def __init__(self):
+        BaseModule.__init__(self)
+        self.snd = self.addSampler("snd")
+
+        size = int(self.fftsize_value)
+        olaps = int(self.overlaps_value)
+        wintype = self.wtype_index
+        self.oneOverSr = 1.0 / self.sr
+        routing = self.routing_index
+
+        self.delsrc = Delay(self.snd, delay=size*self.oneOverSr)
+
+        self.fin = PVAnal(self.snd, size=size, overlaps=olaps, wintype=wintype)
+        
+        self.tr1 = PVAmpMod(self.fin, basefreq=self.amfreq, spread=self.amspread)
+        self.tr2 = PVFreqMod(self.tr1, basefreq=self.fmfreq, spread=self.fmspread, depth=self.fmdepth)
+
+        self.fout = PVSynth(self.tr2, wintype=wintype)
+
+        self.fade = SigTo(value=1, time=.05, init=1)
+        self.out = Interp(self.delsrc*0.5, self.fout*0.4, self.mix, mul=self.fade*self.env)
+
+        self.setRouting(routing)
+    
+    def setRouting(self, x):
+        if x == 0:
+            self.tr1.input = self.fin
+            self.fout.input = self.tr1
+            self.tr1.play()
+            self.tr2.stop()
+        elif x == 1:
+            self.tr2.input = self.fin
+            self.fout.input = self.tr2
+            self.tr1.stop()
+            self.tr2.play()
+        else:
+            self.tr1.input = self.fin
+            self.tr2.input = self.tr1
+            self.fout.input = self.tr2
+            self.tr1.play()
+            self.tr2.play()
+
+    def routing(self, index, value):
+        self.setRouting(index)
+
+    def reset(self, value):
+        if value:
+            if self.tr1.isPlaying():
+                self.tr1.reset()
+            if self.tr2.isPlaying():
+                self.tr2.reset()
+
+    def fftsize(self, index, value):
+        newsize = int(value)
+        self.fade.value = 0
+        time.sleep(.05)
+        self.delsrc.delay = newsize*self.oneOverSr
+        self.fin.size = newsize
+        time.sleep(.05)
+        self.fade.value = 1
+
+    def overlaps(self, index, value):
+        olaps = int(value)
+        self.fade.value = 0
+        time.sleep(.05)
+        self.fin.overlaps = olaps
+        time.sleep(.05)
+        self.fade.value = 1
+
+    def wtype(self, index, value):
+        self.fin.wintype = index
+        self.fout.wintype = index
+
+Interface = [   csampler(name="snd"), 
+                cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue"),
+                cslider(name="amfreq", label="AM Base Freq", min=0.0001, max=100, init=4, rel="log", unit="Hz", col="green1"),
+                cslider(name="amspread", label="AM Spread", min=-1, max=1, init=0.5, rel="lin", unit="x", col="green2"),
+                cslider(name="fmfreq", label="FM Base Freq", min=0.0001, max=100, init=2, rel="log", unit="Hz", col="orange1"),
+                cslider(name="fmspread", label="FM Spread", min=-1, max=1, init=0.1, rel="lin", unit="x", col="orange2"),
+                cslider(name="fmdepth", label="FM Depth", min=0, max=1, init=0.1, rel="lin", unit="x", col="orange3"),
+                cslider(name="mix", label="Dry / Wet", min=0, max=1, init=1, rel="lin", unit="x", col="blue"),
+                cbutton(name="reset", label="Reset", col="blue2"),
+                cpopup(name="routing", label="Routing", init="Amp Only", value=["Amp Only", "Freq Only", "Amp -> Freq"], col="blue2"),
+                cpopup(name="fftsize", label="FFT Size", init="1024", value=["16", "32", "64", "128", "256", "512", "1024", "2048", "4096", "8192"], col="red"),
+                cpopup(name="wtype", label="FFT Envelope", init="Hanning", col="red", value=["Rectangular", "Hamming", "Hanning", "Bartlett",
+                            "Blackman 3", "Blackman 4", "Blackman 7", "Tuckey", "Sine"]),
+                cpopup(name="overlaps", label="FFT Overlaps", init="4", col="red", value=["1", "2", "4", "8", "16"]),
+                cpoly()
+          ]
+
diff --git a/Resources/modules/Spectral/BinWarper.c5 b/Resources/modules/Spectral/BinWarper.c5
new file mode 100644
index 0000000..152d961
--- /dev/null
+++ b/Resources/modules/Spectral/BinWarper.c5
@@ -0,0 +1,71 @@
+class Module(BaseModule):
+    """
+    Phase vocoder buffer with bin independent speed playback.
+    
+    Sliders under the graph:
+    
+        - Low Bin Speed : Lowest bin speed factor
+        - High Bin Speed : Highest bin speed factor
+          * For random distribution, these values are the minimum
+            and the maximum of the distribution.
+            
+    Dropdown menus, toggles and sliders on the bottom left:
+
+        - Reset : Reset pointer positions to 0.
+        - Speed Distribution : Speed distribution algorithm.
+        - FFT Size : Size of the FFT
+        - FFT Envelope : Shape of the FFT
+        - FFT Overlaps : Number of FFT overlaps
+        - # of Voices : Number of voices played simultaneously (polyphony), 
+          only available at initialization time
+        - Polyphony Spread : Pitch variation between voices (chorus), 
+          only available at initialization time
+        
+    Graph only parameters :
+    
+        - Overall Amplitude : The amplitude curve applied on the total duration of the performance
+
+    """
+    def __init__(self):
+        BaseModule.__init__(self)
+        self.snd = self.addSampler("snd")
+        snddur = self.getSamplerDur("snd")
+        self.server.startoffset = snddur
+
+        size = int(self.fftsize_value)
+        olaps = int(self.overlaps_value)
+        wintype = self.wtype_index
+        mode = self.mode_index
+
+        self.fin = PVAnal(self.snd, size=size, overlaps=olaps, wintype=wintype)
+        self.buf = PVBufLoops(self.fin, self.low, self.high, mode, length=snddur)
+        self.fout = PVSynth(self.buf, wintype=wintype, mul=self.env)
+
+        self.fade = SigTo(value=1, time=.05, init=1)
+        self.out = Sig(self.fout, mul=self.fade)
+
+    def reset(self, value):
+        if value:
+            self.buf.reset()
+
+    def mode(self, index, value):
+        self.buf.mode = index
+
+    def wtype(self, index, value):
+        self.fin.wintype = index
+        self.fout.wintype = index
+
+Interface = [   csampler(name="snd"), 
+                cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue"),
+                cslider(name="low", label="Low Bin Speed", min=0, max=2, init=0.9, rel="lin", unit="x", col="green1"),
+                cslider(name="high", label="High Bin Speed", min=0, max=2, init=1.1, rel="lin", unit="x", col="green2"),
+                cbutton(name="reset", label="Reset", col="blue2"),
+                cpopup(name="mode", label="Speed Distribution", init="Linear", col="blue2",
+                        value=["Linear", "Exponential", "Logarithmic", "Random", "Rand Exp Min", "Rand Exp Max", "Rand Bi-Exp"]),
+                cpopup(name="fftsize", label="FFT Size", init="1024", rate="i", value=["16", "32", "64", "128", "256", "512", "1024", "2048", "4096", "8192"], col="red"),
+                cpopup(name="wtype", label="FFT Envelope", init="Hanning", col="red", value=["Rectangular", "Hamming", "Hanning", "Bartlett",
+                            "Blackman 3", "Blackman 4", "Blackman 7", "Tuckey", "Sine"]),
+                cpopup(name="overlaps", label="FFT Overlaps", rate="i", init="4", col="red", value=["1", "2", "4", "8", "16"]),
+                cpoly()
+          ]
+
diff --git a/Resources/modules/Spectral/CrossSynth.c5 b/Resources/modules/Spectral/CrossSynth.c5
index f95b49a..9c23993 100644
--- a/Resources/modules/Spectral/CrossSynth.c5
+++ b/Resources/modules/Spectral/CrossSynth.c5
@@ -2,6 +2,8 @@ class Module(BaseModule):
     """
     Cross synthesis module (FFT)
     
+    Multiplication of magnitudes from two phase vocoder streaming objects.
+    
     Sliders under the graph:
     
         - Exciter Pre Filter Freq : Frequency of the pre-FFT filter
@@ -14,8 +16,10 @@ class Module(BaseModule):
         - FFT Size : Size of the FFT
         - FFT Envelope : Shape of the FFT
         - FFT Overlaps : Number of FFT overlaps
-        - # of Voices : Number of voices played simultaneously (polyphony), only available at initialization time
-        - Polyphony Spread : Pitch variation between voices (chorus), only available at initialization time
+        - # of Voices : Number of voices played simultaneously (polyphony), 
+          only available at initialization time
+        - Polyphony Spread : Pitch variation between voices (chorus), 
+          only available at initialization time
         
     Graph only parameters :
     
@@ -32,21 +36,16 @@ class Module(BaseModule):
         wintype = self.wtype_index
         self.oneOverSr = 1.0 / self.sr
         
-        self.delsrc = Delay(self.snd1, delay=size*self.oneOverSr*2)
+        self.delsrc = Delay(self.snd1, delay=size*self.oneOverSr)
 
-        self.fin1 = FFT(self.snd1, size=size, overlaps=olaps, wintype=wintype)
-        self.fin2 = FFT(self.snd2_filt, size=size, overlaps=olaps, wintype=wintype)
+        self.fin1 = PVAnal(self.snd1, size=size, overlaps=olaps, wintype=wintype)
+        self.fin2 = PVAnal(self.snd2_filt, size=size, overlaps=olaps, wintype=wintype)
 
-        # get the magnitude of the first sound
-        self.mag = Sqrt(self.fin1["real"]*self.fin1["real"] + self.fin1["imag"]*self.fin1["imag"], mul=60)
-        # scale `real` and `imag` parts of the second sound by the magnitude of the first one
-        self.real = self.fin2["real"] * self.mag
-        self.imag = self.fin2["imag"] * self.mag
+        self.cross = PVMult(self.fin1, self.fin2)
+        self.fout = PVSynth(self.cross, wintype=wintype, mul=4)
 
-        self.fout = IFFT(self.real, self.imag, size=size, overlaps=olaps, wintype=wintype)
-        self.ffout = self.fout.mix(self.nchnls)
         self.fade = SigTo(value=1, time=.03, init=1)
-        self.out = Interp(self.delsrc*self.env*0.5, self.ffout*self.env, self.mix, mul=self.fade)
+        self.out = Interp(self.delsrc*self.env*0.5, self.fout*self.env, self.mix, mul=self.fade)
 
     def prefilttype(self, index, value):
         self.snd2_filt.type = index
@@ -55,10 +54,18 @@ class Module(BaseModule):
         newsize = int(value)
         self.fade.value = 0
         time.sleep(.05)
-        self.delsrc.delay = newsize*self.oneOverSr*2
+        self.delsrc.delay = newsize*self.oneOverSr
         self.fin1.size = newsize
         self.fin2.size = newsize
-        self.fout.size = newsize
+        time.sleep(.05)
+        self.fade.value = 1
+
+    def overlaps(self, index, value):
+        olaps = int(value)
+        self.fade.value = 0
+        time.sleep(.05)
+        self.fin1.overlaps = olaps
+        self.fin2.overlaps = olaps
         time.sleep(.05)
         self.fade.value = 1
 
@@ -70,14 +77,14 @@ class Module(BaseModule):
 Interface = [   csampler(name="snd1", label="Spectral Envelope"),
                 csampler(name="snd2", label="Source Exciter"),
                 cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue"),
-                cslider(name="prefiltf", label="Exciter Pre Filter Freq", min=40, max=18000, init=150, rel="log", unit="Hz", col="green"),
-                cslider(name="prefiltq", label="Exciter Pre Filter Q", min=.5, max=10, init=0.707, rel="log", col="green"),
+                cslider(name="prefiltf", label="Exc Pre Filter Freq", min=40, max=18000, init=150, rel="log", unit="Hz", col="green"),
+                cslider(name="prefiltq", label="Exc Pre Filter Q", min=.5, max=10, init=0.707, rel="log", col="green"),
                 cslider(name="mix", label="Dry / Wet", min=0, max=1, init=1, rel="lin", unit="x", col="blue"),
                 cpopup(name="prefilttype", label="Exc Pre Filter Type", init="Highpass", col="green", value=["Lowpass","Highpass","Bandpass","Bandstop"]),
                 cpopup(name="fftsize", label="FFT Size", init="1024", value=["16", "32", "64", "128", "256", "512", "1024", "2048", "4096", "8192"], col="red"),
                 cpopup(name="wtype", label="FFT Envelope", init="Hanning", col="red", value=["Rectangular", "Hamming", "Hanning", "Bartlett",
                             "Blackman 3", "Blackman 4", "Blackman 7", "Tuckey", "Sine"]),
-                cpopup(name="overlaps", label="FFT Overlaps", rate="i", init="4", value=["1", "2", "4", "8", "16"]),
+                cpopup(name="overlaps", label="FFT Overlaps", init="4", col="red", value=["1", "2", "4", "8", "16"]),
                 cpoly()
           ]
 
diff --git a/Resources/modules/Spectral/CrossSynth.c5 b/Resources/modules/Spectral/CrossSynth2.c5
similarity index 61%
copy from Resources/modules/Spectral/CrossSynth.c5
copy to Resources/modules/Spectral/CrossSynth2.c5
index f95b49a..0b119e4 100644
--- a/Resources/modules/Spectral/CrossSynth.c5
+++ b/Resources/modules/Spectral/CrossSynth2.c5
@@ -2,10 +2,16 @@ class Module(BaseModule):
     """
     Cross synthesis module (FFT)
     
+    Performs cross-synthesis between two phase vocoder streaming objects.
+
+    The amplitudes from `Source Exciter` and `Spectral Envelope`
+    are applied to the frequencies of `Source Exciter`.
+    
     Sliders under the graph:
     
-        - Exciter Pre Filter Freq : Frequency of the pre-FFT filter
-        - Exciter Pre Filter Q : Q of the pre-FFT filter
+        - Crossing index : Morphing index between the two source's magnitudes
+        - Exc Pre Filter Freq : Frequency of the pre-FFT filter
+        - Exc Pre Filter Q : Q of the pre-FFT filter
         - Dry / Wet : Mix between the original signal and the processed signal
     
     Dropdown menus, toggles and sliders on the bottom left:
@@ -14,8 +20,10 @@ class Module(BaseModule):
         - FFT Size : Size of the FFT
         - FFT Envelope : Shape of the FFT
         - FFT Overlaps : Number of FFT overlaps
-        - # of Voices : Number of voices played simultaneously (polyphony), only available at initialization time
-        - Polyphony Spread : Pitch variation between voices (chorus), only available at initialization time
+        - # of Voices : Number of voices played simultaneously (polyphony), 
+          only available at initialization time
+        - Polyphony Spread : Pitch variation between voices (chorus), 
+          only available at initialization time
         
     Graph only parameters :
     
@@ -32,21 +40,16 @@ class Module(BaseModule):
         wintype = self.wtype_index
         self.oneOverSr = 1.0 / self.sr
         
-        self.delsrc = Delay(self.snd1, delay=size*self.oneOverSr*2)
+        self.delsrc = Delay(self.snd1, delay=size*self.oneOverSr)
 
-        self.fin1 = FFT(self.snd1, size=size, overlaps=olaps, wintype=wintype)
-        self.fin2 = FFT(self.snd2_filt, size=size, overlaps=olaps, wintype=wintype)
+        self.fin1 = PVAnal(self.snd1, size=size, overlaps=olaps, wintype=wintype)
+        self.fin2 = PVAnal(self.snd2_filt, size=size, overlaps=olaps, wintype=wintype)
 
-        # get the magnitude of the first sound
-        self.mag = Sqrt(self.fin1["real"]*self.fin1["real"] + self.fin1["imag"]*self.fin1["imag"], mul=60)
-        # scale `real` and `imag` parts of the second sound by the magnitude of the first one
-        self.real = self.fin2["real"] * self.mag
-        self.imag = self.fin2["imag"] * self.mag
+        self.cross = PVCross(self.fin2, self.fin1, self.interp)
+        self.fout = PVSynth(self.cross, wintype=wintype, mul=1)
 
-        self.fout = IFFT(self.real, self.imag, size=size, overlaps=olaps, wintype=wintype)
-        self.ffout = self.fout.mix(self.nchnls)
         self.fade = SigTo(value=1, time=.03, init=1)
-        self.out = Interp(self.delsrc*self.env*0.5, self.ffout*self.env, self.mix, mul=self.fade)
+        self.out = Interp(self.delsrc*self.env*0.5, self.fout*self.env, self.mix, mul=self.fade)
 
     def prefilttype(self, index, value):
         self.snd2_filt.type = index
@@ -55,10 +58,18 @@ class Module(BaseModule):
         newsize = int(value)
         self.fade.value = 0
         time.sleep(.05)
-        self.delsrc.delay = newsize*self.oneOverSr*2
+        self.delsrc.delay = newsize*self.oneOverSr
         self.fin1.size = newsize
         self.fin2.size = newsize
-        self.fout.size = newsize
+        time.sleep(.05)
+        self.fade.value = 1
+
+    def overlaps(self, index, value):
+        olaps = int(value)
+        self.fade.value = 0
+        time.sleep(.05)
+        self.fin1.overlaps = olaps
+        self.fin2.overlaps = olaps
         time.sleep(.05)
         self.fade.value = 1
 
@@ -70,14 +81,15 @@ class Module(BaseModule):
 Interface = [   csampler(name="snd1", label="Spectral Envelope"),
                 csampler(name="snd2", label="Source Exciter"),
                 cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue"),
-                cslider(name="prefiltf", label="Exciter Pre Filter Freq", min=40, max=18000, init=150, rel="log", unit="Hz", col="green"),
-                cslider(name="prefiltq", label="Exciter Pre Filter Q", min=.5, max=10, init=0.707, rel="log", col="green"),
+                cslider(name="interp", label="Crossing index", min=0, max=1, init=1, rel="lin", unit="x", col="red"),
+                cslider(name="prefiltf", label="Exc Pre Filter Freq", min=40, max=18000, init=150, rel="log", unit="Hz", col="green"),
+                cslider(name="prefiltq", label="Exc Pre Filter Q", min=.5, max=10, init=0.707, rel="log", col="green"),
                 cslider(name="mix", label="Dry / Wet", min=0, max=1, init=1, rel="lin", unit="x", col="blue"),
                 cpopup(name="prefilttype", label="Exc Pre Filter Type", init="Highpass", col="green", value=["Lowpass","Highpass","Bandpass","Bandstop"]),
                 cpopup(name="fftsize", label="FFT Size", init="1024", value=["16", "32", "64", "128", "256", "512", "1024", "2048", "4096", "8192"], col="red"),
                 cpopup(name="wtype", label="FFT Envelope", init="Hanning", col="red", value=["Rectangular", "Hamming", "Hanning", "Bartlett",
                             "Blackman 3", "Blackman 4", "Blackman 7", "Tuckey", "Sine"]),
-                cpopup(name="overlaps", label="FFT Overlaps", rate="i", init="4", value=["1", "2", "4", "8", "16"]),
+                cpopup(name="overlaps", label="FFT Overlaps", init="4", col="red", value=["1", "2", "4", "8", "16"]),
                 cpoly()
           ]
 
diff --git a/Resources/modules/Spectral/Morphing.c5 b/Resources/modules/Spectral/Morphing.c5
index 1e314d1..29c17cc 100644
--- a/Resources/modules/Spectral/Morphing.c5
+++ b/Resources/modules/Spectral/Morphing.c5
@@ -4,7 +4,7 @@ class Module(BaseModule):
     
     Sliders under the graph:
     
-        - Morph src1 <-> src2 : Morphing index between the two sources
+        - Morphing index : Morphing index between the two sources
         - Dry / Wet : Mix between the original signal and the morphed signal
     
     Dropdown menus, toggles and sliders on the bottom left:
@@ -12,12 +12,15 @@ class Module(BaseModule):
         - FFT Size : Size of the FFT
         - FFT Envelope : Shape of the FFT
         - FFT Overlaps : Number of FFT overlaps
-        - # of Voices : Number of voices played simultaneously (polyphony), only available at initialization time
-        - Polyphony Spread : Pitch variation between voices (chorus), only available at initialization time
+        - # of Voices : Number of voices played simultaneously (polyphony), 
+          only available at initialization time
+        - Polyphony Spread : Pitch variation between voices (chorus), 
+          only available at initialization time
         
     Graph only parameters :
     
         - Overall Amplitude : The amplitude curve applied on the total duration of the performance
+
     """
     def __init__(self):
         BaseModule.__init__(self)
@@ -29,39 +32,35 @@ class Module(BaseModule):
         wintype = self.wtype_index
         self.oneOverSr = 1.0 / self.sr
         
-        self.delsrc = Delay(self.snd1, delay=size*self.oneOverSr*2)
-
-        self.fin1 = FFT(self.snd1, size=size, overlaps=olaps, wintype=wintype)
-        self.fin2 = FFT(self.snd2, size=size, overlaps=olaps, wintype=wintype)
-
-        self.pol1 = CarToPol(self.fin1["real"], self.fin1["imag"])
-        self.pol2 = CarToPol(self.fin2["real"], self.fin2["imag"])
-
-        self.mag3 = self.pol1["mag"] * self.pol2["mag"] * 200
-        self.pha3 = self.pol1["ang"] + self.pol2["ang"]
-
-        self.mag = Selector([self.pol1["mag"]*0.25, self.mag3, self.pol2["mag"]*0.25], voice=self.interp*2)
-        self.pha = Selector([self.pol1["ang"], self.pha3, self.pol2["ang"]], voice=self.interp*2)
+        self.delsrc = Delay(self.snd1, delay=size*self.oneOverSr)
 
-        # converts back to rectangular
-        self.car = PolToCar(self.mag, self.pha)
+        self.fin1 = PVAnal(self.snd1, size=size, overlaps=olaps, wintype=wintype)
+        self.fin2 = PVAnal(self.snd2, size=size, overlaps=olaps, wintype=wintype)
+        self.morph = PVMorph(self.fin1, self.fin2, self.interp)
+        self.fout = PVSynth(self.morph, wintype=wintype)
 
-        self.fout = IFFT(self.car["real"], self.car["imag"], size=size, overlaps=olaps, wintype=wintype)
-        self.ffout = self.fout.mix(self.nchnls)
         self.fade = SigTo(value=1, time=.05, init=1)
-        self.out = Interp(self.delsrc*self.env*0.5, self.ffout*self.env, self.mix, mul=self.fade)
+        self.out = Interp(self.delsrc*self.env*0.5, self.fout*self.env, self.mix, mul=self.fade)
 
     def fftsize(self, index, value):
         newsize = int(value)
         self.fade.value = 0
         time.sleep(.05)
-        self.delsrc.delay = newsize*self.oneOverSr*2
+        self.delsrc.delay = newsize*self.oneOverSr
         self.fin1.size = newsize
         self.fin2.size = newsize
-        self.fout.size = newsize
         time.sleep(.05)
         self.fade.value = 1
 
+    def overlaps(self, index, value):
+        olaps = int(value)
+        self.fade.value = 0
+        time.sleep(.05)
+        self.fin1.overlaps = olaps
+        self.fin2.overlaps = olaps
+        time.sleep(.05)
+        self.fade.value = 1
+        
     def wtype(self, index, value):
         self.fin1.wintype = index
         self.fin2.wintype = index
@@ -70,12 +69,12 @@ class Module(BaseModule):
 Interface = [   csampler(name="snd1", label="Source 1"),
                 csampler(name="snd2", label="Source 2"),
                 cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue"),
-                cslider(name="interp", label="Morph src1 <-> src2", min=0, max=1, init=0.5, rel="lin", unit="x", col="green"),
+                cslider(name="interp", label="Morphing index", min=0, max=1, init=0.5, rel="lin", unit="x", col="green"),
                 cslider(name="mix", label="Dry / Wet", min=0, max=1, init=1, rel="lin", unit="x", col="blue"),
                 cpopup(name="fftsize", label="FFT Size", init="1024", value=["16", "32", "64", "128", "256", "512", "1024", "2048", "4096", "8192"], col="red"),
                 cpopup(name="wtype", label="FFT Envelope", init="Hanning", col="red", value=["Rectangular", "Hamming", "Hanning", "Bartlett",
                             "Blackman 3", "Blackman 4", "Blackman 7", "Tuckey", "Sine"]),
-                cpopup(name="overlaps", label="FFT Overlaps", rate="i", init="4", value=["1", "2", "4", "8", "16"]),
+                cpopup(name="overlaps", label="FFT Overlaps", init="4", col="red", value=["1", "2", "4", "8", "16"]),
                 cpoly()
           ]
 
diff --git a/Resources/modules/Spectral/SpectralGate.c5 b/Resources/modules/Spectral/Shifter.c5
similarity index 53%
copy from Resources/modules/Spectral/SpectralGate.c5
copy to Resources/modules/Spectral/Shifter.c5
index 1fe31b5..05b62e0 100644
--- a/Resources/modules/Spectral/SpectralGate.c5
+++ b/Resources/modules/Spectral/Shifter.c5
@@ -1,11 +1,11 @@
 class Module(BaseModule):
     """
-    Spectral gate module (FFT)
+    Two voices frequency shifter
     
     Sliders under the graph:
     
-        - Gate Threshold : dB value at which the gate becomes active
-        - Gate Attenuation : Gain in dB of the gated signal
+        - Shift 1 : Shifting, in Hertz, of the first voice
+        - Shift 2 : Shifting, in Hertz, of the second voice
         - Dry / Wet : Mix between the original signal and the delayed signals
     
     Dropdown menus, toggles and sliders on the bottom left:
@@ -13,12 +13,15 @@ class Module(BaseModule):
         - FFT Size : Size of the FFT
         - FFT Envelope : Shape of the FFT
         - FFT Overlaps : Number of FFT overlaps
-        - # of Voices : Number of voices played simultaneously (polyphony), only available at initialization time
-        - Polyphony Spread : Pitch variation between voices (chorus), only available at initialization time
+        - # of Voices : Number of voices played simultaneously (polyphony), 
+          only available at initialization time
+        - Polyphony Spread : Pitch variation between voices (chorus), 
+          only available at initialization time
         
     Graph only parameters :
     
         - Overall Amplitude : The amplitude curve applied on the total duration of the performance
+
     """
     def __init__(self):
         BaseModule.__init__(self)
@@ -27,26 +30,33 @@ class Module(BaseModule):
         size = int(self.fftsize_value)
         olaps = int(self.overlaps_value)
         wintype = self.wtype_index
+        self.oneOverSr = 1.0 / self.sr
 
-        self.fin = FFT(self.snd*0.5, size=size, overlaps=olaps, wintype=wintype)
-
-        self.pol = CarToPol(self.fin["real"], self.fin["imag"])
-        self.amp = Compare(self.pol["mag"]*50, DBToA(self.gthresh), ">")
-        self.att = DBToA(self.gatt)
-        self.scl = self.amp * (1 - self.att) + self.att
-        self.car = PolToCar(self.pol["mag"]*self.scl, self.pol["ang"])
+        self.delsrc = Delay(self.snd, delay=size*self.oneOverSr)
 
-        self.fout = IFFT(self.car["real"], self.car["imag"], size=size, overlaps=olaps, wintype=wintype)
-        self.ffout = self.fout.mix(self.nchnls)
+        self.fin = PVAnal(self.snd, size=size, overlaps=olaps, wintype=wintype)
+        self.tr1 = PVShift(self.fin, shift=self.shift1)
+        self.tr2 = PVShift(self.fin, shift=self.shift2)
+        self.fout1 = PVSynth(self.tr1, wintype=wintype)
+        self.fout2 = PVSynth(self.tr2, wintype=wintype)
+        self.fout = self.fout1 + self.fout2
         self.fade = SigTo(value=1, time=.05, init=1)
-        self.out = Sig(self.ffout*self.env, mul=self.fade)
+        self.out = Interp(self.delsrc*0.5, self.fout*0.4, self.mix, mul=self.fade*self.env)
 
     def fftsize(self, index, value):
         newsize = int(value)
         self.fade.value = 0
         time.sleep(.05)
+        self.delsrc.delay = newsize*self.oneOverSr
         self.fin.size = newsize
-        self.fout.size = newsize
+        time.sleep(.05)
+        self.fade.value = 1
+
+    def overlaps(self, index, value):
+        olaps = int(value)
+        self.fade.value = 0
+        time.sleep(.05)
+        self.fin.overlaps = olaps
         time.sleep(.05)
         self.fade.value = 1
 
@@ -56,12 +66,13 @@ class Module(BaseModule):
 
 Interface = [   csampler(name="snd"), 
                 cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue"),
-                cslider(name="gthresh", label="Gate Threshold", min=-120, max=0, init=-30, rel="lin", unit="db", col="orange"),
-                cslider(name="gatt", label="Gate Attenuation", min=-120, max=0, init=-120, rel="lin", unit="db", col="khaki"),
+                cslider(name="shift1", label="Shift 1", min=-8000, max=8000, init=250, rel="lin", unit="Hz", col="green1"),
+                cslider(name="shift2", label="Shift 2", min=-8000, max=8000, init=500, rel="lin", unit="Hz", col="green2"),
+                cslider(name="mix", label="Dry / Wet", min=0, max=1, init=0.5, rel="lin", unit="x", col="blue"),
                 cpopup(name="fftsize", label="FFT Size", init="1024", value=["16", "32", "64", "128", "256", "512", "1024", "2048", "4096", "8192"], col="red"),
                 cpopup(name="wtype", label="FFT Envelope", init="Hanning", col="red", value=["Rectangular", "Hamming", "Hanning", "Bartlett",
                             "Blackman 3", "Blackman 4", "Blackman 7", "Tuckey", "Sine"]),
-                cpopup(name="overlaps", label="FFT Overlaps", rate="i", init="4", value=["1", "2", "4", "8", "16"]),
+                cpopup(name="overlaps", label="FFT Overlaps", init="4", col="red", value=["1", "2", "4", "8", "16"]),
                 cpoly()
           ]
 
diff --git a/Resources/modules/Spectral/SpectralDelay.c5 b/Resources/modules/Spectral/SpectralDelay.c5
index 608df69..176b9df 100644
--- a/Resources/modules/Spectral/SpectralDelay.c5
+++ b/Resources/modules/Spectral/SpectralDelay.c5
@@ -1,23 +1,11 @@
 class Module(BaseModule):
     """
-    Spectral delay module (FFT)
+    Phase vocoder spectral delay
     
     Sliders under the graph:
     
-        - Bin Regions : Split points for FFT processing
-        - Band 1 Delay : Delay time applied on the first band
-        - Band 1 Amp : Gain of the delayed first band
-        - Band 2 Delay : Delay time applied on the second band
-        - Band 2 Amp : Gain of the delayed second band
-        - Band 3 Delay : Delay time applied on the third band
-        - Band 3 Amp : Gain of the delayed third band
-        - Band 4 Delay : Delay time applied on the fourth band
-        - Band 4 Amp : Gain of the delayed fourth band
-        - Band 5 Delay : Delay time applied on the fifth band
-        - Band 5 Amp : Gain of the delayed fifth band
-        - Band 6 Delay : Delay time applied on the sixth band
-        - Band 6 Amp : Gain of the delayed sixth band
-        - Feedback : Amount of delayed signal fed back in the delays (band independant)
+        - Max Delay : Maximum delay time per bin. Used to allocate memories.
+          only available at initialization time
         - Dry / Wet : Mix between the original signal and the delayed signals
     
     Dropdown menus, toggles and sliders on the bottom left:
@@ -25,90 +13,59 @@ class Module(BaseModule):
         - FFT Size : Size of the FFT
         - FFT Envelope : Shape of the FFT
         - FFT Overlaps : Number of FFT overlaps
-        - # of Voices : Number of voices played simultaneously (polyphony), only available at initialization time
-        - Polyphony Spread : Pitch variation between voices (chorus), only available at initialization time
+        - # of Voices : Number of voices played simultaneously (polyphony), 
+          only available at initialization time
+        - Polyphony Spread : Pitch variation between voices (chorus), 
+          only available at initialization time
         
     Graph only parameters :
     
-        - Overall Amplitude : The amplitude curve applied on the total duration of the performance
+        - Overall Amplitude : The amplitude curve applied on the total duration of the performance 
+        - Bin Delays : Controls the delay time for every bin, 
+          from left (low freq) to right (high freq) on the graph
+        - Bin Feedbacks : Controls the feedback factor for every bin, from left to right on the graph
+
     """
     def __init__(self):
         BaseModule.__init__(self)
         self.snd = self.addSampler("snd")
 
         self.size = int(self.fftsize_value)
-        olaps = int(self.overlaps_value)
+        self.olaps = int(self.overlaps_value)
         wintype = self.wtype_index
-        
-        self.num = olaps*self.nchnls # number of streams for ffts
         self.oneOverSr = 1.0 / self.sr
-        
-        self.delsrc = Delay(self.snd, delay=self.size*self.oneOverSr*2)
+        frames = int(self.maxd.get() * self.sr / (self.size / self.olaps))
 
-        binmin, binmax = self.getBinRegions()
+        self.dtab = DataTable(size=8192)
+        self.tabscl = TableScale(self.delays, self.dtab, mul=frames)
         
-        # delays conversion : number of frames -> seconds
-        delay_scale = (self.size/2) * self.oneOverSr
-        self.del1 = Sig(self.delay1, mul=delay_scale)
-        self.del2 = Sig(self.delay2, mul=delay_scale)
-        self.del3 = Sig(self.delay3, mul=delay_scale)
-        self.del4 = Sig(self.delay4, mul=delay_scale)
-        self.del5 = Sig(self.delay5, mul=delay_scale)
-        self.del6 = Sig(self.delay6, mul=delay_scale)
-        self.delays = self.duplicate([self.del1,self.del2,self.del3,self.del4,self.del5,self.del6], self.num)
-        self.amps = self.duplicate([DBToA(self.delay1amp),DBToA(self.delay2amp),DBToA(self.delay3amp),
-                                    DBToA(self.delay4amp),DBToA(self.delay5amp),DBToA(self.delay6amp)], self.num)
+        self.delsrc = Delay(self.snd, delay=self.size*self.oneOverSr)
 
-        self.fin = FFT(self.snd*0.5, size=self.size, overlaps=olaps, wintype=wintype)
+        self.fin = PVAnal(self.snd, size=self.size, overlaps=self.olaps, wintype=wintype)
+        self.dls = PVDelay(self.fin, self.dtab, self.feeds, maxdelay=self.maxd.get(), mode=1)
+        self.fout = PVSynth(self.dls, wintype=wintype, mul=self.env)
 
-        # splits regions between `binmins` and `binmaxs`
-        self.bins = Between(self.fin["bin"], min=binmin, max=binmax)
-        self.swre = self.fin["real"] * self.bins
-        self.swim = self.fin["imag"] * self.bins
-        # apply delays with mix to match `num` audio streams
-        self.delre = Delay(self.swre, delay=self.delays, feedback=self.feed, maxdelay=20, mul=self.amps).mix(self.num)
-        self.delim = Delay(self.swim, delay=self.delays, feedback=self.feed, maxdelay=20, mul=self.amps).mix(self.num)
-
-        self.fout = IFFT(self.delre, self.delim, size=self.size, overlaps=olaps, wintype=wintype)
-        self.ffout = self.fout.mix(self.nchnls)
         self.fade = SigTo(value=1, time=.05, init=1)
-        self.out = Interp(self.delsrc*self.env, self.ffout*self.env, self.mix, mul=self.fade)
-
-    def getBinRegions(self):
-        binscl = self.splitter.get(True)
-        binmin = [x for x in binscl]
-        binmin.insert(0, 0.0)
-        binmax = [x for x in binscl]
-        binmax.append(100.0)
-        binmin = self.duplicate([int(x * 0.01 * self.size / 2) for x in binmin], self.num)
-        binmax = self.duplicate([int(x * 0.01 * self.size / 2) for x in binmax], self.num)
-        return binmin, binmax
-        
-    def splitter_up(self, value):
-        binmin, binmax = self.getBinRegions()
-        self.bins.min = binmin
-        self.bins.max = binmax
+        self.out = Interp(self.delsrc*self.env, self.fout, self.mix, mul=self.fade)
 
     def fftsize(self, index, value):
         self.size = int(value)
-        delay_scale = (self.size/2) * self.oneOverSr
         self.fade.value = 0
         time.sleep(.05)
-        self.delsrc.delay = self.size*self.oneOverSr*2
-        self.del1.mul = delay_scale
-        self.del2.mul = delay_scale
-        self.del3.mul = delay_scale
-        self.del4.mul = delay_scale
-        self.del5.mul = delay_scale
-        self.del6.mul = delay_scale
-        self.delays = self.duplicate([self.del1,self.del2,self.del3,self.del4,self.del5,self.del6], self.num)
-        self.delre.delay = self.delays
-        self.delim.delay = self.delays
+        self.delsrc.delay = self.size*self.oneOverSr
         self.fin.size = self.size
-        self.fout.size = self.size
-        binmin, binmax = self.getBinRegions()
-        self.bins.min = binmin
-        self.bins.max = binmax
+        frames = int(self.maxd.get() * self.sr / (self.size / self.olaps))
+        self.tabscl.mul = frames
+        time.sleep(.05)
+        self.fade.value = 1
+
+    def overlaps(self, index, value):
+        self.olaps = int(value)
+        self.fade.value = 0
+        time.sleep(.05)
+        self.fin.overlaps = self.olaps
+        frames = int(self.maxd.get() * self.sr / (self.size / self.olaps))
+        self.tabscl.mul = frames
         time.sleep(.05)
         self.fade.value = 1
 
@@ -116,28 +73,19 @@ class Module(BaseModule):
         self.fin.wintype = index
         self.fout.wintype = index
 
+    def maxd_up(self, value):
+        pass
+
 Interface = [   csampler(name="snd"), 
                 cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue"),
-                csplitter(name="splitter", label="Bin regions", min=2, max=90, init=[5,15,30,50,75],
-                          num_knobs=5, res="int", rel="lin", up=True, unit="%", col="grey"),
-                cslider(name="delay1", label="Band 1 Delay", min=1, max=200, init=17, res="int", rel="lin", unit="x*siz", col="red",half=True),
-                cslider(name="delay1amp", label="Band 1 Amp", min=-90, max=18, init=0, rel="lin", unit="db", col="orange",half=True),
-                cslider(name="delay2", label="Band 2 Delay", min=0, max=200, init=14, res="int", rel="lin", unit="x*siz", col="red",half=True),
-                cslider(name="delay2amp", label="Band 2 Amp", min=-90, max=18, init=0, rel="lin", unit="db", col="orange",half=True),
-                cslider(name="delay3", label="Band 3 Delay", min=0, max=200, init=11, res="int", rel="lin", unit="x*siz", col="red",half=True),
-                cslider(name="delay3amp", label="Band 3 Amp", min=-90, max=18, init=0, rel="lin", unit="db", col="orange",half=True),
-                cslider(name="delay4", label="Band 4 Delay", min=0, max=200, init=8, res="int", rel="lin", unit="x*siz", col="red",half=True),
-                cslider(name="delay4amp", label="Band 4 Amp", min=-90, max=18, init=0, rel="lin", unit="db", col="orange",half=True),
-                cslider(name="delay5", label="Band 5 Delay", min=0, max=200, init=5, res="int", rel="lin", unit="x*siz", col="red",half=True),
-                cslider(name="delay5amp", label="Band 5 Amp", min=-90, max=18, init=0, rel="lin", unit="db", col="orange",half=True),
-                cslider(name="delay6", label="Band 6 Delay", min=0, max=200, init=2, res="int", rel="lin", unit="x*siz", col="red",half=True),
-                cslider(name="delay6amp", label="Band 6 Amp", min=-90, max=18, init=0, rel="lin", unit="db", col="orange",half=True),
-                cslider(name="feed", label="Feedback", min=0, max=1, init=0.5, rel="lin", unit="x", col="green"),
-                cslider(name="mix", label="Dry / Wet", min=0, max=1, init=0.5, rel="lin", unit="x", col="blue"),
+                cgraph(name="delays", label="Bin Delays", table=True, size=8192, func=[(0,0),(1,0.5)], col="green"),
+                cgraph(name="feeds", label="Bin Feedbacks", table=True, size=8192, func=[(0,0.25),(1,0.25)], col="orange"),
+                cslider(name="maxd", label="Max delay", min=0.1, max=20, init=5, rel="lin", unit="secs", up=True),
+                cslider(name="mix", label="Dry / Wet", min=0, max=1, init=1, rel="lin", unit="x", col="blue"),
                 cpopup(name="fftsize", label="FFT Size", init="1024", value=["64", "128", "256", "512", "1024", "2048", "4096", "8192"], col="red"),
                 cpopup(name="wtype", label="FFT Envelope", init="Hanning", col="red", value=["Rectangular", "Hamming", "Hanning", "Bartlett",
                             "Blackman 3", "Blackman 4", "Blackman 7", "Tuckey", "Sine"]),
-                cpopup(name="overlaps", label="FFT Overlaps", rate="i", init="4", value=["1", "2", "4", "8", "16"]),
+                cpopup(name="overlaps", label="FFT Overlaps", init="4", value=["1", "2", "4", "8", "16"]),
                 cpoly()
           ]
 
diff --git a/Resources/modules/Spectral/SpectralFilter.c5 b/Resources/modules/Spectral/SpectralFilter.c5
index d4a8989..fd19552 100644
--- a/Resources/modules/Spectral/SpectralFilter.c5
+++ b/Resources/modules/Spectral/SpectralFilter.c5
@@ -1,63 +1,59 @@
 class Module(BaseModule):
     """
-    Spectral filter module (FFT)
+    Spectral filter
     
     Sliders under the graph:
     
-        - Filters interpolation : Morph between the two filters
         - Dry / Wet : Mix between the original signal and the delayed signals
     
     Dropdown menus, toggles and sliders on the bottom left:
 
-        - Filter Range : Limits of the filter
         - FFT Size : Size of the FFT
         - FFT Envelope : Shape of the FFT
         - FFT Overlaps : Number of FFT overlaps
-        - # of Voices : Number of voices played simultaneously (polyphony), only available at initialization time
-        - Polyphony Spread : Pitch variation between voices (chorus), only available at initialization time
+        - # of Voices : Number of voices played simultaneously (polyphony), 
+          only available at initialization time
+        - Polyphony Spread : Pitch variation between voices (chorus), 
+          only available at initialization time
         
     Graph only parameters :
     
-        - Spectral Filter 1 : Shape of the first filter
-        - Spectral Filter 2 : Shape of the second filter
+        - Spectral Filter : Shape of the filter
         - Overall Amplitude : The amplitude curve applied on the total duration of the performance
+
     """
     def __init__(self):
         BaseModule.__init__(self)
         self.snd = self.addSampler("snd")
 
         size = int(self.fftsize_value)
-        olaps = 4
+        olaps = int(self.overlaps_value)
+        wintype = self.wtype_index
         self.oneOverSr = 1.0 / self.sr
-        self.frange_bounds = {0: 2, 1: 4, 2: 8, 3:16}
-
-        self.delsrc = Delay(self.snd, delay=size*self.oneOverSr*2)
 
-        self.filter = NewTable(8192./self.sr)
-        self.interpolation = TableMorph(self.interpol, self.filter, [self.filter_table_1, self.filter_table_2])
-        
-        self.fin = FFT(self.snd, size=size, overlaps=olaps)
+        self.delsrc = Delay(self.snd, delay=size*self.oneOverSr)
         
-        frange_bound = self.frange_bounds[self.filter_range_index]
-        self.index = Scale(self.fin["bin"], 0, size, 0, frange_bound, 1)
-        self.amp = Pointer(self.filter, Clip(self.index, 0, 1))
-        
-        self.real = self.fin["real"] * self.amp
-        self.imag = self.fin["imag"] * self.amp
+        self.fin = PVAnal(self.snd, size=size, overlaps=olaps, wintype=wintype)
+        self.filt = PVFilter(self.fin, self.filter_table, mode=1)
+        self.fout = PVSynth(self.filt, wintype=wintype, mul=self.env)
 
-        self.fout = IFFT(self.real, self.imag, size=size, overlaps=olaps)
-        self.ffout = self.fout.mix(self.nchnls)
         self.fade = SigTo(value=1, time=.05, init=1)
-        self.out = Interp(self.delsrc*self.env, self.ffout*self.env, self.mix, mul=self.fade)
-
+        self.out = Interp(self.delsrc*self.env, self.fout, self.mix, mul=self.fade)
+        
     def fftsize(self, index, value):
         newsize = int(value)
         self.fade.value = 0
         time.sleep(.05)
-        self.delsrc.delay = newsize*self.oneOverSr*2
+        self.delsrc.delay = newsize*self.oneOverSr
         self.fin.size = newsize
-        self.fout.size = newsize
-        self.index.inmax = newsize
+        time.sleep(.05)
+        self.fade.value = 1
+
+    def overlaps(self, index, value):
+        olaps = int(value)
+        self.fade.value = 0
+        time.sleep(.05)
+        self.fin.overlaps = olaps
         time.sleep(.05)
         self.fade.value = 1
 
@@ -65,23 +61,15 @@ class Module(BaseModule):
         self.fin.wintype = index
         self.fout.wintype = index
 
-    def filter_range(self, index, value):
-        self.index.outmax = self.frange_bounds[index]
-
 Interface = [   csampler(name="snd"), 
-                cgraph(name="filter_table_1", label="Spectral Filter 1", table=True, size=8192, 
+                cgraph(name="filter_table", label="Spectral Filter", table=True, size=8192, 
                        func=[(0,0),(0.05,1),(0.1,0),(0.2,0),(0.3,.7),(0.4,0),(0.5,0),(0.6,.5),(0.7,0),(1,0)], col="green"),
-               cgraph(name="filter_table_2", label="Spectral Filter 2", table=True, size=8192, 
-                      func=[(0,0),(0.02,1),(0.07,0),(0.25,0),(0.35,.7),(0.5,0),(0.65,0),(0.75,.5),(0.9,0),(1,0)], col="forestgreen"),
                 cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue"),
-                cslider(name="interpol", label="Filters interpolation", min=0, max=1, init=0, rel="lin", unit="x", col="olivegreen"),
                 cslider(name="mix", label="Dry / Wet", min=0, max=1, init=1, rel="lin", unit="x", col="blue"),
-                cpopup(name="filter_range", label="Filter Range", init="Up to Nyquist/2", 
-                       value=["Up to Nyquist", "Up to Nyquist/2", "Up to Nyquist/4", "Up to Nyquist/8"], col="green"),
                 cpopup(name="fftsize", label="FFT Size", init="1024", value=["16", "32", "64", "128", "256", "512", "1024", "2048", "4096", "8192"], col="red"),
                 cpopup(name="wtype", label="FFT Envelope", init="Hanning", col="red", value=["Rectangular", "Hamming", "Hanning", "Bartlett",
                             "Blackman 3", "Blackman 4", "Blackman 7", "Tuckey", "Sine"]),
-                cpopup(name="overlaps", label="FFT Overlaps", rate="i", init="4", value=["1", "2", "4", "8", "16"]),
+                cpopup(name="overlaps", label="FFT Overlaps", init="4", value=["1", "2", "4", "8", "16"]),
                 cpoly()
           ]
 
diff --git a/Resources/modules/Spectral/SpectralGate.c5 b/Resources/modules/Spectral/SpectralGate.c5
index 1fe31b5..6752e42 100644
--- a/Resources/modules/Spectral/SpectralGate.c5
+++ b/Resources/modules/Spectral/SpectralGate.c5
@@ -1,24 +1,26 @@
 class Module(BaseModule):
     """
-    Spectral gate module (FFT)
+    Spectral gate (each bin is processed independently)
     
     Sliders under the graph:
     
         - Gate Threshold : dB value at which the gate becomes active
         - Gate Attenuation : Gain in dB of the gated signal
-        - Dry / Wet : Mix between the original signal and the delayed signals
     
     Dropdown menus, toggles and sliders on the bottom left:
 
         - FFT Size : Size of the FFT
         - FFT Envelope : Shape of the FFT
         - FFT Overlaps : Number of FFT overlaps
-        - # of Voices : Number of voices played simultaneously (polyphony), only available at initialization time
-        - Polyphony Spread : Pitch variation between voices (chorus), only available at initialization time
+        - # of Voices : Number of voices played simultaneously (polyphony), 
+          only available at initialization time
+        - Polyphony Spread : Pitch variation between voices (chorus), 
+          only available at initialization time
         
     Graph only parameters :
     
         - Overall Amplitude : The amplitude curve applied on the total duration of the performance
+
     """
     def __init__(self):
         BaseModule.__init__(self)
@@ -28,25 +30,26 @@ class Module(BaseModule):
         olaps = int(self.overlaps_value)
         wintype = self.wtype_index
 
-        self.fin = FFT(self.snd*0.5, size=size, overlaps=olaps, wintype=wintype)
-
-        self.pol = CarToPol(self.fin["real"], self.fin["imag"])
-        self.amp = Compare(self.pol["mag"]*50, DBToA(self.gthresh), ">")
-        self.att = DBToA(self.gatt)
-        self.scl = self.amp * (1 - self.att) + self.att
-        self.car = PolToCar(self.pol["mag"]*self.scl, self.pol["ang"])
+        self.fin = PVAnal(self.snd, size=size, overlaps=olaps, wintype=wintype)
+        self.gate = PVGate(self.fin, thresh=self.gthresh, damp=DBToA(self.gatt))
+        self.fout = PVSynth(self.gate, wintype=wintype, mul=self.env)
 
-        self.fout = IFFT(self.car["real"], self.car["imag"], size=size, overlaps=olaps, wintype=wintype)
-        self.ffout = self.fout.mix(self.nchnls)
         self.fade = SigTo(value=1, time=.05, init=1)
-        self.out = Sig(self.ffout*self.env, mul=self.fade)
+        self.out = Sig(self.fout, mul=self.fade)
 
     def fftsize(self, index, value):
         newsize = int(value)
         self.fade.value = 0
         time.sleep(.05)
         self.fin.size = newsize
-        self.fout.size = newsize
+        time.sleep(.05)
+        self.fade.value = 1
+
+    def overlaps(self, index, value):
+        olaps = int(value)
+        self.fade.value = 0
+        time.sleep(.05)
+        self.fin.overlaps = olaps
         time.sleep(.05)
         self.fade.value = 1
 
@@ -61,7 +64,7 @@ Interface = [   csampler(name="snd"),
                 cpopup(name="fftsize", label="FFT Size", init="1024", value=["16", "32", "64", "128", "256", "512", "1024", "2048", "4096", "8192"], col="red"),
                 cpopup(name="wtype", label="FFT Envelope", init="Hanning", col="red", value=["Rectangular", "Hamming", "Hanning", "Bartlett",
                             "Blackman 3", "Blackman 4", "Blackman 7", "Tuckey", "Sine"]),
-                cpopup(name="overlaps", label="FFT Overlaps", rate="i", init="4", value=["1", "2", "4", "8", "16"]),
+                cpopup(name="overlaps", label="FFT Overlaps", init="4", col="red", value=["1", "2", "4", "8", "16"]),
                 cpoly()
           ]
 
diff --git a/Resources/modules/Spectral/SpectralWarper.c5 b/Resources/modules/Spectral/SpectralWarper.c5
new file mode 100644
index 0000000..1c067d3
--- /dev/null
+++ b/Resources/modules/Spectral/SpectralWarper.c5
@@ -0,0 +1,56 @@
+class Module(BaseModule):
+    """
+    Phase vocoder buffer and playback with transposition.
+    
+    Sliders under the graph:
+    
+        - Position : Normalized position (0 -> 1) inside the recorded PV buffer.
+          Buffer length is the same as the sound duration.
+        - Transposition : Pitch of the playback sound.
+    
+    Dropdown menus, toggles and sliders on the bottom left:
+
+        - FFT Size : Size of the FFT
+        - FFT Envelope : Shape of the FFT
+        - FFT Overlaps : Number of FFT overlaps
+        - # of Voices : Number of voices played simultaneously (polyphony), 
+          only available at initialization time
+        - Polyphony Spread : Pitch variation between voices (chorus), 
+          only available at initialization time
+        
+    Graph only parameters :
+    
+        - Overall Amplitude : The amplitude curve applied on the total duration of the performance
+
+    """
+    def __init__(self):
+        BaseModule.__init__(self)
+        self.snd = self.addSampler("snd")
+        snddur = self.getSamplerDur("snd")
+
+        size = int(self.fftsize_value)
+        olaps = int(self.overlaps_value)
+        wintype = self.wtype_index
+
+        self.fin = PVAnal(self.snd, size=size, overlaps=olaps, wintype=wintype)
+        self.buf = PVBuffer(self.fin, self.pos, CentsToTranspo(self.pitch), length=snddur)
+        self.fout = PVSynth(self.buf, wintype=wintype, mul=self.env)
+
+        self.fade = SigTo(value=1, time=.05, init=1)
+        self.out = Sig(self.fout, mul=self.fade)
+
+    def wtype(self, index, value):
+        self.fin.wintype = index
+        self.fout.wintype = index
+
+Interface = [   csampler(name="snd"), 
+                cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue"),
+                cslider(name="pos", label="Position", min=0, max=1, init=0, func=[(0,0), (1,1)], rel="lin", unit="x", col="green"),
+                cslider(name="pitch", label="Transposition", min=-2400, max=2400, init=0, rel="lin", unit="cts", col="blue"),
+                cpopup(name="fftsize", label="FFT Size", init="1024", rate="i", value=["16", "32", "64", "128", "256", "512", "1024", "2048", "4096", "8192"], col="red"),
+                cpopup(name="wtype", label="FFT Envelope", init="Hanning", col="red", value=["Rectangular", "Hamming", "Hanning", "Bartlett",
+                            "Blackman 3", "Blackman 4", "Blackman 7", "Tuckey", "Sine"]),
+                cpopup(name="overlaps", label="FFT Overlaps", rate="i", init="4", col="red", value=["1", "2", "4", "8", "16"]),
+                cpoly()
+          ]
+
diff --git a/Resources/modules/Spectral/SpectralGate.c5 b/Resources/modules/Spectral/Transpose.c5
similarity index 52%
copy from Resources/modules/Spectral/SpectralGate.c5
copy to Resources/modules/Spectral/Transpose.c5
index 1fe31b5..fced002 100644
--- a/Resources/modules/Spectral/SpectralGate.c5
+++ b/Resources/modules/Spectral/Transpose.c5
@@ -1,11 +1,11 @@
 class Module(BaseModule):
     """
-    Spectral gate module (FFT)
+    Two voices transposer
     
     Sliders under the graph:
     
-        - Gate Threshold : dB value at which the gate becomes active
-        - Gate Attenuation : Gain in dB of the gated signal
+        - Transpo 1 : Transposition factor of the first voice
+        - Transpo 2 : Transposition factor of the second voice
         - Dry / Wet : Mix between the original signal and the delayed signals
     
     Dropdown menus, toggles and sliders on the bottom left:
@@ -13,12 +13,15 @@ class Module(BaseModule):
         - FFT Size : Size of the FFT
         - FFT Envelope : Shape of the FFT
         - FFT Overlaps : Number of FFT overlaps
-        - # of Voices : Number of voices played simultaneously (polyphony), only available at initialization time
-        - Polyphony Spread : Pitch variation between voices (chorus), only available at initialization time
+        - # of Voices : Number of voices played simultaneously (polyphony), 
+          only available at initialization time
+        - Polyphony Spread : Pitch variation between voices (chorus), 
+          only available at initialization time
         
     Graph only parameters :
     
         - Overall Amplitude : The amplitude curve applied on the total duration of the performance
+
     """
     def __init__(self):
         BaseModule.__init__(self)
@@ -27,26 +30,33 @@ class Module(BaseModule):
         size = int(self.fftsize_value)
         olaps = int(self.overlaps_value)
         wintype = self.wtype_index
+        self.oneOverSr = 1.0 / self.sr
 
-        self.fin = FFT(self.snd*0.5, size=size, overlaps=olaps, wintype=wintype)
-
-        self.pol = CarToPol(self.fin["real"], self.fin["imag"])
-        self.amp = Compare(self.pol["mag"]*50, DBToA(self.gthresh), ">")
-        self.att = DBToA(self.gatt)
-        self.scl = self.amp * (1 - self.att) + self.att
-        self.car = PolToCar(self.pol["mag"]*self.scl, self.pol["ang"])
+        self.delsrc = Delay(self.snd, delay=size*self.oneOverSr)
 
-        self.fout = IFFT(self.car["real"], self.car["imag"], size=size, overlaps=olaps, wintype=wintype)
-        self.ffout = self.fout.mix(self.nchnls)
+        self.fin = PVAnal(self.snd, size=size, overlaps=olaps, wintype=wintype)
+        self.tr1 = PVTranspose(self.fin, transpo=CentsToTranspo(self.transpo1))
+        self.tr2 = PVTranspose(self.fin, transpo=CentsToTranspo(self.transpo2))
+        self.fout1 = PVSynth(self.tr1, wintype=wintype)
+        self.fout2 = PVSynth(self.tr2, wintype=wintype)
+        self.fout = self.fout1 + self.fout2
         self.fade = SigTo(value=1, time=.05, init=1)
-        self.out = Sig(self.ffout*self.env, mul=self.fade)
+        self.out = Interp(self.delsrc*0.5, self.fout*0.4, self.mix, mul=self.fade*self.env)
 
     def fftsize(self, index, value):
         newsize = int(value)
         self.fade.value = 0
         time.sleep(.05)
+        self.delsrc.delay = newsize*self.oneOverSr
         self.fin.size = newsize
-        self.fout.size = newsize
+        time.sleep(.05)
+        self.fade.value = 1
+
+    def overlaps(self, index, value):
+        olaps = int(value)
+        self.fade.value = 0
+        time.sleep(.05)
+        self.fin.overlaps = olaps
         time.sleep(.05)
         self.fade.value = 1
 
@@ -56,12 +66,13 @@ class Module(BaseModule):
 
 Interface = [   csampler(name="snd"), 
                 cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue"),
-                cslider(name="gthresh", label="Gate Threshold", min=-120, max=0, init=-30, rel="lin", unit="db", col="orange"),
-                cslider(name="gatt", label="Gate Attenuation", min=-120, max=0, init=-120, rel="lin", unit="db", col="khaki"),
+                cslider(name="transpo1", label="Transpo 1", min=-2400, max=2400, init=-200, rel="lin", unit="cts", col="green1"),
+                cslider(name="transpo2", label="Transpo 2", min=-2400, max=2400, init=300, rel="lin", unit="cts", col="green2"),
+                cslider(name="mix", label="Dry / Wet", min=0, max=1, init=0.5, rel="lin", unit="x", col="blue"),
                 cpopup(name="fftsize", label="FFT Size", init="1024", value=["16", "32", "64", "128", "256", "512", "1024", "2048", "4096", "8192"], col="red"),
                 cpopup(name="wtype", label="FFT Envelope", init="Hanning", col="red", value=["Rectangular", "Hamming", "Hanning", "Bartlett",
                             "Blackman 3", "Blackman 4", "Blackman 7", "Tuckey", "Sine"]),
-                cpopup(name="overlaps", label="FFT Overlaps", rate="i", init="4", value=["1", "2", "4", "8", "16"]),
+                cpopup(name="overlaps", label="FFT Overlaps", init="4", col="red", value=["1", "2", "4", "8", "16"]),
                 cpoly()
           ]
 
diff --git a/Resources/modules/Spectral/Vectral.c5 b/Resources/modules/Spectral/Vectral.c5
index 57092f9..9e4ade5 100644
--- a/Resources/modules/Spectral/Vectral.c5
+++ b/Resources/modules/Spectral/Vectral.c5
@@ -1,14 +1,12 @@
 class Module(BaseModule):
     """
-    Vectral module (FFT)
+    Vectral module (spectral gate+verb)
     
     Sliders under the graph:
     
         - Gate Threshold : dB value at which the gate becomes active
         - Gate Attenuation : Gain in dB of the gated signal
-        - Upward Time Factor : Filter coefficient for increasing bins
-        - Downward Time Factor : Filter coefficient for decreasing bins
-        - Phase Time Factor : Phase blur
+        - Time Factor : Filter coefficient for decreasing bins
         - High Freq Damping : High frequencies damping factor
         - Dry / Wet : Mix between the original signal and the delayed signals
     
@@ -17,57 +15,49 @@ class Module(BaseModule):
         - FFT Size : Size of the FFT
         - FFT Envelope : Shape of the FFT
         - FFT Overlaps : Number of FFT overlaps
-        - # of Voices : Number of voices played simultaneously (polyphony), only available at initialization time
-        - Polyphony Spread : Pitch variation between voices (chorus), only available at initialization time
+        - # of Voices : Number of voices played simultaneously (polyphony), 
+          only available at initialization time
+        - Polyphony Spread : Pitch variation between voices (chorus), 
+          only available at initialization time
         
     Graph only parameters :
     
         - Overall Amplitude : The amplitude curve applied on the total duration of the performance
+
     """
     def __init__(self):
         BaseModule.__init__(self)
         self.snd = self.addSampler("snd")
 
-        chnls = self.nchnls
-        size = 1024
-        olaps = 4
-        num = olaps*chnls # number of streams for ffts
+        size = int(self.fftsize_value)
+        olaps = int(self.overlaps_value)
+        wintype = self.wtype_index
         self.oneOverSr = 1.0 / self.sr
 
-        self.delsrc = Delay(self.snd, delay=size*self.oneOverSr*2)
-
-        self.fin = FFT(self.snd*0.5, size=size, overlaps=olaps)
-
-        self.pol = CarToPol(self.fin["real"], self.fin["imag"])
-        self.amp = Compare(self.pol["mag"]*50, DBToA(self.gthresh), ">")
-        self.att = DBToA(self.gatt)
-        self.scl = self.amp * (1 - self.att) + self.att
-
-        self.mag = Vectral(self.pol["mag"]*self.scl, framesize=size, overlaps=olaps, 
-                           down=self.downfac, up=self.upfac, damp=self.damp)
-
-        self.delta = FrameDelta(self.pol["ang"], framesize=size, overlaps=olaps)
-        self.ang = Vectral(self.delta, framesize=size, overlaps=olaps, up=self.anglefac, down=self.anglefac)
-        self.accum = FrameAccum(self.ang, framesize=size, overlaps=olaps)
+        self.delsrc = Delay(self.snd, delay=size*self.oneOverSr)
 
-        self.car = PolToCar(self.mag, self.accum)
+        self.fin = PVAnal(self.snd, size=size, overlaps=olaps, wintype=wintype)
+        self.gate = PVGate(self.fin, self.gthresh, DBToA(self.gatt))
+        self.vect = PVVerb(self.gate, self.downfac, self.damp)
+        self.fout = PVSynth(self.vect, wintype=wintype, mul=self.env)
 
-        self.fout = IFFT(self.car["real"], self.car["imag"], size=size, overlaps=olaps)
-        self.ffout = self.fout.mix(chnls)
         self.fade = SigTo(value=1, time=.05, init=1)
-        self.out = Interp(self.delsrc*self.env, self.ffout*self.env, self.mix, mul=self.fade)
+        self.out = Interp(self.delsrc*self.env, self.fout, self.mix, mul=self.fade)
 
     def fftsize(self, index, value):
         newsize = int(value)
         self.fade.value = 0
         time.sleep(.05)
-        self.delsrc.delay = newsize*self.oneOverSr*2
+        self.delsrc.delay = newsize*self.oneOverSr
         self.fin.size = newsize
-        self.mag.framesize = newsize
-        self.delta.framesize = newsize
-        self.ang.framesize = newsize
-        self.accum.framesize = newsize
-        self.fout.size = newsize
+        time.sleep(.05)
+        self.fade.value = 1
+
+    def overlaps(self, index, value):
+        olaps = int(value)
+        self.fade.value = 0
+        time.sleep(.05)
+        self.fin.overlaps = olaps
         time.sleep(.05)
         self.fade.value = 1
 
@@ -79,15 +69,13 @@ Interface = [   csampler(name="snd"),
                 cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue"),
                 cslider(name="gthresh", label="Gate Threshold", min=-120, max=0, init=-30, rel="lin", unit="db", col="red"),
                 cslider(name="gatt", label="Gate Attenuation", min=-120, max=0, init=-120, rel="lin", unit="db", col="red"),
-                cslider(name="upfac", label="Upward Time Factor", min=0, max=1, init=0.5, rel="lin", unit="x", col="orange"),
-                cslider(name="downfac", label="Downward Time Factor", min=0, max=1, init=0.3, rel="lin", unit="x", col="orange"),
-                cslider(name="anglefac", label="Phase Time Factor", min=0, max=1, init=0.1, rel="lin", unit="x", col="orange"),
+                cslider(name="downfac", label="Time Factor", min=0, max=1, init=0.3, rel="lin", unit="x", col="orange"),
                 cslider(name="damp", label="High Freq Damping", min=0, max=1, init=0.9, rel="lin", unit="x", col="green"),
                 cslider(name="mix", label="Dry / Wet", min=0, max=1, init=1, rel="lin", unit="x", col="blue"),
                 cpopup(name="fftsize", label="FFT Size", init="1024", value=["16", "32", "64", "128", "256", "512", "1024", "2048", "4096", "8192"], col="red"),
                 cpopup(name="wtype", label="FFT Envelope", init="Hanning", col="red", value=["Rectangular", "Hamming", "Hanning", "Bartlett",
                             "Blackman 3", "Blackman 4", "Blackman 7", "Tuckey", "Sine"]),
-                cpopup(name="overlaps", label="FFT Overlaps", rate="i", init="4", value=["1", "2", "4", "8", "16"]),
+                cpopup(name="overlaps", label="FFT Overlaps", init="4", value=["1", "2", "4", "8", "16"]),
                 cpoly()
           ]
 
diff --git a/Resources/modules/Synthesis/AdditiveSynth.c5 b/Resources/modules/Synthesis/AdditiveSynth.c5
index c4b801b..029b7ab 100644
--- a/Resources/modules/Synthesis/AdditiveSynth.c5
+++ b/Resources/modules/Synthesis/AdditiveSynth.c5
@@ -32,10 +32,11 @@ class Module(BaseModule):
         BaseModule.__init__(self)
         self.customtable = self.custom_value
         self.wavetable = HarmTable(size=8192)
-        self.polyfreqs = [random.uniform(1.0-self.polyphony_spread, 1.0+self.polyphony_spread) for i in range(self.number_of_voices*2)]
-        self.ply = [i*self.freq for i in self.polyfreqs]
-        self.out = OscBank(table=self.wavetable, freq=self.ply, spread=self.spread, slope=self.ampfactor, fjit=True, 
-                            frndf=self.rndampspeedf, frnda=self.rndampf, arndf=self.rndampspeed, arnda=self.rndamp, num=int(self.num_value), mul=self.env)
+        self.polyfreqs = self.polyphony_spread
+        self.ply = [i*self.freq for i in self.polyfreqs for j in range(self.nchnls)]
+        self.out = OscBank(table=self.wavetable, freq=self.ply, spread=self.spread, slope=self.ampfactor, 
+                            fjit=True, frndf=self.rndampspeedf, frnda=self.rndampf, arndf=self.rndampspeed, 
+                            arnda=self.rndamp, num=int(self.num_value), mul=self.polyphony_scaling*self.env)
 
         #INIT
         self.wavedict = {'Sine':[1], 'Sawtooth':[1, 0.5, 0.333, 0.25, 0.2, 0.167, 0.143, 0.111, 0.1], 'Square':[1, 0, 0.333, 0, 0.2, 0, 0.143, 0, 0.111],
diff --git a/Resources/modules/Synthesis/Pulsar.c5 b/Resources/modules/Synthesis/Pulsar.c5
index b78688c..5a07057 100644
--- a/Resources/modules/Synthesis/Pulsar.c5
+++ b/Resources/modules/Synthesis/Pulsar.c5
@@ -24,47 +24,46 @@ class Module(BaseModule):
     """
     def __init__(self):
         BaseModule.__init__(self)
-        self.src = self.addFilein("src")
-        self.window_size = self.wsize_value
-        index = int(self.srcindex.get() * self.src.getSize(False))
-        samples = [self.src[i].getTable()[index:index+int(self.window_size)] for i in range(self.nchnls)]
-        self.t = DataTable(size=len(samples[0]), chnls=len(samples), init=samples)
-        self.e = WinTable(type=self.wtype_index, size=8192)
+        self.customtable = self.custom_value
+        self.wavetable = HarmTable(size=8192)
+        self.wind = WinTable(type=self.wtype_index, size=8192)
         self.rnd1 = Randi(min=1-self.detune, max=1+self.detune, freq=self.detunesp)
         self.rnd2 = Randi(min=1-self.detune, max=1+self.detune, freq=self.detunesp)
-        self.polyfreqs = [random.uniform(1.0-self.polyphony_spread, 1.0+self.polyphony_spread) for i in range(self.number_of_voices)]
+        self.polyfreqs = self.polyphony_spread
         self.ply1 = [self.bfreq*i*self.rnd1 for i in self.polyfreqs]
         self.ply2 = [self.bfreq*i*self.rnd2 for i in self.polyfreqs]
-        self.ply3 = [self.bfreq*i for i in self.polyfreqs]
-        self.pfreqs = self.ply3+self.ply1+self.ply2+self.ply3
-        self.out = Pulsar(self.t, self.e, freq=self.pfreqs, frac=self.width, phase=0, interp=2, mul=0.3*self.env)
-   
+        self.ply3 = [self.bfreq*i for i in self.polyfreqs for j in range(self.nchnls)]
+        self.pfreqs = self.ply3+self.ply1+self.ply2
+        self.pul = Pulsar(self.wavetable, self.wind, freq=self.pfreqs, frac=self.width, 
+                          phase=0, interp=4, mul=0.1*self.polyphony_scaling*self.env)
+        self.out = Mix(self.pul, voices=self.nchnls)
+
+        #INIT
+        self.wavedict = {'Sine':[1], 'Sawtooth':[1, 0.5, 0.333, 0.25, 0.2, 0.167, 0.143, 0.111, 0.1], 'Square':[1, 0, 0.333, 0, 0.2, 0, 0.143, 0, 0.111],
+                            'Complex1':[1, 0, 0, 0, 0.3, 0, 0, 0, 0.2, 0, 0, 0.05], 'Complex2':[1, 0, 0, 0.3, 0, 0, 0.2, 0, 0, 0, 0, 0.1, 0, 0, 0.05, 0, 0, 0.02],
+                            'Complex3':[1, 0, 0, 0.2, 0, 0.1, 0, 0, 0, 0.3, 0, 0.1, 0, 0, 0.05, 0, 0, 0.1, 0, 0.05, 0, 0, 0, 0.05, 0, 0, 0.02],
+                            'Custom':self.customtable}
+
+        self.shape(self.shape_index, self.shape_value)
+
+    def shape(self, index, value):
+        self.wavetable.replace(self.wavedict[value])
+
+    def custom(self, value):
+        self.customtable = value
+
     def wtype(self, index, value):
-        self.e.type = index
+        self.wind.type = index
 
-    def wsize(self, index, value):
-        self.window_size = value
-        index = int(self.srcindex.get() * self.src.getSize(False))
-        samples = [self.src[i].getTable()[index:index+int(value)] for i in range(self.nchnls)]
-        self.t = DataTable(size=len(samples[0]), chnls=len(samples), init=samples)
-        self.out.table = self.t
-    
-    def srcindex_up(self, value):
-        index = int(value * self.src.getSize(False))
-        samples = [self.src[i].getTable()[index:index+int(self.window_size)] for i in range(self.nchnls)]
-        self.t = DataTable(size=len(samples[0]), chnls=len(samples), init=samples)
-        self.out.table = self.t
-        
-Interface = [   cfilein(name="src", label="Sound Source"),
-                cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue"),
-                cslider(name="bfreq", label="Base Frequency", min=0.1, max=1000, init=20, rel="log", unit="Hz", col="blue"),
-                cslider(name="width", label="Pulsar Width", min=0.0001, max=1, init=0.18, rel="lin", unit="x", col="lightgreen"),
+Interface = [   cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue"),
+                cslider(name="bfreq", label="Base Frequency", min=0.1, max=1000, init=100, rel="log", unit="Hz", col="blue"),
+                cslider(name="width", label="Pulsar Width", min=0.01, max=1, init=0.5, rel="lin", unit="x", col="lightgreen"),
                 cslider(name="detune", label="Detune Factor", min=0.0001, max=0.999, init=0.005, rel="log", unit="x", col="red"),
                 cslider(name="detunesp", label="Detune Speed", min=0.0001, max=100, init=0.3, rel="log", unit="Hz", col="red"),
-                cslider(name="srcindex", label="Source Index", min=0., max=1., init=0., rel="lin", unit="x", up=True, col="red"),
-                cpopup(name="wsize", label="Window Size", init="512", col="green1", value=["32", "64", "128", "256", "512", "1024", "2048", "4092", "8096", "16384","32768"]),
                 cpopup(name="wtype", label="Window Type", init="Tuckey", col="chorusyellow", value=["Rectangular", "Hamming", "Hanning", 
                             "Bartlett", "Blackman 3", "Blackman 4", "Blackman 7", "Tuckey", "Sine"]),
+                cpopup(name="shape", label="Wave Shape", init="Sine", col="green", value=["Sine","Sawtooth","Square","Complex1", "Complex2", "Complex3", "Custom"]),
+                cgen(name="custom", label="Custom Wave", init=[1,0,0.5,0.3,0,0,0.2,0,0.1,0,0.09,0,0.05], popup=("shape", 6), col="forestgreen"),
                 cpoly()
           ]
 
diff --git a/Resources/modules/Time/BeatMaker.c5 b/Resources/modules/Time/BeatMaker.c5
index 38ab033..8340c55 100644
--- a/Resources/modules/Time/BeatMaker.c5
+++ b/Resources/modules/Time/BeatMaker.c5
@@ -18,11 +18,6 @@ class Module(BaseModule):
         - Beat 3 Gain : Gain of the third beat
         - Global Seed : Seed value for the algorithmic beats, using the same seed with the same distributions will yield the exact same beats
         
-    Dropdown menus, toggles and sliders on the bottom left:
-
-        - # of Voices : Number of voices played simultaneously (polyphony), only available at initialization time
-        - Polyphony Spread : Pitch variation between voices (chorus), only available at initialization time
-        
     Graph only parameters :
     
         - Beat 1 ADSR : Envelope of taps for the first beat in breakpoint fashion
@@ -62,10 +57,7 @@ class Module(BaseModule):
         self.pointer3 = Pointer(table=self.snd, index=self.linseg3, mul=self.tre3*self.again3)
         self.pointer4 = Pointer(table=self.snd, index=self.linseg4, mul=self.tre4*self.again4)
         self.mixx = self.pointer1+self.pointer2+self.pointer3+self.pointer4
-        self.sig = Sig(self.mixx, mul=self.env).mix(self.nchnls)
-        self.chorusd = Scale(input=Sig(self.polyphony_spread), inmin=0.0001, inmax=0.5, outmin=0, outmax=5)
-        self.chorusb = Scale(input=Sig(self.number_of_voices), inmin=1, inmax=10, outmin=0, outmax=1)
-        self.out = Chorus(input=self.sig, depth=self.chorusd, feedback=0.25, bal=self.chorusb)
+        self.out = Sig(self.mixx, mul=self.env).mix(self.nchnls)
 
         self.trigend = TrigFunc(self.beat1["end"], self.newdist)
 
@@ -189,5 +181,4 @@ Interface = [   cfilein(name="snd", label="Audio"),
                 cslider(name="gain4", label="Beat 4 Gain", min=-48, max=18, init=0, rel="lin", unit="dB", col="chorusyellow",half=True),
                 cslider(name="we4", label="Beat 4 Distribution", min=0, max=100, init=10, rel="lin",  res="int", unit="%", col="red3",half=True),
                 cslider(name="seed", label="Global seed", min=0, max=5000, init=0, rel="lin", res="int", unit="x", up=True),
-                cpoly()
           ]
diff --git a/Resources/modules/Time/Granulator.c5 b/Resources/modules/Time/Granulator.c5
index 39b9edb..f38a4ca 100644
--- a/Resources/modules/Time/Granulator.c5
+++ b/Resources/modules/Time/Granulator.c5
@@ -27,7 +27,7 @@ class Module(BaseModule):
         BaseModule.__init__(self)
         self.amp_scl = Map(200, 1, "lin")
         firstamp = self.amp_scl.set(self.num.get())
-        pitrnds = [random.uniform(1.0-self.polyphony_spread, 1.0+self.polyphony_spread) for i in range(self.number_of_voices*2)]
+        pitrnds = self.polyphony_spread * self.nchnls
         self.t = self.addFilein("sndtable")
         self.posr = Noise(self.posrnd*self.t.getSize(False))
         self.pitr = Noise(self.pitrnd, add=1)
@@ -36,7 +36,7 @@ class Module(BaseModule):
         self.pospos = Sig(self.pos, mul=self.t.getSize(False), add=self.posr)
         self.gr = Granulator(self.t, self.grainenv, pitch=self.pitch, pos=self.pospos, dur=self.dur.get()*self.pitr*self.discr, 
                             grains=int(self.num.get()), basedur=self.dur.get(), mul=self.env* 0.1 * firstamp)
-        self.gro = Biquadx(self.gr, freq=self.cut, q=self.filterq, type=self.filttype_index, stages=2)
+        self.gro = Biquadx(self.gr, freq=self.cut, q=self.filterq, type=self.filttype_index, stages=2, mul=self.polyphony_scaling)
 
 
         self.osc = Sine(10000,mul=.1)
diff --git a/Resources/modules/Time/Granulator.c5 b/Resources/modules/Time/Pelletizer.c5
similarity index 63%
copy from Resources/modules/Time/Granulator.c5
copy to Resources/modules/Time/Pelletizer.c5
index 39b9edb..dc8a347 100644
--- a/Resources/modules/Time/Granulator.c5
+++ b/Resources/modules/Time/Pelletizer.c5
@@ -1,16 +1,20 @@
 import random
 class Module(BaseModule):
     """
-    Granulator module
+    Another granulator module
     
     Sliders under the graph:
     
         - Transpose : Base pitch of the grains
+        - Density of grains : Number of grains per second
         - Grain Position : Soundfile index
+        - Grain Duration : Duration of the grain in seconds
+        - Pitch Random : Jitter applied on the pitch of the grains
+        - Density Random : Jitter applied on the density
         - Position Random : Jitter applied on the soundfile index
-        - Pitch Random : Jitter applied on the pitch of the grains using the discreet transpo list
-        - Grain Duration : Length of the grains
-        - # of Grains : Number of grains
+        - Duration Random : Jitter applied on the duration of the grain
+        - Filter Freq : Frequency of the filter (post-processing)
+        - Filter Q : Q of the filter
     
     Dropdown menus, toggles and sliders on the bottom left:
 
@@ -25,24 +29,23 @@ class Module(BaseModule):
     """
     def __init__(self):
         BaseModule.__init__(self)
-        self.amp_scl = Map(200, 1, "lin")
-        firstamp = self.amp_scl.set(self.num.get())
-        pitrnds = [random.uniform(1.0-self.polyphony_spread, 1.0+self.polyphony_spread) for i in range(self.number_of_voices*2)]
+        pitrnds = self.polyphony_spread * self.nchnls
         self.t = self.addFilein("sndtable")
+        self.drng = self.densrnd*self.dens
+        self.densr = Randi(-self.drng, self.drng, freq=.2, add=self.dens)
         self.posr = Noise(self.posrnd*self.t.getSize(False))
-        self.pitr = Noise(self.pitrnd, add=1)
+        self.pitr = Noise(self.pitrnd, add=pitrnds)
         self.discr = Choice(choice=self.discreet_value, freq=250)
-        self.pitch = CentsToTranspo(self.transp, mul=pitrnds)
+        self.pitch = CentsToTranspo(self.transp, mul=self.pitr)
         self.pospos = Sig(self.pos, mul=self.t.getSize(False), add=self.posr)
-        self.gr = Granulator(self.t, self.grainenv, pitch=self.pitch, pos=self.pospos, dur=self.dur.get()*self.pitr*self.discr, 
-                            grains=int(self.num.get()), basedur=self.dur.get(), mul=self.env* 0.1 * firstamp)
-        self.gro = Biquadx(self.gr, freq=self.cut, q=self.filterq, type=self.filttype_index, stages=2)
-
+        self.durr = Noise(self.durrnd*self.dur, add=self.dur)
+        self.gr = Granule(self.t, self.grainenv, dens=self.densr, pitch=self.pitch*self.discr, pos=self.pospos, dur=self.durr, 
+                          mul=self.env* 0.1)
+        self.gro = Biquadx(self.gr, freq=self.cut, q=self.filterq, type=self.filttype_index, stages=2, mul=self.polyphony_scaling)
 
         self.osc = Sine(10000,mul=.1)
         self.balanced = Balance(self.gro, self.osc, freq=10)
         self.out = Interp(self.gro, self.balanced)
-
 #INIT
         self.balance(self.balance_index, self.balance_value)
 
@@ -74,15 +77,17 @@ class Module(BaseModule):
 Interface = [   cfilein(name="sndtable", label="Audio"),
                 cgraph(name="env", label="Overall Amplitude", func=[(0,1),(1,1)], col="blue"),
                 cgraph(name="grainenv", label="Grain Envelope", func=[(0,0),(0.5,1),(1,0)], table=True, curved=True, col="chorusyellow"),
-                cslider(name="transp", label="Transpose", min=-4800, max=4800, init=0, rel="lin", unit="cnts", col="green"),
-                cslider(name="pos", label="Grain Position", min=0, max=1, init=0, func=[(0,0),(1,1)], rel="lin", unit="x", col="blue"),
-                cslider(name="posrnd", label="Position Random", min=0, max=0.5, init=0.005, rel="lin", unit="x", col="red3",half=True),
-                cslider(name="pitrnd", label="Pitch Random", min=0, max=0.5, init=0.005, rel="lin", unit="x", col="red3",half=True),
-                cslider(name="cut", label="Filter Freq", min=100, max=18000, init=20000, rel="log", unit="Hz", col="green3"),
-                cslider(name="filterq", label="Filter Q", min=0.5, max=10, init=0.707, rel="log", unit="Q", col="green3"),
-                cslider(name="dur", label="Grain Duration", min=0.01, max=10, init=0.1, up=True, rel="log", unit="sec", col="blue",half=True),
-                cslider(name="num", label="# of Grains", min=1, max=150, init=24, rel="lin", gliss=0, res="int", up=True, unit="grs", col="tan",half=True),
-                cpopup(name="filttype", label="Filter Type", init="Lowpass", col="green3", value=["Lowpass","Highpass","Bandpass","Bandstop"]),
+                cslider(name="transp", label="Transpose", min=-4800, max=4800, init=0, rel="lin", unit="cnts", col="green1"),
+                cslider(name="dens", label="Density of grains", min=1, max=250, init=30, rel="log", unit="x", col="red1"),
+                cslider(name="pos", label="Grain Position", min=0, max=1, init=0, func=[(0,0),(1,1)], rel="lin", unit="x", col="blue1"),
+                cslider(name="dur", label="Grain Duration", min=0.001, max=10, init=0.2, rel="log", unit="sec", col="orange1"),
+                cslider(name="pitrnd", label="Pitch Random", min=0.0001, max=0.5, init=0.0005, rel="log", unit="x", col="green2",half=True),
+                cslider(name="densrnd", label="Density Random", min=0.0001, max=1, init=0.0005, rel="log", unit="x", col="red2",half=True),
+                cslider(name="posrnd", label="Position Random", min=0.0001, max=0.5, init=0.0005, rel="log", unit="x", col="blue2",half=True),
+                cslider(name="durrnd", label="Duration Random", min=0.0001, max=1, init=0.0005, rel="log", unit="x", col="orange2",half=True),
+                cslider(name="cut", label="Filter Freq", min=100, max=18000, init=20000, rel="log", unit="Hz", col="purple2"),
+                cslider(name="filterq", label="Filter Q", min=0.5, max=10, init=0.707, rel="log", unit="Q", col="purple2"),
+                cpopup(name="filttype", label="Filter Type", init="Lowpass", col="purple1", value=["Lowpass","Highpass","Bandpass","Bandstop"]),
                 cpopup(name="balance", label = "Balance", init= "Off", col="blue", value=["Off","Compress", "Source"]),
                 cgen(name="discreet", label="Discreet Transpo", init=[1], col="forestgreen"),
                 cpoly()
diff --git a/Resources/splash.py b/Resources/splash.py
new file mode 100644
index 0000000..d84bb1c
--- /dev/null
+++ b/Resources/splash.py
@@ -0,0 +1,79 @@
+#!/usr/bin/env python
+# encoding: utf-8
+
+import wx, sys, os
+from Resources.constants import *
+
+def GetRoundBitmap(w, h, r):
+    maskColour = wx.Colour(0,0,0)
+    shownColour = wx.Colour(5,5,5)
+    b = wx.EmptyBitmap(w,h)
+    dc = wx.MemoryDC(b)
+    dc.SetBrush(wx.Brush(maskColour))
+    dc.DrawRectangle(0,0,w,h)
+    dc.SetBrush(wx.Brush(shownColour))
+    dc.SetPen(wx.Pen(shownColour))
+    dc.DrawRoundedRectangle(0, 0, w, h, r)
+    dc.SelectObject(wx.NullBitmap)
+    b.SetMaskColour(maskColour)
+    return b
+
+def GetRoundShape(w, h, r=17):
+    return wx.RegionFromBitmap(GetRoundBitmap(w,h,r))
+
+class CeciliaSplashScreen(wx.Frame):
+    def __init__(self, parent, img, callback):
+        display = wx.Display(0)
+        size = display.GetGeometry()[2:]
+        wx.Frame.__init__(self, parent, -1, "", pos=(-1, size[1]/6),
+                         style = wx.FRAME_SHAPED | wx.SIMPLE_BORDER | wx.FRAME_NO_TASKBAR | wx.STAY_ON_TOP)
+
+        self.Bind(wx.EVT_PAINT, self.OnPaint)
+        
+        self.callback = callback
+
+        self.bmp = wx.Bitmap(os.path.join(img), wx.BITMAP_TYPE_PNG)
+        self.w, self.h = self.bmp.GetWidth(), self.bmp.GetHeight()
+        self.SetClientSize((self.w, self.h))
+
+        if wx.Platform == "__WXGTK__":
+            self.Bind(wx.EVT_WINDOW_CREATE, self.SetWindowShape)
+        else:
+            self.SetWindowShape()
+
+        dc = wx.ClientDC(self)
+        dc.DrawBitmap(self.bmp, 0, 0, True)
+
+        self.fc = wx.FutureCall(2500, self.OnClose)
+
+        self.Center(wx.HORIZONTAL)
+        if sys.platform == 'win32':
+            self.Center(wx.VERTICAL)
+            
+        wx.CallAfter(self.Show)
+        
+    def SetWindowShape(self, *evt):
+        r = GetRoundShape(self.w, self.h)
+        self.hasShape = self.SetShape(r)
+
+    def OnPaint(self, evt):
+        w,h = self.GetSize()
+        dc = wx.PaintDC(self)
+        dc.SetPen(wx.Pen("#000000"))
+        dc.SetBrush(wx.Brush("#000000"))
+        dc.DrawRectangle(0,0,w,h)
+        dc.DrawBitmap(self.bmp, 0,0,True)
+        dc.SetTextForeground("#333333")
+        font = dc.GetFont()
+        if sys.platform != "win32":
+            font.SetFaceName("Monaco")
+            font.SetPixelSize((15,15))
+        dc.SetFont(font)
+        dc.DrawLabel("Cecilia %s" % APP_VERSION, wx.Rect(280, 185, 200, 15), wx.ALIGN_RIGHT)
+        dc.DrawLabel(u"Spirit of the project: Jean Piché", wx.Rect(280, 200, 200, 15), wx.ALIGN_RIGHT)
+        dc.DrawLabel(u"Programmed by: Olivier Bélanger", wx.Rect(280, 215, 200, 15), wx.ALIGN_RIGHT)
+        dc.DrawLabel(APP_COPYRIGHT, wx.Rect(280, 230, 200, 15), wx.ALIGN_RIGHT)
+
+    def OnClose(self):
+        self.callback()
+        self.Destroy()
diff --git a/Resources/Cecilia5.ico b/doc-en/source/_static/Cecilia5.ico
similarity index 100%
copy from Resources/Cecilia5.ico
copy to doc-en/source/_static/Cecilia5.ico
diff --git a/doc-en/source/_static/nature.css b/doc-en/source/_static/nature.css
new file mode 100644
index 0000000..5d73f48
--- /dev/null
+++ b/doc-en/source/_static/nature.css
@@ -0,0 +1,245 @@
+/*
+ * nature.css_t
+ * ~~~~~~~~~~~~
+ *
+ * Sphinx stylesheet -- nature theme.
+ *
+ * :copyright: Copyright 2007-2011 by the Sphinx team, see AUTHORS.
+ * :license: BSD, see LICENSE for details.
+ *
+ */
+ 
+ at import url("basic.css");
+ 
+/* -- page layout ----------------------------------------------------------- */
+ 
+body {
+    font-family: Arial, sans-serif;
+    font-size: 100%;
+    background-color: #111;
+    color: #555;
+    margin: 0;
+    padding: 0;
+}
+
+div.documentwrapper {
+    float: left;
+    width: 100%;
+}
+
+div.bodywrapper {
+    margin: 0 0 0 230px;
+}
+
+hr {
+    border: 1px solid #B1B4B6;
+}
+ 
+div.document {
+    background-color: #eee;
+}
+ 
+div.body {
+    background-color: #ffffff;
+    color: #3E4349;
+    padding: 0 30px 30px 30px;
+    font-size: 0.9em;
+}
+ 
+div.footer {
+    color: #555; /* text copyright*/
+    width: 100%;
+    padding: 13px 0;
+    text-align: center;
+    font-size: 75%;
+}
+ 
+div.footer a {
+    color: #666; /* Sphinx link in copyright */
+    text-decoration: underline;
+}
+ 
+div.related {
+    background-color: #33333F; /* top and bottom bars */
+    line-height: 32px;
+    color: #fff;
+    text-shadow: 0px 1px 0 #444;
+    font-size: 0.9em;
+}
+ 
+div.related a {
+    color: #E2F3CC; /* text in top and bottom bars */
+}
+ 
+div.sphinxsidebar {
+    font-size: 0.75em;
+    line-height: 1.5em;
+}
+
+div.sphinxsidebarwrapper{
+    padding: 20px 0;
+}
+ 
+div.sphinxsidebar h3,
+div.sphinxsidebar h4 {
+    font-family: Arial, sans-serif;
+    color: #222;
+    font-size: 1.2em;
+    font-weight: normal;
+    margin: 0;
+    padding: 5px 10px;
+    background-color: #ddd;
+    text-shadow: 1px 1px 0 white
+}
+
+div.sphinxsidebar h4{
+    font-size: 1.1em;
+}
+ 
+div.sphinxsidebar h3 a {
+    color: #444;
+}
+ 
+ 
+div.sphinxsidebar p {
+    color: #888;
+    padding: 5px 20px;
+}
+ 
+div.sphinxsidebar p.topless {
+}
+ 
+div.sphinxsidebar ul {
+    margin: 10px 20px;
+    padding: 0;
+    color: #000;
+}
+ 
+div.sphinxsidebar a {
+    color: #444;
+}
+ 
+div.sphinxsidebar input {
+    border: 1px solid #ccc;
+    font-family: sans-serif;
+    font-size: 1em;
+}
+
+div.sphinxsidebar input[type=text]{
+    margin-left: 20px;
+}
+ 
+/* -- body styles ----------------------------------------------------------- */
+ 
+a {
+    color: #005B81;
+    text-decoration: none;
+}
+ 
+a:hover {
+    color: #E32EFF;
+    text-decoration: underline;
+}
+ 
+div.body h1,
+div.body h2,
+div.body h3,
+div.body h4,
+div.body h5,
+div.body h6 {
+    font-family: Arial, sans-serif;
+    background-color: #CCCCD0; /* first headers */
+    font-weight: normal;
+    color: #212224;
+    margin: 30px 0px 10px 0px;
+    padding: 5px 0 5px 10px;
+    text-shadow: 0px 1px 0 white
+}
+ 
+div.body h1 { border-top: 20px solid white; margin-top: 0; font-size: 200%; } /* Just on top of big titles */
+div.body h2 { font-size: 150%; background-color: #D0D0DA; } /* second headers */
+div.body h3 { font-size: 120%; background-color: #D0D0D0; } /* third headers */
+div.body h4 { font-size: 110%; background-color: #D8DEE3; }
+div.body h5 { font-size: 100%; background-color: #D8DEE3; }
+div.body h6 { font-size: 100%; background-color: #D8DEE3; }
+ 
+a.headerlink {
+    color: #c60f0f;
+    font-size: 0.8em;
+    padding: 0 4px 0 4px;
+    text-decoration: none;
+}
+ 
+a.headerlink:hover {
+    background-color: #c60f0f;
+    color: white;
+}
+ 
+div.body p, div.body dd, div.body li {
+    line-height: 1.5em;
+}
+ 
+div.admonition p.admonition-title + p {
+    display: inline;
+}
+
+div.highlight{
+    background-color: white;
+}
+
+div.note {
+    background-color: #eee;
+    border: 1px solid #ccc;
+}
+ 
+div.seealso {
+    background-color: #EFFAEF;
+    border: 1px solid #CCDDCC;
+}
+ 
+div.topic {
+    background-color: #eee;
+}
+ 
+div.warning {
+    background-color: #ffe4e4;
+    border: 1px solid #f66;
+}
+ 
+p.admonition-title {
+    display: inline;
+}
+ 
+p.admonition-title:after {
+    content: ":";
+}
+ 
+pre {
+    padding: 10px;
+    background-color: White;
+    color: #222;
+    line-height: 1.2em;
+    border: 1px solid #C6C9CB;
+    font-size: 1.1em;
+    margin: 1.5em 0 1.5em 0;
+    -webkit-box-shadow: 1px 1px 1px #d8d8d8;
+    -moz-box-shadow: 1px 1px 1px #d8d8d8;
+}
+ 
+tt {
+    background-color: #ecf0f3;
+    color: #222;
+    /* padding: 1px 2px; */
+    font-size: 1.1em;
+    font-family: monospace;
+}
+
+.viewcode-back {
+    font-family: Arial, sans-serif;
+}
+
+div.viewcode-block:target {
+    background-color: #f4debf;
+    border-top: 1px solid #ac9;
+    border-bottom: 1px solid #ac9;
+}
diff --git a/doc-en/source/conf.py b/doc-en/source/conf.py
new file mode 100644
index 0000000..d49863e
--- /dev/null
+++ b/doc-en/source/conf.py
@@ -0,0 +1,245 @@
+# -*- coding: utf-8 -*-
+#
+# Cecilia5 documentation build configuration file, created by
+# sphinx-quickstart on Thu May 23 18:54:14 2013.
+#
+# This file is execfile()d with the current directory set to its containing dir.
+#
+# Note that not all possible configuration values are present in this
+# autogenerated file.
+#
+# All configuration values have a default; values that are commented out
+# serve to show the default.
+
+import sys, os
+
+# If extensions (or modules to document with autodoc) are in another directory,
+# add these directories to sys.path here. If the directory is relative to the
+# documentation root, use os.path.abspath to make it absolute, like shown here.
+#sys.path.insert(0, os.path.abspath('.'))
+
+# -- General configuration -----------------------------------------------------
+
+# If your documentation needs a minimal Sphinx version, state it here.
+#needs_sphinx = '1.0'
+
+# Add any Sphinx extension module names here, as strings. They can be extensions
+# coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
+extensions = ['sphinx.ext.autodoc', 'sphinx.ext.mathjax', 'sphinx.ext.ifconfig']
+
+# Add any paths that contain templates here, relative to this directory.
+templates_path = ['_templates']
+
+# The suffix of source filenames.
+source_suffix = '.rst'
+
+# The encoding of source files.
+#source_encoding = 'utf-8-sig'
+
+# The master toctree document.
+master_doc = 'index'
+
+# General information about the project.
+project = u'Cecilia5'
+copyright = u'2013, Jean Piché, Olivier Bélanger, Julie Delisle'
+
+# The version info for the project you're documenting, acts as replacement for
+# |version| and |release|, also used in various other places throughout the
+# built documents.
+#
+# The short X.Y version.
+version = '5.0.9'
+# The full version, including alpha/beta/rc tags.
+release = '5.0.9'
+
+# The language for content autogenerated by Sphinx. Refer to documentation
+# for a list of supported languages.
+#language = None
+
+# There are two options for replacing |today|: either, you set today to some
+# non-false value, then it is used:
+#today = ''
+# Else, today_fmt is used as the format for a strftime call.
+#today_fmt = '%B %d, %Y'
+
+# List of patterns, relative to source directory, that match files and
+# directories to ignore when looking for source files.
+exclude_patterns = []
+
+# The reST default role (used for this markup: `text`) to use for all documents.
+#default_role = None
+
+# If true, '()' will be appended to :func: etc. cross-reference text.
+#add_function_parentheses = True
+
+# If true, the current module name will be prepended to all description
+# unit titles (such as .. function::).
+#add_module_names = True
+
+# If true, sectionauthor and moduleauthor directives will be shown in the
+# output. They are ignored by default.
+#show_authors = False
+
+# The name of the Pygments (syntax highlighting) style to use.
+pygments_style = 'sphinx'
+
+# A list of ignored prefixes for module index sorting.
+#modindex_common_prefix = []
+
+
+# -- Options for HTML output ---------------------------------------------------
+
+# The theme to use for HTML and HTML Help pages.  See the documentation for
+# a list of builtin themes.
+html_theme = 'nature'
+
+# Theme options are theme-specific and customize the look and feel of a theme
+# further.  For a list of options available for each theme, see the
+# documentation.
+#html_theme_options = {}
+
+# Add any paths that contain custom themes here, relative to this directory.
+#html_theme_path = []
+
+# The name for this set of Sphinx documents.  If None, it defaults to
+# "<project> v<release> documentation".
+#html_title = None
+
+# A shorter title for the navigation bar.  Default is the same as html_title.
+#html_short_title = None
+
+# The name of an image file (relative to this directory) to place at the top
+# of the sidebar.
+#html_logo = None
+
+# The name of an image file (within the static path) to use as favicon of the
+# docs.  This file should be a Windows icon file (.ico) being 16x16 or 32x32
+# pixels large.
+html_favicon = 'Cecilia5.ico'
+
+# Add any paths that contain custom static files (such as style sheets) here,
+# relative to this directory. They are copied after the builtin static files,
+# so a file named "default.css" will overwrite the builtin "default.css".
+html_static_path = ['_static']
+
+# If not '', a 'Last updated on:' timestamp is inserted at every page bottom,
+# using the given strftime format.
+#html_last_updated_fmt = '%b %d, %Y'
+
+# If true, SmartyPants will be used to convert quotes and dashes to
+# typographically correct entities.
+#html_use_smartypants = True
+
+# Custom sidebar templates, maps document names to template names.
+#html_sidebars = {}
+
+# Additional templates that should be rendered to pages, maps page names to
+# template names.
+#html_additional_pages = {}
+
+# If false, no module index is generated.
+html_domain_indices = False
+
+# If false, no index is generated.
+html_use_index = False
+
+# If true, the index is split into individual pages for each letter.
+#html_split_index = False
+
+# If true, links to the reST sources are added to the pages.
+#html_show_sourcelink = True
+
+# If true, "Created using Sphinx" is shown in the HTML footer. Default is True.
+#html_show_sphinx = True
+
+# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True.
+#html_show_copyright = True
+
+# If true, an OpenSearch description file will be output, and all pages will
+# contain a <link> tag referring to it.  The value of this option must be the
+# base URL from which the finished HTML is served.
+#html_use_opensearch = ''
+
+# This is the file name suffix for HTML files (e.g. ".xhtml").
+#html_file_suffix = None
+
+# Output file base name for HTML help builder.
+htmlhelp_basename = 'Cecilia5doc'
+
+
+# -- Options for LaTeX output --------------------------------------------------
+
+latex_elements = {
+# The paper size ('letterpaper' or 'a4paper').
+#'papersize': 'letterpaper',
+
+# The font size ('10pt', '11pt' or '12pt').
+#'pointsize': '10pt',
+
+# Additional stuff for the LaTeX preamble.
+#'preamble': '',
+}
+
+# Grouping the document tree into LaTeX files. List of tuples
+# (source start file, target name, title, author, documentclass [howto/manual]).
+latex_documents = [
+  ('index', 'Cecilia5.tex', u'Cecilia5 Documentation',
+   u'Jean Piché, Olivier Bélanger, Julie Delisle', 'manual'),
+]
+
+# The name of an image file (relative to this directory) to place at the top of
+# the title page.
+#latex_logo = None
+
+# For "manual" documents, if this is true, then toplevel headings are parts,
+# not chapters.
+#latex_use_parts = False
+
+# If true, show page references after internal links.
+#latex_show_pagerefs = False
+
+# If true, show URL addresses after external links.
+#latex_show_urls = False
+
+# Documents to append as an appendix to all manuals.
+#latex_appendices = []
+
+# If false, no module index is generated.
+latex_domain_indices = False
+
+
+# -- Options for manual page output --------------------------------------------
+
+# One entry per manual page. List of tuples
+# (source start file, name, description, authors, manual section).
+man_pages = [
+    ('index', 'cecilia5', u'Cecilia5 Documentation',
+     [u'Jean Piché, Olivier Bélanger, Julie Delisle'], 1)
+]
+
+# If true, show URL addresses after external links.
+#man_show_urls = False
+
+
+# -- Options for Texinfo output ------------------------------------------------
+
+# Grouping the document tree into Texinfo files. List of tuples
+# (source start file, target name, title, author,
+#  dir menu entry, description, category)
+texinfo_documents = [
+  ('index', 'Cecilia5', u'Cecilia5 Documentation',
+   u'Jean Piché, Olivier Bélanger, Julie Delisle', 'Cecilia5', 'One line description of project.',
+   'Miscellaneous'),
+]
+
+# Documents to append as an appendix to all manuals.
+#texinfo_appendices = []
+
+# If false, no module index is generated.
+texinfo_domain_indices = False
+
+# How to display URL addresses: 'footnote', 'no', or 'inline'.
+#texinfo_show_urls = 'footnote'
+
+html_add_permalinks = None
+html_show_sourcelink = False
diff --git a/doc/images/Chapitre3/12-ChooseFilenameSuffix.png b/doc-en/source/images/ChooseFilenameSuffix.png
similarity index 100%
rename from doc/images/Chapitre3/12-ChooseFilenameSuffix.png
rename to doc-en/source/images/ChooseFilenameSuffix.png
diff --git a/doc/images/Chapitre2/6-Icones/2.1-ChooseSoundfileEditor.png b/doc-en/source/images/ChooseSoundfileEditor.png
similarity index 100%
rename from doc/images/Chapitre2/6-Icones/2.1-ChooseSoundfileEditor.png
rename to doc-en/source/images/ChooseSoundfileEditor.png
diff --git a/doc/images/Chapitre2/6-Icones/1.1-ChooseSoundfilePlayer.png b/doc-en/source/images/ChooseSoundfilePlayer.png
similarity index 100%
rename from doc/images/Chapitre2/6-Icones/1.1-ChooseSoundfilePlayer.png
rename to doc-en/source/images/ChooseSoundfilePlayer.png
diff --git a/doc/images/Chapitre3/9-ChooseTextEditor.png b/doc-en/source/images/ChooseTextEditor.png
similarity index 100%
rename from doc/images/Chapitre3/9-ChooseTextEditor.png
rename to doc-en/source/images/ChooseTextEditor.png
diff --git a/doc/images/Chapitre2/10-Graphique.png b/doc-en/source/images/Graphique.png
similarity index 100%
rename from doc/images/Chapitre2/10-Graphique.png
rename to doc-en/source/images/Graphique.png
diff --git a/doc/images/Chapitre2/6-Icones/4-Horloge.png b/doc-en/source/images/Horloge.png
similarity index 100%
rename from doc/images/Chapitre2/6-Icones/4-Horloge.png
rename to doc-en/source/images/Horloge.png
diff --git a/doc/images/Chapitre2/6-Icones/3.1-Icones-In.png b/doc-en/source/images/Icones-In.png
similarity index 100%
rename from doc/images/Chapitre2/6-Icones/3.1-Icones-In.png
rename to doc-en/source/images/Icones-In.png
diff --git a/doc/images/Chapitre2/6-Icones/3.2-Icones-Out.png b/doc-en/source/images/Icones-Out.png
similarity index 100%
rename from doc/images/Chapitre2/6-Icones/3.2-Icones-Out.png
rename to doc-en/source/images/Icones-Out.png
diff --git a/doc/images/Chapitre2/6-Icones/3.3-Icones-SSC.png b/doc-en/source/images/Icones-SSC.png
similarity index 100%
rename from doc/images/Chapitre2/6-Icones/3.3-Icones-SSC.png
rename to doc-en/source/images/Icones-SSC.png
diff --git a/doc/images/Chapitre2/4-Input.png b/doc-en/source/images/Input.png
similarity index 100%
rename from doc/images/Chapitre2/4-Input.png
rename to doc-en/source/images/Input.png
diff --git a/doc-en/source/images/Interface-graphique.png b/doc-en/source/images/Interface-graphique.png
new file mode 100644
index 0000000..30d5b19
Binary files /dev/null and b/doc-en/source/images/Interface-graphique.png differ
diff --git a/doc/images/Chapitre3/11-Menu_Action.png b/doc-en/source/images/Menu_Action.png
similarity index 100%
rename from doc/images/Chapitre3/11-Menu_Action.png
rename to doc-en/source/images/Menu_Action.png
diff --git a/doc/images/Chapitre3/14-Menu_Help.png b/doc-en/source/images/Menu_Help.png
similarity index 100%
rename from doc/images/Chapitre3/14-Menu_Help.png
rename to doc-en/source/images/Menu_Help.png
diff --git a/doc/images/Chapitre3/13-Menu_Window.png b/doc-en/source/images/Menu_Window.png
similarity index 100%
rename from doc/images/Chapitre3/13-Menu_Window.png
rename to doc-en/source/images/Menu_Window.png
diff --git a/doc/images/Chapitre3/10-Menu_edit.png b/doc-en/source/images/Menu_edit.png
similarity index 100%
rename from doc/images/Chapitre3/10-Menu_edit.png
rename to doc-en/source/images/Menu_edit.png
diff --git a/doc/images/Chapitre3/8-Menu_file.png b/doc-en/source/images/Menu_file.png
similarity index 100%
rename from doc/images/Chapitre3/8-Menu_file.png
rename to doc-en/source/images/Menu_file.png
diff --git a/doc/images/Chapitre3/1-Menu_preferences.png b/doc-en/source/images/Menu_preferences.png
similarity index 100%
rename from doc/images/Chapitre3/1-Menu_preferences.png
rename to doc-en/source/images/Menu_preferences.png
diff --git a/doc/images/Chapitre3/7-Menu_python.png b/doc-en/source/images/Menu_python.png
similarity index 100%
rename from doc/images/Chapitre3/7-Menu_python.png
rename to doc-en/source/images/Menu_python.png
diff --git a/doc/images/Chapitre3/8b-ModulesCategories.png b/doc-en/source/images/ModulesCategories.png
similarity index 100%
rename from doc/images/Chapitre3/8b-ModulesCategories.png
rename to doc-en/source/images/ModulesCategories.png
diff --git a/doc/images/Chapitre3/6-Onglet_Cecilia5.png b/doc-en/source/images/Onglet_Cecilia5.png
similarity index 100%
rename from doc/images/Chapitre3/6-Onglet_Cecilia5.png
rename to doc-en/source/images/Onglet_Cecilia5.png
diff --git a/doc/images/Chapitre3/4-Onglet_MIDI.png b/doc-en/source/images/Onglet_MIDI.png
similarity index 100%
rename from doc/images/Chapitre3/4-Onglet_MIDI.png
rename to doc-en/source/images/Onglet_MIDI.png
diff --git a/doc/images/Chapitre3/2-Onglet_dossier.png b/doc-en/source/images/Onglet_dossier.png
similarity index 100%
rename from doc/images/Chapitre3/2-Onglet_dossier.png
rename to doc-en/source/images/Onglet_dossier.png
diff --git a/doc/images/Chapitre3/5-Onglet_export.png b/doc-en/source/images/Onglet_export.png
similarity index 100%
rename from doc/images/Chapitre3/5-Onglet_export.png
rename to doc-en/source/images/Onglet_export.png
diff --git a/doc/images/Chapitre3/3-Onglet_haut-parleur.png b/doc-en/source/images/Onglet_haut-parleur.png
similarity index 100%
rename from doc/images/Chapitre3/3-Onglet_haut-parleur.png
rename to doc-en/source/images/Onglet_haut-parleur.png
diff --git a/doc/images/Chapitre3/15-OpenSoundControl.png b/doc-en/source/images/OpenSoundControl.png
similarity index 100%
rename from doc/images/Chapitre3/15-OpenSoundControl.png
rename to doc-en/source/images/OpenSoundControl.png
diff --git a/doc/images/Chapitre2/5-Output.png b/doc-en/source/images/Output.png
similarity index 100%
rename from doc/images/Chapitre2/5-Output.png
rename to doc-en/source/images/Output.png
diff --git a/doc/images/Chapitre11/1-Parametres_4Delays.png b/doc-en/source/images/Parametres_4Delays.png
similarity index 100%
rename from doc/images/Chapitre11/1-Parametres_4Delays.png
rename to doc-en/source/images/Parametres_4Delays.png
diff --git a/doc/images/Chapitre5/1-Parametres_AMFilter.png b/doc-en/source/images/Parametres_AMFilter.png
similarity index 100%
rename from doc/images/Chapitre5/1-Parametres_AMFilter.png
rename to doc-en/source/images/Parametres_AMFilter.png
diff --git a/doc/images/Chapitre10/1-Parametres_AddSynth.png b/doc-en/source/images/Parametres_AddSynth.png
similarity index 100%
rename from doc/images/Chapitre10/1-Parametres_AddSynth.png
rename to doc-en/source/images/Parametres_AddSynth.png
diff --git a/doc/images/Chapitre11/2-Parametres_BeatMaker.png b/doc-en/source/images/Parametres_BeatMaker.png
similarity index 100%
rename from doc/images/Chapitre11/2-Parametres_BeatMaker.png
rename to doc-en/source/images/Parametres_BeatMaker.png
diff --git a/doc/images/Chapitre5/2-Parametres_BrickWall.png b/doc-en/source/images/Parametres_BrickWall.png
similarity index 100%
rename from doc/images/Chapitre5/2-Parametres_BrickWall.png
rename to doc-en/source/images/Parametres_BrickWall.png
diff --git a/doc/images/Chapitre7/1-Parametres_ChordMaker.png b/doc-en/source/images/Parametres_ChordMaker.png
similarity index 100%
rename from doc/images/Chapitre7/1-Parametres_ChordMaker.png
rename to doc-en/source/images/Parametres_ChordMaker.png
diff --git a/doc/images/Chapitre8/1-Parametres_Convolve.png b/doc-en/source/images/Parametres_Convolve.png
similarity index 100%
rename from doc/images/Chapitre8/1-Parametres_Convolve.png
rename to doc-en/source/images/Parametres_Convolve.png
diff --git a/doc/images/Chapitre9/1-Parametres_CrossSynth.png b/doc-en/source/images/Parametres_CrossSynth.png
similarity index 100%
rename from doc/images/Chapitre9/1-Parametres_CrossSynth.png
rename to doc-en/source/images/Parametres_CrossSynth.png
diff --git a/doc/images/Chapitre4/1-Parametres_Degrade.png b/doc-en/source/images/Parametres_Degrade.png
similarity index 100%
rename from doc/images/Chapitre4/1-Parametres_Degrade.png
rename to doc-en/source/images/Parametres_Degrade.png
diff --git a/doc/images/Chapitre11/3-Parametres_DelayMod.png b/doc-en/source/images/Parametres_DelayMod.png
similarity index 100%
rename from doc/images/Chapitre11/3-Parametres_DelayMod.png
rename to doc-en/source/images/Parametres_DelayMod.png
diff --git a/doc/images/Chapitre8/2-Parametres_DetunedResonators.png b/doc-en/source/images/Parametres_DetunedResonators.png
similarity index 100%
rename from doc/images/Chapitre8/2-Parametres_DetunedResonators.png
rename to doc-en/source/images/Parametres_DetunedResonators.png
diff --git a/doc/images/Chapitre4/2-Parametres_Distorsion.png b/doc-en/source/images/Parametres_Distorsion.png
similarity index 100%
rename from doc/images/Chapitre4/2-Parametres_Distorsion.png
rename to doc-en/source/images/Parametres_Distorsion.png
diff --git a/doc/images/Chapitre4/3-Parametres_Dynamics.png b/doc-en/source/images/Parametres_Dynamics.png
similarity index 100%
rename from doc/images/Chapitre4/3-Parametres_Dynamics.png
rename to doc-en/source/images/Parametres_Dynamics.png
diff --git a/doc/images/Chapitre7/2-Parametres_FreqShift.png b/doc-en/source/images/Parametres_FreqShift.png
similarity index 100%
rename from doc/images/Chapitre7/2-Parametres_FreqShift.png
rename to doc-en/source/images/Parametres_FreqShift.png
diff --git a/doc/images/Chapitre11/4-Parametres_Granulator.png b/doc-en/source/images/Parametres_Granulator.png
similarity index 100%
rename from doc/images/Chapitre11/4-Parametres_Granulator.png
rename to doc-en/source/images/Parametres_Granulator.png
diff --git a/doc/images/Chapitre7/3-Parametres_Harmonizer.png b/doc-en/source/images/Parametres_Harmonizer.png
similarity index 100%
rename from doc/images/Chapitre7/3-Parametres_Harmonizer.png
rename to doc-en/source/images/Parametres_Harmonizer.png
diff --git a/doc/images/Chapitre7/4-Parametres_LooperMod.png b/doc-en/source/images/Parametres_LooperMod.png
similarity index 100%
rename from doc/images/Chapitre7/4-Parametres_LooperMod.png
rename to doc-en/source/images/Parametres_LooperMod.png
diff --git a/doc/images/Chapitre6/5-Parametres_MBBandGate.png b/doc-en/source/images/Parametres_MBBandGate.png
similarity index 100%
rename from doc/images/Chapitre6/5-Parametres_MBBandGate.png
rename to doc-en/source/images/Parametres_MBBandGate.png
diff --git a/doc/images/Chapitre6/1-Parametres_MBBeatMaker.png b/doc-en/source/images/Parametres_MBBeatMaker.png
similarity index 100%
rename from doc/images/Chapitre6/1-Parametres_MBBeatMaker.png
rename to doc-en/source/images/Parametres_MBBeatMaker.png
diff --git a/doc/images/Chapitre6/2-Parametres_MBDelay.png b/doc-en/source/images/Parametres_MBDelay.png
similarity index 100%
rename from doc/images/Chapitre6/2-Parametres_MBDelay.png
rename to doc-en/source/images/Parametres_MBDelay.png
diff --git a/doc/images/Chapitre6/3-Parametres_MBDisto.png b/doc-en/source/images/Parametres_MBDisto.png
similarity index 100%
rename from doc/images/Chapitre6/3-Parametres_MBDisto.png
rename to doc-en/source/images/Parametres_MBDisto.png
diff --git a/doc/images/Chapitre6/4-Parametres_MBFreqShift.png b/doc-en/source/images/Parametres_MBFreqShift.png
similarity index 100%
rename from doc/images/Chapitre6/4-Parametres_MBFreqShift.png
rename to doc-en/source/images/Parametres_MBFreqShift.png
diff --git a/doc/images/Chapitre6/6-Parametres_MBHarmonizer.png b/doc-en/source/images/Parametres_MBHarmonizer.png
similarity index 100%
rename from doc/images/Chapitre6/6-Parametres_MBHarmonizer.png
rename to doc-en/source/images/Parametres_MBHarmonizer.png
diff --git a/doc/images/Chapitre6/7-Parametres_MBReverb.png b/doc-en/source/images/Parametres_MBReverb.png
similarity index 100%
rename from doc/images/Chapitre6/7-Parametres_MBReverb.png
rename to doc-en/source/images/Parametres_MBReverb.png
diff --git a/doc/images/Chapitre5/3-Parametres_MaskFilter.png b/doc-en/source/images/Parametres_MaskFilter.png
similarity index 100%
rename from doc/images/Chapitre5/3-Parametres_MaskFilter.png
rename to doc-en/source/images/Parametres_MaskFilter.png
diff --git a/doc/images/Chapitre9/2-Parametres_Morphing.png b/doc-en/source/images/Parametres_Morphing.png
similarity index 100%
rename from doc/images/Chapitre9/2-Parametres_Morphing.png
rename to doc-en/source/images/Parametres_Morphing.png
diff --git a/doc/images/Chapitre5/4-Parametres_ParamEQ.png b/doc-en/source/images/Parametres_ParamEQ.png
similarity index 100%
rename from doc/images/Chapitre5/4-Parametres_ParamEQ.png
rename to doc-en/source/images/Parametres_ParamEQ.png
diff --git a/doc/images/Chapitre5/5-Parametres_Phaser.png b/doc-en/source/images/Parametres_Phaser.png
similarity index 100%
rename from doc/images/Chapitre5/5-Parametres_Phaser.png
rename to doc-en/source/images/Parametres_Phaser.png
diff --git a/doc/images/Chapitre7/5-Parametres_PitchLooper.png b/doc-en/source/images/Parametres_PitchLooper.png
similarity index 100%
rename from doc/images/Chapitre7/5-Parametres_PitchLooper.png
rename to doc-en/source/images/Parametres_PitchLooper.png
diff --git a/doc/images/Chapitre10/2-Parametres_Pulsar.png b/doc-en/source/images/Parametres_Pulsar.png
similarity index 100%
rename from doc/images/Chapitre10/2-Parametres_Pulsar.png
rename to doc-en/source/images/Parametres_Pulsar.png
diff --git a/doc/images/Chapitre8/3-Parametres_Resonators.png b/doc-en/source/images/Parametres_Resonators.png
similarity index 100%
rename from doc/images/Chapitre8/3-Parametres_Resonators.png
rename to doc-en/source/images/Parametres_Resonators.png
diff --git a/doc/images/Chapitre9/3-Parametres_SpectralDelay.png b/doc-en/source/images/Parametres_SpectralDelay.png
similarity index 100%
rename from doc/images/Chapitre9/3-Parametres_SpectralDelay.png
rename to doc-en/source/images/Parametres_SpectralDelay.png
diff --git a/doc/images/Chapitre9/4-Parametres_SpectralFilter.png b/doc-en/source/images/Parametres_SpectralFilter.png
similarity index 100%
rename from doc/images/Chapitre9/4-Parametres_SpectralFilter.png
rename to doc-en/source/images/Parametres_SpectralFilter.png
diff --git a/doc/images/Chapitre9/5-Parametres_SpectralGate.png b/doc-en/source/images/Parametres_SpectralGate.png
similarity index 100%
rename from doc/images/Chapitre9/5-Parametres_SpectralGate.png
rename to doc-en/source/images/Parametres_SpectralGate.png
diff --git a/doc/images/Chapitre10/3-Parametres_StochGrains1.png b/doc-en/source/images/Parametres_StochGrains1.png
similarity index 100%
rename from doc/images/Chapitre10/3-Parametres_StochGrains1.png
rename to doc-en/source/images/Parametres_StochGrains1.png
diff --git a/doc/images/Chapitre10/4-Parametres_StochGrains2.png b/doc-en/source/images/Parametres_StochGrains2.png
similarity index 100%
rename from doc/images/Chapitre10/4-Parametres_StochGrains2.png
rename to doc-en/source/images/Parametres_StochGrains2.png
diff --git a/doc/images/Chapitre9/6-Parametres_Vectral.png b/doc-en/source/images/Parametres_Vectral.png
similarity index 100%
rename from doc/images/Chapitre9/6-Parametres_Vectral.png
rename to doc-en/source/images/Parametres_Vectral.png
diff --git a/doc/images/Chapitre5/6-Parametres_Vocoder.png b/doc-en/source/images/Parametres_Vocoder.png
similarity index 100%
rename from doc/images/Chapitre5/6-Parametres_Vocoder.png
rename to doc-en/source/images/Parametres_Vocoder.png
diff --git a/doc/images/Chapitre8/4-Parametres_WGuideBank.png b/doc-en/source/images/Parametres_WGuideBank.png
similarity index 100%
rename from doc/images/Chapitre8/4-Parametres_WGuideBank.png
rename to doc-en/source/images/Parametres_WGuideBank.png
diff --git a/doc/images/Chapitre4/4-Parametres_WaveShaper.png b/doc-en/source/images/Parametres_WaveShaper.png
similarity index 100%
rename from doc/images/Chapitre4/4-Parametres_WaveShaper.png
rename to doc-en/source/images/Parametres_WaveShaper.png
diff --git a/doc/images/Chapitre2/7-Post-processing.png b/doc-en/source/images/Post-processing.png
similarity index 100%
rename from doc/images/Chapitre2/7-Post-processing.png
rename to doc-en/source/images/Post-processing.png
diff --git a/doc/images/Chapitre2/9-Potentiometres.png b/doc-en/source/images/Potentiometres.png
similarity index 100%
rename from doc/images/Chapitre2/9-Potentiometres.png
rename to doc-en/source/images/Potentiometres.png
diff --git a/doc/images/Chapitre2/8-Presets.png b/doc-en/source/images/Presets.png
similarity index 100%
rename from doc/images/Chapitre2/8-Presets.png
rename to doc-en/source/images/Presets.png
diff --git a/doc/images/Chapitre2/3-SaveAudioFileAs.png b/doc-en/source/images/SaveAudioFileAs.png
similarity index 100%
rename from doc/images/Chapitre2/3-SaveAudioFileAs.png
rename to doc-en/source/images/SaveAudioFileAs.png
diff --git a/doc/images/Chapitre2/6-Icones/6-SourceSoundControls.png b/doc-en/source/images/SourceSoundControls.png
similarity index 100%
rename from doc/images/Chapitre2/6-Icones/6-SourceSoundControls.png
rename to doc-en/source/images/SourceSoundControls.png
diff --git a/doc/images/Chapitre2/2-Transport.png b/doc-en/source/images/Transport.png
similarity index 100%
rename from doc/images/Chapitre2/2-Transport.png
rename to doc-en/source/images/Transport.png
diff --git a/doc-en/source/index.rst b/doc-en/source/index.rst
new file mode 100644
index 0000000..f36dc22
--- /dev/null
+++ b/doc-en/source/index.rst
@@ -0,0 +1,23 @@
+.. Cecilia5 documentation master file, created by
+   sphinx-quickstart on Thu May 23 18:54:14 2013.
+   You can adapt this file completely to your liking, but it should at least
+   contain the root `toctree` directive.
+
+Welcome to Cecilia5's documentation!
+====================================
+
+.. toctree::
+   :maxdepth: 1
+   
+   src/intro/description
+   src/intro/requirements
+   src/configuration/preferences
+   src/configuration/menubar
+   src/configuration/midi-osc
+   src/interface/interface
+   src/interface/post-processing
+   src/modules/index
+
+
+* :ref:`search`
+
diff --git a/doc/chapitres/Chapitre3_A/3.2-Barre_menus_A.txt b/doc-en/source/src/configuration/menubar.rst
similarity index 50%
rename from doc/chapitres/Chapitre3_A/3.2-Barre_menus_A.txt
rename to doc-en/source/src/configuration/menubar.rst
index 5eee025..c68c039 100644
--- a/doc/chapitres/Chapitre3_A/3.2-Barre_menus_A.txt
+++ b/doc-en/source/src/configuration/menubar.rst
@@ -1,62 +1,85 @@
+Menubar
+==============
+
 This is a short description of the menus that the user will find in the upper part of the screen.
 
-\subsection
-The "Python" menu gives access to the Preferences window. There are also commands to hide the graphical interface (see "Hide Python") or the other applications (see "Hide Others"); the user can also quit Cecilia5 (see "Quit Python").
-**image 7-Menu_python.png** --> image à remplacer pcq version 5.0.7 beta?
+Cecilia5 Menu
+-----------------
+
+The "Cecilia5" menu ("Python" if run from sources) gives access to the Preferences window. There are also commands to hide the graphical interface (see "Hide Python") or the other applications (see "Hide Others"); the user can also quit Cecilia5 (see "Quit Python").
+
+.. image:: /images/Menu_python.png
+
+File Menu
+-----------------
+
+.. image:: /images/Menu_file.png
 
-\subsection
 The "File" menu gives access to the following commands:
-\begin{itemize}
-\item Open: Opens a Cecilia5 file (with the extension .c5) saved by the user.
-\item Open Random: Chooses a random Cecilia5 module and opens it.
-\items Modules: In this menu, the user can choose a Cecilia5 module. The modules fall in eight categories. For more information on modules, please see chapters 4 to 11.
-**image 8b-ModulesCategories.png**
-\item Open Recent: Opens a Cecilia5 file which has been recently modified and saved by the user.
-\item Save and Save as: Saves the module on which the user is currently working. The saved file will be in Cecilia5 (.c5) format.
-\intem Module as Text: Opens a text file that contains the source code of the module, for more information on it or if the user wishes to modify it. (For more information on modifications on those files, please see chapter 12.) If no text editor has been selected in the Preferences yet, a dialog window will appear to let the user choose one.
-**image 9-ChooseTextEditor.png**
-\item Reload module: Reloads the module from the source code. The user should execute this command if the module source code has been modified.
-**image 8-Menu_file.png** \end{itemize}
-
-\subsection
+    - Open: Opens a Cecilia5 file (with the extension .c5) saved by the user.
+    - Open Random: Chooses a random Cecilia5 module and opens it.
+    - Open Module: In this menu, the user can choose a Cecilia5 module. The modules fall in eight categories. For more information on modules, please see chapters 4 to 11.
+
+        .. image:: /images/ModulesCategories.png
+
+    - Open Recent: Opens a Cecilia5 file which has been recently modified and saved by the user.
+    - Save and Save as: Saves the module on which the user is currently working. The saved file will be in Cecilia5 (.c5) format.
+    - Open Module as Text: Opens a text file that contains the source code of the module, for more information on it or if the user wishes to modify it. (For more information on modifications on those files, please see chapter 12.) If no text editor has been selected in the Preferences yet, a dialog window will appear to let the user choose one.
+
+        .. image:: /images/ChooseTextEditor.png
+
+    - Reload module: Reloads the module from the source code. The user should execute this command if the module source code has been modified.
+
+Edit Menu
+-----------------
+
 The "Edit" menu gives access to the Undo, Redo, Copy and Paste commands. These commands will only have an effect on the graph and are not related to the other parameters of the module.  Check the "Remember input sound" if you wish that Cecilia5 remembers the input sound you chose for each new module opening.
-**image 10-Menu_edit.png**
 
-\subsection
+.. image:: /images/Menu_edit.png
+
+Action Menu
+-----------------
+
 In the "Action" menu, the commands "Play/Stop" and "Bounce to Disk" are equivalent to the "Play" and "Record" buttons of the transport bar.
-**image 11-Menu_Action.png**
+
+.. image:: /images/Menu_Action.png
+
 The command "Batch Processing on Sound Folder" applies the module's current settings to all sound files present in the folder that contains the input sound file.  The command "Batch Processing on Preset Sequence" applies all saved presets of the module to the chosen input sound file.  These two commands processes more than one sound file at a time. Before executing one of these commands, Cecilia5 will ask the user to enter a suffix to identify the new created sound files.
-**image 12-ChooseFilenameSuffix.png**
+
+.. image:: /images/ChooseFilenameSuffix.png
+
 The "Use MIDI" indicates if Cecilia5 has already found a MIDI device.
 
+Window Menu
+-----------------
 
-\subsection
 In the "Window" menu, the user can minimize the graphical interface window (see "Minimize"), zoom in this window (see "Zoom" - click once to zoom in and twice to zoom out) and bring all Cecilia5 windows to fromt (see "Bring All to Front").  The command "Eh Oh Mario!" changes a little something in the graphical interface that could make the user smile. The command "interface - nameofthemodule.c5" is part of the system's properties that makes all open windows of the application available to the user.
-**image 13-Menu_Window.png**
 
-\subsection
+.. image:: /images/Menu_Window.png
+
+Help Menu
+-----------------
+
 In the "Help" menu, the user can search for a command in the different menus; please enter a key word in the search box.  Click on "Show module info" to access a short description of the module that is currently used.  Click on "Show API Documentation" to access the documentation related to Cecilia5's programming interface.  This documentation contains all classes and methods declarations and information on all menus and commands related to the currently used module. For more information on Cecilia5's API, please see chapter 12.
-**image 14-Menu_Help.png**
 
-\subsection
+.. image:: /images/Menu_Help.png
+
 List of shortcuts:
-\begin{itemize}
-\item cmd-h: Hide Cecilia5' window
-\item alt-cmd-h: Hide the other applications' windows
-\item cmd-o: Open a Cecilia5 file
-\item shift-cmd-o: Open a random Cecilia5 file
-\item cmd s: Save the current file
-\item shift-cmd-s: Save the current file as...
-\item cmd-e: Open the text file that contains the source code of the module
-\item cmd-r: Reload module with all saved modifications in the source code
-\item cmd-c: Copy (graph only)
-\item cmd-v: Paste (graph only)
-\item cmd-z: Undo (graph only)
-\item shift-cmd-z: Redo (graph only)
-\item cmd-.: Play/Stop
-\item cmd-b: Bounce to disk ("Record" button)
-\item cmd-m: Minimize window
-\item shift-cmd-e: Eh Oh Mario!
-\item cmd-i: Open module documentation
-\item cmd-d: Open API Documentation
-\end{itemize}
\ No newline at end of file
+    - cmd-h: Hide Cecilia5' window
+    - alt-cmd-h: Hide the other applications' windows
+    - cmd-o: Open a Cecilia5 file
+    - shift-cmd-o: Open a random Cecilia5 file
+    - cmd s: Save the current file
+    - shift-cmd-s: Save the current file as...
+    - cmd-e: Open the text file that contains the source code of the module
+    - cmd-r: Reload module with all saved modifications in the source code
+    - cmd-c: Copy (graph only)
+    - cmd-v: Paste (graph only)
+    - cmd-z: Undo (graph only)
+    - shift-cmd-z: Redo (graph only)
+    - cmd-.: Play/Stop
+    - cmd-b: Bounce to disk ("Record" button)
+    - cmd-m: Minimize window
+    - shift-cmd-e: Eh Oh Mario!
+    - cmd-i: Open module documentation
+    - cmd-d: Open API Documentation
diff --git a/doc-en/source/src/configuration/midi-osc.rst b/doc-en/source/src/configuration/midi-osc.rst
new file mode 100644
index 0000000..d5f5cad
--- /dev/null
+++ b/doc-en/source/src/configuration/midi-osc.rst
@@ -0,0 +1,22 @@
+MIDI - OSC control
+===================
+
+MIDI
+-------
+
+It is possible to use a MIDI controller to have a finer control on sliders and knobs related to the different parameters in Cecilia5.  To use a MIDI controller, please connect it to your system before and be sure that it has been detected by your computer.
+
+Check the "Automatic Midi Bindings" in the Preferences (menu "Cecilia5") to have your controller be automatically detected by Cecilia5. Some parameters will be assigned by default to a controller. For example, the controller 7 will often be assigned to the gain control (in decibels) of the output sound file (see the corresponding slider in the "Output" section).
+
+However, most parameters will have to be assigned to a controller with the MIDI learn function. The "rangeslider" parameters will have to be assigned to two different controllers, for the minimum and maximum values.
+
+To link a parameter to a MIDI controller with the MIDI learn function, right-click on the parameter label you want to control and move the knob or slider of the MIDI controller to enable the connection.  Then, the controller number should be written in the slider of Cecilia5's graphical interface.  To disable the connection, press "shift" and right-click on the parameter.
+
+OSC
+-------
+
+It is also possible to control the parameters with the Open Sound Control (OSC) protocol.  To enable an OSC connection, double-click on the parameter label you want to control, enter the destination port address in the window that will appear and click on "Apply":
+
+.. image:: /images/OpenSoundControl.png
+
+Please be aware that activating an OSC connection will automatically disable the previons MIDI connection related to the chosen parameter.
diff --git a/doc/chapitres/Chapitre3_A/3.1-Preferences_A.txt b/doc-en/source/src/configuration/preferences.rst
similarity index 70%
rename from doc/chapitres/Chapitre3_A/3.1-Preferences_A.txt
rename to doc-en/source/src/configuration/preferences.rst
index 59892b2..65ed861 100644
--- a/doc/chapitres/Chapitre3_A/3.1-Preferences_A.txt
+++ b/doc-en/source/src/configuration/preferences.rst
@@ -1,34 +1,49 @@
+Preferences panel
+======================
+
 The Preferences window is accessible by opening the Python menu, in the upper part of the screen:
-**image 1-Menu_preferences.png**
 
-\subsection
-In the "File" tab, the user can choose a sound file player (or audio sequencer - see "Soundfile Player"), a sound file editor (see "Soundfile editor") and a text editor (see "Text Editor") to be used with Cecilia5. To choose an application, enter the path of the application in the appropriate space or click on "set" button. A dialog window will then appear for choosing the application.
+.. image:: /images/Menu_preferences.png
+
+Path
+--------
+
+In the "Path" tab, the user can choose a sound file player (or audio sequencer - see "Soundfile Player"), a sound file editor (see "Soundfile editor") and a text editor (see "Text Editor") to be used with Cecilia5. To choose an application, enter the path of the application in the appropriate space or click on "set" button. A dialog window will then appear for choosing the application.
 
 The user can also enter a path in the "Preferred paths" box to save new modules (.c5 files) in a specific folder; Cecilia5 will then save these modules in the Files -> Modules menu.
 
-**image 2-Onglet_dossier.png**
 
-\subsection
+.. image:: /images/Onglet_dossier.png
+
+Audio
+--------
+
 The "Speaker" tab offers different options related to the audio parameters of Cecilia5. The user can choose an audio driver (see "Audio Driver") and the input and output devices (see "Input Device" and "Output Device").
 The boxes "Sample Precision" and "Buffer Size" contains different values to set the sample precision in bits (32 or 64) and the buffer size in samples (64, 128, 256, 512, 1024 or 2048). The user can also choose the default number of audio channels (up to 36 - see "Default # of channels") and the sample rate (22 050, 44 100, 48 000, 88 200 or 96 000 Hertz - see "Sample Rate").
-**image 3-Onglet_haut-parleur.png**
 
-\subsection
+.. image:: /images/Onglet_haut-parleur.png
+
+MIDI
+-------
+
 In the MIDI tab, the user can choose a MIDI driver (Port MIDI, for example - see "Midi Driver") and a MIDI controller for input (see "Input Device" - Warning! The MIDI controller should be already connected and detected by the computer to be detected by Cecilia5). For an automatic detection of your MIDI controller by Cecilia5, check the "Automatic Midi Bindings" box.
-**image 4-Onglet_MIDI.png**
 
-\subsection
-In the "Export" tab, the user can set the default file format (AIFF or WAV - see "File Format") and the bit depth (16, 24 or 32 bits integer, or 32 bits float) of the output sound files that will be exported to hard drive.
-**image 5-Onglet_export.png**
+.. image:: /images/Onglet_MIDI.png
+
+Export
+----------
+
+In the "Export" tab, the user can set the default file format (WAV, AIFF, FLAC, OGG, SD2, AU, CAF - see "File Format") and the bit depth (16, 24 or 32 bits integer, or 32 bits float) of the output sound files that will be exported to hard drive.
+
+.. image:: /images/Onglet_export.png
+
+Cecilia
+--------
 
-\subsection
 The "Cecilia5" tab provides different settings:
-\begin{itemize}
-\item The default duration (10, 30, 60, 120, 300, 600, 1200, 2400 or 3600 seconds - see "Total time default (sec)" of the output sound file and its default fadein/fadeout duration (0, 0.001, 0.002, 0.003, 0.004, 0.005, 0.01, 0.015, 0.02, 0.025, 0.03, 0.05, 0.075, 0.1, 0.2, 0.3, 0.4 or 0.5 seconds - see "Global fadein/fadeout (sec)").
-\item Check the "Use tooltips" box to see the yellow information windows appear in the graphical interface during using Cecilia5.
-\item Check the "Use grapher texture" to obtain a precise grid on the graph.
-\item Check the "Verbose" box to obtain more information when you work with Cecilia5 from the terminal, which can be useful for debugging.
-\end{itemize}
-**image 6-Onglet_Cecilia5.png**
-
---> À ajouter si c'est implanté: "last saved" loade le dernier module à avoir été sauvegardé par l'utilisateur (?) 
\ No newline at end of file
+    - The default duration (10, 30, 60, 120, 300, 600, 1200, 2400 or 3600 seconds - see "Total time default (sec)" of the output sound file and its default fadein/fadeout duration (0, 0.001, 0.002, 0.003, 0.004, 0.005, 0.01, 0.015, 0.02, 0.025, 0.03, 0.05, 0.075, 0.1, 0.2, 0.3, 0.4 or 0.5 seconds - see "Global fadein/fadeout (sec)").
+    - Check the "Use tooltips" box to see the yellow information windows appear in the graphical interface during using Cecilia5.
+    - Check the "Use grapher texture" to obtain a precise grid on the graph.
+    - Check the "Verbose" box to obtain more information when you work with Cecilia5 from the terminal, which can be useful for debugging.
+
+.. image:: /images/Onglet_Cecilia5.png
diff --git a/doc-en/source/src/interface/interface.rst b/doc-en/source/src/interface/interface.rst
new file mode 100644
index 0000000..51a6a80
--- /dev/null
+++ b/doc-en/source/src/interface/interface.rst
@@ -0,0 +1,87 @@
+Interface
+=============
+
+In Cecilia5, all built-in modules come with a graphical interface, which is divided in different sections, common to all treatment and synthesis modules of the software: the transports bar, the In/Out, Pre-processing and Post-Processing tabs, the presets section, the graphic and the sliders that control the parameters of the module. All these sections will be described in this chapter.
+
+
+.. image:: /images/Interface-graphique.png
+
+Transport panel
+-----------------
+
+The transport section contains a window that indicates the current time of playback of the output sound file and two buttons: "Play/stop" and "Record".
+
+.. image:: /images/Transport.png
+
+ 
+-"Play/stop" button: Press to launch playback of the output sound file.  Click again to stop.
+
+
+-"Record" button: Press to record output to a file.  No sound will be heard.  A "Save audio file as ..." dialog window will appear. By default, all sound files will be recorded in AIFF format and will be named by the name of the module (with the extension .aif).
+
+.. image:: /images/SaveAudioFileAs.png
+
+Input - Output
+----------------
+
+The In/Out tab, which is situated below the transports bar, features different control options related to the input/output sound files.
+
+Input
+********
+
+.. image:: /images/Input.png
+
+This section is only provided with the treatment modules. To import an audio file from hard drive, click on the "Audio" menu and select your file from the standard dialog. Accepted file formats are WAV, AIFF, FLAC, OGG, SD2, AU or CAF. All audio files located in the same folder as the chosen file will be loaded in the popup menu.  
+
+In the Input section, these icons are shortcuts to some features of Cecilia5:
+
+.. image:: /images/Icones-In.png
+
+
+Click on the loudspeaker to listen to the imported sound file or to the output sound file with another sound player or sequencer application. If no application has been selected in the Preferences yet, a dialog window will appear.  Please select a sound player in the Application folder.
+
+.. image:: /images/ChooseSoundfilePlayer.png
+
+Click on the scissors to edit the sound file in an editor application. If no application has been selected in the Preferences yet, a dialog window will appear.  Please select a sound editor in the Application folder. 
+
+.. image:: /images/ChooseSoundfileEditor.png
+
+
+Click on the triangle to open the "Sound source controls" dialog window for more options on the source sound file:
+
+.. image:: /images/SourceSoundControls.png
+
+In this window, as in the main Input section, click on the loudspeaker to play the source sound file or on the scissors to edit the source sound file with an external application. Click on the icon clock to set the duration of the output sound to the source sound duration.
+
+.. image:: /images/Icones-SSC.png
+
+The "Audio Offset" slider sets the offset time into the source sound (start position in the source sound file).  In the "Loop" menu, there are four options available: Off (no loop), Forward (forward loop), Backward (backward loop) and Back & Forth (forward and backward loop in alternance).
+
+If the "Start from loop" box is checked, Cecilia will start reading the sound file from the loop point.  If the "Xfade" box is checked, Cecilia will make a crossfade between loops.
+
+The "Loop In" slider sets the start position of the loop in the source soundfile.
+
+The "Loop Time" slider sets the duration (in seconds) of the loop.
+
+The "Loop X" slider sets the duration of the crossfade between two loops (percentage of the total loop time).
+
+The "Gain" slider sets the intensity (in decibels) of the sound source.
+
+Move the "Transpo" slider to transpose (direct transposition) the original sound file.  The duration of the sound file is affected by the transposition, as while reading a tape at different speeds.
+
+All settings can be controlled through automations.  To record an automation, click on the red circle on the left side of the slider and press play (on the transport bar) to read the sound file.  All slider variations will then be recorded in real time in the graphic of the interface.  Afterwards, you can modify the automation curve in the graphic (see the corresponding following section).  Then, click on the green triangle to enable automation while playing the sound file.
+
+Output
+**********
+
+
+.. image:: /images/Output.png
+
+This section contains all options for recording the audio file on hard drive. Click on the "file name" label to choose the name, format and repertory of the audio file to record.
+Then, two sliders allows you to choose the duration (in seconds) and the gain (in decibels) of the output file.  Enter the number of audio channels in the "Channels" bar.  The "Peak" bar indicates the maximum intensity of the audio signal.
+
+In the Output section, these icons are shortcuts to some features of Cecilia5:
+
+.. image:: /images/Icones-Out.png
+
+In the Output section, as in the Input section, click on the loudspeaker to play the source sound file or on the scissors to edit the source sound file with an external application (see above). Click on the arrows to use the output sound file as the source sound.
diff --git a/doc-en/source/src/interface/post-processing.rst b/doc-en/source/src/interface/post-processing.rst
new file mode 100644
index 0000000..371b060
--- /dev/null
+++ b/doc-en/source/src/interface/post-processing.rst
@@ -0,0 +1,169 @@
+Post-Processing
+===================
+
+The post-processing tab is situated below the transports bar, just beside the In/Out tab.
+
+.. image:: /images/Post-processing.png
+
+In this tab, you can add post-processing effects on the output audio file. It is possible to add up to 3 post-processing modules.  Signal routing is from top to bottom.  Set audio parameters with the buttons on the left side.  Computation must be restarted for the post-processing to take effects.
+
+Choose the post-processing module in the "Effects" menu. The "Type" menu allows you to alternate between active module and bypass or to make a choice between different options, depending of the module.
+
+Reverberation
+---------------------------------------
+
+**Parameters**
+    - Mix (dry/wet mix)
+    - Time (reverberation time in seconds)
+    - Damp (filtering of high frequencies)
+    
+In the "Type" menu, you can choose between activate (active) and bypass the effect.
+
+
+Filter
+---------------------------------------
+
+**Parameters** 
+    - Level (gain of the filtered signal, in decibels)
+    - Freq (cutoff frequency or central frequency of the filter)
+    - Q (Q factor/filter resonance). 
+    
+In the "Type" menu, you can choose between four types of filters : lowpass, highpass, bandpass and band reject. You can also select "bypass" to bypass the effect.
+
+Chorus
+---------------------------------------
+
+**Parameters** 
+    - Mix (dry/wet mix)
+    - Depth (amplitude of the modulation)
+    - Feed (feedback factor). 
+    
+In the "Type" menu, you can choose between activate (active) and bypass the effect.
+
+Parametric equalizer
+---------------------------------------
+
+**Parameters** 
+    - Freq (cutoff frequency or central frequency of the filter)
+    - Q (Q factor/filter resonance)
+    - Gain (intensity of the filtered signal, in decibels). 
+    
+In the "Type" menu, you can choose between three types of equalizers: Peak/Notch, Lowshelf and Highshelf. You can also select "bypass" to bypass the effect.
+
+Equalizer in three frequency bands
+---------------------------------------
+
+**Parameters** 
+    - Low (low-freq filtering)
+    - Mid (mid-freq filtering)
+    - High (high-freq filtering). 
+    
+In the "Type" menu, you can choose between activate (active) and bypass the effect.
+
+Compression
+---------------------------------------
+
+**Parameters** 
+    - Thresh (compression threshold, in decibels)
+    - Ratio (compression ratio)
+    - Gain (intensity of the compressed signal, in decibels). 
+    
+In the "Type" menu, you can choose between activate (active) and bypass the effect.
+
+Noise gate
+---------------------------------------
+
+**Parameters** 
+    - Thresh (in decibels - threshold below which the sound is attenuated)
+    - Rise (rise time or attack, in seconds)
+    - Fall (release time, in seconds). 
+    
+In the "Type" menu, you can choose between activate (active) and bypass the effect.
+
+Distorsion
+---------------------------------------
+
+**Parameters** 
+    - Drive (intensity of the distorsion; from 0 - no distorsion - to 1 - square transfert fonction)
+    - Slope (normalized cutoff frequency of the low-pass filter; from 0 - no filter - to 1 - very low cutoff frequency)
+    - Gain (level of the distorted signal, in decibels). 
+    
+In the "Type" menu, you can choose between activate (active) and bypass the effect.
+
+Amplitude modulator
+---------------------------------------
+
+**Parameters** 
+    - Freq (frequency of the modulating wave)
+    - Amp (amplitude of the modulating wave)
+    - Stereo (phase difference between the two stereo channels; from 0 - no phase difference - and 1 - left and right channels are modulated in alternance through the phase offset of the modulator of the right channel). 
+    
+In the "Type" menu, you can choose between amplitude modulation (Amplitude) and ring modulation (RingMod) or bypass the effect.
+
+Phaser
+---------------------------------------
+
+Phasing effect based on all-pass filters that generates resonance peaks in the spectrum. 
+
+**Parameters** 
+    - Freq (frequency of the first all-pass filter)
+    - Q (Q factor/filter resonance)
+    - Spread (spread factor - exponential operator that determinates the frequency of all other all-pass filters). 
+    
+In the "Type" menu, you can choose between activate (active) and bypass the effect.
+
+Delay
+---------------------------------------
+
+**Parameters** 
+    - Delay (delay time, in milliseconds)
+    - Feed (feedback factor, between 0 and 1)
+    - Mix (dry/wet mix). 
+    
+In the "Type" menu, you can choose between activate (active) and bypass the effect.
+
+Flanger
+---------------------------------------
+
+**Parameters** 
+    - Depth (amplitude of the LFO that modulates the delay. The modulation is set around a central time of 5 milliseconds 
+    - Freq (frequency of the modulating LFO)
+    - Feed (feedback factor - enhances the resonances in the spectrum). 
+    
+In the "Type" menu, you can choose between activate (active) and bypass the effect.
+
+Transposition
+---------------------------------------
+
+**Parameters** 
+    - Transpo (transposition factor, in semi-tones), 
+    - Feed (feedback factor)
+    - Mix (dry/wet mix). 
+    
+In the "Type" menu, you can choose between activate (active) and bypass the effect.
+
+Resonators
+---------------------------------------
+
+Audio effect based on delays that generates harmonic resonances in the spectrum. 
+
+**Parameters** 
+    - Freq (frequency of the first harmonic resonance)
+    - Spread (spread factor - exponential operator that determinates the frequency of all other harmonic resonances)
+    - Mix (dry/wet mix). 
+    
+In the "Type" menu, you can choose between activate (active) and bypass the effect.
+
+Detuned resonators
+---------------------------------------
+
+Similar to the Resonators effect. In this case, the harmonic resonances are slightly detuned. 
+
+**Parameters** 
+    - Freq (frequency of the first harmonic resonance)
+    - Detune (detune of the other harmonic resonances)
+    - Mix (dry/wet mix). 
+    
+In the "Type" menu, you can choose between activate (active) and bypass the effect.
+
+
diff --git a/doc/chapitres/Chapitre1_A/Description_A.txt b/doc-en/source/src/intro/description.rst
similarity index 76%
rename from doc/chapitres/Chapitre1_A/Description_A.txt
rename to doc-en/source/src/intro/description.rst
index c96b56d..e1073ae 100644
--- a/doc/chapitres/Chapitre1_A/Description_A.txt
+++ b/doc-en/source/src/intro/description.rst
@@ -1,5 +1,8 @@
+About Cecilia
+================
+
 Cecilia is an audio signal processing environment. Cecilia lets you create your own GUI (grapher, sliders, toggles, popup menus) using a simple syntax. Cecilia comes with many original built-in modules for sound effects and synthesis.
 
-Previously written in tcl/tk, Cecilia (version 4, deprecated) used the Csound API for communicating between the interface and the audio engine. Version 4.2 is the final release of version 4.
+Previously written in tcl/tk, Cecilia (version 4, deprecated) used the Python-Csound API for communicating between the interface and the audio engine. Version 4.2 is the final release of version 4.
 
-Cecilia5 has been now entirely rewritten in Python/wxPython and uses Pyo, an audio engine written in C and created for the Python programming language. Pyo allows a much more powerful integration of the audio engine to the graphical interface. Since it is a standard python module, there is no need to use an API to communicate with the interface.
\ No newline at end of file
+Cecilia5 has been now entirely rewritten in Python/wxPython and uses Pyo, an audio engine written in C and created for the Python programming language. Pyo allows a much more powerful integration of the audio engine to the graphical interface. Since it is a standard python module, there is no need to use an API to communicate with the interface.
diff --git a/doc-en/source/src/intro/requirements.rst b/doc-en/source/src/intro/requirements.rst
new file mode 100644
index 0000000..012ab96
--- /dev/null
+++ b/doc-en/source/src/intro/requirements.rst
@@ -0,0 +1,15 @@
+Requirements
+===============
+
+Cecilia5 is compatible with the following systems:
+    - Mac OS X (from 10.5 to 10.8) 
+    - Windows (XP, Vista, Seven or 8)
+    - Linux (In this case, you should install Pyo (a python library for audio signal processing) from the source code first (under Debian distros, python-pyo can be installed with the package manager); then you will be able to run Cecilia5.  For the complete procedure, follow this link: http://code.google.com/p/pyo/wiki/Installation )
+
+Minimum versions (for running Cecilia5 from sources):
+
+Before installing and using Cecilia5 (especially if you do it from the source code), please check if all these elements are installed on your computer:
+    - Python 2.6 ou 2.7 (http://www.python.org/getit/releases/2.6/ or http://www.python.org/getit/releases/2.7/)
+    - Pyo 0.6.6 (or compiled with sources up-to-date - http://code.google.com/p/pyo/downloads/list)
+    - Numpy 1.6.0 (http://sourceforge.net/projects/numpy/files/NumPy/1.6.0/)
+    - WxPython 2.8.12.1 (http://wxpython.org/download.php) 
diff --git a/doc-en/source/src/modules/dynamics/degrade.rst b/doc-en/source/src/modules/dynamics/degrade.rst
new file mode 100644
index 0000000..bc43654
--- /dev/null
+++ b/doc-en/source/src/modules/dynamics/degrade.rst
@@ -0,0 +1,25 @@
+Degrade
+==========
+
+Sampling rate and bit depth degradation module with optional waveform aliasing around a clipping threshold.
+
+
+.. image:: /images/Parametres_Degrade.png
+
+Sliders under the graph:
+    - Bit Depth: Resolution of the amplitude in bits.
+    - Sampling Rate Ratio: Ratio of the new sampling rate compared to the original one.
+    - Wrap Threshold: Clipping limit (for the waveform aliasing) between -1 and 1 (signal then wraps around the thresholds).
+    - Filter Freq: Center or cut-off frequency of the filter.
+    - Filter Q: Q factor of the filter
+    - Dry/Wet: Mix between the original signal and the degraded signal.
+
+Dropdown menus and toggles:
+    - Filter Type: Type of filter (lowpass, highpass, bandpass or bandstop).
+    - Clip Type: Choose between degradation only or degradation with waveform aliasing.
+    - Balance: Adjust the signal amplitude by comparing it with a sinusoidal wave with a fixed amplitude (see "compress") or with the amplitude of the source (see "source").
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc-en/source/src/modules/dynamics/distortion.rst b/doc-en/source/src/modules/dynamics/distortion.rst
new file mode 100644
index 0000000..cdcbb49
--- /dev/null
+++ b/doc-en/source/src/modules/dynamics/distortion.rst
@@ -0,0 +1,24 @@
+Distortion
+======================
+
+Distortion module with pre and post filters.
+
+
+.. image:: /images/Parametres_Distorsion.png
+
+Sliders under the graph:
+    - Pre-Filter Freq: Center or cut-off frequency of the filter applied before distortion.
+    - Pre-Filter Q: Q factor of the filter applied before distorsion.
+    - Drive: Amount of distortion applied on the signal.
+    - Post-Filter Freq: Center or cut-off frequency of the filter applied after distortion.
+    - Post-Filter Q: Q factor of the filter applied after distortion.
+
+Dropdown menus and toggles:
+    - Pre-Filter Type: Type of filter used before distortion (lowpass, highpass, bandpass or bandstop).
+    - Post-Filter Type: Type of filter used after distortion (lowpass, highpass, bandpass or bandstop).
+    - Balance: Adjust the signal amplitude by comparing it with a sinusoidal wave with a fixed amplitude (see "compress") or with the amplitude of the source (see "source").
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc-en/source/src/modules/dynamics/dynamicsProcessor.rst b/doc-en/source/src/modules/dynamics/dynamicsProcessor.rst
new file mode 100644
index 0000000..49768f8
--- /dev/null
+++ b/doc-en/source/src/modules/dynamics/dynamicsProcessor.rst
@@ -0,0 +1,26 @@
+Dynamics Processor
+=====================
+
+Compression and noise gate module.
+
+
+.. image:: /images/Parametres_Dynamics.png
+
+Sliders under the graph:
+    - Input Gain: Adjust the amount of signal sent to the processing chain.
+    - Compression Thresh: Value in decibels at which the compressor becomes active.
+    - Compression Rise Time: Time taken by the compressor to reach compression ratio.
+    - Compression Fall Time: Time taken by the compressor to reach uncompressed state.
+    - Compression Knee: Steepness of the compression curve.
+    - Gate Thresh: Value in decibels at which the noise gate becomes active.
+    - Gate Slope: Shape of the gate (rise time and fall time).
+    - Output Gain: Makeup gain applied after the processing chain.
+
+Dropdown menus and toggles:
+    - Compression Ratio: Ratio between the compressed signal and the uncompressed signal.
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Transfer Function: Table used for waveshaping
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc-en/source/src/modules/dynamics/index.rst b/doc-en/source/src/modules/dynamics/index.rst
new file mode 100644
index 0000000..16f97be
--- /dev/null
+++ b/doc-en/source/src/modules/dynamics/index.rst
@@ -0,0 +1,12 @@
+Dynamics
+============
+
+.. toctree::
+   :maxdepth: 2
+   
+   degrade
+   distortion
+   dynamicsProcessor
+   waveShaper
+
+
diff --git a/doc-en/source/src/modules/dynamics/waveShaper.rst b/doc-en/source/src/modules/dynamics/waveShaper.rst
new file mode 100644
index 0000000..56b0d8c
--- /dev/null
+++ b/doc-en/source/src/modules/dynamics/waveShaper.rst
@@ -0,0 +1,20 @@
+Wave Shaper
+=============
+
+Waveshaping module working with a filter.
+
+
+.. image:: /images/Parametres_WaveShaper.png
+
+Sliders under the graph:
+    - Filter Freq: Center frequency of the filter
+    - Filter Q: Q factor of the filter
+
+Dropdown menus and toggles:
+    - Filter Type: Type of filter (lowpass, highpass, bandpass or bandstop).
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Transfer Function: Table used for waveshaping
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc-en/source/src/modules/filters/AMFilter.rst b/doc-en/source/src/modules/filters/AMFilter.rst
new file mode 100644
index 0000000..d393f43
--- /dev/null
+++ b/doc-en/source/src/modules/filters/AMFilter.rst
@@ -0,0 +1,25 @@
+AMFMFilter
+============
+
+Filtering module that works with an amplitude modulation (AM filter) or a frequency modulation (FM filter).
+
+
+.. image:: /images/Parametres_AMFilter.png
+
+Sliders under the graph:
+    - Filter Freq: Center or cut-off frequency of the filter.
+    - Resonance: Q factor (resonance) of the filter.
+    - Mod Depth: Amplitude of the modulating wave (LFO - Low frequency oscillator).
+    - Mod Freq: Frequency of the modulating wave (LFO).
+    - Dry/Wet: Mix between the original signal and the filtered signal.
+
+Dropdown menus and toggles:
+    - Filter Type: Type of the filter (lowpass, highpass, bandpass or bandstop).
+    - AM Mod Type: Waveform of the modulating LFO for amplitude modulation (saw up, saw down, square, triangle, pulse, bi-polar pulse, sample & hold or modulated sine).
+    - FM Mod Type: Waveform of the modulating LFO for frequency modulation (saw up, saw down, square, triangle, pulse, bi-polar pulse, sample & hold or modulated sine).
+    - Balance: Adjust the signal amplitude by comparing it with a sinusoidal wave with a fixed amplitude (see "compress") or with the amplitude of the source (see "source").
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc-en/source/src/modules/filters/brickWall.rst b/doc-en/source/src/modules/filters/brickWall.rst
new file mode 100644
index 0000000..a922c69
--- /dev/null
+++ b/doc-en/source/src/modules/filters/brickWall.rst
@@ -0,0 +1,21 @@
+BrickWall
+==========
+
+Convolution brickwall lowpass or highpass filter.
+
+
+.. image:: /images/Parametres_BrickWall.png
+
+Sliders under the graph:
+    - Cut-off Frequency: cut-off frequency of the lowpass/highpass filter.
+    - Bandwidth: Bandwidth of the lowpass/highpass filter.
+    - Filter order: Filter order of the lowpass/highpass filter.
+
+Dropdown menus and toggles:
+    - Label Type: Type of filter (lowpass or highpass).
+    - Balance: Adjust the signal amplitude by comparing it with a sinusoidal wave with a fixed amplitude (see "compress") or with the amplitude of the source (see "source").
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc-en/source/src/modules/filters/index.rst b/doc-en/source/src/modules/filters/index.rst
new file mode 100644
index 0000000..cf2d053
--- /dev/null
+++ b/doc-en/source/src/modules/filters/index.rst
@@ -0,0 +1,14 @@
+Filters
+============
+
+.. toctree::
+   :maxdepth: 2
+   
+   AMFilter
+   brickWall
+   maskFilter
+   paramEQ
+   phaser
+   vocoder
+
+
diff --git a/doc/chapitres/Chapitre5_A/5.3-MaskFilter_A.txt b/doc-en/source/src/modules/filters/maskFilter.rst
similarity index 50%
rename from doc/chapitres/Chapitre5_A/5.3-MaskFilter_A.txt
rename to doc-en/source/src/modules/filters/maskFilter.rst
index e4b1ab9..e2eaa44 100644
--- a/doc/chapitres/Chapitre5_A/5.3-MaskFilter_A.txt
+++ b/doc-en/source/src/modules/filters/maskFilter.rst
@@ -1,23 +1,21 @@
+Mask Filter
+============
+
 Ranged filter module using band-pass filtering made with lowpass and highpass filters.
 
-**image 3-Parametres_MaskFilter.png**
+
+.. image:: /images/Parametres_MaskFilter.png
 
 Sliders under the graph:
-\begin{itemize}
-\item Filter 1 limits: Range of the first filter (minimum value = cut-off frequency of the highpass filter; maximum value = cut-off frequency of the lowpass filter).
-\item Filter 2 limits: Range of the first filter (minimum value = cut-off frequency of the highpass filter; maximum value = cut-off frequency of the lowpass filter).
-\item Mix: **à vérifier!**
-\end{itemize}
+    - Filter 1 limits: Range of the first filter (minimum value = cut-off frequency of the highpass filter; maximum value = cut-off frequency of the lowpass filter).
+    - Filter 2 limits: Range of the first filter (minimum value = cut-off frequency of the highpass filter; maximum value = cut-off frequency of the lowpass filter).
+    - Mix: Balance between dry sound and processed sound.
 
 Dropdown menus and toggles:
-\begin{itemize}
-\item Number of Stages: Amount of stacked biquad filters.
-\item Balance: Adjust the signal amplitude by comparing it with a sinusoidal wave with a fixed amplitude (see "compress") or with the amplitude of the source (see "source").
-\item # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
-\item Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-\end{itemize}
+    - Number of Stages: Amount of stacked biquad filters.
+    - Balance: Adjust the signal amplitude by comparing it with a sinusoidal wave with a fixed amplitude (see "compress") or with the amplitude of the source (see "source").
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
 
 Graph only parameters:
-\begin{itemize}
-\item Overall Amplitude: The amplitude curve applied on the total duration of the performance.
-\end{itemize}
\ No newline at end of file
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc-en/source/src/modules/filters/paramEQ.rst b/doc-en/source/src/modules/filters/paramEQ.rst
new file mode 100644
index 0000000..198342a
--- /dev/null
+++ b/doc-en/source/src/modules/filters/paramEQ.rst
@@ -0,0 +1,33 @@
+Param EQ
+=============
+
+Parametric equalization module.
+
+
+.. image:: /images/Parametres_ParamEQ.png
+
+Sliders under the graph:
+    - Freq 1 Boost/Cut: Gain of the first equalizer.
+    - Freq 1: Center or cut-off frequency of the first equalizer.
+    - Freq 1 Q: Q factor of the first equalizer.
+    - Freq 2 Boost/Cut: Gain of the second equalizer.
+    - Freq 2: Center or cut-off frequency of the second equalizer.
+    - Freq 2 Q: Q factor of the second equalizer.
+    - Freq 3 Boost/Cut: Gain of the third equalizer.
+    - Freq 3: Center or cut-off frequency of the third equalizer.
+    - Freq 3 Q: Q factor of the third equalizer.
+    - Freq 4 Boost/Cut: Gain of the fourth equalizer.
+    - Freq 4: Center or cut-off frequency of the fourth equalizer.
+    - Freq 4 Q: Q factor of the fourth equalizer.
+
+Dropdown menus and toggles:
+    - EQ 1 Type: Type of the first equalizer (Peak/Notch, Lowshelf, Highshelf).
+    - EQ 2 Type: Type of the second equalizer (Peak/Notch, Lowshelf, Highshelf).
+    - EQ 3 Type: Type of the third equalizer (Peak/Notch, Lowshelf, Highshelf).
+    - EQ 4 Type: Type of the fourth equalizer (Peak/Notch, Lowshelf, Highshelf).
+    - Balance: Adjust the signal amplitude by comparing it with a sinusoidal wave with a fixed amplitude (see "compress") or with the amplitude of the source (see "source").
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc-en/source/src/modules/filters/phaser.rst b/doc-en/source/src/modules/filters/phaser.rst
new file mode 100644
index 0000000..078e234
--- /dev/null
+++ b/doc-en/source/src/modules/filters/phaser.rst
@@ -0,0 +1,22 @@
+Phaser
+============
+
+Phasing effect module.
+
+
+.. image:: /images/Parametres_Phaser.png
+
+Sliders under the graph:
+    - Center Freq: Center frequency of the phaser (all-pass filter).
+    - Q Factor: Q factor (resonance) of the phaser (all-pass filter).
+    - Notch Spread: Distance between the phaser notches.
+    - Feedback: Amount of phased signal fed back into the phaser.
+    - Dry/Wet: Mix between the original signal and the phased signal.
+
+Dropdown menus and toggles:
+    - Number of Stages: Number of stacked filters - changes notches bandwidth.
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc-en/source/src/modules/filters/vocoder.rst b/doc-en/source/src/modules/filters/vocoder.rst
new file mode 100644
index 0000000..bc966d4
--- /dev/null
+++ b/doc-en/source/src/modules/filters/vocoder.rst
@@ -0,0 +1,23 @@
+Vocoder
+============
+
+Vocoder module in which the user will have to choose two inputs: a source signal (see "Spectral Envelope" - a signal with a preferably rich spectral envelope) and an exciter (see "Exciter" - preferably a dynamic signal).
+
+
+.. image:: /images/Parametres_Vocoder.png
+
+Sliders under the graph:
+    - Base Frequency: Frequency of the first filter of the analyzer.
+    - Frequency Spread: Frequency spread factor - exponential operator that determinates the frequency of all other filters of the analyzer.
+    - Q Factor: Q factor of the filters of the analyzer.
+    - Time Response: Time response of the envelope followers.
+    - Gain: Gain of the vocoder filters.
+    - Num of Bands: Number of filters for analyzing the signal.
+
+Dropdown menus and toggles:
+    - Balance: Adjust the signal amplitude by comparing it with a sinusoidal wave with a fixed amplitude (see "compress") or with the amplitude of the source (see "source").
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc-en/source/src/modules/index.rst b/doc-en/source/src/modules/index.rst
new file mode 100644
index 0000000..476865a
--- /dev/null
+++ b/doc-en/source/src/modules/index.rst
@@ -0,0 +1,16 @@
+Built-in modules
+=================
+
+.. toctree::
+   :maxdepth: 2
+   
+   dynamics/index
+   filters/index
+   multiband/index
+   pitch/index
+   resonators/index
+   spectral/index
+   synthesis/index
+   time/index
+
+
diff --git a/doc-en/source/src/modules/multiband/index.rst b/doc-en/source/src/modules/multiband/index.rst
new file mode 100644
index 0000000..695ff48
--- /dev/null
+++ b/doc-en/source/src/modules/multiband/index.rst
@@ -0,0 +1,15 @@
+Multi-band Processors
+=======================
+
+.. toctree::
+   :maxdepth: 2
+   
+   multiBandBeatMaker
+   multiBandDelay
+   multiBandDisto
+   multiBandFreqShift
+   multiBandGate
+   multiBandHarmonizer
+   multiBandReverb
+
+
diff --git a/doc-en/source/src/modules/multiband/multiBandBeatMaker.rst b/doc-en/source/src/modules/multiband/multiBandBeatMaker.rst
new file mode 100644
index 0000000..d416b65
--- /dev/null
+++ b/doc-en/source/src/modules/multiband/multiBandBeatMaker.rst
@@ -0,0 +1,37 @@
+MultiBandBeatMaker
+======================
+
+Multi-band algorithmic beatmaker module.
+
+
+.. image:: /images/Parametres_MBBeatMaker.png
+
+Sliders under the graph:
+    - Frequency splitter: Split points of the frequency range for multi-band processing.
+    - # of Taps: Number of taps in a measure.
+    - Tempo: Speed of taps (in beats per minute).
+    - Tap Length: Length of taps (in seconds).
+    - Beat 1 Index: Soundfile index of the first beat.
+    - Beat 2 Index: Soundfile index of the second beat.
+    - Beat 3 Index: Soundfile index of the third beat.
+    - Beat 4 Index: Soundfile index of the fourth beat.
+    - Beat 1 Distribution: Repartition of taps for the first beat (100 % weak --> 100 % down).
+    - Beat 2 Distribution: Repartition of taps for the second beat (100 % weak --> 100 % down).
+    - Beat 3 Distribution: Repartition of taps for the third beat (100 % weak --> 100 % down).
+    - Beat 4 Distribution: Repartition of taps for the fourth beat (100 % weak --> 100 % down).
+    - Beat 1 Gain: Gain of the first beat.
+    - Beat 2 Gain: Gain of the second beat.
+    - Beat 3 Gain: Gain of the third beat.
+    - Beat 4 Gain: Gain of the fourth beat.
+    - Global Seed: Seed value for the algorithmic beats; using the same seed with the same distributions will yield the exact same beats.
+
+Dropdown menus and toggles:
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Beat 1 ADSR: Envelope of taps for the first beat in breakpoint fashion.
+    - Beat 2 ADSR: Envelope of taps for the second beat in breakpoint fashion.
+    - Beat 3 ADSR: Envelope of taps for the third beat in breakpoint fashion.
+    - Beat 4 ADSR: Envelope of taps for the fourth beat in breakpoint fashion.
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc-en/source/src/modules/multiband/multiBandDelay.rst b/doc-en/source/src/modules/multiband/multiBandDelay.rst
new file mode 100644
index 0000000..3d43a7b
--- /dev/null
+++ b/doc-en/source/src/modules/multiband/multiBandDelay.rst
@@ -0,0 +1,29 @@
+MultiBandDelay
+=================
+
+Multi-band delay module.
+
+
+.. image:: /images/Parametres_MBDelay.png
+
+Sliders under the graph:
+    - Frequency Splitter: Split points in the frequency range for multi-band processing.
+    - Delay Band 1: Delay time for the first band (in seconds).
+    - Feedback Band 1: Amount of delayed signal fed back into the first band delay.
+    - Gain Band 1: Gain of the delayed first band (in decibels).
+    - Delay Band 2: Delay time for the second band (in seconds).
+    - Feedback Band 2: Amount of delayed signal fed back into the second band delay.
+    - Gain Band 2: Gain of the delayed second band (in decibels).
+    - Delay Band 3: Delay time for the third band (in seconds).
+    - Feedback Band 3: Amount of delayed signal fed back into the third band delay.
+    - Gain Band 3: Gain of the delayed third band (in decibels).
+    - Delay Band 4: Delay time for the fourth band (in seconds).
+    - Feedback Band 4: Amount of delayed signal fed back into the fourth band delay.
+    - Gain Band 4: Gain of the delayed fourth band (in decibels).
+
+Dropdown menus and toggles:
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc-en/source/src/modules/multiband/multiBandDisto.rst b/doc-en/source/src/modules/multiband/multiBandDisto.rst
new file mode 100644
index 0000000..efcc8e6
--- /dev/null
+++ b/doc-en/source/src/modules/multiband/multiBandDisto.rst
@@ -0,0 +1,32 @@
+MultiBandDisto
+================
+
+Multi-band distortion module.
+
+
+.. image:: /images/Parametres_MBDisto.png
+
+Sliders under the graph:
+    - Frequency Splitter: Split points in the frequency range for multi-band processing.
+    - Band 1 Drive: Amount of distortion applied on the first band.
+    - Band 1 Slope: Harshness of distorted first band.
+    - Band 1 Gain: Gain of the distorted first band.
+    - Frequency Splitter: Split points in the frequency range for multi-band processing.
+    - Band 2 Drive: Amount of distortion applied on the second band.
+    - Band 2 Slope: Harshness of distorted second band.
+    - Band 2 Gain: Gain of the distorted second band.
+    - Frequency Splitter: Split points in the frequency range for multi-band processing.
+    - Band 3 Drive: Amount of distortion applied on the third band.
+    - Band 3 Slope: Harshness of distorted third band.
+    - Band 3 Gain: Gain of the distorted third band.
+    - Frequency Splitter: Split points in the frequency range for multi-band processing.
+    - Band 4 Drive: Amount of distortion applied on the fourth band.
+    - Band 4 Slope: Harshness of distorted fourth band.
+    - Band 4 Gain: Gain of the distorted fourth band.
+
+Dropdown menus and toggles:
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc-en/source/src/modules/multiband/multiBandFreqShift.rst b/doc-en/source/src/modules/multiband/multiBandFreqShift.rst
new file mode 100644
index 0000000..6c83d5e
--- /dev/null
+++ b/doc-en/source/src/modules/multiband/multiBandFreqShift.rst
@@ -0,0 +1,26 @@
+MultiBandFreqShift
+======================
+
+Multi-band frequency shifter module.
+
+
+.. image:: /images/Parametres_MBFreqShift.png
+
+Sliders under the graph:
+    - Frequency splitter: Split points in frequency range for multi-band processing.
+    - Freq Shift Band 1: Frequency shift of the first band (in Hertz).
+    - Gain Band 1: Gain of the shifted first band.
+    - Freq Shift Band 2: Frequency shift of the second band (in Hertz).
+    - Gain Band 2: Gain of the shifted second band.
+    - Freq Shift Band 3: Frequency shift of the third band (in Hertz).
+    - Gain Band 3: Gain of the shifted third band.
+    - Freq Shift Band 4: Frequency shift of the fourth band (in Hertz).
+    - Gain Band 4: Gain of the shifted fourth band.
+    - Dry/Wet: Mix between the original signal and the shifted signals.
+
+Dropdown menus and toggles:
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc-en/source/src/modules/multiband/multiBandGate.rst b/doc-en/source/src/modules/multiband/multiBandGate.rst
new file mode 100644
index 0000000..28b330a
--- /dev/null
+++ b/doc-en/source/src/modules/multiband/multiBandGate.rst
@@ -0,0 +1,27 @@
+MultiBandGate
+===============
+
+Multi-band noise gate module.
+
+
+.. image:: /images/Parametres_MBBandGate.png
+
+Sliders under the graph:
+    - Frequency Splitter: Split points in the frequency range for multi-band processing.
+    - Threshold Band 1: Value in decibels at which the gate becomes active on the first band.
+    - Gain Band 1: Gain of the gated first band (in decibels). 
+    - Threshold Band 2: Value in decibels at which the gate becomes active on the second band.
+    - Gain Band 2: Gain of the gated second band (in decibels).
+    - Threshold Band 3: Value in decibels at which the gate becomes active on the third band.
+    - Gain Band 3: Gain of the gated third band (in decibels).
+    - Threshold Band 4: Value in decibels at which the gate becomes active on the fourth band.
+    - Gain Band 4: Gain of the gated fourth band (in decibels).
+    - Rise Time: Time taken by the gate to close (in seconds).
+    - Fall Time: Time taken by the gate to re-open (in seconds).
+
+Dropdown menus and toggles:
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc-en/source/src/modules/multiband/multiBandHarmonizer.rst b/doc-en/source/src/modules/multiband/multiBandHarmonizer.rst
new file mode 100644
index 0000000..3d12cae
--- /dev/null
+++ b/doc-en/source/src/modules/multiband/multiBandHarmonizer.rst
@@ -0,0 +1,31 @@
+MultiBandHarmonizer
+=====================
+
+Multi-band harmonizer module.
+
+
+.. image:: /images/Parametres_MBHarmonizer.png
+
+Sliders under the graph:
+    - Frequency Splitter: Split points in the frequency range for multi-band processing.
+    - Transpo Band 1: Pitch shift in semi-tones for the first band.
+    - Feedback Band 1: Amount of harmonized signal fed back into the first band harmonizer. 
+    - Gain Band 1: Gain of the harmonized first band.
+    - Transpo Band 2: Pitch shift in semi-tones for the second band.
+    - Feedback Band 2: Amount of harmonized signal fed back into the second band harmonizer. 
+    - Gain Band 2: Gain of the harmonized second band.
+    - Transpo Band 3: Pitch shift in semi-tones for the third band.
+    - Feedback Band 3: Amount of harmonized signal fed back into the third band harmonizer. 
+    - Gain Band 3: Gain of the harmonized third band.
+    - Transpo Band 4: Pitch shift in semi-tones for the fourth band.
+    - Feedback Band 4: Amount of harmonized signal fed back into the fourth band harmonizer. 
+    - Gain Band 4: Gain of the harmonized fourth band.
+    - Dry/Wet: Mix between the original signal and the harmonized signals.
+
+Dropdown menus and toggles:
+    - Win Size: Window size (for delay). **à préciser**
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc-en/source/src/modules/multiband/multiBandReverb.rst b/doc-en/source/src/modules/multiband/multiBandReverb.rst
new file mode 100644
index 0000000..07f8168
--- /dev/null
+++ b/doc-en/source/src/modules/multiband/multiBandReverb.rst
@@ -0,0 +1,30 @@
+MultiBandReverb
+=================
+
+Multi-band reverb module.
+
+
+.. image:: /images/Parametres_MBReverb.png
+
+Sliders under the graph:
+    - Frequency Splitter: Split points in frequency range for multi-band processing.
+    - Reverb Band 1: Amount of reverb applied on first band.
+    - Cutoff Band 1: Damp - Cutoff frequency of the reverb's lowpass filter for the first band.
+    - Gain Band 1: Gain of the reverberized first band.
+    - Reverb band 2: Amount of reverb applied on second band.
+    - Cutoff Band 2: Damp - Cutoff frequency of the reverb's lowpass filter for the second band.
+    - Gain Band 2: Gain of the reverberized second band.
+    - Reverb band 3: Amount of reverb applied on third band.
+    - Cutoff Band 3: Damp - Cutoff frequency of the reverb's lowpass filter for the third band.
+    - Gain Band 3: Gain of the reverberized third band.
+    - Reverb band 4: Amount of reverb applied on fourth band.
+    - Cutoff Band 4: Damp - Cutoff frequency of the reverb's lowpass filter for the fourth band.
+    - Gain Band 4: Gain of the reverberized fourth band.
+    - Dry/Wet: Mix between the original signal and the harmonized signals.
+
+Dropdown menus and toggles:
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc-en/source/src/modules/pitch/chordMaker.rst b/doc-en/source/src/modules/pitch/chordMaker.rst
new file mode 100644
index 0000000..d0cabf5
--- /dev/null
+++ b/doc-en/source/src/modules/pitch/chordMaker.rst
@@ -0,0 +1,33 @@
+ChordMaker
+==============
+
+Sampler based harmonizer module with multiple voices.
+
+
+.. image:: /images/Parametres_ChordMaker.png
+
+Sliders under the graph:
+    - Transpo Voice 1: Pitch shift of the first voice.
+    - Gain Voice 1: Gain of the transposed first voice.
+    - Transpo Voice 2: Pitch shift of the second voice.
+    - Gain Voice 2: Gain of the transposed second voice.
+    - Transpo Voice 3: Pitch shift of the third voice.
+    - Gain Voice 3: Gain of the transposed third voice.
+    - Transpo Voice 4: Pitch shift of the fourth voice.
+    - Gain Voice 4: Gain of the transposed fourth voice.
+    - Transpo Voice 5: Pitch shift of the fifth voice.
+    - Gain Voice 5: Gain of the transposed fifth voice.
+    - Feedback: Amount of transposed signal fed back into the harmonizers (feedback is voice independent).
+    - Dry/Wet: Mix between the original signal and the harmonized signals.
+
+Dropdown menus and toggles:
+    - Voice 1: Mute or unmute the first voice 
+    - Voice 2: Mute or unmute the second voice
+    - Voice 3: Mute or unmute the third voice
+    - Voice 4: Mute or unmute the fourth voice
+    - Voice 5: Mute or unmute the fifth voice
+    - # of Polyphony: Number of voices played simultaneously (in polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
\ No newline at end of file
diff --git a/doc-en/source/src/modules/pitch/freqShift.rst b/doc-en/source/src/modules/pitch/freqShift.rst
new file mode 100644
index 0000000..530898e
--- /dev/null
+++ b/doc-en/source/src/modules/pitch/freqShift.rst
@@ -0,0 +1,25 @@
+FreqShift
+=============
+
+Double frequency shifter module.
+
+.. image:: /images/Parametres_FreqShift.png
+
+
+Sliders under the graph:
+    - Frequency Shift 1: First frequency shift value.
+    - Frequency Shift 2: Second frequency shift value.
+    - Filter Freq: Cut-off frequency of the lowpass filter.
+    - Filter Q: Q factor of the lowpass filter.
+    - Feedback Delay: Delay time (in seconds) causing the feedback.
+    - Feedback: 
+    - Feedback Gain: 
+    - Dry/Wet: Mix between the original signal and the shifted signals.
+
+Dropdown menus and toggles:
+    - Balance: Adjust the signal amplitude by comparing it with a sinusoidal wave with a fixed amplitude (see "compress") or with the amplitude of the source (see "source").
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc-en/source/src/modules/pitch/harmonizer.rst b/doc-en/source/src/modules/pitch/harmonizer.rst
new file mode 100644
index 0000000..4b712eb
--- /dev/null
+++ b/doc-en/source/src/modules/pitch/harmonizer.rst
@@ -0,0 +1,24 @@
+Harmonizer
+============
+
+Harmonizer module with two voices.
+
+.. image:: /images/Parametres_Harmonizer.png
+
+
+Sliders under the graph:
+    - Transpo Voice 1: Pitch shift of the first voice (in semi-tones).
+    - Transpo Voice 2: Pitch shift of the second voice (in semi-tones).
+    - Feedback: Amount of transposed signal fed back into the harmonizers (feedback is voice independent).
+    - Harm1/Harm2: Mix between the first and the second harmonized voices.
+    - Dry/Wet: Mix between the original signal and the harmonized signals.
+
+Dropdown menus and toggles:
+    - Win Size Voice 1: Window size of the first harmonizer for delay (1, 0.75, 0.5, 0.25, 0.2, 0.15, 0.1, 0.05 or 0.025).
+    - Win Size Voice 2: Window size of the first harmonizer for delay (1, 0.75, 0.5, 0.25, 0.2, 0.15, 0.1, 0.05 or 0.025).
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
+
diff --git a/doc-en/source/src/modules/pitch/index.rst b/doc-en/source/src/modules/pitch/index.rst
new file mode 100644
index 0000000..d255c86
--- /dev/null
+++ b/doc-en/source/src/modules/pitch/index.rst
@@ -0,0 +1,14 @@
+Pitch-related modules
+=======================
+
+.. toctree::
+   :maxdepth: 2
+   
+   chordMaker
+   freqShift
+   harmonizer
+   looperMod
+   pitchLooper
+
+
+
diff --git a/doc-en/source/src/modules/pitch/looperMod.rst b/doc-en/source/src/modules/pitch/looperMod.rst
new file mode 100644
index 0000000..0de03d2
--- /dev/null
+++ b/doc-en/source/src/modules/pitch/looperMod.rst
@@ -0,0 +1,27 @@
+LooperMod
+==============
+
+Looper module with optional amplitude and frequency modulation.
+
+.. image:: /images/Parametres_LooperMod.png
+
+
+Sliders under the graph:
+    - AM Range: Amplitude of the amplitude modulation LFO (low frequency oscillator).
+    - AM Speed: Frequency of the amplitude modulation LFO.
+    - FM Range: Amplitude of the frequency modulation LFO.
+    - FM Speed: Frequency of the frequency modulation LFO.
+    - Loop Range: Range in the soundfile to loop.
+    - Dry/Wet: Mix between the original signal and the processed signal.
+
+Dropdown menus and toggles:
+    - AM LFO Type: Waveform of the amplitude modulation wave (saw up, saw down, square, triangle, pulse, bipolar pulse, sample and hold or modulated sine).
+    - AM On/Off: To enable or disable the amplitude modulation.
+    - FM LFO Type: Waveform of the amplitude modulation wave (saw up, saw down, square, triangle, pulse, bipolar pulse, sample and hold or modulated sine).
+    - FM On/Off: To enable or disable the frequency modulation.
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
+
diff --git a/doc-en/source/src/modules/pitch/pitchLooper.rst b/doc-en/source/src/modules/pitch/pitchLooper.rst
new file mode 100644
index 0000000..c023c9e
--- /dev/null
+++ b/doc-en/source/src/modules/pitch/pitchLooper.rst
@@ -0,0 +1,30 @@
+PitchLooper
+==============
+
+Table based transposition module that creates up to five polyphonic voices.
+
+.. image:: /images/Parametres_PitchLooper.png
+
+Sliders under the graph:
+    - Transpo Voice 1: Playback speed of the first voice (direct transposition).
+    - Gain Voice 1: Gain of the transposed first voice.
+    - Transpo Voice 2: Playback speed of the second voice (direct transposition).
+    - Gain Voice 2: Gain of the transposed second voice.
+    - Transpo Voice 3: Playback speed of the third voice (direct transposition).
+    - Gain Voice 3: Gain of the transposed third voice.
+    - Transpo Voice 4: Playback speed of the fourth voice (direct transposition).
+    - Gain Voice 4: Gain of the transposed fourth voice.
+    - Transpo Voice 5: Playback speed of the fifth voice (direct transposition).
+    - Gain Voice 5: Gain of the transposed fifth voice.
+
+Dropdown menus and toggles:
+    - Voice 1: To mute or unmute the first voice.
+    - Voice 2: To mute or unmute the second voice.
+    - Voice 3: To mute or unmute the third voice.
+    - Voice 4: To mute or unmute the fourth voice.
+    - Voice 5: To mute or unmute the fifth voice.
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
\ No newline at end of file
diff --git a/doc-en/source/src/modules/resonators/WGuideBank.rst b/doc-en/source/src/modules/resonators/WGuideBank.rst
new file mode 100644
index 0000000..d4cabe2
--- /dev/null
+++ b/doc-en/source/src/modules/resonators/WGuideBank.rst
@@ -0,0 +1,27 @@
+WGuideBank
+===============
+
+Multiple waveguide models module.
+
+.. image:: /images/Parametres_WGuideBank.png
+
+
+Sliders under the graph:
+    - Base Freq: Base pitch of the waveguides (in Hertz).
+    - WG Expansion: Spread factor that determines the range between the waveguides.
+    - WG Feedback: Amount of output sound sent back into the delay lines.
+    - Filter Cutoff: Cutoff or center frequency of the filter (in Hertz).
+    - Amp Dev Amp: Amplitude of the jitter applied to the waveguides amplitudes.
+    - Amp Dev Speed: Frequency of the jitter applied to the waveguides amplitudes.
+    - Freq Dev Amp: Amplitude of the jitter applied to the waveguides pitch.
+    - Freq Dev Speed: Frequency of the jitter applied to the waveguides pitch.
+    - Dry/Wet: Mix betwwen the original signal and the waveguides signals.
+
+Dropdown menus and toggles:
+    - Filter Type: Type of the filter used in the module (lowpass, highpass, bandpass or bandstop).
+    - Balance: Adjust the signal amplitude by comparing it with a sinusoidal wave with a fixed amplitude (see "compress") or with the amplitude of the source (see "source").
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
\ No newline at end of file
diff --git a/doc-en/source/src/modules/resonators/convolve.rst b/doc-en/source/src/modules/resonators/convolve.rst
new file mode 100644
index 0000000..020ef7a
--- /dev/null
+++ b/doc-en/source/src/modules/resonators/convolve.rst
@@ -0,0 +1,18 @@
+Convolve
+============
+
+Circular convolution filtering module.
+
+.. image:: /images/Parametres_Convolve.png
+
+Sliders under the graph:
+    - Dry/Wet: Mix between the original signal and the convoluted signal.
+
+Dropdown menus and toggles:
+    - Size: Buffer size of the convolution (128, 256, 512, 1024 or 2048).
+    - Balance: Adjust the signal amplitude by comparing it with a sinusoidal wave with a fixed amplitude (see "compress") or with the amplitude of the source (see "source").
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
\ No newline at end of file
diff --git a/doc-en/source/src/modules/resonators/detunedResonators.rst b/doc-en/source/src/modules/resonators/detunedResonators.rst
new file mode 100644
index 0000000..1172a0c
--- /dev/null
+++ b/doc-en/source/src/modules/resonators/detunedResonators.rst
@@ -0,0 +1,32 @@
+DetunedResonators
+==================
+
+Module with eight detuned resonators with jitter control.
+
+.. image:: /images/Parametres_DetunedResonators.png
+
+Sliders under the graph:
+    - Pitch offset: Base pitch of all the resonators (in cents).
+    - Amp Rand Amp: Amplitude of the jitter applied to the resonators amplitude.
+    - Amp Rand Speed: Frequency (in Hertz) of the jitter applied to the resonators amplitude.
+    - Delay Rand Amp: Amplitude of the jitter applied to the resonators delay; this has an effect on the pitch of each resonator.
+    - Delay Rand Speed: Frequency (in Hertz) of the jitter applied to the resonators delay; this has an effect on the pitch of each resonator.
+    - Detune factor: Spread factor that determines how each resonator will be detuned compared to the original signal.
+    - Pitch Voice 1: Pitch of the first resonator compared to the original signal (in semi-tones).
+    - Pitch Voice 2: Pitch of the second resonator compared to the original signal (in semi-tones).
+    - Pitch Voice 3: Pitch of the third resonator compared to the original signal (in semi-tones).
+    - Pitch Voice 4: Pitch of the fourth resonator compared to the original signal (in semi-tones).
+    - Pitch Voice 5: Pitch of the fifth resonator compared to the original signal (in semi-tones).
+    - Pitch Voice 6: Pitch of the sixth resonator compared to the original signal (in semi-tones).
+    - Pitch Voice 7: Pitch of the seventh resonator compared to the original signal (in semi-tones).
+    - Pitch Voice 8: Pitch of the eighth resonator compared to the original signal (in semi-tones).
+    - Feedback: Amount of the resonators signal fed back into the resonators (between 0 and 1).
+    - Dry/Wet: Mix between the original signal and the processed signals.
+
+Dropdown menus and toggles:
+    - Voice Activation (1 to 8): Check the boxes to activate the voices (first to eighth); uncheck to mute them.
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc-en/source/src/modules/resonators/index.rst b/doc-en/source/src/modules/resonators/index.rst
new file mode 100644
index 0000000..f53ece6
--- /dev/null
+++ b/doc-en/source/src/modules/resonators/index.rst
@@ -0,0 +1,14 @@
+Resonators and Verbs
+=======================
+
+.. toctree::
+   :maxdepth: 2
+   
+   convolve
+   detunedResonators
+   resonators
+   WGuideBank
+
+
+
+
diff --git a/doc-en/source/src/modules/resonators/resonators.rst b/doc-en/source/src/modules/resonators/resonators.rst
new file mode 100644
index 0000000..f625860
--- /dev/null
+++ b/doc-en/source/src/modules/resonators/resonators.rst
@@ -0,0 +1,32 @@
+Resonators
+============
+
+Module with eight resonators with jitter control.
+
+.. image:: /images/Parametres_Resonators.png
+
+Sliders under the graph:
+    - Pitch offset: Base pitch of all the resonators (in cents).
+    - Pitch Voice 1: Pitch of the first resonator compared to the original signal (in semi-tones).
+    - Pitch Voice 2: Pitch of the second resonator compared to the original signal (in semi-tones).
+    - Pitch Voice 3: Pitch of the third resonator compared to the original signal (in semi-tones).
+    - Pitch Voice 4: Pitch of the fourth resonator compared to the original signal (in semi-tones).
+    - Pitch Voice 5: Pitch of the fifth resonator compared to the original signal (in semi-tones).
+    - Pitch Voice 6: Pitch of the sixth resonator compared to the original signal (in semi-tones).
+    - Pitch Voice 7: Pitch of the seventh resonator compared to the original signal (in semi-tones).
+    - Pitch Voice 8: Pitch of the eighth resonator compared to the original signal (in semi-tones).
+    - Amp Rand Amp: Amplitude of the jitter applied to the resonators amplitude.
+    - Amp Rand Speed: Frequency (in Hertz) of the jitter applied to the resonators amplitude.
+    - Delay Rand Amp: Amplitude of the jitter applied to the resonators delay; this has an effect on the pitch of each resonator.
+    - Delay Rand Speed: Frequency (in Hertz) of the jitter applied to the resonators delay; this has an effect on the pitch of each resonator.
+    - Feedback: Amount of the resonators signal fed back into the resonators (between 0 and 1).
+    - Dry/Wet: Mix between the original signal and the processed signals.
+
+Dropdown menus and toggles:
+    - Balance: Adjust the signal amplitude by comparing it with a sinusoidal wave with a fixed amplitude (see "compress") or with the amplitude of the source (see "source").
+    - Voice Activation (1 to 8): Check the boxes to activate the voices (first to eighth); uncheck to mute them.
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc-en/source/src/modules/spectral/crossSynth.rst b/doc-en/source/src/modules/spectral/crossSynth.rst
new file mode 100644
index 0000000..d56ce81
--- /dev/null
+++ b/doc-en/source/src/modules/spectral/crossSynth.rst
@@ -0,0 +1,22 @@
+CrossSynth
+============
+
+Cross synthesis module based on fast-Fourier-transform (FFT) operations.
+
+.. image:: /images/Parametres_CrossSynth.png
+
+Sliders under the graph:
+    - Exciter Pre Filter Freq: Center or cut-off frequency (in Hertz) of the pre-FFT filter.
+    - Exciter Pre Filter Q: Q factor of the pre-FFT filter.
+    - Dry/Wet: Mix between the original signal and the processed signal.
+
+Dropdown menus and toggles:
+    - Exc Pre Filter Type: Type of the pre-FFT filter (lowpass, highpass, bandpass or bandstop).
+    - FFT Size: Window size of the FFT (in samples - 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 or 8192).
+    - FFT Envelope: Envelope type for the FFT (rectangular, Hanning, Hamming, Bartlett, Blackmann 3, 4 or 7, Tuckey or sine).
+    - FFT Overlaps: Number of FFT overlaps (1, 2, 4, 8 or 16).
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc-en/source/src/modules/spectral/index.rst b/doc-en/source/src/modules/spectral/index.rst
new file mode 100644
index 0000000..fb8cf6f
--- /dev/null
+++ b/doc-en/source/src/modules/spectral/index.rst
@@ -0,0 +1,15 @@
+Spectral Processing
+=======================
+
+.. toctree::
+   :maxdepth: 2
+   
+   crossSynth
+   morphing
+   spectralDelay
+   spectralFilter
+   spectralGate
+   vectral
+
+
+
diff --git a/doc-en/source/src/modules/spectral/morphing.rst b/doc-en/source/src/modules/spectral/morphing.rst
new file mode 100644
index 0000000..00cfa31
--- /dev/null
+++ b/doc-en/source/src/modules/spectral/morphing.rst
@@ -0,0 +1,20 @@
+Morphing
+==========
+
+Morphing module based on fast-Fourier-transform (FFT) operations.
+
+.. image:: /images/Parametres_Morphing.png
+
+Sliders under the graph:
+    - Morph src1 <-> src 2: Morphing index between the two sources.
+    - Dry/Wet: Mix between the original signal and the morphed signal.
+
+Dropdown menus and toggles:
+    - FFT Size: Window size of the FFT (in samples - 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 or 8192).
+    - FFT Envelope: Envelope type for the FFT (rectangular, Hanning, Hamming, Bartlett, Blackmann 3, 4 or 7, Tuckey or sine).
+    - FFT Overlaps: Number of FFT overlaps (1, 2, 4, 8 or 16).
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
\ No newline at end of file
diff --git a/doc-en/source/src/modules/spectral/spectralDelay.rst b/doc-en/source/src/modules/spectral/spectralDelay.rst
new file mode 100644
index 0000000..9ce8bf9
--- /dev/null
+++ b/doc-en/source/src/modules/spectral/spectralDelay.rst
@@ -0,0 +1,34 @@
+SpectralDelay
+===============
+
+Spectral delay module based on fast-Fourier-transform (FFT) operations.
+
+.. image:: /images/Parametres_SpectralDelay.png
+
+Sliders under the graph:
+    - Bin Regions: Split points in the frequency range for FFT processing.
+    - Band 1 Delay: Delay time applied on the first band.
+    - Band 1 Amp: Gain of the delayed first band.
+    - Band 2 Delay: Delay time applied on the second band.
+    - Band 2 Amp: Gain of the delayed second band.
+    - Band 3 Delay: Delay time applied on the third band.
+    - Band 3 Amp: Gain of the delayed third band.
+    - Band 4 Delay: Delay time applied on the fourth band.
+    - Band 4 Amp: Gain of the delayed fourth band.
+    - Band 5 Delay: Delay time applied on the fifth band.
+    - Band 5 Amp: Gain of the delayed fifth band.
+    - Band 6 Delay: Delay time applied on the sixth band.
+    - Band 6 Amp: Gain of the delayed sixth band.
+    - Feedback: Amount of the delayed signal fed back into the delays (feedback is band independent).
+    - Dry/Wet: Mix between the original signal and the delayed signals.
+
+Dropdown menus and toggles:
+    - FFT Size: Window size of the FFT (in samples - 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 or 8192).
+    - FFT Envelope: Envelope type for the FFT (rectangular, Hanning, Hamming, Bartlett, Blackmann 3, 4 or 7, Tuckey or sine).
+    - FFT Overlaps: Number of FFT overlaps (1, 2, 4, 8 or 16).
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
+
diff --git a/doc-en/source/src/modules/spectral/spectralFilter.rst b/doc-en/source/src/modules/spectral/spectralFilter.rst
new file mode 100644
index 0000000..835b07e
--- /dev/null
+++ b/doc-en/source/src/modules/spectral/spectralFilter.rst
@@ -0,0 +1,23 @@
+SpectralFilter
+===============
+
+Spectral filter module based on fast-Fourier-transform (FFT) operations.
+
+.. image:: /images/Parametres_SpectralFilter.png
+
+Sliders under the graph:
+    - Filter interpolation: Morphing index between the two filters.
+    - Dry/Wet: Mix between the original signal and the delayed signals.
+
+Dropdown menus and toggles:
+    - Filter Range: Limits of the filter (up to Nyquist, up to Nyquist/2, up to Nyquist/4 or up to Nyquist/8). 
+    - FFT Size: Window size of the FFT (in samples - 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 or 8192).
+    - FFT Envelope: Envelope type for the FFT (rectangular, Hanning, Hamming, Bartlett, Blackmann 3, 4 or 7, Tuckey or sine).
+    - FFT Overlaps: Number of FFT overlaps (1, 2, 4, 8 or 16).
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Spectral Filter 1: Shape of the first filter.
+    - Spectral Filter 2: Shape of the second filter.
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc-en/source/src/modules/spectral/spectralGate.rst b/doc-en/source/src/modules/spectral/spectralGate.rst
new file mode 100644
index 0000000..f698b15
--- /dev/null
+++ b/doc-en/source/src/modules/spectral/spectralGate.rst
@@ -0,0 +1,21 @@
+SpectralGate
+==============
+
+Spectral noise gate module based on fast-Fourier-transform (FFT) operations.
+
+.. image:: /images/Parametres_SpectralGate.png
+
+Sliders under the graph:
+    - Gate Threshold: value (in decibels) at which the gate becomes active.
+    - Gate Attenuation: Gain (in decibels) of the gated signal.
+    - Dry/Wet: Mix between the original signal and the delayed signals.
+
+Dropdown menus and toggles:
+    - FFT Size: Window size of the FFT (in samples - 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 or 8192).
+    - FFT Envelope: Envelope type for the FFT (rectangular, Hanning, Hamming, Bartlett, Blackmann 3, 4 or 7, Tuckey or sine).
+    - FFT Overlaps: Number of FFT overlaps (1, 2, 4, 8 or 16).
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
\ No newline at end of file
diff --git a/doc-en/source/src/modules/spectral/vectral.rst b/doc-en/source/src/modules/spectral/vectral.rst
new file mode 100644
index 0000000..e3d2f4a
--- /dev/null
+++ b/doc-en/source/src/modules/spectral/vectral.rst
@@ -0,0 +1,25 @@
+Vectral
+============
+
+Vectral module based on fast-Fourier-transform (FFT) operations.
+
+.. image:: /images/Parametres_Vectral.png
+
+Sliders under the graph:
+    - Gate Threshold: Value (in decibels) at which the gate becomes active.
+    - Gate Attenuation: Gain (in decibels) of the gated signal.
+    - Upward Time Factor: Filter coefficient for the increasing bins.
+    - Downward Time Factor: Filter coefficient for the decreasing bins.
+    - Phase Time Factor: Phase blur.
+    - High Freq Damping: High frequencies damping factor.
+    - Dry/Wet: Mix between the original signal and the delayed signals.
+
+Dropdown menus and toggles:
+    - FFT Size: Window size of the FFT (in samples - 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 or 8192).
+    - FFT Envelope: Envelope type for the FFT (rectangular, Hanning, Hamming, Bartlett, Blackmann 3, 4 or 7, Tuckey or sine).
+    - FFT Overlaps: Number of FFT overlaps (1, 2, 4, 8 or 16).
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
\ No newline at end of file
diff --git a/doc-en/source/src/modules/synthesis/additiveSynth.rst b/doc-en/source/src/modules/synthesis/additiveSynth.rst
new file mode 100644
index 0000000..c966e0a
--- /dev/null
+++ b/doc-en/source/src/modules/synthesis/additiveSynth.rst
@@ -0,0 +1,25 @@
+AdditiveSynth
+==============
+
+Additive synthesis module.
+
+.. image:: /images/Parametres_AddSynth.png
+
+Sliders under the graph:
+    - Base Frequency: Base pitch of the synthesis (in Hertz).
+    - Partials Spread: Spread factor that determines the distance between the partials.
+    - Partials Freq Rand Amp: Amplitude of the jitter applied to the partials pitch.
+    - Partials Freq Rand Speed: Frequency of the jitter applied to the partials pitch.
+    - Partials Amp Rand Amp: Amplitude of the jitter applied to the jitter amplitude.
+    - Partials Amp Rand Speed: Frequency of the jitter applied to the partials amplitude.
+    - Amplitude Factor: Spread of amplitude between the partials.
+
+Dropdown menus and toggles:
+    - # of Partials: Number of partials present in the generated signal (5, 10, 20, 40, 80, 160, 320 or 640).
+    - Wave Shape: Shape of the soundwaves used for the synthesis (sine, sawtooth, square, complex 1, 2 or 3 or custom).
+    - Custom Wave: Click in the box to enter amplitude values that will create the shape of a custom wave.
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc-en/source/src/modules/synthesis/index.rst b/doc-en/source/src/modules/synthesis/index.rst
new file mode 100644
index 0000000..7bdde8c
--- /dev/null
+++ b/doc-en/source/src/modules/synthesis/index.rst
@@ -0,0 +1,14 @@
+Synthesis
+=======================
+
+.. toctree::
+   :maxdepth: 2
+   
+   additiveSynth
+   pulsar
+   stochGrains
+   stochGrains2
+
+
+
+
diff --git a/doc-en/source/src/modules/synthesis/pulsar.rst b/doc-en/source/src/modules/synthesis/pulsar.rst
new file mode 100644
index 0000000..f697763
--- /dev/null
+++ b/doc-en/source/src/modules/synthesis/pulsar.rst
@@ -0,0 +1,22 @@
+Pulsar
+==========
+
+Pulsar synthesis module.
+
+.. image:: /images/Parametres_Pulsar.png
+
+Sliders under the graph:
+    - Base Frequency: Base pitch of the synthesis (in Hertz).
+    - Pulsar Width: Amount of silence added to one period.
+    - Detune Factor: Amount of jitter applied to the pitch.
+    - Detune Speed: Frequency of the jitter applied to the pitch.
+    - Source index: Position in the input soundfile where the sound pulsar is taken. 
+
+Dropdown menus and toggles:
+    - Window Size: Size of the pulsar window (in samples - 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384 or 32768).
+    - Window Type: Type of the pulsar window (rectangular, Hanning, Hamming, Bartlett, Blackman 3, 4 or 7, Tuckey or sine).
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc-en/source/src/modules/synthesis/stochGrains.rst b/doc-en/source/src/modules/synthesis/stochGrains.rst
new file mode 100644
index 0000000..f61905f
--- /dev/null
+++ b/doc-en/source/src/modules/synthesis/stochGrains.rst
@@ -0,0 +1,31 @@
+StochGrains
+============
+
+Granular synthesis module.
+
+.. image:: /images/Parametres_StochGrains1.png
+
+Sliders under the graph:
+    - Pitch Offset:
+    - Pitch Range:
+    - Speed Range:
+    - Duration Range:
+    - Brightness Range:
+    - Detune Range:
+    - Intensity Range:
+    - Pan Range:
+    - Density:
+    - Global seed:
+
+Dropdown menus and toggles:
+    - Synth Type: Synthesis type (FM - frequency modulation, looped sine, impulse train, cross FM, sawtooth, square, pulsar, addsynth - additive synthesis).
+    - Pitch Scaling: Scale or chord on which the pitch scaling is based (All-over, serial, major, minor, seventh, major 7, minor 7, minor 7 b5, diminished, diminished 7, ninth, major 9, minor 9, eleventh, major 11, minor 11, thirteeth, major 13 or whole-tone).
+    - Pitch Algorithm: ** (uniform, linear minimum, linear maximum, triangular, exponential minimum, exponential maximum, bi-exponential, Cauchy, Weibull, Gaussian, Poisson, Walker or loopseg).
+    - Speed Algorithm: ** (uniform, linear minimum, linear maximum, triangular, exponential minimum, exponential maximum, bi-exponential, Cauchy, Weibull, Gaussian, Poisson, Walker or loopseg).
+    - Duration Algorithm: ** (uniform, linear minimum, linear maximum, triangular, exponential minimum, exponential maximum, bi-exponential, Cauchy, Weibull, Gaussian, Poisson, Walker or loopseg).
+    - Intensity Algorithm: ** (uniform, linear minimum, linear maximum, triangular, exponential minimum, exponential maximum, bi-exponential, Cauchy, Weibull, Gaussian, Poisson, Walker or loopseg).
+    - Max Num of Grains: Maximum number of pulsar grains for the synthesis (5, 10, 15, 20, 25, 30, 40, 50 or 60).
+
+Graph only parameters:
+    - Grain Envelope: Envelope of the pulsar grain (custom).
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc-en/source/src/modules/synthesis/stochGrains2.rst b/doc-en/source/src/modules/synthesis/stochGrains2.rst
new file mode 100644
index 0000000..209b29e
--- /dev/null
+++ b/doc-en/source/src/modules/synthesis/stochGrains2.rst
@@ -0,0 +1,30 @@
+StochGrains2
+=============
+
+Granular synthesis module.
+
+.. image:: /images/Parametres_StochGrains2.png
+
+Sliders under the graph:
+    - Pitch Offset:
+    - Pitch Range:
+    - Speed Range:
+    - Duration Range:
+    - Sample Start Range:
+    - Intensity Range:
+    - Pan Range:
+    - Density:
+    - Global seed:
+
+Dropdown menus and toggles:                                                                                                             
+    
+    - Pitch Scaling: Scale or chord on which the pitch scaling is based (All-over, serial, major, minor, seventh, major 7, minor 7, minor 7 b5, diminished, diminished 7, ninth, major 9, minor 9, eleventh, major 11, minor 11, thirteeth, major 13 or whole-tone).
+    - Pitch Algorithm: (uniform, linear minimum, linear maximum, triangular, exponential minimum, exponential maximum, bi-exponential, Cauchy, Weibull, Gaussian, Poisson, Walker or loopseg).
+    - Speed Algorithm: (uniform, linear minimum, linear maximum, triangular, exponential minimum, exponential maximum, bi-exponential, Cauchy, Weibull, Gaussian, Poisson, Walker or loopseg).
+    - Duration Algorithm: (uniform, linear minimum, linear maximum, triangular, exponential minimum, exponential maximum, bi-exponential, Cauchy, Weibull, Gaussian, Poisson, Walker or loopseg).
+    - Intensity Algorithm: (uniform, linear minimum, linear maximum, triangular, exponential minimum, exponential maximum, bi-exponential, Cauchy, Weibull, Gaussian, Poisson, Walker or loopseg).
+    - Max Num of Grains: Maximum number of pulsar grains for the synthesis (5, 10, 15, 20, 25, 30, 40, 50 or 60).
+
+Graph only parameters:
+    - Grain Envelope: Envelope of the pulsar grain (custom).
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc-en/source/src/modules/time/beatMaker.rst b/doc-en/source/src/modules/time/beatMaker.rst
new file mode 100644
index 0000000..6af3130
--- /dev/null
+++ b/doc-en/source/src/modules/time/beatMaker.rst
@@ -0,0 +1,26 @@
+BeatMaker
+============
+
+Algorithmic beatmaker module.
+
+.. image:: /images/Parametres_BeatMaker.png
+
+Sliders under the graph:
+    - # of Taps: Number of taps in each bar.
+    - Tempo: Speed of taps (in bpm).
+    - Beat Tap Length: Length of taps (in seconds - for beats one to four).
+    - Beat Index: Input soundfile index for each beat (from 0 to 1 - for beats one to four).
+    - Beat Gain: Gain (in decibels) of the beat (for beats one to four).
+    - Beat Distribution: Repartition of taps for each beat (from 100% weak to 100% down - for beats one to four).
+    - Global seed: Seed value for the algorithmic beats, using the same seed with the same distribution will yield the exact same beats.
+
+Dropdown menus and toggles:
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Beat 1 ADSR: Amplitude envelope of taps for the first beat in breakpoint fashion.
+    - Beat 2 ADSR: Amplitude envelope of taps for the second beat in breakpoint fashion.
+    - Beat 3 ADSR: Amplitude envelope of taps for the third beat in breakpoint fashion.
+    - Beat 4 ADSR: Amplitude envelope of taps for the fourth beat in breakpoint fashion.
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc-en/source/src/modules/time/delayMod.rst b/doc-en/source/src/modules/time/delayMod.rst
new file mode 100644
index 0000000..4282119
--- /dev/null
+++ b/doc-en/source/src/modules/time/delayMod.rst
@@ -0,0 +1,27 @@
+DelayMod
+==========
+
+Stereo delay module with jitter control.
+
+.. image:: /images/Parametres_DelayMod.png
+
+Sliders under the graph:
+    - Delay Left: Delay time of the first delay (in seconds).
+    - Delay Right: Delay time of the second delay (in seconds).
+    - AmpModDepth L: Range of the amplitude jitter for the first delay.
+    - AmpModDepth R: Range of the amplitude jitter for the second delay.
+    - AmpModFreq L: Speed of the amplitude jitter for the first delay.
+    - AmpModFreq R: Speed of the amplitude jitter for the second delay.
+    - DelModDepth L: Range of the delay time jitter for the first delay.
+    - DelModDepth R: Range of the delay time jitter for the second delay.
+    - DelModFreq L: Speed of the delay time jitter for the first delay.
+    - DelModFreq R: Speed of the delay time jitter for the second delay.
+    - Feedback: Amount of delayed signal fed back into the delay chain.
+    - Dry/Wet: Mix between the original signal and the delayed signals.
+
+Dropdown menus and toggles:
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
\ No newline at end of file
diff --git a/doc-en/source/src/modules/time/fourDelays.rst b/doc-en/source/src/modules/time/fourDelays.rst
new file mode 100644
index 0000000..beeb77e
--- /dev/null
+++ b/doc-en/source/src/modules/time/fourDelays.rst
@@ -0,0 +1,32 @@
+4Delays
+============
+
+Waveterrain synthesis module based on two stereo delays with parallel or serial routing.
+
+.. image:: /images/Parametres_4Delays.png
+
+Sliders under the graph:
+    - Delay 1 Right: Delay time of the right portion of the first delay.
+    - Delay 1 Left: Delay time of the left portion of the first delay.
+    - Delay 1 Feedback: Amount of the delayed signal fed back into the first delay.
+    - Delay 1 Mix: Gain of the first delayed signal.
+    - Delay 2 Right: Delay time of the right portion of the second delay.
+    - Delay 2 Left: Delay time of the left portion of the second delay.
+    - Delay 2 Feedback: Amount of the delayed signal fed back into the second delay.
+    - Delay 2 Mix: Gain of the second delayed signal.
+    - Jitter Amp: Amplitude of the jitter applied on the signal.
+    - Jitter Speed: Frequency of the jitter applied on the signal.
+    - Filter Freq: Center or cut-off frequency of the filter.
+    - Filter Q: Q factor of the filter.
+    - Dry/Wet: Mix between the original signal and the processed signals.
+
+Dropdown menus and toggles:
+    - Delay Routing: Type of delay routing (serial or parallel).
+    - Filter Type: Type of the filter (lowpass, highpass, bandpass or bandstop).
+    - Filter Routing: Determines if the filter is applied before or after the signal processing (pre or post).
+    - Balance: Adjust the signal amplitude by comparing it with a sinusoidal wave with a fixed amplitude (see "compress") or with the amplitude of the source (see "source").
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
\ No newline at end of file
diff --git a/doc-en/source/src/modules/time/granulator.rst b/doc-en/source/src/modules/time/granulator.rst
new file mode 100644
index 0000000..9a28120
--- /dev/null
+++ b/doc-en/source/src/modules/time/granulator.rst
@@ -0,0 +1,26 @@
+Granulator
+============
+
+Granulation module.
+
+.. image:: /images/Parametres_Granulator.png
+
+Sliders under the graph:
+    - Transpose: Base pitch of the grains compared to the original signal (in cents).
+    - Grain Position: Input soundfile index for the beginning of the grains.
+    - Position Random: Jitter applied on the soundfile index.
+    - Pitch Random: Jitter applied on the pitch of the grains using a discreet transposition list (see below).
+    - Filter Freq: Center or cut-off frequency of the filter.
+    - Filter Q: Q factor of the filter.
+    - Grain Duration: Length of the grains (in seconds).
+    - # of Grains: Number of grains.
+
+Dropdown menus and toggles:
+    - Filter Type: Type of the filter (lowpass, highpass, bandpass or bandstop).
+    - Balance: Adjust the signal amplitude by comparing it with a sinusoidal wave with a fixed amplitude (see "compress") or with the amplitude of the source (see "source").
+    - Discreet Transpo: Click in the box to enter a list of discreet values for transposition (see "Pitch Random" above).
+    - # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
+    - Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
+
+Graph only parameters:
+    - Overall Amplitude: The amplitude curve applied on the total duration of the performance.
\ No newline at end of file
diff --git a/doc-en/source/src/modules/time/index.rst b/doc-en/source/src/modules/time/index.rst
new file mode 100644
index 0000000..ed6aa3e
--- /dev/null
+++ b/doc-en/source/src/modules/time/index.rst
@@ -0,0 +1,14 @@
+Time and Delays
+=======================
+
+.. toctree::
+   :maxdepth: 2
+   
+   beatMaker
+   delayMod
+   fourDelays
+   granulator
+
+
+
+
diff --git a/doc/Cecilia5_manuel.pdf b/doc/Cecilia5_manuel.pdf
deleted file mode 100644
index 4363d9d..0000000
Binary files a/doc/Cecilia5_manuel.pdf and /dev/null differ
diff --git a/doc/Cecilia5_manuel.tex b/doc/Cecilia5_manuel.tex
deleted file mode 100755
index c38ca98..0000000
--- a/doc/Cecilia5_manuel.tex
+++ /dev/null
@@ -1,121 +0,0 @@
-%!TEX TS-program = /usr/texbin/pdflatex
-\documentclass[11pt,francais]{book}
-\usepackage{amssymb,amsmath,epsfig}
-\usepackage{graphics}
-\usepackage[utf8]{inputenc}
-\usepackage[francais]{babel}
-\usepackage{listings}
-\usepackage{color}
-\usepackage[pdfborder=0]{hyperref}
-%\usepackage[utf8x]{inputenc}
-\hypersetup{
-urlcolor=blue,
-linkcolor=blue,
-colorlinks=true, 
-linkbordercolor={1 1 1}, % set to white
-citebordercolor={1 1 1} % set to white
-}
-
-\oddsidemargin 0.2in
-\evensidemargin 0in
-\marginparwidth 40pt
-\marginparsep 10pt
-\topmargin 0pt
-\headsep .5in
-\textheight 8.35in \textwidth 6.3in
-
-\definecolor{green}{rgb}{0,0.7,0}
-\definecolor{dkgreen}{rgb}{0,0.5,0}
-\definecolor{verylightgray}{rgb}{0.97,0.97,0.97}
-\definecolor{lightgray}{rgb}{0.95,0.95,0.95}
-\definecolor{gray}{rgb}{0.6,0.6,0.6}
-\definecolor{dkgray}{rgb}{0.4,0.4,0.4}
-
-%
-% Il faut installer le package lstlisting pour obtenir le formattage du code source
-% http://www.ctan.org/tex-archive/macros/latex/contrib/listings/
-%
-
-\lstdefinestyle{Python}{ %
-  language=Python,                % the language of the code
-  basicstyle=\footnotesize,       % the size of the fonts that are used for the code
-  numbers=left,                   % where to put the line-numbers
-  numberstyle=\tiny\color{gray},  % the style that is used for the line-numbers
-  stepnumber=1,                   % the step between two line-numbers. If it's 1, each line will be numbered
-  numbersep=10pt,                  % how far the line-numbers are from the code
-  backgroundcolor=\color{lightgray},  % choose the background color. You must add \usepackage{color}
-  showspaces=false,               % show spaces adding particular underscores
-  showstringspaces=false,         % underline spaces within strings
-  showtabs=false,                 % show tabs within strings adding particular underscores
-  frame=false,                    % adds a frame around the code
-  rulecolor=\color{lightgray},    % if not set, the frame-color may be changed on line-breaks within not-black text 
-  tabsize=4,                      % sets default tabsize to 2 spaces
-  captionpos=b,                   % sets the caption-position to bottom
-  breaklines=true,                % sets automatic line breaking
-  breakatwhitespace=false,        % sets if automatic breaks should only happen at whitespace
-  title=\lstname,                 % show the filename of files included with \lstinputlisting;
-                                  % also try caption instead of title
-  keywordstyle=\color{blue},      % keyword style
-  commentstyle=\color{dkgray},      % comment style
-  stringstyle=\color{dkgreen},    % string literal style
-  escapeinside={\%*}{*)},         % if you want to add a comment within your code
-  morekeywords={Abs, Atan2, Ceil, Cos, Floor, Log, Log10, Log2, Pow, Round, Sin, Sqrt, Tan, CarToPol, FFT, FrameAccum, FrameDelta, IFFT, PolToCar, Vectral, MatrixMorph, MatrixPointer, MatrixRec, MatrixRecLoop, OscDataReceive, OscDataSend, OscListReceive, OscReceive, OscSend, Bendin, CtlScan, MidiAdsr, MidiDelAdsr, Midictl, Notein, Programin, Touchin, CallAfter, Pattern, Score, AToDB, Between, CentsToTranspo, Clean_objects, Compare, ControlRead, ControlRec, DBToA, Denorm, Interp, MToF, MToT, NoteinRead, NoteinRec, Print, Record, SampHold, Scale, Snap, TranspoToCents, Dummy, InputFader, Mix, VarPort, Follower, Follower2, ZCross, SfMarkerLooper, SfMarkerShuffler, SfPlayer, Choice, RandDur, RandInt, Randh, Randi, Urn, Xnoise, XnoiseDur, XnoiseMidi, Blit, BrownNoise, CrossFM, FM, Input, LFO, Lorenz, Noise, Phasor, PinkNoise, Rossler, Sine, SineLoop, Adsr, Expseg, Fader, Linseg, Sig, SigTo, Allpass, Allpass2, BandSplit, Biquad, Biquada, Biquadx, DCBlock, EQ, FourBand, Hilbert, IRAverage, IRFM, IRPulse, IRWinSinc, Phaser, Port, Tone, Clip, Compress, Degrade, Gate, Mirror, Wrap, Granulator, Lookup, Looper, Osc, OscBank, OscLoop, Pointer, Pulsar, TableIndex, TableMorph, TableRead, TableRec, Beat, Change, Cloud, Count, Counter, Iter, Metro, NextTrig, Percent, Select, Seq, Thresh, Timer, Trig, TrigChoice, TrigEnv, TrigExpseg, TrigFunc, TrigLinseg, TrigRand, TrigRandInt, TrigTableRec, TrigXnoise, TrigXnoiseMidi, Mixer, Pan, SPan, Selector, Switch, VoiceManager, AllpassWG, Chorus, Convolve, Delay, Disto, Freeverb, FreqShift, Harmonizer, SDelay, Vocoder, WGVerb, Waveguide, SLMapDur, SLMapFreq, SLMapMul, SLMapPan, SLMapPhase, SLMapQ, class_args, convertStringToSysEncoding, distanceToSegment, downsamp, example, getVersion, linToCosCurve, midiToHz, midiToTranspo, pa_count_devices, pa_count_host_apis, pa_get_default_host_api, pa_get_default_input, pa_get_default_output, pa_get_input_devices, pa_get_output_devices, pa_list_devices, pa_list_host_apis, pm_count_devices, pm_get_default_input, pm_get_default_output, pm_get_input_devices, pm_get_output_devices, pm_list_devices, reducePoints, rescale, sampsToSec, savefile, savefileFromTable, secToSamps, serverBooted, serverCreated, sndinfo, upsamp, ChebyTable, CosTable, CurveTable, DataTable, ExpTable, HannTable, HarmTable, LinTable, NewTable, ParaTable, SawTable, SincTable, SndTable, SquareTable, WinTable, NewMatrix, PyoObject, PyoTableObject, PyoMatrixObject, Server},% if you want to add more keywords to the set
-  morestring=[b][\color{green}]{"""},
-  morecomment=[l][\color{dkgray}]{\#},
-  morecomment=[l][\color{gray}]{\#\#\#},
-}
-
-\newcommand\IMGPATH{images/}
-
-\newcommand{\insertImage}[3]{
-    \medskip
-    \begin{figure}[htbp]
-        \begin{center}
-            \includegraphics[width=#1in]{\IMGPATH #2}
-        \end{center}
-        \caption{#3}
-    \end{figure}
-}
-
-\newcommand{\insertImageLeft}[3]{
-    \begin{table}[ht]
-        \begin{minipage}[b]{0.5\linewidth}
-            \includegraphics[width=#1in]{\IMGPATH #2}
-        \end{minipage}
-        \hspace{0.1in}
-        \begin{minipage}[b]{0.5\linewidth}
-            {#3}
-        \end{minipage}
-    \end{table}
-}
-
-\newcommand{\insertImageRight}[3]{
-    \begin{table}[ht]
-        \begin{minipage}[b]{0.5\linewidth}
-            {#3}
-        \end{minipage}
-        \hspace{0.1in}
-        \begin{minipage}[b]{0.5\linewidth}
-            \includegraphics[width=#1in]{\IMGPATH #2}
-        \end{minipage}
-    \end{table}
-}
-
-\begin{document}
-
-\title{Cecilia5 - Manuel d'utilisation}
-\author{iACT - 2012}
-\maketitle
-\tableofcontents
-
-
-\chapter{Template}
-\input{chapitres/template}
-
-\chapter{Introduction}
-\section{PrŽsentation}
-\input{chapitres/Chapitre1_F/Description_F.txt}
-\section{Configuration requise}
-\input{chapitres/Chapitre1_F/Requirements_F.txt}
-
-\end{document}
diff --git a/doc/chapitres/Chapitre10_A/10.1-AdditiveSynth_A.txt b/doc/chapitres/Chapitre10_A/10.1-AdditiveSynth_A.txt
deleted file mode 100644
index 6129965..0000000
--- a/doc/chapitres/Chapitre10_A/10.1-AdditiveSynth_A.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-Additive synthesis module.
-
-Sliders under the graph:
--Base Frequency: Base pitch of the synthesis (in Hertz).
--Partials Spread: Spread factor that determines the distance between the partials.
--Partials Freq Rand Amp: Amplitude of the jitter applied to the partials pitch.
--Partials Freq Rand Speed: Frequency of the jitter applied to the partials pitch.
--Partials Amp Rand Amp: Amplitude of the jitter applied to the jitter amplitude.
--Partials Amp Rand Speed: Frequency of the jitter applied to the partials amplitude.
--Amplitude Factor: Spread of amplitude between the partials.
-
-Dropdown menus and toggles:
--# of Partials: Number of partials present in the generated signal (5, 10, 20, 40, 80, 160, 320 or 640).
--Wave Shape: Shape of the soundwaves used for the synthesis (sine, sawtooth, square, complex 1, 2 or 3 or custom).
--Custom Wave: Click in the box to enter amplitude values that will create the shape of a custom wave.
--# of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
--Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-
-Graph only parameters:
--Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc/chapitres/Chapitre10_A/10.2-Pulsar_A.txt b/doc/chapitres/Chapitre10_A/10.2-Pulsar_A.txt
deleted file mode 100644
index 500c365..0000000
--- a/doc/chapitres/Chapitre10_A/10.2-Pulsar_A.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-Pulsar synthesis module.
-
-Sliders under the graph:
--Base Frequency: Base pitch of the synthesis (in Hertz).
--Pulsar Width: Amount of silence added to one period.
--Detune Factor: Amount of jitter applied to the pitch.
--Detune Speed: Frequency of the jitter applied to the pitch.
--Source index: Position in the input soundfile where the sound pulsar is taken. 
-
-Dropdown menus and toggles:
--Window Size: Size of the pulsar window (in samples - 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384 or 32768).
--Window Type: Type of the pulsar window (rectangular, Hanning, Hamming, Bartlett, Blackman 3, 4 or 7, Tuckey or sine).
--# of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
--Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-
-Graph only parameters:
--Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc/chapitres/Chapitre10_A/10.3-StochGrains_A.txt b/doc/chapitres/Chapitre10_A/10.3-StochGrains_A.txt
deleted file mode 100644
index 3999d99..0000000
--- a/doc/chapitres/Chapitre10_A/10.3-StochGrains_A.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-Granular synthesis module.
-**à compléter**
-
-Sliders under the graph:
--Pitch Offset:
--Pitch Range:
--Speed Range:
--Duration Range:
--Brightness Range:
--Detune Range:
--Intensity Range:
--Pan Range:
--Density:
--Global seed:
-
-Dropdown menus and toggles:
--Synth Type: Synthesis type (FM - frequency modulation, looped sine, impulse train, cross FM, sawtooth, square, pulsar, addsynth - additive synthesis).
--Pitch Scaling: Scale or chord on which the pitch scaling is based (All-over, serial, major, minor, seventh, major 7, minor 7, minor 7 b5, diminished, diminished 7, ninth, major 9, minor 9, eleventh, major 11, minor 11, thirteeth, major 13 or whole-tone).
--Pitch Algorithm: ** (uniform, linear minimum, linear maximum, triangular, exponential minimum, exponential maximum, bi-exponential, Cauchy, Weibull, Gaussian, Poisson, Walker or loopseg).
--Speed Algorithm: ** (uniform, linear minimum, linear maximum, triangular, exponential minimum, exponential maximum, bi-exponential, Cauchy, Weibull, Gaussian, Poisson, Walker or loopseg).
--Duration Algorithm: ** (uniform, linear minimum, linear maximum, triangular, exponential minimum, exponential maximum, bi-exponential, Cauchy, Weibull, Gaussian, Poisson, Walker or loopseg).
--Intensity Algorithm: ** (uniform, linear minimum, linear maximum, triangular, exponential minimum, exponential maximum, bi-exponential, Cauchy, Weibull, Gaussian, Poisson, Walker or loopseg).
--Max Num of Grains: Maximum number of pulsar grains for the synthesis (5, 10, 15, 20, 25, 30, 40, 50 or 60).
-
-Graph only parameters:
--Grain Envelope: Envelope of the pulsar grain (custom).
--Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc/chapitres/Chapitre10_A/10.4-StochGrains2_A.txt b/doc/chapitres/Chapitre10_A/10.4-StochGrains2_A.txt
deleted file mode 100644
index 2d24c15..0000000
--- a/doc/chapitres/Chapitre10_A/10.4-StochGrains2_A.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-Granular synthesis module.
-**à compléter**
-
-Sliders under the graph:
--Pitch Offset:
--Pitch Range:
--Speed Range:
--Duration Range:
--Sample Start Range:
--Intensity Range:
--Pan Range:
--Density:
--Global seed:
-
-Dropdown menus and toggles:                                                                                                                 
--Pitch Scaling: Scale or chord on which the pitch scaling is based (All-over, serial, major, minor, seventh, major 7, minor 7, minor 7 b5, diminished, diminished 7, ninth, major 9, minor 9, eleventh, major 11, minor 11, thirteeth, major 13 or whole-tone).
--Pitch Algorithm: ** (uniform, linear minimum, linear maximum, triangular, exponential minimum, exponential maximum, bi-exponential, Cauchy, Weibull, Gaussian, Poisson, Walker or loopseg).
--Speed Algorithm: ** (uniform, linear minimum, linear maximum, triangular, exponential minimum, exponential maximum, bi-exponential, Cauchy, Weibull, Gaussian, Poisson, Walker or loopseg).
--Duration Algorithm: ** (uniform, linear minimum, linear maximum, triangular, exponential minimum, exponential maximum, bi-exponential, Cauchy, Weibull, Gaussian, Poisson, Walker or loopseg).
--Intensity Algorithm: ** (uniform, linear minimum, linear maximum, triangular, exponential minimum, exponential maximum, bi-exponential, Cauchy, Weibull, Gaussian, Poisson, Walker or loopseg).
--Max Num of Grains: Maximum number of pulsar grains for the synthesis (5, 10, 15, 20, 25, 30, 40, 50 or 60).
-
-Graph only parameters:
--Grain Envelope: Envelope of the pulsar grain (custom).
--Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc/chapitres/Chapitre10_F/10.1-AdditiveSynth_F.txt b/doc/chapitres/Chapitre10_F/10.1-AdditiveSynth_F.txt
deleted file mode 100644
index 6137ed2..0000000
--- a/doc/chapitres/Chapitre10_F/10.1-AdditiveSynth_F.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-AdditiveSynth est un module de synthèse additive.
-
-Potentiomètres:
--Base Frequency: Fréquence de base des partiels du son de synthèse (en Hertz).
--Partials Spread: Facteur "spread" déterminant la distance entre chaque partiel; il s'agit d'une puissance par laquelle est multipliée la fréquence de base de la synthèse.
--Partials Freq Rand Amp: Amplitude de la variation aléatoire (jitter) appliquée à la fréquence des partiels.
--Partials Freq Rand Speed: Fréquence de la variation aléatoire (jitter) appliquée à la fréquence des partiels.
--Partials Amp Rand Amp: Amplitude de la variation aléatoire (jitter) appliquée à l'amplitude des partiels.
--Partials Amp Rand Speed: Fréquence de la variation aléatoire (jitter) appliquée à l'amplitude des partiels.
-
-Paramètres fixes:
--# of Partials: Nombre de partiels présents dans le signal généré (5, 10, 20, 40, 80, 160, 320 ou 640).
--Wave Shape: Forme des ondes sonores utilisées pour générer le son de synthèse (sine - sinusoïdale, sawtooth - en dents de scie, square - carrée, complexe 1, 2 ou 3 ou custom - à définir).
--Custom Wave: Cliquez à l'intérieur de l'espace désigné pour entrer une liste de valeurs d'amplitude qui créeront la forme d'onde voulue (dans le cas où la forme d'onde "custom" serait sélectionnée au paramètre "Wave Shape").
--# of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
--Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-
-Paramètres du graphique:
--Overall Amplitude: Définit l'enveloppe d'amplitude appliquée au son sur sa durée totale en secondes.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre10_F/10.2-Pulsar_F.txt b/doc/chapitres/Chapitre10_F/10.2-Pulsar_F.txt
deleted file mode 100644
index e91ac02..0000000
--- a/doc/chapitres/Chapitre10_F/10.2-Pulsar_F.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-Pulsar est un module de synthèse pulsar.
-
-Potentiomètres:
--Base Frequency: Fréquence de base des partiels du son de synthèse (en Hertz).
--Pulsar Width: Pourcentage de silence ajouté à chaque période de l'onde.
--Detune Factor: Facteur déterminant la quantité de variation aléatoire (jitter) appliquée à la hauteur du son.
--Detune Speed: Fréquence de la variation aléatoire (jitter) appliquée à la hauteur du son.
--Source index: Position dans le fichier son original à laquelle le pulsar sonore est tiré.
-
-Paramètres fixes:
--Window Size: Taille de la fenêtre de synthèse pulsar (en échantillons - 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384 ou 32768).
--Window Type: Type de fenêtre utilisée pour la synthèse pulsar (rectangulaire, Hanning, Hamming, Bartlett, Blackman 3, 4 ou 7, Tuckey ou sinusoïdale).
--# of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
--Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-
-Paramètres du graphique:
--Overall Amplitude: Définit l'enveloppe d'amplitude appliquée au son sur sa durée totale en secondes. 
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre10_F/10.3-StochGrains_F.txt b/doc/chapitres/Chapitre10_F/10.3-StochGrains_F.txt
deleted file mode 100644
index a24f4e7..0000000
--- a/doc/chapitres/Chapitre10_F/10.3-StochGrains_F.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-StochGrains est un module de synthèse granulaire. ** à compléter et vérifier**
-
-Potentiomètres:
--Pitch Offset:
--Pitch Range:
--Speed Range:
--Duration Range:
--Brightness Range:
--Detune Range:
--Intensity Range:
--Pan Range:
--Density:
--Global seed:
-
-Paramètres fixes:
--Synth Type: Type de synthèse sonore (FM - modulation de fréquence, looped sine - sinusoïdale en boucle, impulse train - par train d'impulsions, cross FM - par modulation de fréquence croisée, sawtooth - en dents de scie, square - carrée, pulsar, addsynth - synthèse additive).
--Pitch Scaling: Échelle de notes ou accord sur lequel/laquelle l'accord des différentes voix est basé (All-over - toutes les notes, serial - sériel, major - majeur, minor - mineur, seventh - septième, major 7 - accord de septième majeure, minor 7 - accord de septième mineure, minor 7 b5 - accord de septième mineure avec quinte diminuée, diminished - accord diminuéz,z diminished 7 - accord de septième diminuée, ninth - neuvième, major 9 - accord de neuvième majeure, minor 9 - accord de neuvième mineure, eleventh - onzième, major 11 - accord de onzième majeure, minor 11 - accord de onzième mineure, thirteeth - treizième, major 13 - accord de treizième majeure ou whole-tone - gamme par tons).
--Pitch Algorithm: ** (uniforme, linéaire minimum, linéaire maximum, triangulaire, exponentiel minimum, exponentiel maximum, bi-exponentiel, Cauchy, Weibull, Gaussien, Poisson, Walker ou loopseg).
--Speed Algorithm: ** (uniforme, linéaire minimum, linéaire maximum, triangulaire, exponentiel minimum, exponentiel maximum, bi-exponentiel, Cauchy, Weibull, Gaussien, Poisson, Walker ou loopseg).
--Duration Algorithm: ** (uniforme, linéaire minimum, linéaire maximum, triangulaire, exponentiel minimum, exponentiel maximum, bi-exponentiel, Cauchy, Weibull, Gaussien, Poisson, Walker ou loopseg).
--Intensity Algorithm: ** (uniforme, linéaire minimum, linéaire maximum, triangulaire, exponentiel minimum, exponentiel maximum, bi-exponentiel, Cauchy, Weibull, Gaussien, Poisson, Walker ou loopseg).
--Max Num of Grains: Nombre maximum de grains pulsar pour la synthèse (5, 10, 15, 20, 25, 30, 40, 50 ou 60).
-
-Paramètres du graphique:
--Overall Amplitude: Définit l'enveloppe d'amplitude appliquée au son sur sa durée totale en secondes.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre10_F/10.4-StochGrains2_F.txt b/doc/chapitres/Chapitre10_F/10.4-StochGrains2_F.txt
deleted file mode 100644
index f887290..0000000
--- a/doc/chapitres/Chapitre10_F/10.4-StochGrains2_F.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-StochGrains2 est un module de synthèse granulaire. **à vérifier et compléter.**
-
-Potentiomètres:
--Pitch Offset:
--Pitch Range:
--Speed Range:
--Duration Range:
--Sample Start Range:
--Intensity Range:
--Pan Range:
--Density:
--Global seed:
-
-Paramètres fixes:
--Pitch Scaling: Échelle de notes ou accord sur lequel/laquelle est basé l'accord des voix (All-over - toutes les notes, serial - sériel, major - majeur, minor - mineur, seventh - septième, major 7 - accord de septième majeure, minor 7 - accord de septième mineure, minor 7 b5 - accord de septième mineure avec quinte diminuée, diminished - accord diminuéz,z diminished 7 - accord de septième diminuée, ninth - neuvième, major 9 - accord de neuvième majeure, minor 9 - accord de neuvième mineure, eleventh - onzième, major 11 - accord de onzième majeure, minor 11 - accord de onzième mineure, thirteeth - treizième, major 13 - accord de treizième majeure ou whole-tone - gamme par tons).
--Pitch Algorithm: ** (uniforme, linéaire minimum, linéaire maximum, triangulaire, exponentiel minimum, exponentiel maximum, bi-exponentiel, Cauchy, Weibull, Gaussien, Poisson, Walker ou loopseg).
--Speed Algorithm: ** (uniforme, linéaire minimum, linéaire maximum, triangulaire, exponentiel minimum, exponentiel maximum, bi-exponentiel, Cauchy, Weibull, Gaussien, Poisson, Walker ou loopseg).
--Duration Algorithm: ** (uniforme, linéaire minimum, linéaire maximum, triangulaire, exponentiel minimum, exponentiel maximum, bi-exponentiel, Cauchy, Weibull, Gaussien, Poisson, Walker ou loopseg).
--Intensity Algorithm: ** (uniforme, linéaire minimum, linéaire maximum, triangulaire, exponentiel minimum, exponentiel maximum, bi-exponentiel, Cauchy, Weibull, Gaussien, Poisson, Walker ou loopseg).
--Max Num of Grains: Nombre maximum de grains pulsar pour la synthèse (5, 10, 15, 20, 25, 30, 40, 50 ou 60).
-
-Paramètres du graphique:
--Overall Amplitude: Définit l'enveloppe d'amplitude appliquée au son sur sa durée totale en secondes.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre11_A/11.1-4Delays_A.txt b/doc/chapitres/Chapitre11_A/11.1-4Delays_A.txt
deleted file mode 100644
index 75de37e..0000000
--- a/doc/chapitres/Chapitre11_A/11.1-4Delays_A.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-Waveterrain synthesis module based on two stereo delays with parallel or serial routing.
-
-Sliders under the graph:
--Delay 1 Right: Delay time of the right portion of the first delay.
--Delay 1 Left: Delay time of the left portion of the first delay.
--Delay 1 Feedback: Amount of the delayed signal fed back into the first delay.
--Delay 1 Mix: Gain of the first delayed signal.
--Delay 2 Right: Delay time of the right portion of the second delay.
--Delay 2 Left: Delay time of the left portion of the second delay.
--Delay 2 Feedback: Amount of the delayed signal fed back into the second delay.
--Delay 2 Mix: Gain of the second delayed signal.
--Jitter Amp: Amplitude of the jitter applied on the signal.
--Jitter Speed: Frequency of the jitter applied on the signal.
--Filter Freq: Center or cut-off frequency of the filter.
--Filter Q: Q factor of the filter.
--Dry/Wet: Mix between the original signal and the processed signals.
-
-Dropdown menus and toggles:
--Delay Routing: Type of delay routing (serial or parallel).
--Filter Type: Type of the filter (lowpass, highpass, bandpass or bandstop).
--Filter Routing: Determines if the filter is applied before or after the signal processing (pre or post).
--Balance: Adjust the signal amplitude by comparing it with a sinusoidal wave with a fixed amplitude (see "compress") or with the amplitude of the source (see "source").
--# of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
--Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-
-Graph only parameters:
--Overall Amplitude: The amplitude curve applied on the total duration of the performance.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre11_A/11.2-BeatMaker_A.txt b/doc/chapitres/Chapitre11_A/11.2-BeatMaker_A.txt
deleted file mode 100644
index c92a3a7..0000000
--- a/doc/chapitres/Chapitre11_A/11.2-BeatMaker_A.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-Algorithmic beatmaker module.
-
-Sliders under the graph:
--# of Taps: Number of taps in each bar.
--Tempo: Speed of taps (in bpm).
--Beat Tap Length: Length of taps (in seconds - for beats one to four).
--Beat Index: Input soundfile index for each beat (from 0 to 1 - for beats one to four).
--Beat Gain: Gain (in decibels) of the beat (for beats one to four).
--Beat Distribution: Repartition of taps for each beat (from 100% weak to 100% down - for beats one to four).
--Global seed: Seed value for the algorithmic beats, using the same seed with the same distribution will yield the exact same beats.
-
-Dropdown menus and toggles:
--# of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
--Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-
-Graph only parameters:
--Beat 1 ADSR: Amplitude envelope of taps for the first beat in breakpoint fashion.
--Beat 2 ADSR: Amplitude envelope of taps for the second beat in breakpoint fashion.
--Beat 3 ADSR: Amplitude envelope of taps for the third beat in breakpoint fashion.
--Beat 4 ADSR: Amplitude envelope of taps for the fourth beat in breakpoint fashion.
--Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc/chapitres/Chapitre11_A/11.3-DelayMod_A.txt b/doc/chapitres/Chapitre11_A/11.3-DelayMod_A.txt
deleted file mode 100644
index 7ad0bd4..0000000
--- a/doc/chapitres/Chapitre11_A/11.3-DelayMod_A.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-Stereo delay module with jitter control.
-
-Sliders under the graph:
--Delay Left: Delay time of the first delay (in seconds).
--Delay Right: Delay time of the second delay (in seconds).
--AmpModDepth L: Range of the amplitude jitter for the first delay.
--AmpModDepth R: Range of the amplitude jitter for the second delay.
--AmpModFreq L: Speed of the amplitude jitter for the first delay.
--AmpModFreq R: Speed of the amplitude jitter for the second delay.
--DelModDepth L: Range of the delay time jitter for the first delay.
--DelModDepth R: Range of the delay time jitter for the second delay.
--DelModFreq L: Speed of the delay time jitter for the first delay.
--DelModFreq R: Speed of the delay time jitter for the second delay.
--Feedback: Amount of delayed signal fed back into the delay chain.
--Dry/Wet: Mix between the original signal and the delayed signals.
-
-Dropdown menus and toggles:
--# of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
--Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-
-Graph only parameters:
--Overall Amplitude: The amplitude curve applied on the total duration of the performance.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre11_A/11.4-Granulator_A.txt b/doc/chapitres/Chapitre11_A/11.4-Granulator_A.txt
deleted file mode 100644
index 8e10caa..0000000
--- a/doc/chapitres/Chapitre11_A/11.4-Granulator_A.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-Granulation module.
-
-Sliders under the graph:
--Transpose: Base pitch of the grains compared to the original signal (in cents).
--Grain Position: Input soundfile index for the beginning of the grains.
--Position Random: Jitter applied on the soundfile index.
--Pitch Random: Jitter applied on the pitch of the grains using a discreet transposition list (see below).
--Filter Freq: Center or cut-off frequency of the filter.
--Filter Q: Q factor of the filter.
--Grain Duration: Length of the grains (in seconds).
--# of Grains: Number of grains.
-
-Dropdown menus and toggles:
--Filter Type: Type of the filter (lowpass, highpass, bandpass or bandstop).
--Balance: Adjust the signal amplitude by comparing it with a sinusoidal wave with a fixed amplitude (see "compress") or with the amplitude of the source (see "source").
--Discreet Transpo: Click in the box to enter a list of discreet values for transposition (see "Pitch Random" above).
--# of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
--Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-
-Graph only parameters:
--Overall Amplitude: The amplitude curve applied on the total duration of the performance.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre11_F/11.1-4Delays_F.txt b/doc/chapitres/Chapitre11_F/11.1-4Delays_F.txt
deleted file mode 100644
index 765d8cb..0000000
--- a/doc/chapitres/Chapitre11_F/11.1-4Delays_F.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-4Delays est un module de synthèse "waveterrain", basé sur deux délais appliqués respectivement en stéréo, avec option d'aiguillage parallèle ou en série.
-
-Potentiomètres:
--Delay 1 Right: Temps de délai de la portion droite du premier délai.
--Delay 1 Left: Temps de délai de la portion gauche du premier délai.
--Delay 1 Feedback: Niveau de réinjection du signal dans le premier délai.
--Delay 1 Mix: Niveau d'intensité du premier signal délayé.
--Delay 2 Right: Temps de délai de la portion droite du second délai.
--Delay 2 Left: Temps de délai de la portion gauche du second délai.
--Delay 2 Feedback: Niveau de réinjection du signal dans le second délai.à
--Delay 2 Mix: Niveau d'intensité du second signal délayé.
--Jitter Amp: Amplitude de la variation aléatoire (jitter) appliquée au signal.
--Jitter Speed: Fréquence de la variation aléatoire (jitter) appliquée au signal.
--Filter Freq: Fréquence centrale ou fréquence de coupure du filtre.
--Filter Q: Facteur Q du filtre.
--Dry/Wet: Rapport de niveau entre le son original et le son traité par le module.
-
-Paramètres fixes:
--Delay Routing: Type d'aiguillage des délais (en série ou parallèle).
--Filter Type: Type de filtre utilisé (lowpass - passe-bas, highpass - passe-haut, bandpass - passe-bande ou bandstop - réjecteur de bande).
--Filter Routing: Détermine si le filtrage est effectué avant ou après le traitement du signal par les délais (pre ou post).à
--Balance: Ajuste l'amplitude du son traité en la comparant avec celle d'une onde sinusoïdale à amplitude fixe (compress) ou celle de la source (source).
--# of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
--Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-
-Paramètres du graphique:
--Overall Amplitude: Définit l'enveloppe d'amplitude appliquée au son sur sa durée totale en secondes.
diff --git a/doc/chapitres/Chapitre11_F/11.2-BeatMaker_F.txt b/doc/chapitres/Chapitre11_F/11.2-BeatMaker_F.txt
deleted file mode 100644
index 421e5bf..0000000
--- a/doc/chapitres/Chapitre11_F/11.2-BeatMaker_F.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-BeatMaker est un module permettant de créer des rythmes complexes à partir d'algorithmes.
-
-Potentiomètres:
--# of Taps: Nombre de temps par mesure.
--Tempo: Vitesse de métronome (en bpm).
--Beat Tap Length: Longueur des figures rythmiques (en secondes, pour les figures rythmiques 1 à 4 - beat 1,2,3 et 4).
--Beat Index: Position dans le fichier son d'origine à partir de laquelle chaque son rythmique est créé (sur une échelle allant de 0 à 1 - pour les figures rythmiques 1 à 4 - beat 1,2,3 et 4).
--Beat Gain: Niveau d'intensité (en décibels) de chaque temps (pour les figures rythmiques 1 à 4 - beat 1,2,3 et 4).
--Beat Distribution: Répartition aléatoire des figures rythmiques 1 à 4 - beat 1,2,3 et 4.
--Global seed: Valeur de base pour la génération algorithmique des figures rythmiques; une même base avec les mêmes distributions reproduira exactement un même résultat.
-
-Paramètres fixes:
--# of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
--Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-
-Paramètres du graphique:
--Beat 1 ADSR: Enveloppe d'amplitude des "notes" pour la première figure rythmique, dessinée à l'aide de points.
--Beat 2 ADSR: Enveloppe d'amplitude des "notes" pour la deuxième figure rythmique, dessinée à l'aide de points.
--Beat 3 ADSR: Enveloppe d'amplitude des "notes" pour la troisième figure rythmique, dessinée à l'aide de points.
--Beat 4 ADSR: Enveloppe d'amplitude des "notes" pour la quatrième figure rythmique, dessinée à l'aide de points.
--Overall Amplitude: Définit l'enveloppe d'amplitude appliquée au son sur sa durée totale en secondes.
diff --git a/doc/chapitres/Chapitre11_F/11.3-DelayMod_F.txt b/doc/chapitres/Chapitre11_F/11.3-DelayMod_F.txt
deleted file mode 100644
index 9235cd2..0000000
--- a/doc/chapitres/Chapitre11_F/11.3-DelayMod_F.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-DelayMod est un module de délai appliqué en stéréo avec un contrôle de variation aléatoire (jitter).
-
-Potentiomètres:
--Delay Left: Temps de délai du premier délai (gauche - en secondes).
--Delay Right: Temps de délai du second délai (droit - en secondes).
--AmpModDepth L: Amplitude de la variation aléatoire (jitter) appliquée à l'amplitude du premier délai.
--AmpModDepth R: Amplitude de la variation aléatoire (jitter) appliquée à l'amplitude du second délai.
--AmpModFreq L: Fréquence de la variation aléatoire (jitter) appliquée à l'amplitude du premier délai.
--AmpModFreq R: Fréquence de la variation aléatoire (jitter) appliquée à l'amplitude du second délai.
--DelModDepth L: Amplitude de la variation aléatoire (jitter) appliquée au temps de délai du premier délai.
--DelModDepth R: Amplitude de la variation aléatoire (jitter) appliquée au temps de délai du second délai.
--DelModFreq L: Fréquence de la variation aléatoire (jitter) appliquée au temps de délai du premier délai.
--DelModFreq R: Fréquence de la variation aléatoire (jitter) appliquée au temps de délai du second délai.
--Feedback: Niveau de réinjection du signal dans le module.
--Dry/Wet: Rapport de niveau entre le son original et le son traité par le module.
-
-Paramètres fixes:
--# of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
--Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-
-Paramètres du graphique:
--Overall Amplitude: Définit l'enveloppe d'amplitude appliquée au son sur sa durée totale en secondes.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre11_F/11.4-Granulator_F.txt b/doc/chapitres/Chapitre11_F/11.4-Granulator_F.txt
deleted file mode 100644
index 0204968..0000000
--- a/doc/chapitres/Chapitre11_F/11.4-Granulator_F.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-Granulator est un module de granulation.
-
-Potentiomètres:
--Transpose: Hauteur (en cents) de base des grains en comparaison au signal original.
--Grain Position: Position dans le fichier son d'origine d'où l'échantillon sonore du grain est tiré.
--Position Random: Variation aléatoire appliquée au paramètre précédent.
--Pitch Random: Variation aléatoire appliquée à la hauteur du son des grains, utilisant une liste de transposition discrète (voir plus bas).
--Filter Freq: Fréquence centrale ou fréquence de coupure du filtre.
--Filter Q: Facteur Q (largeur de bande) du filtre.
--Grain Duration: Longueur (en secondes) des grains.
--# of Grains: Nombre de grains utilisés.
-
-Paramètres fixes:
--Filter Type: Type de filtre utilisé (lowpass - passe-bas, highpass - passe-haut, bandpass - passe-bande ou bandstop - réjecteur de bande).
--Balance: Ajuste l'amplitude du son traité en la comparant avec celle d'une onde sinusoïdale à amplitude fixe (compress) ou celle de la source (source).
--Discreet Transpo: Cliquez dans l'espace désigné pour entrer une liste de valeurs discrètes pour la transposition (voir "Pitch Random", plus haut).
--# of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
--Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-
-Paramètres du graphique:
--Overall Amplitude: Définit l'enveloppe d'amplitude appliquée au son sur sa durée totale en secondes.
diff --git a/doc/chapitres/Chapitre1_A/Requirements_A.txt b/doc/chapitres/Chapitre1_A/Requirements_A.txt
deleted file mode 100644
index a215824..0000000
--- a/doc/chapitres/Chapitre1_A/Requirements_A.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-Cecilia5 is compatible with the following systems:
-\begin{itemize}
-\item Mac OS X (10.5, 10.6 or 10.7) 
-\item Windows (XP, Vista or Seven)
-\item Linux (In this case, you should install Pyo (a python library for audio signal processing) from the source code first; then you will be able to install Cecilia5.  For the complete procedure, follow this link: http://code.google.com/p/pyo/wiki/Installation )
-\end{itemize}
-Minimum versions (for running Cecilia5 from sources):
-
-Before installing and using Cecilia5 (especially if you do it from the source code), please check if all these elements are installed on your computer:
-\begin{itemize}
-\item Python 2.6 ou 2.7 (http://www.python.org/getit/releases/2.6/ or http://www.python.org/getit/releases/2.7/)
-\item Pyo 0.6.2 (or compiled with sources up-to-date - http://code.google.com/p/pyo/downloads/list)
-\item Numpy 1.6.0 (http://sourceforge.net/projects/numpy/files/NumPy/1.6.0/)
-\item WxPython 2.8.12.1 (http://wxpython.org/download.php) \end{itemize}
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre1_F/Description_F.txt b/doc/chapitres/Chapitre1_F/Description_F.txt
deleted file mode 100644
index 349a4f1..0000000
--- a/doc/chapitres/Chapitre1_F/Description_F.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-Cecilia est un logiciel libre proposant plusieurs modules destinés à la synthèse sonore et au traitement du signal audio. Il permet à l'utilisateur de créer sa propre interface graphique (potentiomètres, boutons, menus et graphique central) grâce à l'utilisation d'une syntaxe simple.  
-
-À l'origine écrit en tcl/tk (version 3) et conçu pour tirer profit des possibilités offertes par l'environnement CSound, Cecilia utilisait l'API de CSound comme intermédiaire entre l'interface graphique et l'engin audio.  La version 4.2 est la dernière mise à jour de la version 4.
-
-Cecilia a été entièrement réécrit en Python/wxPython et fonctionne maintenant avec Pyo, un module Python écrit en C et créé pour le langage de programmation Python.  Pyo est beaucoup plus performant que CSound du point de vue de l'intégration de l'engin audio à l'interface graphique.  Comme il s'agit d'un module Python standard, aucun API n'est nécessaire pour communiquer avec l'interface.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre1_F/Requirements_F.txt b/doc/chapitres/Chapitre1_F/Requirements_F.txt
deleted file mode 100644
index 3a14a23..0000000
--- a/doc/chapitres/Chapitre1_F/Requirements_F.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-Cecilia5 est compatible avec les systèmes suivants:
-\begin{itemize} 
-\item Mac OS X (10.5, 10.6 ou 10.7) 
-\item Windows (XP, Vista ou Seven)
-\item Linux (Il sera alors nécessaire d'installer d'abord la librairie Pyo à partir du code source; on pourra ensuite installer Cecilia5. Pour la procédure complète, suivez ce lien: http://code.google.com/p/pyo/wiki/Installation )
-\end{itemize}
-
-Avant d'installer et d'utiliser Cecilia5 (spécialement si vous le faites à partir des sources), veuillez vous assurer que tous les éléments suivants sont installés sur votre ordinateur:
-\begin{itemize}
-\item Python 2.6 ou 2.7 (http://www.python.org/getit/releases/2.6/ ou http://www.python.org/getit/releases/2.7/)
-\item Pyo 0.6.2 (ou compilé à partir des sources mises à jour - http://code.google.com/p/pyo/downloads/list)
-\item Numpy 1.6.0 (http://sourceforge.net/projects/numpy/files/NumPy/1.6.0/)
-\item WxPython 2.8.12.1 (http://wxpython.org/download.php) \end{itemize}
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_A/1-Presentation_A.txt b/doc/chapitres/Chapitre2_A/1-Presentation_A.txt
deleted file mode 100644
index bf8a6fb..0000000
--- a/doc/chapitres/Chapitre2_A/1-Presentation_A.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-In Cecilia5, all built-in modules come with a graphical interface, which is divided in different sections, common to all treatment and synthesis modules of the software: the transports bar, the In/Out, Pre-processing and Post-Processing tabs, the presets section, the graphic and the sliders that control the parameters of the module. All these sections will be described in this chapter.
-
-***image 1-Interface-graphique.png***
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_A/2-Transports_A.txt b/doc/chapitres/Chapitre2_A/2-Transports_A.txt
deleted file mode 100644
index f22312d..0000000
--- a/doc/chapitres/Chapitre2_A/2-Transports_A.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-The transport section contains a window that indicates the current time of playback of the output sound file and two buttons: "Play/stop" and "Record".
-**Image 2-Transport.png**
-
--"Play/stop" button **image 2a-play.png**: Press to launch playback of the output sound file.  Click again to stop.
-
--"Record" button **image 2b-record.png**: Press to record output to a file.  No sound will be heard.  A "Save audio file as ..." dialog window will appear. By default, all sound files will be recorded in AIFF format and will be named by the name of the module (with the extension .aif).
-**image 3-SaveAudioFileAs.png**
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_A/3-In-Out_A/3-InOut_A.txt b/doc/chapitres/Chapitre2_A/3-In-Out_A/3-InOut_A.txt
deleted file mode 100644
index 6d38a08..0000000
--- a/doc/chapitres/Chapitre2_A/3-In-Out_A/3-InOut_A.txt
+++ /dev/null
@@ -1 +0,0 @@
-The In/Out tab, which is situated below the transports bar, features different control options related to the input/output sound files.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_A/3-In-Out_A/3.1-Input_A.txt b/doc/chapitres/Chapitre2_A/3-In-Out_A/3.1-Input_A.txt
deleted file mode 100644
index 56ee6cf..0000000
--- a/doc/chapitres/Chapitre2_A/3-In-Out_A/3.1-Input_A.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-**image 4-Input.png**
-This section is only provided with the treatment modules. To import an audio file from hard drive, click on the "Audio" bar. Only WAV and AIFF files will be accepted by the module.
-
-In the Input section, these icons are shortcuts to some features of Cecilia5:
-**image 3.1-Icones-In.png**
-
-Click on the loudspeaker **image 1-Haut-parleur.png** to listen to the imported sound file or to the output sound file with another sound player or sequencer application. If no application has been selected in the Preferences yet, a dialog window ***image*** will appear.  Please select a sound player in the Application folder.
-***image 1.1-ChooseSoundfilePlayer.png***
-
-Click on the scissors **image 2-Ciseaux.png** to edit the sound file in an editor application. If no application has been selected in the Preferences yet, a dialog window will appear.  Please select a sound editor in the Application folder. 
-**image 2.1-ChooseSoundfileEditor.png**
-
-Click on the triangle **image 5-Triangle.png** to open the "Sound source controls" dialog window for more options on the source sound file:
-**image 6-SourceSoundControls.png**
-
-In this window, as in the main Input section, click on the loudspeaker to play the source sound file or on the scissors to edit the source sound file with an external application. Click on the icon clock to set the duration of the output sound to the source sound duration.
-**image 3.3-Icones-SSC.png**
-
-The "Audio Offset" slider sets the offset time into the source sound (start position in the source sound file).  In the "Loop" menu, there are four options available: Off (no loop), Forward (forward loop), Backward (backward loop) and Back & Forth (forward and backward loop in alternance).
-
-If the "Start from loop" box is checked, Cecilia will start reading the sound file from the loop point.  If the "Xfade" box is checked, Cecilia will make a crossfade between loops.
-
-The "Loop In" slider sets the start position of the loop in the source soundfile.
-
-The "Loop Time" slider sets the duration (in seconds) of the loop.
-
-The "Loop X" slider sets the duration of the crossfade between two loops (percentage of the total loop time).
-
-The "Gain" slider sets the intensity (in decibels) of the sound source.
-
-Move the "Transpo" slider to transpose (direct transposition) the original sound file.  The duration of the sound file is affected by the transposition, as while reading a tape at different speeds.
-
-All settings can be controlled through automations.  To record an automation, click on the red circle on the left side of the slider and press play (on the transport bar) to read the sound file.  All slider variations will then be recorded in real time in the graphic of the interface.  Afterwards, you can modify the automation curve in the graphic (see the corresponding following section).  Then, click on the green triangle to enable automation while playing the sound file.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_A/3-In-Out_A/3.2-Output_A.txt b/doc/chapitres/Chapitre2_A/3-In-Out_A/3.2-Output_A.txt
deleted file mode 100644
index b3faf98..0000000
--- a/doc/chapitres/Chapitre2_A/3-In-Out_A/3.2-Output_A.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-**image 5-Output.png**
-This section contains all options for recording the audio file on hard drive. Click on the "file name" bar to choose the name, format and repertory of the audio file to record.
-Then, two sliders allows you to choose the duration (in seconds) and the gain (in decibels) of the output file.  Enter the number of audio channels in the "Channels" bar.  The "Peak" bar indicates the maximum intensity of the audio signal.
-
-In the Input section, these icons are shortcuts to some features of Cecilia5:
-**image 3.2-Icones-Out.png**
-
-In the Output section, as in the Input section, click on the loudspeaker to play the source sound file or on the scissors to edit the source sound file with an external application (see above). Click on the arrows **image 3-Fleches.png** to use the output sound file as the source sound.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5-Post-processing_A.txt b/doc/chapitres/Chapitre2_A/5-Post-processing_A/5-Post-processing_A.txt
deleted file mode 100644
index f638348..0000000
--- a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5-Post-processing_A.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-The post-processing tab is situated below the transports bar, just beside the In/Out tab.
-**image 7-Post-processing.png**
-
-In this tab, you can add post-processing effects on the output audio file. It is possible to add up to 3 post-processing modules.  Signal routing is from top to bottom.  Set audio parameters with the buttons on the left side.  Computation must be restarted for the post-processing to take effects.
-
-Choose the post-processing module in the "Effects" menu. The "Type" menu allows you to alternate between active module and bypass or to make a choice between different options, depending of the module.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.1-Reverb_A.txt b/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.1-Reverb_A.txt
deleted file mode 100644
index e1e811d..0000000
--- a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.1-Reverb_A.txt
+++ /dev/null
@@ -1 +0,0 @@
-Reverberation module. Parameters: Mix (dry/wet mix), Time (reverberation time in seconds) and Damp (filtering of high frequencies). In the "Type" menu, you can choose between activate (active) and bypass the effect.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.10-Phaser_A.txt b/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.10-Phaser_A.txt
deleted file mode 100644
index 0c5d524..0000000
--- a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.10-Phaser_A.txt
+++ /dev/null
@@ -1 +0,0 @@
-Phasing effect based on all-pass filters that generates resonance peaks in the spectrum. Knobs: Freq (frequency of the first all-pass filter), Q (Q factor/filter resonance) and Spread (spread factor - exponential operator that determinates the frequency of all other all-pass filters). In the "Type" menu, you can choose between activate (active) and bypass the effect.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.11-Delay_A.txt b/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.11-Delay_A.txt
deleted file mode 100644
index 5cf7996..0000000
--- a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.11-Delay_A.txt
+++ /dev/null
@@ -1 +0,0 @@
-Delay module. Parameters: Delay (delay time, in milliseconds), Feed (feedback factor, between 0 and 1) and Mix (dry/wet mix). In the "Type" menu, you can choose between activate (active) and bypass the effect.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.12-Flange_A.txt b/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.12-Flange_A.txt
deleted file mode 100644
index 2656eaa..0000000
--- a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.12-Flange_A.txt
+++ /dev/null
@@ -1 +0,0 @@
-Flanger effect based on a delay. Parameters: Depth (amplitude of the LFO that modulates the delay. The modulation is set around a central time of 5 milliseconds; depth factor = amplitude of the modulation in milliseconds/5 milliseconds), Freq (frequency of the modulating LFO) and Feed (feedback factor - enhances the resonances in the spectrum). In the "Type" menu, you can choose between activate (active) and bypass the effect.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.13-Harmonizer_A.txt b/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.13-Harmonizer_A.txt
deleted file mode 100644
index 980ca44..0000000
--- a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.13-Harmonizer_A.txt
+++ /dev/null
@@ -1 +0,0 @@
-Transposition module.  Parameters: Transpo (transposition factor, in semi-tones), Feed (feedback factor) and Mix (dry/wet mix). In the "Type" menu, you can choose between activate (active) and bypass the effect.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.14-Resonators_A.txt b/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.14-Resonators_A.txt
deleted file mode 100644
index 46ab8f9..0000000
--- a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.14-Resonators_A.txt
+++ /dev/null
@@ -1 +0,0 @@
-Audio effect based on delays that generates harmonic resonances in the spectrum. Parameters: Freq (frequency of the first harmonic resonance), Spread (spread factor - exponential operator that determinates the frequency of all other harmonic resonances) and Mix (dry/wet mix). In the "Type" menu, you can choose between activate (active) and bypass the effect.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.15-DeadReson_A.txt b/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.15-DeadReson_A.txt
deleted file mode 100644
index a040b1b..0000000
--- a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.15-DeadReson_A.txt
+++ /dev/null
@@ -1 +0,0 @@
-Similar to the Resonators effect. In this case, the harmonic resonances are slightly detuned. Parameters: Freq (frequency of the first harmonic resonance), Detune (detune of the other harmonic resonances) and Mix (dry/wet mix). In the "Type" menu, you can choose between activate (active) and bypass the effect.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.2-Filter_A.txt b/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.2-Filter_A.txt
deleted file mode 100644
index 673952d..0000000
--- a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.2-Filter_A.txt
+++ /dev/null
@@ -1 +0,0 @@
-Filter module.  Parameters: Level (gain of the filtered signal, in decibels), Freq (cutoff frequency or central frequency of the filter) and Q (Q factor/filter resonance). In the "Type" menu, you can choose between four types of filters : lowpass, highpass, bandpass and band reject. You can also select "bypass" to bypass the effect.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.3-Chorus_A.txt b/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.3-Chorus_A.txt
deleted file mode 100644
index dca331f..0000000
--- a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.3-Chorus_A.txt
+++ /dev/null
@@ -1 +0,0 @@
-Chorus module. Parameters: Mix (dry/wet mix), Depth (amplitude of the modulation) and Feed (feedback factor). In the "Type" menu, you can choose between activate (active) and bypass the effect.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.4-ParaEQ_A.txt b/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.4-ParaEQ_A.txt
deleted file mode 100644
index 5feb36a..0000000
--- a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.4-ParaEQ_A.txt
+++ /dev/null
@@ -1 +0,0 @@
-Parametric equalizer. Parameters: Freq (cutoff frequency or central frequency of the filter), Q (Q factor/filter resonance) and Gain (intensity of the filtered signal, in decibels). In the "Type" menu, you can choose between three types of equalizers: Peak/Notch, Lowshelf and Highshelf. You can also select "bypass" to bypass the effect.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.5-3BandsEQ_A.txt b/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.5-3BandsEQ_A.txt
deleted file mode 100644
index 9c3766e..0000000
--- a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.5-3BandsEQ_A.txt
+++ /dev/null
@@ -1 +0,0 @@
-Equalizer in three frequency bands. Parameters: Low (low-freq filtering), Mid (mid-freq filtering) and High (high-freq filtering). In the "Type" menu, you can choose between activate (active) and bypass the effect.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.6-Compress_A.txt b/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.6-Compress_A.txt
deleted file mode 100644
index d64d116..0000000
--- a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.6-Compress_A.txt
+++ /dev/null
@@ -1 +0,0 @@
-Compression module. Parameters: Thresh (compression threshold, in decibels), Ratio (compression ratio) and Gain (intensity of the compressed signal, in decibels). In the "Type" menu, you can choose between activate (active) and bypass the effect.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.7-Gate_A.txt b/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.7-Gate_A.txt
deleted file mode 100644
index a047546..0000000
--- a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.7-Gate_A.txt
+++ /dev/null
@@ -1 +0,0 @@
-Noise gate module. Parameters: Thresh (in decibels - threshold below which the sound is attenuated), Rise (rise time or attack, in seconds) and Fall (release time, in seconds). In the "Type" menu, you can choose between activate (active) and bypass the effect.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.8-Disto_A.txt b/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.8-Disto_A.txt
deleted file mode 100644
index 02b72bf..0000000
--- a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.8-Disto_A.txt
+++ /dev/null
@@ -1 +0,0 @@
-Distorsion module. Parameters: Drive (intensity of the distorsion; from 0 - no distorsion - to 1 - square transfert fonction), Slope (normalized cutoff frequency of the low-pass filter; from 0 - no filter - to 1 - very low cutoff frequency) and Gain (level of the distorted signal, in decibels). In the "Type" menu, you can choose between activate (active) and bypass the effect.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.9-AmpMod_A.txt b/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.9-AmpMod_A.txt
deleted file mode 100644
index 596c412..0000000
--- a/doc/chapitres/Chapitre2_A/5-Post-processing_A/5.9-AmpMod_A.txt
+++ /dev/null
@@ -1 +0,0 @@
-Amplitude modulator and ring modulator. Parameters: Freq (frequency of the modulating wave), Amp (amplitude of the modulating wave) and Stereo (phase difference between the two stereo channels; from 0 - no phase difference - and 1 - left and right channels are modulated in alternance through the phase offset of the modulator of the right channel). In the "Type" menu, you can choose between amplitude modulation (Amplitude) and ring modulation (RingMod) or bypass the effect.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_F/1-Presentation_F.txt b/doc/chapitres/Chapitre2_F/1-Presentation_F.txt
deleted file mode 100644
index d895e7d..0000000
--- a/doc/chapitres/Chapitre2_F/1-Presentation_F.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-L'interface graphique de Cecilia5 comporte plusieurs sections communes à tous les modules de synthèse et de traitement du logiciel: La barre des transports, les onglets In/Out (entrée et sortie), pre-processing (effets sonores avant traitement) et post-processing (effets sonores post-traitement), la section des préréglages (presets), le graphique et la section de réglages des paramètres du module. Les différentes sections de l'interface seront décrites dans ce chapitre.
-  
-
-***image 1-Interface-graphique.png***
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_F/2-Transports_F.txt b/doc/chapitres/Chapitre2_F/2-Transports_F.txt
deleted file mode 100644
index 18e1398..0000000
--- a/doc/chapitres/Chapitre2_F/2-Transports_F.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-La barre des transports comprend une fenêtre indiquant la position temporelle lors de la lecture du fichier son généré par le module, ainsi qu'un bouton "Play/stop" et un bouton "Record".
-**Image 2-Transport.png**
-
--Bouton "play/stop" **image 2a-play.png**: cliquez sur ce bouton pour lancer la lecture du fichier son généré à la sortie du module.  Pour arrêter la lecture, cliquez une autre fois sur le bouton.
-
--Bouton "record" **image 2b-record.png**: cliquez sur ce bouton pour enregistrer le fichier son généré à la sortie du module sur le disque dur.  Aucun son n'est entendu lors de l'enregistrement du fichier.
-Une fenêtre "Save audio file as ..." apparaîtra.  Par défaut, les fichiers son sont sauvegardés en format AIFF et portent le nom du module (avec l'extension .aif).
-**image 3-SaveAudioFileAs.png**
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_F/3-In-Out_F/3-InOut_F.txt b/doc/chapitres/Chapitre2_F/3-In-Out_F/3-InOut_F.txt
deleted file mode 100644
index ceb4a7d..0000000
--- a/doc/chapitres/Chapitre2_F/3-In-Out_F/3-InOut_F.txt
+++ /dev/null
@@ -1 +0,0 @@
-L'onglet In/Out, situé sous la barre des transports, permet la gestion des entrées et des sorties du logiciel.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_F/3-In-Out_F/3.1-Input_F.txt b/doc/chapitres/Chapitre2_F/3-In-Out_F/3.1-Input_F.txt
deleted file mode 100644
index 96dc5d6..0000000
--- a/doc/chapitres/Chapitre2_F/3-In-Out_F/3.1-Input_F.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-**image 4-Input.png**
-Cette section n'est présente que dans les modules de traitement. Cliquez sur la barre "Audio" pour importer un fichier son à partir du disque dur. Seuls les fichiers WAV et AIFF sont pris en charge par le logiciel.
-
-Les pictogrammes suivants offrent des raccourcis vers certaines fonctionnalités du logiciel:
-**image 3.1-Icones-In.png
-
-L'icône haut-parleur permet d'écouter le fichier son sélectionné en entrée ou le fichier son généré à la sortie du module à partir d'un autre logiciel au choix de l'utilisateur.  Si aucun logiciel n'a été sélectionné dans les préférences de Cecilia5, une fenêtre apparaîtra afin de vous permettre de sélectionner le logiciel de votre choix à partir du dossier Applications.
-***image 1.1-ChooseSoundfilePlayer.png*** 
-
-L'icône ciseaux permet d'éditer le fichier son à partir d'un éditeur de fichiers sons au choix de l'utilisateur. Si aucun logiciel n'a été sélectionné dans les préférences de Cecilia5, une fenêtre apparaîtra afin de vous permettre de sélectionner le logiciel de votre choix à partir du dossier Applications.
-***image 2.1-ChooseSoundfileEditor.png***
-
-L'icône triangle donne accès à une fenêtre d'options sur le fichier sélectionné comme source sonore (Sound source controls). 
-***Image 6-SourceSoundControls.png***
-
-Dans cette fenêtre, tout comme dans l'onglet principal In/Out, les icônes haut-parleur et ciseaux permettent respectivement d'écouter et d'éditer le fichier son d'origine.  Quant à lui, l'icône horloge règle la durée du fichier son généré en sortie sur celle du fichier son d'origine.
-**image 3.3-Icones-SSC.png**
-
-Le curseur "Audio Offset" permet de fixer la position de départ de lecture dans le fichier son sélectionné.  Dans le menu "Loop", on peut choisir parmi quatre options: Off (pas de lecture en boucle), Forward (lecture en boucle du début vers la fin), Backward (lecture en boucle de la fin vers le début) et Back & Forth (lecture en boucle dans les deux sens, en alternance).
-
-Si la case "Start from loop" est cochée, la lecture se fera à partir du point de répétition.  Si la case "Xfade" est cochée, le module effectuera un fondu enchaîné entre la fin d'une boucle et le début de la suivante.
-
-Le curseur "Loop In" permet de fixer la position de départ de la boucle dans le fichier son d'origine.
-
-Le curseur "Loop Time" permet de régler la durée (en secondes) de la boucle.
-
-Le curseur "Loop X" permet de régler la durée du fondu enchaîné entre deux boucles. La durée se règle en rapport avec la durée de la boucle (en pourcentage).
-
-Le curseur "Gain" permet de régler l'intensité sonore (en décibels) de la source sonore.
-
-Le curseur "Transpo" permet d'effectuer une transposition directe sur la source sonore.  La durée du fichier son est affectée par la transposition, comme lors d'une lecture de bande.
-
-Ces réglages sont automatisables.  Pour ce faire, cliquez sur le cercle rouge à gauche du curseur et déclenchez la lecture du son à partir de la barre des transports; les mouvements du curseur seront enregistrés en temps réel dans le graphique de l'interface. Il est ensuite possible de modifier le tracé de l'automatisation dans le graphique (voir la section correspondante).  Le triangle vert permet ensuite de rejouer l'automatisation à chaque nouvelle lecture du fichier son.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_F/3-In-Out_F/3.2-Output_F.txt b/doc/chapitres/Chapitre2_F/3-In-Out_F/3.2-Output_F.txt
deleted file mode 100644
index 01e9ddf..0000000
--- a/doc/chapitres/Chapitre2_F/3-In-Out_F/3.2-Output_F.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-**image 5-Output.png**
-Cette section contient les réglages pour l'enregistrement du son sur le disque dur.  En cliquant dans la barre "file name", on peut choisir le nom et le format du fichier son à enregistrer ainsi que le répertoire dans lequel on veut le placer.
-Ensuite, deux curseurs permettent de régler respectivement la longueur en secondes et le gain en décibels du fichier son.
-Finalement, la fenêtre "Channels" permet de choisir le nombre de canaux audio désiré, tandis que la fenêtre "Peak" indique l'intensité maximale du signal de sortie en décibels.
-
-
-Les pictogrammes suivants offrent des raccourcis vers certaines fonctionnalités du logiciel:
-**image 3.2-Icones-Out.png**
-Dans cette section, tout comme dans la section des entrées, les icônes haut-parleur et ciseaux permettent respectivement d'écouter et d'éditer le fichier son d'origine à partir d'une application externe (voir section précédente).  Quant à lui, l'icône flèches permet d'utiliser le fichier son généré à la sortie du module comme source sonore et ainsi, de le réinjecter dans le module de traitement.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5-Post-processing_F.txt b/doc/chapitres/Chapitre2_F/5-Post-processing_F/5-Post-processing_F.txt
deleted file mode 100644
index c0c1a87..0000000
--- a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5-Post-processing_F.txt
+++ /dev/null
@@ -1,7 +0,0 @@
-L'onglet "Post-proc" (effets sonores post-traitement) est situé juste sous la barre des transports, à côté de l'onglet "In/Out".
-
-**image 7-Post-processing.png**
-
-Cette section permet d'ajouter des effets sonores supplémentaires sur le fichier son généré à la sortie du module.  On peut ajouter jusqu'à trois modules d'effets différents.  La chaîne de traitement va du haut vers le bas.  La gestion des paramètres du traitement se fait à partir des potentiomètres à gauche.  Il est nécessaire d'arrêter et de repartir la lecture du son afin que le module puisse prendre les ajouts de traitement en charge.
-
-Choisir l'effet sonore désiré à partir du menu "Effects"; le menu "Type" permet ensuite d'alterner entre l'activation et la désactivation de l'effet ou de choisir parmi plusieurs options, selon les cas.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.1-Reverb_F.txt b/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.1-Reverb_F.txt
deleted file mode 100644
index c8a0cda..0000000
--- a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.1-Reverb_F.txt
+++ /dev/null
@@ -1 +0,0 @@
-Module de réverbération.  Paramètres: Mix (dry/wet - rapport son direct/son réverbéré), Time (temps de réverbération en secondes) et Damp (filtrage des fréquences aiguës). Le menu "Type" permet de choisir entre l'activation (active) et la désactivation (bypass) de l'effet.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.10-Phaser_F.txt b/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.10-Phaser_F.txt
deleted file mode 100644
index c8ea5ea..0000000
--- a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.10-Phaser_F.txt
+++ /dev/null
@@ -1 +0,0 @@
-Effet de phasing basé sur l'utilisation de filtres passe-tout provoquant des pics de résonance. Paramètres: Freq (fréquence du premier filtre passe-tout), Q (facteur Q des filtres), Spread (facteur d'expansion des filtres - puissance à laquelle la fréquence du premier filtre passe-tout est élevée, déterminant la fréquence de chacun des autres filtres). Le menu "Type" permet de choisir entre l'activation (active) et la désactivation (bypass) de l'effet.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.11-Delay_F.txt b/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.11-Delay_F.txt
deleted file mode 100644
index e60b2ac..0000000
--- a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.11-Delay_F.txt
+++ /dev/null
@@ -1 +0,0 @@
-Module de délai.  Paramètres: Delay (durée du délai, en millisecondes), Feed (facteur de récursion ou feedback, entre 0 et 1), Mix (rapport son direct/son traité). Le menu "Type" permet de choisir entre l'activation (active) et la désactivation (bypass) de l'effet.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.12-Flange_F.txt b/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.12-Flange_F.txt
deleted file mode 100644
index 3befd63..0000000
--- a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.12-Flange_F.txt
+++ /dev/null
@@ -1 +0,0 @@
-Effet de flange. Paramètres: Depth (amplitude du LFO modulant la durée du délai à l'origine de l'effet. La modulation se fait autour d'un temps de délai central de 5 millisecondes; le facteur depth est le rapport amplitude en millisecondes de la modulation/5 millisecondes.), Freq (fréquence du LFO modulant la durée du délai) et Feed (facteur de récursion ou feedback; accentue la résonance des pics du spectre). Le menu "Type" permet de choisir entre l'activation (active) et la désactivation (bypass) de l'effet.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.13-Harmonizer_F.txt b/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.13-Harmonizer_F.txt
deleted file mode 100644
index 567b174..0000000
--- a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.13-Harmonizer_F.txt
+++ /dev/null
@@ -1 +0,0 @@
-Module de transposition. Paramètres: Transpo (facteur de transposition, en demi-tons), Feed (facteur de récursion ou feedback), Mix (rapport signal direct/signal traité). Le menu "Type" permet de choisir entre l'activation (active) et la désactivation (bypass) de l'effet.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.14-Resonators_F.txt b/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.14-Resonators_F.txt
deleted file mode 100644
index b602348..0000000
--- a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.14-Resonators_F.txt
+++ /dev/null
@@ -1 +0,0 @@
-Effet à base de délais causant des résonances harmoniques dans le spectre. Paramètres: Freq (fréquence de la première résonance harmonique), Spread (puissance à laquelle la fréquence de la première résonance est élevée, déterminant ainsi la fréquence des autres résonances), Mix (rapport son direct/son traité). Le menu "Type" permet de choisir entre l'activation (active) et la désactivation (bypass) de l'effet.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.15-DeadReson_F.txt b/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.15-DeadReson_F.txt
deleted file mode 100644
index 831c327..0000000
--- a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.15-DeadReson_F.txt
+++ /dev/null
@@ -1 +0,0 @@
-Fonctionne de manière similaire aux Resonators. Dans ce cas, les résonances harmoniques sont légèrement désaccordées. Paramètres: Freq (fréquence de la première résonance harmonique), Detune (désaccord plus ou moins accentué des résonances harmoniques), Mix (rapport son direct/son traité ). Le menu "Type" permet de choisir entre l'activation (active) et la désactivation (bypass) de l'effet.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.2-Filter_F.txt b/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.2-Filter_F.txt
deleted file mode 100644
index c1bc704..0000000
--- a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.2-Filter_F.txt
+++ /dev/null
@@ -1 +0,0 @@
-Module de filtrage.  Paramètres: Level (gain du signal filtré, en décibels), Freq (Fréquence de coupure ou fréquence centrale du filtre), Q (facteur Q du filtre; affecte la résonance du filtre).  Le menu "Type" permet de choisir entre plusieurs types de filtres: lowpass (filtre passe-bas), highpass (filtre passe-haut), bandpass (filtre passe-bande) et band reject (filtre réjecteur de bande).  L'option bypass permet de désactiver le filtre.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.3-Chorus_F.txt b/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.3-Chorus_F.txt
deleted file mode 100644
index 5d720f1..0000000
--- a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.3-Chorus_F.txt
+++ /dev/null
@@ -1 +0,0 @@
-Effet de chorus. Paramètres: Mix (dry/wet - rapport son direct/son traité), Depth (amplitude de la modulation) et Feed (feedback - facteur de récursion). Le menu "Type" permet de choisir entre l'activation (active) et la désactivation (bypass) de l'effet.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.4-ParaEQ_F.txt b/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.4-ParaEQ_F.txt
deleted file mode 100644
index 6437557..0000000
--- a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.4-ParaEQ_F.txt
+++ /dev/null
@@ -1 +0,0 @@
-Égalisateur paramétrique. Paramètres: Freq (Fréquence de coupure ou fréquence centrale du filtre), Q (facteur Q du filtre) et Gain (gain du signal filtré, en décibels).  Le menu "Type" permet de choisir entre plusieurs types d'égalisateurs: Peak/Notch (passe-bande/réjecteur de bande), Lowshelf (passe-bas/coupe-bas) et Highshelf (passe-haut/coupe-haut). L'option bypass permet de désactiver le filtre.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.5-3BandsEQ_F.txt b/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.5-3BandsEQ_F.txt
deleted file mode 100644
index 909bc8b..0000000
--- a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.5-3BandsEQ_F.txt
+++ /dev/null
@@ -1 +0,0 @@
-Égalisateur en trois bandes de fréquences. Paramètres: Low (niveau de filtrage des fréquences graves), Mid (niveau de filtrage des fréquences moyennes) et High (niveau de filtrage des hautes fréquences). Le menu "Type" permet de choisir entre l'activation (active) et la désactivation (bypass) du filtrage.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.6-Compress_F.txt b/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.6-Compress_F.txt
deleted file mode 100644
index 881b1c4..0000000
--- a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.6-Compress_F.txt
+++ /dev/null
@@ -1 +0,0 @@
-Module de compression. Paramètres: Thresh (seuil de compression, en décibels), Ratio (rapport de compression), Gain (gain sonore du signal compressé, en décibels). Le menu "Type" permet de choisir entre l'activation (active) et la désactivation (bypass) de l'effet.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.7-Gate_F.txt b/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.7-Gate_F.txt
deleted file mode 100644
index ac90a58..0000000
--- a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.7-Gate_F.txt
+++ /dev/null
@@ -1 +0,0 @@
-Noise gate (ou porte de bruit).  Paramètres: Thresh (seuil à partir duquel le son n'est plus atténué, en décibels), Rise (temps d'attaque, en secondes), Fall (temps de relâchement, en secondes). Le menu "Type" permet de choisir entre l'activation (active) et la désactivation (bypass) de l'effet.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.8-Disto_F.txt b/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.8-Disto_F.txt
deleted file mode 100644
index 32479e4..0000000
--- a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.8-Disto_F.txt
+++ /dev/null
@@ -1 +0,0 @@
-Module de distorsion.  Paramètres: Drive (intensité de la distorsion; de 0 - aucune distorsion à 1 - fonction de transfert carrée.), Slope (fréquence de coupure normalisée du filtre passe-bas; de 0 - aucun filtrage à 1 - fréquence de coupure très basse) et Gain (niveau du signal traité, en décibels). Le menu "Type" permet de choisir entre l'activation (active) et la désactivation (bypass) de l'effet.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.9-AmpMod_F.txt b/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.9-AmpMod_F.txt
deleted file mode 100644
index 75f2624..0000000
--- a/doc/chapitres/Chapitre2_F/5-Post-processing_F/5.9-AmpMod_F.txt
+++ /dev/null
@@ -1 +0,0 @@
-Modulation d'amplitude et modulation en anneaux.  Paramètres: Freq (fréquence de l'onde modulante), Amp (amplitude de l'onde modulante), Stereo (différence de phase entre les deux canaux stéréo; de 0 - les deux canaux sont traités également - à 1 - les canaux gauche et droit sont modulés en alternance grâce au déphasage du modulateur du canal de droite). Le menu "Type" permet de choisir entre la modulation d'amplitude (Amplitude), la modulation en anneaux (RingMod) et la désactivation (bypass) de l'effet.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre3_A/3.3-MIDI_OSC_A.txt b/doc/chapitres/Chapitre3_A/3.3-MIDI_OSC_A.txt
deleted file mode 100644
index d832923..0000000
--- a/doc/chapitres/Chapitre3_A/3.3-MIDI_OSC_A.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-\subsection
-MIDI
-It is possible to use a MIDI controller to have a finer control on sliders and knobs related to the different parameters in Cecilia5.  To use a MIDI controller, please connect it to your system before and be sure that it has been detected by your computer.
-
-Check the "Automatic Midi Bindings" in the Preferences (menu "Python") to have your controller be automatically detected by Cecilia5. Some parameters will be assigned by default to a controller. For example, the controller 7 will often be assigned to the gain control (in decibels) of the output sound file (see the corresponding slider in the "Output" section).
-
-However, most parameters will have to be assigned to a controller with the MIDI learn function. The "rangeslider" parameters will have to be assigned to two different controllers, for the minimum and maximum values.
-
-To link a parameter to a MIDI controller with the MIDI learn function, right-click on the parameter you want to control and move the knob or slider of the MIDI controller to enable the connection.  Then, the controller number should be written in the slider of Cecilia5's graphical interface.  To disable the connection, press "shift" and right-click on the parameter.
-
-\subsection
-OSC
-It is also possible to control the parameters with the Open Sound Control (OSC) protocol.  To enable an OSC connection, double-click on the parameter you want to control, enter the destination port address in the window that will appear and click on "Apply":
-**image 15-OpenSoundControl.png**
-
-Please be aware that activating an OSC connection will automatically disable the previons MIDI connection related to the chosen parameter.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre3_F/3.1-Preferences_F.txt b/doc/chapitres/Chapitre3_F/3.1-Preferences_F.txt
deleted file mode 100644
index 8240de4..0000000
--- a/doc/chapitres/Chapitre3_F/3.1-Preferences_F.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-La fenêtre des Préférences est accessible par le menu Python, dans le haut de l'écran:
-**image 1-Menu_preferences.png**
-
-\subsection
-L'onglet "Dossier" permet de choisir un lecteur de fichiers audio (ou un séquenceur audio - voir "Soundfile Player"), un éditeur de sons (voir "Soundfile Editor") et un éditeur de texte (voir "Text Editor") à utiliser conjointement avec Cecilia5.  Pour ce faire, il suffit d'entrer le répertoire contenant le dossier de l'application ou de cliquer sur le bouton "set", qui fera apparaître une fenêtre permettant d'aller chercher l'application voulue.
-
-La case "Preferred paths" permet d'entrer un répertoire dans lequel l'utilisateur peut placer ses propres modules (fichiers .c5); Cecilia5 les ajoutera alors dans le menu Files -> Modules.
-**image 2-Onglet_dossier.png**
-
-\subsection
-L'onglet "Haut-parleur" offre différentes options concernant la gestion de l'audio dans Cecilia5.  On peut y choisir son engin audio (voir "Audio Driver"), l'entrée microphone ou ligne (voir "Input Device"), la sortie vers les haut-parleurs (voir "Output Device").
-Les cases "Sample Precision" et "Buffer Size" permettent de choisir respectivement la précision en bits (32 ou 64 bits) et la taille de la mémoire tampon (64, 128, 256, 512, 1024 ou 2048 échantillons).  On peut ensuite choisir le nombre de canaux audio (jusqu'à 36 canaux - voir "Default # of channels") et la fréquence d'échantillonnage (22 050, 44 100, 48 000, 88 200 ou 96 000 Hertz - voir "Sample Rate").
-**image 3-Onglet_haut-parleur.png**
-
-\subsection
-L'onglet "MIDI" permet de choisir un engin MIDI (par exemple PortMidi - voir "Midi Driver") et un contrôleur MIDI (voir "Input Device" - Attention! le contrôleur MIDI doit être branché et détecté par l'ordinateur pour pouvoir être détecté par Cecilia5). Pour que Cecilia5 détecte automatiquement votre contrôleur MIDI, cochez la case "Automatic Midi Bindings".
-**image 4-Onglet_MIDI.png**
-
-\subsection
-L'onglet "Export" permet de définir le format (voir "File Format" - formats AIFF et WAV) et la profondeur en bits (voir "Bit Depth" - 16, 24 ou 32 bits en integer, ou encore 32 bits en float) par défaut des fichiers sons qui seront exportés vers le disque dur.
-**image 5-Onglet_export.png**
-
-\subsection
-L'onglet "Cecilia5" propose différents réglages: 
-\begin{itemize} 
-\item La durée par défaut (voir "Total time default (sec)" - 10, 30, 60, 120, 300, 600, 1200, 2400 ou 3600 secondes) et le temps de fondu au début et à la fin du fichier son généré à la sortie (voir "Global fadein/fadeout (sec)" - 0, 0.001, 0.002, 0.003, 0.004, 0.005, 0.01, 0.015, 0.02, 0.025, 0.03, 0.05, 0.075, 0.1, 0.2, 0.3, 0.4 ou 0.5 secondes).
-\item Cochez la case "Use tooltips" pour voir apparaître les fenêtres jaunes de renseignements dans l'interface graphique lors de l'utilisation du logiciel.
-\item Cochez la case "Use grapher texture" pour obtenir une graduation précise du graphique.
-\item Cochez la case "Verbose" pour obtenir plus de renseignements lorsque vous travaillez sur Cecilia5 à partir du terminal (utile pour le debuggage).
-\end{itemize}
-**image 6-Onglet_Cecilia5.png**
-
---> À ajouter si c'est implanté: "last saved" loade le dernier module à avoir été sauvegardé par l'utilisateur (?)
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre3_F/3.2-Barre_menus_F.txt b/doc/chapitres/Chapitre3_F/3.2-Barre_menus_F.txt
deleted file mode 100644
index 8043039..0000000
--- a/doc/chapitres/Chapitre3_F/3.2-Barre_menus_F.txt
+++ /dev/null
@@ -1,62 +0,0 @@
-Voici une brève description des menus accessibles dans le haut de l'écran.
-
-\subsection
-En plus de donner accès à la fenêtre des préférences (consultez la section précédente de ce chapitre), le menu "Python" permet de cacher l'interface graphique (voir "Hide Python") ou les autres applications (voir "Hide Others"), ou encore de quitter Cecilia5 (voir "Quit Python"). 
-**image 7-Menu_python.png** --> image à remplacer pcq version 5.0.7 beta?
-
-\subsection
-Le menu "File" (Fichier) donne accès aux fonctions suivantes:
-\begin{itemize}
-\item Open: Permet d'ouvrir un fichier Cecilia5 (dont l'extension est .c5), sauvegardé au préalable par l'utilisateur.
-\item Open Random: Permet d'ouvrir un module Cecilia5 choisi au hasard par le logiciel.
-\item Modules: Ce sous-menu permet de choisir un module; les différents modules Cecilia5 sont classés par catégorie. Pour plus d'information sur les modules, consultez les chapitres 4 à 11, qui en font une description détaillée.
-**image 8b-ModulesCategories.png**
-\item Open Recent: Permet d'ouvrir un fichier Cecilia5 récemment modifié et sauvegardé par l'utilisateur.
-\item Save et Save as: Permettent de sauvegarder le module sur lequel l'utilisateur travaille; la sauvegarde se fera sous la forme d'un fichier Cecilia5.
-\item Open Module as Text: Permet d'avoir accès au code source du module, si on désire y trouver des renseignements ou y apporter des modifications. (Pour plus d'informations à ce sujet, consultez le chapitre 12.) Si aucun éditeur de texte par défaut n'a été choisi dans les préférences, une fenêtre apparaîtra pour vous permettre d'en choisir un.
-**image 9-ChooseTextEditor.png**
-\item Reload module: Réexécute le code source à l'origine de l'ouverture du module; on doit exécuter cette commande si on a apporté des modifications au code source du module. \end{itemize}
-**image 8-Menu_file.png**
-
-\subsection
-Le menu "Edit" (Édition) donne accès aux fonctions Annuler (Undo), Rétablir (Redo), Copier (Copy) et Coller (Paste). Ces fonctions ne concernent toutefois que les modifications apportées au graphique. Pour que Cecilia5 garde le fichier son d'origine que vous avez choisi lors des changements de module, cochez la case "Remember input sound".
-**image 10-Menu_edit.png**
-
-\subsection
-Dans le menu "Action", les commandes "Play/Stop" et "Bounce to Disk" sont l'équivalent des boutons "Play" et "Record" de la barre de transport. 
-**image 11-Menu_Action.png**
-La commande "Batch Processing on Sound Folder" applique l'état courant du module sur tous les sons du dossier choisi (celui contenant le son inséré dans la section "input"). La commande "Batch Processing on Preset Sequence", elle, qpplique tous les préréglages enregistrés du module sur le son choisi. Ces deux commandes permettent donc de sauvegarder plusieurs fichiers son à la fois. Avant d'exécuter une de ces deux commandes, Cecilia5 vous demandera d'entrer un suffixe permettant d'identifier les fichiers son créés.
-**image 12-ChooseFilenameSuffix.png**
-Quant à la commande "Use MIDI", elle indique simplement si Cecilia5 a trouvé une connexion MIDI. 
-
-
-\subsection
-Le menu "Window" (Fenêtre) permet de réduire la fenêtre de l'interface graphique (Minimize), d'effectuer un zoom avant sur cette même fenêtre (Zoom - cliquez une deuxième fois sur cette commande pour ramener la fenêtre à sa taille d'origine) et de ramener toutes les fenêtres relatives à Cecilia5 en avant-plan (Bring All to Front).  Quant à la commande "Eh Oh Mario!", il s'agit d'un effet visuel qui se veut être un petit clin d'oeil à l'utilisateur. La commande "interface - nomdumodule.c5" est une propriété du système qui affiche les fenêtres ouvertes d'une application, permettant ainsi de naviguer de l'une à l'autre.
-**image 13-Menu_Window.png**
-
-\subsection
-Du menu "Help" (Aide), on peut rechercher une commande du menu en inscrivant un mot-clé dans la case "Search". En cliquant sur "Show module info", l'utilisateur a accès à une brève description du module en cours d'utilisation. En cliquant sur "Show API Documentation", l'utilisateur a accès à la documentation relative à l'interface de programmation de l'application Cecilia5.  Cette documentation contient l'ensemble des déclarations de classes et de méthodes ainsi que les menus qui sont propres au module en cours d'utilisation.  Pour plus d'informations à ce sujet, consultez le chapitre 12.
-**image 14-Menu_Help.png**
-
-\subsection
-Liste des raccourcis clavier:
-\begin{itemize}
-\item cmd-h: Cacher la fenêtre Cecilia5
-\item alt-cmd-h: Cacher les fenêtres des autres applications
-\item cmd-o: Ouvrir un fichier Cecilia5
-\item shift-cmd-o: Ouvrir un module choisi au hasard par le logiciel
-\item cmd s: Sauvergarder
-\item shift-cmd-s: Sauvegarder sous...
-\item cmd-e: Ouvrir le fichier texte des sources du module
-\item cmd-r: Ferme et ré-ouvre le module (reload module)
-\item cmd-c: Copier (graphique seulement)
-\item cmd-v: Coller (graphique seulement)
-\item cmd-z: Annuler (graphique seulement)
-\item shift-cmd-z: Rétablir (graphique seulement)
-\item cmd-.: Play/Stop
-\item cmd-b: Enregistrer sur le disque dur (bouton "Record")
-\item cmd-m: Réduire la fenêtre
-\item shift-cmd-e: Eh Oh Mario!
-\item cmd-i: Accès à la documentation du module
-\item cmd-d: Accès à la documentation de l'interface de programmation
-\end{itemize} 
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre3_F/3.3-MIDI_OSC_F.txt b/doc/chapitres/Chapitre3_F/3.3-MIDI_OSC_F.txt
deleted file mode 100644
index fe29598..0000000
--- a/doc/chapitres/Chapitre3_F/3.3-MIDI_OSC_F.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-\subsection
-MIDI
-Il est possible d'utiliser un contrôleur MIDI pour manipuler les différents potentiomètres des modules de Cecilia5 avec plus de précision.  Si vous désirez utiliser un contrôleur MIDI, vous devez d'abord le brancher à votre système et vous assurer qu'il est ensuite détecté par votre ordinateur.
-
-Pour que les appareils MIDI soient détectés automatiquement par Cecilia5, cochez la case "Automatic Midi Bindings" dans les Préférences (menu "Python").  Certains paramètres seront assignés par défaut à des contrôleurs particuliers. Par exemple, le contrôleur 7 est, la plupart du temps, assigné au contrôle du gain en décibels du fichier son de sortie (voir le potentiomètre correspondant dans la section "Output"). 
-
-Par contre, la plupart des paramètres devront être assignés à leurs contrôleurs via la fonction d'apprentissage MIDI. Il est à noter que les paramètres de type "rangeslider" seront, eux, assignés à deux contrôleurs distincts, pour la valeur minimale et la valeur maximale.
-
-Pour relier un paramètre à un contrôleur MIDI via la fonction d'apprentissage, faites un clic droit sur le paramètre que vous désirez contrôler et activez votre contrôleur MIDI. Normalement, le numéro de contrôleur correspondant devrait s'inscrire dans le potentiomètre de la fenêtre Cecilia5. Pour désactiver la connexion MIDI, refaites un clic droit sur le paramètre tout en appuyant sur la touche "Maj" (Shift).
-
-\subsection
-OSC
-Il est également possible de contrôler les paramètres de Cecilia5 via le protocole Open Sound Control. Pour activer une connexion OSC, double-cliquez sur le paramètre que vous désirez contrôler, entrez l'adresse du port de destination dans la fenêtre qui apparaîtra et cliquez sur "Apply":
-**image 15-OpenSoundControl.png**
-
-Il est à noter que le fait d'activer une connexion OSC écrasera toute connexion préalable avec un contrôleur MIDI pour le paramètre choisi.
-
diff --git a/doc/chapitres/Chapitre4_A/4.1-Degrade_A.txt b/doc/chapitres/Chapitre4_A/4.1-Degrade_A.txt
deleted file mode 100644
index 1f2f54e..0000000
--- a/doc/chapitres/Chapitre4_A/4.1-Degrade_A.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-Sampling rate and bit depth degradation module with optional waveform aliasing around a clipping threshold.
-
-**image 1-Parametres_Degrade.png**
-
-Sliders under the graph:
-\begin{itemize}
-\item Bit Depth: Resolution of the amplitude in bits.
-\item Sampling Rate Ratio: Ratio of the new sampling rate compared to the original one.
-\item Wrap Threshold: Clipping limit (for the waveform aliasing) between -1 and 1 (signal then wraps around the thresholds).
-\item Filter Freq: Center or cut-off frequency of the filter.
-\item Filter Q: Q factor of the filter
-\item Dry/Wet: Mix between the original signal and the degraded signal.
-\end{itemize}
-
-Dropdown menus and toggles:
-\begin{itemize}
-\item Filter Type: Type of filter (lowpass, highpass, bandpass or bandstop).
-\item Clip Type: **à vérifier**Choose between degradation only or degradation with waveform aliasing.
-\item Balance: Adjust the signal amplitude by comparing it with a sinusoidal wave with a fixed amplitude (see "compress") or with the amplitude of the source (see "source").
-\item **à vérifier** # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
-\item **à vérifier** Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-\end{itemize}
-
-Graph only parameters:
-\begin{itemize}
-\item Overall Amplitude: The amplitude curve applied on the total duration of the performance.
-\end{itemize}
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre4_A/4.2-Distorsion_A.txt b/doc/chapitres/Chapitre4_A/4.2-Distorsion_A.txt
deleted file mode 100644
index d8cf03e..0000000
--- a/doc/chapitres/Chapitre4_A/4.2-Distorsion_A.txt
+++ /dev/null
@@ -1,26 +0,0 @@
-Distortion module with pre and post filters.
-
-**image 2-Parametres_Distorsion.png**
-
-Sliders under the graph:
-\begin{itemize}
-\item Pre-Filter Freq: Center or cut-off frequency of the filter applied before distortion.
-\item Pre-Filter Q: Q factor of the filter applied before distorsion.
-\item Drive: Amount of distortion applied on the signal.
-\item Post-Filter Freq: Center or cut-off frequency of the filter applied after distortion.
-\item Post-Filter Q: Q factor of the filter applied after distortion.
-\end{itemize}
-
-Dropdown menus and toggles:
-\begin{itemize}
-\item Pre-Filter Type: Type of filter used before distortion (lowpass, highpass, bandpass or bandstop).
-\item Post-Filter Type: Type of filter used after distortion (lowpass, highpass, bandpass or bandstop).
-\item Balance: Adjust the signal amplitude by comparing it with a sinusoidal wave with a fixed amplitude (see "compress") or with the amplitude of the source (see "source").
-\item **à vérifier** # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
-\item **à vérifier** Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-\end{itemize}
-
-Graph only parameters:
-\begin{itemize}
-\item Overall Amplitude: The amplitude curve applied on the total duration of the performance.
-\end{itemize}
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre4_A/4.3-DynamicsProcessor_A.txt b/doc/chapitres/Chapitre4_A/4.3-DynamicsProcessor_A.txt
deleted file mode 100644
index 7845961..0000000
--- a/doc/chapitres/Chapitre4_A/4.3-DynamicsProcessor_A.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-Compression and noise gate module.
-
-**image 3-Parametres_Dynamics.png**
-
-Sliders under the graph:
-\begin{itemize}
-\item Input Gain: Adjust the amount of signal sent to the processing chain.
-\item Compression Thresh: Value in decibels at which the compressor becomes active.
-\item Compression Rise Time: Time taken by the compressor to reach compression ratio.
-\item Compression Fall Time: Time taken by the compressor to reach uncompressed state.
-\item Compression Knee: Steepness of the compression curve.
-\item Gate Thresh: Value in decibels at which the noise gate becomes active.
-\item Gate Slope: Shape of the gate (rise time and fall time).
-\item Output Gain: Makeup gain applied after the processing chain.
-\end{itemize}
-
-Dropdown menus and toggles:
-\begin{itemize}
-\item Compression Ratio: Ratio between the compressed signal and the uncompressed signal.
-\item # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
-\item Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-\end{itemize}
-
-Graph only parameters:
-\begin{itemize}
-\item Transfer Function: Table used for waveshaping
-\item Overall Amplitude: The amplitude curve applied on the total duration of the performance.
-\end{itemize}
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre4_A/4.4-WaveShaper_A.txt b/doc/chapitres/Chapitre4_A/4.4-WaveShaper_A.txt
deleted file mode 100644
index 5a0529b..0000000
--- a/doc/chapitres/Chapitre4_A/4.4-WaveShaper_A.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-Waveshaping module working with a filter.
-
-**image 4-Parametres_WaveShaper.png**
-
-Sliders under the graph:
-\begin{itemize}
-\item Filter Freq: Center frequency of the filter
-\item Filter Q: Q factor of the filter
-\end{itemize}
-
-Dropdown menus and toggles:
-\begin{itemize}
-\item Filter Type: Type of filter (lowpass, highpass, bandpass or bandstop).
-\item # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
-\item Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-\end{itemize}
-
-Graph only parameters:
-\begin{itemize}
-\item Transfer Function: Table used for waveshaping
-\item Overall Amplitude: The amplitude curve applied on the total duration of the performance.
-\end{itemize}
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre4_F/4.1-Degrade_F.txt b/doc/chapitres/Chapitre4_F/4.1-Degrade_F.txt
deleted file mode 100644
index cb88431..0000000
--- a/doc/chapitres/Chapitre4_F/4.1-Degrade_F.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-Le module Degrade cause une dégradation du son en réduisant la résolution en bits et la fréquence d'échantillonnage du fichier son; l'utilisateur peut choisir d'y ajouter un repliement de la forme d'onde autour d'une valeur d'écrêtage.
-
-**image 1-Parametres_Degrade.png**
-
-Potentiomètres:
-\begin{itemize}
-\item Bit Depth: Résolution de l'amplitude en bits
-\item Sampling Rate Ratio: Rapport de la fréquence d'échantillonnage modifiée sur la fréquence d'échantillonnage originale.
-\item Wrap Threshold: Seuil d'écrêtage (entre -1 et 1); le niveau du signal s'ajuste à ce seuil et la forme d'onde s'en rapproche.
-\item Filter Freq: Fréquence centrale ou fréquence de coupure du filtre.
-\item Filter Q: Facteur Q du filtre
-\item Dry/Wet: Rapport son direct et son traité par le module. \end{itemize}
-
-Paramètres fixes:
-\begin{itemize}
-\item Filter Type: Type de filtre - passe-bas (lowpass), passe-haut (highpass), passe-bande (bandpass) et réjecteur de bande (bandstop).
-\item Clip Type: Choix entre la dégradation du son seulement ou avec l'ajustement au niveau de distorsion.
-\item Balance: Ajuste l'amplitude du son traité en la comparant avec celle d'une onde sinusoïdale à amplitude fixe (compress) ou celle de la source (source).
-\item **On ajoute # of Polyphony et Polyphony Spread? - faire un copier coller d'un autre module du chapitre 4.** spread?**\end{itemize}
-
-Paramètres du graphique:
-\begin{itemize}
-\item Overall Amplitude: Définit l'enveloppe d'amplitude appliqué au son sur sa durée totale en secondes.\end{itemize}
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre4_F/4.2-Distorsion_F.txt b/doc/chapitres/Chapitre4_F/4.2-Distorsion_F.txt
deleted file mode 100644
index 5ffc3d6..0000000
--- a/doc/chapitres/Chapitre4_F/4.2-Distorsion_F.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-Ce module crée une distorsion du son; le son est filtré avant et après le traitement.
-
-**image 2-Parametres_Distorsion.png**
-
-Potentiomètres:
-\begin{itemize}
-\item Pre-Filter Freq: Fréquence du filtre appliqué avant la distorsion.
-\item Pre-Filter Q: Facteur Q du filtre appliqué avant la distorsion.
-\item Drive: Niveau de distorsion appliqué au signal.
-\item Post-Filter Freq: Fréquence du filtre appliqué après la distorsion.
-\item Post-Filter Q: Facteur Q du filtre appliqué après la distorsion.\end{itemize}
-
-Paramètres fixes:
-\begin{itemize}
-\item Pre-Filter Type: Type du filtre appliqué avant la distorsion - passe-bas (lowpass), passe-haut (highpass), passe-bande (bandpass) ou réjecteur de bande (bandstop).
-\item Balance: Ajuste l'amplitude du son traité en la comparant avec celle d'une onde sinusoïdale à amplitude fixe (compress) ou celle de la source (source).
-\item **On ajoute # of Polyphony et Polyphony spread?**
-\end{itemize}
-
-Paramètres du graphique:
-\begin{itemize}
-\item Overall Amplitude: Définit l'enveloppe d'amplitude appliqué au son sur sa durée totale en secondes.
-\end{itemize}
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre4_F/4.3-DynamicsProcessor_F.txt b/doc/chapitres/Chapitre4_F/4.3-DynamicsProcessor_F.txt
deleted file mode 100644
index 01a005e..0000000
--- a/doc/chapitres/Chapitre4_F/4.3-DynamicsProcessor_F.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-DynamicsProcessor est un module de compression ainsi qu'une porte de bruit (noise gate).
-
-**image 3-Parametres_Dynamics.png***
-
-Potentiomètres:
-\begin{itemize}
-\item Input Gain: Ajuste le niveau du signal envoyé au module de traitement.
-\item Compression Thresh: Seuil de compression, en décibels, à partir duquel la compression s'effectue.
-\item Compression Rise Time: Temps nécessaire à l'atteinte du rapport de compression par le compresseur (lorsque le seuil de compression est atteint).
-\item Compression Fall Time: Temps nécessaire au compresseur pour ramener le signal à la normale (lorsque le seuil de compression n'est plus dépassé).
-\item Compression Knee: Raideur de la pente lors de l'activation ou de la désactivation du compresseur.
-\item Gate Thresh: Seuil en décibels à partir duquel la porte de bruit est activée.
-\item Gate Slope: Pente de la courbe décrivant l'entrée en fonction et la désactivation de la porte de bruit (équivalent du Rise and Fall time).
-\item Output Gain: Niveau du signal de sortie, à la fin de la chaîne de traitement.
-\end{itemize}
-
-Paramètres fixes:
-\begin{itemize}
-\item Compression Ratio: Rapport de niveau entre le signal compressé et le signal d'origine.
-\item # of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
-\item Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-\end{itemize}
-
-Paramètres du graphique:
-\begin{itemize}
-\item Overall Amplitude: Définit l'enveloppe d'amplitude appliqué au son sur sa durée totale en secondes.
-\end{itemize}
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre4_F/4.4-WaveShaper_F.txt b/doc/chapitres/Chapitre4_F/4.4-WaveShaper_F.txt
deleted file mode 100644
index 4e21cf2..0000000
--- a/doc/chapitres/Chapitre4_F/4.4-WaveShaper_F.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-Le module WaveShaper est un modulateur de signal fonctionnant grâce à un filtre.
-
-**image 4-Parametres_WaveShaper.png**
-
-Potentiomètres:
-\begin{itemize}
-\item Filter Freq: Fréquence centrale ou fréquence de coupure du filtre
-\item Filter Q: Facteur Q du filtre
-\end{itemize}
-
-Paramètres fixes:
-\begin{itemize}
-\item Filter Type: Type du filtre - passe-bas (lowpass), passe-haut (highpass), passe-bande (bandpass) ou réjecteur de bande (bandstop).
-\item # of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
-\item Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-\end{itemize}
-
-Paramètres du graphique:
-\begin{itemize}
-\item Transfer Function: Fonction de transfert définissant la modulation sonore (lecture de table).
-\item Overall Amplitude: Définit l'enveloppe d'amplitude appliqué au son sur sa durée totale en secondes.
-\end{itemize}
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre5_A/5.1-AMFilter_A.txt b/doc/chapitres/Chapitre5_A/5.1-AMFilter_A.txt
deleted file mode 100644
index 5227130..0000000
--- a/doc/chapitres/Chapitre5_A/5.1-AMFilter_A.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-Filtering module that works with an amplitude modulation (AM filter) or a frequency modulation (FM filter).
-
-**image 1-Parametres_AMFilter.png**
-
-Sliders under the graph:
-\begin{itemize}
-\item Filter Freq: Center or cut-off frequency of the filter.
-\item Resonance: Q factor (resonance) of the filter.
-\item Mod Depth: Amplitude of the modulating wave (LFO - Low frequency oscillator).
-\item Mod Freq: Frequency of the modulating wave (LFO).
-\item Dry/Wet: Mix between the original signal and the filtered signal.
-\end{itemize}
-
-Dropdown menus and toggles:
-\begin{itemize}
-\item Filter Type: Type of the filter (lowpass, highpass, bandpass or bandstop).
-\item AM Mod Type: Waveform of the modulating LFO for amplitude modulation (saw up, saw down, square, triangle, pulse, bi-polar pulse, sample & hold or modulated sine).
-\item FM Mod Type: Waveform of the modulating LFO for frequency modulation (saw up, saw down, square, triangle, pulse, bi-polar pulse, sample & hold or modulated sine).
-\item Balance: Adjust the signal amplitude by comparing it with a sinusoidal wave with a fixed amplitude (see "compress") or with the amplitude of the source (see "source").
-\item # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
-\item Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-\end{itemize}
-
-Graph only parameters:
-\begin{itemize}
-\item Overall Amplitude: The amplitude curve applied on the total duration of the performance.
-\end{itemize}
diff --git a/doc/chapitres/Chapitre5_A/5.2-BrickWall_A.txt b/doc/chapitres/Chapitre5_A/5.2-BrickWall_A.txt
deleted file mode 100644
index 5157a41..0000000
--- a/doc/chapitres/Chapitre5_A/5.2-BrickWall_A.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-Convolution brickwall lowpass or highpass filter.
-
-**image 2-Parametres_BrickWall.png**
-
-Sliders under the graph:
-\begin{itemize}
-\item Cut-off Frequency: cut-off frequency of the lowpass/highpass filter.
-\item Bandwidth: Bandwidth of the lowpass/highpass filter.
-\item Filter order: Filter order of the lowpass/highpass filter.
-\end{itemize}
-
-Dropdown menus and toggles:
-\begin{itemize}
-\item Label Type: Type of filter (lowpass or highpass **à vérifier --> autres types).
-\item Balance: Adjust the signal amplitude by comparing it with a sinusoidal wave with a fixed amplitude (see "compress") or with the amplitude of the source (see "source").
-\item # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
-\item Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-\end{itemize}
-
-Graph only parameters:
-\begin{itemize}
-\item Overall Amplitude: The amplitude curve applied on the total duration of the performance.
-\end{itemize}
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre5_A/5.4-ParamEQ_A.txt b/doc/chapitres/Chapitre5_A/5.4-ParamEQ_A.txt
deleted file mode 100644
index c3e1d60..0000000
--- a/doc/chapitres/Chapitre5_A/5.4-ParamEQ_A.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-Parametric equalization module.
-
-**image 4-Parametres_ParamEQ.png**
-
-Sliders under the graph:
-\begin{itemize}
-\item Freq 1 Boost/Cut: Gain of the first equalizer.
-\item Freq 1: Center or cut-off frequency of the first equalizer.
-\item Freq 1 Q: Q factor of the first equalizer.
-\item Freq 2 Boost/Cut: Gain of the second equalizer.
-\item Freq 2: Center or cut-off frequency of the second equalizer.
-\item Freq 2 Q: Q factor of the second equalizer.
-\item Freq 3 Boost/Cut: Gain of the third equalizer.
-\item Freq 3: Center or cut-off frequency of the third equalizer.
-\item Freq 3 Q: Q factor of the third equalizer.
-\item Freq 4 Boost/Cut: Gain of the fourth equalizer.
-\item Freq 4: Center or cut-off frequency of the fourth equalizer.
-\item Freq 4 Q: Q factor of the fourth equalizer.
-\end{itemize}
-
-Dropdown menus and toggles:
-\begin{itemize}
-\item EQ 1 Type: Type of the first equalizer (Peak/Notch, Lowshelf, Highshelf).
-\item EQ 2 Type: Type of the second equalizer (Peak/Notch, Lowshelf, Highshelf).
-\item EQ 3 Type: Type of the third equalizer (Peak/Notch, Lowshelf, Highshelf).
-\item EQ 4 Type: Type of the fourth equalizer (Peak/Notch, Lowshelf, Highshelf).
-\item Balance: Adjust the signal amplitude by comparing it with a sinusoidal wave with a fixed amplitude (see "compress") or with the amplitude of the source (see "source").
-\item # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
-\item Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-\end{itemize}
-
-Graph only parameters:
-\begin{itemize}
-\item Overall Amplitude: The amplitude curve applied on the total duration of the performance.
-\end{itemize}
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre5_A/5.5-Phaser_A.txt b/doc/chapitres/Chapitre5_A/5.5-Phaser_A.txt
deleted file mode 100644
index 7359d02..0000000
--- a/doc/chapitres/Chapitre5_A/5.5-Phaser_A.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-Phaser effect module.
-
-**image 5-Parametres_Phaser.png**
-
-Sliders under the graph:
-\begin{itemize}
-\item Center Freq: Center frequency of the phaser (all-pass filter).
-\item Q Factor: Q factor (resonance) of the phaser (all-pass filter).
-\item Notch Spread: Distance between the phaser notches.
-\item Feedback: Amount of phased signal fed back into the phaser.
-\item Dry/Wet: Mix between the original signal and the phased signal.
-\end{itemize}
-
-Dropdown menus and toggles:
-\begin{itemize}
-\item Number of Stages: Number of stacked filters - changes notches bandwidth.
-\item # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
-\item Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-\end{itemize}
-
-Graph only parameters:
-\begin{itemize}
-\item Overall Amplitude: The amplitude curve applied on the total duration of the performance.
-\end{itemize}
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre5_A/5.6-Vocoder_A.txt b/doc/chapitres/Chapitre5_A/5.6-Vocoder_A.txt
deleted file mode 100644
index bce2d3b..0000000
--- a/doc/chapitres/Chapitre5_A/5.6-Vocoder_A.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-Vocoder module in which the user will have to choose two inputs: a source signal (see "Spectral Envelope" - a signal with a preferably rich spectral envelope) and an exciter (see "Exciter" - preferably a dynamic signal).
-
-**image 6-Parametres_Vocoder.png**
-
-Sliders under the graph:
-\begin{itemize}
-\item Base Frequency: Frequency of the first filter of the analyzer.
-\item Frequency Spread: Frequency spread factor - exponential operator that determinates the frequency of all other filters of the analyzer.
-\item Q Factor: Q factor of the filters of the analyzer.
-\item Time Response: **à vérifier**
-\item Gain: Gain of the vocoder filters.
-\item Num of Bands: **à vérifier** Number of filters for analyzing the signal.
-\end{itemize}
-
-Dropdown menus and toggles:
-\begin{itemize}
-\item Balance: Adjust the signal amplitude by comparing it with a sinusoidal wave with a fixed amplitude (see "compress") or with the amplitude of the source (see "source").
-\item # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
-\item Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-\end{itemize}
-
-Graph only parameters:
-\begin{itemize}
-\item Overall Amplitude: The amplitude curve applied on the total duration of the performance.
-\end{itemize}
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre5_F/5.1-AMFilter_F.txt b/doc/chapitres/Chapitre5_F/5.1-AMFilter_F.txt
deleted file mode 100644
index 8b163c1..0000000
--- a/doc/chapitres/Chapitre5_F/5.1-AMFilter_F.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-AMFMFilter est un module de filtrage par modulation d'amplitude (AM Filter) ou de fréquence (FM Filter).
-
-**image 1-Parametres_AMFilter.png**
-
-Potentiomètres:
-\begin{itemize}
-\item Filter Freq: Fréquence centrale ou fréquence de coupure du filtre.
-\item Resonance: Facteur Q (résonance) du filtre.
-\item Mod Depth: Amplitude de l'onde modulante (LFO - Oscillateur à basse fréquence).
-Potentiomètres:
-\begin{itemize}
-\item Dry/Wet: Rapport de niveau entre le signal d'origine et le signal filtré.
-\end{itemize}
-
-Paramètres fixes:
-\begin{itemize}
-\item Filter Type: Type du filtre - passe-bas (lowpass), passe-haut (highpass), passe-bande (bandpass) ou réjecteur de bande (bandstop).
-\item AM Mod Type: Forme d'onde de l'oscillateur à basse fréquence modulant l'amplitude du signal (LFO) - saw up (dents de scie vers le haut), saw down (dents de scie vers le bas), square (onde carrée), triangle (onde triangulaire), pulse (onde pulsatoire unipolaire), bi-polar pulse (onde pulsatoire bipolaire), sample & hold ou modulated sine (onde sinusoïdale modulée).
-\item FM Mod Type: Forme d'onde de l'oscillateur à basse fréquence modulant la fréquence du signal (LFO) - saw up (dents de scie vers le haut), saw down (dents de scie vers le bas), square (onde carrée), triangle (onde triangulaire), pulse (onde pulsatoire unipolaire), bi-polar pulse (onde pulsatoire bipolaire), sample & hold ou modulated sine (onde sinusoïdale modulée).
-\item Balance: Ajuste l'amplitude du son traité en la comparant avec celle d'une onde sinusoïdale à amplitude fixe (compress) ou celle de la source (source).
-\item # of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
-\item Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-\end{itemize}
-
-Paramètres du graphique:
-\begin{itemize}
-\item Overall Amplitude: Définit l'enveloppe d'amplitude appliqué au son sur sa durée totale en secondes.
-\end{itemize}
diff --git a/doc/chapitres/Chapitre5_F/5.2-BrickWall_F.txt b/doc/chapitres/Chapitre5_F/5.2-BrickWall_F.txt
deleted file mode 100644
index 94efcd4..0000000
--- a/doc/chapitres/Chapitre5_F/5.2-BrickWall_F.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-BrickWall est un module de filtrage fonctionnant grâce à un filtre passe-bas ou passe-haut de type "brickwall" (à la pente d'atténuation très abrupte).
-
-**image 2-Parametres_BrickWall.png**
-
-Potentiomètres: **à vérifier**
-\begin{itemize}
-\item Cut-off Frequency: Fréquence de coupure du filtre passe-haut ou passe bas.
-\item Bandwidth: Largeur de bande de bande du filtre
-\item Filter Order: Ordre du filtre.
-\end{itemize}
-
-Paramètres fixes:
-\begin{itemize}
-\item Label Type: Type of filter (lowpass or highpass **à vérifier --> autres types de filtres).
-\item Balance: Ajuste l'amplitude du son traité en la comparant avec celle d'une onde sinusoïdale à amplitude fixe (compress) ou celle de la source (source).
-\item # of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
-\item Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-\end{itemize}
-
-Paramètres du graphique:
-\begin{itemize}
-\item Overall Amplitude: Définit l'enveloppe d'amplitude appliqué au son sur sa durée totale en secondes.
-\end{itemize}
diff --git a/doc/chapitres/Chapitre5_F/5.3-MaskFilter_F.txt b/doc/chapitres/Chapitre5_F/5.3-MaskFilter_F.txt
deleted file mode 100644
index 144c9d6..0000000
--- a/doc/chapitres/Chapitre5_F/5.3-MaskFilter_F.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-MaskFilter est un module de filtrage fonctionnant grâce à des filtres passe-bande plus ou moins étendus (faits de filtres passe-bas et passe-haut).
-
-**image 3-Parametres_MaskFilter.png**
-
-Potentiomètres:
-\begin{itemize}
-\item Filter 1 limits: Valeur minimale et valeur maximale définissant l'étendue du premier filtre (minimum = fréquence de coupure du filtre passe-haut; maximum = fréquence de coupure du filtre passe-bas).
-\item Filter 2 limits: Valeur minimale et valeur maximale définissant l'étendue du second filtre (minimum = fréquence de coupure du filtre passe-haut; maximum = fréquence de coupure du filtre passe-bas).
-\item Mix: **à vérifier**
-\end{itemize}
-
-Paramètres fixes:
-\begin{itemize}
-\item Number of Stages: Nombre de filtres biquad enchaînés.
-\item Balance: Ajuste l'amplitude du son traité en la comparant avec celle d'une onde sinusoïdale à amplitude fixe (compress) ou celle de la source (source).
-\item # of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
-\item Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-\end{itemize}
-
-Paramètres du graphique:
-\begin{itemize}
-\item Overall Amplitude: Définit l'enveloppe d'amplitude appliqué au son sur sa durée totale en secondes.
-\end{itemize}
diff --git a/doc/chapitres/Chapitre5_F/5.4-ParamEQ_F.txt b/doc/chapitres/Chapitre5_F/5.4-ParamEQ_F.txt
deleted file mode 100644
index b182249..0000000
--- a/doc/chapitres/Chapitre5_F/5.4-ParamEQ_F.txt
+++ /dev/null
@@ -1,35 +0,0 @@
-ParamEQ est un module d'égalisation paramétrique.
-
-**image 4-Parametres_ParamEQ.png**
-
-Potentiomètres:
-\begin{itemize}
-\item Freq 1 Boost/Cut: Gain du premier égalisateur.
-\item Freq 1: Fréquence centrale ou fréquence de coupure du premier égalisateur.
-\item Freq 1 Q: Facteur Q du premier égalisateur.
-\item Freq 2 Boost/Cut: Gain du second égalisateur.
-\item Freq 2: Fréquence centrale ou fréquence de coupure du second égalisateur.
-\item Freq 2 Q: Facteur Q du second égalisateur.
-\item Freq 3 Boost/Cut: Gain du troisième égalisateur.
-\item Freq 3: Fréquence centrale ou fréquence de coupure du troisième égalisateur.
-\item Freq 3 Q: Facteur Q du troisième égalisateur.
-\item Freq 4 Boost/Cut: Gain du quatrième égalisateur.
-\item Freq 4: Fréquence centrale ou fréquence de coupure du quatrième égalisateur.
-\item Freq 4 Q: Facteur Q du quatrième égalisateur.
-\end{itemize}
-
-Paramètres fixes:
-\begin{itemize}
-\item EQ 1 Type: Type du premier égalisateur - Peak/Notch (passe-bande/réjecteur de bande), Lowshelf - (passe/coupe-bas) ou Highshelf (passe/coupe-haut).
-\item EQ 2 Type: Type du second égalisateur - Peak/Notch (passe-bande/réjecteur de bande), Lowshelf - (passe/coupe-bas) ou Highshelf (passe/coupe-haut).
-\item EQ 3 Type: Type du troisième égalisateur - Peak/Notch (passe-bande/réjecteur de bande), Lowshelf - (passe/coupe-bas) ou Highshelf (passe/coupe-haut).
-\item EQ 4 Type: Type du quatrième égalisateur - Peak/Notch (passe-bande/réjecteur de bande), Lowshelf - (passe/coupe-bas) ou Highshelf (passe/coupe-haut).
-\item Balance: Ajuste l'amplitude du son traité en la comparant avec celle d'une onde sinusoïdale à amplitude fixe (compress) ou celle de la source (source).
-\item # of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
-\item Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-\end{itemize}
-
-Paramètres du graphique:
-\begin{itemize}
-\item Overall Amplitude: Définit l'enveloppe d'amplitude appliqué au son sur sa durée totale en secondes.
-\end{itemize}
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre5_F/5.5-Phaser_F.txt b/doc/chapitres/Chapitre5_F/5.5-Phaser_F.txt
deleted file mode 100644
index 78f37e2..0000000
--- a/doc/chapitres/Chapitre5_F/5.5-Phaser_F.txt
+++ /dev/null
@@ -1,24 +0,0 @@
-Module causant un effet de phasing.
-
-**image 5-Parametres_Phaser.png**
-
-Potentiomètres:
-\begin{itemize}
-\item Center Freq: Fréquence centrale du phaser (filtre passe-tout).
-\item Q Factor: Facteur Q (résonance) du phaser (filtre passe-tout).
-\item Notch Spread: Distance entre les différentes instances du filtre passe-tout.
-\item Feedback: Niveau de réinjection du signal dans le phaser.
-\item Dry/Wet: Rapport de niveau entre le son original et le son traité par le module.
-\end{itemize}
-
-Paramètres fixes:
-\begin{itemize}
-\item Number of Stages: Nombre de filtres enchaînés (change la largeur de bande du filtre résultant).
-\item # of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
-\item Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-\end{itemize}
-
-Paramètres du graphique:
-\begin{itemize}
-\item Overall Amplitude: Définit l'enveloppe d'amplitude appliqué au son sur sa durée totale en secondes.
-\end{itemize}
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre5_F/5.6-Vocoder_F.txt b/doc/chapitres/Chapitre5_F/5.6-Vocoder_F.txt
deleted file mode 100644
index 258883b..0000000
--- a/doc/chapitres/Chapitre5_F/5.6-Vocoder_F.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-Module de vocodeur pour lequel l'utilisateur devra choisir deux fichiers sons (dans la section input): une source sonore (voir "Spectral Envelope" - préférablement un signal dont l'enveloppe spectrale est riche) et un excitateur (voir "Exciter" - préférablement un signal dynamique).
-
-**image 6-Parametres_Vocoder.png**
-
-Potentiomètres:
-\begin{itemize}
-\item Base Frequency: Fréquence du premier filtre de l'analyseur.
-\item Frequency Spread: Puissance à laquelle la fréquence de la première résonance est élevée, déterminant ainsi la fréquence des autres filtres de l'analyseur.
-\item Q Factor: Facteur Q des filtres de l'analyseur.
-\item Time Response: **à vérifier**
-\item Gain: Gain des filtres du vocodeur.
-\item Num of Bands: **à vérifier** Nombre de filtres analysant le signal.
-\end{itemize}
-
-Paramètres fixes:
-\begin{itemize}
-\item Balance: Ajuste l'amplitude du son traité en la comparant avec celle d'une onde sinusoïdale à amplitude fixe (compress) ou celle de la source (source).
-\item # of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
-\item Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-\end{itemize}
-
-Paramètres du graphique:
-\begin{itemize}
-\item Overall Amplitude: Définit l'enveloppe d'amplitude appliqué au son sur sa durée totale en secondes.
-\end{itemize}
diff --git a/doc/chapitres/Chapitre6_A/6.1-MultiBandBeatMaker_A.txt b/doc/chapitres/Chapitre6_A/6.1-MultiBandBeatMaker_A.txt
deleted file mode 100644
index ba45985..0000000
--- a/doc/chapitres/Chapitre6_A/6.1-MultiBandBeatMaker_A.txt
+++ /dev/null
@@ -1,39 +0,0 @@
-Multi-band algorithmic beatmaker module.
-
-**image 1-Parametres_MBBeatMaker.png**
-
-Sliders under the graph:
-\begin{itemize}
-\item Frequency splitter: Split points of the frequency range for multi-band processing.
-\item # of Taps: Number of taps in a measure.
-\item Tempo: Speed of taps (in beats per minute).
-\item Tap Length: Length of taps (in seconds).
-\item Beat 1 Index: Soundfile index of the first beat.
-\item Beat 2 Index: Soundfile index of the second beat.
-\item Beat 3 Index: Soundfile index of the third beat.
-\item Beat 4 Index: Soundfile index of the fourth beat.
-\item Beat 1 Distribution: Repartition of taps for the first beat (100 % weak --> 100 % down).
-\item Beat 2 Distribution: Repartition of taps for the second beat (100 % weak --> 100 % down).
-\item Beat 3 Distribution: Repartition of taps for the third beat (100 % weak --> 100 % down).
-\item Beat 4 Distribution: Repartition of taps for the fourth beat (100 % weak --> 100 % down).
-\item Beat 1 Gain: Gain of the first beat.
-\item Beat 2 Gain: Gain of the second beat.
-\item Beat 3 Gain: Gain of the third beat.
-\item Beat 4 Gain: Gain of the fourth beat.
-\item Global Seed: Seed value for the algorithmic beats; using the same seed with the same distributions will yield the exact same beats.
-\end{itemize}
-
-Dropdown menus and toggles:
-\begin{itemize}
-\item # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
-\item Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-\end{itemize}
-
-Graph only parameters:
-\begin{itemize}
-\item Beat 1 ADSR: Envelope of taps for the first beat in breakpoint fashion.
-\item Beat 2 ADSR: Envelope of taps for the second beat in breakpoint fashion.
-\item Beat 3 ADSR: Envelope of taps for the third beat in breakpoint fashion.
-\item Beat 4 ADSR: Envelope of taps for the fourth beat in breakpoint fashion.
-\item Overall Amplitude: The amplitude curve applied on the total duration of the performance.
-\end{itemize}
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre6_A/6.2-MultiBandDelay_A.txt b/doc/chapitres/Chapitre6_A/6.2-MultiBandDelay_A.txt
deleted file mode 100644
index fb10c62..0000000
--- a/doc/chapitres/Chapitre6_A/6.2-MultiBandDelay_A.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-Multi-band delay module.
-
-**image 2-Parametres_MBDelay.png**
-
-Sliders under the graph:
-\begin{itemize}
-\item Frequency Splitter: Split points in the frequency range for multi-band processing.
-\item Delay Band 1: Delay time for the first band (in seconds).
-\item Feedback Band 1: Amount of delayed signal fed back into the first band delay.
-\item Gain Band 1: Gain of the delayed first band (in decibels).
-\item Delay Band 2: Delay time for the second band (in seconds).
-\item Feedback Band 2: Amount of delayed signal fed back into the second band delay.
-\item Gain Band 2: Gain of the delayed second band (in decibels).
-\item Delay Band 3: Delay time for the third band (in seconds).
-\item Feedback Band 3: Amount of delayed signal fed back into the third band delay.
-\item Gain Band 3: Gain of the delayed third band (in decibels).
-\item Delay Band 4: Delay time for the fourth band (in seconds).
-\item Feedback Band 4: Amount of delayed signal fed back into the fourth band delay.
-\item Gain Band 4: Gain of the delayed fourth band (in decibels).
-\end{itemize}
-
-Dropdown menus and toggles:
-\begin{itemize}
-\item # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
-\item Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-\end{itemize}
-
-Graph only parameters:
-\begin{itemize}
-\item Overall Amplitude: The amplitude curve applied on the total duration of the performance.
-\end{itemize}
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre6_A/6.3-MultiBandDisto_A.txt b/doc/chapitres/Chapitre6_A/6.3-MultiBandDisto_A.txt
deleted file mode 100644
index 5b1873b..0000000
--- a/doc/chapitres/Chapitre6_A/6.3-MultiBandDisto_A.txt
+++ /dev/null
@@ -1,34 +0,0 @@
-Multi-band distortion module.
-
-**image 3-Parametres_MBDisto.png**
-
-Sliders under the graph:
-\begin{itemize}
-\item Frequency Splitter: Split points in the frequency range for multi-band processing.
-\item Band 1 Drive: Amount of distortion applied on the first band.
-\item Band 1 Slope: Harshness of distorted first band.
-\item Band 1 Gain: Gain of the distorted first band.
-\item Frequency Splitter: Split points in the frequency range for multi-band processing.
-\item Band 2 Drive: Amount of distortion applied on the second band.
-\item Band 2 Slope: Harshness of distorted second band.
-\item Band 2 Gain: Gain of the distorted second band.
-\item Frequency Splitter: Split points in the frequency range for multi-band processing.
-\item Band 3 Drive: Amount of distortion applied on the third band.
-\item Band 3 Slope: Harshness of distorted third band.
-\item Band 3 Gain: Gain of the distorted third band.
-\item Frequency Splitter: Split points in the frequency range for multi-band processing.
-\item Band 4 Drive: Amount of distortion applied on the fourth band.
-\item Band 4 Slope: Harshness of distorted fourth band.
-\item Band 4 Gain: Gain of the distorted fourth band.
-\end{itemize}
-
-Dropdown menus and toggles:
-\begin{itemize}
-\item # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
-\item Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-\end{itemize}
-
-Graph only parameters:
-\begin{itemize}
-\item Overall Amplitude: The amplitude curve applied on the total duration of the performance.
-\end{itemize}
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre6_A/6.4-MultiBandFreqShift_A.txt b/doc/chapitres/Chapitre6_A/6.4-MultiBandFreqShift_A.txt
deleted file mode 100644
index 8f39f62..0000000
--- a/doc/chapitres/Chapitre6_A/6.4-MultiBandFreqShift_A.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-Multi-band frequency shifter module.
-
-**image 4-Parametres_MBFreqShift.png**
-
-Sliders under the graph:
-\begin{itemize}
-\item Frequency splitter: Split points in frequency range for multi-band processing.
-\item Freq Shift Band 1: Frequency shift of the first band (in Hertz).
-\item Gain Band 1: Gain of the shifted first band.
-\item Freq Shift Band 2: Frequency shift of the second band (in Hertz).
-\item Gain Band 2: Gain of the shifted second band.
-\item Freq Shift Band 3: Frequency shift of the third band (in Hertz).
-\item Gain Band 3: Gain of the shifted third band.
-\item Freq Shift Band 4: Frequency shift of the fourth band (in Hertz).
-\item Gain Band 4: Gain of the shifted fourth band.
-\item Dry/Wet: Mix between the original signal and the shifted signals.
-\end{itemize}
-
-Dropdown menus and toggles:
-\begin{itemize}
-\item # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
-\item Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-\end{itemize}
-
-Graph only parameters:
-\begin{itemize}
-\item Overall Amplitude: The amplitude curve applied on the total duration of the performance.
-\end{itemize}
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre6_A/6.5-MultiBandGate_A.txt b/doc/chapitres/Chapitre6_A/6.5-MultiBandGate_A.txt
deleted file mode 100644
index 84afb9d..0000000
--- a/doc/chapitres/Chapitre6_A/6.5-MultiBandGate_A.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-Multi-band noise gate module.
-
-**image 5-Parametres_MBBandGate.png**
-
-Sliders under the graph:
-\begin{itemize}
-\item Frequency Splitter: Split points in the frequency range for multi-band processing.
-\item Threshold Band 1: Value in decibels at which the gate becomes active on the first band.
-\item Gain Band 1: Gain of the gated first band (in decibels). 
-\item Threshold Band 2: Value in decibels at which the gate becomes active on the second band.
-\item Gain Band 2: Gain of the gated second band (in decibels).
-\item Threshold Band 3: Value in decibels at which the gate becomes active on the third band.
-\item Gain Band 3: Gain of the gated third band (in decibels).
-\item Threshold Band 4: Value in decibels at which the gate becomes active on the fourth band.
-\item Gain Band 4: Gain of the gated fourth band (in decibels).
-\item Rise Time: Time taken by the gate to close (in seconds).
-\item Fall Time: Time taken by the gate to re-open (in seconds).
-\end{itemize}
-
-Dropdown menus and toggles:
-\item # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
-\item Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-\end{itemize}
-
-Graph only parameters:
-\begin{itemize}
-\item Overall Amplitude: The amplitude curve applied on the total duration of the performance.
-\end{itemize}
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre6_A/6.6-MultiBandHarmonizer_A.txt b/doc/chapitres/Chapitre6_A/6.6-MultiBandHarmonizer_A.txt
deleted file mode 100644
index 9126b90..0000000
--- a/doc/chapitres/Chapitre6_A/6.6-MultiBandHarmonizer_A.txt
+++ /dev/null
@@ -1,33 +0,0 @@
-Multi-band harmonizer module.
-
-**image 6-Parametres_MBHarmonizer.png**
-
-Sliders under the graph:
-\begin{itemize}
-\item Frequency Splitter: Split points in the frequency range for multi-band processing.
-\item Transpo Band 1: Pitch shift in semi-tones for the first band.
-\item Feedback Band 1: Amount of harmonized signal fed back into the first band harmonizer. 
-\item Gain Band 1: Gain of the harmonized first band.
-\item Transpo Band 2: Pitch shift in semi-tones for the second band.
-\item Feedback Band 2: Amount of harmonized signal fed back into the second band harmonizer. 
-\item Gain Band 2: Gain of the harmonized second band.
-\item Transpo Band 3: Pitch shift in semi-tones for the third band.
-\item Feedback Band 3: Amount of harmonized signal fed back into the third band harmonizer. 
-\item Gain Band 3: Gain of the harmonized third band.
-\item Transpo Band 4: Pitch shift in semi-tones for the fourth band.
-\item Feedback Band 4: Amount of harmonized signal fed back into the fourth band harmonizer. 
-\item Gain Band 4: Gain of the harmonized fourth band.
-\item Dry/Wet: Mix between the original signal and the harmonized signals.
-\end{itemize}
-
-Dropdown menus and toggles:
-\begin{itemize}
-\item Win Size: Window size (for delay). **à préciser**
-\item # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
-\item Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-\end{itemize}
-
-Graph only parameters:
-\begin{itemize}
-\item Overall Amplitude: The amplitude curve applied on the total duration of the performance.
-\end{itemize}
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre6_A/6.7-MultiBandReverb_A.txt b/doc/chapitres/Chapitre6_A/6.7-MultiBandReverb_A.txt
deleted file mode 100644
index 3471d64..0000000
--- a/doc/chapitres/Chapitre6_A/6.7-MultiBandReverb_A.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-Multi-band reverb module.
-
-**image 7-Parametres_MBReverb.png**
-
-Sliders under the graph:
-\begin{itemize}
-\item Frequency Splitter: Split points in frequency range for multi-band processing.
-\item Reverb Band 1: Amount of reverb applied on first band.
-\item Cutoff Band 1: Damp - Cutoff frequency of the reverb's lowpass filter for the first band.
-\item Gain Band 1: Gain of the reverberized first band.
-\item Reverb band 2: Amount of reverb applied on second band.
-\item Cutoff Band 2: Damp - Cutoff frequency of the reverb's lowpass filter for the second band.
-\item Gain Band 2: Gain of the reverberized second band.
-\item Reverb band 3: Amount of reverb applied on third band.
-\item Cutoff Band 3: Damp - Cutoff frequency of the reverb's lowpass filter for the third band.
-\item Gain Band 3: Gain of the reverberized third band.
-\item Reverb band 4: Amount of reverb applied on fourth band.
-\item Cutoff Band 4: Damp - Cutoff frequency of the reverb's lowpass filter for the fourth band.
-\item Gain Band 4: Gain of the reverberized fourth band.
-\item Dry/Wet: Mix between the original signal and the harmonized signals.
-\end{itemize}
-
-Dropdown menus and toggles:
-\begin{itemize}
-\item # of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
-\item Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-\end{itemize}
-
-Graph only parameters:
-\begin{itemize}
-\item Overall Amplitude: The amplitude curve applied on the total duration of the performance.
-\end{itemize}
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre6_F/6.1-MultiBandBeatMaker_F.txt b/doc/chapitres/Chapitre6_F/6.1-MultiBandBeatMaker_F.txt
deleted file mode 100644
index 07a22b8..0000000
--- a/doc/chapitres/Chapitre6_F/6.1-MultiBandBeatMaker_F.txt
+++ /dev/null
@@ -1,36 +0,0 @@
-MultiBandBeatMaker est un module générant des rythmes à partir d'algorithmes en divisant le signal d'origine en quatre bandes de fréquences.
-
-**image 1-Parametres_MBBeatMaker.png**
-
-Potentiomètres:
-\begin{itemize}
-\item Frequency Splitter: Points de découpage du registre fréquenciel pour le traitement multi-bandes.
-\item # of Taps: Nombre de pulsations par mesure.
-\item Tempo: Vitesse de la pulsation (en pulsations par minute).
-\item Tap Length: Longueur des figures rythmiques (en secondes).
-\item Beat 1 Index: Position de lecture dans le fichier son d'origine pour la génération de la première figure rythmique.
-\item Beat 2 Index: Position de lecture dans le fichier son d'origine pour la génération de la seconde figure rythmique.
-\item Beat 3 Index: Position de lecture dans le fichier son d'origine pour la génération de la troisième figure rythmique.
-\item Beat 4 Index: Position de lecture dans le fichier son d'origine pour la génération de la quatrième figure rythmique.
-\item Beat 1 Distribution: Probabilité qu'un rythme soit généré sur le premier temps (en pourcentage de probabilité).
-\item Beat 2 Distribution: Probabilité qu'un rythme soit généré sur le deuxième temps (en pourcentage de probabilité).
-\item Beat 3 Distribution: Probabilité qu'un rythme soit généré sur le troisième temps (en pourcentage de probabilité).
-\item Beat 4 Distribution: Probabilité qu'un rythme soit généré sur le quatrième temps (en pourcentage de probabilité).
-\item Beat 1 Gain: Niveau sonore (en décibels) du premier temps.
-\item Beat 2 Gain: Niveau sonore (en décibels) du deuxième temps.
-\item Beat 3 Gain: Niveau sonore (en décibels) du troisième temps.
-\item Beat 4 Gain: Niveau sonore (en décibels) du quatrième temps.
-\item Global Seed: Valeur initiale (racine) pour la génération de figures rythmiques par algorithmie; utiliser la même racile avec la même formule de distribution produira exactement le même résultat d'une fois à l'autre (génération pseudo-aléatoire).
-\end{itemize}
-
-Paramètres fixes:
-\begin{itemize}
-\item # of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
-\item Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-\end{itemize}
-
-Paramètres du graphique:
-\begin{itemize}
-\item Overall Amplitude: Définit l'enveloppe d'amplitude appliqué au son sur sa durée totale en secondes.
-\end{itemize}
-
diff --git a/doc/chapitres/Chapitre6_F/6.2-MultiBandDelay_F.txt b/doc/chapitres/Chapitre6_F/6.2-MultiBandDelay_F.txt
deleted file mode 100644
index 48f0873..0000000
--- a/doc/chapitres/Chapitre6_F/6.2-MultiBandDelay_F.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-MultiBandDelay est un module de délai avec traitement sur quatre bandes de fréquences.
-
-**image 2-Parametres_MBDelay.png**
-
-Potentiomètres:
-\begin{itemize}
-\item Frequency Splitter: Points de découpage du registre fréquenciel pour le traitement multi-bandes.
-\item Delay Band 1: Temps de délai pour la première bande de fréquences (en secondes).
-\item Feedback Band 1: Quantité de signal délayé réinjecté dans le délai de la première bande.
-\item Gain Band 1: Niveau (en décibels) de la première bande délayée.
-\item Delay Band 2: Temps de délai pour la seconde bande de fréquences (en secondes).
-\item Feedback Band 2: Quantité de signal délayé réinjecté dans le délai de la seconde bande.
-\item Gain Band 2: Niveau (en décibels) de la seconde bande délayée.
-\item Delay Band 3: Temps de délai pour la troisième bande de fréquences (en secondes).
-\item Feedback Band 3: Quantité de signal délayé réinjecté dans le délai de la troisième bande.
-\item Gain Band 1: Niveau (en décibels) de la troisième bande de fréquences délayée.
-\item Delay Band 4: Temps de délai pour la quatrième bande de fréquences (en secondes).
-\item Feedback Band 4: Quantité de signal délayé réinjecté dans le délai de la quatrième bande.
-\item Gain Band 4: Niveau (en décibels) de la quatrième bande de fréquences délayée.
-\end{itemize}
-
-Paramètres fixes:
-\begin{itemize}
-\item # of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
-\item Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-\end{itemize}
-
-Paramètres du graphique:
-\begin{itemize}
-\item Overall Amplitude: Définit l'enveloppe d'amplitude appliqué au son sur sa durée totale en secondes.
-\end{itemize}
-
diff --git a/doc/chapitres/Chapitre6_F/6.3-MultiBandDisto_F.txt b/doc/chapitres/Chapitre6_F/6.3-MultiBandDisto_F.txt
deleted file mode 100644
index 4a8d3ea..0000000
--- a/doc/chapitres/Chapitre6_F/6.3-MultiBandDisto_F.txt
+++ /dev/null
@@ -1,31 +0,0 @@
-MultiBandDisto est un module de distorsion avec traitement sur quatre bandes de fréquences.
-
-**image 3-Parametres_MBDisto.png**
-
-Potentiomètres:
-\begin{itemize}
-\item Frequency Splitter: Points de découpage du registre fréquenciel pour le traitement multi-bandes.
-\item Band 1 Drive: Niveau de distorsion appliqué sur la première bande de fréquences.
-\item Band 1 Slope: Accentuation de la pente du filtre passe-bas appliqué sur la distorsion pour la première bande de fréquences.
-\item Band 1 Gain: Niveau (en décibels) de la première bande de fréquence avec distorsion. 
-\item Band 2 Drive: Niveau de distorsion appliqué sur la deuxième bande de fréquences.
-\item Band 2 Slope: Accentuation de la pente du filtre passe-bas appliqué sur la distorsion pour la deuxième bande de fréquences.
-\item Band 2 Gain: Niveau (en décibels) de la deuxième bande de fréquence avec distorsion.
-\item Band 3 Drive: Niveau de distorsion appliqué sur la troisième bande de fréquences.
-\item Band 3 Slope: Accentuation de la pente du filtre passe-bas appliqué sur la distorsion pour la troisième bande de fréquences.
-\item Band 3 Gain: Niveau (en décibels) de la troisième bande de fréquence avec distorsion.
-\item Band 4 Drive: Niveau de distorsion appliqué sur la quatrième bande de fréquences.
-\item Band 4 Slope: Accentuation de la pente du filtre passe-bas appliqué sur la distorsion pour la quatrième bande de fréquences.
-\item Band 4 Gain: Niveau (en décibels) de la quatrième bande de fréquence avec distorsion.
-\end{itemize}
-
-Paramètres fixes:
-\begin{itemize}
-\item # of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
-\item Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-\end{itemize}
-
-Paramètres du graphique:
-\begin{itemize}
-\item Overall Amplitude: Définit l'enveloppe d'amplitude appliqué au son sur sa durée totale en secondes.
-\end{itemize}
diff --git a/doc/chapitres/Chapitre6_F/6.4-MultiBandFreqShift_F.txt b/doc/chapitres/Chapitre6_F/6.4-MultiBandFreqShift_F.txt
deleted file mode 100644
index 325528c..0000000
--- a/doc/chapitres/Chapitre6_F/6.4-MultiBandFreqShift_F.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-MultiBandFreqShift est un module de variation fréquentielle agissant sur quatre bandes de fréquences distinctes.
-
-**image 4-Parametres_MBFreqShift.png**
-
-Potentiomètres:
-\begin{itemize}
-\item Frequency Splitter: Points de découpage du registre fréquenciel pour le traitement multi-bandes.
-\item Freq Shift Band 1: Variation fréquentielle de la première bande de fréquences (en Hertz).
-\item Gain Band 1: Niveau sonore de la première bande de fréquences traitée (en décibels).
-\item Freq Shift Band 2: Variation fréquentielle de la deuxième bande de fréquences (en Hertz).
-\item Gain Band 2: Niveau sonore de la deuxième bande de fréquences traitée (en décibels).
-\item Freq Shift Band 3: Variation fréquentielle de la troisième bande de fréquences (en Hertz).
-\item Gain Band 3: Niveau sonore de la troisième bande de fréquences traitée (en décibels).
-\item Freq Shift Band 4: Variation fréquentielle de la quatrième bande de fréquences (en Hertz).
-\item Gain Band 4: Niveau sonore de la quatrième bande de fréquences traitée (en décibels).
-\item Dry/Wet: Rapport entre signal d'origine et le signal traité.
-\end{itemize}
-
-Paramètres fixes:
-\begin{itemize}
-\item # of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
-\item Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-\end{itemize}
-
-Paramètres du graphique:
-\begin{itemize}
-\item Overall Amplitude: Définit l'enveloppe d'amplitude appliqué au son sur sa durée totale en secondes.
-\end{itemize}
-
diff --git a/doc/chapitres/Chapitre6_F/6.5-MultiBandGate_F.txt b/doc/chapitres/Chapitre6_F/6.5-MultiBandGate_F.txt
deleted file mode 100644
index 18c5ab1..0000000
--- a/doc/chapitres/Chapitre6_F/6.5-MultiBandGate_F.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-MultiBandGate est un module de porte de bruit (noise gate) agissant sur quatre bandes de fréquences distinctes.
-
-**image 5-Parametres_MBBandGate.png**
-
-Potentiomètres:
-\begin{itemize}
-\item Frequency Splitter: Points de découpage du registre fréquenciel pour le traitement multi-bandes.
-\item Threshold Band 1: Seuil à partir duquel la porte de bruit devient active pour la première bande de fréquences (en décibels).
-\item Gain Band 1: Niveau sonore de la première bande de fréquences traitée (en décibels).
-\item Threshold Band 2: Seuil à partir duquel la porte de bruit devient active pour la deuxième bande de fréquences (en décibels).
-\item Gain Band 2: Niveau sonore de la deuxième bande de fréquences traitée (en décibels).
-\item Threshold Band 3: Seuil à partir duquel la porte de bruit devient active pour la troisième bande de fréquences (en décibels).
-\item Gain Band 3: Niveau sonore de la troisième bande de fréquences traitée (en décibels).
-\item Threshold Band 4: Seuil à partir duquel la porte de bruit devient active pour la quatrième bande de fréquences (en décibels).
-\item Gain Band 4: Niveau sonore de la quatrième bande de fréquences traitée (en décibels).
-\item Rise Time: Temps requis pour que la porte de bruit se ferme après l'atteinte du seuil (en secondes).
-\item Fall Time: Temps requis pour que la porte s'ouvre à nouveau lorsque le seuil n'est plus atteint (en secondes).
-\end{itemize}
-
-Paramètres fixes:
-\begin{itemize}
-\item # of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
-\item Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-\end{itemize}
-
-Paramètres du graphique:
-\begin{itemize}
-\item Overall Amplitude: Définit l'enveloppe d'amplitude appliqué au son sur sa durée totale en secondes.
-\end{itemize}
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre6_F/6.6-MultiBandHarmonizer_F.txt b/doc/chapitres/Chapitre6_F/6.6-MultiBandHarmonizer_F.txt
deleted file mode 100644
index c527193..0000000
--- a/doc/chapitres/Chapitre6_F/6.6-MultiBandHarmonizer_F.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-MultiBandHarmonizer est un module de transposition agissant sur quatre bandes de fréquences distinctes.
-
-**image 6-Parametres_MBHarmonizer.png**
-
-Potentiomètres:
-\begin{itemize}
-\item Frequency Splitter: Points de découpage du registre fréquenciel pour le traitement multi-bandes.
-\item Transpo Band 1: Transposition en demi-tons de la première bande de fréquences.
-\item Feedback Band 1: Quantité de signal traité réinjecté dans le module de transposition pour la première bande de fréquences.
-\item Gain Band 1: Niveau sonore de la première bande de fréquences transposée (en décibels).
-\item Transpo Band 2: Transposition en demi-tons de la deuxième bande de fréquences.
-\item Feedback Band 2: Quantité de signal traité réinjecté dans le module de transposition pour la deuxième bande de fréquences.
-\item Gain Band 2: Niveau sonore de la deuxième bande de fréquences transposée (en décibels).
-\item Transpo Band 3: Transposition en demi-tons de la troisième bande de fréquences.
-\item Feedback Band 3: Quantité de signal traité réinjecté dans le module de transposition pour la troisième bande de fréquences.
-\item Gain Band 3: Niveau sonore de la troisième bande de fréquences transposée (en décibels).
-\item Transpo Band 4: Transposition en demi-tons de la quatrième bande de fréquences.
-\item Feedback Band 4: Quantité de signal traité réinjecté dans le module de transposition pour la quatrième bande de fréquences.
-\item Gain Band 4: Niveau sonore de la quatrième bande de fréquences transposée (en décibels).
-\item Dry/Wet: Rapport entre signal d'origine et le signal traité.
-\end{itemize}
-
-Paramètres fixes:
-\begin{itemize}
-\item # of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
-\item Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-\end{itemize}
-
-Paramètres du graphique:
-\begin{itemize}
-\item Overall Amplitude: Définit l'enveloppe d'amplitude appliqué au son sur sa durée totale en secondes.
-\end{itemize}
diff --git a/doc/chapitres/Chapitre6_F/6.7-MultiBandReverb_F.txt b/doc/chapitres/Chapitre6_F/6.7-MultiBandReverb_F.txt
deleted file mode 100644
index 03e6a66..0000000
--- a/doc/chapitres/Chapitre6_F/6.7-MultiBandReverb_F.txt
+++ /dev/null
@@ -1,32 +0,0 @@
-MultiBandReverb est un module de réverbération où le traitement est appliqué sur quatre bandes de fréquences distinctes.
-
-**image 7-Parametres_MBReverb.png**
-
-Potentiomètres:
-\begin{itemize}
-\item Frequency Splitter: Points de découpage du registre fréquenciel pour le traitement multi-bandes.
-\item Reverb Band 1: Quantité de réverbération appliquée sur la première bande de fréquences.
-\item Cutoff Band 1: Damp - Fréquence de coupure du filtre passe-bas appliqué sur le signal traité de la première bande de fréquences.
-\item Gain Band 1: Niveau sonore de la première bande de fréquences traitée (en décibels).
-\item Reverb Band 2: Quantité de réverbération appliquée sur la deuxième bande de fréquences.
-\item Cutoff Band 2: Damp - Fréquence de coupure du filtre passe-bas appliqué sur le signal traité de la deuxième bande de fréquences.
-\item Gain Band 2: Niveau sonore de la deuxième bande de fréquences traitée (en décibels).
-\item Reverb Band 3: Quantité de réverbération appliquée sur la troisième bande de fréquences.
-\item Cutoff Band 3: Damp - Fréquence de coupure du filtre passe-bas appliqué sur le signal traité de la troisième bande de fréquences.
-\item Gain Band 3: Niveau sonore de la troisième bande de fréquences traitée (en décibels).
-\item Reverb Band 4: Quantité de réverbération appliquée sur la quatrième bande de fréquences.
-\item Cutoff Band 4: Damp - Fréquence de coupure du filtre passe-bas appliqué sur le signal traité de la quatrième bande de fréquences.
-\item Gain Band 4: Niveau sonore de la quatrième bande de fréquences traitée (en décibels).
-\item Dry/Wet: Rapport entre signal d'origine et le signal traité.
-\end{itemize}
-
-Paramètres fixes:
-\begin{itemize}
-\item # of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
-\item Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-\end{itemize}
-
-Paramètres du graphique:
-\begin{itemize}
-\item Overall Amplitude: Définit l'enveloppe d'amplitude appliqué au son sur sa durée totale en secondes.
-\end{itemize}
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre7_A/7.1-ChordMaker_A.txt b/doc/chapitres/Chapitre7_A/7.1-ChordMaker_A.txt
deleted file mode 100644
index 5574bed..0000000
--- a/doc/chapitres/Chapitre7_A/7.1-ChordMaker_A.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-Sampler based harmonizer module with multiple voices.
-
-**image **
-
-Sliders under the graph:
--Transpo Voice 1: Pitch shift of the first voice.
--Gain Voice 1: Gain of the transposed first voice.
--Transpo Voice 2: Pitch shift of the second voice.
--Gain Voice 2: Gain of the transposed second voice.
--Transpo Voice 3: Pitch shift of the third voice.
--Gain Voice 3: Gain of the transposed third voice.
--Transpo Voice 4: Pitch shift of the fourth voice.
--Gain Voice 4: Gain of the transposed fourth voice.
--Transpo Voice 5: Pitch shift of the fifth voice.
--Gain Voice 5: Gain of the transposed fifth voice.
--Feedback: Amount of transposed signal fed back into the harmonizers (feedback is voice independent).
--Dry/Wet: Mix between the original signal and the harmonized signals.
-
-Dropdown menus and toggles:
--Voice 1: Mute or unmute the first voice 
--Voice 2: Mute or unmute the second voice
--Voice 3: Mute or unmute the third voice
--Voice 4: Mute or unmute the fourth voice
--Voice 5: Mute or unmute the fifth voice
--# of Polyphony: Number of voices played simultaneously (in polyphony); only available at initialization time.
--Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-
-Graph only parameters:
--Overall Amplitude: The amplitude curve applied on the total duration of the performance.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre7_A/7.2-FreqShift_A.txt b/doc/chapitres/Chapitre7_A/7.2-FreqShift_A.txt
deleted file mode 100644
index 214db14..0000000
--- a/doc/chapitres/Chapitre7_A/7.2-FreqShift_A.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-Double frequency shifter module.
-
-Sliders under the graph:
--Frequency Shift 1: First frequency shift value.
--Frequency Shift 2: Second frequency shift value.
--Filter Freq: Cut-off frequency of the lowpass filter.
--Filter Q: Q factor of the lowpass filter.
--Feedback Delay: Delay time (in seconds) causing the feedback.
--Feedback: **à vérifier**
--Feedback Gain: **à vérifier**
--Dry/Wet: Mix between the original signal and the shifted signals.
-
-Dropdown menus and toggles:
--Balance: Adjust the signal amplitude by comparing it with a sinusoidal wave with a fixed amplitude (see "compress") or with the amplitude of the source (see "source").
--# of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
--Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-
-Graph only parameters:
--Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc/chapitres/Chapitre7_A/7.3-Harmonizer_A.txt b/doc/chapitres/Chapitre7_A/7.3-Harmonizer_A.txt
deleted file mode 100644
index f18ceab..0000000
--- a/doc/chapitres/Chapitre7_A/7.3-Harmonizer_A.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-Harmonizer module with two voices.
-
-Sliders under the graph:
--Transpo Voice 1: Pitch shift of the first voice (in semi-tones).
--Transpo Voice 2: Pitch shift of the second voice (in semi-tones).
--Feedback: Amount of transposed signal fed back into the harmonizers (feedback is voice independent).
--Harm1/Harm2: Mix between the first and the second harmonized voices.
--Dry/Wet: Mix between the original signal and the harmonized signals.
-
-Dropdown menus and toggles:
--Win Size Voice 1: Window size of the first harmonizer for delay (1, 0.75, 0.5, 0.25, 0.2, 0.15, 0.1, 0.05 or 0.025).
--Win Size Voice 2: Window size of the first harmonizer for delay (1, 0.75, 0.5, 0.25, 0.2, 0.15, 0.1, 0.05 or 0.025).
--# of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
--Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-
-Graph only parameters:
--Overall Amplitude: The amplitude curve applied on the total duration of the performance.
-
diff --git a/doc/chapitres/Chapitre7_A/7.4-LooperMod_A.txt b/doc/chapitres/Chapitre7_A/7.4-LooperMod_A.txt
deleted file mode 100644
index 468d048..0000000
--- a/doc/chapitres/Chapitre7_A/7.4-LooperMod_A.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-Looper module with optional amplitude and frequency modulation.
-
-Sliders under the graph:
--AM Range: Amplitude of the amplitude modulation LFO (low frequency oscillator).
--AM Speed: Frequency of the amplitude modulation LFO.
--FM Range: Amplitude of the frequency modulation LFO.
--FM Speed: Frequency of the frequency modulation LFO.
--Loop Range: Range in the soundfile to loop.
--Dry/Wet: Mix between the original signal and the processed signal.
-
-Dropdown menus and toggles:
--AM LFO Type: Waveform of the amplitude modulation wave (saw up, saw down, square, triangle, pulse, bipolar pulse, sample and hold or modulated sine).
--AM On/Off: To enable or disable the amplitude modulation.
--FM LFO Type: Waveform of the amplitude modulation wave (saw up, saw down, square, triangle, pulse, bipolar pulse, sample and hold or modulated sine).
--FM On/Off: To enable or disable the frequency modulation.
--# of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
--Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-
-Graph only parameters:
--Overall Amplitude: The amplitude curve applied on the total duration of the performance.
-
diff --git a/doc/chapitres/Chapitre7_A/7.5-PitchLooper_A.txt b/doc/chapitres/Chapitre7_A/7.5-PitchLooper_A.txt
deleted file mode 100644
index 924ee67..0000000
--- a/doc/chapitres/Chapitre7_A/7.5-PitchLooper_A.txt
+++ /dev/null
@@ -1,25 +0,0 @@
-Table based transposition module that creates up to five polyphonic voices.
-
-Sliders under the graph:
--Transpo Voice 1: Playback speed of the first voice (direct transposition).
--Gain Voice 1: Gain of the transposed first voice.
--Transpo Voice 2: Playback speed of the second voice (direct transposition).
--Gain Voice 2: Gain of the transposed second voice.
--Transpo Voice 3: Playback speed of the third voice (direct transposition).
--Gain Voice 3: Gain of the transposed third voice.
--Transpo Voice 4: Playback speed of the fourth voice (direct transposition).
--Gain Voice 4: Gain of the transposed fourth voice.
--Transpo Voice 5: Playback speed of the fifth voice (direct transposition).
--Gain Voice 5: Gain of the transposed fifth voice.
-
-Dropdown menus and toggles:
--Voice 1: To mute or unmute the first voice.
--Voice 2: To mute or unmute the second voice.
--Voice 3: To mute or unmute the third voice.
--Voice 4: To mute or unmute the fourth voice.
--Voice 5: To mute or unmute the fifth voice.
--# of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
--Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-
-Graph only parameters:
--Overall Amplitude: The amplitude curve applied on the total duration of the performance.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre7_F/7.1-ChordMaker_F.txt b/doc/chapitres/Chapitre7_F/7.1-ChordMaker_F.txt
deleted file mode 100644
index f0f95d4..0000000
--- a/doc/chapitres/Chapitre7_F/7.1-ChordMaker_F.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-ChordMaker est un module d'harmonisation créant une polyphonie à plusieurs voix et dont le fonctionnement est basé sur l'échantillonnage.
-
-**image**
-
-Potentiomètres:
--Transpo Voice 1: Variation de hauteur de la première voix.
--Gain Voice 1: Niveau d'intensité de la première voix transposée.
--Transpo Voice 2: Variation de hauteur de la deuxième voix.
--Gain Voice 2: Niveau d'intensité de la deuxième voix transposée.
--Transpo Voice 3: Variation de hauteur de la troisième voix.
--Gain Voice 3: Niveau d'intensité de la troisième voix transposée.
--Transpo Voice 4: Variation de hauteur de la quatrième voix.
--Gain Voice 4: Niveau d'intensité de la quatrième voix transposée.
--Transpo Voice 5: Variation de hauteur de la cinquième voix.
--Gain Voice 5: Niveau d'intensité de la cinquième voix transposée.
--Feedback: Niveau de réinjection du signal dans le module.
--Dry/Wet: Rapport de niveau entre le son original et le son traité par le module.
-
-Paramètres fixes:
--Voice 1: Cochez pour entendre la première voix; décochez pour la mettre en sourdine.
--Voice 2: Cochez pour entendre la deuxième voix; décochez pour la mettre en sourdine.
--Voice 3: Cochez pour entendre la troisième voix; décochez pour la mettre en sourdine.
--Voice 4: Cochez pour entendre la quatrième voix; décochez pour la mettre en sourdine.
--Voice 5: Cochez pour entendre la cinquième voix; décochez pour la mettre en sourdine.
--# of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
--Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-
-Paramètres du graphique:
--Overall Amplitude: Définit l'enveloppe d'amplitude appliquée au son sur sa durée totale en secondes.
diff --git a/doc/chapitres/Chapitre7_F/7.2-FreqShift_F.txt b/doc/chapitres/Chapitre7_F/7.2-FreqShift_F.txt
deleted file mode 100644
index d8a11cd..0000000
--- a/doc/chapitres/Chapitre7_F/7.2-FreqShift_F.txt
+++ /dev/null
@@ -1,19 +0,0 @@
-FreqShift est un module créant un double décalage fréquentiel à partir du son original.
-
-Potentiomètres:
--Frequency Shift 1: Valeur du premier décalage fréquentiel.
--Frequency Shift 2: Valeur du second décalage fréquentiel.
--Filter Freq: Fréquence de coupure du filtre passe-bas.
--Filter Q: Facteur Q (pente) du filtre passe-bas.
--Feedback Delay: Temps de délai (en secondes) lors de la réinjection du signal dans le module de traitement.
--Feedback: ** à vérifier **
--Feedback Gain: Niveau d'intensité du signal traité avec la réinjection. **à vérifier**
--Dry/Wet: Rapport de niveau entre le son original et le son traité par le module.
-
-Paramètres fixes:
--Balance: Ajuste l'amplitude du son traité en la comparant avec celle d'une onde sinusoïdale à amplitude fixe (compress) ou celle de la source (source).
--# of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
--Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-
-Paramètres du graphique:
--Overall Amplitude: Définit l'enveloppe d'amplitude appliquée au son sur sa durée totale en secondes.
diff --git a/doc/chapitres/Chapitre7_F/7.3-Harmonizer_F.txt b/doc/chapitres/Chapitre7_F/7.3-Harmonizer_F.txt
deleted file mode 100644
index a9b89a0..0000000
--- a/doc/chapitres/Chapitre7_F/7.3-Harmonizer_F.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-Harmonizer est un module créant deux voix de polyphonie à partir du signal original.
-
-Potentiomètres:
--Transpo Voice 1: Variation de hauteur de la première voix (en demi-tons).
--Transpo Voice 2: Variation de hauteur de la seconde voix (en demi-tons).
--Feedback: Niveau de réinjection du signal dans le module.
--Dry/Wet: Rapport de niveau entre le son original et le son traité par le module.
-
-Paramètres fixes:
--Win Size Voice 1: Grandeur de la fenêtre du premier harmoniseur pour l'application du délai (1, 0.75, 0.5, 0.25, 0.2, 0.15, 0.1, 0.05 ou 0.025).
--Win Size Voice 2: Grandeur de la fenêtre du second harmoniseur pour l'application du délai (1, 0.75, 0.5, 0.25, 0.2, 0.15, 0.1, 0.05 ou 0.025).
--# of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
--Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-
-Paramètres du graphique:
--Overall Amplitude: Définit l'enveloppe d'amplitude appliquée au son sur sa durée totale en secondes.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre7_F/7.4-LooperMod_F.txt b/doc/chapitres/Chapitre7_F/7.4-LooperMod_F.txt
deleted file mode 100644
index b036184..0000000
--- a/doc/chapitres/Chapitre7_F/7.4-LooperMod_F.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-LooperMod est un module créant des boucles, avec modulations d'amplitude et de fréquence optionnelles.
-
-Potentiomètres:
--AM Range: Amplitude de l'oscillateur à basse fréquence (LFO) pour la modulation d'amplitude.
--AM Speed: Fréquence de l'oscillateur à basse fréquence (LFO) pour la modulation d'amplitude.
--FM Range: Amplitude de l'oscillateur à basse fréquence (LFO) pour la modulation de fréquence.
--FM Speed: Fréquence de l'oscillateur à basse fréquence (LFO) pour la modulation de fréquence.
--Loop Range: Portion du fichier son original qui sera jouée en boucle.
--Dry/Wet: Rapport de niveau entre le son original et le son traité par le module.
-
-Paramètres fixes:
--AM LFO Type: Forme d'onde de l'oscillateur à basse fréquence (LFO) pour la modulation d'amplitude (saw up/down - dents de scie vers le haut ou le bas, square - onde carrée, triangle - onde triangulaire, pulse - onde en pulsation unipolaire, bipolar pulse - onde en pulsation bipolaire, sample and hold ou modulated sine - sinusoïde avec modulation).
--AM On/Off: Active ou désactive la modulation d'amplitude.
--FM LFO Type: Forme d'onde de l'oscillateur à basse fréquence (LFO) pour la modulation de fréquence (saw up/down - dents de scie vers le haut ou le bas, square - onde carrée, triangle - onde triangulaire, pulse - onde en pulsation unipolaire, bipolar pulse - onde en pulsation bipolaire, sample and hold ou modulated sine - sinusoïde avec modulation).
--FM On/Off: Active ou désactive la modulation de fréquence.
--# of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
--Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-
-Paramètres du graphique:
--Overall Amplitude: Définit l'enveloppe d'amplitude appliquée au son sur sa durée totale en secondes.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre7_F/7.5-PitchLooper_F.txt b/doc/chapitres/Chapitre7_F/7.5-PitchLooper_F.txt
deleted file mode 100644
index ef8cb05..0000000
--- a/doc/chapitres/Chapitre7_F/7.5-PitchLooper_F.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-PitchLooper est un module de transposition basé sur la lecture de tables de valeurs, qui crée jusqu'à cinq voix en polyphonie.
-
-Potentiomètres:
--Transpo Voice 1: Vitesse de lecture de la première voix (transposition directe).
--Gain Voice 1: Niveau d'intensité de la première voix transposée.
--Transpo Voice 2: Vitesse de lecture de la deuxième voix (transposition directe).
--Gain Voice 2: Niveau d'intensité de la deuxième voix transposée.
--Transpo Voice 3: Vitesse de lecture de la troisième voix (transposition directe).
--Gain Voice 3: Niveau d'intensité de la troisième voix transposée.
--Transpo Voice 4: Vitesse de lecture de la quatrième voix (transposition directe).
--Gain Voice 4: Niveau d'intensité de la quatrième voix transposée.
--Transpo Voice 5: Vitesse de lecture de la cinquième voix (transposition directe).
--Gain Voice 5: Niveau d'intensité de la cinquième voix transposée.
-
-Paramètres fixes:
--Voice 1 à 5: Cochez pour entendre la voix; décochez pour la mettre en sourdine.
--# of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
--Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-
-Paramètres du graphique:
--Overall Amplitude: Définit l'enveloppe d'amplitude appliquée au son sur sa durée totale en secondes.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre8_A/8.1-Convolve_A.txt b/doc/chapitres/Chapitre8_A/8.1-Convolve_A.txt
deleted file mode 100644
index 4450329..0000000
--- a/doc/chapitres/Chapitre8_A/8.1-Convolve_A.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-Circular convolution filtering module.
-
-Sliders under the graph:
--Dry/Wet: Mix between the original signal and the convoluted signal.
-
-Dropdown menus and toggles:
--Size: Buffer size of the convolution (128, 256, 512, 1024 or 2048).
--Balance: Adjust the signal amplitude by comparing it with a sinusoidal wave with a fixed amplitude (see "compress") or with the amplitude of the source (see "source").
--# of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
--Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-
-Graph only parameters:
--Overall Amplitude: The amplitude curve applied on the total duration of the performance.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre8_A/8.2-DetunedResonators_A.txt b/doc/chapitres/Chapitre8_A/8.2-DetunedResonators_A.txt
deleted file mode 100644
index 53ad8b4..0000000
--- a/doc/chapitres/Chapitre8_A/8.2-DetunedResonators_A.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-Module with eight detuned resonators with jitter control.
-
-Sliders under the graph:
--Pitch offset: Base pitch of all the resonators (in cents).
--Amp Rand Amp: Amplitude of the jitter applied to the resonators amplitude.
--Amp Rand Speed: Frequency (in Hertz) of the jitter applied to the resonators amplitude.
--Delay Rand Amp: Amplitude of the jitter applied to the resonators delay; this has an effect on the pitch of each resonator.
--Delay Rand Speed: Frequency (in Hertz) of the jitter applied to the resonators delay; this has an effect on the pitch of each resonator.
--Detune factor: Spread factor that determines how each resonator will be detuned compared to the original signal.
--Pitch Voice 1: Pitch of the first resonator compared to the original signal (in semi-tones).
--Pitch Voice 2: Pitch of the second resonator compared to the original signal (in semi-tones).
--Pitch Voice 3: Pitch of the third resonator compared to the original signal (in semi-tones).
--Pitch Voice 4: Pitch of the fourth resonator compared to the original signal (in semi-tones).
--Pitch Voice 5: Pitch of the fifth resonator compared to the original signal (in semi-tones).
--Pitch Voice 6: Pitch of the sixth resonator compared to the original signal (in semi-tones).
--Pitch Voice 7: Pitch of the seventh resonator compared to the original signal (in semi-tones).
--Pitch Voice 8: Pitch of the eighth resonator compared to the original signal (in semi-tones).
--Feedback: Amount of the resonators signal fed back into the resonators (between 0 and 1).
--Dry/Wet: Mix between the original signal and the processed signals.
-
-Dropdown menus and toggles:
--Voice Activation (1 to 8): Check the boxes to activate the voices (first to eighth); uncheck to mute them.
--# of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
--Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-
-Graph only parameters:
--Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc/chapitres/Chapitre8_A/8.3-Resonators_A.txt b/doc/chapitres/Chapitre8_A/8.3-Resonators_A.txt
deleted file mode 100644
index d375314..0000000
--- a/doc/chapitres/Chapitre8_A/8.3-Resonators_A.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-Module with eight resonators with jitter control.
-
-Sliders under the graph:
--Pitch offset: Base pitch of all the resonators (in cents).
--Pitch Voice 1: Pitch of the first resonator compared to the original signal (in semi-tones).
--Pitch Voice 2: Pitch of the second resonator compared to the original signal (in semi-tones).
--Pitch Voice 3: Pitch of the third resonator compared to the original signal (in semi-tones).
--Pitch Voice 4: Pitch of the fourth resonator compared to the original signal (in semi-tones).
--Pitch Voice 5: Pitch of the fifth resonator compared to the original signal (in semi-tones).
--Pitch Voice 6: Pitch of the sixth resonator compared to the original signal (in semi-tones).
--Pitch Voice 7: Pitch of the seventh resonator compared to the original signal (in semi-tones).
--Pitch Voice 8: Pitch of the eighth resonator compared to the original signal (in semi-tones).
--Amp Rand Amp: Amplitude of the jitter applied to the resonators amplitude.
--Amp Rand Speed: Frequency (in Hertz) of the jitter applied to the resonators amplitude.
--Delay Rand Amp: Amplitude of the jitter applied to the resonators delay; this has an effect on the pitch of each resonator.
--Delay Rand Speed: Frequency (in Hertz) of the jitter applied to the resonators delay; this has an effect on the pitch of each resonator.
--Feedback: Amount of the resonators signal fed back into the resonators (between 0 and 1).
--Dry/Wet: Mix between the original signal and the processed signals.
-
-Dropdown menus and toggles:
--Balance: Adjust the signal amplitude by comparing it with a sinusoidal wave with a fixed amplitude (see "compress") or with the amplitude of the source (see "source").
--Voice Activation (1 to 8): Check the boxes to activate the voices (first to eighth); uncheck to mute them.
--# of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
--Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-
-Graph only parameters:
--Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc/chapitres/Chapitre8_A/8.4-WGuideBank_A.txt b/doc/chapitres/Chapitre8_A/8.4-WGuideBank_A.txt
deleted file mode 100644
index 5d702c6..0000000
--- a/doc/chapitres/Chapitre8_A/8.4-WGuideBank_A.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-Multiple waveguide models module.
-
-Sliders under the graph:
--Base Freq: Base pitch of the waveguides (in Hertz).
--WG Expansion: Spread factor that determines the range between the waveguides.
--WG Feedback: Length of the waveguides (**à vérifier; en quelle unité?).
--Filter Cutoff: Cutoff or center frequency of the filter (in Hertz).
--Amp Dev Amp: Amplitude of the jitter applied to the waveguides amplitudes.
--Amp Dev Speed: Frequency of the jitter applied to the waveguides amplitudes.
--Freq Dev Amp: Amplitude of the jitter applied to the waveguides pitch.
--Freq Dev Speed: Frequency of the jitter applied to the waveguides pitch.
--Dry/Wet: Mix betwwen the original signal and the waveguides signals.
-
-Dropdown menus and toggles:
--Filter Type: Type of the filter used in the module (lowpass, highpass, bandpass or bandstop).
--Balance: Adjust the signal amplitude by comparing it with a sinusoidal wave with a fixed amplitude (see "compress") or with the amplitude of the source (see "source").
--# of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
--Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-
-Graph only parameters:
--Overall Amplitude: The amplitude curve applied on the total duration of the performance.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre8_F/8.1-Convolve_F.txt b/doc/chapitres/Chapitre8_F/8.1-Convolve_F.txt
deleted file mode 100644
index e94247b..0000000
--- a/doc/chapitres/Chapitre8_F/8.1-Convolve_F.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-Convolve est un module de filtrage basé sur une convolution circulaire.
-
-Potentiomètres:
--Dry/Wet: Rapport de niveau entre le son original et le son traité par le module.
-
-Paramètres fixes:
--Size: Taille de la mémoire tampon pour l'opération de convolution (128, 256, 512, 1024 ou 2048).
--Balance: Ajuste l'amplitude du son traité en la comparant avec celle d'une onde sinusoïdale à amplitude fixe (compress) ou celle de la source (source).
--# of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
--Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-
-Paramètres du graphique:
--Overall Amplitude: Définit l'enveloppe d'amplitude appliquée au son sur sa durée totale en secondes.
-
diff --git a/doc/chapitres/Chapitre8_F/8.2-DetunedResonators_F.txt b/doc/chapitres/Chapitre8_F/8.2-DetunedResonators_F.txt
deleted file mode 100644
index d73516e..0000000
--- a/doc/chapitres/Chapitre8_F/8.2-DetunedResonators_F.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-DetunedResonators est un module comportant huit résonateurs désaccordés ainsi que la possibilité d'appliquer une légère variation aléatoire sur le signal (jitter).
-
-Potentiomètres:
--Pitch Offset: Hauteur de base de tous les résonateurs (en cents).
--Amp Rand Amp: Amplitude de la variation (jitter) appliquée à l'amplitude des résonateurs.
--Amp Rand Speed: Fréquence (en Hertz) de la variation (jitter) appliquée à l'amplitude des résonateurs.
--Delay Rand Amp: Amplitude de la variation (jitter) appliquée au délai des résonateurs; ceci a un effet sur la hauteur du son.
--Delay Rand Speed: Fréquence (en Hertz) de la variation (jitter) appliquée au délai des résonateurs; ceci a un effet sur la hauteur du son.
--Detune factor: Facteur de désaccord des voix. Il s'agit d'une puissance par laquelle sont multipliés les temps de délai de chaque résonateur, déterminant à quel point ils seront désaccordés par rapport au signal original.
--Pitch Voice 1: Hauteur du premier résonateur par rapport au signal original (en demi-tons).
--Pitch Voice 2: Hauteur du deuxième résonateur par rapport au signal original (en demi-tons).
--Pitch Voice 3: Hauteur du troisième résonateur par rapport au signal original (en demi-tons).
--Pitch Voice 4: Hauteur du quatrième résonateur par rapport au signal original (en demi-tons).
--Pitch Voice 5: Hauteur du cinquième résonateur par rapport au signal original (en demi-tons).
--Pitch Voice 6: Hauteur du sixième résonateur par rapport au signal original (en demi-tons).
--Pitch Voice 7: Hauteur du septième résonateur par rapport au signal original (en demi-tons).
--Pitch Voice 8: Hauteur du huitième résonateur par rapport au signal original (en demi-tons).
--Feedback: Niveau de réinjection du signal dans le module.
--Dry/Wet: Rapport de niveau entre le son original et le son traité par le module.
-
-Paramètres fixes:
--Voice Activation (1 à 8): Cochez pour entendre les voix; décochez pour les mettre en sourdine.
--# of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
--Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-
-Paramètres du graphique:
--Overall Amplitude: Définit l'enveloppe d'amplitude appliquée au son sur sa durée totale en secondes.
diff --git a/doc/chapitres/Chapitre8_F/8.3-Resonators_F.txt b/doc/chapitres/Chapitre8_F/8.3-Resonators_F.txt
deleted file mode 100644
index 4454efe..0000000
--- a/doc/chapitres/Chapitre8_F/8.3-Resonators_F.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-Resonators est un module comportant huit résonateurs ainsi que la possibilité d'appliquer une légère variation aléatoire sur le signal (jitter).
-
-Potentiomètres:
--Pitch Offset: Hauteur de base de tous les résonateurs (en cents).
--Pitch Voice 1: Hauteur du premier résonateur par rapport à celle du signal original (en demi-tons).
--Pitch Voice 2: Hauteur du deuxième résonateur par rapport à celle du signal original (en demi-tons).
--Pitch Voice 3: Hauteur du troisième résonateur par rapport à celle du signal original (en demi-tons).
--Pitch Voice 4: Hauteur du quatrième résonateur par rapport à celle du signal original (en demi-tons).
--Pitch Voice 5: Hauteur du cinquième résonateur par rapport à celle du signal original (en demi-tons).
--Pitch Voice 6: Hauteur du sixième résonateur par rapport à celle du signal original (en demi-tons).
--Pitch Voice 7: Hauteur du septième résonateur par rapport à celle du signal original (en demi-tons).
--Pitch Voice 8: Hauteur du huitième résonateur par rapport à celle du signal original (en demi-tons).
--Amp Rand Amp: Amplitude de la variation (jitter) appliquée à l'amplitude des résonateurs.
--Amp Rand Speed: Fréquence (en Hertz) de la variation (jitter) appliquée à l'amplitude des résonateurs.
--Delay Rand Amp: Amplitude de la variation (jitter) appliquée au délai des résonateurs; ceci a un effet sur la hauteur du son.
--Delay Rand Speed: Fréquence (en Hertz) de la variation (jitter) appliquée au délai des résonateurs; ceci a un effet sur la hauteur du son.
--Feedback: Niveau de réinjection du signal dans le module.
--Dry/Wet: Rapport de niveau entre le son original et le son traité par le module.
-
-Paramètres fixes:
--Balance: Ajuste l'amplitude du son traité en la comparant avec celle d'une onde sinusoïdale à amplitude fixe (compress) ou celle de la source (source).
--Voice Activation (1 à 8): Cochez pour entendre les voix; décochez pour les mettre en sourdine.
--# of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
--Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-
-Paramètres du graphique:
--Overall Amplitude: Définit l'enveloppe d'amplitude appliquée au son sur sa durée totale en secondes.
diff --git a/doc/chapitres/Chapitre8_F/8.4-WGuideBank_F.txt b/doc/chapitres/Chapitre8_F/8.4-WGuideBank_F.txt
deleted file mode 100644
index 6cfa542..0000000
--- a/doc/chapitres/Chapitre8_F/8.4-WGuideBank_F.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-WGuideBank est un module traitant le son à partir de plusieurs modèles de guides d'onde.
-
-Potentiomètres:
--Base Freq: Fréquence de base des guides d'onde (en Hertz).
--WG Expansion: Facteur "spread" déterminant l'intervalle en Hertz entre les guides d'onde (puissance par laquelle est multipliée la fréquence de base).
--WG Feedback: Longueur des guides d'onde. **à vérifier**
--Filter Cutoff: Fréquence de coupure ou fréquence centrale du filtre.
--Amp Dev Amp: Amplitude de la variation aléatoire (jitter) appliquée à l'amplitude des guides d'onde.
--Amp Dev Speed: Fréquence de la variation aléatoire (jitter) appliquée à l'amplitude des guides d'onde.
--Freq Dev Amp: Amplitude de la variation aléatoire (jitter) appliquée à la fréquence des guides d'onde.
--Freq Dev Speed: Fréquence de la variation aléatoire (jitter) appliquée à la fréquence des guides d'onde.
--Dry/Wet: Rapport de niveau entre le son original et le son traité par le module.
-
-Paramètres fixes:
--Filter Type: Type de filtre utilisé lors du traitement (lowpass - passe-bas, highpass - passe-haut, bandpass - passe-bande ou bandstop - réjecteur de bande).
--Balance: Ajuste l'amplitude du son traité en la comparant avec celle d'une onde sinusoïdale à amplitude fixe (compress) ou celle de la source (source).
--# of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
--Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-
-Paramètres du graphique:
--Overall Amplitude: Définit l'enveloppe d'amplitude appliquée au son sur sa durée totale en secondes.
diff --git a/doc/chapitres/Chapitre9_A/9.1-CrossSynth_A.txt b/doc/chapitres/Chapitre9_A/9.1-CrossSynth_A.txt
deleted file mode 100644
index 2620b4c..0000000
--- a/doc/chapitres/Chapitre9_A/9.1-CrossSynth_A.txt
+++ /dev/null
@@ -1,17 +0,0 @@
-Cross synthesis module based on fast-Fourier-transform (FFT) operations.
-
-Sliders under the graph:
--Exciter Pre Filter Freq: Center or cut-off frequency (in Hertz) of the pre-FFT filter.
--Exciter Pre Filter Q: Q factor of the pre-FFT filter.
--Dry/Wet: Mix between the original signal and the processed signal.
-
-Dropdown menus and toggles:
--Exc Pre Filter Type: Type of the pre-FFT filter (lowpass, highpass, bandpass or bandstop).
--FFT Size: Window size of the FFT (in samples - 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 or 8192).
--FFT Envelope: Envelope type for the FFT (rectangular, Hanning, Hamming, Bartlett, Blackmann 3, 4 or 7, Tuckey or sine).
--FFT Overlaps: Number of FFT overlaps (1, 2, 4, 8 or 16).
--# of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
--Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-
-Graph only parameters:
--Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc/chapitres/Chapitre9_A/9.2-Morphing_A.txt b/doc/chapitres/Chapitre9_A/9.2-Morphing_A.txt
deleted file mode 100644
index f025922..0000000
--- a/doc/chapitres/Chapitre9_A/9.2-Morphing_A.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-Morphing module based on fast-Fourier-transform (FFT) operations.
-
-Sliders under the graph:
--Morph src1 <-> src 2: Morphing index between the two sources.
--Dry/Wet: Mix between the original signal and the morphed signal.
-
-Dropdown menus and toggles:
--FFT Size: Window size of the FFT (in samples - 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 or 8192).
--FFT Envelope: Envelope type for the FFT (rectangular, Hanning, Hamming, Bartlett, Blackmann 3, 4 or 7, Tuckey or sine).
--FFT Overlaps: Number of FFT overlaps (1, 2, 4, 8 or 16).
--# of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
--Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-
-Graph only parameters:
--Overall Amplitude: The amplitude curve applied on the total duration of the performance.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre9_A/9.3-SpectralDelay_A.txt b/doc/chapitres/Chapitre9_A/9.3-SpectralDelay_A.txt
deleted file mode 100644
index 2587e06..0000000
--- a/doc/chapitres/Chapitre9_A/9.3-SpectralDelay_A.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-Spectral delay module based on fast-Fourier-transform (FFT) operations.
-
-Sliders under the graph:
--Bin Regions: Split points in the frequency range for FFT processing.
--Band 1 Delay: Delay time applied on the first band.
--Band 1 Amp: Gain of the delayed first band.
--Band 2 Delay: Delay time applied on the second band.
--Band 2 Amp: Gain of the delayed second band.
--Band 3 Delay: Delay time applied on the third band.
--Band 3 Amp: Gain of the delayed third band.
--Band 4 Delay: Delay time applied on the fourth band.
--Band 4 Amp: Gain of the delayed fourth band.
--Band 5 Delay: Delay time applied on the fifth band.
--Band 5 Amp: Gain of the delayed fifth band.
--Band 6 Delay: Delay time applied on the sixth band.
--Band 6 Amp: Gain of the delayed sixth band.
--Feedback: Amount of the delayed signal fed back into the delays (feedback is band independent).
--Dry/Wet: Mix between the original signal and the delayed signals.
-
-Dropdown menus and toggles:
--FFT Size: Window size of the FFT (in samples - 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 or 8192).
--FFT Envelope: Envelope type for the FFT (rectangular, Hanning, Hamming, Bartlett, Blackmann 3, 4 or 7, Tuckey or sine).
--FFT Overlaps: Number of FFT overlaps (1, 2, 4, 8 or 16).
--# of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
--Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-
-Graph only parameters:
--Overall Amplitude: The amplitude curve applied on the total duration of the performance.
-
diff --git a/doc/chapitres/Chapitre9_A/9.4-SpectralFilter_A.txt b/doc/chapitres/Chapitre9_A/9.4-SpectralFilter_A.txt
deleted file mode 100644
index e23a652..0000000
--- a/doc/chapitres/Chapitre9_A/9.4-SpectralFilter_A.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-Spectral filter module based on fast-Fourier-transform (FFT) operations.
-
-Sliders under the graph:
--Filter interpolation: Morphing index between the two filters.
--Dry/Wet: Mix between the original signal and the delayed signals.
-
-Dropdown menus and toggles:
--Filter Range: Limits of the filter (up to Nyquist, up to Nyquist/2, up to Nyquist/4 or up to Nyquist/8). 
--FFT Size: Window size of the FFT (in samples - 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 or 8192).
--FFT Envelope: Envelope type for the FFT (rectangular, Hanning, Hamming, Bartlett, Blackmann 3, 4 or 7, Tuckey or sine).
--FFT Overlaps: Number of FFT overlaps (1, 2, 4, 8 or 16).
--# of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
--Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-
-Graph only parameters:
--Spectral Filter 1: Shape of the first filter.
--Spectral Filter 2: Shape of the second filter.
--Overall Amplitude: The amplitude curve applied on the total duration of the performance.
diff --git a/doc/chapitres/Chapitre9_A/9.5-SpectralGate_A.txt b/doc/chapitres/Chapitre9_A/9.5-SpectralGate_A.txt
deleted file mode 100644
index 1e1d31d..0000000
--- a/doc/chapitres/Chapitre9_A/9.5-SpectralGate_A.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-Spectral noise gate module based on fast-Fourier-transform (FFT) operations.
-
-Sliders under the graph:
--Gate Threshold: value (in decibels) at which the gate becomes active.
--Gate Attenuation: Gain (in decibels) of the gated signal.
--Dry/Wet: Mix between the original signal and the delayed signals.
-
-Dropdown menus and toggles:
--FFT Size: Window size of the FFT (in samples - 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 or 8192).
--FFT Envelope: Envelope type for the FFT (rectangular, Hanning, Hamming, Bartlett, Blackmann 3, 4 or 7, Tuckey or sine).
--FFT Overlaps: Number of FFT overlaps (1, 2, 4, 8 or 16).
--# of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
--Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-
-Graph only parameters:
--Overall Amplitude: The amplitude curve applied on the total duration of the performance.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre9_A/9.6-Vectral_A.txt b/doc/chapitres/Chapitre9_A/9.6-Vectral_A.txt
deleted file mode 100644
index 3ce17bd..0000000
--- a/doc/chapitres/Chapitre9_A/9.6-Vectral_A.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-Vectral module based on fast-Fourier-transform (FFT) operations. **À vérifier avec Olivier!**
-
-Sliders under the graph:
--Gate Threshold: Value (in decibels) at which the gate becomes active.
--Gate Attenuation: Gain (in decibels) of the gated signal.
--Upward Time Factor: Filter coefficient for the increasing bins.
--Downward Time Factor: Filter coefficient for the decreasing bins.
--Phase Time Factor: Phase blur.
--High Freq Damping: High frequencies damping factor.
--Dry/Wet: Mix between the original signal and the delayed signals.
-
-Dropdown menus and toggles:
--FFT Size: Window size of the FFT (in samples - 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 or 8192).
--FFT Envelope: Envelope type for the FFT (rectangular, Hanning, Hamming, Bartlett, Blackmann 3, 4 or 7, Tuckey or sine).
--FFT Overlaps: Number of FFT overlaps (1, 2, 4, 8 or 16).
--# of Polyphony: Number of voices played simultaneously (polyphony); only available at initialization time.
--Polyphony Spread: Pitch variation between polyphony voices (chorus); only available at initialization time.
-
-Graph only parameters:
--Overall Amplitude: The amplitude curve applied on the total duration of the performance.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre9_F/9.1-CrossSynth_F.txt b/doc/chapitres/Chapitre9_F/9.1-CrossSynth_F.txt
deleted file mode 100644
index ae68984..0000000
--- a/doc/chapitres/Chapitre9_F/9.1-CrossSynth_F.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-CrossSynth est un module de synthèse croisée basée sur des opérations de transformée de Fourier rapide (FFT).
-
-Potentiomètres:
--Exciter Pre Filter Freq: Fréquence centrale ou fréquence de coupure du filtre appliqué avant la transformée de Fourier rapide (FFT).
--Exciter Pre Filter Q: Facteur Q du filtre appliqué avant la transformée de Fourier rapide (FFT).
-
-Paramètres fixes:
--Exc Pre Filter Type: Type de filtre utilisé avant la transformée de Fourier rapide (lowpass - passe-bas, highpass - passe-haut, bandpass - passe-bande ou bandstop - réjecteur de bande).
--FFT Size: Taille de la fenêtre de la transformée de Fourier rapide (en échantillons - 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 ou 8192).
--FFT Envelope: Type d'enveloppe utilisée pour la transformée de Fourier rapide (rectangulaire, Hanning, Hamming, Bartlett, Blackmann 3, 4 ou 7, Tuckey ou sinusoïdale).
--FFT Overlaps: Facteur de chevauchement des fenêtres de transformée de Fourier rapide (1, 2, 4, 8 ou 16).
--# of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
--Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-
-Paramètres du graphique:
--Overall Amplitude: Définit l'enveloppe d'amplitude appliquée au son sur sa durée totale en secondes.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre9_F/9.2-Morphing_F.txt b/doc/chapitres/Chapitre9_F/9.2-Morphing_F.txt
deleted file mode 100644
index fc0df39..0000000
--- a/doc/chapitres/Chapitre9_F/9.2-Morphing_F.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-Morphing est un module dont le fonctionnement est basé sur des opérations de transformée de Fourier rapide (FFT) et qui permet la fusion entre deux sons sélectionnées (morphing).
-
-Potentiomètres:
--Morph src1 <-> src 2: Index de fusion entre les deux sources sonores.
--Dry/Wet: Rapport de niveau entre le son original et le son traité par le module.
-
-Paramètres fixes:
--FFT Size: Taille de la fenêtre de la transformée de Fourier rapide (en échantillons - 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 ou 8192).
--FFT Envelope: Type d'enveloppe utilisée pour la transformée de Fourier rapide (rectangulaire, Hanning, Hamming, Bartlett, Blackmann 3, 4 ou 7, Tuckey ou sinusoïdale).
--FFT Overlaps: Facteur de chevauchement des fenêtres de transformée de Fourier rapide (1, 2, 4, 8 ou 16).
--# of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
--Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-
-Paramètres du graphique:
--Overall Amplitude: Définit l'enveloppe d'amplitude appliquée au son sur sa durée totale en secondes.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre9_F/9.3-SpectralDelay_F.txt b/doc/chapitres/Chapitre9_F/9.3-SpectralDelay_F.txt
deleted file mode 100644
index d260242..0000000
--- a/doc/chapitres/Chapitre9_F/9.3-SpectralDelay_F.txt
+++ /dev/null
@@ -1,28 +0,0 @@
-SpectralDelay est un module de délai spectral basé sur des opérations de transformée de Fourier rapide (FFT).
-
-Potentiomètres:
--Bin Regions: Points de séparation dans le registre fréquentiel pour le traitement par FFT.
--Band 1 Delay: Temps de délai appliqué à la première bande de fréquences.
--Band 1 Amp: Niveau d'intensité de la première bande de fréquences délayée.
--Band 2 Delay: Temps de délai appliqué à la deuxième bande de fréquences.
--Band 2 Amp: Niveau d'intensité de la deuxième bande de fréquences délayée.
--Band 3 Delay: Temps de délai appliqué à la troisième bande de fréquences.
--Band 3 Amp: Niveau d'intensité de la troisième bande de fréquences délayée.
--Band 4 Delay: Temps de délai appliqué à la quatrième bande de fréquences.
--Band 4 Amp: Niveau d'intensité de la quatrième bande de fréquences délayée.
--Band 5 Delay: Temps de délai appliqué à la cinquième bande de fréquences.
--Band 5 Amp: Niveau d'intensité de la cinquième bande de fréquences délayée.
--Band 6 Delay: Temps de délai appliqué à la sixième bande de fréquences.
--Band 6 Amp: Niveau d'intensité de la sixième bande de fréquences délayée.
--Feedback: Niveau de réinjection du signal dans le module.
--Dry/Wet: Rapport de niveau entre le son original et le son traité par le module.
-
-Paramètres fixes:
--FFT Size: Taille de la fenêtre de la transformée de Fourier rapide (en échantillons - 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 ou 8192).
--FFT Envelope: Type d'enveloppe utilisée pour la transformée de Fourier rapide (rectangulaire, Hanning, Hamming, Bartlett, Blackmann 3, 4 ou 7, Tuckey ou sinusoïdale).
--FFT Overlaps: Facteur de chevauchement des fenêtres de transformée de Fourier rapide (1, 2, 4, 8 ou 16).
--# of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
--Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-
-Paramètres du graphique:
--Overall Amplitude: Définit l'enveloppe d'amplitude appliquée au son sur sa durée totale en secondes.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre9_F/9.4-SpectralFilter_F.txt b/doc/chapitres/Chapitre9_F/9.4-SpectralFilter_F.txt
deleted file mode 100644
index a10251b..0000000
--- a/doc/chapitres/Chapitre9_F/9.4-SpectralFilter_F.txt
+++ /dev/null
@@ -1,18 +0,0 @@
-SpectralFilter est un module de filtrage spectral basé sur des opérations de transformée de Fourier rapide (FFT).
-
-Potentiomètres:
--Filter interpolation: Index de morphing entre les deux filtres du module.
--Dry/Wet: Rapport de niveau entre le son original et le son traité par le module.
-
-Paramètres fixes:
--Filter Range: Limites du filtre (up to Nyquist, up to Nyquist/2, up to Nyquist/4 ou up to Nyquist/8 - jusqu'à la fréquence de Nyquist, ou jusqu'à la moitié, jusqu'au quart ou jusqu'au huitième de la fréquence de Nyquist).
--FFT Size: Taille de la fenêtre de la transformée de Fourier rapide (en échantillons - 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 ou 8192).
--FFT Envelope: Type d'enveloppe utilisée pour la transformée de Fourier rapide (rectangulaire, Hanning, Hamming, Bartlett, Blackmann 3, 4 ou 7, Tuckey ou sinusoïdale).
--FFT Overlaps: Facteur de chevauchement des fenêtres de transformée de Fourier rapide (1, 2, 4, 8 ou 16).
--# of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
--Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-
-Paramètres du graphique:
--Spectral Filter 1: Forme donnée au premier filtre spectral.
--Spectral Filter 2: Forme donnée au deuxième filtre spectral.
--Overall Amplitude: Définit l'enveloppe d'amplitude appliquée au son sur sa durée totale en secondes.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre9_F/9.5-SpectralGate_F.txt b/doc/chapitres/Chapitre9_F/9.5-SpectralGate_F.txt
deleted file mode 100644
index d4bb260..0000000
--- a/doc/chapitres/Chapitre9_F/9.5-SpectralGate_F.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-SpectralGate est un module de porte de bruit (noise gate) basé sur des opérations de transformée de Fourier rapide (FFT).
-
-Potentiomètres:
--Gate Threshold: Seuil (en décibels) à partir duquel la porte de bruit s'active.
--Gate Attenuation: Niveau d'intensité (en décibels) du signal diffusé par la porte de bruit.
--Dry/Wet: Rapport de niveau entre le son original et le son traité par le module.
-
-Paramètres fixes:
--FFT Size: Taille de la fenêtre de la transformée de Fourier rapide (en échantillons - 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 ou 8192).
--FFT Envelope: Type d'enveloppe utilisée pour la transformée de Fourier rapide (rectangulaire, Hanning, Hamming, Bartlett, Blackmann 3, 4 ou 7, Tuckey ou sinusoïdale).
--FFT Overlaps: Facteur de chevauchement des fenêtres de transformée de Fourier rapide (1, 2, 4, 8 ou 16).
--# of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
--Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-
-Paramètres du graphique:
--Overall Amplitude: Définit l'enveloppe d'amplitude appliquée au son sur sa durée totale en secondes.
\ No newline at end of file
diff --git a/doc/chapitres/Chapitre9_F/9.6-Vectral_F.txt b/doc/chapitres/Chapitre9_F/9.6-Vectral_F.txt
deleted file mode 100644
index d5e46a3..0000000
--- a/doc/chapitres/Chapitre9_F/9.6-Vectral_F.txt
+++ /dev/null
@@ -1,20 +0,0 @@
-Module de traitement vectral basé sur des opérations de transformée de Fourier rapide (FFT). **à vérifier avec Olivier!**
-
-Potentiomètres:
--Gate Threshold: Seuil (en décibels) à partir duquel la porte de bruit s'active.
--Gate Attenuation: Niveau (en décibels) du signal diffusé par la porte de bruit.
--Upward Time Factor: Coefficient de filtrage pour les paniers de fréquence ascendants.
--Downward Time Factor: Coefficient de filtrage pour les paniers de fréquence descendants.
--Phase Time Factor: Coefficient de filtrage créant un effet de flou obtenu par manipulation de la phase du signal.
--High Freq Damping: Facteur d'atténuation des hautes fréquences.
--Dry/Wet: Rapport de niveau entre le son original et le son traité par le module.
-
-Paramètres fixes:
--FFT Size: Taille de la fenêtre de la transformée de Fourier rapide (en échantillons - 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 ou 8192).
--FFT Envelope: Type d'enveloppe utilisée pour la transformée de Fourier rapide (rectangulaire, Hanning, Hamming, Bartlett, Blackmann 3, 4 ou 7, Tuckey ou sinusoïdale).
--FFT Overlaps: Facteur de chevauchement des fenêtres de transformée de Fourier rapide (1, 2, 4, 8 ou 16).
--# of Polyphony: Nombre de voix de polyphonie jouées simultanément; paramètre ajustable à l'initialisation du module seulement. 
--Polyphony spread: Variation de hauteur entre les différentes voix de polyphonie (chorus); paramètre ajustable seulement à l'initialisation du module.
-
-Paramètres du graphique:
--Overall Amplitude: Définit l'enveloppe d'amplitude appliquée au son sur sa durée totale en secondes.
\ No newline at end of file
diff --git a/doc/chapitres/ListeParametresFixes.txt b/doc/chapitres/ListeParametresFixes.txt
deleted file mode 100644
index 2d0c73b..0000000
--- a/doc/chapitres/ListeParametresFixes.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-Paramètres fixes
-
--Degrade: Filter type, Clip type, # of polyphony, polyphony spread
--Distortion: Pre filter type, Post filter type, # of polyphony, polyphony spread
--DynamicsProcessor: Compression Ratio, # of polyphony, polyphony spread
--Gate: # of polyphony, polyphony spread
--WaveShaper: Filter type, # of polyphony, polyphony spread
-
--AMFilter: Filter type, Mod type, # of polyphony, polyphony spread
--BandBrickWall: Label type, # of polyphony, polyphony spread
--BrickWall: Label type, # of polyphony, polyphony spread
--FMFilter: Filter type, Mod type, # of polyphony, polyphony spread
--MaskFilter: Number of stages, # of polyphony, polyphony spread
--ParamEQ: EQ 1 à 4 type, # of polyphony, polyphony spread
--Phaser: Number of stages, # of polyphony, polyphony spread
--Vocoder: # of polyphony, polyphony spread
-
--MultiBandBeatMaker: # of polyphony, polyphony spread
--MultiBandDelay: # of polyphony, polyphony spread
--MultiBandDisto: # of polyphony, polyphony spread
--MultiBandFreqShift: # of polyphony, polyphony spread
--MultiBandGate: # of polyphony, polyphony spread
--MultiBandHarmonizer: Win size, # of polyphony, polyphony spread
--MultiBandReverb: # of polyphony, polyphony spread
-
--ChordMaker: Win size, Voice 1 à 5, # of polyphony, polyphony spread
--FreqShift: # of polyphony, polyphony spread
--Harmonizer: Win size voice 1, win size voice 2, # of polyphony, polyphony spread
--LooperMod: AM LFO type, AM On/Off, FM LFO type, FM On/Off, # of polyphony, polyphony spread
--PitchLooper: Voice 1 à 5, # of polyphony, polyphony spread
-
--Convolve: Size, # of polyphony, polyphony spread
--DetunedResonators: Voice 1 à 8, # of polyphony, polyphony spread
--Resonators: Voice 1 à 8, # of polyphony, polyphony spread
--WaveGuideReverb: # of polyphony, polyphony spread
--WGuideBank: Filter type, # of polyphony, polyphony spread
-
--CrossSynth: Exc Pre filter type, FFT size, FFt envelope, FFT overlaps, # of polyphony, polyphony spread
--Morphing: FFT size, FFT Envelope, FFT overlaps, # of polyphony, polyphony spread
--SpectralDelay: FFT size, FFT envelope, FFT overlaps, # of polyphony, polyphony spread
--SpectralFilter: Filter range, FFT size, FFT envelope, FFT overlaps, # of polyphony, polyphony spread
--SpectralGate: FFT size, FFT envelope, FFT overlaps, # of polyphony, polyphony spread
--Vectral: FFT size, FFT envelope, FFT overlaps, # of polyphony, polyphony spread
-
--AdditiveSynth: # of partials, wave shape, custom wave, # of polyphony, polyphony spread
--CrossModulation: C FreqMode wave, C FreqMode On/Off, M RatioMod wave, M RatioMod On/Off, C IndexMod wave, C IndexMod On/Off, M IndexMod wave, M IndexMod On/Off, # of polyphony, polyphony spread
--Pulsar: Wave shpae, window type, custom wave, # of polyphony, polyphony spread
--StochGrains: Synth type, pitch scaling, pitch algorithm, speed algorithm, duration algorithm, max num of grains
--StochGrains2: Pitch scaling, pitch algorithm, speed algorithm, duration algorithm, max num of grains
--WaveTerrain: X wave type, Y wave type, Terrain size, # of polyphony, polyphony spread
-
--4Delays: delay routing, filter type, # of polyphony, polyphony spread
--BeatMaker: # of polyphony, polyphony spread
--DelayMod: # of polyphony, polyphony spread
--Granulator: discreet transpo # of polyphony, polyphony spread
\ No newline at end of file
diff --git a/doc/chapitres/ListePresets.txt b/doc/chapitres/ListePresets.txt
deleted file mode 100644
index d80f876..0000000
--- a/doc/chapitres/ListePresets.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-Presets
-
--Degrade: Filter type, Clip type, # of polyphony, polyphony spread
--Distortion: Pre filter type, Post filter type, # of polyphony, polyphony spread
--DynamicsProcessor: Compression Ratio, # of polyphony, polyphony spread
--Gate: # of polyphony, polyphony spread
--WaveShaper: Filter type, # of polyphony, polyphony spread
-
--AMFilter: Filter type, Mod type, # of polyphony, polyphony spread
--BandBrickWall: Label type, # of polyphony, polyphony spread
--BrickWall: Label type, # of polyphony, polyphony spread
--FMFilter: Filter type, Mod type, # of polyphony, polyphony spread
--MaskFilter: Number of stages, # of polyphony, polyphony spread
--ParamEQ: EQ 1 à 4 type, # of polyphony, polyphony spread
--Phaser: Number of stages, # of polyphony, polyphony spread
--Vocoder: # of polyphony, polyphony spread
-
--MultiBandBeatMaker: # of polyphony, polyphony spread
--MultiBandDelay: # of polyphony, polyphony spread
--MultiBandDisto: # of polyphony, polyphony spread
--MultiBandFreqShift: # of polyphony, polyphony spread
--MultiBandGate: # of polyphony, polyphony spread
--MultiBandHarmonizer: Win size, # of polyphony, polyphony spread
--MultiBandReverb: # of polyphony, polyphony spread
-
--ChordMaker: Win size, Voice 1 à 5, # of polyphony, polyphony spread
--FreqShift: # of polyphony, polyphony spread
--Harmonizer: Win size voice 1, win size voice 2, # of polyphony, polyphony spread
--LooperMod: AM LFO type, AM On/Off, FM LFO type, FM On/Off, # of polyphony, polyphony spread
--PitchLooper: Voice 1 à 5, # of polyphony, polyphony spread
-
--Convolve: Size, # of polyphony, polyphony spread
--DetunedResonators: Voice 1 à 8, # of polyphony, polyphony spread
--Resonators: Voice 1 à 8, # of polyphony, polyphony spread
--WaveGuideReverb: # of polyphony, polyphony spread
--WGuideBank: Filter type, # of polyphony, polyphony spread
-
--CrossSynth: Exc Pre filter type, FFT size, FFt envelope, FFT overlaps, # of polyphony, polyphony spread
--Morphing: FFT size, FFT Envelope, FFT overlaps, # of polyphony, polyphony spread
--SpectralDelay: FFT size, FFT envelope, FFT overlaps, # of polyphony, polyphony spread
--SpectralFilter: Filter range, FFT size, FFT envelope, FFT overlaps, # of polyphony, polyphony spread
--SpectralGate: FFT size, FFT envelope, FFT overlaps, # of polyphony, polyphony spread
--Vectral: FFT size, FFT envelope, FFT overlaps, # of polyphony, polyphony spread
-
--AdditiveSynth: # of partials, wave shape, custom wave, # of polyphony, polyphony spread
--CrossModulation: C FreqMode wave, C FreqMode On/Off, M RatioMod wave, M RatioMod On/Off, C IndexMod wave, C IndexMod On/Off, M IndexMod wave, M IndexMod On/Off, # of polyphony, polyphony spread
--Pulsar: Wave shpae, window type, custom wave, # of polyphony, polyphony spread
--StochGrains: Synth type, pitch scaling, pitch algorithm, speed algorithm, duration algorithm, max num of grains
--StochGrains2: Pitch scaling, pitch algorithm, speed algorithm, duration algorithm, max num of grains
--WaveTerrain: X wave type, Y wave type, Terrain size, # of polyphony, polyphony spread
-
--4Delays: delay routing, filter type, # of polyphony, polyphony spread
--BeatMaker: # of polyphony, polyphony spread
--DelayMod: # of polyphony, polyphony spread
--Granulator: discreet transpo # of polyphony, polyphony spread
\ No newline at end of file
diff --git a/doc/chapitres/ListeSliders.txt b/doc/chapitres/ListeSliders.txt
deleted file mode 100644
index b1645f1..0000000
--- a/doc/chapitres/ListeSliders.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-Sliders:
-
--Degrade: Bit Depth, sampling rate ratio, wrap threshold, filter freq, filter Q, dry/wet
--Distortion: Pre filter freq, pre filter Q, drive, post filter freq, post filter Q
--DynamicsProcessor: Input Gain, Compression Thresh, COmpression Rise Time, compression fall time, compression knee, Gate thresh, gate slope, output gain
--Gate: threshold, rise time, fall time
--WaveShaper: filter freq, filter Q
-
--AMFilter: filter freq, resonance, mod depth, mod freq, dry/wet
--BandBrickWall: cutoff frequency, bandwidth frequency, filter order
--BrickWall: cutoff frequency, filter order
--FMFilter: filter freq, resonance, mod depth, mod freq, dry/wet
--MaskFilter: filter limits
--ParamEQ: freq 1, freq 1 Q, freq 1 boost/cut, même chose pour freq 2 à 4.
--Phaser: center freq, Q factor, Notch spread, feedback, dry/wet
--Vocoder: base frequency, frequency spread, Q factor, time response, gain, num of bands
-
--MultiBandBeatMaker: Frequency splitter, # of taps, tempo, tap length, beat 1 à 3: index, distribution, gain; global seed.
--MultiBandDelay: frequency splitter, dry/wet, delay band 1, feedback band 1, gain band 1, delay band 3, feedback band 3, gain band 3.
--MultiBandDisto: Frequency splitter, band 1 à 4: drive, slope, gain
--MultiBandFreqShift: frequency splitter, band 1 à 4: freq shift, gain; dry/wet
--MultiBandGate: frequency splitter, band 1 à 4: threshold, gain; rise time, fall time
--MultiBandHarmonizer: frequency splitter, band 1 à 4: transpo, feedback, gain; dry/wet
--MultiBandReverb: frequency splitter, band 1 à 4: reverb, cutoff, gain; dry/wet
-
--ChordMaker: Voice 1 à 5: transpo, gain; feedback, dry/wet
--FreqShift: Frequency shift, dry/wet
--Harmonizer: transpo voice 1, transpo voice 2, feedback, dry/wet
--LooperMod: AM range, AM speed, FM range, FM speed, index range, dry/wet
--PitchLooper: Voice 1 à 5: transpo, gain
-
--Convolve: dry/wet
--DetunedResonators: pitch offset, amp random amp, amp random speed, delay random amp, delay random speed, detune factor, pitch voice 1 à 8, feedback, dry/wet
--Resonators: pitch offset, amp random amp, amp random speed, delay random amp, delay random speed, feedback, dry/wet, pitch voice 1 à 8
--WaveGuideReverb: room size, cutoff frequency, dry/wet
--WGuideBank: base freq, WG expansion, WG feedback, WG filter, amp deviation amp, amp deviation speed, freq deviation amp, freq deviation speed, dry/wet
-
--CrossSynth: exciter pre filter freq, exciter pre filter Q, dry/wet
--Morphing: morph src1 <-> src2, dry/wet
--SpectralDelay: bin regions, band 1 à 6: delay, amp; feedback, dry/wet
--SpectralFilter: filters interpolation, dry/wet
--SpectralGate: gate threshold, gate attenuation
--Vectral: gate threshold, gate attenuation, upward time factor, downward time factor, phase time factor, high freq damping, dry/wet
-
--AdditiveSynth: base frequency, partials spread, partials freq rand amp, partials freq rand speed, partials amp rand amp, partials amp rand speed, amplitude factor, chorus depth, chorus feedback, chorus dry/wet.
--CrossModulation: carrier frequency, C FreqMod Range, C FreqMod speed, modulator ratio, M RatioMod range, M RatioMod speed, carrier index, C IndexMod Range, C IndexMod speed, modulator index, M IndexMode range, M IndexMode speed.
--Pulsar: base frequency, pulsar width, detune factor, detune speed
--StochGrains: pitch offset, pitch range, speed range, duration range, brightness range, detune range, intensity range, pan range, density, global seed
--StochGrains2: pitch offset, pitch range, speed range, duration range, sample start range, intensity range, pan range, density, global seed
--WaveTerrain: X Frequency, Y Frequency, X & Y sharpness, terrain frequency, terrain deviation.
-
--4Delays: delay 1 et 2: right, left, feedback, mix; jitter amp, jitter speed, filter freq, filter Q, dry/wet
--BeatMaker:# of taps, tempo, beat 1 à 3: tap length, index, distribution, gain; global seed.
--DelayMod: delay left, delay right, AmpModDepth Left, AmpModDepth right, AmpModFreq left, AmpModFreq right, DelayModDepth left, DelayModDepth right, DelayModFreq left, DelayModFreq right, feedback, dry/wet
--Granulator: transpose, grain position, position random, pitch random, grain duration, # of grains.
\ No newline at end of file
diff --git a/doc/chapitres/template.log b/doc/chapitres/template.log
deleted file mode 100644
index 45bdbda..0000000
--- a/doc/chapitres/template.log
+++ /dev/null
@@ -1,1170 +0,0 @@
-This is pdfTeX, Version 3.1415926-1.40.11 (TeX Live 2010) (format=pdflatex 2010.7.21)  1 AUG 2012 17:06
-entering extended mode
- restricted \write18 enabled.
- file:line:error style messages enabled.
- %&-line parsing enabled.
-**template.tex
-(./template.tex
-LaTeX2e <2009/09/24>
-Babel <v3.8l> and hyphenation patterns for english, dumylang, nohyphenation, ge
-rman-x-2009-06-19, ngerman-x-2009-06-19, ancientgreek, ibycus, arabic, armenian
-, basque, bulgarian, catalan, pinyin, coptic, croatian, czech, danish, dutch, u
-kenglish, usenglishmax, esperanto, estonian, farsi, finnish, french, galician, 
-german, ngerman, swissgerman, monogreek, greek, hungarian, icelandic, assamese,
- bengali, gujarati, hindi, kannada, malayalam, marathi, oriya, panjabi, tamil, 
-telugu, indonesian, interlingua, irish, italian, kurmanji, lao, latin, latvian,
- lithuanian, mongolian, mongolianlmc, bokmal, nynorsk, polish, portuguese, roma
-nian, russian, sanskrit, serbian, slovak, slovenian, spanish, swedish, turkish,
- turkmen, ukrainian, uppersorbian, welsh, loaded.
-./template.tex:1: Undefined control sequence.
-l.1 \section
-            {Hiérarchie}
-The control sequence at the end of the top line
-of your error message was never \def'ed. If you have
-misspelled it (e.g., `\hobx'), type `I' and the correct
-spelling (e.g., `I\hbox'). Otherwise just continue,
-and I'll forget about whatever was undefined.
-
-
-./template.tex:1: LaTeX Error: Missing \begin{document}.
-
-See the LaTeX manual or LaTeX Companion for explanation.
-Type  H <return>  for immediate help.
- ...                                              
-                                                  
-l.1 \section{H
-              iérarchie}
-You're in trouble here.  Try typing  <return>  to proceed.
-If that doesn't work, type  X <return>  to quit.
-
-Missing character: There is no H in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no à in font nullfont!
-Missing character: There is no © in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no h in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no e in font nullfont!
-
-Overfull \hbox (20.0pt too wide) in paragraph at lines 1--2
-[] 
- []
-
-./template.tex:3: Undefined control sequence.
-l.3 \subsection
-               {Chapitres}
-The control sequence at the end of the top line
-of your error message was never \def'ed. If you have
-misspelled it (e.g., `\hobx'), type `I' and the correct
-spelling (e.g., `I\hbox'). Otherwise just continue,
-and I'll forget about whatever was undefined.
-
-
-./template.tex:3: LaTeX Error: Missing \begin{document}.
-
-See the LaTeX manual or LaTeX Companion for explanation.
-Type  H <return>  for immediate help.
- ...                                              
-                                                  
-l.3 \subsection{C
-                 hapitres}
-You're in trouble here.  Try typing  <return>  to proceed.
-If that doesn't work, type  X <return>  to quit.
-
-Missing character: There is no C in font nullfont!
-Missing character: There is no h in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no s in font nullfont!
-
-Overfull \hbox (20.0pt too wide) in paragraph at lines 3--4
-[] 
- []
-
-
-./template.tex:5: LaTeX Error: Missing \begin{document}.
-
-See the LaTeX manual or LaTeX Companion for explanation.
-Type  H <return>  for immediate help.
- ...                                              
-                                                  
-l.5 C
-     haque chapitre (chacun couvrant une section de l'interface ou une secti...
-
-You're in trouble here.  Try typing  <return>  to proceed.
-If that doesn't work, type  X <return>  to quit.
-
-Missing character: There is no C in font nullfont!
-Missing character: There is no h in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no q in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no h in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no ( in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no h in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no v in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no ' in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no f in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no ) in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no à in font nullfont!
-Missing character: There is no ª in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no à in font nullfont!
-Missing character: There is no © in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no f in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no h in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no à in font nullfont!
-Missing character: There is no © in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no à in font nullfont!
-Missing character: There is no © in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no " in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no h in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no " in font nullfont!
-Missing character: There is no . in font nullfont!
-Missing character: There is no L in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no h in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no f in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no h in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no , in font nullfont!
-Missing character: There is no " in font nullfont!
-Missing character: There is no C in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no 5 in font nullfont!
-Missing character: There is no m in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no . in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no x in font nullfont!
-Missing character: There is no " in font nullfont!
-Missing character: There is no . in font nullfont!
-Missing character: There is no E in font nullfont!
-Missing character: There is no x in font nullfont!
-Missing character: There is no . in font nullfont!
-Missing character: There is no : in font nullfont!
-
-Overfull \hbox (20.0pt too wide) in paragraph at lines 5--7
-[]
- []
-
-
-./template.tex:8: LaTeX Error: Missing \begin{document}.
-
-See the LaTeX manual or LaTeX Companion for explanation.
-Type  H <return>  for immediate help.
- ...                                              
-                                                  
-l.8 \begin{verbatim}
-                    
-You're in trouble here.  Try typing  <return>  to proceed.
-If that doesn't work, type  X <return>  to quit.
-
-
-Overfull \hbox (20.0pt too wide) in paragraph at lines 8--8
-[] 
- []
-
-
-Overfull \hbox (94.49918pt too wide) in paragraph at lines 11--11
-[]\OT1/cmtt/m/n/10 \chapter{Template}[] 
- []
-
-
-Overfull \hbox (136.49881pt too wide) in paragraph at lines 11--11
-[]\OT1/cmtt/m/n/10 \input{chapitres/template}[] 
- []
-
-Missing character: There is no L in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no g in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no : in font nullfont!
-
-Overfull \hbox (20.0pt too wide) in paragraph at lines 16--16
-[] 
- []
-
-
-Overfull \hbox (78.74931pt too wide) in paragraph at lines 20--20
-[]\OT1/cmtt/m/n/10 \section{titre}[] 
- []
-
-
-Overfull \hbox (94.49918pt too wide) in paragraph at lines 20--20
-[]\OT1/cmtt/m/n/10 \subsection{titre}[] 
- []
-
-
-Overfull \hbox (110.24904pt too wide) in paragraph at lines 20--20
-[]\OT1/cmtt/m/n/10 \subsubsection{titre}[] 
- []
-
-Missing character: There is no s in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no à in font nullfont!
-Missing character: There is no © in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no à in font nullfont!
-Missing character: There is no © in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no m in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no à in font nullfont!
-Missing character: There is no © in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no b in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no m in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no à in font nullfont!
-Missing character: There is no ¨ in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no . in font nullfont!
-./template.tex:25: Undefined control sequence.
-l.25 \subsection
-                {Images}
-The control sequence at the end of the top line
-of your error message was never \def'ed. If you have
-misspelled it (e.g., `\hobx'), type `I' and the correct
-spelling (e.g., `I\hbox'). Otherwise just continue,
-and I'll forget about whatever was undefined.
-
-Missing character: There is no I in font nullfont!
-Missing character: There is no m in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no g in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no s in font nullfont!
-
-Overfull \hbox (20.0pt too wide) in paragraph at lines 25--26
-[] 
- []
-
-Missing character: There is no L in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no m in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no g in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no , in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no f in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no m in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no P in font nullfont!
-Missing character: There is no D in font nullfont!
-Missing character: There is no F in font nullfont!
-Missing character: There is no , in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no v in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no à in font nullfont!
-Missing character: There is no © in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no , in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no m in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no h in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no , in font nullfont!
-Missing character: There is no à in font nullfont!
-Missing character: There is no   in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no ' in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no à in font nullfont!
-Missing character: There is no © in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no " in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no m in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no g in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no " in font nullfont!
-Missing character: There is no . in font nullfont!
-Missing character: There is no U in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no m in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no g in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no m in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no , in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no à in font nullfont!
-Missing character: There is no © in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no , in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no à in font nullfont!
-Missing character: There is no © in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no à in font nullfont!
-Missing character: There is no © in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no à in font nullfont!
-Missing character: There is no   in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no ' in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no m in font nullfont!
-Missing character: There is no m in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no " in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no I in font nullfont!
-Missing character: There is no m in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no g in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no " in font nullfont!
-Missing character: There is no , in font nullfont!
-Missing character: There is no q in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no 3 in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no m in font nullfont!
-Missing character: There is no à in font nullfont!
-Missing character: There is no ¨ in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no , in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no : in font nullfont!
-
-Overfull \hbox (20.0pt too wide) in paragraph at lines 27--29
-[]
- []
-
-
-Overfull \hbox (20.0pt too wide) in paragraph at lines 30--30
-[] 
- []
-
-Missing character: There is no L in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no ' in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no m in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no g in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no . in font nullfont!
-Missing character: There is no L in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no h in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no f in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no h in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no , in font nullfont!
-Missing character: There is no à in font nullfont!
-Missing character: There is no   in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no " in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no m in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no g in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no " in font nullfont!
-Missing character: There is no . in font nullfont!
-Missing character: There is no L in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no à in font nullfont!
-Missing character: There is no © in font nullfont!
-Missing character: There is no g in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no à in font nullfont!
-Missing character: There is no   in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no f in font nullfont!
-Missing character: There is no f in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no h in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no . in font nullfont!
-Missing character: There is no E in font nullfont!
-Missing character: There is no x in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no m in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no ' in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no m in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no g in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no à in font nullfont!
-Missing character: There is no © in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no à in font nullfont!
-Missing character: There is no © in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no à in font nullfont!
-Missing character: There is no   in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no ' in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no g in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no v in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no : in font nullfont!
-
-Overfull \hbox (20.0pt too wide) in paragraph at lines 39--39
-[] 
- []
-
-
-Overfull \hbox (388.49661pt too wide) in paragraph at lines 41--41
-[]\OT1/cmtt/m/n/10 \insertImage{3}{template/preferences}{Exemple d'insertion d'
-image simple.}[] 
- []
-
-./template.tex:43: Undefined control sequence.
-l.43 \insertImage
-                 {3}{template/preferences}{Exemple d'insertion d'image simple.}
-The control sequence at the end of the top line
-of your error message was never \def'ed. If you have
-misspelled it (e.g., `\hobx'), type `I' and the correct
-spelling (e.g., `I\hbox'). Otherwise just continue,
-and I'll forget about whatever was undefined.
-
-Missing character: There is no 3 in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no m in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no / in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no f in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no E in font nullfont!
-Missing character: There is no x in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no m in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no ' in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no ' in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no m in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no g in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no m in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no . in font nullfont!
-
-Overfull \hbox (20.0pt too wide) in paragraph at lines 43--44
-[]
- []
-
-./template.tex:45: Undefined control sequence.
-l.45 \insertImageLeft
-                     {2.5}{template/postprocessing}{
-The control sequence at the end of the top line
-of your error message was never \def'ed. If you have
-misspelled it (e.g., `\hobx'), type `I' and the correct
-spelling (e.g., `I\hbox'). Otherwise just continue,
-and I'll forget about whatever was undefined.
-
-Missing character: There is no 2 in font nullfont!
-Missing character: There is no . in font nullfont!
-Missing character: There is no 5 in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no m in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no / in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no g in font nullfont!
-Missing character: There is no L in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no P in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no - in font nullfont!
-Missing character: There is no P in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no g in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no m in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no ' in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no q in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no f in font nullfont!
-Missing character: There is no f in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no à in font nullfont!
-Missing character: There is no   in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no m in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no m in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no . in font nullfont!
-
-Overfull \hbox (20.0pt too wide) in paragraph at lines 45--53
-[]
- []
-
-./template.tex:54: Undefined control sequence.
-l.54 \insertImageRight
-                      {2.5}{template/postprocessing}{
-The control sequence at the end of the top line
-of your error message was never \def'ed. If you have
-misspelled it (e.g., `\hobx'), type `I' and the correct
-spelling (e.g., `I\hbox'). Otherwise just continue,
-and I'll forget about whatever was undefined.
-
-Missing character: There is no 2 in font nullfont!
-Missing character: There is no . in font nullfont!
-Missing character: There is no 5 in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no m in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no / in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no g in font nullfont!
-Missing character: There is no L in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no P in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no - in font nullfont!
-Missing character: There is no P in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no g in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no m in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no ' in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no q in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no f in font nullfont!
-Missing character: There is no f in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no à in font nullfont!
-Missing character: There is no   in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no s in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no m in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no i in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no p in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no m in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no d in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no l in font nullfont!
-Missing character: There is no e in font nullfont!
-Missing character: There is no c in font nullfont!
-Missing character: There is no o in font nullfont!
-Missing character: There is no u in font nullfont!
-Missing character: There is no r in font nullfont!
-Missing character: There is no a in font nullfont!
-Missing character: There is no n in font nullfont!
-Missing character: There is no t in font nullfont!
-Missing character: There is no . in font nullfont!
-)
-! Emergency stop.
-<*> template.tex
-                
-*** (job aborted, no legal \end found)
-
- 
-Here is how much of TeX's memory you used:
- 11 strings out of 493747
- 186 string characters out of 3143546
- 51070 words of memory out of 3000000
- 3402 multiletter control sequences out of 15000+200000
- 3808 words of font info for 15 fonts, out of 3000000 for 9000
- 714 hyphenation exceptions out of 8191
- 18i,1n,14p,174b,156s stack positions out of 5000i,500n,10000p,200000b,50000s
-!  ==> Fatal error occurred, no output PDF file produced!
diff --git a/doc/chapitres/template.tex b/doc/chapitres/template.tex
deleted file mode 100644
index f875a19..0000000
--- a/doc/chapitres/template.tex
+++ /dev/null
@@ -1,61 +0,0 @@
-\section{Hiérarchie}
-
-\subsection{Chapitres}
-
-Chaque chapitre (chacun couvrant une section de l'interface ou une section de tutoriel) doit être écrit dans un fichier séparé dans le dossier "chapitres".
-Les chapitres sont inclus dans le fichier principal, "Cecilia5\_manuel.tex". Ex.:
-
-\begin{verbatim}
-\chapter{Template}
-\input{chapitres/template}
-\end{verbatim}
-
-\noindent
-Les tags :
-
-\begin{verbatim}
-\section{titre}
-\subsection{titre}
-\subsubsection{titre}
-\end{verbatim}
-
-\noindent
-seront utilisés pour délimiter les sections et créer la table des matières.
-
-\subsection{Images}
-
-Les images, en format PDF, doivent résider dans un dossier, portant le nom du chapitre, à l'intérieur du dossier "images".
-Une image simple, centrée, est insérée à l'aide de la commande "insertImage", qui prend 3 paramètres, soit:
-
-\begin{enumerate}
-    \item La taille de l'image est pouce.
-    \item Le path du fichier, à partir du dossier "images".
-    \item La légende à afficher.
-\end{enumerate}
-
-\noindent
-Exemple d'image insérée à l'aide de la ligne suivante:
-
-\begin{verbatim}
-\insertImage{3}{template/preferences}{Exemple d'insertion d'image simple.}
-\end{verbatim}
-
-\insertImage{3}{template/preferences}{Exemple d'insertion d'image simple.}
-
-\insertImageLeft{2.5}{template/postprocessing}{
-La section Post-Processing permet d'appliquer des effets à la suite du traitement produit par le module courant.
-\bigskip
-\bigskip
-\bigskip
-\bigskip
-\bigskip
-}
-
-\insertImageRight{2.5}{template/postprocessing}{
-La section Post-Processing permet d'appliquer des effets à la suite du traitement produit par le module courant.
-\bigskip
-\bigskip
-\bigskip
-\bigskip
-\bigskip
-}
diff --git a/doc/images/Chapitre2/1-Interface-graphique.png b/doc/images/Chapitre2/1-Interface-graphique.png
deleted file mode 100644
index b9970b0..0000000
Binary files a/doc/images/Chapitre2/1-Interface-graphique.png and /dev/null differ
diff --git a/doc/images/Chapitre2/2a-Play.png b/doc/images/Chapitre2/2a-Play.png
deleted file mode 100644
index e15b093..0000000
Binary files a/doc/images/Chapitre2/2a-Play.png and /dev/null differ
diff --git a/doc/images/Chapitre2/2b-Record.png b/doc/images/Chapitre2/2b-Record.png
deleted file mode 100644
index fd7921b..0000000
Binary files a/doc/images/Chapitre2/2b-Record.png and /dev/null differ
diff --git a/doc/images/Chapitre2/6-Icones/1-Haut-parleur.png b/doc/images/Chapitre2/6-Icones/1-Haut-parleur.png
deleted file mode 100644
index 3ea54ee..0000000
Binary files a/doc/images/Chapitre2/6-Icones/1-Haut-parleur.png and /dev/null differ
diff --git a/doc/images/Chapitre2/6-Icones/2-Ciseaux.png b/doc/images/Chapitre2/6-Icones/2-Ciseaux.png
deleted file mode 100644
index d4bf97a..0000000
Binary files a/doc/images/Chapitre2/6-Icones/2-Ciseaux.png and /dev/null differ
diff --git a/doc/images/Chapitre2/6-Icones/3-Fleches.png b/doc/images/Chapitre2/6-Icones/3-Fleches.png
deleted file mode 100644
index 62c2666..0000000
Binary files a/doc/images/Chapitre2/6-Icones/3-Fleches.png and /dev/null differ
diff --git a/doc/images/Chapitre2/6-Icones/5-Triangle.png b/doc/images/Chapitre2/6-Icones/5-Triangle.png
deleted file mode 100644
index 4ef4249..0000000
Binary files a/doc/images/Chapitre2/6-Icones/5-Triangle.png and /dev/null differ
diff --git a/doc/images/template/postprocessing.pdf b/doc/images/template/postprocessing.pdf
deleted file mode 100644
index ac3239a..0000000
Binary files a/doc/images/template/postprocessing.pdf and /dev/null differ
diff --git a/doc/images/template/preferences.pdf b/doc/images/template/preferences.pdf
deleted file mode 100644
index 1146136..0000000
Binary files a/doc/images/template/preferences.pdf and /dev/null differ
diff --git a/scripts/builder_OSX.sh b/scripts/builder_OSX.sh
index 3462b37..f8cf0f1 100755
--- a/scripts/builder_OSX.sh
+++ b/scripts/builder_OSX.sh
@@ -1,7 +1,7 @@
 rm -rf build dist
 
-export DMG_DIR="Cecilia 5.0.8"
-export DMG_NAME="Cecilia_5.0.8.dmg"
+export DMG_DIR="Cecilia5 5.0.9"
+export DMG_NAME="Cecilia5_5.0.9.dmg"
 
 if [ -f setup.py ]; then
     mv setup.py setup_back.py;
diff --git a/scripts/info.plist b/scripts/info.plist
index 6c7c9fd..3f44a4a 100644
--- a/scripts/info.plist
+++ b/scripts/info.plist
@@ -38,11 +38,11 @@
 	<key>CFBundlePackageType</key>
 	<string>APPL</string>
 	<key>CFBundleShortVersionString</key>
-	<string>5.0.8</string>
+	<string>5.0.9</string>
 	<key>CFBundleSignature</key>
 	<string>????</string>
 	<key>CFBundleVersion</key>
-	<string>5.0.8</string>
+	<string>5.0.9</string>
 	<key>LSHasLocalizedDisplayName</key>
 	<false/>
 	<key>NSAppleScriptEnabled</key>
diff --git a/scripts/release_src.sh b/scripts/release_src.sh
index 0ddbc00..70a6759 100644
--- a/scripts/release_src.sh
+++ b/scripts/release_src.sh
@@ -5,7 +5,7 @@
 # 2. Execute from cecilia5 folder : ./scripts/release_src.sh
 #
 
-version=5.0.8
+version=5.0.9
 replace=XXX
 
 src_rep=Cecilia5_XXX-src
diff --git a/scripts/win_installer.iss b/scripts/win_installer.iss
index 61e2ea7..16282c9 100644
--- a/scripts/win_installer.iss
+++ b/scripts/win_installer.iss
@@ -7,7 +7,7 @@
 ; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
 AppId={{A970BBE5-4FA8-496E-9823-2491D09DA043}
 AppName=Cecilia5
-AppVersion=5.0.8 beta
+AppVersion=5.0.9 beta
 AppPublisher=iACT.umontreal.ca
 AppPublisherURL=http://code.google.com/p/cecilia5
 AppSupportURL=http://code.google.com/p/cecilia5
@@ -17,7 +17,7 @@ DisableDirPage=yes
 DefaultGroupName=Cecilia5
 AllowNoIcons=yes
 LicenseFile=C:\Documents and Settings\user\svn\cecilia5\Cecilia5_Win\Resources\COPYING.txt
-OutputBaseFilename=Cecilia5_5.0.8_setup
+OutputBaseFilename=Cecilia5_5.0.9_setup
 Compression=lzma
 SolidCompression=yes
 ChangesAssociations=yes

-- 
cecilia packaging



More information about the pkg-multimedia-commits mailing list