Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/TamTamSynthLab.activity/common
diff options
context:
space:
mode:
Diffstat (limited to 'TamTamSynthLab.activity/common')
l---------TamTamSynthLab.activity/common1
-rw-r--r--TamTamSynthLab.activity/common/COPYING.txt674
-rw-r--r--TamTamSynthLab.activity/common/Config.py302
-rw-r--r--TamTamSynthLab.activity/common/Generation/Drunk.py162
-rw-r--r--TamTamSynthLab.activity/common/Generation/GenerationConstants.py185
-rw-r--r--TamTamSynthLab.activity/common/Generation/GenerationParametersWindow.py383
-rw-r--r--TamTamSynthLab.activity/common/Generation/GenerationPitch.py40
-rw-r--r--TamTamSynthLab.activity/common/Generation/GenerationRythm.py215
-rw-r--r--TamTamSynthLab.activity/common/Generation/Generator.py174
-rw-r--r--TamTamSynthLab.activity/common/Generation/Utils.py74
-rw-r--r--TamTamSynthLab.activity/common/Generation/VariationPitch.py82
-rw-r--r--TamTamSynthLab.activity/common/Generation/VariationRythm.py74
-rw-r--r--TamTamSynthLab.activity/common/Generation/__init__.py0
-rw-r--r--TamTamSynthLab.activity/common/Generation/bList.py97
-rw-r--r--TamTamSynthLab.activity/common/Resources/Desktops/desktop040
-rw-r--r--TamTamSynthLab.activity/common/Resources/Desktops/desktop1335
-rw-r--r--TamTamSynthLab.activity/common/Resources/Desktops/desktop2153
-rw-r--r--TamTamSynthLab.activity/common/Resources/Desktops/desktop3101
-rw-r--r--TamTamSynthLab.activity/common/Resources/Desktops/desktop4120
-rw-r--r--TamTamSynthLab.activity/common/Resources/Desktops/desktop558
-rw-r--r--TamTamSynthLab.activity/common/Resources/Desktops/desktop6133
-rw-r--r--TamTamSynthLab.activity/common/Resources/Desktops/desktop7203
-rw-r--r--TamTamSynthLab.activity/common/Resources/Desktops/desktop850
-rw-r--r--TamTamSynthLab.activity/common/Resources/Desktops/desktop985
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/TamTam.pngbin12771 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/acguit.pngbin10779 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/acguitsel.pngbin9552 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/alarm.pngbin8794 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/alarmsel.pngbin8302 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/all.pngbin13361 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/allsel.pngbin14000 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/animals.pngbin15944 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/animalssel.pngbin16536 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/armbone.pngbin13090 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/armbonesel.pngbin12117 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/arrowEditDown.pngbin3058 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/arrowEditDownDown.pngbin3037 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/arrowEditDownOver.pngbin3058 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/arrowEditLeft.pngbin456 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/arrowEditLeftDown.pngbin3003 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/arrowEditLeftOver.pngbin3058 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/arrowEditRight.pngbin454 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/arrowEditRightDown.pngbin3014 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/arrowEditRightOver.pngbin3049 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/arrowEditUp.pngbin3045 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/arrowEditUpDown.pngbin3030 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/arrowEditUpOver.pngbin3046 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/babylaugh.pngbin9804 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/babylaughsel.pngbin9576 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/babyuhoh.pngbin15032 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/babyuhohsel.pngbin14399 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/banjo.pngbin8352 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/banjosel.pngbin7455 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/basse.pngbin9265 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/basse2.pngbin9672 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/basse2sel.pngbin8114 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/bassesel.pngbin7934 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/beat1.pngbin679 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/beat10.pngbin1003 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/beat11.pngbin722 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/beat2.pngbin672 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/beat3.pngbin620 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/beat4.pngbin984 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/beat5.pngbin651 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/beat6.pngbin947 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/beat7.pngbin663 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/beat8.pngbin721 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/beat9.pngbin1005 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/bird.pngbin9311 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/birdsel.pngbin8048 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/bottle.pngbin8387 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/bottlesel.pngbin7674 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/bubbles.pngbin9571 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/bubblessel.pngbin8695 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/byke.pngbin14257 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/bykesel.pngbin12502 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/camera.pngbin9598 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/camerasel.pngbin9467 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/car.pngbin7720 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/carhorn.pngbin8441 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/carhornsel.pngbin7395 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/carsel.pngbin7354 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/cat.pngbin13255 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/catsel.pngbin12546 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/cello.pngbin12080 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/cellosel.pngbin10904 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/check.pngbin1862 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/checkOff.svg7
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/checkOn.svg14
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/chiken.pngbin13600 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/chikensel.pngbin12240 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/chimes.pngbin8878 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/chimessel.pngbin8340 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/clang.pngbin10702 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/clang2.pngbin10092 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/clang2sel.pngbin9477 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/clangsel.pngbin10306 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/clarinette.pngbin5628 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/clarinettesel.pngbin4700 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/clavinet.pngbin11270 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/clavinetsel.pngbin9611 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/cling.pngbin14855 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/clingsel.pngbin13973 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/complex1.pngbin2084 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/complex2.pngbin1930 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/complex3.pngbin1862 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/complex4.pngbin1914 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/complex5.pngbin1890 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/complex6.pngbin1912 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/complex7.pngbin1938 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/complex8.pngbin1791 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/concret.pngbin9928 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/concretsel.pngbin10472 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/cow.pngbin10283 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/cowsel.pngbin9301 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/crash.pngbin8027 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/crashsel.pngbin7362 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/cricket.pngbin9673 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/cricketsel.pngbin8500 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/dice.pngbin11085 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/diceProp.pngbin2613 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/dicePropSel.pngbin2721 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/diceblur.pngbin13327 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/diceinst.pngbin8634 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/diceinstsel.pngbin8003 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/didjeridu.pngbin9087 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/didjeridusel.pngbin8296 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/dog.pngbin12824 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/dogsel.pngbin12298 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/door.pngbin10469 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/doorsel.pngbin10272 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/dru0.pngbin2313 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/dru1.pngbin2708 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/dru2.pngbin3293 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/dru3.pngbin4062 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/dru4.pngbin5015 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/drum1kit.pngbin14900 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/drum1kitsel.pngbin13729 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/drum1kitselgen.pngbin13887 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/drum2kit.pngbin14882 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/drum2kitsel.pngbin13869 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/drum2kitselgen.pngbin13964 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/drum3kit.pngbin15880 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/drum3kitsel.pngbin14679 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/drum3kitselgen.pngbin14801 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/drum4kit.pngbin12904 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/drum4kitsel.pngbin10888 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/drum4kitselgen.pngbin11047 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/drum5kit.pngbin14999 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/drum5kitsel.pngbin13580 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/drum5kitselgen.pngbin13712 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/drum6kit.pngbin11951 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/drum6kitmadal.orig.jpgbin6976 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/drum6kitsel.pngbin11647 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/drum6kitselgen.pngbin11784 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/duck.pngbin9694 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/duck2.pngbin11299 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/duck2sel.pngbin8960 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/ducksel.pngbin8652 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/editTam.pngbin10701 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/editTamDown.pngbin11789 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/editTamOver.pngbin9958 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/electronic.pngbin12476 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/electronicsel.pngbin13161 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/fingercymbals.pngbin10925 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/fingercymbalssel.pngbin10573 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/flugel.pngbin11979 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/flugelsel.pngbin10207 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/flute.pngbin6248 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/flutesel.pngbin5266 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/foghorn.pngbin10195 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/foghornsel.pngbin8756 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/frogs.pngbin9613 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/frogssel.pngbin8519 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/gam.pngbin12581 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/gamsel.pngbin11893 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/generic.pngbin8768 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/genericsel.pngbin8015 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/guit.pngbin9996 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/guit2.pngbin8352 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/guit2sel.pngbin7611 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/guitmute.pngbin8176 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/guitmutesel.pngbin7099 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/guitsel.pngbin8589 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/guitshort.pngbin9145 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/guitshortsel.pngbin7984 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/harmonica.pngbin9120 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/harmonicasel.pngbin8638 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/harmonium.pngbin13371 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/harmoniumsel.pngbin12936 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/harpsichord.pngbin8735 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/harpsichordsel.pngbin7667 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/helpShow1.jpgbin32969 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/helpShow2.jpgbin87871 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/helpShow3.jpgbin79367 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/helpShow4.jpgbin85694 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/helpShow5.jpgbin75364 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/helpShow6.jpgbin60244 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/helpShow7.jpgbin52708 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/helpShow8.jpgbin70312 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/helpShow9.jpgbin52295 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/helpTam.pngbin11789 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/helpTamDown.pngbin10701 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/helpTamOver.pngbin9958 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/hey.pngbin14960 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/heysel.pngbin14334 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/hit.pngbin973 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/hitSelected.pngbin1171 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/horse.pngbin15048 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/horsesel.pngbin13520 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/instr0.pngbin1700 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/instr1.pngbin2032 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/instr2.pngbin2350 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/instr3.pngbin2748 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/instr4.pngbin3212 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/jam-blockMask.pngbin4242 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/kalimba.pngbin10500 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/kalimbasel.pngbin9964 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/keyboard.pngbin5602 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/keyboardsel.pngbin6201 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/koto.pngbin9666 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/kotosel.pngbin8872 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/lab1.pngbin4344 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/lab1sel.pngbin4340 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/lab2.pngbin4394 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/lab2sel.pngbin4440 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/lab3.pngbin4411 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/lab3sel.pngbin4468 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/lab4.pngbin4395 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/lab4sel.pngbin4409 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/lab5.pngbin4447 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/lab5sel.pngbin4459 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/lab6.pngbin4462 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/lab6sel.pngbin4511 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/laugh.pngbin14044 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/laughsel.pngbin13332 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/mando.pngbin8705 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/mandosel.pngbin7728 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/marimba.pngbin14598 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/marimbasel.pngbin13469 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/marquis.pngbin1341 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/mic1.pngbin4231 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/mic1sel.pngbin3988 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/mic2.pngbin4365 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/mic2sel.pngbin4122 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/mic3.pngbin4375 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/mic3sel.pngbin4145 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/mic4.pngbin4225 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/mic4sel.pngbin4062 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/miniTam.pngbin30569 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/miniTamDown.pngbin36042 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/miniTamOver.pngbin33015 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/miniplay.pngbin970 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/mysounds.pngbin7908 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/mysoundssel.pngbin8350 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/note.pngbin1034 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/noteSelected.pngbin1281 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/ocarina.pngbin6891 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/ocarinasel.pngbin6601 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/ounk.pngbin12569 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/ounksel.pngbin11792 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/ow.pngbin13340 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/owsel.pngbin12320 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBG.pngbin1154 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBG0.pngbin1068 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBG1.pngbin1073 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBG2.pngbin1037 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBG3.pngbin1094 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut0.pngbin927 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut0Down.pngbin945 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut1.pngbin917 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut1Down.pngbin937 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut2.pngbin919 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut2Down.pngbin944 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut3.pngbin916 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut3Down.pngbin934 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/pageThumbnailMask.pngbin500 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/people.pngbin17115 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/peoplesel.pngbin17596 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/percussions.pngbin15245 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/percussionssel.pngbin15815 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/piano.pngbin11422 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/pianosel.pngbin10785 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/plane.pngbin12105 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/planesel.pngbin10920 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/reverb0.pngbin890 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/reverb1.pngbin888 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/reverb2.pngbin939 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/reverb3.pngbin992 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/reverb4.pngbin1035 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/reverb5.pngbin1090 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/rhodes.pngbin10014 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/rhodessel.pngbin8396 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/sampleBG.pngbin36405 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/sampleNoteMask.pngbin2963 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/sarangi.orig.jpgbin7467 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/sarangi.pngbin9766 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/sarangisel.pngbin9057 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/saxo.pngbin8445 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/saxosel.pngbin7424 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/saxsoprano.pngbin6068 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/saxsopranosel.pngbin5101 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/scrollBar.pngbin584 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/sheep.pngbin11805 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/sheepsel.pngbin10623 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/shenai.pngbin6780 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/shenaisel.pngbin5808 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/sitar.pngbin9766 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/sitarsel.pngbin8536 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/slap.pngbin11935 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/slapsel.pngbin10959 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/sliderDrum.pngbin1294 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/sliderEditTempo.pngbin1272 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/sliderEditVolume.pngbin1242 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/sliderInst1.pngbin1284 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/sliderInst2.pngbin1252 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/sliderInst3.pngbin1263 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/sliderInst4.pngbin1272 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/sliderbutbleu.pngbin1744 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/sliderbutjaune.pngbin1770 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/sliderbutred.pngbin1562 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/sliderbutvert.pngbin1769 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/sliderbutviolet.pngbin1654 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/sliderlong.pngbin251 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/slidershort.pngbin244 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/stop.pngbin807 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/strings.pngbin11888 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/stringssel.pngbin12428 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/synthTam.pngbin7525 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/synthTamDown.pngbin8297 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/synthTamOver.pngbin7569 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/synthlabMask.pngbin4884 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/tchiwo.pngbin10240 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/tchiwosel.pngbin9545 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/templebell.orig.jpgbin3396 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/templebell.pngbin12180 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/templebellsel.pngbin11548 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/tempo1.pngbin1546 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/tempo2.pngbin1847 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/tempo3.pngbin2354 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/tempo4.pngbin2130 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/tempo5.pngbin2733 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/tempo6.pngbin2322 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/tempo7.pngbin3351 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/tempo8.pngbin2960 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/trackBG.pngbin4740 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/trackBGDrum.pngbin5216 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/trackBGDrumSelected.pngbin4922 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/trackBGSelected.pngbin4491 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/triangle.pngbin8220 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/trianglesel.pngbin6643 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/trumpet.pngbin8326 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/trumpetsel.pngbin7294 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/tuba.pngbin10558 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/tubasel.pngbin9921 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/ukulele.pngbin7018 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/ukulelesel.pngbin6368 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/violin.pngbin10071 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/violinsel.pngbin8386 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/voix.pngbin11567 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/voixsel.pngbin10996 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/volume0.pngbin725 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/volume1.pngbin1034 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/volume2.pngbin1478 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/volume3.pngbin1987 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/water.pngbin14819 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/watersel.pngbin12868 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/winds.pngbin14332 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/windssel.pngbin14955 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/zap.pngbin11170 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Images/zapsel.pngbin12286 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop02_0.ttl9
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop02_1.ttl8
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop02_2.ttl5
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop02_3.ttl2
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop02_4.ttl3
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop03_0.ttl13
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop03_1.ttl11
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop03_2.ttl5
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop03_3.ttl4
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop03_4.ttl5
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop04_0.ttl17
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop04_1.ttl7
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop04_2.ttl6
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop04_3.ttl4
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop04_4.ttl10
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop05_0.ttl21
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop05_1.ttl15
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop05_2.ttl8
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop05_3.ttl5
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop05_4.ttl8
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop06_0.ttl25
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop06_1.ttl14
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop06_2.ttl8
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop06_3.ttl7
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop06_4.ttl12
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop07_0.ttl29
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop07_1.ttl16
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop07_2.ttl10
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop07_3.ttl9
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop07_4.ttl11
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop08_0.ttl33
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop08_1.ttl19
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop08_2.ttl8
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop08_3.ttl9
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop08_4.ttl20
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop09_0.ttl37
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop09_1.ttl19
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop09_2.ttl10
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop09_3.ttl13
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop09_4.ttl18
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop10_0.ttl41
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop10_1.ttl19
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop10_2.ttl11
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop10_3.ttl12
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop10_4.ttl15
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop11_0.ttl45
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop11_1.ttl23
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop11_2.ttl14
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop11_3.ttl12
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop11_4.ttl15
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop12_0.ttl49
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop12_1.ttl29
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop12_2.ttl17
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop12_3.ttl13
-rw-r--r--TamTamSynthLab.activity/common/Resources/Loops/loop12_4.ttl20
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/acguitbin32360 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/alarmbin71140 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/armbonebin5154 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/babylaughbin55724 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/babyuhohbin37630 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/banjobin69260 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/bassebin32516 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/basse2bin11206 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/birdbin32804 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/bottlebin19206 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/bubblesbin40364 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/bykebin32726 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/camerabin22564 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/carbin63940 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/carhornbin79844 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/catbin18160 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/cellobin152352 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/chikenbin31554 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/chimesbin218924 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/clangbin41150 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/clang2bin46210 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/clarinettebin105078 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/clavinetbin33428 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/clingbin31758 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/cowbin52060 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/crashbin20352 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/cricketbin5304 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/diceinstbin12658 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/didjeridubin60788 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/dogbin22332 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/doorbin33640 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum1chinebin20480 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum1crashbin64044 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum1floortombin38498 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum1hardridebin80044 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum1hatpedalbin23022 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum1hatshoulderbin28508 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum1kickbin32044 -> 0 bytes
l---------TamTamSynthLab.activity/common/Resources/Sounds/drum1kit1
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum1ridebellbin80044 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum1snarebin32044 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum1snaresidestickbin5726 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum1splashbin48044 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum1tombin37152 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum2darbukadoombin38652 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum2darbukafingerbin22470 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum2darbukapiedbin32106 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum2darbukapiedsoftbin24454 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum2darbukarollbin27176 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum2darbukaslapbin25672 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum2darbukatakbin12882 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum2hatflangerbin64246 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum2hatpiedbin14638 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum2hatpied2bin14460 -> 0 bytes
l---------TamTamSynthLab.activity/common/Resources/Sounds/drum2kit1
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum2tambourinepiedbin33262 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum2tambourinepiedsoftbin19470 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum3cowbellbin15950 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum3cowbelltipbin12872 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum3cupbin15926 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum3djembelowbin32080 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum3djembemidbin15050 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum3djembesidestickbin13602 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum3djembeslapbin24090 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum3djembestickmidbin25722 -> 0 bytes
l---------TamTamSynthLab.activity/common/Resources/Sounds/drum3kit1
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum3metalstandbin16108 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum3pedalpercbin16160 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum3rainstickbin56454 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum3tambourinehighbin15996 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum3tambourinelowbin15506 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum4afrofeetbin23774 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum4fingersnbin33644 -> 0 bytes
l---------TamTamSynthLab.activity/common/Resources/Sounds/drum4kit1
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum4mutecuicbin12738 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum4stompbassbin22026 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum4tambouribin21382 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum4tr707clapbin11456 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum4tr707openbin29702 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum4tr808closedbin7530 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum4tr808snbin17474 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum4tr909bassbin61846 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum4tr909kickbin27516 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum4tr909snbin20920 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum5agogoaigubin22366 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum5agogogravebin19796 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum5bongoaiguouvertbin11418 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum5bongograveouvertbin14442 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum5congaaiguouvertbin16146 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum5congagravefermebin9674 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum5congagraveouvertbin14490 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum5guiroretourbin14462 -> 0 bytes
l---------TamTamSynthLab.activity/common/Resources/Sounds/drum5kit1
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum5quicaaigubin10410 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum5quicamediumbin11398 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum5timablesaiguslapbin33698 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum5timablesslapbin37170 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum5vibraslapbin52238 -> 0 bytes
l---------TamTamSynthLab.activity/common/Resources/Sounds/drum6kit1
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum6kit.origbin172794 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum6madal00bin14382 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum6madal01bin11532 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum6madal02bin10530 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum6madal03bin8982 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum6madal04bin11852 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum6madal05bin21504 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum6madal06bin16148 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum6madal07bin16090 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum6madal08bin11878 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum6madal09bin21474 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum6madal10bin11352 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum6madal11bin15914 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/drum6madal12bin32700 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/duckbin12942 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/duck2bin7840 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/fingercymbalsbin68426 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/flugelbin118102 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/flutebin26902 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/foghornbin139456 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/frogsbin161400 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/gambin31848 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/guidice1bin10610 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/guidice10bin12298 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/guidice2bin16130 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/guidice3bin14980 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/guidice4bin14128 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/guidice5bin9760 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/guidice6bin12658 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/guidice7bin11148 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/guidice8bin11720 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/guidice9bin12376 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/guitbin32432 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/guit2bin82082 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/guitmutebin15700 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/guitshortbin8666 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/harmonicabin10396 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/harmoniumbin34576 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/harpsichordbin49924 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/heybin14508 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/horsebin36966 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/kalimbabin14496 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/kotobin29288 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/laughbin18112 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/mandobin68326 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/marimbabin15850 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/mic1bin44 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/mic2bin44 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/mic3bin44 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/mic4bin44 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/ocarinabin8610 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/ounkbin15232 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/owbin20300 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/pianobin96828 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/planebin69662 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/rhodesbin30080 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/sarangibin49132 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/sarangi.origbin164992 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/saxobin29702 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/saxsopranobin74918 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/sheepbin39768 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/shenaibin14716 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/sitarbin66104 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/slapbin17534 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/templebellbin23804 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/templebell.origbin86973 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/trianglebin127866 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/trumpetbin72956 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/tubabin25876 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/ukulelebin60594 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/violinbin21884 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/voixbin39052 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/waterbin19512 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/Sounds/zapbin24218 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile1bin12288 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile10bin12288 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile2bin12288 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile3bin12288 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile4bin12288 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile5bin12288 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile6bin12288 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile7bin12288 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile8bin12288 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile9bin12288 -> 0 bytes
-rw-r--r--TamTamSynthLab.activity/common/Resources/crop.csd78
-rw-r--r--TamTamSynthLab.activity/common/Resources/cropSynthLab.csd77
-rw-r--r--TamTamSynthLab.activity/common/Resources/tamtamorc.csd1125
-rw-r--r--TamTamSynthLab.activity/common/Tooltips.py123
-rw-r--r--TamTamSynthLab.activity/common/Util/CSoundClient.py411
-rw-r--r--TamTamSynthLab.activity/common/Util/CSoundNote.py80
-rw-r--r--TamTamSynthLab.activity/common/Util/Clooper/Makefile23
-rw-r--r--TamTamSynthLab.activity/common/Util/Clooper/SoundClient.i14
-rw-r--r--TamTamSynthLab.activity/common/Util/Clooper/__init__.py21
-rw-r--r--TamTamSynthLab.activity/common/Util/Clooper/aclient.cpp1101
-rw-r--r--TamTamSynthLab.activity/common/Util/Clooper/audio.cpp237
-rw-r--r--TamTamSynthLab.activity/common/Util/Clooper/cmd_csound.cpp22
-rw-r--r--TamTamSynthLab.activity/common/Util/Clooper/linux32_508/__init__.py0
-rw-r--r--TamTamSynthLab.activity/common/Util/Clooper/linux32_510/__init__.py0
-rw-r--r--TamTamSynthLab.activity/common/Util/Clooper/linux64_510/__init__.py0
-rw-r--r--TamTamSynthLab.activity/common/Util/Clooper/linux64_511_deb/__init__.py0
-rw-r--r--TamTamSynthLab.activity/common/Util/Clooper/log.cpp52
-rw-r--r--TamTamSynthLab.activity/common/Util/Clooper/ttest.c53
-rw-r--r--TamTamSynthLab.activity/common/Util/Clooper/ttest.h15
-rw-r--r--TamTamSynthLab.activity/common/Util/Clooper/ttest.i15
-rw-r--r--TamTamSynthLab.activity/common/Util/Clooper/ttest.py54
-rw-r--r--TamTamSynthLab.activity/common/Util/Clooper/ttest_wrap.c3042
-rw-r--r--TamTamSynthLab.activity/common/Util/ControlStream.py254
-rw-r--r--TamTamSynthLab.activity/common/Util/Credits.py39
-rw-r--r--TamTamSynthLab.activity/common/Util/InstrumentDB.py140
-rw-r--r--TamTamSynthLab.activity/common/Util/InstrumentPanel.py379
-rw-r--r--TamTamSynthLab.activity/common/Util/Instruments.py309
-rw-r--r--TamTamSynthLab.activity/common/Util/KeyboardWindow.py180
-rw-r--r--TamTamSynthLab.activity/common/Util/LoopSettings.py229
-rw-r--r--TamTamSynthLab.activity/common/Util/Network.py572
-rw-r--r--TamTamSynthLab.activity/common/Util/NoteDB.py813
-rw-r--r--TamTamSynthLab.activity/common/Util/OS.py36
-rw-r--r--TamTamSynthLab.activity/common/Util/Profiler.py93
-rw-r--r--TamTamSynthLab.activity/common/Util/ThemeWidgets.py1280
-rw-r--r--TamTamSynthLab.activity/common/Util/Trackpad.py95
-rw-r--r--TamTamSynthLab.activity/common/Util/__init__.py0
-rw-r--r--TamTamSynthLab.activity/common/__init__.py0
-rw-r--r--TamTamSynthLab.activity/common/port/COPYING340
-rw-r--r--TamTamSynthLab.activity/common/port/README18
-rw-r--r--TamTamSynthLab.activity/common/port/__init__.py0
-rw-r--r--TamTamSynthLab.activity/common/port/scrolledbox.py189
650 files changed, 1 insertions, 16104 deletions
diff --git a/TamTamSynthLab.activity/common b/TamTamSynthLab.activity/common
new file mode 120000
index 0000000..60d3b0a
--- /dev/null
+++ b/TamTamSynthLab.activity/common
@@ -0,0 +1 @@
+../common \ No newline at end of file
diff --git a/TamTamSynthLab.activity/common/COPYING.txt b/TamTamSynthLab.activity/common/COPYING.txt
deleted file mode 100644
index 94a9ed0..0000000
--- a/TamTamSynthLab.activity/common/COPYING.txt
+++ /dev/null
@@ -1,674 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 3, 29 June 2007
-
- Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The GNU General Public License is a free, copyleft license for
-software and other kinds of works.
-
- The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works. By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains free
-software for all its users. We, the Free Software Foundation, use the
-GNU General Public License for most of our software; it applies also to
-any other work released this way by its authors. You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
- To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights. Therefore, you have
-certain responsibilities if you distribute copies of the software, or if
-you modify it: responsibilities to respect the freedom of others.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received. You must make sure that they, too, receive
-or can get the source code. And you must show them these terms so they
-know their rights.
-
- Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
- For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software. For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
- Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the manufacturer
-can do so. This is fundamentally incompatible with the aim of
-protecting users' freedom to change the software. The systematic
-pattern of such abuse occurs in the area of products for individuals to
-use, which is precisely where it is most unacceptable. Therefore, we
-have designed this version of the GPL to prohibit the practice for those
-products. If such problems arise substantially in other domains, we
-stand ready to extend this provision to those domains in future versions
-of the GPL, as needed to protect the freedom of users.
-
- Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary. To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- TERMS AND CONDITIONS
-
- 0. Definitions.
-
- "This License" refers to version 3 of the GNU General Public License.
-
- "Copyright" also means copyright-like laws that apply to other kinds of
-works, such as semiconductor masks.
-
- "The Program" refers to any copyrightable work licensed under this
-License. Each licensee is addressed as "you". "Licensees" and
-"recipients" may be individuals or organizations.
-
- To "modify" a work means to copy from or adapt all or part of the work
-in a fashion requiring copyright permission, other than the making of an
-exact copy. The resulting work is called a "modified version" of the
-earlier work or a work "based on" the earlier work.
-
- A "covered work" means either the unmodified Program or a work based
-on the Program.
-
- To "propagate" a work means to do anything with it that, without
-permission, would make you directly or secondarily liable for
-infringement under applicable copyright law, except executing it on a
-computer or modifying a private copy. Propagation includes copying,
-distribution (with or without modification), making available to the
-public, and in some countries other activities as well.
-
- To "convey" a work means any kind of propagation that enables other
-parties to make or receive copies. Mere interaction with a user through
-a computer network, with no transfer of a copy, is not conveying.
-
- An interactive user interface displays "Appropriate Legal Notices"
-to the extent that it includes a convenient and prominently visible
-feature that (1) displays an appropriate copyright notice, and (2)
-tells the user that there is no warranty for the work (except to the
-extent that warranties are provided), that licensees may convey the
-work under this License, and how to view a copy of this License. If
-the interface presents a list of user commands or options, such as a
-menu, a prominent item in the list meets this criterion.
-
- 1. Source Code.
-
- The "source code" for a work means the preferred form of the work
-for making modifications to it. "Object code" means any non-source
-form of a work.
-
- A "Standard Interface" means an interface that either is an official
-standard defined by a recognized standards body, or, in the case of
-interfaces specified for a particular programming language, one that
-is widely used among developers working in that language.
-
- The "System Libraries" of an executable work include anything, other
-than the work as a whole, that (a) is included in the normal form of
-packaging a Major Component, but which is not part of that Major
-Component, and (b) serves only to enable use of the work with that
-Major Component, or to implement a Standard Interface for which an
-implementation is available to the public in source code form. A
-"Major Component", in this context, means a major essential component
-(kernel, window system, and so on) of the specific operating system
-(if any) on which the executable work runs, or a compiler used to
-produce the work, or an object code interpreter used to run it.
-
- The "Corresponding Source" for a work in object code form means all
-the source code needed to generate, install, and (for an executable
-work) run the object code and to modify the work, including scripts to
-control those activities. However, it does not include the work's
-System Libraries, or general-purpose tools or generally available free
-programs which are used unmodified in performing those activities but
-which are not part of the work. For example, Corresponding Source
-includes interface definition files associated with source files for
-the work, and the source code for shared libraries and dynamically
-linked subprograms that the work is specifically designed to require,
-such as by intimate data communication or control flow between those
-subprograms and other parts of the work.
-
- The Corresponding Source need not include anything that users
-can regenerate automatically from other parts of the Corresponding
-Source.
-
- The Corresponding Source for a work in source code form is that
-same work.
-
- 2. Basic Permissions.
-
- All rights granted under this License are granted for the term of
-copyright on the Program, and are irrevocable provided the stated
-conditions are met. This License explicitly affirms your unlimited
-permission to run the unmodified Program. The output from running a
-covered work is covered by this License only if the output, given its
-content, constitutes a covered work. This License acknowledges your
-rights of fair use or other equivalent, as provided by copyright law.
-
- You may make, run and propagate covered works that you do not
-convey, without conditions so long as your license otherwise remains
-in force. You may convey covered works to others for the sole purpose
-of having them make modifications exclusively for you, or provide you
-with facilities for running those works, provided that you comply with
-the terms of this License in conveying all material for which you do
-not control copyright. Those thus making or running the covered works
-for you must do so exclusively on your behalf, under your direction
-and control, on terms that prohibit them from making any copies of
-your copyrighted material outside their relationship with you.
-
- Conveying under any other circumstances is permitted solely under
-the conditions stated below. Sublicensing is not allowed; section 10
-makes it unnecessary.
-
- 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
- No covered work shall be deemed part of an effective technological
-measure under any applicable law fulfilling obligations under article
-11 of the WIPO copyright treaty adopted on 20 December 1996, or
-similar laws prohibiting or restricting circumvention of such
-measures.
-
- When you convey a covered work, you waive any legal power to forbid
-circumvention of technological measures to the extent such circumvention
-is effected by exercising rights under this License with respect to
-the covered work, and you disclaim any intention to limit operation or
-modification of the work as a means of enforcing, against the work's
-users, your or third parties' legal rights to forbid circumvention of
-technological measures.
-
- 4. Conveying Verbatim Copies.
-
- You may convey verbatim copies of the Program's source code as you
-receive it, in any medium, provided that you conspicuously and
-appropriately publish on each copy an appropriate copyright notice;
-keep intact all notices stating that this License and any
-non-permissive terms added in accord with section 7 apply to the code;
-keep intact all notices of the absence of any warranty; and give all
-recipients a copy of this License along with the Program.
-
- You may charge any price or no price for each copy that you convey,
-and you may offer support or warranty protection for a fee.
-
- 5. Conveying Modified Source Versions.
-
- You may convey a work based on the Program, or the modifications to
-produce it from the Program, in the form of source code under the
-terms of section 4, provided that you also meet all of these conditions:
-
- a) The work must carry prominent notices stating that you modified
- it, and giving a relevant date.
-
- b) The work must carry prominent notices stating that it is
- released under this License and any conditions added under section
- 7. This requirement modifies the requirement in section 4 to
- "keep intact all notices".
-
- c) You must license the entire work, as a whole, under this
- License to anyone who comes into possession of a copy. This
- License will therefore apply, along with any applicable section 7
- additional terms, to the whole of the work, and all its parts,
- regardless of how they are packaged. This License gives no
- permission to license the work in any other way, but it does not
- invalidate such permission if you have separately received it.
-
- d) If the work has interactive user interfaces, each must display
- Appropriate Legal Notices; however, if the Program has interactive
- interfaces that do not display Appropriate Legal Notices, your
- work need not make them do so.
-
- A compilation of a covered work with other separate and independent
-works, which are not by their nature extensions of the covered work,
-and which are not combined with it such as to form a larger program,
-in or on a volume of a storage or distribution medium, is called an
-"aggregate" if the compilation and its resulting copyright are not
-used to limit the access or legal rights of the compilation's users
-beyond what the individual works permit. Inclusion of a covered work
-in an aggregate does not cause this License to apply to the other
-parts of the aggregate.
-
- 6. Conveying Non-Source Forms.
-
- You may convey a covered work in object code form under the terms
-of sections 4 and 5, provided that you also convey the
-machine-readable Corresponding Source under the terms of this License,
-in one of these ways:
-
- a) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by the
- Corresponding Source fixed on a durable physical medium
- customarily used for software interchange.
-
- b) Convey the object code in, or embodied in, a physical product
- (including a physical distribution medium), accompanied by a
- written offer, valid for at least three years and valid for as
- long as you offer spare parts or customer support for that product
- model, to give anyone who possesses the object code either (1) a
- copy of the Corresponding Source for all the software in the
- product that is covered by this License, on a durable physical
- medium customarily used for software interchange, for a price no
- more than your reasonable cost of physically performing this
- conveying of source, or (2) access to copy the
- Corresponding Source from a network server at no charge.
-
- c) Convey individual copies of the object code with a copy of the
- written offer to provide the Corresponding Source. This
- alternative is allowed only occasionally and noncommercially, and
- only if you received the object code with such an offer, in accord
- with subsection 6b.
-
- d) Convey the object code by offering access from a designated
- place (gratis or for a charge), and offer equivalent access to the
- Corresponding Source in the same way through the same place at no
- further charge. You need not require recipients to copy the
- Corresponding Source along with the object code. If the place to
- copy the object code is a network server, the Corresponding Source
- may be on a different server (operated by you or a third party)
- that supports equivalent copying facilities, provided you maintain
- clear directions next to the object code saying where to find the
- Corresponding Source. Regardless of what server hosts the
- Corresponding Source, you remain obligated to ensure that it is
- available for as long as needed to satisfy these requirements.
-
- e) Convey the object code using peer-to-peer transmission, provided
- you inform other peers where the object code and Corresponding
- Source of the work are being offered to the general public at no
- charge under subsection 6d.
-
- A separable portion of the object code, whose source code is excluded
-from the Corresponding Source as a System Library, need not be
-included in conveying the object code work.
-
- A "User Product" is either (1) a "consumer product", which means any
-tangible personal property which is normally used for personal, family,
-or household purposes, or (2) anything designed or sold for incorporation
-into a dwelling. In determining whether a product is a consumer product,
-doubtful cases shall be resolved in favor of coverage. For a particular
-product received by a particular user, "normally used" refers to a
-typical or common use of that class of product, regardless of the status
-of the particular user or of the way in which the particular user
-actually uses, or expects or is expected to use, the product. A product
-is a consumer product regardless of whether the product has substantial
-commercial, industrial or non-consumer uses, unless such uses represent
-the only significant mode of use of the product.
-
- "Installation Information" for a User Product means any methods,
-procedures, authorization keys, or other information required to install
-and execute modified versions of a covered work in that User Product from
-a modified version of its Corresponding Source. The information must
-suffice to ensure that the continued functioning of the modified object
-code is in no case prevented or interfered with solely because
-modification has been made.
-
- If you convey an object code work under this section in, or with, or
-specifically for use in, a User Product, and the conveying occurs as
-part of a transaction in which the right of possession and use of the
-User Product is transferred to the recipient in perpetuity or for a
-fixed term (regardless of how the transaction is characterized), the
-Corresponding Source conveyed under this section must be accompanied
-by the Installation Information. But this requirement does not apply
-if neither you nor any third party retains the ability to install
-modified object code on the User Product (for example, the work has
-been installed in ROM).
-
- The requirement to provide Installation Information does not include a
-requirement to continue to provide support service, warranty, or updates
-for a work that has been modified or installed by the recipient, or for
-the User Product in which it has been modified or installed. Access to a
-network may be denied when the modification itself materially and
-adversely affects the operation of the network or violates the rules and
-protocols for communication across the network.
-
- Corresponding Source conveyed, and Installation Information provided,
-in accord with this section must be in a format that is publicly
-documented (and with an implementation available to the public in
-source code form), and must require no special password or key for
-unpacking, reading or copying.
-
- 7. Additional Terms.
-
- "Additional permissions" are terms that supplement the terms of this
-License by making exceptions from one or more of its conditions.
-Additional permissions that are applicable to the entire Program shall
-be treated as though they were included in this License, to the extent
-that they are valid under applicable law. If additional permissions
-apply only to part of the Program, that part may be used separately
-under those permissions, but the entire Program remains governed by
-this License without regard to the additional permissions.
-
- When you convey a copy of a covered work, you may at your option
-remove any additional permissions from that copy, or from any part of
-it. (Additional permissions may be written to require their own
-removal in certain cases when you modify the work.) You may place
-additional permissions on material, added by you to a covered work,
-for which you have or can give appropriate copyright permission.
-
- Notwithstanding any other provision of this License, for material you
-add to a covered work, you may (if authorized by the copyright holders of
-that material) supplement the terms of this License with terms:
-
- a) Disclaiming warranty or limiting liability differently from the
- terms of sections 15 and 16 of this License; or
-
- b) Requiring preservation of specified reasonable legal notices or
- author attributions in that material or in the Appropriate Legal
- Notices displayed by works containing it; or
-
- c) Prohibiting misrepresentation of the origin of that material, or
- requiring that modified versions of such material be marked in
- reasonable ways as different from the original version; or
-
- d) Limiting the use for publicity purposes of names of licensors or
- authors of the material; or
-
- e) Declining to grant rights under trademark law for use of some
- trade names, trademarks, or service marks; or
-
- f) Requiring indemnification of licensors and authors of that
- material by anyone who conveys the material (or modified versions of
- it) with contractual assumptions of liability to the recipient, for
- any liability that these contractual assumptions directly impose on
- those licensors and authors.
-
- All other non-permissive additional terms are considered "further
-restrictions" within the meaning of section 10. If the Program as you
-received it, or any part of it, contains a notice stating that it is
-governed by this License along with a term that is a further
-restriction, you may remove that term. If a license document contains
-a further restriction but permits relicensing or conveying under this
-License, you may add to a covered work material governed by the terms
-of that license document, provided that the further restriction does
-not survive such relicensing or conveying.
-
- If you add terms to a covered work in accord with this section, you
-must place, in the relevant source files, a statement of the
-additional terms that apply to those files, or a notice indicating
-where to find the applicable terms.
-
- Additional terms, permissive or non-permissive, may be stated in the
-form of a separately written license, or stated as exceptions;
-the above requirements apply either way.
-
- 8. Termination.
-
- You may not propagate or modify a covered work except as expressly
-provided under this License. Any attempt otherwise to propagate or
-modify it is void, and will automatically terminate your rights under
-this License (including any patent licenses granted under the third
-paragraph of section 11).
-
- However, if you cease all violation of this License, then your
-license from a particular copyright holder is reinstated (a)
-provisionally, unless and until the copyright holder explicitly and
-finally terminates your license, and (b) permanently, if the copyright
-holder fails to notify you of the violation by some reasonable means
-prior to 60 days after the cessation.
-
- Moreover, your license from a particular copyright holder is
-reinstated permanently if the copyright holder notifies you of the
-violation by some reasonable means, this is the first time you have
-received notice of violation of this License (for any work) from that
-copyright holder, and you cure the violation prior to 30 days after
-your receipt of the notice.
-
- Termination of your rights under this section does not terminate the
-licenses of parties who have received copies or rights from you under
-this License. If your rights have been terminated and not permanently
-reinstated, you do not qualify to receive new licenses for the same
-material under section 10.
-
- 9. Acceptance Not Required for Having Copies.
-
- You are not required to accept this License in order to receive or
-run a copy of the Program. Ancillary propagation of a covered work
-occurring solely as a consequence of using peer-to-peer transmission
-to receive a copy likewise does not require acceptance. However,
-nothing other than this License grants you permission to propagate or
-modify any covered work. These actions infringe copyright if you do
-not accept this License. Therefore, by modifying or propagating a
-covered work, you indicate your acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
- Each time you convey a covered work, the recipient automatically
-receives a license from the original licensors, to run, modify and
-propagate that work, subject to this License. You are not responsible
-for enforcing compliance by third parties with this License.
-
- An "entity transaction" is a transaction transferring control of an
-organization, or substantially all assets of one, or subdividing an
-organization, or merging organizations. If propagation of a covered
-work results from an entity transaction, each party to that
-transaction who receives a copy of the work also receives whatever
-licenses to the work the party's predecessor in interest had or could
-give under the previous paragraph, plus a right to possession of the
-Corresponding Source of the work from the predecessor in interest, if
-the predecessor has it or can get it with reasonable efforts.
-
- You may not impose any further restrictions on the exercise of the
-rights granted or affirmed under this License. For example, you may
-not impose a license fee, royalty, or other charge for exercise of
-rights granted under this License, and you may not initiate litigation
-(including a cross-claim or counterclaim in a lawsuit) alleging that
-any patent claim is infringed by making, using, selling, offering for
-sale, or importing the Program or any portion of it.
-
- 11. Patents.
-
- A "contributor" is a copyright holder who authorizes use under this
-License of the Program or a work on which the Program is based. The
-work thus licensed is called the contributor's "contributor version".
-
- A contributor's "essential patent claims" are all patent claims
-owned or controlled by the contributor, whether already acquired or
-hereafter acquired, that would be infringed by some manner, permitted
-by this License, of making, using, or selling its contributor version,
-but do not include claims that would be infringed only as a
-consequence of further modification of the contributor version. For
-purposes of this definition, "control" includes the right to grant
-patent sublicenses in a manner consistent with the requirements of
-this License.
-
- Each contributor grants you a non-exclusive, worldwide, royalty-free
-patent license under the contributor's essential patent claims, to
-make, use, sell, offer for sale, import and otherwise run, modify and
-propagate the contents of its contributor version.
-
- In the following three paragraphs, a "patent license" is any express
-agreement or commitment, however denominated, not to enforce a patent
-(such as an express permission to practice a patent or covenant not to
-sue for patent infringement). To "grant" such a patent license to a
-party means to make such an agreement or commitment not to enforce a
-patent against the party.
-
- If you convey a covered work, knowingly relying on a patent license,
-and the Corresponding Source of the work is not available for anyone
-to copy, free of charge and under the terms of this License, through a
-publicly available network server or other readily accessible means,
-then you must either (1) cause the Corresponding Source to be so
-available, or (2) arrange to deprive yourself of the benefit of the
-patent license for this particular work, or (3) arrange, in a manner
-consistent with the requirements of this License, to extend the patent
-license to downstream recipients. "Knowingly relying" means you have
-actual knowledge that, but for the patent license, your conveying the
-covered work in a country, or your recipient's use of the covered work
-in a country, would infringe one or more identifiable patents in that
-country that you have reason to believe are valid.
-
- If, pursuant to or in connection with a single transaction or
-arrangement, you convey, or propagate by procuring conveyance of, a
-covered work, and grant a patent license to some of the parties
-receiving the covered work authorizing them to use, propagate, modify
-or convey a specific copy of the covered work, then the patent license
-you grant is automatically extended to all recipients of the covered
-work and works based on it.
-
- A patent license is "discriminatory" if it does not include within
-the scope of its coverage, prohibits the exercise of, or is
-conditioned on the non-exercise of one or more of the rights that are
-specifically granted under this License. You may not convey a covered
-work if you are a party to an arrangement with a third party that is
-in the business of distributing software, under which you make payment
-to the third party based on the extent of your activity of conveying
-the work, and under which the third party grants, to any of the
-parties who would receive the covered work from you, a discriminatory
-patent license (a) in connection with copies of the covered work
-conveyed by you (or copies made from those copies), or (b) primarily
-for and in connection with specific products or compilations that
-contain the covered work, unless you entered into that arrangement,
-or that patent license was granted, prior to 28 March 2007.
-
- Nothing in this License shall be construed as excluding or limiting
-any implied license or other defenses to infringement that may
-otherwise be available to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
- If conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot convey a
-covered work so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you may
-not convey it at all. For example, if you agree to terms that obligate you
-to collect a royalty for further conveying from those to whom you convey
-the Program, the only way you could satisfy both those terms and this
-License would be to refrain entirely from conveying the Program.
-
- 13. Use with the GNU Affero General Public License.
-
- Notwithstanding any other provision of this License, you have
-permission to link or combine any covered work with a work licensed
-under version 3 of the GNU Affero General Public License into a single
-combined work, and to convey the resulting work. The terms of this
-License will continue to apply to the part which is the covered work,
-but the special requirements of the GNU Affero General Public License,
-section 13, concerning interaction through a network will apply to the
-combination as such.
-
- 14. Revised Versions of this License.
-
- The Free Software Foundation may publish revised and/or new versions of
-the GNU General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
- Each version is given a distinguishing version number. If the
-Program specifies that a certain numbered version of the GNU General
-Public License "or any later version" applies to it, you have the
-option of following the terms and conditions either of that numbered
-version or of any later version published by the Free Software
-Foundation. If the Program does not specify a version number of the
-GNU General Public License, you may choose any version ever published
-by the Free Software Foundation.
-
- If the Program specifies that a proxy can decide which future
-versions of the GNU General Public License can be used, that proxy's
-public statement of acceptance of a version permanently authorizes you
-to choose that version for the Program.
-
- Later license versions may give you additional or different
-permissions. However, no additional obligations are imposed on any
-author or copyright holder as a result of your choosing to follow a
-later version.
-
- 15. Disclaimer of Warranty.
-
- THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
-HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
-OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
-THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
-IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
-ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. Limitation of Liability.
-
- IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
-THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
-GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
-USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
-DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
-EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
-SUCH DAMAGES.
-
- 17. Interpretation of Sections 15 and 16.
-
- If the disclaimer of warranty and limitation of liability provided
-above cannot be given local legal effect according to their terms,
-reviewing courts shall apply local law that most closely approximates
-an absolute waiver of all civil liability in connection with the
-Program, unless a warranty or assumption of liability accompanies a
-copy of the Program in return for a fee.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-Also add information on how to contact you by electronic and paper mail.
-
- If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
- <program> Copyright (C) <year> <name of author>
- This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, your program's commands
-might be different; for a GUI interface, you would use an "about box".
-
- You should also get your employer (if you work as a programmer) or school,
-if any, to sign a "copyright disclaimer" for the program, if necessary.
-For more information on this, and how to apply and follow the GNU GPL, see
-<http://www.gnu.org/licenses/>.
-
- The GNU General Public License does not permit incorporating your program
-into proprietary programs. If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications with
-the library. If this is what you want to do, use the GNU Lesser General
-Public License instead of this License. But first, please read
-<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/TamTamSynthLab.activity/common/Config.py b/TamTamSynthLab.activity/common/Config.py
deleted file mode 100644
index 9a2757b..0000000
--- a/TamTamSynthLab.activity/common/Config.py
+++ /dev/null
@@ -1,302 +0,0 @@
-# -*- coding: utf-8 -*-
-import os, sys, time
-from sugar.activity.activity import get_bundle_path, get_activity_root
-from sugar import env
-import logging
-
-#QUICKLOAD = os.path.isfile("QUICKLOAD") # skip loading inessential comenents to speed things up
-
-FEATURES_OGG = None
-FEATURES_MIC = None
-FEATURES_LAB = None
-FEATURES_NEWSOUNDS = None
-FEATURES_GRAB_MOUSE = None
-
-if os.path.isfile("DEBUG"):
- f = open("DEBUG")
- l = f.read(10)
- f.close()
- if len(l): DEBUG = int( l )
- else: DEBUG = 99
-else:
- DEBUG = int(os.getenv("TAMTAM_DEBUG", "0"))
-
-logging.debug("Debug Level %d" % (DEBUG))
-
-#PATHS
-
-TAM_TAM_ROOT = get_bundle_path()
-INSTANCE_DIR = os.path.join(get_activity_root(), 'instance')
-TMP_DIR = os.path.join(get_activity_root(), 'tmp')
-
-logging.debug('INFO: loaded TAMTAM_ROOT=%s' % TAM_TAM_ROOT)
-
-DATA_DIR = os.path.join(get_activity_root(), 'data')
-SNDS_INFO_DIR = os.path.join(get_activity_root(), 'data', 'snds_info')
-FILES_DIR = os.path.join(TAM_TAM_ROOT, "common", "Resources")
-SOUNDS_DIR = os.path.join(FILES_DIR, "Sounds", "")
-IMAGE_ROOT = os.path.join(FILES_DIR, "Images", "")
-
-for i in (INSTANCE_DIR, DATA_DIR, SNDS_INFO_DIR, TMP_DIR):
- if not os.path.isdir(i): os.makedirs(i)
-
-#PLUGIN
-PLUGIN_DEBUG = os.getenv("CSOUND_LOGFILE", "")
-PLUGIN_VERBOSE = DEBUG
-PLUGIN_UNIVORC = os.path.join(FILES_DIR, "tamtamorc.csd")
-PLUGIN_KSMPS = 64
-PLUGIN_RATE = 16000
-
-## PLUGIN ALSA PARAMETERS:
-PLUGIN_PERIOD = 256 #512
-PLUGIN_NPERIODS = 2
-
-##############
-## SOUNDS
-##############
-
-ARECORD = "arecord " + os.getenv("TAMTAM_ARECORD",
- "-f S16_LE -t wav -r 16000 -c2 -D hw:0,0")
-
-LOW, MID, HIGH, PUNCH = range( 4 )
-
-INSTRUMENT_TABLE_OFFSET = 5000
-INST_FREE = 5000
-INST_TIED = 5001
-INST_SIMP = 5011
-INST_PERC = 5021
-
-CATEGORIES = ['all','animals','concret','keyboard','people','percussions','strings','winds']
-
-if FEATURES_MIC or FEATURES_LAB:
- CATEGORIES.append('mysounds')
-
-#CSOUND COMMANDS
-CSOUND_LOAD_INSTRUMENT = 'f%d 0 0 -1 "%s" 0 0 0'
-CSOUND_MIC_RECORD = 'i5201 0 5 %d'
-CSOUND_UNLOAD_TABLES = 'i%d 0 0.1 %d' % (INST_FREE, 150) # removed magic number
-CSOUND_NOTE_OFF = 'i %s.%s .2 0.01 1. 0. 0. 0.5 %d 0 0 0 0' %('%d','%d',INSTRUMENT_TABLE_OFFSET)
-CSOUND_LOAD_LS_INSTRUMENT = 'f4999 0 0 -1 \"%s\" 0 0 0'
-CSOUND_PLAY_LS_NOTE = 'i %i 0 -1'
-CSOUND_STOP_LS_NOTE = 'i 5022 0 0.5'
-CSOUND_RECORD_PERF = 'i5400 0 -1 "%s"'
-CSOUND_STOP_RECORD_PERF = 'i5401 4 1 "%s"'
-
-
-#################
-## GUI CONSTANTS
-#################
-
-LANGUAGE = 'En'
-MAIN_WINDOW_PADDING = 5
-
-BG_COLOR = '#404040'
-FG_COLOR = '#818286'
-
-NOTE_HEIGHT = 9 # pixels
-NOTE_IMAGE_PADDING = 6
-NOTE_IMAGE_PADDING_MUL2 = NOTE_IMAGE_PADDING*2
-NOTE_IMAGE_TAIL = 1059
-NOTE_IMAGE_ENDLENGTH = 12
-HIT_HEIGHT = 13 # pixels
-HIT_IMAGE_PADDING = 6
-HIT_IMAGE_PADDING_MUL2 = HIT_IMAGE_PADDING*2
-TRACK_SPACING = 4
-TRACK_SPACING_DIV2 = TRACK_SPACING//2
-TRACK_COLORS = [ ( "#00290B", "#00E847" ), \
- ( "#3F0200", "#E72500" ), \
- ( "#002642", "#0090EA" ), \
- ( "#313D00", "#F9EF00" ), \
- ( "#17083B", "#4A00ED" ) ]
-#TRACK_COLORS = [ ( "#00591B", "#00E847" ), \
-# ( "#6F1200", "#E72500" ), \
-# ( "#004682", "#0090EA" ), \
-# ( "#716D00", "#F9EF00" ), \
-# ( "#37187B", "#4A00ED" ) ]
-BEAT_COLOR = "#999999"
-BEAT_LINE_SIZE = 2
-PLAYHEAD_COLOR = "#666666"
-PLAYHEAD_SIZE = 2
-PLAYHEAD_SIZE_DIV2 = PLAYHEAD_SIZE/2.0
-MARQUEE_COLOR = "#FFFFFF"
-MARQUEE_SIZE = 2
-
-PAGE_BORDER_SIZE = 2
-PAGE_SELECTED_BORDER_SIZE = 5
-PAGE_WIDTH = 100
-PAGE_HEIGHT = 25
-
-PAGE_THUMBNAIL_WIDTH = 92
-PAGE_THUMBNAIL_WIDTH_DIV2 = PAGE_THUMBNAIL_WIDTH/2
-PAGE_THUMBNAIL_HEIGHT = 65
-
-THUMBNAIL_TRACK_RECT = [ ( 2, 4, 83, 10 ), \
- ( 2, 14, 83, 10 ), \
- ( 2, 24, 83, 10 ), \
- ( 2, 34, 83, 10 ), \
- ( 2, 44, 83, 13 ) ]
-THUMBNAIL_DRAG_COLOR = "#000000"
-THUMBNAIL_TRACK_COLOR = "#FF0000"
-THUMBNAIL_SELECTED_COLOR = "#2266FF"
-THUMBNAIL_DISPLAYED_COLOR = "#CC1133"
-
-TOOLBAR_BCK_COLOR = '#404040'
-WHITE_COLOR = '#FFFFFF'
-### miniTamTam/SYNTHLAB SPECIFIC ###
-INST_BCK_COLOR = '#999999'
-PANEL_BCK_COLOR = '#CCCCCC'
-PANEL_COLOR = '#CCCCCC'
-SL_LINE_COLOR = "#666666"
-SL_HIGHLIGHT_COLOR = "#FFFFFF"
-SL_OVER_WIRE_COLOR = "#FFFFFF"
-SL_OVER_GATE_COLOR = "#00FF18"
-SL_OVER_GATE_REJECT_COLOR = "#B30000"
-PANEL_RADIUS = 10
-PANEL_SPACING = 2
-
-###Instrument Panel###
-CATEGORY_BCK_COLOR = '#222222'
-INSTRUMENT_GRID_COLOR = '#CCCCCC'
-
-###Welcome Screen Specific###
-WS_PANEL_COLOR = '#404040'
-WS_BCK_COLOR = '#CCCCCC'
-
-# hardware keycodes for mod keys
-MOD_LSHIFT = 50
-MOD_RSHIFT = 62
-MOD_LCTRL = 37
-MOD_RCTRL = 109
-MOD_LALT = 64
-MOD_RALT = 113
-
-
-
-########
-## Things that don't belong!
-#######
-class _ModKeys:
- def __init__( self ):
- self.shiftDown = False
- self.ctrlDown = False
- self.altDown = False
-
- def keyPress( self, code ):
- if code == MOD_LSHIFT or code == MOD_RSHIFT: self.shiftDown = True
- elif code == MOD_LCTRL or code == MOD_RCTRL: self.ctrlDown = True
- elif code == MOD_LALT or code == MOD_RALT: self.altDown = True
-
- def keyRelease( self, code ):
- if code == MOD_LSHIFT or code == MOD_RSHIFT: self.shiftDown = False
- elif code == MOD_LCTRL or code == MOD_RCTRL: self.ctrlDown = False
- elif code == MOD_LALT or code == MOD_RALT: self.altDown = False
-
-ModKeys = _ModKeys()
-
-
-############
-## EDIT DEFAULTS
-############
-
-#DEFAULTS
-PLAYER_TEMPO = 100
-PLAYER_TEMPO_LOWER = 30
-PLAYER_TEMPO_UPPER = 160
-DEFAULT_VOLUME = 50
-
-#NUMERICAL CONSTANTS
-NUMBER_OF_POSSIBLE_PITCHES = 25
-MINIMUM_PITCH = 24
-MAXIMUM_PITCH = MINIMUM_PITCH + NUMBER_OF_POSSIBLE_PITCHES - 1
-NUMBER_OF_POSSIBLE_PITCHES_DRUM = 13
-PITCH_STEP_DRUM = 2
-MINIMUM_PITCH_DRUM = 24
-MAXIMUM_PITCH_DRUM = MINIMUM_PITCH_DRUM + PITCH_STEP_DRUM*(NUMBER_OF_POSSIBLE_PITCHES_DRUM - 1)
-MINIMUM_NOTE_DURATION = 1 # ticks
-MS_PER_MINUTE = 60000.0
-TICKS_PER_BEAT = 12
-TICKS_PER_BEAT_DIV2 = TICKS_PER_BEAT/2
-MAXIMUM_BEATS = 12 # maximum beats per page
-NUMBER_OF_TRACKS = 5
-NUMBER_OF_PAGES = 2
-
-MINIMUM_AMPLITUDE = 0
-MAXIMUM_AMPLITUDE = 1
-
-DEFAULT_GRID = 3
-DEFAULT_GRID_DIV2 = DEFAULT_GRID / 2.0
-
-
-####################
-## ToolTips
-####################
-from Tooltips import Tooltips
-
-
-####################
-## KeyMapping
-####################
-
-LOOP_KEYS = [17, 18, 19, 20, 21, 32, 33, 34, 35, 45, 46, 47, 48, 51, 60, 61]
-# Key = Hardware Keycode Value = Note
-
-KEY_MAP_PIANO = {24:36, #Q
- 25:38, #W
- 26:40, #E
- 27:41, #R
- 28:43, #T
- 29:45, #Y
- 30:47, #U
- 31:48, #I
-
- 11:37, #2
- 12:39, #3
- 14:42, #5
- 15:44, #6
- 16:46, #7
-
- 39:25, #S
- 40:27, #D
- 42:30, #G
- 43:32, #H
- 44:34, #J
- 46:37, #L
-
- 52:24, #Z
- 53:26, #X
- 54:28, #C
- 55:29, #V
- 56:31, #B
- 57:33, #N
- 58:35, #M
- 59:36} #,
-
-KEY_MAP_NOTPIANO = {24:24, #Q
- 25:25, #W
- 26:26, #E
- 27:27, #R
- 28:28, #T
- 29:29, #Y
- 30:30, #U
- 31:31, #I
- 32:32, #O
- 33:33, #P
-
- 38:34, #A
- 39:35, #S
- 40:36, #D
- 41:37, #F
- 42:38, #G
- 43:39, #H
- 44:40, #J
- 45:41, #K
- 46:42, #L
-
- 52:43, #Z
- 53:44, #X
- 54:45, #C
- 55:46, #V
- 56:47, #B
- 57:48} #N
-
-KEY_MAP = KEY_MAP_PIANO
diff --git a/TamTamSynthLab.activity/common/Generation/Drunk.py b/TamTamSynthLab.activity/common/Generation/Drunk.py
deleted file mode 100644
index fb7b765..0000000
--- a/TamTamSynthLab.activity/common/Generation/Drunk.py
+++ /dev/null
@@ -1,162 +0,0 @@
-# Random:
-# Randomly choose, within a certain range, a new next value
-# arg 1: maxStepSize (negative value not allowed stepSize == 0)
-# arg 2: maximum value allowed
-
-import random
-
-class Drunk:
- def __init__( self, minValue, maxValue, trackLength=None ):
- self.minValue = min(minValue, maxValue)
- self.maxValue = max(minValue, maxValue)
- self.lastValue = random.randint( self.minValue, self.maxValue )
-
-
- def getNextValue( self, maxStepSize, maxValue ):
- if self.lastValue < 0 or self.lastValue > maxValue:
- return random.randint( self.minValue, maxValue )
-
- direction = self.getDirection( maxValue )
- stepSize = self.getStepSize( direction, abs(maxStepSize), maxValue )
-
- if maxStepSize < 0:
- minStepSize = 1
- else:
- minStepSize = 0
-
- self.lastValue += direction * random.randint( minStepSize, stepSize )
-
- if self.lastValue < self.minValue:
- self.lastValue = self.minValue
- elif self.lastValue > maxValue: #instead of 14...
- self.lastValue = maxValue
- else:
- self.lastValue = self.lastValue
-
- return self.lastValue
-
- def getDirection( self, maxValue ):
- if self.lastValue == 0:
- return 1
- elif self.lastValue == maxValue:
- return -1
- else:
- return random.choice( [ 1, -1 ] )
-
- def getStepSize( self, direction, maxStepSize, maxValue, ):
- if direction == -1:
- return min( maxStepSize, self.lastValue )
- else:
- return min( maxStepSize, maxValue - self.lastValue )
-
-class DroneAndJump( Drunk ):
- def __init__( self, minValue, maxValue, trackLength=None ):
- Drunk.__init__( self, minValue, maxValue, trackLength=None )
- self.minValue = min(minValue, maxValue)
- self.maxValue = max(minValue, maxValue)
- self.beforeLastValue = random.randint( self.minValue, self.maxValue ) #self.minValue
- self.lastValue = self.beforeLastValue + 1
-
- def getNextValue( self, maxStepSize, maxValue ):
- if self.beforeLastValue != self.lastValue:
- self.lastValue = self.beforeLastValue
- return self.beforeLastValue
-
- self.beforeLastValue = self.lastValue
- self.lastValue = Drunk.getNextValue( self, abs(maxStepSize), maxValue )
- return self.lastValue
-
- def getStepSize( self, direction, maxStepSize, maxValue ):
- if random.randint( 0, 100 ) < 42:
- return Drunk.getStepSize( self, direction, maxStepSize, maxValue )
- else:
- return Drunk.getStepSize( self, direction, 0, maxValue )
-
-class Repeter( Drunk ):
- def __init__( self, minValue, maxValue, trackLength=None ):
- Drunk.__init__( self, minValue, maxValue, trackLength=None)
- self.minValue = min(minValue, maxValue)
- self.maxValue = max(minValue, maxValue)
- self.lastValue = random.randint( self.minValue, self.maxValue)
-
- def getNextValue( self, maxStepSize, maxValue ):
- self.lastValue = Drunk.getNextValue( self, abs(maxStepSize), maxValue )
- return self.lastValue
-
- def getStepSize( self, direction, maxStepSize, maxValue ):
- if random.randint( 0, 100 ) < 35:
- return Drunk.getStepSize( self, direction, maxStepSize, maxValue )
- else:
- return Drunk.getStepSize( self, direction, 0, maxValue )
-
-class Loopseg( Drunk ):
- def __init__( self, minValue, maxValue, trackLength=None ):
- Drunk.__init__( self, minValue, maxValue, trackLength=None )
- self.recordedValues = []
- self.recordState = 2
- self.recordPlayback = 0
- self.loopPlayback = 1
- self.recordLength = random.randint( 3, 6 )
- self.recordLoopTime = random.randint( 1, 4 )
-
- def getNextValue( self, maxStepSize, maxValue ):
- if self.recordState == 2:
- self.lastValue = Drunk.getNextValue( self, maxStepSize, maxValue )
- self.recordState = random.choice([2, 2, 2, 1])
-
- if len(self.recordedValues) != self.recordLength and self.recordState == 1:
- self.lastValue = Drunk.getNextValue( self, maxStepSize, maxValue )
- self.recordedValues.append( self.lastValue )
- elif self.recordState == 1 or self.recordState == 0:
- self.recordState = 0
- if self.recordPlayback < self.recordLength:
- self.loopAround()
- else:
- if self.loopPlayback < self.recordLoopTime:
- self.recordPlayback = 0
- self.loopPlayback += 1
- self.loopAround()
- else:
- self.recordedValues = []
- self.recordState = 2
- self.recordPlayback = 0
- self.loopPlayback = 1
- self.recordLength = random.randint( 3, 6 )
- self.recordLoopTime = random.randint( 1, 4 )
- self.lastValue = Drunk.getNextValue( self, maxStepSize, maxValue )
- self.recordedValues = [self.lastValue]
- return self.lastValue
-
- def loopAround( self ):
- self.lastValue = self.recordedValues[self.recordPlayback]
- self.recordPlayback += 1
-
-class Line:
- def __init__(self, minValue, maxValue, trackLength=20):
- maxVal = max(minValue, maxValue)
- if maxVal == minValue:
- self.reverse = True
- minVal = maxValue
- self.lastValue = maxVal
- else:
- self.reverse = False
- minVal = minValue
- self.lastValue = minVal
-
- scale = float(maxVal - minVal)
- if self.reverse:
- self.inc = -scale/trackLength
- else:
- self.inc = scale/trackLength
-
- def getNextValue(self, rand, maxValue):
- self.val = self.lastValue + int(random.randint(0, rand)*random.choice([-0.5,0.5]))
- if self.val < 0:
- self.val = 0
- elif self.val > maxValue:
- self.val = maxValue
- else:
- self.val = self.val
- self.lastValue = self.val+self.inc
- return self.val
-
diff --git a/TamTamSynthLab.activity/common/Generation/GenerationConstants.py b/TamTamSynthLab.activity/common/Generation/GenerationConstants.py
deleted file mode 100644
index 9704048..0000000
--- a/TamTamSynthLab.activity/common/Generation/GenerationConstants.py
+++ /dev/null
@@ -1,185 +0,0 @@
-import random
-
-class GenerationConstants:
-
- TWO_ROOT_TWELVE = pow( 2, 1./12 )
- MAX_NOTES_PER_BAR = 12
-
- PHRASE_LENGTH = 4
- PHRASE_COMPLEXITY = .5
-
- TABLE_ONSET_VALUES = [ 3, 3, 6, 3, 6, 12, 4, 3, 6, 6, 12, 6, 12, 18, 8, 6, 12, 18, 12, 24, 12, 18, 36, 24, 36, 24, 48 ]
- LOOP_TABLE_ONSET_VALUES = [ 3, 3, 6, 3, 6, 12, 6, 3, 6, 6, 12, 6, 12, 18, 12, 6, 12, 18, 12, 24, 12, 18, 12, 24, 18, 24, 24 ]
-
- # scaling constants
- MAJOR = 0
- HARMONIC_MINOR = 1
- NATURAL_MINOR = 2
- PHRYGIEN = 3
- DORIEN = 4
- LYDIEN = 5
- MYXOLYDIEN = 6
-
- SCALES = { MAJOR : [ -12, -10, -8, -7, -5, -3, -1, 0, 2, 4, 5, 7, 9, 11, 12 ],
- HARMONIC_MINOR : [ -12, -10, -9, -7, -5, -4, -1, 0, 2, 3, 5, 7, 8, 11, 12 ],
- NATURAL_MINOR : [ -12, -10, -9, -7, -5, -4, -2, 0, 2, 3, 5, 7, 8, 10, 12 ],
- PHRYGIEN : [ -12, -11, -9, -7, -5, -4, -2, 0, 1, 3, 5, 7, 8, 10, 12 ],
- DORIEN : [ -12, -10, -9, -7, -5, -3, -2, 0, 2, 3, 5, 7, 9, 10, 12 ],
- LYDIEN : [ -12, -10, -8, -6, -5, -3, -1, 0, 2, 4, 6, 7, 9, 11, 12 ],
- MYXOLYDIEN : [ -12, -10, -8, -7, -5, -3, -2, 0, 2, 4, 5, 7, 9, 10, 12 ]}
-
-
- # Default parameters for algorithmic generation
-
- RYTHM_DENSITY_BANK = [.38, .26, .82, .48, .56, 1, 1, .91, 1, .91, .91, .32, 1, 1, .83, .6, .88]
- RYTHM_REGU_BANK = [.94, .95, .89, .73, .8, 1, 1, .75, 1, .75, .84, .93, 1, 1, .87, .62, .8]
- PITCH_REGU_BANK = [.04, 0, 0, .22, 0, .36, .35, .57, 0, 0, 0, 0, .28, .77, 0, 0, 0]
- PITCH_STEP_BANK = [.28, .48, .39, .38, .27, .4, 1, .55, .29, .15, .4, .26, .25, 1, .33, .22, .27]
- DURATION_BANK = [1, 1, 1, .97, 1, 1, 1, 1, 1, 1, .65, .86, 1, 1, .82, 1, .78]
- SILENCE_BANK = [.07, 0, .17, .28, .21, 0, .17, .17, .2, .32, .33, .08, .06, .11, .11, .06, .37]
- PATTERN_BANK = [0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,3]
- SCALE_BANK = [MAJOR, NATURAL_MINOR, LYDIEN, HARMONIC_MINOR, MYXOLYDIEN]
-
- chooseDefault = random.randint(0,4)
- DEFAULT_DENSITY = [.25, .88, .72, .25] #RYTHM_DENSITY_BANK[chooseDefault]
- DEFAULT_RYTHM_REGULARITY = [.75, .8, .85, .5] #RYTHM_REGU_BANK[chooseDefault]
- DEFAULT_PITCH_REGULARITY = [.5, .8, 0, .9] #PITCH_REGU_BANK[chooseDefault]
- DEFAULT_STEP = [.5, .3, 1, .85] #PITCH_STEP_BANK[chooseDefault]
- DEFAULT_DURATION = [.8, 1, .8, 1] #DURATION_BANK[chooseDefault]
- DEFAULT_SILENCE = [.2, .5, .25, .12] #SILENCE_BANK[chooseDefault]
- DEFAULT_PATTERN = [random.randint(0,3) for x in range(4)]
- DEFAULT_SCALE = SCALE_BANK[chooseDefault]
-
- DEFAULT_RYTHM_METHOD = 0
- DEFAULT_PITCH_METHOD = 0
- DEFAULT_PAN = 0.5
-
- DEFAULT_PITCH_VARIATION = 0 # 0 = 'melodic' 1 = 'harmonic'
- DEFAULT_RYTHM_VARIATION = 0 # 0 = 'Cellule' 1 = 'Xnoise'
-
- DEFAULT_TONIQUE = 36
-
- I = [ 0, 2, 4, 7, 9, 11, 14 ]
- II = [ 1, 3, 5, 8, 10, 12 ]
- III = [ 2, 4, 6, 9, 11, 13 ]
- IV = [ 0, 3, 5, 7, 10, 12, 14 ]
- V = [ 1, 4, 6, 8, 11, 13 ]
- VI = [ 0, 2, 5, 7, 9, 12, 14 ]
- VII = [ 1, 3, 6, 8, 10, 13 ]
-
- CHORDS_TABLE = [ I, V, I, II, V, I, VI, II, V, I, IV, VI, II, V, I, V, VI ]
-# CHORDS_TABLE = [I, V, I, V, I, V, I, V, I, V, I, V, I, V ]
- # pitch patterns constants
- # PITCH_PATTERNS = [ 'Drunk', 'DroneAndJump', 'Repeter', 'Loopseg' ]
-
- # Parameters for probability scaling function
- REPETITION_SCALE_MIN_MAPPING = 0
- REPETITION_SCALE_MAX_MAPPING = 25
- REPETITION_SCALE_STEPS = 25
- DENSITY_SCALE_MIN_MAPPING = 0
- DENSITY_SCALE_MAX_MAPPING = 38
- DENSITY_SCALE_STEPS = 38
- ARTICULATION_SCALE_MIN_MAPPING = .6
- ARTICULATION_SCALE_MAX_MAPPING = 1
- ARTICULATION_SCALE_STEPS = 10
-
- # Rythmic durations, in ticks, and how many to complete figure (celluleRythmSequence)
- DOUBLE_TICK_DUR = 3
- DOUBLE_HOW_MANY = 2
- HALF_TRIPLET_TICK_DUR = 4
- HALF_TRIPLET_HOW_MANY = 3
- HOLE_TRIPLET_TICK_DUR = 8
- HOLE_TRIPLET_HOW_MANY = 3
-
- # Random generators default values (xnoiseRythmSequence)
- RANDOM_BETA_PARAM = 0.004
- RANDOM_EXPO_PARAM = 5
- RANDOM_GAUSS_PARAM1 = 0.5
- RANDOM_GAUSS_PARAM2 = 0.1
- RANDOM_WEIBULL_PARAM1 = 0.5
-
- RANDOM_WEIBULL_PARAM2 = 2.5
-
- # Onsets probability tables (drumRythmSequence)
-
- PUNCH_ACCENTS = [ [],
- [ 0 ],
- [ 0, 1 ],
- [ 0, 2, 1 ],
- [ 0, 2, 3, 1 ],
- [ 0, 3, 2, 4, 1],
- [ 0, 3, 2, 5, 1, 4 ],
- [ 0, 2, 4, 6, 5, 3, 1 ],
- [ 0, 4, 2, 6, 3, 7, 5, 1 ],
- [ 0, 4, 6, 2, 8, 5, 3, 7, 1],
- [ 0, 6, 4, 8, 2, 5, 7, 3, 9, 1],
- [ 0, 4, 6, 10, 8, 2, 5, 7, 9, 3, 1],
- [0, 6, 4, 2, 8, 10, 7, 5, 3, 9, 11, 1] ]
-
-
- LOW_ACCENTS = [ [],
- [ 0 ],
- [ 0, 1 ],
- [ 0, 2, 1 ],
- [ 0, 2, 3, 1 ],
- [ 0, 3, 2, 4, 1 ],
- [ 0, 3, 2, 5, 1, 4 ],
- [ 0, 2, 4, 6, 5, 3, 1 ],
- [ 0, 4, 2, 6, 3, 7, 5, 1 ],
- [ 0, 4, 6, 2, 8, 5, 3, 7, 1 ],
- [ 0, 6, 4, 8, 2, 5, 7, 3, 9, 1 ],
- [ 0, 4, 6, 10, 8, 2, 5, 7, 9, 3, 1 ],
- [0, 6, 4, 2, 8, 10, 7, 5, 3, 9, 11, 1 ] ]
-
- MID_ACCENTS = [ [],
- [ 0, 1 ],
- [ 0, 2, 3, 1 ],
- [ 0, 2, 4, 3, 1, 5 ],
- [ 0, 4, 6, 2, 7, 1, 3, 5 ],
- [ 0, 6, 4, 8, 2, 1, 5, 3, 9, 7 ],
- [ 0, 6, 11, 5, 3, 9, 10, 2, 8, 7, 1, 4 ],
- [ 0, 4, 8, 12, 10, 13, 11, 9, 3, 2, 6, 5, 7, 1 ],
- [ 0, 8, 4, 12, 6, 14, 2, 10, 7, 15, 1, 9, 3, 11, 5, 13 ],
- [ 0, 8, 16, 4, 12, 14, 6, 2, 10, 7, 15, 1, 9, 3, 17, 11, 5, 13],
- [ 0, 10, 8, 4, 16, 12, 6, 14, 18, 2, 7, 9, 15, 3, 1, 19, 5, 11, 13, 17],
- [ 0, 8, 10, 16, 4, 20, 6, 12, 18, 14, 2, 9, 7, 3, 15, 21, 19, 1, 5, 11, 17, 13],
- [ 0, 10, 8, 4, 16, 6, 20, 22, 18, 12, 2, 14, 7, 9, 15, 3, 19, 1, 21, 5, 23, 17, 11, 13] ]
-
- HIGH_ACCENTS = [ [],
- [ 1, 0 ],
- [ 1, 3, 2, 0 ],
- [ 5, 1, 3, 4, 2, 0 ],
- [ 5, 3, 1, 7, 2, 6, 4, 0 ],
- [ 7, 9, 3, 5, 1, 2, 8, 4, 6, 0 ],
- [ 4, 1, 7, 5, 3, 9, 10, 2, 8, 11, 6, 0 ],
- [ 1, 7, 8, 5, 10, 13, 11, 9, 3, 2, 6, 12, 4, 0 ],
- [ 13, 5, 11, 3, 9, 1, 15, 10, 7, 2, 14, 6, 12, 4, 8, 0 ],
- [ 13, 5, 11, 17, 3, 9, 1, 15, 7, 10, 2, 6, 14, 12, 4, 16, 8, 0 ],
- [ 17, 13, 11, 5, 19, 1, 3, 15, 9, 7, 2, 18, 14, 6, 12, 16, 4, 8, 10, 0 ],
- [ 13, 17, 11, 5, 1, 19, 21, 15, 3, 7, 9, 2, 14, 18, 12, 6, 20, 4, 16, 10, 8, 0 ],
- [ 13, 11, 17, 23, 5, 21, 1, 19, 3, 15, 9, 7, 14, 2, 12, 18, 22, 20, 6, 16, 4, 8, 10, 0 ] ]
-
- DRUM_PUNCH_ACCENTS = [[], [0], [0, 12], [0, 24, 12], [0, 24, 36, 12], [0, 36, 24, 48, 12], [0, 36, 24, 60, 12, 48], [0, 24, 48, 72, 60, 36, 12], [0, 48, 24, 72, 36, 84, 60, 12], [0, 48, 72, 24, 96, 60, 36, 84, 12], [0, 72, 48, 96, 24, 60, 84, 36, 108, 12], [0, 48, 72, 120, 96, 24, 60, 84, 108, 36, 12], [0, 72, 48, 24, 96, 120, 84, 60, 36, 108, 132, 12]]
- DRUM_LOW_ACCENTS = [[], [0], [0, 12], [0, 24, 12], [0, 24, 36, 12], [0, 36, 24, 48, 12], [0, 36, 24, 60, 12, 48], [0, 24, 48, 72, 60, 36, 12], [0, 48, 24, 72, 36, 84, 60, 12], [0, 48, 72, 24, 96, 60, 36, 84, 12], [0, 72, 48, 96, 24, 60, 84, 36, 108, 12], [0, 48, 72, 120, 96, 24, 60, 84, 108, 36, 12], [0, 72, 48, 24, 96, 120, 84, 60, 36, 108, 132, 12]]
- DRUM_MID_ACCENTS = [[], [0, 6], [0, 12, 18, 6], [0, 12, 24, 18, 6, 30], [0, 24, 36, 12, 42, 6, 18, 30], [0, 36, 24, 48, 12, 6, 30, 18, 54, 42], [0, 36, 66, 30, 18, 54, 60, 12, 48, 42, 6, 24], [0, 24, 48, 72, 60, 78, 66, 54, 18, 12, 36, 30, 42, 6], [0, 48, 24, 72, 36, 84, 12, 60, 42, 90, 6, 54, 18, 66, 30, 78], [0, 48, 96, 24, 72, 84, 36, 12, 60, 42, 90, 6, 54, 18, 102, 66, 30, 78], [0, 60, 48, 24, 96, 72, 36, 84, 108, 12, 42, 54, 90, 18, 6, 114, 30, 66, 78, 102], [0, 48, 60, 96, 24, 120, 36, 72, 108, 84, 12, 54, 42, 18, 90, 126, 114, 6, 30, 66, 102, 78], [0, 60, 48, 24, 96, 36, 120, 132, 108, 72, 12, 84, 42, 54, 90, 18, 114, 6, 126, 30, 138, 102, 66, 78]]
- DRUM_HIGH_ACCENTS = [[], [6, 0], [6, 18, 12, 0], [30, 6, 18, 24, 12, 0], [30, 18, 6, 42, 12, 36, 24, 0], [42, 54, 18, 30, 6, 12, 48, 24, 36, 0], [24, 6, 42, 30, 18, 54, 60, 12, 48, 66, 36, 0], [6, 42, 48, 30, 60, 78, 66, 54, 18, 12, 36, 72, 24, 0], [78, 30, 66, 18, 54, 6, 90, 60, 42, 12, 84, 36, 72, 24, 48, 0], [78, 30, 66, 102, 18, 54, 6, 90, 42, 60, 12, 36, 84, 72, 24, 96, 48, 0], [102, 78, 66, 30, 114, 6, 18, 90, 54, 42, 12, 108, 84, 36, 72, 96, 24, 48, 60, 0], [78, 102, 66, 30, 6, 114, 126, 90, 18, 42, 54, 12, 84, 108, 72, 36, 120, 24, 96, 60, 48, 0], [78, 66, 102, 138, 30, 126, 6, 114, 18, 90, 54, 42, 84, 12, 72, 108, 132, 120, 36, 96, 24, 48, 60, 0]]
-
- # Gain boundaries
- GAIN_MAX_BOUNDARY = 1.
- GAIN_MID_MAX_BOUNDARY = .9
- GAIN_MID_MIN_BOUNDARY = .75
- GAIN_MIN_BOUNDARY = .65
-
- # pitch mapping for drum kit
- DRUMPITCH = {25: 24, 27: 26, 29: 28, 31: 30, 33: 32, 35: 34, 37: 36, 39: 38, 41: 40, 43: 42, 45: 44, 47: 46 }
-
- DRUM_COMPLEXITY1 = [ [ 24 ], [30] , [ 40 ], [ 46 ] ]
- DRUM_COMPLEXITY2 = [ [ 24, 28 ], [ 30, 32 ], [ 36, 40 ], [ 46, 48 ] ]
- DRUM_COMPLEXITY3 = [ [ 24, 26, 28 ], [ 30, 32, 34 ], [ 36, 38, 40 ], [ 42, 46, 48 ] ]
- DRUM_COMPLEXITY4 = [ [ 24, 26, 28 ], [ 30, 32, 34 ], [ 36, 38, 40 ], [ 42, 44, 46, 48 ] ]
-
- TRANSPOSE = [0.5, 0.52973154717964765, 0.56123102415468651, 0.59460355750136051, 0.6299605249474366, 0.66741992708501718, 0.70710678118654757, 0.74915353843834076, 0.79370052598409979, 0.8408964152537145, 0.89089871814033927, 0.94387431268169353, 1.0, 1.0594630943592953, 1.122462048309373, 1.189207115002721, 1.2599210498948732, 1.3348398541700344, 1.4142135623730951, 1.4983070768766815, 1.5874010519681994, 1.681792830507429, 1.7817974362806785, 1.8877486253633868, 2.0]
-
- CELLULES_MARKERS = [ 8, 16, 21, 24 ]
- CELLULES = [ [ 3, 3, 3, 3 ], [ 3, 3, 6 ], [ 3, 6, 3 ], [ 6, 3, 3 ], [ 4, 4, 4 ], [ 4, 8 ], [ 8, 4 ], [ 6, 6 ], [ 12 ], [ 6, 12, 6 ], [ 8, 8, 8 ], [ 8, 16 ], [ 16, 8 ], [ 12, 12 ], [ 18, 6 ],
- [ 6, 18 ], [ 24 ], [ 12, 12, 12 ], [ 18, 18 ], [ 24, 12 ], [ 12, 24 ], [ 36 ], [ 12, 24, 12 ], [ 24, 24 ], [ 48 ] ]
diff --git a/TamTamSynthLab.activity/common/Generation/GenerationParametersWindow.py b/TamTamSynthLab.activity/common/Generation/GenerationParametersWindow.py
deleted file mode 100644
index 5a3ea31..0000000
--- a/TamTamSynthLab.activity/common/Generation/GenerationParametersWindow.py
+++ /dev/null
@@ -1,383 +0,0 @@
-import pygtk
-pygtk.require('2.0')
-import gtk
-import shelve
-from Generation.Generator import GenerationParameters
-from Generation.GenerationConstants import GenerationConstants
-from Util.ThemeWidgets import *
-import Config
-
-Tooltips = Config.Tooltips()
-
-class GenerationParametersWindow( gtk.VBox ):
- def __init__( self, generateFunction, handleCloseWindowCallback ):
- gtk.VBox.__init__( self )
- self.handleCloseWindowCallback = handleCloseWindowCallback
- self.tooltips = gtk.Tooltips()
-
- self.rythmMethod = GenerationConstants.DEFAULT_RYTHM_METHOD
- self.pitchMethod = GenerationConstants.DEFAULT_PITCH_METHOD
- self.pattern = GenerationConstants.DEFAULT_PATTERN
- self.scale = GenerationConstants.DEFAULT_SCALE
- self.sourceVariation = 1
- self.generateFunction = generateFunction
- self.setupWindow()
- self.show_all()
-
- def setupWindow( self ):
- self.GUI = {}
- self.rythmDensity = GenerationConstants.DEFAULT_DENSITY
- self.rythmRegularity = GenerationConstants.DEFAULT_RYTHM_REGULARITY
- self.pitchRegularity = GenerationConstants.DEFAULT_PITCH_REGULARITY
- self.pitchStep = GenerationConstants.DEFAULT_STEP
- self.duration = GenerationConstants.DEFAULT_DURATION
- self.silence = GenerationConstants.DEFAULT_SILENCE
-
- # Generation Panel Setup
- generationBox = RoundVBox(fillcolor=Config.INST_BCK_COLOR, bordercolor=Config.PANEL_BCK_COLOR)
- generationBox.set_border_width(1)
- generationBox.set_radius(10)
- XYSlidersBox = gtk.HBox()
-
- self.col = gtk.gdk.color_parse(Config.PANEL_COLOR)
-
- XYSlider1Box = gtk.VBox()
- XYSlider1UpBox = RoundHBox(fillcolor=Config.PANEL_COLOR, bordercolor=Config.INST_BCK_COLOR)
- XYSlider1UpBox.set_border_width(3)
- XYSlider1UpBox.set_radius(10)
- self.XYSlider1DownBox = RoundHBox(fillcolor=Config.PANEL_COLOR, bordercolor=Config.INST_BCK_COLOR)
- self.XYSlider1DownBox.set_border_width(3)
- self.XYSlider1DownBox.set_radius(10)
-
- self.slider1Label = gtk.DrawingArea()
- self.slider1Label.modify_bg(gtk.STATE_NORMAL, self.col)
- colormap = self.slider1Label.get_colormap()
- self.bgColor = colormap.alloc_color( Config.PANEL_COLOR, True, True )
- self.slider1Label.set_size_request(228, 60)
- self.slider1Label.connect("expose-event", self.draw )
- XYSliderBox1 = self.formatRoundBox( RoundFixed(), Config.PANEL_COLOR )
- XYSliderBox1.set_size_request( 250, 250 )
- self.GUI["XYButton1"] = ImageToggleButton( Config.IMAGE_ROOT+"XYbut.png", Config.IMAGE_ROOT+"XYbutDown.png", backgroundFill=Config.PANEL_COLOR )
- self.XAdjustment1 = gtk.Adjustment( self.rythmDensity*100, 0, 100, 1, 1, 1 )
- self.XAdjustment1.connect("value-changed", self.handleXAdjustment1)
- self.YAdjustment1 = gtk.Adjustment( self.rythmRegularity*100, 0, 100, 1, 1, 1 )
- self.YAdjustment1.connect("value-changed", self.handleYAdjustment1)
- self.GUI["xySlider1"] = XYSlider( XYSliderBox1, self.GUI["XYButton1"], self.XAdjustment1, self.YAdjustment1, False, True )
- XYSlider1UpBox.pack_start( self.GUI["xySlider1"], False, False )
-
- self.XYSlider1DownBox.pack_start(self.slider1Label, False, False, 5)
- XYSlider1Box.pack_start(XYSlider1UpBox)
- XYSlider1Box.pack_start(self.XYSlider1DownBox)
- XYSlidersBox.pack_start(XYSlider1Box, False, False, 5)
-
-
- XYSlider2Box = gtk.VBox()
- XYSlider2UpBox = RoundHBox(fillcolor=Config.PANEL_COLOR, bordercolor=Config.INST_BCK_COLOR)
- XYSlider2UpBox.set_border_width(3)
- XYSlider2UpBox.set_radius(10)
- self.XYSlider2DownBox = RoundHBox(fillcolor=Config.PANEL_COLOR, bordercolor=Config.INST_BCK_COLOR)
- self.XYSlider2DownBox.set_border_width(3)
- self.XYSlider2DownBox.set_radius(10)
-
- self.slider2Label = gtk.DrawingArea()
- self.slider2Label.modify_bg(gtk.STATE_NORMAL, self.col)
- self.slider2Label.set_size_request(228, 60)
- self.slider2Label.connect("expose-event", self.draw2 )
- XYSliderBox2 = self.formatRoundBox( RoundFixed(), Config.PANEL_COLOR )
- XYSliderBox2.set_size_request( 250, 250 )
- self.GUI["XYButton2"] = ImageToggleButton( Config.IMAGE_ROOT+"XYbut.png", Config.IMAGE_ROOT+"XYbutDown.png", backgroundFill=Config.PANEL_COLOR )
- self.XAdjustment2 = gtk.Adjustment( self.pitchRegularity*100, 0, 100, 1, 1, 1 )
- self.XAdjustment2.connect("value-changed", self.handleXAdjustment2)
- self.YAdjustment2 = gtk.Adjustment( self.pitchStep*100, 0, 100, 1, 1, 1 )
- self.YAdjustment2.connect("value-changed", self.handleYAdjustment2)
- self.GUI["xySlider2"] = XYSlider( XYSliderBox2, self.GUI["XYButton2"], self.XAdjustment2, self.YAdjustment2, False, True )
- XYSlider2UpBox.pack_start( self.GUI["xySlider2"], False, False )
-
- self.XYSlider2DownBox.pack_start(self.slider2Label, False, False, 5)
- XYSlider2Box.pack_start(XYSlider2UpBox)
- XYSlider2Box.pack_start(self.XYSlider2DownBox)
- XYSlidersBox.pack_start(XYSlider2Box, False, False, 5)
-
-
- XYSlider3Box = gtk.VBox()
- XYSlider3UpBox = RoundHBox(fillcolor=Config.PANEL_COLOR, bordercolor=Config.INST_BCK_COLOR)
- XYSlider3UpBox.set_border_width(3)
- XYSlider3UpBox.set_radius(10)
- self.XYSlider3DownBox = RoundHBox(fillcolor=Config.PANEL_COLOR, bordercolor=Config.INST_BCK_COLOR)
- self.XYSlider3DownBox.set_border_width(3)
- self.XYSlider3DownBox.set_radius(10)
-
- self.slider3Label = gtk.DrawingArea()
- self.slider3Label.modify_bg(gtk.STATE_NORMAL, self.col)
- self.slider3Label.set_size_request(228, 60)
- self.slider3Label.connect("expose-event", self.draw3 )
- XYSliderBox3 = self.formatRoundBox( RoundFixed(), Config.PANEL_COLOR )
- XYSliderBox3.set_size_request( 250, 250 )
- self.GUI["XYButton3"] = ImageToggleButton( Config.IMAGE_ROOT+"XYbut.png", Config.IMAGE_ROOT+"XYbutDown.png", backgroundFill=Config.PANEL_COLOR )
- self.XAdjustment3 = gtk.Adjustment( self.duration*100, 0, 100, 1, 1, 1 )
- self.XAdjustment3.connect("value-changed", self.handleXAdjustment3)
- self.YAdjustment3 = gtk.Adjustment( self.silence*100, 0, 100, 1, 1, 1 )
- self.YAdjustment3.connect("value-changed", self.handleYAdjustment3)
- self.GUI["xySlider3"] = XYSlider( XYSliderBox3, self.GUI["XYButton3"], self.XAdjustment3, self.YAdjustment3, False, True )
- XYSlider3UpBox.pack_start( self.GUI["xySlider3"], False, False )
-
- self.XYSlider3DownBox.pack_start(self.slider3Label, False, False, 5)
- XYSlider3Box.pack_start(XYSlider3UpBox)
- XYSlider3Box.pack_start(self.XYSlider3DownBox)
- XYSlidersBox.pack_start(XYSlider3Box, False, False, 5)
-
- generationBox.pack_start(XYSlidersBox, False, False, 5)
-
- self.pack_start(generationBox)
-
- # Meta Algo panel setup
- metaAlgoBox = RoundVBox(fillcolor=Config.INST_BCK_COLOR, bordercolor=Config.PANEL_BCK_COLOR)
- metaAlgoBox.set_border_width(1)
- metaAlgoBox.set_radius(10)
-
- methodBox = gtk.HBox()
- self.firstButton = None
- methodNames = ['drunk', 'droneJump', 'repeat', 'loopSeg']
- for meth in methodNames:
- self.GUI[meth] = ImageRadioButton(self.firstButton, Config.IMAGE_ROOT + meth + '.png', Config.IMAGE_ROOT + meth + 'Down.png', Config.IMAGE_ROOT + meth + 'Over.png', backgroundFill=Config.INST_BCK_COLOR )
- if self.firstButton == None:
- self.firstButton = self.GUI[meth]
- self.GUI[meth].connect('clicked' , self.handleMethod , methodNames.index(meth))
- if methodNames.index(meth) == self.pattern:
- self.GUI[meth].set_active(True)
- methodBox.pack_start(self.GUI[meth], False, False)
- metaAlgoBox.pack_start(methodBox, False, False, 5)
-
- scaleBox = gtk.HBox()
- self.firstButton = None
- scaleNames = ['majorKey', 'minorHarmKey', 'minorKey', 'phrygienKey', 'dorienKey', 'lydienKey', 'myxoKey']
- for scale in scaleNames:
- self.GUI[scale] = ImageRadioButton(self.firstButton, Config.IMAGE_ROOT + scale + '.png', Config.IMAGE_ROOT + scale + 'Down.png', Config.IMAGE_ROOT + scale + 'Over.png', backgroundFill=Config.INST_BCK_COLOR )
- if self.firstButton == None:
- self.firstButton = self.GUI[scale]
- self.GUI[scale].connect('clicked' , self.handleScale , scaleNames.index(scale))
- if scaleNames.index(scale) == self.scale:
- self.GUI[scale].set_active(True)
- scaleBox.pack_start(self.GUI[scale], False, False)
- metaAlgoBox.pack_start(scaleBox, False, False)
-
- self.pack_start(metaAlgoBox)
-
- # Transport Panel Setup
- transportBox = RoundVBox(fillcolor=Config.INST_BCK_COLOR, bordercolor=Config.PANEL_BCK_COLOR)
- transportBox.set_border_width(1)
- transportBox.set_radius(10)
-
- # Create save/load presets
- transButtonBox = RoundHBox(fillcolor=Config.INST_BCK_COLOR, bordercolor=Config.PANEL_BCK_COLOR)
- transButtonBox.set_radius(10)
-
- self.GUI["saveButton"] = ImageButton(Config.IMAGE_ROOT + '/save.png', backgroundFill=Config.INST_BCK_COLOR )
- self.GUI["saveButton"].connect("clicked", self.handleSave, None)
- #transButtonBox.pack_start(self.GUI["saveButton"], False, False, 2)
-
- self.GUI["loadButton"] = ImageButton(Config.IMAGE_ROOT + '/load.png', backgroundFill=Config.INST_BCK_COLOR )
- self.GUI["loadButton"].connect("clicked", self.handleLoad, None)
- #transButtonBox.pack_start(self.GUI["loadButton"], False, False, 2)
-
- # create cancel/check button
- self.GUI["checkButton"] = ImageButton(Config.IMAGE_ROOT + 'check.png', backgroundFill=Config.INST_BCK_COLOR )
- self.GUI["checkButton"].connect("clicked", self.generate)
-
- self.GUI["cancelButton"] = ImageButton(Config.IMAGE_ROOT + 'closeA.png', backgroundFill=Config.INST_BCK_COLOR )
- self.GUI["cancelButton"].connect("clicked", self.cancel)
-
- # create play/stop buttons
- playButton = ImageToggleButton(Config.IMAGE_ROOT + 'playTogOff.png', Config.IMAGE_ROOT + 'playTogOn.png', backgroundFill=Config.INST_BCK_COLOR )
- selButton = ImageToggleButton(Config.IMAGE_ROOT + 'playAll.png', Config.IMAGE_ROOT + 'playSel.png', backgroundFill=Config.INST_BCK_COLOR )
- transButtonBox.pack_end(self.GUI["checkButton"], False, False, 10)
- transButtonBox.pack_end(self.GUI["cancelButton"], False, False)
- #transButtonBox.pack_end(selButton, False, False)
- #transButtonBox.pack_end(playButton, False, False)
- transportBox.pack_start(transButtonBox)
-
- self.pack_start(transportBox)
- self.loadPixmaps()
- # set tooltips
- for key in self.GUI:
- if Tooltips.ALGO.has_key(key):
- self.tooltips.set_tip(self.GUI[key],Tooltips.ALGO[key])
-
- def loadPixmaps( self ):
- win = gtk.gdk.get_default_root_window()
- self.gc = gtk.gdk.GC( win )
- self.gc.foreground = self.bgColor
-
- self.arrowPixmap = []
- for i in range(2):
- pix = gtk.gdk.pixbuf_new_from_file(Config.IMAGE_ROOT + ['arrowSide.png', 'arrowUp.png'][i])
- map = gtk.gdk.Pixmap( win, pix.get_width(), pix.get_height() )
- map.draw_rectangle( self.gc, True, 0, 0, pix.get_width(), pix.get_height() )
- map.draw_pixbuf( self.gc, pix, 0, 0, 0, 0, pix.get_width(), pix.get_height(), gtk.gdk.RGB_DITHER_NONE )
- self.arrowPixmap.append(map)
-
- self.rythDensPixmap = []
- self.rythRegPixmap = []
- self.pitchRegPixmap = []
- self.pitchStepPixmap = []
- self.durPixmap = []
- self.silencePixmap = []
- pixmaps = [self.rythDensPixmap, self.rythRegPixmap, self.pitchRegPixmap, self.pitchStepPixmap, self.durPixmap, self.silencePixmap]
- pixmapNames = ['rythDens', 'rythReg', 'pitReg', 'pitStep', 'durLen', 'durDens']
-
- for inc in range(6):
- imgName = pixmapNames[inc]
- pixmap = pixmaps[inc]
- for i in range(6):
- pix = gtk.gdk.pixbuf_new_from_file(Config.IMAGE_ROOT + imgName + str(i+1) + '.png')
- map = gtk.gdk.Pixmap( win, pix.get_width(), pix.get_height() )
- map.draw_rectangle( self.gc, True, 0, 0, pix.get_width(), pix.get_height() )
- map.draw_pixbuf( self.gc, pix, 0, 0, 0, 0, pix.get_width(), pix.get_height(), gtk.gdk.RGB_DITHER_NONE )
- pixmap.append(map)
-
-
- def draw( self, widget, event ):
- imgX = 5 - int(self.rythmDensity * 5)
- imgY = 5 - int(self.rythmRegularity * 5)
- widget.window.draw_drawable( self.gc, self.arrowPixmap[0], 0, 0, 0, 18, 24, 24 )
- widget.window.draw_drawable( self.gc, self.rythDensPixmap[imgX], 0, 0, 24, 0, 90, 60 )
- widget.window.draw_drawable( self.gc, self.arrowPixmap[1], 0, 0, 114, 18, 24, 24 )
- widget.window.draw_drawable( self.gc, self.rythRegPixmap[imgY], 0, 0, 138, 0, 90, 60 )
- return True
-
- def draw2( self, widget, event ):
- imgX = 5 - int(self.pitchRegularity * 5)
- imgY = 5 - int(self.pitchStep * 5)
- widget.window.draw_drawable( self.gc, self.arrowPixmap[0], 0, 0, 0, 18, 24, 24 )
- widget.window.draw_drawable( self.gc, self.pitchRegPixmap[imgX], 0, 0, 24, 0, 90, 60 )
- widget.window.draw_drawable( self.gc, self.arrowPixmap[1], 0, 0, 114, 18, 24, 24 )
- widget.window.draw_drawable( self.gc, self.pitchStepPixmap[imgY], 0, 0, 138, 0, 90, 60 )
- return True
-
- def draw3( self, widget, event ):
- imgX = int(self.duration * 5)
- imgY = int(self.silence * 5)
- widget.window.draw_drawable( self.gc, self.arrowPixmap[0], 0, 0, 0, 18, 24, 24 )
- widget.window.draw_drawable( self.gc, self.durPixmap[imgX], 0, 0, 24, 0, 90, 60 )
- widget.window.draw_drawable( self.gc, self.arrowPixmap[1], 0, 0, 114, 18, 24, 24 )
- widget.window.draw_drawable( self.gc, self.silencePixmap[imgY], 0, 0, 138, 0, 90, 60 )
- return True
-
-
- def handleXAdjustment1( self, data ):
- self.rythmDensity = self.XAdjustment1.value * .01
- self.slider1Label.queue_draw()
-
- def handleYAdjustment1( self, data ):
- self.rythmRegularity = self.YAdjustment1.value * .01
- self.slider1Label.queue_draw()
-
- def handleXAdjustment2( self, data ):
- self.pitchRegularity = self.XAdjustment2.value * .01
- self.slider2Label.queue_draw()
-
- def handleYAdjustment2( self, data ):
- self.pitchStep = self.YAdjustment2.value * .01
- self.slider2Label.queue_draw()
-
- def handleXAdjustment3( self, data ):
- self.duration = self.XAdjustment3.value * .01
- self.slider3Label.queue_draw()
-
- def handleYAdjustment3( self, data ):
- self.silence = self.YAdjustment3.value * .01
- self.slider3Label.queue_draw()
-
-
- def getGenerationParameters( self ):
- return GenerationParameters( self.rythmDensity,
- self.rythmRegularity,
- self.pitchStep,
- self.pitchRegularity,
- self.duration,
- self.silence,
- self.rythmMethod,
- self.pitchMethod,
- self.pattern,
- self.scale )
-
- def cancel( self, widget, data=None ):
- self.handleCloseWindowCallback()
-
- def generate(self, widget, data=None):
- self.generateFunction( self.getGenerationParameters() )
- self.handleCloseWindowCallback()
-
- def handleMethod( self, widget, method ):
- if widget.get_active():
- self.pattern = method
-
- def handleScale( self, widget, scale ):
- if widget.get_active():
- self.scale = scale
-
- def formatRoundBox( self, box, fillcolor ):
- box.set_radius( 10 )
- box.set_border_width( 1 )
- box.set_fill_color( fillcolor )
- box.set_border_color( Config.INST_BCK_COLOR )
- return box
-
-
-#=========================== PRESETS ================================
-
- def handleSave(self, widget, data):
- chooser = gtk.FileChooserDialog(title=None,action=gtk.FILE_CHOOSER_ACTION_SAVE, buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,gtk.STOCK_SAVE,gtk.RESPONSE_OK))
-
- if chooser.run() == gtk.RESPONSE_OK:
- try:
- print 'INFO: save preset file %s' % chooser.get_filename()
- f = shelve.open( chooser.get_filename(), 'n')
- self.saveState(f)
- f.close()
- except IOError:
- print 'ERROR: failed to save preset to file %s' % chooser.get_filename()
-
- chooser.destroy()
-
- def handleLoad(self, widget, data):
-
- chooser = gtk.FileChooserDialog(title=None,action=gtk.FILE_CHOOSER_ACTION_OPEN, buttons=(gtk.STOCK_CANCEL,gtk.RESPONSE_CANCEL,gtk.STOCK_OPEN,gtk.RESPONSE_OK))
-
- if chooser.run() == gtk.RESPONSE_OK:
- try:
- print 'INFO: load preset state from file %s' % chooser.get_filename()
- f = shelve.open( chooser.get_filename(), 'r')
- self.loadState(f)
- f.close()
- except IOError:
- print 'ERROR: failed to load preset state from file %s' % chooser.get_filename()
-
- def loadState( self, state ):
- pass
- self.rythmDensity = state['rythmDensity']
- self.rythmRegularity = state['rythmRegularity']
- self.pitchRegularity = state['pitchRegularity']
- self.pitchStep = state['pitchStep']
- self.duration = state['duration']
- self.silence = state['silence']
- self.pattern = state['pattern']
- self.scale = state['scale']
-
- self.XAdjustment1.set_value(self.rythmDensity*100)
- self.YAdjustment1.set_value(self.rythmRegularity*100)
- self.XAdjustment2.set_value(self.pitchRegularity*100)
- self.YAdjustment2.set_value(self.pitchStep*100)
- self.XAdjustment3.set_value(self.duration*100)
- self.YAdjustment3.set_value(self.silence*100)
-
- def saveState( self, state ):
- pass
- state['rythmDensity'] = self.rythmDensity
- state['rythmRegularity'] = self.rythmRegularity
- state['pitchRegularity'] = self.pitchRegularity
- state['pitchStep'] = self.pitchStep
- state['duration'] = self.duration
- state['silence'] = self.silence
- state['pattern'] = self.pattern
- state['scale'] = self.scale
diff --git a/TamTamSynthLab.activity/common/Generation/GenerationPitch.py b/TamTamSynthLab.activity/common/Generation/GenerationPitch.py
deleted file mode 100644
index 4c34e8f..0000000
--- a/TamTamSynthLab.activity/common/Generation/GenerationPitch.py
+++ /dev/null
@@ -1,40 +0,0 @@
-import random
-import Drunk
-
-import common.Config as Config
-from common.Generation.GenerationConstants import GenerationConstants
-
-class GenerationPitch:
- def __init__( self ):
- MIN = 0
- MAX = 14
- self.drunkMethod = Drunk.Drunk( MIN, MAX )
- self.droneMethod = Drunk.DroneAndJump( MIN, MAX )
- self.repeatMethod = Drunk.Repeter( MIN, MAX )
- self.loopMethod = Drunk.Loopseg( MIN, MAX )
- self.methodList = [self.drunkMethod, self.droneMethod, self.repeatMethod, self.loopMethod]
-
- def drunkPitchSequence(self, length, parameters, table_pitch, trackId):
- pitchSequence = []
- append = pitchSequence.append
- numberOfPitch = int( ( 1 - (parameters.pitchRegularity[trackId]*.8) ) * 10 + 1 )
- step = -(int(parameters.step[trackId] * 10))
- max = len(table_pitch)-1
- nextValue = self.methodList[parameters.pattern[trackId]].getNextValue
- tonique = GenerationConstants.DEFAULT_TONIQUE
- for i in range(numberOfPitch):
- append((table_pitch[nextValue(step, max)]) + tonique)
- restOfNotes = range( length - numberOfPitch )
- for i in restOfNotes:
- position = i % numberOfPitch
- append( pitchSequence[ position ] )
- return pitchSequence
-
- def drumPitchSequence(self, length, parameters, drumPitch, table_pitch=None):
- pitchSequence = []
- append = pitchSequence.append
- max = len(drumPitch) - 1
- rand = random.randint
- for i in range(length):
- append(drumPitch[ rand( 0, max ) ] )
- return pitchSequence
diff --git a/TamTamSynthLab.activity/common/Generation/GenerationRythm.py b/TamTamSynthLab.activity/common/Generation/GenerationRythm.py
deleted file mode 100644
index 583f642..0000000
--- a/TamTamSynthLab.activity/common/Generation/GenerationRythm.py
+++ /dev/null
@@ -1,215 +0,0 @@
-import Utils
-import random
-from math import sqrt
-import common.Util.InstrumentDB as InstrumentDB
-import common.Config as Config
-from common.Generation.GenerationConstants import GenerationConstants
-
-class GenerationRythm:
- def __init__(self):
- self.instrumentDB = InstrumentDB.getRef()
-
- def celluleRythmSequence(self, parameters, barLength, trackId, trackInstrument=None ):
- rythmSequence = [0, ]
- self.count = 0
- lastOnsetTime = 0
- onsetLen = len(GenerationConstants.TABLE_ONSET_VALUES)
-
- onsetValue = int( ( 1 - (parameters.density[trackId]*0.98+0.02) ) * onsetLen )
- onsetDeviation = int( ( 1 - parameters.rythmRegularity[trackId] ) * 20 )
- currentOnsetValue = onsetValue + ( random.randint( 0, onsetDeviation ) - ( onsetDeviation / 2 ) )
- if currentOnsetValue < 0:
- currentOnsetValue = 0
- elif currentOnsetValue >= onsetLen:
- currentOnsetValue = onsetLen - 1
- else:
- currentOnsetValue = currentOnsetValue
-
- onsetDelta = GenerationConstants.TABLE_ONSET_VALUES[ currentOnsetValue ]
- listLen = range( int( barLength / Config.TICKS_PER_BEAT * 8 ) )
- randInt = random.randint
- for i in listLen:
- if self.count == 0:
- currentOnsetValue = onsetValue + ( randInt( 0, onsetDeviation ) - ( onsetDeviation / 2 ) )
- if currentOnsetValue < 0:
- currentOnsetValue = 0
- elif currentOnsetValue >= onsetLen:
- currentOnsetValue = onsetLen - 1
- else:
- currentOnsetValue = currentOnsetValue
- onsetDelta = GenerationConstants.TABLE_ONSET_VALUES[ currentOnsetValue ]
-
- if onsetDelta == GenerationConstants.DOUBLE_TICK_DUR:
- if self.count < (GenerationConstants.DOUBLE_HOW_MANY - 1):
- self.count += 1
- else:
- self.count = 0
- onsetTime = onsetDelta + lastOnsetTime
- lastOnsetTime = onsetTime
- if onsetTime < barLength-2:
- rythmSequence.append(onsetTime)
- continue
- else:
- break
- elif onsetDelta == GenerationConstants.HALF_TRIPLET_TICK_DUR:
- if self.count < (GenerationConstants.HALF_TRIPLET_HOW_MANY - 1):
- self.count += 1
- else:
- self.count = 0
- onsetTime = onsetDelta + lastOnsetTime
- lastOnsetTime = onsetTime
- if onsetTime < barLength-2:
- rythmSequence.append(onsetTime)
- continue
- else:
- break
- elif onsetDelta == GenerationConstants.HOLE_TRIPLET_TICK_DUR:
- if self.count < (GenerationConstants.HOLE_TRIPLET_HOW_MANY - 1):
- self.count += 1
- else:
- self.count = 0
- onsetTime = onsetDelta + lastOnsetTime
- lastOnsetTime = onsetTime
- if onsetTime < barLength-2:
- rythmSequence.append(onsetTime)
- continue
- else:
- break
-
- onsetTime = onsetDelta + lastOnsetTime
- lastOnsetTime = onsetTime
- if onsetTime < barLength-2:
- rythmSequence.append(onsetTime)
- else:
- break
- return rythmSequence
-
- def xnoiseRythmSequence(self, parameters, barLength ):
- rythmSequence = []
- onsetTime = None
- randomParamScaler = parameters.rythmRegularity[trackId] * 2 + 0.5
- whichRandomGenerator = random.randint(0, 4)
- maximumNumberOfNotes = int( (parameters.density[trackId]) * GenerationConstants.MAX_NOTES_PER_BAR)
-
- for i in range(maximumNumberOfNotes):
- while onsetTime in rythmSequence:
- if whichRandomGenerator == 0:
- onsetTime = random.expovariate(GenerationConstants.RANDOM_EXPO_PARAM * randomParamScaler)
- elif whichRandomGenerator == 1:
- onsetTime = 1 - random.expovariate(GenerationConstants.RANDOM_EXPO_PARAM * randomParamScaler)
- elif whichRandomGenerator == 2:
- onsetTime = random.gauss(GenerationConstants.RANDOM_GAUSS_PARAM1,
- GenerationConstants.RANDOM_GAUSS_PARAM2 * (3 - randomParamScaler))
- elif whichRandomGenerator == 3:
- onsetTime = random.betavariate(GenerationConstants.RANDOM_BETA_PARAM * randomParamScaler,
- GenerationConstants.RANDOM_BETA_PARAM * randomParamScaler)
- elif whichRandomGenerator == 4:
- onsetTime = random.weibullvariate(GenerationConstants.RANDOM_WEIBULL_PARAM1,
- GenerationConstants.RANDOM_WEIBULL_PARAM2 * randomParamScaler)
-
- onsetTime = int(onsetTime * (int(( barLength - 1) / GenerationConstants.DOUBLE_TICK_DUR))) * GenerationConstants.DOUBLE_TICK_DUR
-
- if onsetTime < 0:
- onsetTime = 0
- elif onsetTime > ( barLength - GenerationConstants.DOUBLE_TICK_DUR):
- onsetTime = ( barLength - GenerationConstants.DOUBLE_TICK_DUR)
- else:
- onsetTime = onsetTime
-
- rythmSequence.append(onsetTime)
-
- rythmSequence.sort()
- return rythmSequence
-
- def drumRythmSequence(self, parameters, trackInstrument, barLength ):
- density = sqrt(parameters.density[0])
- rythmSequence = []
- binSelection = []
- downBeats = []
- upBeats = []
- beats = []
- countDown = 0
- onsetTime = None
- beatsPerPage = int( barLength / Config.TICKS_PER_BEAT )
- randInt = random.randint
-
- upBeatsAppend = upBeats.append
-
- if self.instrumentDB.instNamed[ trackInstrument ].instrumentRegister == Config.PUNCH:
- registerDensity = 0.5
- downBeatRecurence = 4
- upBeatOffset = Config.TICKS_PER_BEAT / 2
- downBeats = [x for x in GenerationConstants.DRUM_PUNCH_ACCENTS[ beatsPerPage ]]
- for downBeat in downBeats:
- upBeatsAppend( downBeat + upBeatOffset )
-
- elif self.instrumentDB.instNamed[ trackInstrument ].instrumentRegister == Config.LOW:
- registerDensity = 1.5
- downBeatRecurence = 4
- upBeatOffset = Config.TICKS_PER_BEAT / 2
- downBeats = [x for x in GenerationConstants.DRUM_LOW_ACCENTS[ beatsPerPage ]]
- for downBeat in downBeats:
- upBeatsAppend( downBeat + upBeatOffset )
-
- elif self.instrumentDB.instNamed[ trackInstrument ].instrumentRegister == Config.MID:
- registerDensity = 1
- downBeatRecurence = 1
- upBeatOffset = Config.TICKS_PER_BEAT / 4
- downBeats = [x for x in GenerationConstants.DRUM_MID_ACCENTS[ beatsPerPage ]]
- for downBeat in downBeats:
- upBeatsAppend( downBeat + upBeatOffset )
-
- elif self.instrumentDB.instNamed[ trackInstrument ].instrumentRegister == Config.HIGH:
- registerDensity = 1.5
- downBeatRecurence = 1
- upBeatOffset = Config.TICKS_PER_BEAT / 4
- downBeats = [x for x in GenerationConstants.DRUM_HIGH_ACCENTS[ beatsPerPage ]]
- for downBeat in downBeats:
- upBeatsAppend( downBeat + upBeatOffset )
-
- list = range( int( density * registerDensity * len( downBeats ) ) )
- rand = random.random
- binCount = binSelection.count
- binAppend = binSelection.append
- for i in list:
- if rand() < ( parameters.rythmRegularity[0] * downBeatRecurence ) and binCount( 1 ) < len( downBeats ):
- binAppend( 1 )
- else:
- if binCount( 0 ) < len( downBeats ):
- binAppend( 0 )
- else:
- binAppend( 1 )
-
- countDown = binCount( 1 )
-
- seqAppend = rythmSequence.append
- length = len(downBeats) - 1
- downPop = downBeats.pop
- for i in range( countDown ):
- ran1 = randInt(0, length)
- ran2 = randInt(0, length)
- randMin = min(ran1, ran2)
- onsetTime = downPop(randMin)
- seqAppend( onsetTime )
- length -= 1
-
- length = len(upBeats) - 1
- upPop = upBeats.pop
- for i in range( len( binSelection ) - countDown ):
- ran1 = randInt(0, length)
- ran2 = randInt(0, length)
- randMin = min(ran1, ran2)
- onsetTime = upPop(randMin)
- seqAppend( onsetTime )
- length -= 1
-
- rythmSequence.sort()
- return rythmSequence
-
- def makeCellule( self, currentDuration, targetDuration, threshold ):
- threshold = threshold - 1
- if currentDuration == targetDuration:
- if self.count < threshold:
- self.count += 1
- else:
- self.count = 0
diff --git a/TamTamSynthLab.activity/common/Generation/Generator.py b/TamTamSynthLab.activity/common/Generation/Generator.py
deleted file mode 100644
index ff05462..0000000
--- a/TamTamSynthLab.activity/common/Generation/Generator.py
+++ /dev/null
@@ -1,174 +0,0 @@
-import random
-import math
-
-import Utils
-import Drunk
-
-import common.Util.InstrumentDB as InstrumentDB
-import common.Config as Config
-from common.Util.CSoundNote import CSoundNote
-from common.Generation.GenerationConstants import GenerationConstants
-from common.Generation.GenerationRythm import GenerationRythm
-from common.Generation.GenerationPitch import GenerationPitch
-
-instrumentDB = InstrumentDB.getRef()
-
-class GenerationParameters:
- def __init__( self,
- density = GenerationConstants.DEFAULT_DENSITY,
- rythmRegularity = GenerationConstants.DEFAULT_RYTHM_REGULARITY,
- step = GenerationConstants.DEFAULT_STEP,
- pitchRegularity = GenerationConstants.DEFAULT_PITCH_REGULARITY,
- articule = GenerationConstants.DEFAULT_DURATION,
- silence = GenerationConstants.DEFAULT_SILENCE,
- rythmMethod = GenerationConstants.DEFAULT_RYTHM_METHOD,
- pitchMethod = GenerationConstants.DEFAULT_PITCH_METHOD,
- pattern = GenerationConstants.DEFAULT_PATTERN,
- scale = GenerationConstants.DEFAULT_SCALE ):
- self.density = density
- self.rythmRegularity = rythmRegularity
- self.step = step
- self.pitchRegularity = pitchRegularity
- self.articule = articule
- self.silence = silence
- self.rythmMethod = rythmMethod
- self.pitchMethod = pitchMethod
- self.pattern = pattern
- self.scale = scale
-
-def generator1(
- parameters, # algorithm-specific parameters
- volume, # [trackId: float(volume) ]
- instrument, # [pageId][trackId: instrument]
- tempo, # integer bpm
- nbeats, # map [ pageId : beats ]
- trackIds, # list of trackIds to generate
- pageIds, # list of pageIds to generate
- trackDictionary, # map [ trackId : [ pageId : events ] ]
- nPagesCycle = 4 # META ALGO number of pages in a section
- ):
-
- makeRythm = GenerationRythm()
- makePitch = GenerationPitch()
-
- def makeGainSequence( onsetList ):
- gainSequence = []
- append = gainSequence.append
- rand = random.uniform
- max = GenerationConstants.GAIN_MAX_BOUNDARY
- midMax = GenerationConstants.GAIN_MID_MAX_BOUNDARY
- midMin = GenerationConstants.GAIN_MID_MIN_BOUNDARY
- min = GenerationConstants.GAIN_MIN_BOUNDARY
- for onset in onsetList:
- if onset == 0:
- append(rand(midMax, max))
- elif ( onset % Config.TICKS_PER_BEAT) == 0:
- append(rand(midMin, midMax))
- else:
- append(rand(min, midMin))
- return gainSequence
-
- def makeDurationSequence( onsetList, parameters, table_duration, barLength, currentInstrument ):
- durationSequence = []
- if instrumentDB.instNamed[currentInstrument].name[0:4] == 'drum':
- duration = GenerationConstants.DOUBLE_TICK_DUR / 2
- durationSequence = [duration] * len(onsetList)
- return durationSequence
-
- append = durationSequence.append
- proba = Utils.prob2
- if len( onsetList ) > 1:
- for i in range(len(onsetList) - 1):
- append((onsetList[i+1] - onsetList[i]) * proba( table_duration ))
- append(( barLength - onsetList[-1]) * proba( table_duration ))
- elif len( onsetList ) == 1:
- append( ( barLength - onsetList[0] ) * proba( table_duration ))
- return durationSequence
-
- def pageGenerate(parameters, trackId, pageId, trackOfNotes, drumPitch = None):
-
- trackNotes = trackOfNotes
-
- if drumPitch:
- currentInstrument = instrumentDB.instNamed[instrument[pageId][trackId]].kit[drumPitch[0]]
- rythmSequence = makeRythm.drumRythmSequence(parameters, currentInstrument, barLength)
- pitchSequence = makePitch.drumPitchSequence(len(rythmSequence), parameters, drumPitch, table_pitch )
- else:
- currentInstrument = instrument[pageId][trackId]
- rythmSequence = makeRythm.celluleRythmSequence(parameters, barLength, trackId, currentInstrument)
- pitchSequence = makePitch.drunkPitchSequence(len(rythmSequence),parameters, table_pitch, trackId)
-
- gainSequence = makeGainSequence(rythmSequence)
- durationSequence = makeDurationSequence(rythmSequence, parameters, table_duration, barLength, currentInstrument)
-
- numOfNotes = range(len(rythmSequence))
- rand = random.random
- append = trackNotes.append
- pan = GenerationConstants.DEFAULT_PAN
- instrument_id = instrumentDB.instNamed[instrument[pageId][trackId]].instrumentId
- for i in numOfNotes:
- if drumPitch:
- if ( rand() * fillDrum ) > ( parameters.silence[0] * .5 ):
- if fillDrum != 1:
- if rythmSequence[i] not in trackOnsets or pitchSequence[i] not in trackPitchs:
- append( CSoundNote( rythmSequence[i], pitchSequence[i], gainSequence[i], pan, durationSequence[i], trackId, instrument_id, 0.002, 0.098, 0.1, 0, 1000, False, 'edit' ) )
- else:
- append( CSoundNote( rythmSequence[i], pitchSequence[i], gainSequence[i], pan, durationSequence[i], trackId, instrument_id, 0.002, 0.098, 0.1, 0, 1000, False, 'edit' ) )
- else:
- if rand() > parameters.silence[trackId]:
- append( CSoundNote( rythmSequence[i], pitchSequence[i], gainSequence[i], pan, durationSequence[i], trackId, instrument_id, 0.002, 0.1, 0.1, 0, 1000, False, 'edit' ) )
-
- trackDictionary[ trackId ][ pageId ] = trackNotes
-
-##################################################################################
- # begin generate()
-
- table_pitch = GenerationConstants.SCALES[parameters.scale]
-
- for trackId in trackIds:
- if trackId == 4: # drum index
- table_duration = Utils.scale(parameters.articule[0], GenerationConstants.ARTICULATION_SCALE_MIN_MAPPING, GenerationConstants.ARTICULATION_SCALE_MAX_MAPPING, GenerationConstants.ARTICULATION_SCALE_STEPS)
- if parameters.rythmRegularity > 0.75:
- streamOfPitch = GenerationConstants.DRUM_COMPLEXITY1
- elif parameters.rythmRegularity > 0.5:
- streamOfPitch = GenerationConstants.DRUM_COMPLEXITY2
- elif parameters.rythmRegularity > 0.25:
- streamOfPitch = GenerationConstants.DRUM_COMPLEXITY3
- else:
- streamOfPitch = GenerationConstants.DRUM_COMPLEXITY4
- else:
- table_duration = Utils.scale(parameters.articule[trackId], GenerationConstants.ARTICULATION_SCALE_MIN_MAPPING, GenerationConstants.ARTICULATION_SCALE_MAX_MAPPING, GenerationConstants.ARTICULATION_SCALE_STEPS)
-
- selectedPageCount = 0
- lastPageId = 0
- for pageId in pageIds:
- barLength = Config.TICKS_PER_BEAT * nbeats[ pageId ]
- trackOfNotes = []
- pageCycle = selectedPageCount % nPagesCycle
-
- #if instrument[pageId][trackId][0:4] == 'drum':
- if trackId == 4:
- if pageCycle not in [0,nPagesCycle-1] and nbeats[pageId] == nbeats[lastPageId]:
- trackDictionary[trackId][pageId] = []
- for n in trackDictionary[trackId][lastPageId]:
- trackDictionary[trackId][pageId].append(n.clone())
- elif pageCycle == (nPagesCycle-1) and nbeats[pageId] == nbeats[lastPageId]:
- for n in trackDictionary[trackId][lastPageId]:
- trackOfNotes.append(n.clone())
- trackOnsets = [n.onset for n in trackOfNotes]
- trackPitchs = [n.pitch for n in trackOfNotes]
- fillDrum = .5
- rythmRegTemp = parameters.rythmRegularity[0]
- parameters.rythmRegularity[0] = 0.5
- for drumPitch in GenerationConstants.DRUM_COMPLEXITY4:
- pageGenerate( parameters, trackId, pageId, trackOfNotes, drumPitch )
- parameters.rythmRegularity[0] = rythmRegTemp
- else:
- fillDrum = 1
- for drumPitch in streamOfPitch:
- pageGenerate( parameters, trackId, pageId, trackOfNotes, drumPitch )
-
- else:
- pageGenerate( parameters, trackId, pageId, trackOfNotes, drumPitch = None )
- selectedPageCount += 1
- lastPageId = pageId
diff --git a/TamTamSynthLab.activity/common/Generation/Utils.py b/TamTamSynthLab.activity/common/Generation/Utils.py
deleted file mode 100644
index e5ea295..0000000
--- a/TamTamSynthLab.activity/common/Generation/Utils.py
+++ /dev/null
@@ -1,74 +0,0 @@
-import random
-import time
-import math
-
-#----------------------------------------------------------------------
-# TODO: replace magic numbers with constants
-# http://en.wikipedia.org/wiki/Magic_number_(programming)
-#----------------------------------------------------------------------
-
-def prob(x):
- sum1 = 0
- sum2 = 0
-
- for i in x:
- sum1 = sum1 + i
-
- val = sum1 * random.randint(0, 32767) / 32768
-
- for i in range(len(x)):
- sum2 = sum2 + x[i]
- if x[i]:
- if sum2 >= val:
- return i
- break
-
-def prob2(x):
- sum1 = 0
- sum2 = 0
-
- for i in x:
- sum1 = sum1 + i[1]
-
- val = sum1 * random.randint(0, 32767) / 32768
-
- for i in x:
- sum2 = sum2 + i[1]
- if i[1]:
- if sum2 >= val:
- return i[0]
- break
-
-def scale(val, mini=0., maxi=1., length=100):
- slope = []
-
- up = 1.-val
- if up <= 0.5:
- low_val = (pow(1.-(up*2.),4.)*(-50.5)+0.5)
- else:
- low_val = up
-
- if val <= 0.5:
- high_val = (pow(1.-(val * 2.),4.)*(-50.5)+0.5)
- else:
- high_val = val
-
- step = (maxi - mini) * (1. / length)
-
- calc = (1. / length) * (high_val - low_val)
- append = slope.append
- for i in range(length + 1):
- temp = i * calc + low_val
- if temp < 0:
- temp = 0
- elif temp > 1:
- temp = 1
- else:
- temp = temp
-
- append(((step * i) + mini, int(temp * 100)))
-
- return slope
-
-def midtotrans(x):
- return pow(1.059463, x - 36)
diff --git a/TamTamSynthLab.activity/common/Generation/VariationPitch.py b/TamTamSynthLab.activity/common/Generation/VariationPitch.py
deleted file mode 100644
index 5a2b151..0000000
--- a/TamTamSynthLab.activity/common/Generation/VariationPitch.py
+++ /dev/null
@@ -1,82 +0,0 @@
-import random
-
-class PitchReverse:
- def __init__( self ):
- self.pitchList = []
-
- def reorderPitch( self, notesList ):
- self.extractOneValue(notesList)
- self.pitchList.reverse()
- for i in range(len(notesList)):
- notesList[i].pitch = self.pitchList[i]
-
- return notesList
-
- def extractOneValue( self, notesList ):
- self.pitchList = []
- for note in notesList:
- self.pitchList.append(note.pitch)
-
-class PitchSort( PitchReverse ):
- def __init__( self ):
- PitchReverse.__init__( self )
-
- def reorderPitch( self, notesList ):
- PitchReverse.extractOneValue(self, notesList)
- self.pitchList.sort()
- for i in range(len(notesList)):
- notesList[i].pitch = self.pitchList[i]
-
- return notesList
-
-class PitchShuffle( PitchReverse ):
- def __init__( self ):
- PitchReverse.__init__ ( self )
-
- def reorderPitch( self, notesList ):
- PitchReverse.extractOneValue(self, notesList)
- self.pitchList = random.sample(self.pitchList, len(self.pitchList))
- for i in range(len(notesList)):
- notesList[i].pitch = self.pitchList[i]
-
- return notesList
-
-class PitchMarkov:
- def __init__( self ):
- self.originalList = []
-
- def getNewList( self, notesList, order=1 ):
- self.playedNotes = []
- self.extractOneValue( notesList, order )
- self.playedNotes = self.originalList[:order]
-
- for i in range(len(self.originalList) - order):
- self.playedNotes.append(self.pickupNewValue(order))
-
- for i in range(len(notesList)):
- notesList[i].pitch = self.playedNotes[i]
-
- return notesList
-
- def extractOneValue( self, notesList, order ):
- self.originalList = []
- for note in notesList:
- self.originalList.append(note.pitch)
- for i in range(order):
- self.originalList.append(self.originalList[i])
-
- def pickupNewValue( self, order ):
- condition = False
- self.probTable = []
- for ilist in range(len(self.originalList) - order):
- for iord in range(order):
- if self.playedNotes[len(self.playedNotes) - (iord + 1)] != self.originalList[(order - 1) + ilist - iord]:
- condition = False
- break
- else:
- condition = True
-
- if condition == True:
- self.probTable.append(self.originalList[ilist + order])
-
- return self.probTable[random.randint(0, (len(self.probTable) - 1))]
diff --git a/TamTamSynthLab.activity/common/Generation/VariationRythm.py b/TamTamSynthLab.activity/common/Generation/VariationRythm.py
deleted file mode 100644
index 5fb6111..0000000
--- a/TamTamSynthLab.activity/common/Generation/VariationRythm.py
+++ /dev/null
@@ -1,74 +0,0 @@
-import random
-
-import common.Config as Config
-
-# remplacer position dans notesList par l'attribut de CSoundNote
-class RythmShuffle:
-
- def getNewList( self, notesList, nbeats ):
- self.barLength = Config.TICKS_PER_BEAT * nbeats
- self.onsetDelta = 0
- self.newOnsetList = []
- self.oldDuration = []
- self.newDuration = []
- self.extractOnsetValue(notesList)
-
- self.newOnsetList = random.sample(range(len(self.originalList)), len(self.originalList))
- self.getOldDuration(notesList)
- self.getNewDuration(notesList)
-
- for i in range(len(notesList)):
- notesList[i].onset = self.onsetDelta
- notesList[i].duration = self.oldDuration[i] * self.newDuration[i]
- self.onsetDelta = self.onsetDelta + self.originalList[self.newOnsetList[i]]
-
- return notesList
-
- def extractOnsetValue( self, notesList ):
- self.originalList = []
- for note in notesList:
- self.originalList.append(note.onset)
-
- for i in range(len(self.originalList) -1):
- self.originalList[i] = self.originalList[i+1] - self.originalList[i]
-
- self.originalList[-1] = self.barLength - (self.originalList[-1] % self.barLength)
-
- def getOldDuration( self, notesList ):
- for i in range(len(notesList)):
- if (i+1) == len(notesList):
- self.oldDuration.append(notesList[i].duration / (self.barLength - (notesList[i].onset % self.barLength)))
- else:
- self.oldDuration.append(notesList[i].duration / (notesList[i+1].onset - notesList[i].onset))
-
- def getNewDuration( self, notesList ):
- for i in self.newOnsetList:
- if (i+1) == len(notesList):
- self.newDuration.append(self.barLength - (notesList[i].onset % self.barLength))
- else:
- self.newDuration.append(notesList[i+1].onset - notesList[i].onset)
-
-class RythmReverse( RythmShuffle ):
-
- def getNewList( self, notesList, nbeats ):
- self.barLength = Config.TICKS_PER_BEAT * nbeats
- self.onsetDelta = 0
- self.newOnsetList = []
- self.oldDuration = []
- self.newDuration = []
- RythmShuffle.extractOnsetValue( self, notesList )
-
- for i in range( len( self.originalList ) ):
- self.newOnsetList.append( i )
-
- self.newOnsetList.reverse()
-
- RythmShuffle.getOldDuration( self, notesList )
- RythmShuffle.getNewDuration( self, notesList )
-
- for i in range(len(notesList)):
- notesList[i].onset = self.onsetDelta
- notesList[i].duration = self.oldDuration[i] * self.newDuration[i]
- self.onsetDelta = self.onsetDelta + self.originalList[self.newOnsetList[i]]
-
- return notesList
diff --git a/TamTamSynthLab.activity/common/Generation/__init__.py b/TamTamSynthLab.activity/common/Generation/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/TamTamSynthLab.activity/common/Generation/__init__.py
+++ /dev/null
diff --git a/TamTamSynthLab.activity/common/Generation/bList.py b/TamTamSynthLab.activity/common/Generation/bList.py
deleted file mode 100644
index 26aed12..0000000
--- a/TamTamSynthLab.activity/common/Generation/bList.py
+++ /dev/null
@@ -1,97 +0,0 @@
-import common.Config as Config
-from Generation.GenerationConstants import GenerationConstants
-
-def gen():
- punch_list = [[], ]
- low_list = [[], ]
- mid_list = [[], ]
- high_list = [[], ]
-
- f = open('/home/olpc/tamtam/Generation/drumTablesList', 'w')
- g = open('/home/olpc/tamtam/Generation/drumStraightTables', 'w')
-
- # gen punch list
- beatsList = [[], ]
- for beatsPerPage in [1,2,3,4,5,6,7,8,9,10,11,12]:
- accents = []
- for j in GenerationConstants.PUNCH_ACCENTS[beatsPerPage]:
- accents.append(j * Config.TICKS_PER_BEAT)
- beatsList.append(accents)
- beats = []
- downBeats = []
- for beat in range( beatsPerPage ):
- beats.append( beat * Config.TICKS_PER_BEAT )
- for i in range( len( beats ) ):
- downBeats.append( ( beats[ GenerationConstants.PUNCH_ACCENTS[ beatsPerPage ][ i ] ], int( pow( float( len( beats ) - i) / len( beats ), 1.5 ) * 100.) ) )
- punch_list.append(downBeats)
-
- string = ' DRUM_PUNCH_PROB = ' + str(punch_list) + '\n'
- f.write(string)
- string = ' DRUM_PUNCH_ACCENT = ' + str(beatsList) + '\n'
- g.write(string)
-
- # gen low list
- beatsList = [[], ]
- for beatsPerPage in [1,2,3,4,5,6,7,8,9,10,11,12]:
- accents = []
- for j in GenerationConstants.LOW_ACCENTS[beatsPerPage]:
- accents.append(j * Config.TICKS_PER_BEAT)
- beatsList.append(accents)
- beats = []
- downBeats = []
- for beat in range( beatsPerPage ):
- beats.append( beat * Config.TICKS_PER_BEAT )
- for i in range( len( beats ) ):
- downBeats.append( ( beats[ GenerationConstants.LOW_ACCENTS[ beatsPerPage ][ i ] ], int( pow( float( len( beats ) - i) / len( beats ), 1.5 ) * 100.) ) )
- low_list.append(downBeats)
-
- string = ' DRUM_LOW_PROB = ' + str(low_list) + '\n'
- f.write(string)
- string = ' DRUM_LOW_ACCENT = ' + str(beatsList) + '\n'
- g.write(string)
-
- # gen mid list
- beatsList = [[], ]
- for beatsPerPage in [1,2,3,4,5,6,7,8,9,10,11,12]:
- accents = []
- for j in GenerationConstants.MID_ACCENTS[beatsPerPage]:
- accents.append(j * Config.TICKS_PER_BEAT / 2)
- beatsList.append(accents)
- beats = []
- downBeats = []
- for beat in range( beatsPerPage ):
- beats.append( beat * Config.TICKS_PER_BEAT )
- beats.append( beat * Config.TICKS_PER_BEAT + ( Config.TICKS_PER_BEAT / 2 ) )
- for i in range( len( beats ) ):
- downBeats.append( ( beats[ GenerationConstants.MID_ACCENTS[ beatsPerPage ][ i ] ], int( pow( float( len( beats ) - i) / len( beats ), 1.5 ) * 100.) ) )
- mid_list.append(downBeats)
-
- string = ' DRUM_MID_PROB = ' + str(mid_list) + '\n'
- f.write(string)
- string = ' DRUM_MID_ACCENT = ' + str(beatsList) + '\n'
- g.write(string)
-
- # gen high list
- beatsList = [[], ]
- for beatsPerPage in [1,2,3,4,5,6,7,8,9,10,11,12]:
- accents = []
- for j in GenerationConstants.HIGH_ACCENTS[beatsPerPage]:
- accents.append(j * Config.TICKS_PER_BEAT / 2)
- beatsList.append(accents)
- beats = []
- downBeats = []
- for beat in range( beatsPerPage ):
- beats.append( beat * Config.TICKS_PER_BEAT )
- beats.append( beat * Config.TICKS_PER_BEAT + ( Config.TICKS_PER_BEAT / 2 ) )
- for i in range( len( beats ) ):
- downBeats.append( ( beats[ GenerationConstants.HIGH_ACCENTS[ beatsPerPage ][ i ] ], int( pow( float( len( beats ) - i) / len( beats ), 1.5 ) * 100.) ) )
- high_list.append(downBeats)
-
- string = ' DRUM_HIGH_PROB = ' + str(high_list) + '\n'
- f.write(string)
- string = ' DRUM_HIGH_ACCENT = ' + str(beatsList) + '\n'
- g.write(string)
-
- f.close()
- g.close()
-
diff --git a/TamTamSynthLab.activity/common/Resources/Desktops/desktop0 b/TamTamSynthLab.activity/common/Resources/Desktops/desktop0
deleted file mode 100644
index c765348..0000000
--- a/TamTamSynthLab.activity/common/Resources/Desktops/desktop0
+++ /dev/null
@@ -1,40 +0,0 @@
-page_add 238 3 0 []
-note_add 1 238 0 0 36 0.982563337001 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 238 0 6 48 0.677869216687 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 238 0 9 43 0.684561864618 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 238 0 12 43 0.790931552908 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 238 0 15 36 0.684015006275 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 238 0 18 48 0.673900066009 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 238 0 24 43 0.785080465123 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 238 0 27 43 0.705954629686 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 238 0 30 36 0.730218556481 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 10 238 0 33 48 0.732122018719 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 237 3 0 []
-note_add 1 237 0 0 32 0.977428103603 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 237 0 12 32 0.892916232237 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 237 0 18 36 0.746267101548 0.5 18.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 236 3 0 []
-note_add 1 236 0 0 38 0.908581041036 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 236 0 12 32 0.88973063854 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 236 0 18 32 0.69634792235 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 236 0 24 36 0.792724331664 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 230 3 0 []
-note_add 13 230 0 0 24 0.965124771179 0.5 1 0 137 0.005 0.095 0.0 0 1000 0 mini
-note_add 15 230 0 0 30 0.999679369233 0.5 1 0 137 0.005 0.095 0.0 0 1000 0 mini
-note_add 19 230 0 6 48 0.734659250604 0.5 1 0 137 0.005 0.095 0.0 0 1000 0 mini
-note_add 16 230 0 9 40 0.717392963859 0.5 1 0 137 0.005 0.095 0.0 0 1000 0 mini
-note_add 20 230 0 9 48 0.691416510844 0.5 1 0 137 0.005 0.095 0.0 0 1000 0 mini
-note_add 21 230 0 15 46 0.74162278643 0.5 1 0 137 0.005 0.095 0.0 0 1000 0 mini
-note_add 14 230 0 18 28 0.727633081298 0.5 1 0 137 0.005 0.095 0.0 0 1000 0 mini
-note_add 17 230 0 21 36 0.675328782875 0.5 1 0 137 0.005 0.095 0.0 0 1000 0 mini
-note_add 22 230 0 21 48 0.713530035192 0.5 1 0 137 0.005 0.095 0.0 0 1000 0 mini
-note_add 18 230 0 27 36 0.701886703592 0.5 1 0 137 0.005 0.095 0.0 0 1000 0 mini
-note_add 23 230 0 30 42 0.658611098209 0.5 1 0 137 0.005 0.095 0.0 0 1000 0 mini
-note_add 24 230 0 33 44 0.698141321821 0.5 1 0 137 0.005 0.095 0.0 0 1000 0 mini
-block_add Instrument True 417 324 False {'volume': 0.5, 'reverb': 0, 'name': 'voix', 'pan': 0.5, 'id': 'voix'}
-block_add Loop False 501 324 True {'key': 19, 'beats': 3, 'name': 'loop03_2', 'regularity': 0.80000000000000004, 'id': 236}
-block_add Loop False 578 324 True {'key': None, 'beats': 3, 'name': 'loop03_3', 'regularity': 0.80000000000000004, 'id': 237}
-block_add Instrument False 417 206 False {'volume': 0.5, 'reverb': 0, 'name': 'rhodes', 'pan': 0.5, 'id': 'rhodes'}
-block_add Loop False 501 206 True {'key': 18, 'beats': 3, 'name': 'loop03_1', 'regularity': 0.80000000000000004, 'id': 238}
-block_add Drum False 253 208 False {'name': 'drum5kit', 'regularity': 0.17265378043653012, 'page': 230, 'volume': 0.5, 'beats': 3, 'seed': 0.61058227696419964, 'key': 61, 'reverb': 0.0, 'id': 'drum5kit'}
-sync_beats 3
diff --git a/TamTamSynthLab.activity/common/Resources/Desktops/desktop1 b/TamTamSynthLab.activity/common/Resources/Desktops/desktop1
deleted file mode 100644
index 2db4fb5..0000000
--- a/TamTamSynthLab.activity/common/Resources/Desktops/desktop1
+++ /dev/null
@@ -1,335 +0,0 @@
-page_add 227 8 0 []
-note_add 1 227 0 0 32 0.925659868182 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 227 0 6 32 0.6911667398 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 227 0 9 34 0.673847362322 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 227 0 12 34 0.869535420663 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 227 0 15 32 0.668348323168 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 227 0 18 32 0.709778522529 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 227 0 24 32 0.849447146337 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 227 0 30 32 0.711729398878 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 227 0 36 32 0.866612182294 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 10 227 0 39 32 0.657459654993 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 11 227 0 42 34 0.666975606662 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 12 227 0 48 34 0.789575824644 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 13 227 0 51 32 0.67884164747 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 14 227 0 54 32 0.744742212122 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 15 227 0 60 32 0.864169727314 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 16 227 0 63 32 0.654127259721 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 17 227 0 66 32 0.677590723757 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 18 227 0 78 32 0.693244118701 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 19 227 0 90 34 0.682008906013 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 228 8 0 []
-note_add 1 228 0 0 46 0.929352843013 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 228 0 12 46 0.836915427418 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 228 0 24 32 0.790263155895 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 228 0 36 43 0.784494030562 0.5 24.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 228 0 60 46 0.893530007497 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 228 0 72 46 0.809622907273 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 228 0 78 32 0.694420741809 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 228 0 84 46 0.795226231834 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 229 8 0 []
-note_add 1 229 0 0 44 0.944269056188 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 229 0 6 46 0.729319114859 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 229 0 12 48 0.760543989618 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 229 0 15 36 0.722123755241 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 229 0 18 44 0.708072119865 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 229 0 24 46 0.894221345157 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 229 0 30 48 0.68244237846 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 229 0 36 36 0.777443117101 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 229 0 42 44 0.706365814249 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 10 229 0 48 46 0.831627419172 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 11 229 0 54 48 0.721992835095 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 12 229 0 60 36 0.803478459144 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 13 229 0 66 44 0.724597112713 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 14 229 0 72 46 0.823442728538 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 15 229 0 84 48 0.808131071659 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 16 229 0 87 36 0.65670209975 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 17 229 0 90 44 0.736655313059 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 18 229 0 93 46 0.707173856125 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 230 8 0 []
-note_add 1 230 0 0 44 0.964205483761 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 230 0 3 44 0.651865744001 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 230 0 6 44 0.653396642859 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 230 0 9 44 0.688558247992 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 230 0 12 44 0.78652120346 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 230 0 15 44 0.659055701164 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 230 0 18 44 0.744066005297 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 230 0 21 44 0.669903086442 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 230 0 24 44 0.757356687106 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 10 230 0 27 44 0.713679510091 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 11 230 0 30 44 0.680212916118 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 12 230 0 33 44 0.702425459646 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 13 230 0 36 44 0.756115689115 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 14 230 0 39 44 0.711131722344 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 15 230 0 42 44 0.723075036701 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 16 230 0 45 44 0.692765358115 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 17 230 0 48 44 0.808823848013 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 18 230 0 51 44 0.668223705544 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 19 230 0 54 44 0.692958195306 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 20 230 0 57 44 0.671325742653 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 21 230 0 60 44 0.840218398486 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 22 230 0 63 44 0.74449136697 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 23 230 0 66 44 0.677903075922 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 24 230 0 69 44 0.685621355598 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 25 230 0 72 44 0.806256032 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 26 230 0 75 44 0.663346781982 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 27 230 0 78 44 0.691827856997 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 28 230 0 81 44 0.68135753616 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 29 230 0 84 44 0.806191023604 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 30 230 0 87 44 0.730719749924 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 31 230 0 90 44 0.733946176916 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 32 230 0 93 44 0.651926437205 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 231 10 0 []
-note_add 1 231 0 0 32 0.918429565796 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 231 0 12 32 0.896238657828 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 231 0 24 43 0.859990108109 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 231 0 36 36 0.780084722939 0.5 18.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 231 0 54 38 0.727509225141 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 231 0 66 48 0.677444860539 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 231 0 78 32 0.704849216477 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 231 0 84 32 0.834177866777 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 231 0 96 32 0.776622928055 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 10 231 0 108 43 0.750845342026 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 11 231 0 114 36 0.706362269841 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 232 10 0 []
-note_add 1 232 0 0 44 0.95139538384 0.5 18.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 232 0 18 48 0.723914992791 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 232 0 30 32 0.72952006514 0.5 18.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 232 0 48 46 0.789405290609 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 232 0 60 32 0.8646752285 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 232 0 66 44 0.717710545482 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 232 0 72 48 0.751895182545 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 232 0 84 32 0.807500121395 0.5 18.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 232 0 102 46 0.721952453815 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 10 232 0 114 32 0.670629591428 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 233 10 0 []
-note_add 1 233 0 0 34 0.997748569928 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 233 0 3 44 0.723576813399 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 233 0 6 44 0.741871004859 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 233 0 18 38 0.689398479169 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 233 0 30 34 0.660355615404 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 233 0 36 44 0.82625049286 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 233 0 42 44 0.741988630551 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 233 0 48 38 0.775260691012 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 233 0 54 34 0.7332263108 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 10 233 0 57 44 0.703461223395 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 11 233 0 60 44 0.832207143811 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 12 233 0 72 38 0.808919522624 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 13 233 0 84 34 0.809984476763 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 14 233 0 90 44 0.661661695398 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 15 233 0 96 44 0.7522709434 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 16 233 0 102 38 0.651370296265 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 17 233 0 108 34 0.88308853473 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 18 233 0 114 44 0.656056171207 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 234 10 0 []
-note_add 1 234 0 0 48 0.979891880558 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 234 0 3 36 0.653076003778 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 234 0 6 48 0.680309821502 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 234 0 9 36 0.732764225227 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 234 0 12 48 0.769826352246 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 234 0 15 36 0.678786909709 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 234 0 18 48 0.664885298095 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 234 0 21 36 0.698420420141 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 234 0 24 48 0.878552200587 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 10 234 0 27 36 0.662090560587 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 11 234 0 30 48 0.738971944787 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 12 234 0 33 36 0.667129605877 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 13 234 0 36 48 0.803116894964 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 14 234 0 39 36 0.716572754547 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 15 234 0 42 48 0.731258823897 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 16 234 0 45 36 0.712155634947 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 17 234 0 48 48 0.840071620981 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 18 234 0 51 36 0.660040151104 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 19 234 0 54 48 0.7434367206 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 20 234 0 57 36 0.703695191148 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 21 234 0 60 48 0.763280464574 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 22 234 0 63 36 0.66340948072 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 23 234 0 66 48 0.717965633538 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 24 234 0 69 36 0.698255623472 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 25 234 0 72 48 0.870481837423 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 26 234 0 75 36 0.70292879052 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 27 234 0 78 48 0.701239054462 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 28 234 0 81 36 0.707280218411 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 29 234 0 84 48 0.824319636365 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 30 234 0 87 36 0.652493438877 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 31 234 0 90 48 0.691791347032 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 32 234 0 93 36 0.674363442563 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 33 234 0 96 48 0.830719213625 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 34 234 0 99 36 0.661428250271 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 35 234 0 102 48 0.733125395714 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 36 234 0 105 36 0.726819629927 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 37 234 0 108 48 0.78346763842 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 38 234 0 111 36 0.69729234269 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 39 234 0 114 48 0.734224587843 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 40 234 0 117 36 0.654777125602 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 235 10 0 []
-note_add 1 235 0 0 24 0.992077405587 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 2 235 0 3 40 0.669607830214 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 3 235 0 6 46 0.653741281816 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 4 235 0 9 46 0.716919781809 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 5 235 0 12 24 0.786002652802 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 6 235 0 12 40 0.893575356955 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 7 235 0 18 46 0.728851023942 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 8 235 0 24 24 0.809751374021 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 9 235 0 24 30 0.829223893298 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 10 235 0 30 46 0.665618137928 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 11 235 0 33 46 0.714127990251 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 12 235 0 36 30 0.820778127889 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 13 235 0 36 46 0.826854098998 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 14 235 0 39 40 0.666112616812 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 15 235 0 42 40 0.670321328465 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 16 235 0 42 46 0.697780606807 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 17 235 0 45 46 0.685856547349 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 18 235 0 48 24 0.880509858292 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 19 235 0 48 40 0.881731567385 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 20 235 0 54 46 0.698788070004 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 21 235 0 57 46 0.746137914425 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 22 235 0 60 24 0.890567123948 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 23 235 0 60 40 0.831017846052 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 24 235 0 63 40 0.688558158868 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 25 235 0 66 40 0.705448201896 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 26 235 0 66 46 0.743650961873 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 27 235 0 72 24 0.751458870506 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 28 235 0 72 30 0.756521249646 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 29 235 0 72 40 0.811233142239 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 30 235 0 72 46 0.765861546546 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 31 235 0 75 40 0.727844759502 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 32 235 0 78 46 0.65233811286 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 33 235 0 81 46 0.740265903764 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 34 235 0 84 30 0.797508084686 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 35 235 0 87 40 0.685344815721 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 36 235 0 87 46 0.669102918623 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 37 235 0 90 46 0.690457717715 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 38 235 0 93 46 0.653518051374 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 39 235 0 96 24 0.761581795154 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 40 235 0 96 40 0.803138270881 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 41 235 0 96 46 0.854381556117 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 42 235 0 102 46 0.660177936677 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 43 235 0 108 24 0.774264109057 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 44 235 0 117 46 0.668237203824 0.5 1.0 0 139 0.005 0.095 0.0 0.0 1000.0 1 mini
-page_add 236 12 0 []
-note_add 1 236 0 0 41 0.905963287418 0.5 18.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 236 0 18 48 0.653981664043 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 236 0 30 44 0.717492007744 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 236 0 36 48 0.759163240751 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 236 0 48 32 0.847283474108 0.5 18.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 236 0 66 34 0.723148245474 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 236 0 72 41 0.805396504679 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 236 0 84 41 0.824886727128 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 236 0 90 48 0.695498873295 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 10 236 0 102 44 0.681381863923 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 11 236 0 108 48 0.82969480232 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 12 236 0 120 32 0.759419195855 0.5 24.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 237 12 0 []
-note_add 1 237 0 0 32 0.992822719235 0.5 18.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 237 0 18 46 0.683065344763 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 237 0 24 32 0.854953231044 0.5 18.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 237 0 42 48 0.720690803169 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 237 0 48 36 0.858725947789 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 237 0 60 32 0.849123576607 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 237 0 66 46 0.690526197115 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 237 0 72 32 0.799919027209 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 237 0 84 48 0.799461741675 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 10 237 0 90 36 0.743540955168 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 11 237 0 96 32 0.765305209963 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 12 237 0 102 46 0.711305174906 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 13 237 0 108 32 0.87175080938 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 14 237 0 120 48 0.852562099733 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 15 237 0 132 36 0.759057589787 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 16 237 0 138 32 0.651613398376 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 238 12 0 []
-note_add 1 238 0 0 41 0.990798818122 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 238 0 6 48 0.728222618336 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 238 0 18 44 0.720020221419 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 238 0 24 48 0.820706617647 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 238 0 36 41 0.754280833629 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 238 0 42 48 0.650837405159 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 238 0 48 44 0.866938100559 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 238 0 51 48 0.736567529887 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 238 0 54 41 0.656020489483 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 10 238 0 60 48 0.809392385769 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 11 238 0 66 44 0.653434163747 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 12 238 0 72 48 0.874087463664 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 13 238 0 78 41 0.660855905785 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 14 238 0 84 48 0.833722200168 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 15 238 0 87 44 0.688419803681 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 16 238 0 90 48 0.670022997837 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 17 238 0 93 41 0.658388832978 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 18 238 0 96 48 0.805544753099 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 19 238 0 99 44 0.699618040652 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 20 238 0 102 48 0.690339349793 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 21 238 0 108 41 0.803971677644 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 22 238 0 114 48 0.68052067326 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 23 238 0 117 44 0.675471950593 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 24 238 0 120 48 0.823756409447 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 25 238 0 126 41 0.734161745439 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 26 238 0 129 48 0.698206882543 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 27 238 0 132 44 0.803254657959 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 28 238 0 138 48 0.672000324737 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 239 12 0 []
-note_add 1 239 0 0 41 0.922155761946 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 239 0 3 44 0.65350045039 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 239 0 6 41 0.657022496954 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 239 0 9 44 0.714751727313 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 239 0 12 41 0.85354349634 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 239 0 15 44 0.662294123372 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 239 0 18 41 0.727452922651 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 239 0 21 44 0.723569523495 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 239 0 24 41 0.833200297055 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 10 239 0 27 44 0.658504944959 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 11 239 0 30 41 0.662973869637 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 12 239 0 33 44 0.721346962099 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 13 239 0 36 41 0.833218537208 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 14 239 0 39 44 0.698601325063 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 15 239 0 42 41 0.689483454263 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 16 239 0 45 44 0.666183054395 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 17 239 0 48 41 0.816037781142 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 18 239 0 51 44 0.725250491697 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 19 239 0 54 41 0.656159719867 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 20 239 0 57 44 0.731945713157 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 21 239 0 60 41 0.821999860726 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 22 239 0 63 44 0.722186626397 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 23 239 0 66 41 0.701696400982 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 24 239 0 69 44 0.709734770938 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 25 239 0 72 41 0.862084602452 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 26 239 0 75 44 0.739586673346 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 27 239 0 78 41 0.684178756537 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 28 239 0 81 44 0.670494640759 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 29 239 0 84 41 0.809983681538 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 30 239 0 87 44 0.678563779847 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 31 239 0 90 41 0.680514820478 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 32 239 0 93 44 0.690880754953 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 33 239 0 96 41 0.874115164798 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 34 239 0 99 44 0.731705174476 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 35 239 0 102 41 0.68378231818 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 36 239 0 105 44 0.701359883096 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 37 239 0 108 41 0.856592797609 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 38 239 0 111 44 0.676599792138 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 39 239 0 114 41 0.703632532775 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 40 239 0 117 44 0.663629203217 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 41 239 0 120 41 0.806365437944 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 42 239 0 123 44 0.722292379583 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 43 239 0 126 41 0.658115890813 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 44 239 0 129 44 0.659717223548 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 45 239 0 132 41 0.828661376132 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 46 239 0 135 44 0.686035070327 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 47 239 0 138 41 0.714063553705 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 48 239 0 141 44 0.678090439045 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-block_add Drum False 137 118 False {'name': 'drum1kit', 'regularity': 0.80000000000000004, 'id': 'drum1kit', 'volume': 0.5, 'beats': 10, 'key': 61, 'reverb': 0.0, 'page': 235}
-block_add Instrument False 283 88 False {'volume': 0.5, 'reverb': 0, 'name': 'piano', 'pan': 0.5, 'id': 'piano'}
-block_add Loop False 470 88 True {'key': 18, 'beats': 12, 'name': 'loop12_0', 'regularity': 0.80000000000000004, 'id': 239}
-block_add Loop False 731 88 True {'key': None, 'beats': 10, 'name': 'loop10_0', 'regularity': 0.80000000000000004, 'id': 234}
-block_add Loop False 946 88 True {'key': None, 'beats': 8, 'name': 'loop08_0', 'regularity': 0.80000000000000004, 'id': 230}
-block_add Instrument False 283 198 False {'volume': 0.5, 'reverb': 0, 'name': 'piano', 'pan': 0.5, 'id': 'piano'}
-block_add Loop False 470 198 True {'key': 19, 'beats': 12, 'name': 'loop12_1', 'regularity': 0.80000000000000004, 'id': 238}
-block_add Loop False 731 198 True {'key': None, 'beats': 10, 'name': 'loop10_1', 'regularity': 0.80000000000000004, 'id': 233}
-block_add Loop False 946 198 True {'key': None, 'beats': 8, 'name': 'loop08_1', 'regularity': 0.80000000000000004, 'id': 229}
-block_add Instrument False 284 311 False {'volume': 0.5, 'reverb': 0, 'name': 'piano', 'pan': 0.5, 'id': 'piano'}
-block_add Loop False 471 311 True {'key': 20, 'beats': 12, 'name': 'loop12_2', 'regularity': 0.80000000000000004, 'id': 237}
-block_add Loop False 732 311 True {'key': None, 'beats': 10, 'name': 'loop10_2', 'regularity': 0.80000000000000004, 'id': 232}
-block_add Loop False 947 311 True {'key': None, 'beats': 8, 'name': 'loop08_3', 'regularity': 0.80000000000000004, 'id': 228}
-block_add Instrument True 284 426 False {'volume': 0.5, 'reverb': 0, 'name': 'piano', 'pan': 0.5, 'id': 'piano'}
-block_add Loop False 471 426 True {'key': 21, 'beats': 12, 'name': 'loop12_3', 'regularity': 0.80000000000000004, 'id': 236}
-block_add Loop False 732 426 True {'key': None, 'beats': 10, 'name': 'loop10_3', 'regularity': 0.80000000000000004, 'id': 231}
-block_add Loop False 947 426 True {'key': None, 'beats': 8, 'name': 'loop08_4', 'regularity': 0.80000000000000004, 'id': 227}
-sync_beats 12
diff --git a/TamTamSynthLab.activity/common/Resources/Desktops/desktop2 b/TamTamSynthLab.activity/common/Resources/Desktops/desktop2
deleted file mode 100644
index d77c895..0000000
--- a/TamTamSynthLab.activity/common/Resources/Desktops/desktop2
+++ /dev/null
@@ -1,153 +0,0 @@
-page_add 189 2 0 []
-note_add 1 189 0 0 32 0.99985928761 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 189 0 3 38 0.682939553831 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 189 0 6 32 0.651752076192 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 189 0 9 38 0.668591772162 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 189 0 12 32 0.889173942414 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 189 0 15 38 0.669841961652 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 189 0 18 32 0.655526380723 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 189 0 21 38 0.718481783236 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 190 2 0 []
-note_add 1 190 0 0 32 0.99985928761 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 190 0 3 38 0.682939553831 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 190 0 6 32 0.651752076192 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 190 0 9 38 0.668591772162 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 190 0 12 32 0.889173942414 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 190 0 15 38 0.669841961652 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 190 0 18 32 0.655526380723 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 190 0 21 38 0.718481783236 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 191 8 0 []
-note_add 1 191 0 0 44 0.944269056188 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 191 0 6 46 0.729319114859 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 191 0 12 48 0.760543989618 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 191 0 15 36 0.722123755241 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 191 0 18 44 0.708072119865 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 191 0 24 46 0.894221345157 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 191 0 30 48 0.68244237846 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 191 0 36 36 0.777443117101 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 191 0 42 44 0.706365814249 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 10 191 0 48 46 0.831627419172 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 11 191 0 54 48 0.721992835095 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 12 191 0 60 36 0.803478459144 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 13 191 0 66 44 0.724597112713 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 14 191 0 72 46 0.823442728538 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 15 191 0 84 48 0.808131071659 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 16 191 0 87 36 0.65670209975 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 17 191 0 90 44 0.736655313059 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 18 191 0 93 46 0.707173856125 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 192 8 0 []
-note_add 1 192 0 0 46 0.929352843013 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 192 0 12 46 0.836915427418 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 192 0 24 32 0.790263155895 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 192 0 36 43 0.784494030562 0.5 24.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 192 0 60 46 0.893530007497 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 192 0 72 46 0.809622907273 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 192 0 78 32 0.694420741809 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 192 0 84 46 0.795226231834 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 193 8 0 []
-note_add 1 193 0 0 46 0.929352843013 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 193 0 12 46 0.836915427418 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 193 0 24 32 0.790263155895 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 193 0 36 43 0.784494030562 0.5 24.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 193 0 60 46 0.893530007497 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 193 0 72 46 0.809622907273 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 193 0 78 32 0.694420741809 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 193 0 84 46 0.795226231834 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 194 8 0 []
-note_add 1 194 0 0 32 0.925659868182 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 194 0 6 32 0.6911667398 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 194 0 9 34 0.673847362322 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 194 0 12 34 0.869535420663 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 194 0 15 32 0.668348323168 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 194 0 18 32 0.709778522529 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 194 0 24 32 0.849447146337 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 194 0 30 32 0.711729398878 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 194 0 36 32 0.866612182294 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 10 194 0 39 32 0.657459654993 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 11 194 0 42 34 0.666975606662 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 12 194 0 48 34 0.789575824644 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 13 194 0 51 32 0.67884164747 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 14 194 0 54 32 0.744742212122 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 15 194 0 60 32 0.864169727314 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 16 194 0 63 32 0.654127259721 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 17 194 0 66 32 0.677590723757 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 18 194 0 78 32 0.693244118701 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 19 194 0 90 34 0.682008906013 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 195 8 0 []
-note_add 1 195 0 0 44 0.944269056188 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 195 0 6 46 0.729319114859 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 195 0 12 48 0.760543989618 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 195 0 15 36 0.722123755241 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 195 0 18 44 0.708072119865 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 195 0 24 46 0.894221345157 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 195 0 30 48 0.68244237846 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 195 0 36 36 0.777443117101 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 195 0 42 44 0.706365814249 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 10 195 0 48 46 0.831627419172 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 11 195 0 54 48 0.721992835095 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 12 195 0 60 36 0.803478459144 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 13 195 0 66 44 0.724597112713 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 14 195 0 72 46 0.823442728538 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 15 195 0 84 48 0.808131071659 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 16 195 0 87 36 0.65670209975 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 17 195 0 90 44 0.736655313059 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 18 195 0 93 46 0.707173856125 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 196 8 0 []
-note_add 1 196 0 0 46 0.929352843013 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 196 0 12 46 0.836915427418 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 196 0 24 32 0.790263155895 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 196 0 36 43 0.784494030562 0.5 24.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 196 0 60 46 0.893530007497 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 196 0 72 46 0.809622907273 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 196 0 78 32 0.694420741809 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 196 0 84 46 0.795226231834 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 197 4 0 []
-note_add 1 197 0 0 36 0.95430647582 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 197 0 3 32 0.658691939837 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 197 0 6 36 0.747252681193 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 197 0 9 32 0.704895028464 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 197 0 12 36 0.758460247167 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 197 0 15 32 0.743618641081 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 197 0 18 36 0.721716943061 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 197 0 21 32 0.695172159459 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 197 0 24 36 0.792625787357 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 10 197 0 27 32 0.67165239417 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 11 197 0 30 36 0.692209994937 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 12 197 0 33 32 0.681830813385 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 13 197 0 36 36 0.812239275177 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 14 197 0 39 32 0.746191340695 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 15 197 0 42 36 0.743615433014 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 16 197 0 45 32 0.747473175282 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 198 4 0 []
-note_add 1 198 0 0 24 0.957098738324 0.5 1.0 0 135 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 2 198 0 6 40 0.667636160659 0.5 1.0 0 135 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 3 198 0 6 46 0.698135188572 0.5 1.0 0 135 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 4 198 0 9 46 0.671383010724 0.5 1.0 0 135 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 5 198 0 12 24 0.816647472133 0.5 1.0 0 135 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 6 198 0 12 40 0.833825434798 0.5 1.0 0 135 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 7 198 0 12 46 0.839768236689 0.5 1.0 0 135 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 8 198 0 18 46 0.686787821794 0.5 1.0 0 135 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 9 198 0 24 30 0.879636150131 0.5 1.0 0 135 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 10 198 0 30 46 0.686256064455 0.5 1.0 0 135 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 11 198 0 33 40 0.744037957393 0.5 1.0 0 135 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 12 198 0 33 46 0.656007219369 0.5 1.0 0 135 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 13 198 0 36 24 0.833274631618 0.5 1.0 0 135 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 14 198 0 36 40 0.779757285272 0.5 1.0 0 135 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 15 198 0 36 46 0.853914613254 0.5 1.0 0 135 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 16 198 0 42 46 0.683905111059 0.5 1.0 0 135 0.005 0.095 0.0 0.0 1000.0 1 mini
-block_add Drum False 151 102 False {'name': 'drum1kit', 'regularity': 0.80000000000000004, 'id': 'drum1kit', 'volume': 0.5, 'beats': 4, 'key': 61, 'reverb': 0.0, 'page': 198}
-block_add Instrument False 294 442 False {'volume': 0.5, 'reverb': 0, 'name': 'guit', 'pan': 0.5, 'id': 'guit'}
-block_add Loop False 435 442 True {'beats': 8, 'regularity': 0.80000000000000004, 'id': 194, 'key': 21, 'name': 'loop08_4'}
-block_add Instrument False 294 552 False {'volume': 1.0, 'reverb': 0.29999999999999999, 'name': 'basse', 'pan': 0.5, 'id': 'basse'}
-block_add Loop False 435 552 True {'beats': 8, 'regularity': 0.80000000000000004, 'id': 193, 'key': 32, 'name': 'loop08_3'}
-block_add Instrument False 288 104 False {'volume': 0.29999999999999999, 'reverb': 0.40000000000000002, 'name': 'clarinette', 'pan': 0.0, 'id': 'clarinette'}
-block_add Loop False 429 104 True {'beats': 8, 'regularity': 0.80000000000000004, 'id': 195, 'key': 18, 'name': 'loop08_1'}
-block_add Loop False 621 104 True {'beats': 8, 'regularity': 0.80000000000000004, 'id': 192, 'key': None, 'name': 'loop08_3'}
-block_add Instrument True 289 218 False {'volume': 0.40000000000000002, 'reverb': 0.29999999999999999, 'name': 'saxo', 'pan': 1.0, 'id': 'saxo'}
-block_add Loop False 430 218 True {'beats': 8, 'regularity': 0.80000000000000004, 'id': 196, 'key': 19, 'name': 'loop08_3'}
-block_add Loop False 622 218 True {'beats': 8, 'regularity': 0.80000000000000004, 'id': 191, 'key': None, 'name': 'loop08_1'}
-block_add Instrument False 291 328 False {'volume': 0.5, 'reverb': 0, 'name': 'rhodes', 'pan': 0.5, 'id': 'rhodes'}
-block_add Loop False 386 328 True {'beats': 4, 'regularity': 0.80000000000000004, 'id': 197, 'key': 20, 'name': 'loop04_0'}
-block_add Loop False 463 328 True {'beats': 2, 'regularity': 0.80000000000000004, 'id': 190, 'key': None, 'name': 'loop02_0'}
-block_add Loop False 517 328 True {'beats': 2, 'regularity': 0.80000000000000004, 'id': 189, 'key': None, 'name': 'loop02_0'}
-sync_beats 8
diff --git a/TamTamSynthLab.activity/common/Resources/Desktops/desktop3 b/TamTamSynthLab.activity/common/Resources/Desktops/desktop3
deleted file mode 100644
index 1e1cc6e..0000000
--- a/TamTamSynthLab.activity/common/Resources/Desktops/desktop3
+++ /dev/null
@@ -1,101 +0,0 @@
-page_add 243 8 0 []
-note_add 1 243 0 0 44 0.944269056188 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 243 0 6 46 0.729319114859 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 243 0 12 48 0.760543989618 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 243 0 15 36 0.722123755241 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 243 0 18 44 0.708072119865 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 243 0 24 46 0.894221345157 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 243 0 30 48 0.68244237846 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 243 0 36 36 0.777443117101 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 243 0 42 44 0.706365814249 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 10 243 0 48 46 0.831627419172 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 11 243 0 54 48 0.721992835095 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 12 243 0 60 36 0.803478459144 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 13 243 0 66 44 0.724597112713 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 14 243 0 72 46 0.823442728538 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 15 243 0 84 48 0.808131071659 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 16 243 0 87 36 0.65670209975 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 17 243 0 90 44 0.736655313059 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 18 243 0 93 46 0.707173856125 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 242 8 0 []
-note_add 1 242 0 0 44 0.944269056188 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 242 0 6 46 0.729319114859 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 242 0 12 48 0.760543989618 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 242 0 15 36 0.722123755241 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 242 0 18 44 0.708072119865 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 242 0 24 46 0.894221345157 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 242 0 30 48 0.68244237846 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 242 0 36 36 0.777443117101 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 242 0 42 44 0.706365814249 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 10 242 0 48 46 0.831627419172 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 11 242 0 54 48 0.721992835095 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 12 242 0 60 36 0.803478459144 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 13 242 0 66 44 0.724597112713 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 14 242 0 72 46 0.823442728538 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 15 242 0 84 48 0.808131071659 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 16 242 0 87 36 0.65670209975 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 17 242 0 90 44 0.736655313059 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 18 242 0 93 46 0.707173856125 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 241 8 0 []
-note_add 1 241 0 0 32 0.925659868182 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 241 0 6 32 0.6911667398 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 241 0 9 34 0.673847362322 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 241 0 12 34 0.869535420663 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 241 0 15 32 0.668348323168 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 241 0 18 32 0.709778522529 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 241 0 24 32 0.849447146337 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 241 0 30 32 0.711729398878 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 241 0 36 32 0.866612182294 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 10 241 0 39 32 0.657459654993 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 11 241 0 42 34 0.666975606662 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 12 241 0 48 34 0.789575824644 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 13 241 0 51 32 0.67884164747 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 14 241 0 54 32 0.744742212122 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 15 241 0 60 32 0.864169727314 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 16 241 0 63 32 0.654127259721 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 17 241 0 66 32 0.677590723757 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 18 241 0 78 32 0.693244118701 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 19 241 0 90 34 0.682008906013 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 240 8 0 []
-note_add 17 240 0 0 24 0.919619829627 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 23 240 0 0 30 0.949327658023 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 26 240 0 0 40 0.981211477565 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 27 240 0 6 40 0.675282674379 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 35 240 0 6 46 0.690033786809 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 36 240 0 9 46 0.654550558235 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 37 240 0 12 46 0.895387072986 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 38 240 0 15 46 0.651339582656 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 28 240 0 18 40 0.74707378773 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 39 240 0 18 46 0.694113945481 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 40 240 0 21 46 0.711808671491 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 18 240 0 24 24 0.755324617601 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 41 240 0 30 46 0.730574542173 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 19 240 0 36 24 0.772155117228 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 24 240 0 36 30 0.80008393543 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 29 240 0 36 40 0.80603425796 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 30 240 0 42 40 0.672831357126 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 42 240 0 42 46 0.710301729535 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 43 240 0 45 46 0.701873652832 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 20 240 0 48 24 0.824189566581 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 31 240 0 48 40 0.784372272955 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 32 240 0 51 40 0.702129947351 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 44 240 0 54 46 0.742699174683 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 45 240 0 66 46 0.732299996788 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 21 240 0 72 24 0.753001364406 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 25 240 0 72 30 0.887771195144 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 33 240 0 72 40 0.810621968882 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 46 240 0 78 46 0.694021263925 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 47 240 0 81 46 0.733526535838 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 22 240 0 84 24 0.858205877846 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 34 240 0 84 40 0.845697293017 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 48 240 0 84 46 0.77443788516 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 49 240 0 90 46 0.711964763161 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-note_add 50 240 0 93 46 0.699513429803 0.5 1 0 136 0.005 0.095 0.0 0 1000 0 mini
-block_add Drum False 210 117 False {'name': 'drum3kit', 'regularity': 0.80000000000000004, 'id': 'drum3kit', 'volume': 0.5, 'beats': 8, 'key': 61, 'reverb': 0.0, 'page': 240}
-block_add Instrument False 414 132 False {'volume': 0.5, 'reverb': 0, 'name': 'marimba', 'pan': 0.5, 'id': 'marimba'}
-block_add Loop False 555 132 True {'key': 18, 'beats': 8, 'name': 'loop08_4', 'regularity': 0.80000000000000004, 'id': 241}
-block_add Instrument True 413 269 False {'volume': 0.5, 'reverb': 0, 'name': 'gam', 'pan': 0.5, 'id': 'gam'}
-block_add Loop False 554 269 True {'key': 19, 'beats': 8, 'name': 'loop08_1', 'regularity': 0.80000000000000004, 'id': 242}
-block_add Instrument False 416 408 False {'volume': 0.5, 'reverb': 0, 'name': 'drum5kit', 'pan': 0.5, 'id': 'drum5kit'}
-block_add Loop False 557 408 True {'key': 20, 'beats': 8, 'name': 'loop08_1', 'regularity': 0.80000000000000004, 'id': 243}
-sync_beats 8
diff --git a/TamTamSynthLab.activity/common/Resources/Desktops/desktop4 b/TamTamSynthLab.activity/common/Resources/Desktops/desktop4
deleted file mode 100644
index 7b88d9c..0000000
--- a/TamTamSynthLab.activity/common/Resources/Desktops/desktop4
+++ /dev/null
@@ -1,120 +0,0 @@
-page_add 421 10 0 []
-note_add 1 421 0 0 32 0.918429565796 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 421 0 12 32 0.896238657828 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 421 0 24 43 0.859990108109 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 421 0 36 36 0.780084722939 0.5 18.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 421 0 54 38 0.727509225141 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 421 0 66 48 0.677444860539 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 421 0 78 32 0.704849216477 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 421 0 84 32 0.834177866777 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 421 0 96 32 0.776622928055 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 10 421 0 108 43 0.750845342026 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 11 421 0 114 36 0.706362269841 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 420 10 0 []
-note_add 11 420 0 0 34 0.983380987886 0.5 3 0 85 0.002 0.1 0.1 0 1000 0 edit
-note_add 12 420 0 12 44 0.83674200518 0.5 3 0 85 0.002 0.1 0.1 0 1000 0 edit
-note_add 13 420 0 15 36 0.682572739931 0.5 3 0 85 0.002 0.1 0.1 0 1000 0 edit
-note_add 14 420 0 21 31 0.747394161322 0.5 3 0 85 0.002 0.1 0.1 0 1000 0 edit
-note_add 15 420 0 30 44 0.718435260998 0.5 3 0 85 0.002 0.1 0.1 0 1000 0 edit
-note_add 16 420 0 36 34 0.869714981394 0.5 3 0 85 0.002 0.1 0.1 0 1000 0 edit
-note_add 17 420 0 39 34 0.736737954325 0.5 3 0 85 0.002 0.1 0.1 0 1000 0 edit
-note_add 18 420 0 42 31 0.67758347957 0.5 6 0 85 0.002 0.1 0.1 0 1000 0 edit
-note_add 19 420 0 48 36 0.856019879953 0.5 6 0 85 0.002 0.1 0.1 0 1000 0 edit
-note_add 20 420 0 54 44 0.66645456743 0.5 6 0 85 0.002 0.1 0.1 0 1000 0 edit
-note_add 21 420 0 60 36 0.849256152684 0.5 6 0 85 0.002 0.1 0.1 0 1000 0 edit
-note_add 22 420 0 72 36 0.895720392577 0.5 3 0 85 0.002 0.1 0.1 0 1000 0 edit
-note_add 23 420 0 75 44 0.713992192205 0.5 3 0 85 0.002 0.1 0.1 0 1000 0 edit
-note_add 24 420 0 78 36 0.682691469716 0.5 6 0 85 0.002 0.1 0.1 0 1000 0 edit
-note_add 25 420 0 84 34 0.881799131842 0.5 6 0 85 0.002 0.1 0.1 0 1000 0 edit
-note_add 26 420 0 90 34 0.725244364461 0.5 6 0 85 0.002 0.1 0.1 0 1000 0 edit
-note_add 27 420 0 102 36 0.680834938312 0.5 3 0 85 0.002 0.1 0.1 0 1000 0 edit
-note_add 28 420 0 105 44 0.748958223363 0.5 3 0 85 0.002 0.1 0.1 0 1000 0 edit
-note_add 29 420 0 108 36 0.812608233776 0.5 3 0 85 0.002 0.1 0.1 0 1000 0 edit
-note_add 30 420 0 111 34 0.699873693657 0.5 3 0 85 0.002 0.1 0.1 0 1000 0 edit
-note_add 31 420 0 114 31 0.735098161161 0.5 6 0 85 0.002 0.1 0.1 0 1000 0 edit
-page_add 419 10 0 []
-note_add 1 419 0 0 44 0.95139538384 0.5 18.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 419 0 18 48 0.723914992791 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 419 0 30 32 0.72952006514 0.5 18.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 419 0 48 46 0.789405290609 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 419 0 60 32 0.8646752285 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 419 0 66 44 0.717710545482 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 419 0 72 48 0.751895182545 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 419 0 84 32 0.807500121395 0.5 18.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 419 0 102 46 0.721952453815 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 10 419 0 114 32 0.670629591428 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 418 10 0 []
-note_add 48 418 0 0 46 0.925263522846 0.5 3 0 80 0.002 0.1 0.1 0 1000 0 edit
-note_add 49 418 0 3 39 0.698304422773 0.5 3 0 80 0.002 0.1 0.1 0 1000 0 edit
-note_add 50 418 0 6 38 0.684228643396 0.5 3 0 80 0.002 0.1 0.1 0 1000 0 edit
-note_add 51 418 0 9 32 0.709259396623 0.5 3 0 80 0.002 0.1 0.1 0 1000 0 edit
-note_add 52 418 0 12 24 0.826827640859 0.5 3 0 80 0.002 0.1 0.1 0 1000 0 edit
-note_add 53 418 0 15 26 0.713123518186 0.5 3 0 80 0.002 0.1 0.1 0 1000 0 edit
-note_add 54 418 0 18 46 0.689588214534 0.5 3 0 80 0.002 0.1 0.1 0 1000 0 edit
-note_add 55 418 0 21 39 0.664151720331 0.5 3 0 80 0.002 0.1 0.1 0 1000 0 edit
-note_add 56 418 0 24 38 0.751308269509 0.5 3 0 80 0.002 0.1 0.1 0 1000 0 edit
-note_add 57 418 0 27 32 0.676286367615 0.5 3 0 80 0.002 0.1 0.1 0 1000 0 edit
-note_add 58 418 0 30 24 0.653380379746 0.5 6 0 80 0.002 0.1 0.1 0 1000 0 edit
-note_add 59 418 0 36 46 0.898407657009 0.5 6 0 80 0.002 0.1 0.1 0 1000 0 edit
-note_add 60 418 0 42 39 0.668429800814 0.5 6 0 80 0.002 0.1 0.1 0 1000 0 edit
-note_add 61 418 0 48 38 0.780027249459 0.5 6 0 80 0.002 0.1 0.1 0 1000 0 edit
-note_add 62 418 0 54 32 0.682817269748 0.5 3 0 80 0.002 0.1 0.1 0 1000 0 edit
-note_add 63 418 0 57 24 0.68273812534 0.5 3 0 80 0.002 0.1 0.1 0 1000 0 edit
-note_add 64 418 0 60 26 0.848078006114 0.5 6 0 80 0.002 0.1 0.1 0 1000 0 edit
-note_add 65 418 0 66 46 0.654431337205 0.5 3 0 80 0.002 0.1 0.1 0 1000 0 edit
-note_add 66 418 0 69 39 0.738852542289 0.5 3 0 80 0.002 0.1 0.1 0 1000 0 edit
-note_add 67 418 0 72 38 0.799686660509 0.5 6 0 80 0.002 0.1 0.1 0 1000 0 edit
-note_add 68 418 0 84 24 0.845593316804 0.5 3 0 80 0.002 0.1 0.1 0 1000 0 edit
-note_add 69 418 0 87 46 0.704364293315 0.5 3 0 80 0.002 0.1 0.1 0 1000 0 edit
-note_add 70 418 0 90 39 0.661630443498 0.5 3 0 80 0.002 0.1 0.1 0 1000 0 edit
-note_add 71 418 0 93 38 0.740443169316 0.5 3 0 80 0.002 0.1 0.1 0 1000 0 edit
-note_add 72 418 0 96 32 0.807690776029 0.5 6 0 80 0.002 0.1 0.1 0 1000 0 edit
-note_add 73 418 0 102 24 0.6529218039 0.5 6 0 80 0.002 0.1 0.1 0 1000 0 edit
-note_add 74 418 0 108 26 0.877015592743 0.5 6 0 80 0.002 0.1 0.1 0 1000 0 edit
-note_add 75 418 0 114 46 0.672465289353 0.5 6 0 80 0.002 0.1 0.1 0 1000 0 edit
-page_add 417 10 0 []
-note_add 1 417 0 0 34 0.997748569928 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 417 0 3 44 0.723576813399 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 417 0 6 44 0.741871004859 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 417 0 18 38 0.689398479169 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 417 0 30 34 0.660355615404 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 417 0 36 44 0.82625049286 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 417 0 42 44 0.741988630551 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 417 0 48 38 0.775260691012 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 417 0 54 34 0.7332263108 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 10 417 0 57 44 0.703461223395 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 11 417 0 60 44 0.832207143811 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 12 417 0 72 38 0.808919522624 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 13 417 0 84 34 0.809984476763 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 14 417 0 90 44 0.661661695398 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 15 417 0 96 44 0.7522709434 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 16 417 0 102 38 0.651370296265 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 17 417 0 108 34 0.88308853473 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 18 417 0 114 44 0.656056171207 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 416 4 0 []
-note_add 1 416 0 0 24 0.985997811495 0.5 1 0 137 0.005 0.095 0.0 0 1000 0 mini
-note_add 9 416 0 0 46 0.934730640424 0.5 1 0 137 0.005 0.095 0.0 0 1000 0 mini
-note_add 10 416 0 6 46 0.703202160248 0.5 1 0 137 0.005 0.095 0.0 0 1000 0 mini
-note_add 5 416 0 12 40 0.873260873896 0.5 1 0 137 0.005 0.095 0.0 0 1000 0 mini
-note_add 11 416 0 12 46 0.786747495323 0.5 1 0 137 0.005 0.095 0.0 0 1000 0 mini
-note_add 12 416 0 18 46 0.725739922852 0.5 1 0 137 0.005 0.095 0.0 0 1000 0 mini
-note_add 2 416 0 24 24 0.876878572436 0.5 1 0 137 0.005 0.095 0.0 0 1000 0 mini
-note_add 4 416 0 24 30 0.857453058371 0.5 1 0 137 0.005 0.095 0.0 0 1000 0 mini
-note_add 6 416 0 24 40 0.752412546425 0.5 1 0 137 0.005 0.095 0.0 0 1000 0 mini
-note_add 13 416 0 24 46 0.833645920311 0.5 1 0 137 0.005 0.095 0.0 0 1000 0 mini
-note_add 7 416 0 27 40 0.70894625956 0.5 1 0 137 0.005 0.095 0.0 0 1000 0 mini
-note_add 14 416 0 30 46 0.654331649255 0.5 1 0 137 0.005 0.095 0.0 0 1000 0 mini
-note_add 15 416 0 33 46 0.714170454284 0.5 1 0 137 0.005 0.095 0.0 0 1000 0 mini
-note_add 3 416 0 36 24 0.895251740637 0.5 1 0 137 0.005 0.095 0.0 0 1000 0 mini
-note_add 8 416 0 39 40 0.695137600223 0.5 1 0 137 0.005 0.095 0.0 0 1000 0 mini
-note_add 16 416 0 42 46 0.734528532894 0.5 1 0 137 0.005 0.095 0.0 0 1000 0 mini
-block_add Drum False 227 67 False {'name': 'drum4kit', 'regularity': 0.80000000000000004, 'id': 'drum4kit', 'volume': 0.5, 'beats': 4, 'key': 61, 'reverb': 0.0, 'page': 416}
-block_add Instrument False 234 224 False {'volume': 0.5, 'reverb': 0, 'name': 'harmonium', 'pan': 0.5, 'id': 'harmonium'}
-block_add Loop False 398 224 True {'key': 18, 'beats': 10, 'name': 'loop10_1', 'regularity': 0.80000000000000004, 'id': 417}
-block_add Loop False 636 224 True {'key': None, 'beats': 10, 'name': 'loop10_1', 'regularity': 0.80000000000000004, 'id': 418}
-block_add Instrument False 234 359 False {'volume': 0.5, 'reverb': 0, 'name': 'rhodes', 'pan': 0.5, 'id': 'rhodes'}
-block_add Loop False 398 359 True {'key': 19, 'beats': 10, 'name': 'loop10_2', 'regularity': 0.80000000000000004, 'id': 419}
-block_add Loop False 636 359 True {'key': None, 'beats': 10, 'name': 'loop10_2', 'regularity': 0.80000000000000004, 'id': 420}
-block_add Instrument True 234 497 False {'volume': 0.5, 'reverb': 0, 'name': 'slap', 'pan': 0.5, 'id': 'slap'}
-block_add Loop False 398 497 True {'key': 20, 'beats': 10, 'name': 'loop10_3', 'regularity': 0.80000000000000004, 'id': 421}
-sync_beats 8
diff --git a/TamTamSynthLab.activity/common/Resources/Desktops/desktop5 b/TamTamSynthLab.activity/common/Resources/Desktops/desktop5
deleted file mode 100644
index cc4f5a0..0000000
--- a/TamTamSynthLab.activity/common/Resources/Desktops/desktop5
+++ /dev/null
@@ -1,58 +0,0 @@
-page_add 748 12 0 []
-note_add 1 748 0 0 41 0.905963287418 0.5 18.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 748 0 18 48 0.653981664043 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 748 0 30 44 0.717492007744 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 748 0 36 48 0.759163240751 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 748 0 48 32 0.847283474108 0.5 18.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 748 0 66 34 0.723148245474 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 748 0 72 41 0.805396504679 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 748 0 84 41 0.824886727128 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 748 0 90 48 0.695498873295 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 10 748 0 102 44 0.681381863923 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 11 748 0 108 48 0.82969480232 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 12 748 0 120 32 0.759419195855 0.5 24.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 747 10 0 []
-note_add 41 747 0 0 38 0.75 0.5 24 0 81 0.005 0.098 0.1 0 1000 0 edit
-note_add 42 747 0 24 35 0.75 0.5 24 0 81 0.005 0.098 0.1 0 1000 0 edit
-note_add 43 747 0 48 40 0.75 0.5 23 0 81 0.005 0.098 0.1 0 1000 0 edit
-note_add 44 747 0 72 31 0.75 0.5 24 0 81 0.005 0.098 0.1 0 1000 0 edit
-note_add 45 747 0 96 36 0.75 0.5 24 0 81 0.005 0.098 0.1 0 1000 0 edit
-page_add 745 10 0 []
-note_add 1 745 0 0 32 0.918429565796 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 745 0 12 32 0.896238657828 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 745 0 24 43 0.859990108109 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 745 0 36 36 0.780084722939 0.5 18.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 745 0 54 38 0.727509225141 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 745 0 66 48 0.677444860539 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 745 0 78 32 0.704849216477 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 745 0 84 32 0.834177866777 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 745 0 96 32 0.776622928055 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 10 745 0 108 43 0.750845342026 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 11 745 0 114 36 0.706362269841 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 744 10 0 []
-note_add 1 744 0 0 44 0.95139538384 0.5 18.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 744 0 18 48 0.723914992791 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 744 0 30 32 0.72952006514 0.5 18.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 744 0 48 46 0.789405290609 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 744 0 60 32 0.8646752285 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 744 0 66 44 0.717710545482 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 744 0 72 48 0.751895182545 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 744 0 84 32 0.807500121395 0.5 18.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 744 0 102 46 0.721952453815 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 10 744 0 114 32 0.670629591428 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 743 7 0 []
-note_add 1 743 0 0 29 0.75 0.5 24.0 0 88 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 743 0 24 44 0.75 0.5 7.0 0 88 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 743 0 36 44 0.75 0.5 6.0 0 88 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 743 0 48 32 0.75 0.5 24.0 0 88 0.005 0.098 0.1 0.0 1000.0 1 edit
-block_add Instrument False 171 65 False {'volume': 0.5, 'reverb': 0, 'name': 'duck', 'pan': 0.5, 'id': 'duck'}
-block_add Loop False 301 65 True {'beats': 7, 'regularity': 0.80000000000000004, 'id': 743, 'key': 18, 'name': 'loop1'}
-block_add Instrument False 172 180 False {'volume': 0.5, 'reverb': 0, 'name': 'cat', 'pan': 0.5, 'id': 'cat'}
-block_add Loop False 336 180 True {'key': 19, 'beats': 10, 'name': 'loop10_2', 'regularity': 0.80000000000000004, 'id': 744}
-block_add Instrument False 174 296 False {'volume': 0.5, 'reverb': 0, 'name': 'sheep', 'pan': 0.5, 'id': 'sheep'}
-block_add Loop False 338 296 True {'key': 20, 'beats': 10, 'name': 'loop10_3', 'regularity': 0.80000000000000004, 'id': 745}
-block_add Instrument True 177 525 False {'volume': 0.5, 'reverb': 0, 'name': 'horse', 'pan': 0.5, 'id': 'horse'}
-block_add Loop False 341 525 True {'key': 35, 'beats': 10, 'name': 'loop10_0', 'regularity': 0.80000000000000004, 'id': 747}
-block_add Instrument False 176 411 False {'volume': 0.5, 'reverb': 0, 'name': 'dog', 'pan': 0.5, 'id': 'dog'}
-block_add Loop False 363 411 True {'key': 21, 'beats': 12, 'name': 'loop12_3', 'regularity': 0.80000000000000004, 'id': 748}
-sync_beats 8
diff --git a/TamTamSynthLab.activity/common/Resources/Desktops/desktop6 b/TamTamSynthLab.activity/common/Resources/Desktops/desktop6
deleted file mode 100644
index 636eb7a..0000000
--- a/TamTamSynthLab.activity/common/Resources/Desktops/desktop6
+++ /dev/null
@@ -1,133 +0,0 @@
-page_add 895 7 0 []
-note_add 138 895 0 0 36 0.984424878015 0.5 12 0 83 0.002 0.1 0.1 0 1000 0 edit
-note_add 139 895 0 12 48 0.890407567318 0.5 3 0 83 0.002 0.1 0.1 0 1000 0 edit
-note_add 140 895 0 15 43 0.655073482129 0.5 3 0 83 0.002 0.1 0.1 0 1000 0 edit
-note_add 141 895 0 18 41 0.727955072002 0.5 12 0 83 0.002 0.1 0.1 0 1000 0 edit
-note_add 142 895 0 30 48 0.741436992193 0.5 6 0 83 0.002 0.1 0.1 0 1000 0 edit
-note_add 143 895 0 36 48 0.795080775461 0.5 12 0 83 0.002 0.1 0.1 0 1000 0 edit
-note_add 144 895 0 54 48 0.728756523577 0.5 3 0 83 0.002 0.1 0.1 0 1000 0 edit
-note_add 145 895 0 57 48 0.699835828209 0.5 3 0 83 0.002 0.1 0.1 0 1000 0 edit
-note_add 146 895 0 60 43 0.868062851501 0.5 6 0 83 0.002 0.1 0.1 0 1000 0 edit
-note_add 147 895 0 66 36 0.709273282515 0.5 3 0 83 0.002 0.1 0.1 0 1000 0 edit
-note_add 148 895 0 69 48 0.721329646978 0.5 3 0 83 0.002 0.1 0.1 0 1000 0 edit
-note_add 149 895 0 72 43 0.82243912461 0.5 3 0 83 0.002 0.1 0.1 0 1000 0 edit
-note_add 150 895 0 78 48 0.681320385591 0.5 6 0 83 0.002 0.1 0.1 0 1000 0 edit
-page_add 894 7 0 []
-note_add 70 894 0 0 43 0.950815135961 0.5 12 0 83 0.002 0.1 0.1 0 1000 0 edit
-note_add 71 894 0 12 48 0.78481668079 0.5 3 0 83 0.002 0.1 0.1 0 1000 0 edit
-note_add 72 894 0 15 46 0.729853362306 0.5 3 0 83 0.002 0.1 0.1 0 1000 0 edit
-note_add 73 894 0 18 43 0.721389568573 0.5 3 0 83 0.002 0.1 0.1 0 1000 0 edit
-note_add 74 894 0 21 48 0.660648711242 0.5 3 0 83 0.002 0.1 0.1 0 1000 0 edit
-note_add 75 894 0 24 46 0.81427070169 0.5 3 0 83 0.002 0.1 0.1 0 1000 0 edit
-note_add 76 894 0 27 43 0.731611771409 0.5 3 0 83 0.002 0.1 0.1 0 1000 0 edit
-note_add 77 894 0 30 48 0.65521091252 0.5 6 0 83 0.002 0.1 0.1 0 1000 0 edit
-note_add 78 894 0 36 46 0.803466561888 0.5 3 0 83 0.002 0.1 0.1 0 1000 0 edit
-note_add 79 894 0 39 43 0.704155096831 0.5 3 0 83 0.002 0.1 0.1 0 1000 0 edit
-note_add 80 894 0 42 48 0.69267023786 0.5 3 0 83 0.002 0.1 0.1 0 1000 0 edit
-note_add 81 894 0 45 43 0.650797698115 0.5 3 0 83 0.002 0.1 0.1 0 1000 0 edit
-note_add 82 894 0 48 48 0.813217874305 0.5 3 0 83 0.002 0.1 0.1 0 1000 0 edit
-note_add 83 894 0 51 46 0.721877925427 0.5 3 0 83 0.002 0.1 0.1 0 1000 0 edit
-note_add 84 894 0 57 48 0.735664764514 0.5 3 0 83 0.002 0.1 0.1 0 1000 0 edit
-note_add 85 894 0 60 46 0.844444070616 0.5 3 0 83 0.002 0.1 0.1 0 1000 0 edit
-note_add 86 894 0 63 43 0.736625919648 0.5 3 0 83 0.002 0.1 0.1 0 1000 0 edit
-note_add 87 894 0 66 48 0.661298003373 0.5 3 0 83 0.002 0.1 0.1 0 1000 0 edit
-note_add 88 894 0 69 46 0.657710645562 0.5 3 0 83 0.002 0.1 0.1 0 1000 0 edit
-note_add 89 894 0 72 43 0.801801662162 0.5 12 0 83 0.002 0.1 0.1 0 1000 0 edit
-page_add 893 7 0 []
-note_add 16 893 0 0 29 0.907656415748 0.5 6 0 90 0.002 0.1 0.1 0 1000 0 edit
-note_add 17 893 0 6 24 0.679545565791 0.5 6 0 90 0.002 0.1 0.1 0 1000 0 edit
-note_add 18 893 0 12 27 0.865411995956 0.5 6 0 90 0.002 0.1 0.1 0 1000 0 edit
-note_add 19 893 0 18 26 0.709177866326 0.5 3 0 90 0.002 0.1 0.1 0 1000 0 edit
-note_add 20 893 0 21 43 0.665058060544 0.5 3 0 90 0.002 0.1 0.1 0 1000 0 edit
-note_add 21 893 0 30 29 0.73550512451 0.5 6 0 90 0.002 0.1 0.1 0 1000 0 edit
-note_add 22 893 0 36 32 0.767831119826 0.5 6 0 90 0.002 0.1 0.1 0 1000 0 edit
-note_add 23 893 0 42 43 0.717378668772 0.5 6 0 90 0.002 0.1 0.1 0 1000 0 edit
-note_add 24 893 0 48 34 0.891512044247 0.5 3 0 90 0.002 0.1 0.1 0 1000 0 edit
-note_add 25 893 0 51 29 0.710226087037 0.5 3 0 90 0.002 0.1 0.1 0 1000 0 edit
-note_add 26 893 0 54 29 0.743230606476 0.5 3 0 90 0.002 0.1 0.1 0 1000 0 edit
-note_add 27 893 0 57 24 0.714352736868 0.5 3 0 90 0.002 0.1 0.1 0 1000 0 edit
-note_add 28 893 0 60 27 0.889327732436 0.5 3 0 90 0.002 0.1 0.1 0 1000 0 edit
-note_add 29 893 0 63 26 0.682031262633 0.5 3 0 90 0.002 0.1 0.1 0 1000 0 edit
-note_add 30 893 0 66 43 0.731843768899 0.5 6 0 90 0.002 0.1 0.1 0 1000 0 edit
-note_add 31 893 0 72 34 0.88815108072 0.5 3 0 90 0.002 0.1 0.1 0 1000 0 edit
-note_add 32 893 0 75 29 0.6802198623 0.5 3 0 90 0.002 0.1 0.1 0 1000 0 edit
-note_add 33 893 0 78 32 0.673260806075 0.5 3 0 90 0.002 0.1 0.1 0 1000 0 edit
-note_add 34 893 0 81 43 0.749442703216 0.5 3 0 90 0.002 0.1 0.1 0 1000 0 edit
-page_add 892 7 0 []
-note_add 1 892 0 0 32 0.929137794329 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 892 0 6 32 0.658516835329 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 892 0 18 38 0.681658393996 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 892 0 30 32 0.699822449365 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 892 0 36 32 0.817283176061 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 892 0 48 44 0.774057810069 0.5 18.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 892 0 66 48 0.747100920691 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 892 0 72 48 0.812377589911 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 892 0 75 32 0.681312168088 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 10 892 0 78 32 0.733215412992 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 891 7 0 []
-note_add 1 891 0 0 44 0.950684130482 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 891 0 6 38 0.743923505744 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 891 0 18 44 0.674226869975 0.5 18.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 891 0 36 41 0.894204673681 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 891 0 42 48 0.653172057252 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 891 0 48 32 0.869912247789 0.5 18.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 891 0 66 43 0.707500105747 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 891 0 78 44 0.712916834774 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 890 7 0 []
-note_add 1 890 0 0 44 0.960668250867 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 890 0 3 41 0.674207321488 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 890 0 6 44 0.734362222586 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 890 0 9 41 0.654866474165 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 890 0 12 44 0.868643464616 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 890 0 15 41 0.696937523027 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 890 0 18 44 0.66148762383 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 890 0 21 41 0.655993591676 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 890 0 24 44 0.873564876668 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 10 890 0 27 41 0.657079017965 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 11 890 0 30 44 0.741003605834 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 12 890 0 33 41 0.703264182119 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 13 890 0 36 44 0.814119223327 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 14 890 0 39 41 0.66936374141 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 15 890 0 42 44 0.679955978904 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 16 890 0 45 41 0.70856336316 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 17 890 0 48 44 0.759341048304 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 18 890 0 51 41 0.746547256267 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 19 890 0 54 44 0.676933444871 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 20 890 0 57 41 0.720471098726 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 21 890 0 60 44 0.86755339579 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 22 890 0 63 41 0.683523913426 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 23 890 0 66 44 0.657608601991 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 24 890 0 69 41 0.653374462124 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 25 890 0 72 44 0.894314312377 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 26 890 0 75 41 0.736867494683 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 27 890 0 78 44 0.666250541746 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 28 890 0 81 41 0.747987059432 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 889 7 0 []
-note_add 1 889 0 0 32 0.977474510439 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 889 0 6 32 0.707918813499 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 889 0 18 32 0.733850711992 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 889 0 24 34 0.857051574163 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 889 0 30 32 0.668454750857 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 889 0 36 32 0.788716541461 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 889 0 48 32 0.86697793635 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 889 0 51 34 0.688630466836 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 889 0 54 32 0.67683408959 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 10 889 0 60 32 0.80114956131 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 11 889 0 66 32 0.706614786384 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 12 889 0 72 34 0.87371723136 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 13 889 0 75 32 0.723553578301 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 14 889 0 78 32 0.67938094618 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 15 889 0 81 32 0.651122275732 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-block_add Instrument False 218 208 False {'volume': 0.5, 'reverb': 0, 'name': 'violin', 'pan': 0.5, 'id': 'violin'}
-block_add Loop False 348 208 True {'key': 19, 'beats': 7, 'name': 'loop07_1', 'regularity': 0.80000000000000004, 'id': 889}
-block_add Instrument False 218 337 False {'volume': 0.5, 'reverb': 0, 'name': 'cello', 'pan': 0.5, 'id': 'cello'}
-block_add Loop False 348 337 True {'key': 20, 'beats': 7, 'name': 'loop07_0', 'regularity': 0.80000000000000004, 'id': 890}
-block_add Instrument False 220 461 False {'volume': 0.5, 'reverb': 0, 'name': 'cello', 'pan': 0.5, 'id': 'cello'}
-block_add Loop False 350 461 True {'key': 21, 'beats': 7, 'name': 'loop07_4', 'regularity': 0.80000000000000004, 'id': 892}
-block_add Instrument False 218 90 False {'volume': 0.5, 'reverb': 0, 'name': 'violin', 'pan': 0.5, 'id': 'violin'}
-block_add Loop False 348 90 True {'key': 18, 'beats': 7, 'name': 'loop07_3', 'regularity': 0.80000000000000004, 'id': 891}
-block_add Loop False 517 90 True {'key': None, 'beats': 7, 'name': 'loop07_1', 'regularity': 0.80000000000000004, 'id': 893}
-block_add Instrument True 648 302 False {'volume': 0.5, 'reverb': 0, 'name': 'mando', 'pan': 0.5, 'id': 'mando'}
-block_add Loop False 778 302 True {'key': 35, 'beats': 7, 'name': 'loop07_3', 'regularity': 0.69999999999999996, 'id': 894}
-block_add Loop False 947 302 True {'key': None, 'beats': 7, 'name': 'loop07_3', 'regularity': 0.69999999999999996, 'id': 895}
-sync_beats 7
diff --git a/TamTamSynthLab.activity/common/Resources/Desktops/desktop7 b/TamTamSynthLab.activity/common/Resources/Desktops/desktop7
deleted file mode 100644
index e7fd4bb..0000000
--- a/TamTamSynthLab.activity/common/Resources/Desktops/desktop7
+++ /dev/null
@@ -1,203 +0,0 @@
-page_add 126 12 0 ['kalimba', 'kalimba', 'kalimba', 'kalimba', 'drum1kit']
-page_add 127 12 0 ['kalimba', 'kalimba', 'kalimba', 'kalimba', 'drum1kit']
-page_add 128 12 0 ['kalimba', 'kalimba', 'kalimba', 'kalimba', 'drum1kit']
-page_add 129 12 0 ['kalimba', 'kalimba', 'kalimba', 'kalimba', 'drum1kit']
-page_add 130 12 0 ['kalimba', 'kalimba', 'kalimba', 'kalimba', 'drum1kit']
-page_add 131 12 0 ['kalimba', 'kalimba', 'kalimba', 'kalimba', 'drum1kit']
-page_add 132 12 0 ['kalimba', 'kalimba', 'kalimba', 'kalimba', 'drum1kit']
-note_add 1 132 0 0 38 0.993375939274 0.5 1.0 0 135 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 2 132 0 3 29 0.749952124927 0.5 1.0 0 135 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 3 132 0 6 34 0.677014781996 0.5 1.0 0 135 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 4 132 0 9 29 0.719562261086 0.5 1.0 0 135 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 5 132 0 12 38 0.877906794188 0.5 1.0 0 135 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 6 132 0 18 34 0.682153316594 0.5 1.0 0 135 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 7 132 0 24 29 0.846600337911 0.5 1.0 0 135 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 8 132 0 30 38 0.743359648416 0.5 1.0 0 135 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 9 132 0 36 34 0.755681709359 0.5 1.0 0 135 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 10 132 0 42 38 0.727927529544 0.5 1.0 0 135 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 11 132 0 48 29 0.823410649165 0.5 1.0 0 135 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 12 132 0 54 34 0.721964065927 0.5 1.0 0 135 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 13 132 0 57 29 0.737360621225 0.5 1.0 0 135 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 14 132 0 60 38 0.79220652261 0.5 1.0 0 135 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 15 132 0 63 29 0.703002813834 0.5 1.0 0 135 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 16 132 0 66 34 0.735977983841 0.5 1.0 0 135 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 17 132 0 72 29 0.850358285233 0.5 1.0 0 135 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 18 132 0 78 38 0.681502853966 0.5 1.0 0 135 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 19 132 0 84 29 0.834097724403 0.5 1.0 0 135 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 20 132 0 96 38 0.782137687165 0.5 1.0 0 135 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 21 132 0 102 29 0.72226621012 0.5 1.0 0 135 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 22 132 0 105 34 0.722711127079 0.5 1.0 0 135 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 23 132 0 108 29 0.8022116384 0.5 1.0 0 135 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 24 132 0 114 38 0.684615477499 0.5 1.0 0 135 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 25 132 0 117 29 0.669331655465 0.5 1.0 0 135 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 26 132 0 120 34 0.891971485177 0.5 1.0 0 135 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 27 132 0 126 29 0.657313058229 0.5 1.0 0 135 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 28 132 0 132 29 0.797614212814 0.5 1.0 0 135 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 29 132 0 138 34 0.664789075679 0.5 1.0 0 135 0.002 0.1 0.1 0.0 1000.0 1 edit
-page_add 133 12 0 ['kalimba', 'kalimba', 'kalimba', 'kalimba', 'drum1kit']
-note_add 1 133 0 0 48 0.939198758781 0.5 1.0 0 138 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 2 133 0 6 44 0.673976988378 0.5 1.0 0 138 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 3 133 0 12 38 0.888981247195 0.5 1.0 0 138 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 4 133 0 18 44 0.694390481675 0.5 1.0 0 138 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 5 133 0 24 36 0.861556665353 0.5 1.0 0 138 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 6 133 0 30 27 0.690387893522 0.5 1.0 0 138 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 7 133 0 36 38 0.797574046007 0.5 1.0 0 138 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 8 133 0 42 44 0.67857460386 0.5 1.0 0 138 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 9 133 0 48 36 0.794572610205 0.5 1.0 0 138 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 10 133 0 54 27 0.66875483102 0.5 1.0 0 138 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 11 133 0 60 38 0.801935673365 0.5 1.0 0 138 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 12 133 0 66 48 0.740349018696 0.5 1.0 0 138 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 13 133 0 72 44 0.77892055155 0.5 1.0 0 138 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 14 133 0 78 38 0.73227997725 0.5 1.0 0 138 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 15 133 0 84 44 0.820260926049 0.5 1.0 0 138 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 16 133 0 96 27 0.793158769408 0.5 1.0 0 138 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 17 133 0 102 38 0.656686162304 0.5 1.0 0 138 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 18 133 0 108 44 0.878107989318 0.5 1.0 0 138 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 19 133 0 120 27 0.791265507137 0.5 1.0 0 138 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 20 133 0 126 38 0.70522982386 0.5 1.0 0 138 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 21 133 0 132 48 0.85190610158 0.5 1.0 0 138 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 22 133 0 138 44 0.665772765343 0.5 1.0 0 138 0.002 0.1 0.1 0.0 1000.0 1 edit
-page_add 134 12 0 ['kalimba', 'kalimba', 'kalimba', 'kalimba', 'drum1kit']
-note_add 1 134 0 0 31 0.946913669348 0.5 1.0 0 136 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 2 134 0 6 26 0.71583586404 0.5 1.0 0 136 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 3 134 0 12 24 0.897697434998 0.5 1.0 0 136 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 4 134 0 18 31 0.70406812797 0.5 1.0 0 136 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 5 134 0 24 36 0.893493149129 0.5 1.0 0 136 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 6 134 0 30 46 0.674704009758 0.5 1.0 0 136 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 7 134 0 36 48 0.817764276467 0.5 1.0 0 136 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 8 134 0 42 39 0.738883619063 0.5 1.0 0 136 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 9 134 0 48 31 0.874041058685 0.5 1.0 0 136 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 10 134 0 54 36 0.717260581274 0.5 1.0 0 136 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 11 134 0 60 46 0.842654677988 0.5 1.0 0 136 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 12 134 0 66 31 0.695539917986 0.5 1.0 0 136 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 13 134 0 72 26 0.774895530686 0.5 1.0 0 136 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 14 134 0 78 24 0.734936432567 0.5 1.0 0 136 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 15 134 0 84 31 0.809438204648 0.5 1.0 0 136 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 16 134 0 90 36 0.731793848853 0.5 1.0 0 136 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 17 134 0 96 46 0.831460136253 0.5 1.0 0 136 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 18 134 0 102 48 0.690480605994 0.5 1.0 0 136 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 19 134 0 108 39 0.893809682958 0.5 1.0 0 136 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 20 134 0 114 31 0.678721551193 0.5 1.0 0 136 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 21 134 0 120 36 0.805353599876 0.5 1.0 0 136 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 22 134 0 126 46 0.704376384358 0.5 1.0 0 136 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 23 134 0 132 31 0.775010611331 0.5 1.0 0 136 0.002 0.1 0.1 0.0 1000.0 1 edit
-note_add 24 134 0 138 26 0.667922014926 0.5 1.0 0 136 0.002 0.1 0.1 0.0 1000.0 1 edit
-page_add 135 12 0 ['kalimba', 'kalimba', 'kalimba', 'kalimba', 'drum1kit']
-note_add 1 135 0 0 24 0.959375247475 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 2 135 0 0 30 0.939599731054 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 3 135 0 6 40 0.721966375794 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 4 135 0 12 40 0.895423607134 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 5 135 0 12 46 0.785191721441 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 6 135 0 18 46 0.741003765326 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 7 135 0 21 46 0.668210001957 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 8 135 0 24 24 0.87244352719 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 9 135 0 24 30 0.859165411747 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 10 135 0 27 40 0.716721848338 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 11 135 0 30 46 0.672128464522 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 12 135 0 42 46 0.670360888895 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 13 135 0 48 24 0.77152989084 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 14 135 0 48 40 0.75816328355 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 15 135 0 54 40 0.684755913433 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 16 135 0 54 46 0.684962570033 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 17 135 0 60 24 0.851876100337 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 18 135 0 60 30 0.861868513836 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 19 135 0 60 40 0.850584597699 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 20 135 0 63 40 0.739437736194 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 21 135 0 66 46 0.672058700843 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 22 135 0 69 46 0.713342838517 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 23 135 0 72 24 0.814866032884 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 24 135 0 72 40 0.889667532579 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 25 135 0 72 46 0.776239732087 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 26 135 0 75 46 0.675880462039 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 27 135 0 78 46 0.671868861148 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 28 135 0 84 24 0.836260604208 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 29 135 0 84 40 0.818940212157 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 30 135 0 84 46 0.83111877382 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 31 135 0 87 46 0.695679165529 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 32 135 0 90 46 0.740443089298 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 33 135 0 96 24 0.890307027514 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 34 135 0 96 30 0.762510748675 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 35 135 0 96 40 0.832157115573 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 36 135 0 99 46 0.655803767415 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 37 135 0 108 24 0.797762171349 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 38 135 0 108 40 0.759483721472 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 39 135 0 108 46 0.845441766146 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 40 135 0 111 40 0.699702783471 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 41 135 0 114 40 0.689496334399 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 42 135 0 114 46 0.657048001966 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 43 135 0 120 46 0.755503229241 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 44 135 0 123 46 0.704042773834 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 45 135 0 126 46 0.68229946159 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 46 135 0 129 46 0.69000561349 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 47 135 0 132 24 0.839130154525 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 48 135 0 132 46 0.889880349159 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 49 135 0 135 40 0.738733169547 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 50 135 0 138 46 0.7118972315 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 51 135 0 141 46 0.697218152459 0.5 1.0 0 134 0.005 0.095 0.0 0.0 1000.0 1 mini
-page_add 136 12 0 ['kalimba', 'kalimba', 'kalimba', 'kalimba', 'drum1kit']
-note_add 1 136 0 0 24 0.958677899533 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 2 136 0 0 36 0.957395097118 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 3 136 0 3 40 0.695584667733 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 4 136 0 6 46 0.709913552971 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 5 136 0 12 46 0.814283514695 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 6 136 0 21 46 0.652318940232 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 7 136 0 24 28 0.816499614689 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 8 136 0 24 30 0.776365537542 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 9 136 0 24 48 0.780621408683 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 10 136 0 27 40 0.673000838165 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 11 136 0 30 48 0.707762473963 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 12 136 0 36 24 0.754311852941 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 13 136 0 36 32 0.809911941415 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 14 136 0 39 36 0.709172059934 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 15 136 0 42 46 0.709178396033 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 16 136 0 48 28 0.889751710993 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 17 136 0 48 32 0.757113617429 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 18 136 0 48 36 0.787710901343 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 19 136 0 54 36 0.695031252883 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 20 136 0 54 48 0.715639324285 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 21 136 0 60 24 0.820991376901 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 22 136 0 60 30 0.894170076054 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 23 136 0 60 40 0.859592812481 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 24 136 0 63 40 0.697973534999 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 25 136 0 66 46 0.688872777644 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 26 136 0 69 46 0.719208448231 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 27 136 0 72 24 0.800595154402 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 28 136 0 72 46 0.764643381398 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 29 136 0 78 46 0.723191842691 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 30 136 0 84 28 0.828286556939 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 31 136 0 84 46 0.845387809767 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 32 136 0 90 40 0.72379910578 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 33 136 0 90 46 0.67920193237 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 34 136 0 93 36 0.710673369593 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 35 136 0 96 40 0.866911890102 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 36 136 0 96 46 0.864716991607 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 37 136 0 102 48 0.690788223058 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 38 136 0 105 48 0.700883408162 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 39 136 0 108 24 0.897018885548 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 40 136 0 111 36 0.680767605337 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 41 136 0 111 46 0.666051784924 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 42 136 0 114 48 0.696318980372 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 43 136 0 120 24 0.75241944783 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 44 136 0 120 36 0.891979111334 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 45 136 0 120 48 0.857371191198 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 46 136 0 123 40 0.685060726604 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 47 136 0 126 48 0.650714769414 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 48 136 0 129 46 0.650064075587 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 49 136 0 132 46 0.8984482933 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 50 136 0 138 48 0.74548813292 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-note_add 51 136 0 141 46 0.651793758835 0.5 1.0 0 137 0.005 0.095 0.0 0.0 1000.0 1 mini
-block_add Drum False 158 64 False {'name': 'drum5kit', 'regularity': 0.59999999999999998, 'page': 136, 'volume': 0.5, 'beats': 12, 'seed': 0.61058227696419964, 'key': 61, 'reverb': 0.0, 'id': 'drum5kit'}
-block_add Drum False 285 65 False {'name': 'drum2kit', 'regularity': 0.80000000000000004, 'id': 'drum2kit', 'volume': 0.5, 'beats': 12, 'key': 60, 'reverb': 0.0, 'page': 135}
-block_add Instrument False 107 300 False {'volume': 0.5, 'reverb': 0, 'name': 'drum2kit', 'pan': 0.5, 'id': 'drum2kit'}
-block_add Loop False 294 300 True {'key': 19, 'beats': 12, 'name': 'loop12_0', 'regularity': 0.80000000000000004, 'id': 129}
-block_add Loop False 578 300 True {'key': None, 'beats': 12, 'name': 'loop12_0', 'regularity': 0.80000000000000004, 'id': 132}
-block_add Loop False 862 300 True {'key': None, 'beats': 12, 'name': 'loop12_0', 'regularity': 0.80000000000000004, 'id': 128}
-block_add Instrument False 108 420 False {'volume': 0.5, 'reverb': 0, 'name': 'drum3kit', 'pan': 0.5, 'id': 'drum3kit'}
-block_add Loop False 295 420 True {'key': 20, 'beats': 12, 'name': 'loop12_0', 'regularity': 0.80000000000000004, 'id': 127}
-block_add Loop False 579 420 True {'key': None, 'beats': 12, 'name': 'loop12_0', 'regularity': 0.80000000000000004, 'id': 126}
-block_add Loop False 863 420 True {'key': None, 'beats': 12, 'name': 'loop12_1', 'regularity': 1.0, 'id': 134}
-block_add Instrument True 110 188 False {'volume': 0.5, 'reverb': 0, 'name': 'drum5kit', 'pan': 0.5, 'id': 'drum5kit'}
-block_add Loop False 297 188 True {'key': 18, 'beats': 12, 'name': 'loop12_2', 'regularity': 1.0, 'id': 133}
-block_add Loop False 581 188 True {'key': None, 'beats': 12, 'name': 'loop12_0', 'regularity': 0.80000000000000004, 'id': 131}
-block_add Loop False 865 188 True {'key': None, 'beats': 12, 'name': 'loop12_0', 'regularity': 0.80000000000000004, 'id': 130}
-sync_beats 12
diff --git a/TamTamSynthLab.activity/common/Resources/Desktops/desktop8 b/TamTamSynthLab.activity/common/Resources/Desktops/desktop8
deleted file mode 100644
index 667ff99..0000000
--- a/TamTamSynthLab.activity/common/Resources/Desktops/desktop8
+++ /dev/null
@@ -1,50 +0,0 @@
-page_add 222 4 0 []
-note_add 13 222 0 0 24 0.911792849035 0.5 1 0 137 0.005 0.095 0.5 0 1000 0 mini
-note_add 17 222 0 3 36 0.737707640843 0.5 1 0 137 0.005 0.095 0.5 0 1000 0 mini
-note_add 21 222 0 9 46 0.694945817889 0.5 1 0 137 0.005 0.095 0.5 0 1000 0 mini
-note_add 18 222 0 12 36 0.780872029687 0.5 1 0 137 0.005 0.095 0.5 0 1000 0 mini
-note_add 19 222 0 15 40 0.721078890872 0.5 1 0 137 0.005 0.095 0.5 0 1000 0 mini
-note_add 22 222 0 15 48 0.718831106565 0.5 1 0 137 0.005 0.095 0.5 0 1000 0 mini
-note_add 23 222 0 21 46 0.714395200029 0.5 1 0 137 0.005 0.095 0.5 0 1000 0 mini
-note_add 14 222 0 24 28 0.822090269712 0.5 1 0 137 0.005 0.095 0.5 0 1000 0 mini
-note_add 24 222 0 24 46 0.788833746216 0.5 1 0 137 0.005 0.095 0.5 0 1000 0 mini
-note_add 20 222 0 27 40 0.724930261828 0.5 1 0 137 0.005 0.095 0.5 0 1000 0 mini
-note_add 25 222 0 27 48 0.731051780196 0.5 1 0 137 0.005 0.095 0.5 0 1000 0 mini
-note_add 26 222 0 33 48 0.693083211716 0.5 1 0 137 0.005 0.095 0.5 0 1000 0 mini
-note_add 15 222 0 36 28 0.765961953234 0.5 1 0 137 0.005 0.095 0.5 0 1000 0 mini
-note_add 16 222 0 36 30 0.88865586499 0.5 1 0 137 0.005 0.095 0.5 0 1000 0 mini
-note_add 27 222 0 39 46 0.712091664933 0.5 1 0 137 0.005 0.095 0.5 0 1000 0 mini
-note_add 28 222 0 42 48 0.725354235075 0.5 1 0 137 0.005 0.095 0.5 0 1000 0 mini
-page_add 231 12 0 []
-note_add 61 231 0 0 36 0.75 0.5 18 0 132 0.005 0.098 0.1 0 1000 0 edit
-note_add 62 231 0 21 40 0.75 0.5 27 0 132 0.005 0.098 0.1 0 1000 0 edit
-note_add 63 231 0 51 38 0.75 0.5 39 0 132 0.005 0.098 0.1 0 1000 0 edit
-note_add 64 231 0 93 33 0.75 0.5 27 0 132 0.005 0.098 0.1 0 1000 0 edit
-note_add 65 231 0 120 47 0.75 0.5 24 0 132 0.005 0.098 0.1 0 1000 0 edit
-page_add 230 12 0 []
-note_add 13 230 0 0 36 0.75 0.5 144 0 127 0.005 0.098 0.1 0 1000 0 edit
-page_add 229 12 0 []
-note_add 13 229 0 0 37 0.75 0.5 144 0 68 0.005 0.098 0.1 0 1000 0 edit
-page_add 228 12 0 []
-note_add 1 228 0 0 41 0.905963287418 0.5 18.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 228 0 18 48 0.653981664043 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 228 0 30 44 0.717492007744 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 228 0 36 48 0.759163240751 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 228 0 48 32 0.847283474108 0.5 18.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 228 0 66 34 0.723148245474 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 228 0 72 41 0.805396504679 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 228 0 84 41 0.824886727128 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 228 0 90 48 0.695498873295 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 10 228 0 102 44 0.681381863923 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 11 228 0 108 48 0.82969480232 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 12 228 0 120 32 0.759419195855 0.5 24.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-block_add Drum False 123 125 False {'name': 'drum5kit', 'regularity': 0.59999999999999998, 'page': 222, 'volume': 0.5, 'beats': 4, 'seed': 0.61058227696419964, 'key': 61, 'reverb': 0.5, 'id': 'drum5kit'}
-block_add Instrument False 348 374 False {'volume': 0.5, 'reverb': 0, 'name': 'byke', 'pan': 0.5, 'id': 'byke'}
-block_add Loop False 535 374 True {'key': 20, 'beats': 12, 'name': 'loop12_3', 'regularity': 0.80000000000000004, 'id': 228}
-block_add Instrument False 355 506 False {'volume': 0.5, 'reverb': 0, 'name': 'bubbles', 'pan': 0.5, 'id': 'bubbles'}
-block_add Loop False 542 506 True {'key': 21, 'beats': 12, 'name': 'loop12_3', 'regularity': 0.80000000000000004, 'id': 229}
-block_add Instrument True 347 223 False {'volume': 0.5, 'reverb': 0, 'name': 'car', 'pan': 0.5, 'id': 'car'}
-block_add Loop False 534 223 True {'key': 19, 'beats': 12, 'name': 'loop12_3', 'regularity': 0.80000000000000004, 'id': 230}
-block_add Instrument False 346 71 False {'volume': 0.5, 'reverb': 0, 'name': 'plane', 'pan': 0.5, 'id': 'plane'}
-block_add Loop False 533 71 True {'key': 18, 'beats': 12, 'name': 'loop12_3', 'regularity': 0.80000000000000004, 'id': 231}
-sync_beats 4
diff --git a/TamTamSynthLab.activity/common/Resources/Desktops/desktop9 b/TamTamSynthLab.activity/common/Resources/Desktops/desktop9
deleted file mode 100644
index dcae8d2..0000000
--- a/TamTamSynthLab.activity/common/Resources/Desktops/desktop9
+++ /dev/null
@@ -1,85 +0,0 @@
-page_add 382 7 0 []
-note_add 31 382 0 0 24 0.951948069916 0.5 1 0 134 0.005 0.095 0.3 0 1000 0 mini
-note_add 36 382 0 0 32 0.919923712337 0.5 1 0 134 0.005 0.095 0.3 0 1000 0 mini
-note_add 38 382 0 0 40 0.960914247312 0.5 1 0 134 0.005 0.095 0.3 0 1000 0 mini
-note_add 46 382 0 0 46 0.912941581367 0.5 1 0 134 0.005 0.095 0.3 0 1000 0 mini
-note_add 39 382 0 3 36 0.709655155785 0.5 1 0 134 0.005 0.095 0.3 0 1000 0 mini
-note_add 47 382 0 6 46 0.658737039521 0.5 1 0 134 0.005 0.095 0.3 0 1000 0 mini
-note_add 32 382 0 12 24 0.895326447489 0.5 1 0 134 0.005 0.095 0.3 0 1000 0 mini
-note_add 48 382 0 12 48 0.784062110485 0.5 1 0 134 0.005 0.095 0.3 0 1000 0 mini
-note_add 40 382 0 18 36 0.665854773177 0.5 1 0 134 0.005 0.095 0.3 0 1000 0 mini
-note_add 33 382 0 24 28 0.890573436098 0.5 1 0 134 0.005 0.095 0.3 0 1000 0 mini
-note_add 49 382 0 24 48 0.835216098762 0.5 1 0 134 0.005 0.095 0.3 0 1000 0 mini
-note_add 41 382 0 30 40 0.713401484832 0.5 1 0 134 0.005 0.095 0.3 0 1000 0 mini
-note_add 50 382 0 30 46 0.661642123757 0.5 1 0 134 0.005 0.095 0.3 0 1000 0 mini
-note_add 34 382 0 36 24 0.788682857114 0.5 1 0 134 0.005 0.095 0.3 0 1000 0 mini
-note_add 51 382 0 36 48 0.752289636747 0.5 1 0 134 0.005 0.095 0.3 0 1000 0 mini
-note_add 52 382 0 42 48 0.678146284702 0.5 1 0 134 0.005 0.095 0.3 0 1000 0 mini
-note_add 53 382 0 45 46 0.688483175977 0.5 1 0 134 0.005 0.095 0.3 0 1000 0 mini
-note_add 35 382 0 48 28 0.754860499565 0.5 1 0 134 0.005 0.095 0.3 0 1000 0 mini
-note_add 37 382 0 48 30 0.796130048831 0.5 1 0 134 0.005 0.095 0.3 0 1000 0 mini
-note_add 54 382 0 48 48 0.872741027244 0.5 1 0 134 0.005 0.095 0.3 0 1000 0 mini
-note_add 55 382 0 54 46 0.671214031963 0.5 1 0 134 0.005 0.095 0.3 0 1000 0 mini
-note_add 42 382 0 57 36 0.734275058829 0.5 1 0 134 0.005 0.095 0.3 0 1000 0 mini
-note_add 43 382 0 60 36 0.823967988269 0.5 1 0 134 0.005 0.095 0.3 0 1000 0 mini
-note_add 56 382 0 60 48 0.851120505955 0.5 1 0 134 0.005 0.095 0.3 0 1000 0 mini
-note_add 44 382 0 66 36 0.664408878666 0.5 1 0 134 0.005 0.095 0.3 0 1000 0 mini
-note_add 57 382 0 66 48 0.656754322919 0.5 1 0 134 0.005 0.095 0.3 0 1000 0 mini
-note_add 58 382 0 72 46 0.817133930806 0.5 1 0 134 0.005 0.095 0.3 0 1000 0 mini
-note_add 59 382 0 78 46 0.745547327671 0.5 1 0 134 0.005 0.095 0.3 0 1000 0 mini
-note_add 45 382 0 81 40 0.679146482475 0.5 1 0 134 0.005 0.095 0.3 0 1000 0 mini
-page_add 392 7 0 []
-note_add 1 392 0 0 32 0.994299643073 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 392 0 6 46 0.738402962047 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 392 0 12 32 0.834643979888 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 392 0 18 41 0.709677800192 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 392 0 24 32 0.792564704361 0.5 18.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 392 0 42 32 0.736310799475 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 392 0 54 46 0.735363369615 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 392 0 66 32 0.686480691914 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 392 0 72 41 0.813155491409 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 391 7 0 []
-note_add 1 391 0 0 32 0.977474510439 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 391 0 6 32 0.707918813499 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 391 0 18 32 0.733850711992 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 391 0 24 34 0.857051574163 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 391 0 30 32 0.668454750857 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 391 0 36 32 0.788716541461 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 391 0 48 32 0.86697793635 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 391 0 51 34 0.688630466836 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 391 0 54 32 0.67683408959 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 10 391 0 60 32 0.80114956131 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 11 391 0 66 32 0.706614786384 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 12 391 0 72 34 0.87371723136 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 13 391 0 75 32 0.723553578301 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 14 391 0 78 32 0.67938094618 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 15 391 0 81 32 0.651122275732 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 390 7 0 []
-note_add 1 390 0 0 44 0.950684130482 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 390 0 6 38 0.743923505744 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 390 0 18 44 0.674226869975 0.5 18.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 390 0 36 41 0.894204673681 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 390 0 42 48 0.653172057252 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 390 0 48 32 0.869912247789 0.5 18.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 390 0 66 43 0.707500105747 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 390 0 78 44 0.712916834774 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-page_add 389 7 0 []
-note_add 1 389 0 0 32 0.929137794329 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 2 389 0 6 32 0.658516835329 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 3 389 0 18 38 0.681658393996 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 4 389 0 30 32 0.699822449365 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 5 389 0 36 32 0.817283176061 0.5 12.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 6 389 0 48 44 0.774057810069 0.5 18.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 7 389 0 66 48 0.747100920691 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 8 389 0 72 48 0.812377589911 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 9 389 0 75 32 0.681312168088 0.5 3.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-note_add 10 389 0 78 32 0.733215412992 0.5 6.0 0 1 0.005 0.098 0.1 0.0 1000.0 1 edit
-block_add Drum False 233 354 False {'name': 'drum2kit', 'regularity': 0.69999999999999996, 'id': 'drum2kit', 'volume': 0.5, 'beats': 7, 'key': 61, 'reverb': 0.29999999999999999, 'page': 382}
-block_add Instrument False 427 237 False {'volume': 0.5, 'reverb': 0, 'name': 'rhodes', 'pan': 0.5, 'id': 'rhodes'}
-block_add Loop False 557 237 True {'key': 20, 'beats': 7, 'name': 'loop07_4', 'regularity': 0.80000000000000004, 'id': 389}
-block_add Instrument True 427 376 False {'volume': 0.5, 'reverb': 0, 'name': 'guit2', 'pan': 0.5, 'id': 'guit2'}
-block_add Loop False 557 376 True {'key': 21, 'beats': 7, 'name': 'loop07_1', 'regularity': 0.80000000000000004, 'id': 391}
-block_add Instrument False 426 105 False {'volume': 0.5, 'reverb': 0, 'name': 'clarinette', 'pan': 0.5, 'id': 'clarinette'}
-block_add Loop False 556 105 True {'key': 19, 'beats': 7, 'name': 'loop07_3', 'regularity': 0.80000000000000004, 'id': 390}
-block_add Loop False 725 105 True {'key': None, 'beats': 7, 'name': 'loop07_2', 'regularity': 0.80000000000000004, 'id': 392}
-sync_beats 7
diff --git a/TamTamSynthLab.activity/common/Resources/Images/TamTam.png b/TamTamSynthLab.activity/common/Resources/Images/TamTam.png
deleted file mode 100644
index 1e1f6de..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/TamTam.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/acguit.png b/TamTamSynthLab.activity/common/Resources/Images/acguit.png
deleted file mode 100644
index ed0e1ff..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/acguit.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/acguitsel.png b/TamTamSynthLab.activity/common/Resources/Images/acguitsel.png
deleted file mode 100644
index cc692ef..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/acguitsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/alarm.png b/TamTamSynthLab.activity/common/Resources/Images/alarm.png
deleted file mode 100644
index 817f23c..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/alarm.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/alarmsel.png b/TamTamSynthLab.activity/common/Resources/Images/alarmsel.png
deleted file mode 100644
index cbf2f79..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/alarmsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/all.png b/TamTamSynthLab.activity/common/Resources/Images/all.png
deleted file mode 100644
index ee3534b..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/all.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/allsel.png b/TamTamSynthLab.activity/common/Resources/Images/allsel.png
deleted file mode 100644
index 98ff02b..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/allsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/animals.png b/TamTamSynthLab.activity/common/Resources/Images/animals.png
deleted file mode 100644
index 95c802f..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/animals.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/animalssel.png b/TamTamSynthLab.activity/common/Resources/Images/animalssel.png
deleted file mode 100644
index f2369fb..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/animalssel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/armbone.png b/TamTamSynthLab.activity/common/Resources/Images/armbone.png
deleted file mode 100644
index ac77f4b..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/armbone.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/armbonesel.png b/TamTamSynthLab.activity/common/Resources/Images/armbonesel.png
deleted file mode 100644
index bc38796..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/armbonesel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/arrowEditDown.png b/TamTamSynthLab.activity/common/Resources/Images/arrowEditDown.png
deleted file mode 100644
index 99888f7..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/arrowEditDown.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/arrowEditDownDown.png b/TamTamSynthLab.activity/common/Resources/Images/arrowEditDownDown.png
deleted file mode 100644
index 20f783f..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/arrowEditDownDown.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/arrowEditDownOver.png b/TamTamSynthLab.activity/common/Resources/Images/arrowEditDownOver.png
deleted file mode 100644
index 3fb3d28..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/arrowEditDownOver.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/arrowEditLeft.png b/TamTamSynthLab.activity/common/Resources/Images/arrowEditLeft.png
deleted file mode 100644
index 2850e64..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/arrowEditLeft.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/arrowEditLeftDown.png b/TamTamSynthLab.activity/common/Resources/Images/arrowEditLeftDown.png
deleted file mode 100644
index 49ccb5f..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/arrowEditLeftDown.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/arrowEditLeftOver.png b/TamTamSynthLab.activity/common/Resources/Images/arrowEditLeftOver.png
deleted file mode 100644
index 8dcf71d..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/arrowEditLeftOver.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/arrowEditRight.png b/TamTamSynthLab.activity/common/Resources/Images/arrowEditRight.png
deleted file mode 100644
index 4046205..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/arrowEditRight.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/arrowEditRightDown.png b/TamTamSynthLab.activity/common/Resources/Images/arrowEditRightDown.png
deleted file mode 100644
index b38037d..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/arrowEditRightDown.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/arrowEditRightOver.png b/TamTamSynthLab.activity/common/Resources/Images/arrowEditRightOver.png
deleted file mode 100644
index 3f4502a..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/arrowEditRightOver.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/arrowEditUp.png b/TamTamSynthLab.activity/common/Resources/Images/arrowEditUp.png
deleted file mode 100644
index 8ad3a2f..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/arrowEditUp.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/arrowEditUpDown.png b/TamTamSynthLab.activity/common/Resources/Images/arrowEditUpDown.png
deleted file mode 100644
index 5ca1742..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/arrowEditUpDown.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/arrowEditUpOver.png b/TamTamSynthLab.activity/common/Resources/Images/arrowEditUpOver.png
deleted file mode 100644
index 5b76e31..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/arrowEditUpOver.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/babylaugh.png b/TamTamSynthLab.activity/common/Resources/Images/babylaugh.png
deleted file mode 100644
index 0bb2e97..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/babylaugh.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/babylaughsel.png b/TamTamSynthLab.activity/common/Resources/Images/babylaughsel.png
deleted file mode 100644
index f158ea0..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/babylaughsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/babyuhoh.png b/TamTamSynthLab.activity/common/Resources/Images/babyuhoh.png
deleted file mode 100644
index 25dd105..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/babyuhoh.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/babyuhohsel.png b/TamTamSynthLab.activity/common/Resources/Images/babyuhohsel.png
deleted file mode 100644
index b338da4..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/babyuhohsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/banjo.png b/TamTamSynthLab.activity/common/Resources/Images/banjo.png
deleted file mode 100644
index f8478c3..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/banjo.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/banjosel.png b/TamTamSynthLab.activity/common/Resources/Images/banjosel.png
deleted file mode 100644
index 866715c..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/banjosel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/basse.png b/TamTamSynthLab.activity/common/Resources/Images/basse.png
deleted file mode 100644
index 93d9a13..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/basse.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/basse2.png b/TamTamSynthLab.activity/common/Resources/Images/basse2.png
deleted file mode 100644
index e21371a..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/basse2.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/basse2sel.png b/TamTamSynthLab.activity/common/Resources/Images/basse2sel.png
deleted file mode 100644
index 8b70f7a..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/basse2sel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/bassesel.png b/TamTamSynthLab.activity/common/Resources/Images/bassesel.png
deleted file mode 100644
index ea8b65c..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/bassesel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/beat1.png b/TamTamSynthLab.activity/common/Resources/Images/beat1.png
deleted file mode 100644
index 104be63..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/beat1.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/beat10.png b/TamTamSynthLab.activity/common/Resources/Images/beat10.png
deleted file mode 100644
index f584b30..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/beat10.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/beat11.png b/TamTamSynthLab.activity/common/Resources/Images/beat11.png
deleted file mode 100644
index 3b977ad..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/beat11.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/beat2.png b/TamTamSynthLab.activity/common/Resources/Images/beat2.png
deleted file mode 100644
index b3b19d3..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/beat2.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/beat3.png b/TamTamSynthLab.activity/common/Resources/Images/beat3.png
deleted file mode 100644
index 4e5c73a..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/beat3.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/beat4.png b/TamTamSynthLab.activity/common/Resources/Images/beat4.png
deleted file mode 100644
index e3c3aea..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/beat4.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/beat5.png b/TamTamSynthLab.activity/common/Resources/Images/beat5.png
deleted file mode 100644
index 54846dd..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/beat5.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/beat6.png b/TamTamSynthLab.activity/common/Resources/Images/beat6.png
deleted file mode 100644
index 9f9664f..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/beat6.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/beat7.png b/TamTamSynthLab.activity/common/Resources/Images/beat7.png
deleted file mode 100644
index cec399d..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/beat7.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/beat8.png b/TamTamSynthLab.activity/common/Resources/Images/beat8.png
deleted file mode 100644
index 7f4d7e5..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/beat8.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/beat9.png b/TamTamSynthLab.activity/common/Resources/Images/beat9.png
deleted file mode 100644
index 1b18084..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/beat9.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/bird.png b/TamTamSynthLab.activity/common/Resources/Images/bird.png
deleted file mode 100644
index a0c0fb1..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/bird.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/birdsel.png b/TamTamSynthLab.activity/common/Resources/Images/birdsel.png
deleted file mode 100644
index 60f75b8..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/birdsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/bottle.png b/TamTamSynthLab.activity/common/Resources/Images/bottle.png
deleted file mode 100644
index 634fcca..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/bottle.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/bottlesel.png b/TamTamSynthLab.activity/common/Resources/Images/bottlesel.png
deleted file mode 100644
index f93d01b..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/bottlesel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/bubbles.png b/TamTamSynthLab.activity/common/Resources/Images/bubbles.png
deleted file mode 100644
index ba52212..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/bubbles.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/bubblessel.png b/TamTamSynthLab.activity/common/Resources/Images/bubblessel.png
deleted file mode 100644
index 6aea349..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/bubblessel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/byke.png b/TamTamSynthLab.activity/common/Resources/Images/byke.png
deleted file mode 100644
index 5b4796c..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/byke.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/bykesel.png b/TamTamSynthLab.activity/common/Resources/Images/bykesel.png
deleted file mode 100644
index a6b0943..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/bykesel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/camera.png b/TamTamSynthLab.activity/common/Resources/Images/camera.png
deleted file mode 100644
index b5c460d..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/camera.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/camerasel.png b/TamTamSynthLab.activity/common/Resources/Images/camerasel.png
deleted file mode 100644
index feb84bc..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/camerasel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/car.png b/TamTamSynthLab.activity/common/Resources/Images/car.png
deleted file mode 100644
index 1f8ad8d..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/car.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/carhorn.png b/TamTamSynthLab.activity/common/Resources/Images/carhorn.png
deleted file mode 100644
index efec4d7..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/carhorn.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/carhornsel.png b/TamTamSynthLab.activity/common/Resources/Images/carhornsel.png
deleted file mode 100644
index d293129..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/carhornsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/carsel.png b/TamTamSynthLab.activity/common/Resources/Images/carsel.png
deleted file mode 100644
index 76287a7..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/carsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/cat.png b/TamTamSynthLab.activity/common/Resources/Images/cat.png
deleted file mode 100644
index 28151c3..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/cat.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/catsel.png b/TamTamSynthLab.activity/common/Resources/Images/catsel.png
deleted file mode 100644
index 2ca1472..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/catsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/cello.png b/TamTamSynthLab.activity/common/Resources/Images/cello.png
deleted file mode 100644
index 750a0bc..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/cello.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/cellosel.png b/TamTamSynthLab.activity/common/Resources/Images/cellosel.png
deleted file mode 100644
index dc3ac53..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/cellosel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/check.png b/TamTamSynthLab.activity/common/Resources/Images/check.png
deleted file mode 100644
index 187546b..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/check.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/checkOff.svg b/TamTamSynthLab.activity/common/Resources/Images/checkOff.svg
deleted file mode 100644
index 9357b87..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/checkOff.svg
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14576) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="22px" height="22px" viewBox="0 0 22 22" enable-background="new 0 0 22 22" xml:space="preserve">
-<rect x="1" y="1" fill="#FFFFFF" stroke="#000000" stroke-width="2" width="20" height="20"/>
-</svg>
diff --git a/TamTamSynthLab.activity/common/Resources/Images/checkOn.svg b/TamTamSynthLab.activity/common/Resources/Images/checkOn.svg
deleted file mode 100644
index 5b91ddf..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/checkOn.svg
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 13.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 14576) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="22px" height="22px" viewBox="0 0 22 22" enable-background="new 0 0 22 22" xml:space="preserve">
-<rect x="1" y="1" fill="#FFFFFF" stroke="#000000" stroke-width="2" width="20" height="20"/>
-<g>
- <path d="M17.021,6.637c0.312,0,0.624,0.048,0.96,0.143c0.144,0.048,0.264,0.12,0.264,0.191c0,0.071-0.048,0.119-0.192,0.143
- c-0.288,0.024-0.695,0.215-0.912,0.358c-1.68,1.002-6.192,4.701-9.264,7.947c-0.288,0.286-0.625,0.215-0.576,0.047
- c0.168-0.501,0.312-2.911,0.096-4.009c-0.048-0.286-0.216-0.597-0.672-0.549c-0.144,0.024-0.288,0.024-0.288-0.072
- c0-0.071,0.12-0.143,0.264-0.191c0.312-0.119,0.744-0.167,0.96-0.167c0.528,0,1.056,0.143,1.176,0.668
- c0.192,0.788-0.024,2.171-1.008,4.033c2.472-3.604,4.896-6.3,6.528-7.469C15.028,7.234,16.156,6.637,17.021,6.637z"/>
-</g>
-</svg>
diff --git a/TamTamSynthLab.activity/common/Resources/Images/chiken.png b/TamTamSynthLab.activity/common/Resources/Images/chiken.png
deleted file mode 100644
index dba4321..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/chiken.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/chikensel.png b/TamTamSynthLab.activity/common/Resources/Images/chikensel.png
deleted file mode 100644
index bcdef02..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/chikensel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/chimes.png b/TamTamSynthLab.activity/common/Resources/Images/chimes.png
deleted file mode 100644
index 5c0873a..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/chimes.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/chimessel.png b/TamTamSynthLab.activity/common/Resources/Images/chimessel.png
deleted file mode 100644
index a700720..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/chimessel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/clang.png b/TamTamSynthLab.activity/common/Resources/Images/clang.png
deleted file mode 100644
index f6586fb..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/clang.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/clang2.png b/TamTamSynthLab.activity/common/Resources/Images/clang2.png
deleted file mode 100644
index df86d5e..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/clang2.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/clang2sel.png b/TamTamSynthLab.activity/common/Resources/Images/clang2sel.png
deleted file mode 100644
index 6cd89f2..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/clang2sel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/clangsel.png b/TamTamSynthLab.activity/common/Resources/Images/clangsel.png
deleted file mode 100644
index 9f5a289..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/clangsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/clarinette.png b/TamTamSynthLab.activity/common/Resources/Images/clarinette.png
deleted file mode 100644
index a3729df..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/clarinette.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/clarinettesel.png b/TamTamSynthLab.activity/common/Resources/Images/clarinettesel.png
deleted file mode 100644
index 119ec6d..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/clarinettesel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/clavinet.png b/TamTamSynthLab.activity/common/Resources/Images/clavinet.png
deleted file mode 100644
index 04dda93..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/clavinet.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/clavinetsel.png b/TamTamSynthLab.activity/common/Resources/Images/clavinetsel.png
deleted file mode 100644
index a6d0fa1..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/clavinetsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/cling.png b/TamTamSynthLab.activity/common/Resources/Images/cling.png
deleted file mode 100644
index ff35a7e..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/cling.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/clingsel.png b/TamTamSynthLab.activity/common/Resources/Images/clingsel.png
deleted file mode 100644
index 0b69cd2..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/clingsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/complex1.png b/TamTamSynthLab.activity/common/Resources/Images/complex1.png
deleted file mode 100644
index 5e9fd06..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/complex1.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/complex2.png b/TamTamSynthLab.activity/common/Resources/Images/complex2.png
deleted file mode 100644
index 3a52d54..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/complex2.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/complex3.png b/TamTamSynthLab.activity/common/Resources/Images/complex3.png
deleted file mode 100644
index 94d2c7e..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/complex3.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/complex4.png b/TamTamSynthLab.activity/common/Resources/Images/complex4.png
deleted file mode 100644
index 65ccce0..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/complex4.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/complex5.png b/TamTamSynthLab.activity/common/Resources/Images/complex5.png
deleted file mode 100644
index 598b14d..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/complex5.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/complex6.png b/TamTamSynthLab.activity/common/Resources/Images/complex6.png
deleted file mode 100644
index d8a030a..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/complex6.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/complex7.png b/TamTamSynthLab.activity/common/Resources/Images/complex7.png
deleted file mode 100644
index f3d50fb..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/complex7.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/complex8.png b/TamTamSynthLab.activity/common/Resources/Images/complex8.png
deleted file mode 100644
index 5e9a0a4..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/complex8.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/concret.png b/TamTamSynthLab.activity/common/Resources/Images/concret.png
deleted file mode 100644
index 038dbb4..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/concret.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/concretsel.png b/TamTamSynthLab.activity/common/Resources/Images/concretsel.png
deleted file mode 100644
index b78687c..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/concretsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/cow.png b/TamTamSynthLab.activity/common/Resources/Images/cow.png
deleted file mode 100644
index 1b8d645..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/cow.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/cowsel.png b/TamTamSynthLab.activity/common/Resources/Images/cowsel.png
deleted file mode 100644
index 70d197d..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/cowsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/crash.png b/TamTamSynthLab.activity/common/Resources/Images/crash.png
deleted file mode 100644
index 23db01f..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/crash.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/crashsel.png b/TamTamSynthLab.activity/common/Resources/Images/crashsel.png
deleted file mode 100644
index 38dba22..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/crashsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/cricket.png b/TamTamSynthLab.activity/common/Resources/Images/cricket.png
deleted file mode 100644
index f007863..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/cricket.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/cricketsel.png b/TamTamSynthLab.activity/common/Resources/Images/cricketsel.png
deleted file mode 100644
index 6a28769..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/cricketsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/dice.png b/TamTamSynthLab.activity/common/Resources/Images/dice.png
deleted file mode 100644
index 47441b7..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/dice.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/diceProp.png b/TamTamSynthLab.activity/common/Resources/Images/diceProp.png
deleted file mode 100644
index 887a6fb..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/diceProp.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/dicePropSel.png b/TamTamSynthLab.activity/common/Resources/Images/dicePropSel.png
deleted file mode 100644
index 13c5779..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/dicePropSel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/diceblur.png b/TamTamSynthLab.activity/common/Resources/Images/diceblur.png
deleted file mode 100644
index f275422..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/diceblur.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/diceinst.png b/TamTamSynthLab.activity/common/Resources/Images/diceinst.png
deleted file mode 100644
index 9fda10f..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/diceinst.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/diceinstsel.png b/TamTamSynthLab.activity/common/Resources/Images/diceinstsel.png
deleted file mode 100644
index 782b100..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/diceinstsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/didjeridu.png b/TamTamSynthLab.activity/common/Resources/Images/didjeridu.png
deleted file mode 100644
index a14b863..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/didjeridu.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/didjeridusel.png b/TamTamSynthLab.activity/common/Resources/Images/didjeridusel.png
deleted file mode 100644
index a836b71..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/didjeridusel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/dog.png b/TamTamSynthLab.activity/common/Resources/Images/dog.png
deleted file mode 100644
index 942e5aa..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/dog.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/dogsel.png b/TamTamSynthLab.activity/common/Resources/Images/dogsel.png
deleted file mode 100644
index f5458a3..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/dogsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/door.png b/TamTamSynthLab.activity/common/Resources/Images/door.png
deleted file mode 100644
index 15c95b2..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/door.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/doorsel.png b/TamTamSynthLab.activity/common/Resources/Images/doorsel.png
deleted file mode 100644
index a95f616..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/doorsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/dru0.png b/TamTamSynthLab.activity/common/Resources/Images/dru0.png
deleted file mode 100644
index eb8227c..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/dru0.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/dru1.png b/TamTamSynthLab.activity/common/Resources/Images/dru1.png
deleted file mode 100644
index e5c8698..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/dru1.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/dru2.png b/TamTamSynthLab.activity/common/Resources/Images/dru2.png
deleted file mode 100644
index 7f5dba0..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/dru2.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/dru3.png b/TamTamSynthLab.activity/common/Resources/Images/dru3.png
deleted file mode 100644
index dcfd922..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/dru3.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/dru4.png b/TamTamSynthLab.activity/common/Resources/Images/dru4.png
deleted file mode 100644
index 7718e36..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/dru4.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/drum1kit.png b/TamTamSynthLab.activity/common/Resources/Images/drum1kit.png
deleted file mode 100644
index e98ec33..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/drum1kit.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/drum1kitsel.png b/TamTamSynthLab.activity/common/Resources/Images/drum1kitsel.png
deleted file mode 100644
index aa9a1e0..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/drum1kitsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/drum1kitselgen.png b/TamTamSynthLab.activity/common/Resources/Images/drum1kitselgen.png
deleted file mode 100644
index f78a18e..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/drum1kitselgen.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/drum2kit.png b/TamTamSynthLab.activity/common/Resources/Images/drum2kit.png
deleted file mode 100644
index 76d12d7..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/drum2kit.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/drum2kitsel.png b/TamTamSynthLab.activity/common/Resources/Images/drum2kitsel.png
deleted file mode 100644
index 1101b8a..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/drum2kitsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/drum2kitselgen.png b/TamTamSynthLab.activity/common/Resources/Images/drum2kitselgen.png
deleted file mode 100644
index 6027918..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/drum2kitselgen.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/drum3kit.png b/TamTamSynthLab.activity/common/Resources/Images/drum3kit.png
deleted file mode 100644
index 38975a2..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/drum3kit.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/drum3kitsel.png b/TamTamSynthLab.activity/common/Resources/Images/drum3kitsel.png
deleted file mode 100644
index 7200e89..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/drum3kitsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/drum3kitselgen.png b/TamTamSynthLab.activity/common/Resources/Images/drum3kitselgen.png
deleted file mode 100644
index ecfb61b..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/drum3kitselgen.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/drum4kit.png b/TamTamSynthLab.activity/common/Resources/Images/drum4kit.png
deleted file mode 100644
index a928080..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/drum4kit.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/drum4kitsel.png b/TamTamSynthLab.activity/common/Resources/Images/drum4kitsel.png
deleted file mode 100644
index 8d012df..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/drum4kitsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/drum4kitselgen.png b/TamTamSynthLab.activity/common/Resources/Images/drum4kitselgen.png
deleted file mode 100644
index 02a62c6..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/drum4kitselgen.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/drum5kit.png b/TamTamSynthLab.activity/common/Resources/Images/drum5kit.png
deleted file mode 100644
index 6213770..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/drum5kit.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/drum5kitsel.png b/TamTamSynthLab.activity/common/Resources/Images/drum5kitsel.png
deleted file mode 100644
index eec29b5..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/drum5kitsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/drum5kitselgen.png b/TamTamSynthLab.activity/common/Resources/Images/drum5kitselgen.png
deleted file mode 100644
index 2208d55..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/drum5kitselgen.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/drum6kit.png b/TamTamSynthLab.activity/common/Resources/Images/drum6kit.png
deleted file mode 100644
index 69559b1..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/drum6kit.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/drum6kitmadal.orig.jpg b/TamTamSynthLab.activity/common/Resources/Images/drum6kitmadal.orig.jpg
deleted file mode 100644
index a5248fb..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/drum6kitmadal.orig.jpg
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/drum6kitsel.png b/TamTamSynthLab.activity/common/Resources/Images/drum6kitsel.png
deleted file mode 100644
index 567309b..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/drum6kitsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/drum6kitselgen.png b/TamTamSynthLab.activity/common/Resources/Images/drum6kitselgen.png
deleted file mode 100644
index f4f0fdc..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/drum6kitselgen.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/duck.png b/TamTamSynthLab.activity/common/Resources/Images/duck.png
deleted file mode 100644
index 9c75bd8..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/duck.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/duck2.png b/TamTamSynthLab.activity/common/Resources/Images/duck2.png
deleted file mode 100644
index 4ef2f28..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/duck2.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/duck2sel.png b/TamTamSynthLab.activity/common/Resources/Images/duck2sel.png
deleted file mode 100644
index b3f5c5f..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/duck2sel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/ducksel.png b/TamTamSynthLab.activity/common/Resources/Images/ducksel.png
deleted file mode 100644
index 0bc3243..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/ducksel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/editTam.png b/TamTamSynthLab.activity/common/Resources/Images/editTam.png
deleted file mode 100644
index b27e33e..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/editTam.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/editTamDown.png b/TamTamSynthLab.activity/common/Resources/Images/editTamDown.png
deleted file mode 100644
index b7ad8b3..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/editTamDown.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/editTamOver.png b/TamTamSynthLab.activity/common/Resources/Images/editTamOver.png
deleted file mode 100644
index 233624d..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/editTamOver.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/electronic.png b/TamTamSynthLab.activity/common/Resources/Images/electronic.png
deleted file mode 100644
index 37a7e6f..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/electronic.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/electronicsel.png b/TamTamSynthLab.activity/common/Resources/Images/electronicsel.png
deleted file mode 100644
index bd6fceb..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/electronicsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/fingercymbals.png b/TamTamSynthLab.activity/common/Resources/Images/fingercymbals.png
deleted file mode 100644
index ab2daeb..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/fingercymbals.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/fingercymbalssel.png b/TamTamSynthLab.activity/common/Resources/Images/fingercymbalssel.png
deleted file mode 100644
index ea9250b..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/fingercymbalssel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/flugel.png b/TamTamSynthLab.activity/common/Resources/Images/flugel.png
deleted file mode 100644
index e53b6ea..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/flugel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/flugelsel.png b/TamTamSynthLab.activity/common/Resources/Images/flugelsel.png
deleted file mode 100644
index 2214101..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/flugelsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/flute.png b/TamTamSynthLab.activity/common/Resources/Images/flute.png
deleted file mode 100644
index 43e128b..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/flute.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/flutesel.png b/TamTamSynthLab.activity/common/Resources/Images/flutesel.png
deleted file mode 100644
index 9b72cf7..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/flutesel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/foghorn.png b/TamTamSynthLab.activity/common/Resources/Images/foghorn.png
deleted file mode 100644
index 75c3975..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/foghorn.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/foghornsel.png b/TamTamSynthLab.activity/common/Resources/Images/foghornsel.png
deleted file mode 100644
index c8cb5d6..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/foghornsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/frogs.png b/TamTamSynthLab.activity/common/Resources/Images/frogs.png
deleted file mode 100644
index ba6db93..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/frogs.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/frogssel.png b/TamTamSynthLab.activity/common/Resources/Images/frogssel.png
deleted file mode 100644
index 9ef3885..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/frogssel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/gam.png b/TamTamSynthLab.activity/common/Resources/Images/gam.png
deleted file mode 100644
index 02f8719..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/gam.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/gamsel.png b/TamTamSynthLab.activity/common/Resources/Images/gamsel.png
deleted file mode 100644
index ac6594f..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/gamsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/generic.png b/TamTamSynthLab.activity/common/Resources/Images/generic.png
deleted file mode 100644
index c42119b..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/generic.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/genericsel.png b/TamTamSynthLab.activity/common/Resources/Images/genericsel.png
deleted file mode 100644
index 2cbdb81..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/genericsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/guit.png b/TamTamSynthLab.activity/common/Resources/Images/guit.png
deleted file mode 100644
index 0c2f667..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/guit.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/guit2.png b/TamTamSynthLab.activity/common/Resources/Images/guit2.png
deleted file mode 100644
index 183d754..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/guit2.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/guit2sel.png b/TamTamSynthLab.activity/common/Resources/Images/guit2sel.png
deleted file mode 100644
index 60641bd..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/guit2sel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/guitmute.png b/TamTamSynthLab.activity/common/Resources/Images/guitmute.png
deleted file mode 100644
index 8869332..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/guitmute.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/guitmutesel.png b/TamTamSynthLab.activity/common/Resources/Images/guitmutesel.png
deleted file mode 100644
index d3b4860..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/guitmutesel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/guitsel.png b/TamTamSynthLab.activity/common/Resources/Images/guitsel.png
deleted file mode 100644
index 890fcb7..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/guitsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/guitshort.png b/TamTamSynthLab.activity/common/Resources/Images/guitshort.png
deleted file mode 100644
index c64b918..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/guitshort.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/guitshortsel.png b/TamTamSynthLab.activity/common/Resources/Images/guitshortsel.png
deleted file mode 100644
index 7a40f39..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/guitshortsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/harmonica.png b/TamTamSynthLab.activity/common/Resources/Images/harmonica.png
deleted file mode 100644
index d8dd849..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/harmonica.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/harmonicasel.png b/TamTamSynthLab.activity/common/Resources/Images/harmonicasel.png
deleted file mode 100644
index 0814bd9..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/harmonicasel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/harmonium.png b/TamTamSynthLab.activity/common/Resources/Images/harmonium.png
deleted file mode 100644
index 3d4a605..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/harmonium.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/harmoniumsel.png b/TamTamSynthLab.activity/common/Resources/Images/harmoniumsel.png
deleted file mode 100644
index 80eb2c8..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/harmoniumsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/harpsichord.png b/TamTamSynthLab.activity/common/Resources/Images/harpsichord.png
deleted file mode 100644
index 231f906..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/harpsichord.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/harpsichordsel.png b/TamTamSynthLab.activity/common/Resources/Images/harpsichordsel.png
deleted file mode 100644
index d687f4e..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/harpsichordsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/helpShow1.jpg b/TamTamSynthLab.activity/common/Resources/Images/helpShow1.jpg
deleted file mode 100644
index 885db27..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/helpShow1.jpg
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/helpShow2.jpg b/TamTamSynthLab.activity/common/Resources/Images/helpShow2.jpg
deleted file mode 100644
index 009e58e..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/helpShow2.jpg
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/helpShow3.jpg b/TamTamSynthLab.activity/common/Resources/Images/helpShow3.jpg
deleted file mode 100644
index b3858aa..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/helpShow3.jpg
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/helpShow4.jpg b/TamTamSynthLab.activity/common/Resources/Images/helpShow4.jpg
deleted file mode 100644
index f5ef420..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/helpShow4.jpg
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/helpShow5.jpg b/TamTamSynthLab.activity/common/Resources/Images/helpShow5.jpg
deleted file mode 100644
index f7d47d6..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/helpShow5.jpg
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/helpShow6.jpg b/TamTamSynthLab.activity/common/Resources/Images/helpShow6.jpg
deleted file mode 100644
index 8b548e3..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/helpShow6.jpg
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/helpShow7.jpg b/TamTamSynthLab.activity/common/Resources/Images/helpShow7.jpg
deleted file mode 100644
index 58f6f1a..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/helpShow7.jpg
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/helpShow8.jpg b/TamTamSynthLab.activity/common/Resources/Images/helpShow8.jpg
deleted file mode 100644
index c135fa8..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/helpShow8.jpg
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/helpShow9.jpg b/TamTamSynthLab.activity/common/Resources/Images/helpShow9.jpg
deleted file mode 100644
index 6a1e01a..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/helpShow9.jpg
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/helpTam.png b/TamTamSynthLab.activity/common/Resources/Images/helpTam.png
deleted file mode 100644
index b7ad8b3..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/helpTam.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/helpTamDown.png b/TamTamSynthLab.activity/common/Resources/Images/helpTamDown.png
deleted file mode 100644
index b27e33e..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/helpTamDown.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/helpTamOver.png b/TamTamSynthLab.activity/common/Resources/Images/helpTamOver.png
deleted file mode 100644
index 233624d..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/helpTamOver.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/hey.png b/TamTamSynthLab.activity/common/Resources/Images/hey.png
deleted file mode 100644
index 09d1824..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/hey.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/heysel.png b/TamTamSynthLab.activity/common/Resources/Images/heysel.png
deleted file mode 100644
index df4eeb7..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/heysel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/hit.png b/TamTamSynthLab.activity/common/Resources/Images/hit.png
deleted file mode 100644
index d81489e..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/hit.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/hitSelected.png b/TamTamSynthLab.activity/common/Resources/Images/hitSelected.png
deleted file mode 100644
index 20473b8..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/hitSelected.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/horse.png b/TamTamSynthLab.activity/common/Resources/Images/horse.png
deleted file mode 100644
index 2c4c528..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/horse.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/horsesel.png b/TamTamSynthLab.activity/common/Resources/Images/horsesel.png
deleted file mode 100644
index c599ebe..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/horsesel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/instr0.png b/TamTamSynthLab.activity/common/Resources/Images/instr0.png
deleted file mode 100644
index 8e11498..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/instr0.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/instr1.png b/TamTamSynthLab.activity/common/Resources/Images/instr1.png
deleted file mode 100644
index 548870d..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/instr1.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/instr2.png b/TamTamSynthLab.activity/common/Resources/Images/instr2.png
deleted file mode 100644
index ca720b3..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/instr2.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/instr3.png b/TamTamSynthLab.activity/common/Resources/Images/instr3.png
deleted file mode 100644
index 8c6dc63..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/instr3.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/instr4.png b/TamTamSynthLab.activity/common/Resources/Images/instr4.png
deleted file mode 100644
index 05e16ec..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/instr4.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/jam-blockMask.png b/TamTamSynthLab.activity/common/Resources/Images/jam-blockMask.png
deleted file mode 100644
index dc3911f..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/jam-blockMask.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/kalimba.png b/TamTamSynthLab.activity/common/Resources/Images/kalimba.png
deleted file mode 100644
index b763869..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/kalimba.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/kalimbasel.png b/TamTamSynthLab.activity/common/Resources/Images/kalimbasel.png
deleted file mode 100644
index 3e55881..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/kalimbasel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/keyboard.png b/TamTamSynthLab.activity/common/Resources/Images/keyboard.png
deleted file mode 100644
index db31de3..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/keyboard.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/keyboardsel.png b/TamTamSynthLab.activity/common/Resources/Images/keyboardsel.png
deleted file mode 100644
index c665ef1..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/keyboardsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/koto.png b/TamTamSynthLab.activity/common/Resources/Images/koto.png
deleted file mode 100644
index 716747d..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/koto.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/kotosel.png b/TamTamSynthLab.activity/common/Resources/Images/kotosel.png
deleted file mode 100644
index a560ea7..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/kotosel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/lab1.png b/TamTamSynthLab.activity/common/Resources/Images/lab1.png
deleted file mode 100644
index 4c494fc..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/lab1.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/lab1sel.png b/TamTamSynthLab.activity/common/Resources/Images/lab1sel.png
deleted file mode 100644
index a802bf5..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/lab1sel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/lab2.png b/TamTamSynthLab.activity/common/Resources/Images/lab2.png
deleted file mode 100644
index 988dc36..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/lab2.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/lab2sel.png b/TamTamSynthLab.activity/common/Resources/Images/lab2sel.png
deleted file mode 100644
index 9cde0cc..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/lab2sel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/lab3.png b/TamTamSynthLab.activity/common/Resources/Images/lab3.png
deleted file mode 100644
index 4b328c1..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/lab3.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/lab3sel.png b/TamTamSynthLab.activity/common/Resources/Images/lab3sel.png
deleted file mode 100644
index 538fc59..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/lab3sel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/lab4.png b/TamTamSynthLab.activity/common/Resources/Images/lab4.png
deleted file mode 100644
index 1dc1dd2..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/lab4.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/lab4sel.png b/TamTamSynthLab.activity/common/Resources/Images/lab4sel.png
deleted file mode 100644
index fd2cc0a..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/lab4sel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/lab5.png b/TamTamSynthLab.activity/common/Resources/Images/lab5.png
deleted file mode 100644
index d9c31c0..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/lab5.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/lab5sel.png b/TamTamSynthLab.activity/common/Resources/Images/lab5sel.png
deleted file mode 100644
index ff53f96..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/lab5sel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/lab6.png b/TamTamSynthLab.activity/common/Resources/Images/lab6.png
deleted file mode 100644
index 12cc331..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/lab6.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/lab6sel.png b/TamTamSynthLab.activity/common/Resources/Images/lab6sel.png
deleted file mode 100644
index c243aef..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/lab6sel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/laugh.png b/TamTamSynthLab.activity/common/Resources/Images/laugh.png
deleted file mode 100644
index 493711e..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/laugh.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/laughsel.png b/TamTamSynthLab.activity/common/Resources/Images/laughsel.png
deleted file mode 100644
index 28a1980..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/laughsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/mando.png b/TamTamSynthLab.activity/common/Resources/Images/mando.png
deleted file mode 100644
index d97a2e1..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/mando.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/mandosel.png b/TamTamSynthLab.activity/common/Resources/Images/mandosel.png
deleted file mode 100644
index d8d5ad6..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/mandosel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/marimba.png b/TamTamSynthLab.activity/common/Resources/Images/marimba.png
deleted file mode 100644
index f5eb4ac..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/marimba.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/marimbasel.png b/TamTamSynthLab.activity/common/Resources/Images/marimbasel.png
deleted file mode 100644
index 3231271..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/marimbasel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/marquis.png b/TamTamSynthLab.activity/common/Resources/Images/marquis.png
deleted file mode 100644
index e14917a..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/marquis.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/mic1.png b/TamTamSynthLab.activity/common/Resources/Images/mic1.png
deleted file mode 100644
index c6c991b..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/mic1.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/mic1sel.png b/TamTamSynthLab.activity/common/Resources/Images/mic1sel.png
deleted file mode 100644
index 577ffcf..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/mic1sel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/mic2.png b/TamTamSynthLab.activity/common/Resources/Images/mic2.png
deleted file mode 100644
index c827229..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/mic2.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/mic2sel.png b/TamTamSynthLab.activity/common/Resources/Images/mic2sel.png
deleted file mode 100644
index 4f2b800..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/mic2sel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/mic3.png b/TamTamSynthLab.activity/common/Resources/Images/mic3.png
deleted file mode 100644
index a3cb9c2..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/mic3.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/mic3sel.png b/TamTamSynthLab.activity/common/Resources/Images/mic3sel.png
deleted file mode 100644
index 82fcbf9..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/mic3sel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/mic4.png b/TamTamSynthLab.activity/common/Resources/Images/mic4.png
deleted file mode 100644
index 2109c6d..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/mic4.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/mic4sel.png b/TamTamSynthLab.activity/common/Resources/Images/mic4sel.png
deleted file mode 100644
index 4d63e90..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/mic4sel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/miniTam.png b/TamTamSynthLab.activity/common/Resources/Images/miniTam.png
deleted file mode 100644
index 0fc0fc3..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/miniTam.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/miniTamDown.png b/TamTamSynthLab.activity/common/Resources/Images/miniTamDown.png
deleted file mode 100644
index ea6395f..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/miniTamDown.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/miniTamOver.png b/TamTamSynthLab.activity/common/Resources/Images/miniTamOver.png
deleted file mode 100644
index a9d1478..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/miniTamOver.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/miniplay.png b/TamTamSynthLab.activity/common/Resources/Images/miniplay.png
deleted file mode 100644
index 674303b..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/miniplay.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/mysounds.png b/TamTamSynthLab.activity/common/Resources/Images/mysounds.png
deleted file mode 100644
index 88791b6..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/mysounds.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/mysoundssel.png b/TamTamSynthLab.activity/common/Resources/Images/mysoundssel.png
deleted file mode 100644
index 8aa802c..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/mysoundssel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/note.png b/TamTamSynthLab.activity/common/Resources/Images/note.png
deleted file mode 100644
index 98731c0..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/note.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/noteSelected.png b/TamTamSynthLab.activity/common/Resources/Images/noteSelected.png
deleted file mode 100644
index b887bb9..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/noteSelected.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/ocarina.png b/TamTamSynthLab.activity/common/Resources/Images/ocarina.png
deleted file mode 100644
index 3c8f794..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/ocarina.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/ocarinasel.png b/TamTamSynthLab.activity/common/Resources/Images/ocarinasel.png
deleted file mode 100644
index 00d519b..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/ocarinasel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/ounk.png b/TamTamSynthLab.activity/common/Resources/Images/ounk.png
deleted file mode 100644
index 4949262..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/ounk.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/ounksel.png b/TamTamSynthLab.activity/common/Resources/Images/ounksel.png
deleted file mode 100644
index f70aea7..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/ounksel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/ow.png b/TamTamSynthLab.activity/common/Resources/Images/ow.png
deleted file mode 100644
index 0d8d57d..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/ow.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/owsel.png b/TamTamSynthLab.activity/common/Resources/Images/owsel.png
deleted file mode 100644
index dd5e814..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/owsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBG.png b/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBG.png
deleted file mode 100644
index 2c11493..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBG.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBG0.png b/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBG0.png
deleted file mode 100644
index db2c684..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBG0.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBG1.png b/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBG1.png
deleted file mode 100644
index f0c14ce..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBG1.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBG2.png b/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBG2.png
deleted file mode 100644
index 4969241..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBG2.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBG3.png b/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBG3.png
deleted file mode 100644
index 839b741..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBG3.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut0.png b/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut0.png
deleted file mode 100644
index e70e75c..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut0.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut0Down.png b/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut0Down.png
deleted file mode 100644
index 0266d10..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut0Down.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut1.png b/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut1.png
deleted file mode 100644
index e74600c..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut1.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut1Down.png b/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut1Down.png
deleted file mode 100644
index cfa3f69..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut1Down.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut2.png b/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut2.png
deleted file mode 100644
index 7f16f50..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut2.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut2Down.png b/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut2Down.png
deleted file mode 100644
index 9e7d79a..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut2Down.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut3.png b/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut3.png
deleted file mode 100644
index 8f7be4d..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut3.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut3Down.png b/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut3Down.png
deleted file mode 100644
index 90b6b92..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailBut3Down.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailMask.png b/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailMask.png
deleted file mode 100644
index 2a1d416..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/pageThumbnailMask.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/people.png b/TamTamSynthLab.activity/common/Resources/Images/people.png
deleted file mode 100644
index 3bc11b7..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/people.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/peoplesel.png b/TamTamSynthLab.activity/common/Resources/Images/peoplesel.png
deleted file mode 100644
index 0893c2e..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/peoplesel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/percussions.png b/TamTamSynthLab.activity/common/Resources/Images/percussions.png
deleted file mode 100644
index e39e3ef..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/percussions.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/percussionssel.png b/TamTamSynthLab.activity/common/Resources/Images/percussionssel.png
deleted file mode 100644
index 9d8fadd..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/percussionssel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/piano.png b/TamTamSynthLab.activity/common/Resources/Images/piano.png
deleted file mode 100644
index dbd8e21..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/piano.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/pianosel.png b/TamTamSynthLab.activity/common/Resources/Images/pianosel.png
deleted file mode 100644
index 9c1923a..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/pianosel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/plane.png b/TamTamSynthLab.activity/common/Resources/Images/plane.png
deleted file mode 100644
index ccb8607..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/plane.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/planesel.png b/TamTamSynthLab.activity/common/Resources/Images/planesel.png
deleted file mode 100644
index 1120b67..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/planesel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/reverb0.png b/TamTamSynthLab.activity/common/Resources/Images/reverb0.png
deleted file mode 100644
index 234bef6..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/reverb0.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/reverb1.png b/TamTamSynthLab.activity/common/Resources/Images/reverb1.png
deleted file mode 100644
index d05da05..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/reverb1.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/reverb2.png b/TamTamSynthLab.activity/common/Resources/Images/reverb2.png
deleted file mode 100644
index 91942d5..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/reverb2.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/reverb3.png b/TamTamSynthLab.activity/common/Resources/Images/reverb3.png
deleted file mode 100644
index f503f7d..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/reverb3.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/reverb4.png b/TamTamSynthLab.activity/common/Resources/Images/reverb4.png
deleted file mode 100644
index 1588275..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/reverb4.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/reverb5.png b/TamTamSynthLab.activity/common/Resources/Images/reverb5.png
deleted file mode 100644
index a67d360..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/reverb5.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/rhodes.png b/TamTamSynthLab.activity/common/Resources/Images/rhodes.png
deleted file mode 100644
index 658991d..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/rhodes.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/rhodessel.png b/TamTamSynthLab.activity/common/Resources/Images/rhodessel.png
deleted file mode 100644
index 95a920f..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/rhodessel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/sampleBG.png b/TamTamSynthLab.activity/common/Resources/Images/sampleBG.png
deleted file mode 100644
index 359244e..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/sampleBG.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/sampleNoteMask.png b/TamTamSynthLab.activity/common/Resources/Images/sampleNoteMask.png
deleted file mode 100644
index cc9448f..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/sampleNoteMask.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/sarangi.orig.jpg b/TamTamSynthLab.activity/common/Resources/Images/sarangi.orig.jpg
deleted file mode 100644
index c0c5fa6..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/sarangi.orig.jpg
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/sarangi.png b/TamTamSynthLab.activity/common/Resources/Images/sarangi.png
deleted file mode 100644
index 666c129..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/sarangi.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/sarangisel.png b/TamTamSynthLab.activity/common/Resources/Images/sarangisel.png
deleted file mode 100644
index b84b495..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/sarangisel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/saxo.png b/TamTamSynthLab.activity/common/Resources/Images/saxo.png
deleted file mode 100644
index cadf6fe..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/saxo.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/saxosel.png b/TamTamSynthLab.activity/common/Resources/Images/saxosel.png
deleted file mode 100644
index 838d552..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/saxosel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/saxsoprano.png b/TamTamSynthLab.activity/common/Resources/Images/saxsoprano.png
deleted file mode 100644
index a480942..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/saxsoprano.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/saxsopranosel.png b/TamTamSynthLab.activity/common/Resources/Images/saxsopranosel.png
deleted file mode 100644
index 04757fd..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/saxsopranosel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/scrollBar.png b/TamTamSynthLab.activity/common/Resources/Images/scrollBar.png
deleted file mode 100644
index b8fb3cb..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/scrollBar.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/sheep.png b/TamTamSynthLab.activity/common/Resources/Images/sheep.png
deleted file mode 100644
index 3c46699..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/sheep.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/sheepsel.png b/TamTamSynthLab.activity/common/Resources/Images/sheepsel.png
deleted file mode 100644
index 42548a0..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/sheepsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/shenai.png b/TamTamSynthLab.activity/common/Resources/Images/shenai.png
deleted file mode 100644
index 99eb91d..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/shenai.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/shenaisel.png b/TamTamSynthLab.activity/common/Resources/Images/shenaisel.png
deleted file mode 100644
index bde3c4f..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/shenaisel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/sitar.png b/TamTamSynthLab.activity/common/Resources/Images/sitar.png
deleted file mode 100644
index 0a61628..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/sitar.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/sitarsel.png b/TamTamSynthLab.activity/common/Resources/Images/sitarsel.png
deleted file mode 100644
index 512726e..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/sitarsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/slap.png b/TamTamSynthLab.activity/common/Resources/Images/slap.png
deleted file mode 100644
index cafbe5e..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/slap.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/slapsel.png b/TamTamSynthLab.activity/common/Resources/Images/slapsel.png
deleted file mode 100644
index 85bd6b4..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/slapsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/sliderDrum.png b/TamTamSynthLab.activity/common/Resources/Images/sliderDrum.png
deleted file mode 100644
index dd65e6d..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/sliderDrum.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/sliderEditTempo.png b/TamTamSynthLab.activity/common/Resources/Images/sliderEditTempo.png
deleted file mode 100644
index 0ec252d..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/sliderEditTempo.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/sliderEditVolume.png b/TamTamSynthLab.activity/common/Resources/Images/sliderEditVolume.png
deleted file mode 100644
index 5f4daca..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/sliderEditVolume.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/sliderInst1.png b/TamTamSynthLab.activity/common/Resources/Images/sliderInst1.png
deleted file mode 100644
index fc48d15..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/sliderInst1.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/sliderInst2.png b/TamTamSynthLab.activity/common/Resources/Images/sliderInst2.png
deleted file mode 100644
index 4f256eb..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/sliderInst2.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/sliderInst3.png b/TamTamSynthLab.activity/common/Resources/Images/sliderInst3.png
deleted file mode 100644
index e86b71e..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/sliderInst3.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/sliderInst4.png b/TamTamSynthLab.activity/common/Resources/Images/sliderInst4.png
deleted file mode 100644
index e812bd4..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/sliderInst4.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/sliderbutbleu.png b/TamTamSynthLab.activity/common/Resources/Images/sliderbutbleu.png
deleted file mode 100644
index 6c34a77..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/sliderbutbleu.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/sliderbutjaune.png b/TamTamSynthLab.activity/common/Resources/Images/sliderbutjaune.png
deleted file mode 100644
index 6f0fe9d..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/sliderbutjaune.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/sliderbutred.png b/TamTamSynthLab.activity/common/Resources/Images/sliderbutred.png
deleted file mode 100644
index 2e44538..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/sliderbutred.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/sliderbutvert.png b/TamTamSynthLab.activity/common/Resources/Images/sliderbutvert.png
deleted file mode 100644
index bbe53e8..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/sliderbutvert.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/sliderbutviolet.png b/TamTamSynthLab.activity/common/Resources/Images/sliderbutviolet.png
deleted file mode 100644
index a2b2a54..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/sliderbutviolet.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/sliderlong.png b/TamTamSynthLab.activity/common/Resources/Images/sliderlong.png
deleted file mode 100644
index f6e05e4..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/sliderlong.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/slidershort.png b/TamTamSynthLab.activity/common/Resources/Images/slidershort.png
deleted file mode 100644
index aff8bb1..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/slidershort.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/stop.png b/TamTamSynthLab.activity/common/Resources/Images/stop.png
deleted file mode 100644
index cd55af1..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/stop.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/strings.png b/TamTamSynthLab.activity/common/Resources/Images/strings.png
deleted file mode 100644
index 38de9ca..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/strings.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/stringssel.png b/TamTamSynthLab.activity/common/Resources/Images/stringssel.png
deleted file mode 100644
index 08f8997..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/stringssel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/synthTam.png b/TamTamSynthLab.activity/common/Resources/Images/synthTam.png
deleted file mode 100644
index e0837d2..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/synthTam.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/synthTamDown.png b/TamTamSynthLab.activity/common/Resources/Images/synthTamDown.png
deleted file mode 100644
index eef7fcb..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/synthTamDown.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/synthTamOver.png b/TamTamSynthLab.activity/common/Resources/Images/synthTamOver.png
deleted file mode 100644
index 6f203e8..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/synthTamOver.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/synthlabMask.png b/TamTamSynthLab.activity/common/Resources/Images/synthlabMask.png
deleted file mode 100644
index b41d467..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/synthlabMask.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/tchiwo.png b/TamTamSynthLab.activity/common/Resources/Images/tchiwo.png
deleted file mode 100644
index 666f004..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/tchiwo.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/tchiwosel.png b/TamTamSynthLab.activity/common/Resources/Images/tchiwosel.png
deleted file mode 100644
index 9878149..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/tchiwosel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/templebell.orig.jpg b/TamTamSynthLab.activity/common/Resources/Images/templebell.orig.jpg
deleted file mode 100644
index 5ad1231..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/templebell.orig.jpg
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/templebell.png b/TamTamSynthLab.activity/common/Resources/Images/templebell.png
deleted file mode 100644
index b84b499..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/templebell.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/templebellsel.png b/TamTamSynthLab.activity/common/Resources/Images/templebellsel.png
deleted file mode 100644
index c8ef8e7..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/templebellsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/tempo1.png b/TamTamSynthLab.activity/common/Resources/Images/tempo1.png
deleted file mode 100644
index 71f741c..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/tempo1.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/tempo2.png b/TamTamSynthLab.activity/common/Resources/Images/tempo2.png
deleted file mode 100644
index 2c69512..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/tempo2.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/tempo3.png b/TamTamSynthLab.activity/common/Resources/Images/tempo3.png
deleted file mode 100644
index a7905d1..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/tempo3.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/tempo4.png b/TamTamSynthLab.activity/common/Resources/Images/tempo4.png
deleted file mode 100644
index c264a47..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/tempo4.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/tempo5.png b/TamTamSynthLab.activity/common/Resources/Images/tempo5.png
deleted file mode 100644
index 1c89411..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/tempo5.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/tempo6.png b/TamTamSynthLab.activity/common/Resources/Images/tempo6.png
deleted file mode 100644
index 68deca9..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/tempo6.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/tempo7.png b/TamTamSynthLab.activity/common/Resources/Images/tempo7.png
deleted file mode 100644
index 81ffb5a..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/tempo7.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/tempo8.png b/TamTamSynthLab.activity/common/Resources/Images/tempo8.png
deleted file mode 100644
index 751e68a..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/tempo8.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/trackBG.png b/TamTamSynthLab.activity/common/Resources/Images/trackBG.png
deleted file mode 100644
index 6fdf29c..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/trackBG.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/trackBGDrum.png b/TamTamSynthLab.activity/common/Resources/Images/trackBGDrum.png
deleted file mode 100644
index 1a53271..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/trackBGDrum.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/trackBGDrumSelected.png b/TamTamSynthLab.activity/common/Resources/Images/trackBGDrumSelected.png
deleted file mode 100644
index 54f765e..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/trackBGDrumSelected.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/trackBGSelected.png b/TamTamSynthLab.activity/common/Resources/Images/trackBGSelected.png
deleted file mode 100644
index c800112..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/trackBGSelected.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/triangle.png b/TamTamSynthLab.activity/common/Resources/Images/triangle.png
deleted file mode 100644
index 2a74f17..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/triangle.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/trianglesel.png b/TamTamSynthLab.activity/common/Resources/Images/trianglesel.png
deleted file mode 100644
index 70d6e58..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/trianglesel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/trumpet.png b/TamTamSynthLab.activity/common/Resources/Images/trumpet.png
deleted file mode 100644
index 6876a92..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/trumpet.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/trumpetsel.png b/TamTamSynthLab.activity/common/Resources/Images/trumpetsel.png
deleted file mode 100644
index d77a8e4..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/trumpetsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/tuba.png b/TamTamSynthLab.activity/common/Resources/Images/tuba.png
deleted file mode 100644
index 5cdf2f1..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/tuba.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/tubasel.png b/TamTamSynthLab.activity/common/Resources/Images/tubasel.png
deleted file mode 100644
index d194d91..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/tubasel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/ukulele.png b/TamTamSynthLab.activity/common/Resources/Images/ukulele.png
deleted file mode 100644
index 5e97f03..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/ukulele.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/ukulelesel.png b/TamTamSynthLab.activity/common/Resources/Images/ukulelesel.png
deleted file mode 100644
index 0073abf..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/ukulelesel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/violin.png b/TamTamSynthLab.activity/common/Resources/Images/violin.png
deleted file mode 100644
index f13988f..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/violin.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/violinsel.png b/TamTamSynthLab.activity/common/Resources/Images/violinsel.png
deleted file mode 100644
index 36f8b02..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/violinsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/voix.png b/TamTamSynthLab.activity/common/Resources/Images/voix.png
deleted file mode 100644
index 0c1fc68..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/voix.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/voixsel.png b/TamTamSynthLab.activity/common/Resources/Images/voixsel.png
deleted file mode 100644
index 8dc5a37..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/voixsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/volume0.png b/TamTamSynthLab.activity/common/Resources/Images/volume0.png
deleted file mode 100644
index f2af58b..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/volume0.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/volume1.png b/TamTamSynthLab.activity/common/Resources/Images/volume1.png
deleted file mode 100644
index 67bd806..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/volume1.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/volume2.png b/TamTamSynthLab.activity/common/Resources/Images/volume2.png
deleted file mode 100644
index 74511e9..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/volume2.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/volume3.png b/TamTamSynthLab.activity/common/Resources/Images/volume3.png
deleted file mode 100644
index fc0f894..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/volume3.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/water.png b/TamTamSynthLab.activity/common/Resources/Images/water.png
deleted file mode 100644
index c199fff..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/water.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/watersel.png b/TamTamSynthLab.activity/common/Resources/Images/watersel.png
deleted file mode 100644
index c685fe6..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/watersel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/winds.png b/TamTamSynthLab.activity/common/Resources/Images/winds.png
deleted file mode 100644
index bfb9e26..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/winds.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/windssel.png b/TamTamSynthLab.activity/common/Resources/Images/windssel.png
deleted file mode 100644
index fee7452..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/windssel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/zap.png b/TamTamSynthLab.activity/common/Resources/Images/zap.png
deleted file mode 100644
index 6599e0f..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/zap.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Images/zapsel.png b/TamTamSynthLab.activity/common/Resources/Images/zapsel.png
deleted file mode 100644
index 0f2b324..0000000
--- a/TamTamSynthLab.activity/common/Resources/Images/zapsel.png
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop02_0.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop02_0.ttl
deleted file mode 100644
index 2612e8a..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop02_0.ttl
+++ /dev/null
@@ -1,9 +0,0 @@
-page_add 1 2 0 []
-note_add 1000 1 0 0 32 0.99985928761 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 3 38 0.682939553831 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 6 32 0.651752076192 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 9 38 0.668591772162 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 12 32 0.889173942414 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 15 38 0.669841961652 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 18 32 0.655526380723 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 21 38 0.718481783236 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop02_1.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop02_1.ttl
deleted file mode 100644
index 9a245cc..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop02_1.ttl
+++ /dev/null
@@ -1,8 +0,0 @@
-page_add 1 2 0 []
-note_add 1001 1 0 0 36 0.910316671284 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 3 46 0.747296697473 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 6 38 0.692085319728 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 9 44 0.708999458584 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 12 36 0.79152160722 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 15 46 0.728970030437 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 18 38 0.714205938315 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop02_2.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop02_2.ttl
deleted file mode 100644
index 7953da6..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop02_2.ttl
+++ /dev/null
@@ -1,5 +0,0 @@
-page_add 1 2 0 []
-note_add 1002 1 0 0 32 0.947424486254 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 6 32 0.721472651996 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 12 32 0.831937627917 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 18 32 0.692257845757 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop02_3.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop02_3.ttl
deleted file mode 100644
index 6514dc1..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop02_3.ttl
+++ /dev/null
@@ -1,2 +0,0 @@
-page_add 1 2 0 []
-note_add 1003 1 0 0 32 0.906061777827 0.5 24 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop02_4.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop02_4.ttl
deleted file mode 100644
index fb44d69..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop02_4.ttl
+++ /dev/null
@@ -1,3 +0,0 @@
-page_add 1 2 0 []
-note_add 1004 1 0 0 44 0.999710890606 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 6 46 0.673732534575 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop03_0.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop03_0.ttl
deleted file mode 100644
index ecb71b0..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop03_0.ttl
+++ /dev/null
@@ -1,13 +0,0 @@
-page_add 1 3 0 []
-note_add 1000 1 0 0 32 0.989366069205 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 3 32 0.720801833684 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 6 32 0.749287810628 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 9 32 0.742196634139 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 12 32 0.815042129891 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 15 32 0.687728921021 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 18 32 0.701443840182 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 21 32 0.678818282301 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 24 32 0.81446439672 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 27 32 0.707508318321 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 30 32 0.699388479165 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 33 32 0.711786418725 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop03_1.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop03_1.ttl
deleted file mode 100644
index f9ad6c3..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop03_1.ttl
+++ /dev/null
@@ -1,11 +0,0 @@
-page_add 1 3 0 []
-note_add 1001 1 0 0 36 0.982563337001 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 6 48 0.677869216687 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 9 43 0.684561864618 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 12 43 0.790931552908 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 15 36 0.684015006275 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 18 48 0.673900066009 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 24 43 0.785080465123 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 27 43 0.705954629686 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 30 36 0.730218556481 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 33 48 0.732122018719 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop03_2.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop03_2.ttl
deleted file mode 100644
index fdc3c34..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop03_2.ttl
+++ /dev/null
@@ -1,5 +0,0 @@
-page_add 1 3 0 []
-note_add 1002 1 0 0 38 0.908581041036 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 12 32 0.88973063854 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 18 32 0.69634792235 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 24 36 0.792724331664 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop03_3.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop03_3.ttl
deleted file mode 100644
index c9766ac..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop03_3.ttl
+++ /dev/null
@@ -1,4 +0,0 @@
-page_add 1 3 0 []
-note_add 1003 1 0 0 32 0.977428103603 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 12 32 0.892916232237 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 18 36 0.746267101548 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop03_4.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop03_4.ttl
deleted file mode 100644
index fa83771..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop03_4.ttl
+++ /dev/null
@@ -1,5 +0,0 @@
-page_add 1 3 0 []
-note_add 1004 1 0 0 36 0.984833132684 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 6 46 0.718419403505 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 24 41 0.789388809938 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 30 32 0.727520306786 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop04_0.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop04_0.ttl
deleted file mode 100644
index 78c1f25..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop04_0.ttl
+++ /dev/null
@@ -1,17 +0,0 @@
-page_add 1 4 0 []
-note_add 1000 1 0 0 36 0.95430647582 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 3 32 0.658691939837 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 6 36 0.747252681193 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 9 32 0.704895028464 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 12 36 0.758460247167 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 15 32 0.743618641081 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 18 36 0.721716943061 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 21 32 0.695172159459 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 24 36 0.792625787357 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 27 32 0.67165239417 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 30 36 0.692209994937 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 33 32 0.681830813385 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 36 36 0.812239275177 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 39 32 0.746191340695 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 42 36 0.743615433014 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 45 32 0.747473175282 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop04_1.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop04_1.ttl
deleted file mode 100644
index 0fa0ffd..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop04_1.ttl
+++ /dev/null
@@ -1,7 +0,0 @@
-page_add 1 4 0 []
-note_add 1001 1 0 0 44 0.989486016936 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 6 44 0.698418925898 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 12 32 0.874028022809 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 18 41 0.730441737037 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 30 44 0.67006630257 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 42 44 0.674727483023 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop04_2.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop04_2.ttl
deleted file mode 100644
index 67b0366..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop04_2.ttl
+++ /dev/null
@@ -1,6 +0,0 @@
-page_add 1 4 0 []
-note_add 1002 1 0 0 46 0.912012070336 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 12 41 0.763762485784 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 18 32 0.736126045512 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 30 32 0.657320116366 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 42 48 0.714130787772 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop04_3.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop04_3.ttl
deleted file mode 100644
index 117a4ad..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop04_3.ttl
+++ /dev/null
@@ -1,4 +0,0 @@
-page_add 1 4 0 []
-note_add 1003 1 0 0 48 0.953281741061 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 6 32 0.738512846816 0.5 24 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 30 36 0.741532470152 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop04_4.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop04_4.ttl
deleted file mode 100644
index 1b34256..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop04_4.ttl
+++ /dev/null
@@ -1,10 +0,0 @@
-page_add 1 4 0 []
-note_add 1004 1 0 0 48 0.943528178544 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 3 36 0.715139169634 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 6 32 0.694654106567 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 12 46 0.876023546144 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 24 48 0.782578989044 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 30 43 0.72836708845 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 36 32 0.872559774103 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 39 44 0.691343365943 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 42 48 0.734594689768 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop05_0.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop05_0.ttl
deleted file mode 100644
index a700c70..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop05_0.ttl
+++ /dev/null
@@ -1,21 +0,0 @@
-page_add 1 5 0 []
-note_add 1000 1 0 0 36 0.932107581794 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 3 32 0.675577577824 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 6 36 0.684383784407 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 9 32 0.669389472795 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 12 36 0.856030361038 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 15 32 0.652798697108 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 18 36 0.682363327642 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 21 32 0.671184148029 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 24 36 0.85918561812 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 27 32 0.709884331451 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 30 36 0.6741801568 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 33 32 0.743932183841 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 36 36 0.843770324432 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 39 32 0.690697076684 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 42 36 0.719467342962 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 45 32 0.745708669546 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 48 36 0.854533128609 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 51 32 0.678610427404 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 54 36 0.670702992431 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 57 32 0.688640068104 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop05_1.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop05_1.ttl
deleted file mode 100644
index 67ac7da..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop05_1.ttl
+++ /dev/null
@@ -1,15 +0,0 @@
-page_add 1 5 0 []
-note_add 1001 1 0 0 32 0.967893135243 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 6 46 0.687125890161 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 9 48 0.718087610473 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 12 46 0.764511375074 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 15 32 0.747719304646 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 18 46 0.710069874156 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 30 48 0.670818778808 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 36 46 0.76718554892 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 39 32 0.674955363526 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 42 46 0.666988194077 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 45 48 0.733962679855 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 48 46 0.790478232949 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 54 32 0.654033702519 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 57 46 0.685576842626 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop05_2.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop05_2.ttl
deleted file mode 100644
index 938dca0..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop05_2.ttl
+++ /dev/null
@@ -1,8 +0,0 @@
-page_add 1 5 0 []
-note_add 1002 1 0 0 32 0.953975113794 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 6 48 0.73996191673 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 18 32 0.662372909235 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 24 36 0.872159062195 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 30 36 0.718019324126 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 48 32 0.834029446459 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 54 48 0.736099698032 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop05_3.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop05_3.ttl
deleted file mode 100644
index 4f2ef84..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop05_3.ttl
+++ /dev/null
@@ -1,5 +0,0 @@
-page_add 1 5 0 []
-note_add 1003 1 0 0 32 0.981548028673 0.5 24 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 24 32 0.844742084481 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 36 41 0.822468509957 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 48 32 0.882417824406 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop05_4.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop05_4.ttl
deleted file mode 100644
index baf2be2..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop05_4.ttl
+++ /dev/null
@@ -1,8 +0,0 @@
-page_add 1 5 0 []
-note_add 1004 1 0 0 32 0.90735368789 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 12 32 0.850828621275 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 15 43 0.712169838398 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 18 43 0.715862350703 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 36 34 0.887297930958 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 39 32 0.720284426596 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 42 32 0.698011766494 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop06_0.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop06_0.ttl
deleted file mode 100644
index d2f7dba..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop06_0.ttl
+++ /dev/null
@@ -1,25 +0,0 @@
-page_add 1 6 0 []
-note_add 1000 1 0 0 32 0.921114733322 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 3 32 0.655957694556 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 6 32 0.671270807728 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 9 32 0.694768801244 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 12 32 0.780227603486 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 15 32 0.723746292918 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 18 32 0.711968467875 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 21 32 0.654953733777 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 24 32 0.864831875594 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 27 32 0.709684598698 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 30 32 0.680162142542 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 33 32 0.674253527689 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 36 32 0.816207401937 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 39 32 0.683594143543 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 42 32 0.741697357887 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 45 32 0.71839862066 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 48 32 0.899849073174 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 51 32 0.668486947306 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 54 32 0.68402101838 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 57 32 0.696405215255 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 60 32 0.760683240228 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 63 32 0.675900317636 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 66 32 0.749191996222 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 69 32 0.651821036499 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop06_1.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop06_1.ttl
deleted file mode 100644
index 17bb12f..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop06_1.ttl
+++ /dev/null
@@ -1,14 +0,0 @@
-page_add 1 6 0 []
-note_add 1001 1 0 0 34 0.977138938499 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 6 32 0.747551297965 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 12 32 0.810093246414 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 15 36 0.655551676233 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 18 34 0.681352673984 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 21 32 0.67154506976 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 24 32 0.891965567701 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 27 36 0.749518897533 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 30 34 0.701924693814 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 36 32 0.797169334375 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 48 32 0.861794600346 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 54 36 0.706317436925 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 66 34 0.666747699849 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop06_2.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop06_2.ttl
deleted file mode 100644
index 46bf0c9..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop06_2.ttl
+++ /dev/null
@@ -1,8 +0,0 @@
-page_add 1 6 0 []
-note_add 1002 1 0 0 32 0.971945764101 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 18 43 0.65049456657 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 24 44 0.841740492595 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 30 44 0.689062735826 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 42 32 0.739870281493 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 60 32 0.767222578817 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 66 43 0.69553127697 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop06_3.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop06_3.ttl
deleted file mode 100644
index 90df0da..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop06_3.ttl
+++ /dev/null
@@ -1,7 +0,0 @@
-page_add 1 6 0 []
-note_add 1003 1 0 0 46 0.996839737936 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 6 32 0.655370478695 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 12 32 0.808561080003 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 24 34 0.79703642146 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 36 32 0.83096184728 0.5 24 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 60 32 0.774074064347 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop06_4.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop06_4.ttl
deleted file mode 100644
index e5e9543..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop06_4.ttl
+++ /dev/null
@@ -1,12 +0,0 @@
-page_add 1 6 0 []
-note_add 1004 1 0 0 41 0.99226300143 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 12 48 0.833675122603 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 15 46 0.731299021867 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 18 46 0.748477899167 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 30 48 0.735857780115 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 36 32 0.849709660981 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 39 38 0.686967953375 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 42 44 0.698163010873 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 45 41 0.659557550294 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 48 48 0.857262323945 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 60 46 0.779519440212 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop07_0.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop07_0.ttl
deleted file mode 100644
index e7b9ee4..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop07_0.ttl
+++ /dev/null
@@ -1,29 +0,0 @@
-page_add 1 7 0 []
-note_add 1000 1 0 0 44 0.960668250867 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 3 41 0.674207321488 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 6 44 0.734362222586 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 9 41 0.654866474165 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 12 44 0.868643464616 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 15 41 0.696937523027 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 18 44 0.66148762383 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 21 41 0.655993591676 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 24 44 0.873564876668 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 27 41 0.657079017965 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 30 44 0.741003605834 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 33 41 0.703264182119 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 36 44 0.814119223327 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 39 41 0.66936374141 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 42 44 0.679955978904 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 45 41 0.70856336316 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 48 44 0.759341048304 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 51 41 0.746547256267 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 54 44 0.676933444871 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 57 41 0.720471098726 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 60 44 0.86755339579 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 63 41 0.683523913426 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 66 44 0.657608601991 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 69 41 0.653374462124 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 72 44 0.894314312377 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 75 41 0.736867494683 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 78 44 0.666250541746 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 81 41 0.747987059432 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop07_1.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop07_1.ttl
deleted file mode 100644
index 708f514..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop07_1.ttl
+++ /dev/null
@@ -1,16 +0,0 @@
-page_add 1 7 0 []
-note_add 1001 1 0 0 32 0.977474510439 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 6 32 0.707918813499 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 18 32 0.733850711992 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 24 34 0.857051574163 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 30 32 0.668454750857 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 36 32 0.788716541461 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 48 32 0.86697793635 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 51 34 0.688630466836 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 54 32 0.67683408959 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 60 32 0.80114956131 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 66 32 0.706614786384 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 72 34 0.87371723136 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 75 32 0.723553578301 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 78 32 0.67938094618 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 81 32 0.651122275732 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop07_2.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop07_2.ttl
deleted file mode 100644
index 72fa05e..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop07_2.ttl
+++ /dev/null
@@ -1,10 +0,0 @@
-page_add 1 7 0 []
-note_add 1002 1 0 0 32 0.994299643073 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 6 46 0.738402962047 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 12 32 0.834643979888 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 18 41 0.709677800192 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 24 32 0.792564704361 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 42 32 0.736310799475 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 54 46 0.735363369615 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 66 32 0.686480691914 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 72 41 0.813155491409 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop07_3.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop07_3.ttl
deleted file mode 100644
index 09898fa..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop07_3.ttl
+++ /dev/null
@@ -1,9 +0,0 @@
-page_add 1 7 0 []
-note_add 1003 1 0 0 44 0.950684130482 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 6 38 0.743923505744 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 18 44 0.674226869975 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 36 41 0.894204673681 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 42 48 0.653172057252 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 48 32 0.869912247789 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 66 43 0.707500105747 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 78 44 0.712916834774 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop07_4.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop07_4.ttl
deleted file mode 100644
index 41829c5..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop07_4.ttl
+++ /dev/null
@@ -1,11 +0,0 @@
-page_add 1 7 0 []
-note_add 1004 1 0 0 32 0.929137794329 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 6 32 0.658516835329 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 18 38 0.681658393996 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 30 32 0.699822449365 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 36 32 0.817283176061 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 48 44 0.774057810069 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 66 48 0.747100920691 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 72 48 0.812377589911 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 75 32 0.681312168088 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 78 32 0.733215412992 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop08_0.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop08_0.ttl
deleted file mode 100644
index a9e7c4a..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop08_0.ttl
+++ /dev/null
@@ -1,33 +0,0 @@
-page_add 1 8 0 []
-note_add 1000 1 0 0 44 0.964205483761 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 3 44 0.651865744001 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 6 44 0.653396642859 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 9 44 0.688558247992 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 12 44 0.78652120346 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 15 44 0.659055701164 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 18 44 0.744066005297 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 21 44 0.669903086442 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 24 44 0.757356687106 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 27 44 0.713679510091 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 30 44 0.680212916118 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 33 44 0.702425459646 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 36 44 0.756115689115 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 39 44 0.711131722344 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 42 44 0.723075036701 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 45 44 0.692765358115 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 48 44 0.808823848013 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 51 44 0.668223705544 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 54 44 0.692958195306 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 57 44 0.671325742653 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 60 44 0.840218398486 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 63 44 0.74449136697 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 66 44 0.677903075922 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 69 44 0.685621355598 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 72 44 0.806256032 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 75 44 0.663346781982 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 78 44 0.691827856997 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 81 44 0.68135753616 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 84 44 0.806191023604 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 87 44 0.730719749924 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 90 44 0.733946176916 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 93 44 0.651926437205 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop08_1.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop08_1.ttl
deleted file mode 100644
index 98cc806..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop08_1.ttl
+++ /dev/null
@@ -1,19 +0,0 @@
-page_add 1 8 0 []
-note_add 1001 1 0 0 44 0.944269056188 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 6 46 0.729319114859 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 12 48 0.760543989618 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 15 36 0.722123755241 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 18 44 0.708072119865 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 24 46 0.894221345157 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 30 48 0.68244237846 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 36 36 0.777443117101 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 42 44 0.706365814249 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 48 46 0.831627419172 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 54 48 0.721992835095 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 60 36 0.803478459144 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 66 44 0.724597112713 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 72 46 0.823442728538 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 84 48 0.808131071659 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 87 36 0.65670209975 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 90 44 0.736655313059 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 93 46 0.707173856125 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop08_2.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop08_2.ttl
deleted file mode 100644
index a2ba262..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop08_2.ttl
+++ /dev/null
@@ -1,8 +0,0 @@
-page_add 1 8 0 []
-note_add 1002 1 0 0 32 0.936290994236 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 18 32 0.747613725209 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 24 32 0.837035115234 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 36 32 0.861361469314 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 54 32 0.715305330981 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 72 32 0.805101422804 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 90 32 0.736154980793 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop08_3.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop08_3.ttl
deleted file mode 100644
index 207632b..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop08_3.ttl
+++ /dev/null
@@ -1,9 +0,0 @@
-page_add 1 8 0 []
-note_add 1003 1 0 0 46 0.929352843013 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 12 46 0.836915427418 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 24 32 0.790263155895 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 36 43 0.784494030562 0.5 24 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 60 46 0.893530007497 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 72 46 0.809622907273 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 78 32 0.694420741809 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 84 46 0.795226231834 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop08_4.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop08_4.ttl
deleted file mode 100644
index 02e777c..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop08_4.ttl
+++ /dev/null
@@ -1,20 +0,0 @@
-page_add 1 8 0 []
-note_add 1004 1 0 0 32 0.925659868182 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 6 32 0.6911667398 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 9 34 0.673847362322 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 12 34 0.869535420663 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 15 32 0.668348323168 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 18 32 0.709778522529 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 24 32 0.849447146337 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 30 32 0.711729398878 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 36 32 0.866612182294 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 39 32 0.657459654993 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 42 34 0.666975606662 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 48 34 0.789575824644 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 51 32 0.67884164747 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 54 32 0.744742212122 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 60 32 0.864169727314 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 63 32 0.654127259721 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 66 32 0.677590723757 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 78 32 0.693244118701 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 90 34 0.682008906013 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop09_0.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop09_0.ttl
deleted file mode 100644
index a2a2875..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop09_0.ttl
+++ /dev/null
@@ -1,37 +0,0 @@
-page_add 1 9 0 []
-note_add 1000 1 0 0 46 0.947764415438 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 3 43 0.658715330453 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 6 46 0.731517704933 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 9 43 0.675263974808 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 12 46 0.87154899892 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 15 43 0.696613793749 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 18 46 0.729844473846 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 21 43 0.708347115296 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 24 46 0.829761577762 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 27 43 0.663388505786 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 30 46 0.723426166448 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 33 43 0.668570704132 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 36 46 0.862246548679 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 39 43 0.748631476403 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 42 46 0.711571455222 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 45 43 0.703930487754 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 48 46 0.859544195395 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 51 43 0.674156640881 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 54 46 0.729937128229 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 57 43 0.685638635438 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 60 46 0.887943715646 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 63 43 0.70357448061 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 66 46 0.706780754681 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 69 43 0.702266767734 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 72 46 0.803494224643 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 75 43 0.721963084996 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 78 46 0.733358551729 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 81 43 0.704391573465 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 84 46 0.789515426435 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 87 43 0.723108940538 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 90 46 0.710938024252 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 93 43 0.678002862829 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 96 46 0.766596988979 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 99 43 0.738497715805 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 102 46 0.721669110661 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 105 43 0.656578021764 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop09_1.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop09_1.ttl
deleted file mode 100644
index 8291a32..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop09_1.ttl
+++ /dev/null
@@ -1,19 +0,0 @@
-page_add 1 9 0 []
-note_add 1001 1 0 0 32 0.937141355284 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 3 32 0.719478462207 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 6 48 0.720884133263 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 9 43 0.713174231886 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 12 32 0.761717535633 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 18 32 0.681606973286 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 24 48 0.758114518196 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 36 43 0.839564832276 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 42 32 0.734985216027 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 48 32 0.793625294525 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 51 48 0.717544016903 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 54 43 0.742042480865 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 66 32 0.73577642886 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 72 32 0.753007731694 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 75 48 0.686873730756 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 78 43 0.68995193264 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 90 32 0.65180674643 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 96 32 0.757800092461 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop09_2.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop09_2.ttl
deleted file mode 100644
index 48d797c..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop09_2.ttl
+++ /dev/null
@@ -1,10 +0,0 @@
-page_add 1 9 0 []
-note_add 1002 1 0 0 32 0.99576286255 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 12 43 0.752795807489 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 18 36 0.66906332588 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 36 32 0.755741418425 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 42 44 0.661876936235 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 48 32 0.847153152159 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 66 43 0.678761285868 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 78 36 0.738364766254 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 90 32 0.712907949451 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop09_3.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop09_3.ttl
deleted file mode 100644
index 9a9a012..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop09_3.ttl
+++ /dev/null
@@ -1,13 +0,0 @@
-page_add 1 9 0 []
-note_add 1003 1 0 0 38 0.996033240789 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 6 32 0.745776812216 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 12 32 0.827835616589 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 24 32 0.79249257228 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 36 38 0.847804948167 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 48 32 0.799010380796 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 66 32 0.739630347495 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 72 38 0.780463490871 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 78 32 0.666004883967 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 84 32 0.762447888193 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 96 32 0.80956287506 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 102 38 0.703028499787 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop09_4.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop09_4.ttl
deleted file mode 100644
index 082b216..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop09_4.ttl
+++ /dev/null
@@ -1,18 +0,0 @@
-page_add 1 9 0 []
-note_add 1004 1 0 0 32 0.915832699564 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 6 32 0.742663054845 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 12 32 0.875390486038 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 30 34 0.748210563485 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 36 34 0.836488278848 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 48 32 0.865767152798 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 54 46 0.650642284496 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 60 32 0.792115476415 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 72 32 0.782035718153 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 78 32 0.651385601751 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 81 32 0.723715657424 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 84 34 0.793024551054 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 90 34 0.687013359717 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 96 32 0.871123790865 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 99 46 0.747308141007 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 102 32 0.679192160091 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 105 32 0.670293110114 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop10_0.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop10_0.ttl
deleted file mode 100644
index eea484f..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop10_0.ttl
+++ /dev/null
@@ -1,41 +0,0 @@
-page_add 1 10 0 []
-note_add 1000 1 0 0 48 0.979891880558 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 3 36 0.653076003778 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 6 48 0.680309821502 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 9 36 0.732764225227 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 12 48 0.769826352246 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 15 36 0.678786909709 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 18 48 0.664885298095 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 21 36 0.698420420141 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 24 48 0.878552200587 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 27 36 0.662090560587 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 30 48 0.738971944787 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 33 36 0.667129605877 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 36 48 0.803116894964 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 39 36 0.716572754547 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 42 48 0.731258823897 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 45 36 0.712155634947 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 48 48 0.840071620981 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 51 36 0.660040151104 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 54 48 0.7434367206 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 57 36 0.703695191148 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 60 48 0.763280464574 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 63 36 0.66340948072 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 66 48 0.717965633538 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 69 36 0.698255623472 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 72 48 0.870481837423 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 75 36 0.70292879052 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 78 48 0.701239054462 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 81 36 0.707280218411 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 84 48 0.824319636365 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 87 36 0.652493438877 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 90 48 0.691791347032 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 93 36 0.674363442563 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 96 48 0.830719213625 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 99 36 0.661428250271 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 102 48 0.733125395714 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 105 36 0.726819629927 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 108 48 0.78346763842 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 111 36 0.69729234269 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 114 48 0.734224587843 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 117 36 0.654777125602 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop10_1.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop10_1.ttl
deleted file mode 100644
index 994b3c8..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop10_1.ttl
+++ /dev/null
@@ -1,19 +0,0 @@
-page_add 1 10 0 []
-note_add 1001 1 0 0 34 0.997748569928 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 3 44 0.723576813399 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 6 44 0.741871004859 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 18 38 0.689398479169 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 30 34 0.660355615404 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 36 44 0.82625049286 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 42 44 0.741988630551 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 48 38 0.775260691012 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 54 34 0.7332263108 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 57 44 0.703461223395 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 60 44 0.832207143811 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 72 38 0.808919522624 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 84 34 0.809984476763 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 90 44 0.661661695398 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 96 44 0.7522709434 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 102 38 0.651370296265 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 108 34 0.88308853473 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 114 44 0.656056171207 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop10_2.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop10_2.ttl
deleted file mode 100644
index cd3615c..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop10_2.ttl
+++ /dev/null
@@ -1,11 +0,0 @@
-page_add 1 10 0 []
-note_add 1002 1 0 0 44 0.95139538384 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 18 48 0.723914992791 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 30 32 0.72952006514 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 48 46 0.789405290609 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 60 32 0.8646752285 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 66 44 0.717710545482 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 72 48 0.751895182545 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 84 32 0.807500121395 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 102 46 0.721952453815 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 114 32 0.670629591428 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop10_3.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop10_3.ttl
deleted file mode 100644
index 1188351..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop10_3.ttl
+++ /dev/null
@@ -1,12 +0,0 @@
-page_add 1 10 0 []
-note_add 1003 1 0 0 32 0.918429565796 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 12 32 0.896238657828 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 24 43 0.859990108109 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 36 36 0.780084722939 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 54 38 0.727509225141 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 66 48 0.677444860539 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 78 32 0.704849216477 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 84 32 0.834177866777 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 96 32 0.776622928055 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 108 43 0.750845342026 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 114 36 0.706362269841 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop10_4.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop10_4.ttl
deleted file mode 100644
index b97ea29..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop10_4.ttl
+++ /dev/null
@@ -1,15 +0,0 @@
-page_add 1 10 0 []
-note_add 1004 1 0 0 36 0.974377774474 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 12 44 0.753857800625 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 15 48 0.685571400538 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 18 32 0.67559477477 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 30 32 0.743901397279 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 33 36 0.734213988726 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 36 48 0.801032243062 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 54 32 0.68263985716 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 60 36 0.799444369922 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 66 44 0.656926424107 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 72 48 0.785283513034 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 84 32 0.819419200446 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 96 32 0.873983991491 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 114 36 0.736440156657 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop11_0.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop11_0.ttl
deleted file mode 100644
index abeea45..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop11_0.ttl
+++ /dev/null
@@ -1,45 +0,0 @@
-page_add 1 11 0 []
-note_add 1000 1 0 0 36 0.974634285682 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 3 38 0.673218797384 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 6 36 0.747316415913 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 9 38 0.735031186526 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 12 36 0.792657089029 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 15 38 0.708314889372 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 18 36 0.699847328328 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 21 38 0.742779567047 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 24 36 0.755033182447 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 27 38 0.715603611197 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 30 36 0.726677112176 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 33 38 0.69062307368 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 36 36 0.888706194279 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 39 38 0.747272625347 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 42 36 0.688903817409 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 45 38 0.730027384767 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 48 36 0.767287283844 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 51 38 0.699532687227 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 54 36 0.675524597551 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 57 38 0.658223950464 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 60 36 0.867450964995 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 63 38 0.7495509036 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 66 36 0.749049330818 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 69 38 0.746446874509 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 72 36 0.865760071835 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 75 38 0.657124977406 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 78 36 0.694812492205 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 81 38 0.747782147274 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 84 36 0.846127569948 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 87 38 0.685257570694 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 90 36 0.685048422213 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 93 38 0.73231586802 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 96 36 0.884601979406 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 99 38 0.734779574708 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 102 36 0.691485138954 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 105 38 0.701989583699 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 108 36 0.791414806938 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 111 38 0.746642528046 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 114 36 0.746693851449 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 117 38 0.674224536557 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 120 36 0.820459199538 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 123 38 0.67092960404 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 126 36 0.687376413318 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 129 38 0.71222115059 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop11_1.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop11_1.ttl
deleted file mode 100644
index c39f1c4..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop11_1.ttl
+++ /dev/null
@@ -1,23 +0,0 @@
-page_add 1 11 0 []
-note_add 1001 1 0 0 36 0.941898753203 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 12 32 0.785087753325 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 24 43 0.824557786201 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 30 44 0.716901825825 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 42 36 0.690092006379 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 45 32 0.722995861311 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 48 43 0.78432267112 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 60 44 0.858051777889 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 66 36 0.743693985084 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 69 32 0.657227900767 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 72 43 0.759573320592 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 84 44 0.882338848874 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 87 36 0.651051750015 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 90 32 0.707705322523 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 96 43 0.899243600614 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 99 44 0.712717212473 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 102 36 0.709697770717 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 105 32 0.740699865621 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 108 43 0.816120650387 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 111 44 0.737603961779 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 114 36 0.696177906281 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 126 32 0.721640187578 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop11_2.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop11_2.ttl
deleted file mode 100644
index 33be92c..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop11_2.ttl
+++ /dev/null
@@ -1,14 +0,0 @@
-page_add 1 11 0 []
-note_add 1002 1 0 0 32 0.932892286323 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 12 32 0.863832221538 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 24 32 0.787489418868 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 30 32 0.708435753041 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 48 32 0.839307723839 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 54 32 0.684927262126 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 66 32 0.744329704618 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 72 32 0.884621164701 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 78 32 0.6930467573 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 84 32 0.792391292267 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 102 32 0.733672222962 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 108 32 0.78807633069 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 126 32 0.73862649862 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop11_3.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop11_3.ttl
deleted file mode 100644
index 232f3e8..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop11_3.ttl
+++ /dev/null
@@ -1,12 +0,0 @@
-page_add 1 11 0 []
-note_add 1003 1 0 0 41 0.97013767245 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 12 43 0.822035108795 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 24 48 0.889989168626 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 30 32 0.701126454681 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 42 32 0.739055337576 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 60 34 0.764608983725 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 66 41 0.695357420564 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 84 41 0.837910768334 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 102 43 0.737348803423 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 114 48 0.691485917531 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 126 32 0.657815450394 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop11_4.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop11_4.ttl
deleted file mode 100644
index 7bea87c..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop11_4.ttl
+++ /dev/null
@@ -1,15 +0,0 @@
-page_add 1 11 0 []
-note_add 1004 1 0 0 32 0.939733299728 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 18 38 0.656413766467 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 36 32 0.880054467734 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 42 32 0.675041861362 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 45 44 0.725655372163 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 48 48 0.786593314089 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 60 36 0.822791398686 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 78 46 0.702175101524 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 84 32 0.758226862517 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 87 38 0.658139823066 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 90 32 0.668170127276 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 102 32 0.722681824748 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 108 44 0.836571624545 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 114 48 0.667576972982 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop12_0.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop12_0.ttl
deleted file mode 100644
index e49f5fb..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop12_0.ttl
+++ /dev/null
@@ -1,49 +0,0 @@
-page_add 1 12 0 []
-note_add 1000 1 0 0 41 0.922155761946 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 3 44 0.65350045039 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 6 41 0.657022496954 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 9 44 0.714751727313 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 12 41 0.85354349634 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 15 44 0.662294123372 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 18 41 0.727452922651 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 21 44 0.723569523495 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 24 41 0.833200297055 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 27 44 0.658504944959 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 30 41 0.662973869637 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 33 44 0.721346962099 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 36 41 0.833218537208 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 39 44 0.698601325063 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 42 41 0.689483454263 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 45 44 0.666183054395 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 48 41 0.816037781142 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 51 44 0.725250491697 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 54 41 0.656159719867 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 57 44 0.731945713157 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 60 41 0.821999860726 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 63 44 0.722186626397 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 66 41 0.701696400982 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 69 44 0.709734770938 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 72 41 0.862084602452 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 75 44 0.739586673346 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 78 41 0.684178756537 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 81 44 0.670494640759 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 84 41 0.809983681538 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 87 44 0.678563779847 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 90 41 0.680514820478 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 93 44 0.690880754953 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 96 41 0.874115164798 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 99 44 0.731705174476 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 102 41 0.68378231818 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 105 44 0.701359883096 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 108 41 0.856592797609 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 111 44 0.676599792138 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 114 41 0.703632532775 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 117 44 0.663629203217 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 120 41 0.806365437944 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 123 44 0.722292379583 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 126 41 0.658115890813 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 129 44 0.659717223548 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 132 41 0.828661376132 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 135 44 0.686035070327 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 138 41 0.714063553705 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1000 1 0 141 44 0.678090439045 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop12_1.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop12_1.ttl
deleted file mode 100644
index 6050064..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop12_1.ttl
+++ /dev/null
@@ -1,29 +0,0 @@
-page_add 1 12 0 []
-note_add 1001 1 0 0 41 0.990798818122 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 6 48 0.728222618336 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 18 44 0.720020221419 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 24 48 0.820706617647 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 36 41 0.754280833629 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 42 48 0.650837405159 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 48 44 0.866938100559 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 51 48 0.736567529887 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 54 41 0.656020489483 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 60 48 0.809392385769 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 66 44 0.653434163747 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 72 48 0.874087463664 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 78 41 0.660855905785 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 84 48 0.833722200168 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 87 44 0.688419803681 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 90 48 0.670022997837 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 93 41 0.658388832978 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 96 48 0.805544753099 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 99 44 0.699618040652 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 102 48 0.690339349793 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 108 41 0.803971677644 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 114 48 0.68052067326 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 117 44 0.675471950593 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 120 48 0.823756409447 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 126 41 0.734161745439 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 129 48 0.698206882543 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 132 44 0.803254657959 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1001 1 0 138 48 0.672000324737 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop12_2.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop12_2.ttl
deleted file mode 100644
index 638ffd9..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop12_2.ttl
+++ /dev/null
@@ -1,17 +0,0 @@
-page_add 1 12 0 []
-note_add 1002 1 0 0 32 0.992822719235 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 18 46 0.683065344763 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 24 32 0.854953231044 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 42 48 0.720690803169 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 48 36 0.858725947789 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 60 32 0.849123576607 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 66 46 0.690526197115 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 72 32 0.799919027209 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 84 48 0.799461741675 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 90 36 0.743540955168 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 96 32 0.765305209963 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 102 46 0.711305174906 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 108 32 0.87175080938 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 120 48 0.852562099733 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 132 36 0.759057589787 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1002 1 0 138 32 0.651613398376 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop12_3.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop12_3.ttl
deleted file mode 100644
index cf582d1..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop12_3.ttl
+++ /dev/null
@@ -1,13 +0,0 @@
-page_add 1 12 0 []
-note_add 1003 1 0 0 41 0.905963287418 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 18 48 0.653981664043 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 30 44 0.717492007744 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 36 48 0.759163240751 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 48 32 0.847283474108 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 66 34 0.723148245474 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 72 41 0.805396504679 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 84 41 0.824886727128 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 90 48 0.695498873295 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 102 44 0.681381863923 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 108 48 0.82969480232 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1003 1 0 120 32 0.759419195855 0.5 24 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Loops/loop12_4.ttl b/TamTamSynthLab.activity/common/Resources/Loops/loop12_4.ttl
deleted file mode 100644
index 5ebf102..0000000
--- a/TamTamSynthLab.activity/common/Resources/Loops/loop12_4.ttl
+++ /dev/null
@@ -1,20 +0,0 @@
-page_add 1 12 0 []
-note_add 1004 1 0 0 38 0.982488423346 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 6 32 0.746497368612 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 24 46 0.84791183248 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 42 48 0.742155800286 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 45 32 0.705971538547 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 48 32 0.890978181258 0.5 18 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 66 46 0.704742764765 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 72 48 0.886736349118 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 78 38 0.714276723016 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 84 32 0.852158007953 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 87 46 0.697063459875 0.5 3 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 90 48 0.656877774714 0.5 12 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 102 32 0.73965562793 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 108 32 0.767961495682 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 114 46 0.654603393702 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 120 48 0.868872298326 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 126 38 0.652928638258 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 132 32 0.842574221551 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
-note_add 1004 1 0 138 46 0.654273808088 0.5 6 0 1 0.005 0.098 0.1 0 1000 0 edit
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/acguit b/TamTamSynthLab.activity/common/Resources/Sounds/acguit
deleted file mode 100644
index 2e28014..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/acguit
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/alarm b/TamTamSynthLab.activity/common/Resources/Sounds/alarm
deleted file mode 100644
index 73b7628..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/alarm
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/armbone b/TamTamSynthLab.activity/common/Resources/Sounds/armbone
deleted file mode 100644
index 38fc68a..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/armbone
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/babylaugh b/TamTamSynthLab.activity/common/Resources/Sounds/babylaugh
deleted file mode 100644
index 9c72bd3..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/babylaugh
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/babyuhoh b/TamTamSynthLab.activity/common/Resources/Sounds/babyuhoh
deleted file mode 100644
index 705f61a..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/babyuhoh
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/banjo b/TamTamSynthLab.activity/common/Resources/Sounds/banjo
deleted file mode 100644
index f15278d..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/banjo
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/basse b/TamTamSynthLab.activity/common/Resources/Sounds/basse
deleted file mode 100644
index 2bc1571..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/basse
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/basse2 b/TamTamSynthLab.activity/common/Resources/Sounds/basse2
deleted file mode 100644
index 744d196..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/basse2
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/bird b/TamTamSynthLab.activity/common/Resources/Sounds/bird
deleted file mode 100644
index fbe8a29..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/bird
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/bottle b/TamTamSynthLab.activity/common/Resources/Sounds/bottle
deleted file mode 100644
index 8f3d680..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/bottle
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/bubbles b/TamTamSynthLab.activity/common/Resources/Sounds/bubbles
deleted file mode 100644
index 849ff02..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/bubbles
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/byke b/TamTamSynthLab.activity/common/Resources/Sounds/byke
deleted file mode 100644
index 6f428b8..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/byke
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/camera b/TamTamSynthLab.activity/common/Resources/Sounds/camera
deleted file mode 100644
index 8eaa5b5..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/camera
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/car b/TamTamSynthLab.activity/common/Resources/Sounds/car
deleted file mode 100644
index 66e42ae..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/car
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/carhorn b/TamTamSynthLab.activity/common/Resources/Sounds/carhorn
deleted file mode 100644
index fbbd02b..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/carhorn
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/cat b/TamTamSynthLab.activity/common/Resources/Sounds/cat
deleted file mode 100644
index 845ee8e..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/cat
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/cello b/TamTamSynthLab.activity/common/Resources/Sounds/cello
deleted file mode 100644
index 31720df..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/cello
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/chiken b/TamTamSynthLab.activity/common/Resources/Sounds/chiken
deleted file mode 100644
index 736bfd0..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/chiken
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/chimes b/TamTamSynthLab.activity/common/Resources/Sounds/chimes
deleted file mode 100644
index 01c80e4..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/chimes
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/clang b/TamTamSynthLab.activity/common/Resources/Sounds/clang
deleted file mode 100644
index 01476fc..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/clang
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/clang2 b/TamTamSynthLab.activity/common/Resources/Sounds/clang2
deleted file mode 100644
index cb1fed2..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/clang2
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/clarinette b/TamTamSynthLab.activity/common/Resources/Sounds/clarinette
deleted file mode 100644
index 5ed08c2..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/clarinette
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/clavinet b/TamTamSynthLab.activity/common/Resources/Sounds/clavinet
deleted file mode 100644
index db88314..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/clavinet
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/cling b/TamTamSynthLab.activity/common/Resources/Sounds/cling
deleted file mode 100644
index db3525f..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/cling
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/cow b/TamTamSynthLab.activity/common/Resources/Sounds/cow
deleted file mode 100644
index 5d31cf5..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/cow
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/crash b/TamTamSynthLab.activity/common/Resources/Sounds/crash
deleted file mode 100644
index 8408175..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/crash
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/cricket b/TamTamSynthLab.activity/common/Resources/Sounds/cricket
deleted file mode 100644
index cb3504c..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/cricket
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/diceinst b/TamTamSynthLab.activity/common/Resources/Sounds/diceinst
deleted file mode 100644
index 5a41341..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/diceinst
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/didjeridu b/TamTamSynthLab.activity/common/Resources/Sounds/didjeridu
deleted file mode 100644
index d7556e7..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/didjeridu
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/dog b/TamTamSynthLab.activity/common/Resources/Sounds/dog
deleted file mode 100644
index c1e8e22..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/dog
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/door b/TamTamSynthLab.activity/common/Resources/Sounds/door
deleted file mode 100644
index 2b3b21a..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/door
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum1chine b/TamTamSynthLab.activity/common/Resources/Sounds/drum1chine
deleted file mode 100644
index bb29f18..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum1chine
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum1crash b/TamTamSynthLab.activity/common/Resources/Sounds/drum1crash
deleted file mode 100644
index 5f520c2..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum1crash
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum1floortom b/TamTamSynthLab.activity/common/Resources/Sounds/drum1floortom
deleted file mode 100644
index f43cb2b..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum1floortom
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum1hardride b/TamTamSynthLab.activity/common/Resources/Sounds/drum1hardride
deleted file mode 100644
index 94f052f..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum1hardride
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum1hatpedal b/TamTamSynthLab.activity/common/Resources/Sounds/drum1hatpedal
deleted file mode 100644
index 0c0afe6..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum1hatpedal
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum1hatshoulder b/TamTamSynthLab.activity/common/Resources/Sounds/drum1hatshoulder
deleted file mode 100644
index 395ef0b..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum1hatshoulder
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum1kick b/TamTamSynthLab.activity/common/Resources/Sounds/drum1kick
deleted file mode 100644
index 0acfb56..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum1kick
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum1kit b/TamTamSynthLab.activity/common/Resources/Sounds/drum1kit
deleted file mode 120000
index f9dad7e..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum1kit
+++ /dev/null
@@ -1 +0,0 @@
-drum1kick \ No newline at end of file
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum1ridebell b/TamTamSynthLab.activity/common/Resources/Sounds/drum1ridebell
deleted file mode 100644
index 6f6b6ce..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum1ridebell
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum1snare b/TamTamSynthLab.activity/common/Resources/Sounds/drum1snare
deleted file mode 100644
index 54a6372..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum1snare
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum1snaresidestick b/TamTamSynthLab.activity/common/Resources/Sounds/drum1snaresidestick
deleted file mode 100644
index a99e846..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum1snaresidestick
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum1splash b/TamTamSynthLab.activity/common/Resources/Sounds/drum1splash
deleted file mode 100644
index 49a334e..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum1splash
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum1tom b/TamTamSynthLab.activity/common/Resources/Sounds/drum1tom
deleted file mode 100644
index ed1464c..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum1tom
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum2darbukadoom b/TamTamSynthLab.activity/common/Resources/Sounds/drum2darbukadoom
deleted file mode 100644
index 5a90725..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum2darbukadoom
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum2darbukafinger b/TamTamSynthLab.activity/common/Resources/Sounds/drum2darbukafinger
deleted file mode 100644
index 163aa3c..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum2darbukafinger
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum2darbukapied b/TamTamSynthLab.activity/common/Resources/Sounds/drum2darbukapied
deleted file mode 100644
index 006586a..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum2darbukapied
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum2darbukapiedsoft b/TamTamSynthLab.activity/common/Resources/Sounds/drum2darbukapiedsoft
deleted file mode 100644
index cf2aaa8..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum2darbukapiedsoft
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum2darbukaroll b/TamTamSynthLab.activity/common/Resources/Sounds/drum2darbukaroll
deleted file mode 100644
index ded7a31..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum2darbukaroll
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum2darbukaslap b/TamTamSynthLab.activity/common/Resources/Sounds/drum2darbukaslap
deleted file mode 100644
index fd70b88..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum2darbukaslap
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum2darbukatak b/TamTamSynthLab.activity/common/Resources/Sounds/drum2darbukatak
deleted file mode 100644
index 329f619..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum2darbukatak
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum2hatflanger b/TamTamSynthLab.activity/common/Resources/Sounds/drum2hatflanger
deleted file mode 100644
index 9dd9389..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum2hatflanger
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum2hatpied b/TamTamSynthLab.activity/common/Resources/Sounds/drum2hatpied
deleted file mode 100644
index 84e774e..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum2hatpied
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum2hatpied2 b/TamTamSynthLab.activity/common/Resources/Sounds/drum2hatpied2
deleted file mode 100644
index cd21b17..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum2hatpied2
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum2kit b/TamTamSynthLab.activity/common/Resources/Sounds/drum2kit
deleted file mode 120000
index abe57a3..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum2kit
+++ /dev/null
@@ -1 +0,0 @@
-drum2darbukadoom \ No newline at end of file
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum2tambourinepied b/TamTamSynthLab.activity/common/Resources/Sounds/drum2tambourinepied
deleted file mode 100644
index d6b566a..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum2tambourinepied
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum2tambourinepiedsoft b/TamTamSynthLab.activity/common/Resources/Sounds/drum2tambourinepiedsoft
deleted file mode 100644
index 4da2ea6..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum2tambourinepiedsoft
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum3cowbell b/TamTamSynthLab.activity/common/Resources/Sounds/drum3cowbell
deleted file mode 100644
index 3c52687..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum3cowbell
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum3cowbelltip b/TamTamSynthLab.activity/common/Resources/Sounds/drum3cowbelltip
deleted file mode 100644
index 7b79fe2..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum3cowbelltip
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum3cup b/TamTamSynthLab.activity/common/Resources/Sounds/drum3cup
deleted file mode 100644
index 6cf6da2..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum3cup
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum3djembelow b/TamTamSynthLab.activity/common/Resources/Sounds/drum3djembelow
deleted file mode 100644
index ad5fd0a..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum3djembelow
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum3djembemid b/TamTamSynthLab.activity/common/Resources/Sounds/drum3djembemid
deleted file mode 100644
index 55b6d9f..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum3djembemid
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum3djembesidestick b/TamTamSynthLab.activity/common/Resources/Sounds/drum3djembesidestick
deleted file mode 100644
index 94c29e6..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum3djembesidestick
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum3djembeslap b/TamTamSynthLab.activity/common/Resources/Sounds/drum3djembeslap
deleted file mode 100644
index d201e52..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum3djembeslap
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum3djembestickmid b/TamTamSynthLab.activity/common/Resources/Sounds/drum3djembestickmid
deleted file mode 100644
index 9da83ba..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum3djembestickmid
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum3kit b/TamTamSynthLab.activity/common/Resources/Sounds/drum3kit
deleted file mode 120000
index 2e6cdc8..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum3kit
+++ /dev/null
@@ -1 +0,0 @@
-drum3djembesidestick \ No newline at end of file
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum3metalstand b/TamTamSynthLab.activity/common/Resources/Sounds/drum3metalstand
deleted file mode 100644
index 059efcc..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum3metalstand
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum3pedalperc b/TamTamSynthLab.activity/common/Resources/Sounds/drum3pedalperc
deleted file mode 100644
index c271d66..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum3pedalperc
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum3rainstick b/TamTamSynthLab.activity/common/Resources/Sounds/drum3rainstick
deleted file mode 100644
index 561d0d9..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum3rainstick
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum3tambourinehigh b/TamTamSynthLab.activity/common/Resources/Sounds/drum3tambourinehigh
deleted file mode 100644
index cf2c61e..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum3tambourinehigh
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum3tambourinelow b/TamTamSynthLab.activity/common/Resources/Sounds/drum3tambourinelow
deleted file mode 100644
index ff8e278..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum3tambourinelow
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum4afrofeet b/TamTamSynthLab.activity/common/Resources/Sounds/drum4afrofeet
deleted file mode 100644
index b2044da..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum4afrofeet
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum4fingersn b/TamTamSynthLab.activity/common/Resources/Sounds/drum4fingersn
deleted file mode 100644
index e6b60a5..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum4fingersn
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum4kit b/TamTamSynthLab.activity/common/Resources/Sounds/drum4kit
deleted file mode 120000
index 5f87174..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum4kit
+++ /dev/null
@@ -1 +0,0 @@
-drum4tr909sn \ No newline at end of file
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum4mutecuic b/TamTamSynthLab.activity/common/Resources/Sounds/drum4mutecuic
deleted file mode 100644
index ef0c0c0..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum4mutecuic
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum4stompbass b/TamTamSynthLab.activity/common/Resources/Sounds/drum4stompbass
deleted file mode 100644
index 68dd316..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum4stompbass
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum4tambouri b/TamTamSynthLab.activity/common/Resources/Sounds/drum4tambouri
deleted file mode 100644
index 5b32be2..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum4tambouri
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum4tr707clap b/TamTamSynthLab.activity/common/Resources/Sounds/drum4tr707clap
deleted file mode 100644
index f9ea03e..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum4tr707clap
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum4tr707open b/TamTamSynthLab.activity/common/Resources/Sounds/drum4tr707open
deleted file mode 100644
index f7d54bf..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum4tr707open
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum4tr808closed b/TamTamSynthLab.activity/common/Resources/Sounds/drum4tr808closed
deleted file mode 100644
index 8995edd..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum4tr808closed
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum4tr808sn b/TamTamSynthLab.activity/common/Resources/Sounds/drum4tr808sn
deleted file mode 100644
index adde850..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum4tr808sn
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum4tr909bass b/TamTamSynthLab.activity/common/Resources/Sounds/drum4tr909bass
deleted file mode 100644
index 6420213..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum4tr909bass
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum4tr909kick b/TamTamSynthLab.activity/common/Resources/Sounds/drum4tr909kick
deleted file mode 100644
index 6e33dd3..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum4tr909kick
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum4tr909sn b/TamTamSynthLab.activity/common/Resources/Sounds/drum4tr909sn
deleted file mode 100644
index 486ed42..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum4tr909sn
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum5agogoaigu b/TamTamSynthLab.activity/common/Resources/Sounds/drum5agogoaigu
deleted file mode 100644
index 3889332..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum5agogoaigu
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum5agogograve b/TamTamSynthLab.activity/common/Resources/Sounds/drum5agogograve
deleted file mode 100644
index 5717751..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum5agogograve
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum5bongoaiguouvert b/TamTamSynthLab.activity/common/Resources/Sounds/drum5bongoaiguouvert
deleted file mode 100644
index 95aba33..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum5bongoaiguouvert
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum5bongograveouvert b/TamTamSynthLab.activity/common/Resources/Sounds/drum5bongograveouvert
deleted file mode 100644
index d7d1e58..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum5bongograveouvert
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum5congaaiguouvert b/TamTamSynthLab.activity/common/Resources/Sounds/drum5congaaiguouvert
deleted file mode 100644
index a59ce75..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum5congaaiguouvert
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum5congagraveferme b/TamTamSynthLab.activity/common/Resources/Sounds/drum5congagraveferme
deleted file mode 100644
index a49c459..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum5congagraveferme
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum5congagraveouvert b/TamTamSynthLab.activity/common/Resources/Sounds/drum5congagraveouvert
deleted file mode 100644
index 3b9503c..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum5congagraveouvert
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum5guiroretour b/TamTamSynthLab.activity/common/Resources/Sounds/drum5guiroretour
deleted file mode 100644
index 025ebfb..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum5guiroretour
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum5kit b/TamTamSynthLab.activity/common/Resources/Sounds/drum5kit
deleted file mode 120000
index e1400d6..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum5kit
+++ /dev/null
@@ -1 +0,0 @@
-drum5bongoaiguouvert \ No newline at end of file
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum5quicaaigu b/TamTamSynthLab.activity/common/Resources/Sounds/drum5quicaaigu
deleted file mode 100644
index d952c8c..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum5quicaaigu
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum5quicamedium b/TamTamSynthLab.activity/common/Resources/Sounds/drum5quicamedium
deleted file mode 100644
index 57e92e6..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum5quicamedium
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum5timablesaiguslap b/TamTamSynthLab.activity/common/Resources/Sounds/drum5timablesaiguslap
deleted file mode 100644
index 1b531b0..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum5timablesaiguslap
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum5timablesslap b/TamTamSynthLab.activity/common/Resources/Sounds/drum5timablesslap
deleted file mode 100644
index 1e5ec3e..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum5timablesslap
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum5vibraslap b/TamTamSynthLab.activity/common/Resources/Sounds/drum5vibraslap
deleted file mode 100644
index e539891..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum5vibraslap
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum6kit b/TamTamSynthLab.activity/common/Resources/Sounds/drum6kit
deleted file mode 120000
index 332b551..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum6kit
+++ /dev/null
@@ -1 +0,0 @@
-drum6madal05 \ No newline at end of file
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum6kit.orig b/TamTamSynthLab.activity/common/Resources/Sounds/drum6kit.orig
deleted file mode 100644
index 8bfe82c..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum6kit.orig
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal00 b/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal00
deleted file mode 100644
index 6af692f..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal00
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal01 b/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal01
deleted file mode 100644
index 0a7dbdb..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal01
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal02 b/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal02
deleted file mode 100644
index e12a412..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal02
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal03 b/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal03
deleted file mode 100644
index b3a210e..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal03
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal04 b/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal04
deleted file mode 100644
index fcef18f..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal04
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal05 b/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal05
deleted file mode 100644
index a409f6c..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal05
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal06 b/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal06
deleted file mode 100644
index e7c307d..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal06
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal07 b/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal07
deleted file mode 100644
index 25bf251..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal07
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal08 b/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal08
deleted file mode 100644
index 4bcba5a..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal08
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal09 b/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal09
deleted file mode 100644
index 3cb92ee..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal09
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal10 b/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal10
deleted file mode 100644
index af6f451..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal10
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal11 b/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal11
deleted file mode 100644
index cddcf4a..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal11
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal12 b/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal12
deleted file mode 100644
index 1b3dc5b..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/drum6madal12
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/duck b/TamTamSynthLab.activity/common/Resources/Sounds/duck
deleted file mode 100644
index 37b5f85..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/duck
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/duck2 b/TamTamSynthLab.activity/common/Resources/Sounds/duck2
deleted file mode 100644
index 1c62622..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/duck2
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/fingercymbals b/TamTamSynthLab.activity/common/Resources/Sounds/fingercymbals
deleted file mode 100644
index aa1f221..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/fingercymbals
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/flugel b/TamTamSynthLab.activity/common/Resources/Sounds/flugel
deleted file mode 100644
index 4367cc2..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/flugel
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/flute b/TamTamSynthLab.activity/common/Resources/Sounds/flute
deleted file mode 100644
index 68a2580..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/flute
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/foghorn b/TamTamSynthLab.activity/common/Resources/Sounds/foghorn
deleted file mode 100644
index 65549e6..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/foghorn
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/frogs b/TamTamSynthLab.activity/common/Resources/Sounds/frogs
deleted file mode 100644
index 9b2831a..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/frogs
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/gam b/TamTamSynthLab.activity/common/Resources/Sounds/gam
deleted file mode 100644
index dca077b..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/gam
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/guidice1 b/TamTamSynthLab.activity/common/Resources/Sounds/guidice1
deleted file mode 100644
index 9e48310..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/guidice1
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/guidice10 b/TamTamSynthLab.activity/common/Resources/Sounds/guidice10
deleted file mode 100644
index 8da4267..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/guidice10
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/guidice2 b/TamTamSynthLab.activity/common/Resources/Sounds/guidice2
deleted file mode 100644
index 7b12043..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/guidice2
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/guidice3 b/TamTamSynthLab.activity/common/Resources/Sounds/guidice3
deleted file mode 100644
index 68d1f45..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/guidice3
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/guidice4 b/TamTamSynthLab.activity/common/Resources/Sounds/guidice4
deleted file mode 100644
index 3d72119..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/guidice4
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/guidice5 b/TamTamSynthLab.activity/common/Resources/Sounds/guidice5
deleted file mode 100644
index 79cc786..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/guidice5
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/guidice6 b/TamTamSynthLab.activity/common/Resources/Sounds/guidice6
deleted file mode 100644
index dc2f756..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/guidice6
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/guidice7 b/TamTamSynthLab.activity/common/Resources/Sounds/guidice7
deleted file mode 100644
index af341b7..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/guidice7
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/guidice8 b/TamTamSynthLab.activity/common/Resources/Sounds/guidice8
deleted file mode 100644
index 9901020..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/guidice8
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/guidice9 b/TamTamSynthLab.activity/common/Resources/Sounds/guidice9
deleted file mode 100644
index 8798781..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/guidice9
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/guit b/TamTamSynthLab.activity/common/Resources/Sounds/guit
deleted file mode 100644
index dfb1866..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/guit
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/guit2 b/TamTamSynthLab.activity/common/Resources/Sounds/guit2
deleted file mode 100644
index fcb9163..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/guit2
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/guitmute b/TamTamSynthLab.activity/common/Resources/Sounds/guitmute
deleted file mode 100644
index 93026d6..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/guitmute
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/guitshort b/TamTamSynthLab.activity/common/Resources/Sounds/guitshort
deleted file mode 100644
index 698364b..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/guitshort
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/harmonica b/TamTamSynthLab.activity/common/Resources/Sounds/harmonica
deleted file mode 100644
index 7b0af9f..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/harmonica
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/harmonium b/TamTamSynthLab.activity/common/Resources/Sounds/harmonium
deleted file mode 100644
index 5bc5fcb..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/harmonium
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/harpsichord b/TamTamSynthLab.activity/common/Resources/Sounds/harpsichord
deleted file mode 100644
index dac451f..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/harpsichord
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/hey b/TamTamSynthLab.activity/common/Resources/Sounds/hey
deleted file mode 100644
index 0bd7b20..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/hey
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/horse b/TamTamSynthLab.activity/common/Resources/Sounds/horse
deleted file mode 100644
index b7756a3..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/horse
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/kalimba b/TamTamSynthLab.activity/common/Resources/Sounds/kalimba
deleted file mode 100644
index 2e02b48..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/kalimba
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/koto b/TamTamSynthLab.activity/common/Resources/Sounds/koto
deleted file mode 100644
index 9279a7f..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/koto
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/laugh b/TamTamSynthLab.activity/common/Resources/Sounds/laugh
deleted file mode 100644
index 05483ce..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/laugh
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/mando b/TamTamSynthLab.activity/common/Resources/Sounds/mando
deleted file mode 100644
index 092125b..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/mando
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/marimba b/TamTamSynthLab.activity/common/Resources/Sounds/marimba
deleted file mode 100644
index 489ba71..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/marimba
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/mic1 b/TamTamSynthLab.activity/common/Resources/Sounds/mic1
deleted file mode 100644
index d26b87b..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/mic1
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/mic2 b/TamTamSynthLab.activity/common/Resources/Sounds/mic2
deleted file mode 100644
index d26b87b..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/mic2
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/mic3 b/TamTamSynthLab.activity/common/Resources/Sounds/mic3
deleted file mode 100644
index d26b87b..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/mic3
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/mic4 b/TamTamSynthLab.activity/common/Resources/Sounds/mic4
deleted file mode 100644
index d26b87b..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/mic4
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/ocarina b/TamTamSynthLab.activity/common/Resources/Sounds/ocarina
deleted file mode 100644
index 7b00cc6..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/ocarina
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/ounk b/TamTamSynthLab.activity/common/Resources/Sounds/ounk
deleted file mode 100644
index 1272c5f..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/ounk
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/ow b/TamTamSynthLab.activity/common/Resources/Sounds/ow
deleted file mode 100644
index 8270199..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/ow
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/piano b/TamTamSynthLab.activity/common/Resources/Sounds/piano
deleted file mode 100644
index f98a513..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/piano
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/plane b/TamTamSynthLab.activity/common/Resources/Sounds/plane
deleted file mode 100644
index d20142a..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/plane
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/rhodes b/TamTamSynthLab.activity/common/Resources/Sounds/rhodes
deleted file mode 100644
index 16cd8ec..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/rhodes
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/sarangi b/TamTamSynthLab.activity/common/Resources/Sounds/sarangi
deleted file mode 100644
index 69bde54..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/sarangi
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/sarangi.orig b/TamTamSynthLab.activity/common/Resources/Sounds/sarangi.orig
deleted file mode 100644
index 4fb94da..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/sarangi.orig
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/saxo b/TamTamSynthLab.activity/common/Resources/Sounds/saxo
deleted file mode 100644
index 16de921..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/saxo
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/saxsoprano b/TamTamSynthLab.activity/common/Resources/Sounds/saxsoprano
deleted file mode 100644
index b9f63e9..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/saxsoprano
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/sheep b/TamTamSynthLab.activity/common/Resources/Sounds/sheep
deleted file mode 100644
index 178bb43..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/sheep
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/shenai b/TamTamSynthLab.activity/common/Resources/Sounds/shenai
deleted file mode 100644
index 115f125..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/shenai
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/sitar b/TamTamSynthLab.activity/common/Resources/Sounds/sitar
deleted file mode 100644
index 6fdc321..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/sitar
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/slap b/TamTamSynthLab.activity/common/Resources/Sounds/slap
deleted file mode 100644
index 6e1f375..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/slap
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/templebell b/TamTamSynthLab.activity/common/Resources/Sounds/templebell
deleted file mode 100644
index 705fbbc..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/templebell
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/templebell.orig b/TamTamSynthLab.activity/common/Resources/Sounds/templebell.orig
deleted file mode 100644
index 0790114..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/templebell.orig
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/triangle b/TamTamSynthLab.activity/common/Resources/Sounds/triangle
deleted file mode 100644
index 8c3c1b9..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/triangle
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/trumpet b/TamTamSynthLab.activity/common/Resources/Sounds/trumpet
deleted file mode 100644
index 3ce006d..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/trumpet
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/tuba b/TamTamSynthLab.activity/common/Resources/Sounds/tuba
deleted file mode 100644
index 9e47196..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/tuba
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/ukulele b/TamTamSynthLab.activity/common/Resources/Sounds/ukulele
deleted file mode 100644
index bfacc40..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/ukulele
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/violin b/TamTamSynthLab.activity/common/Resources/Sounds/violin
deleted file mode 100644
index f89733c..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/violin
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/voix b/TamTamSynthLab.activity/common/Resources/Sounds/voix
deleted file mode 100644
index 87f6ca6..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/voix
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/water b/TamTamSynthLab.activity/common/Resources/Sounds/water
deleted file mode 100644
index c6cee2e..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/water
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/Sounds/zap b/TamTamSynthLab.activity/common/Resources/Sounds/zap
deleted file mode 100644
index e401f6b..0000000
--- a/TamTamSynthLab.activity/common/Resources/Sounds/zap
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile1 b/TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile1
deleted file mode 100644
index adf8bda..0000000
--- a/TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile1
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile10 b/TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile10
deleted file mode 100644
index ee1d300..0000000
--- a/TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile10
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile2 b/TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile2
deleted file mode 100644
index 58ec8aa..0000000
--- a/TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile2
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile3 b/TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile3
deleted file mode 100644
index 9608200..0000000
--- a/TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile3
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile4 b/TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile4
deleted file mode 100644
index ef6586a..0000000
--- a/TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile4
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile5 b/TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile5
deleted file mode 100644
index c0f4f29..0000000
--- a/TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile5
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile6 b/TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile6
deleted file mode 100644
index 5008f47..0000000
--- a/TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile6
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile7 b/TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile7
deleted file mode 100644
index 333cba1..0000000
--- a/TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile7
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile8 b/TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile8
deleted file mode 100644
index 8f30e89..0000000
--- a/TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile8
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile9 b/TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile9
deleted file mode 100644
index c68bffb..0000000
--- a/TamTamSynthLab.activity/common/Resources/SynthFiles/synthFile9
+++ /dev/null
Binary files differ
diff --git a/TamTamSynthLab.activity/common/Resources/crop.csd b/TamTamSynthLab.activity/common/Resources/crop.csd
deleted file mode 100644
index 483e578..0000000
--- a/TamTamSynthLab.activity/common/Resources/crop.csd
+++ /dev/null
@@ -1,78 +0,0 @@
-<CsoundSynthesizer>
-
-<CsOptions>
--W -d -n
-</CsOptions>
-
-<CsInstruments>
-
-sr=16000
-ksmps=64
-nchnls=1
-
-/****************************************************************
-Playing temp file
-****************************************************************/
-instr 1
-Spath strget 999
-Stempfile strcat Spath, "/tempMic.wav"
-asig diskin Stempfile, 1
-gasig dcblock asig
-
-endin
-
-/****************************************************************
-Crop silence at the beginning
-****************************************************************/
-instr 2
-ktimer timeinstk
-ain = gasig
-krms rms ain
-if ktimer > 40 then
- ktrig trigger krms, 1500, 0
- if ktrig == 1 then
- event "i", 3, 0, 2
- event "i", 4, 2, 0.01
- turnoff
- endif
-endif
-endin
-
-/****************************************************************
-recording
-****************************************************************/
-instr 3
-kenv adsr 0.01, 0.05, .9, 0.01
-
-adel delay gasig, .005
-
-Spath strget 999
-Sfile strcat Spath, "/micTemp.wav"
-
-ihandle fiopen Sfile, 2
-
-fout Sfile, 2, adel*kenv
-
-;out adel*kenv
-adel = 0
-endin
-
-/****************************************************************
-Audio input recording ( closing file )
-****************************************************************/
-instr 4
-Spath strget 999
-Sfile strcat Spath, "/micTemp.wav"
-ficlose Sfile
-endin
-
-
-</CsInstruments>
-
-<CsScore>
-f1 0 8192 10 1
-i1 0 4
-i2 0 4
-</CsScore>
-
-</CsoundSynthesizer>
diff --git a/TamTamSynthLab.activity/common/Resources/cropSynthLab.csd b/TamTamSynthLab.activity/common/Resources/cropSynthLab.csd
deleted file mode 100644
index 4abf203..0000000
--- a/TamTamSynthLab.activity/common/Resources/cropSynthLab.csd
+++ /dev/null
@@ -1,77 +0,0 @@
-<CsoundSynthesizer>
-
-<CsOptions>
--W -d -n
-</CsOptions>
-
-<CsInstruments>
-
-sr=16000
-ksmps=64
-nchnls=1
-
-/****************************************************************
-Playing temp file
-****************************************************************/
-instr 1
-
-Spath strget 999
-Stempfile strcat Spath, "/tempMic.wav"
-gilen filelen Stempfile
-p3 = gilen
-asig diskin Stempfile, 1
-gasig dcblock asig
-
-endin
-
-/****************************************************************
-Crop silence at the beginning
-****************************************************************/
-instr 2
-ktimer timeinstk
-ain = gasig
-if ktimer > 40 then
- event "i", 3, 0, gilen - 0.2
- event "i", 4, gilen - 0.2, 0.01
- turnoff
-endif
-endin
-
-/****************************************************************
-recording
-****************************************************************/
-instr 3
-kenv adsr 0.01, 0.05, .9, 0.01
-
-adel delay gasig, .005
-
-Spath strget 999
-Sfile strcat Spath, "/micTemp.wav"
-
-ihandle fiopen Sfile, 2
-
-fout Sfile, 2, adel*kenv
-
-;out adel*kenv
-adel = 0
-endin
-
-/****************************************************************
-Audio input recording ( closing file )
-****************************************************************/
-instr 4
-Spath strget 999
-Sfile strcat Spath, "/micTemp.wav"
-ficlose Sfile
-endin
-
-
-</CsInstruments>
-
-<CsScore>
-f1 0 8192 10 1
-i1 0 4
-i2 0 4
-</CsScore>
-
-</CsoundSynthesizer>
diff --git a/TamTamSynthLab.activity/common/Resources/tamtamorc.csd b/TamTamSynthLab.activity/common/Resources/tamtamorc.csd
deleted file mode 100644
index f0a63f1..0000000
--- a/TamTamSynthLab.activity/common/Resources/tamtamorc.csd
+++ /dev/null
@@ -1,1125 +0,0 @@
-<CsoundSynthesizer>
-<CsOptions>
--n -m0 -W -s -d
-</CsOptions>
-<CsInstruments>
-sr=16000
-ksmps=64
-nchnls=2
-giScale = 1/sr
-giAliasSr = sr/2.1
-
-gainrev init 0
-gaoutL init 0
-gaoutR init 0
-gasynth init 0
-gkTrackpadX init 0
-gkTrackpadY init 0
-gSpath strcpy " "
-
-/*****************************
-matrix for TamTam's SynthLab
-*****************************/
-zakinit 8, 32
-
-/*****************************
-opcodes needed by TamTam's SynthLab
-*****************************/
-
-opcode homeSine, a, kki
-kpitch, kspread, iTable xin
-
-kspread = kspread + 1
-
-kr1 randomi 0.99, 1.01, 3.45
-kr2 randomi 0.9901, 1.0101, 4.43
-kr3 randomi 0.9899, 1.0091, 5.25
-kr4 randomi 0.9889, 1.00921, 6.15
-
-kpit1 = kpitch
-kpit2 = kpit1*kspread
-kpit3 = kpit2*kspread
-kpit4 = kpit3*kspread
-kpit5 = kpit4*kspread
-kpit6 = kpit5*kspread
-kpit7 = kpit6*kspread
-kpit8 = kpit7*kspread
-
-a1 oscil 1000, kpit1*kr1, iTable
-a2 oscil 1000, kpit2*kr2, iTable
-a3 oscil 1000, kpit3*kr3, iTable
-a4 oscil 1000, kpit4*kr4, iTable
-a5 oscil 1000, kpit5*kr1, iTable
-a6 oscil 1000, kpit6*kr2, iTable
-a7 oscil 1000, kpit7*kr3, iTable
-a8 oscil 1000, kpit8*kr4, iTable
-
-aout = a1+a2+a3+a4+a5+a6+a7+a8
-xout aout
-endop
-
-opcode synthGrain, a, aaiiii
-aindex, atrans, ifreq, iphase itable, itabdur xin
-apha phasor ifreq, iphase
-aenv tab apha, 42, 1
-atrig = int(1-aenv)
-apos samphold aindex, atrig
-adur samphold atrans, atrig
-
-aline = apha * adur * sr + apos
-aline limit aline, 0 , itabdur
-ag tablei aline, itable, 0
-aout = ag * aenv
-
-xout aout
-endop
-
-
-opcode ControlMatrice, i, iikkkk
-iTable, iIndex, kc1, kc2, kc3, kc4 xin
-
-iSomme table iIndex, iTable+3
-
-if iSomme == 0 then
-goto noparams
-endif
-
-iPar table iIndex, iTable
-
-if iSomme == 1 then
-kp = iPar
-elseif iSomme == 3 then
-kp = iPar * kc1
-elseif iSomme == 5 then
-kp = iPar * kc2
-elseif iSomme == 7 then
-kp = iPar * ((kc1 + kc2)*.5)
-elseif iSomme == 9 then
-kp = iPar * kc3
-elseif iSomme == 11 then
-kp = iPar * ((kc1 + kc3)*.5)
-elseif iSomme == 13 then
-kp = iPar * ((kc2 + kc3)*.5)
-elseif iSomme == 15 then
-kp = iPar * ((kc1 + kc2 + kc3)*.33)
-elseif iSomme == 17 then
-kp = iPar * kc4
-elseif iSomme == 19 then
-kp = iPar * ((kc1 + kc4)*.5)
-elseif iSomme == 21 then
-kp = iPar * ((kc2 + kc4)*.5)
-elseif iSomme == 23 then
-kp = iPar * ((kc1 + kc2 + kc4)*.33)
-elseif iSomme == 25 then
-kp = iPar * ((kc3 + kc4)*.5)
-elseif iSomme == 27 then
-kp = iPar * ((kc1 + kc3 + kc4)*.5)
-elseif iSomme == 29 then
-kp = iPar * ((kc2 + kc3 + kc4)*.33)
-elseif iSomme == 31 then
-kp = iPar * ((kc1 + kc2 + kc3 + kc4)*.25)
-endif
-
-if iTable == 5201 then
-zkw kp, iIndex+1
-elseif iTable == 5202 then
-zkw kp, iIndex+17
-endif
-
-xout iIndex
-
-noparams:
-endop
-
-opcode SourceMatrice, i, iaaaa
-iIndex, as1, as2, as3, as4 xin
-
-iSomme table iIndex-1, 5206
-
-if iSomme == 0 then
-goto noparams
-endif
-
-if iSomme == 1 then
-as = as1
-elseif iSomme == 2 then
-as = as2
-elseif iSomme == 3 then
-as = as1 + as2
-elseif iSomme == 4 then
-as = as3
-elseif iSomme == 5 then
-as = as1 + as3
-elseif iSomme == 6 then
-as = as2 + as3
-elseif iSomme == 7 then
-as = as1 + as2 + as3
-elseif iSomme == 8 then
-as = as4
-elseif iSomme == 9 then
-as = as1 + as4
-elseif iSomme == 10 then
-as = as2 + as4
-elseif iSomme == 11 then
-as = as1 + as2 + as4
-elseif iSomme == 12 then
-as = as3 + as4
-elseif iSomme == 13 then
-as = as1 + as3 + as4
-elseif iSomme == 14 then
-as = as2 + as3 + as4
-elseif iSomme == 15 then
-as = as1 + as2 + as3 + as4
-endif
-
-zaw as, iIndex
-xout iIndex
-
-noparams:
-endop
-
-opcode FxMatrice, i, iaaaa
-iIndex, as1, as2, as3, as4 xin
-
-iSomme table iIndex-1, 5206
-
-if iSomme == 0 then
-goto noparams
-endif
-
-if iSomme == 1 then
-as = as1
-elseif iSomme == 2 then
-as = as2
-elseif iSomme == 3 then
-as = as1 + as2
-elseif iSomme == 4 then
-as = as3
-elseif iSomme == 5 then
-as = as1 + as3
-elseif iSomme == 6 then
-as = as2 + as3
-elseif iSomme == 7 then
-as = as1 + as2 + as3
-elseif iSomme == 8 then
-as = as4
-elseif iSomme == 9 then
-as = as1 + as4
-elseif iSomme == 10 then
-as = as2 + as4
-elseif iSomme == 11 then
-as = as1 + as2 + as4
-elseif iSomme == 12 then
-as = as3 + as4
-elseif iSomme == 13 then
-as = as1 + as3 + as4
-elseif iSomme == 14 then
-as = as2 + as3 + as4
-endif
-
-zaw as, iIndex
-xout iIndex
-
-noparams:
-endop
-
-opcode controller, k, ii
-iControlNum, idur xin
-
-iControlType table iControlNum-1, 5203
-
-if iControlType == 0 then
-goto nocontrol
-endif
-
-ioffset = (iControlNum-1)*4
-iPar1 table ioffset, 5200
-iPar2 table ioffset+1, 5200
-iPar3 table ioffset+2, 5200
-iPar4 table ioffset+3, 5200
-
-if iControlType == 1 then
- kControl lfo iPar1, iPar2, int(iPar3)
- kControl = kControl+iPar4
-elseif iControlType == 2 then
- irange = (iPar2-iPar1)*.5
- kControl randi irange, iPar3, iPar4-.001, 0, irange+iPar1
-elseif iControlType == 3 then
- kControl adsr iPar1*idur+.0001, iPar2*idur, iPar3, iPar4*idur
-elseif iControlType == 4 then
- if iPar3 == 0 then
- kControl1 = ((gkTrackpadX+1)*.5)*(iPar2-iPar1)+iPar1
- elseif iPar3 == 1 then
- kval = (gkTrackpadX+1)*.5
- kControl1 pow kval, 2
- kControl1 = kControl1 * (iPar2-iPar1) + iPar1
- endif
- if iPar4 == 0 then
- kControl = kControl1
- else
- ktrig oscil 1, 1/iPar4, 45
- kControl samphold kControl1, ktrig, i(kControl1), 0
- endif
-elseif iControlType == 5 then
- if iPar3 == 0 then
- kControl1 = ((gkTrackpadY+1)*.5)*(iPar2-iPar1)+iPar1
- elseif iPar3 == 1 then
- kval = (gkTrackpadY+1)*.5
- kControl1 pow kval, 2
- kControl1 = kControl1 * (iPar2-iPar1) + iPar1
- endif
- if iPar4 == 0 then
- kControl = kControl1
- else
- ktrig oscil 1, 1/iPar4, 45
- kControl samphold kControl1, ktrig, i(kControl1), 0
- endif
-endif
-
-xout kControl
-
-nocontrol:
-endop
-
-opcode source, a, ii
-iSourceNum, ipitch xin
-
-iSourceType table iSourceNum+3, 5203
-
-if iSourceType == 0 then
-goto nosource
-endif
-
-ioffset = (iSourceNum-1)*4
-kpara1 zkr ioffset+1
-kpara2 zkr ioffset+2
-kpara3 zkr ioffset+3
-kpara4 zkr ioffset+4
-
-iPar1 table ioffset, 5201
-iPar2 table ioffset+1, 5201
-iPar3 table ioffset+2, 5201
-iPar4 table ioffset+3, 5201
-
-if iSourceType == 1 then
- aSource foscil 2000*kpara4, ipitch, kpara1, kpara2, kpara3, 1
-elseif iSourceType == 2 then
- aSource gbuzz 5000*kpara4, ipitch*kpara1, int(abs(kpara2))+5, 0, kpara3+0.01, 2
-elseif iSourceType == 3 then
- iPar2 = int(iPar2)
- if iPar2 == 0 then
- imode = 0
- elseif iPar2 == 1 then
- imode = 10
- elseif iPar2 == 2 then
- imode = 12
- endif
- aSource vco2 2000*kpara4, ipitch*kpara1, imode, 0.1, 0, iPar3
-elseif iSourceType == 4 then
- if iPar3 == 0 then
- kvib = 0
- goto novib
- else
- kvibenv linseg 0, .3, 1, p3-.3, 1
- kvib oscil ipitch*.015, kpara3, 1
- endif
- novib:
- aSource pluck 5000*kpara4, ipitch*(abs(kpara1))+.001+kvib, 40, 0, 6
- aSource butterlp aSource, kpara2
-elseif iSourceType == 5 then
- if int(iPar1) == 0 then
- ar rand 5000*kpara4
- elseif int(iPar1) == 1 then
- ar pinkish 5000*kpara4
- elseif int(iPar1) == 2 then
- ar gauss 5000*kpara4
- endif
- knoisebandwith limit abs(kpara3), 1, sr/2
- aSource butterbp ar, kpara2, knoisebandwith
- aSource balance aSource, ar
-elseif iSourceType == 6 then
- iSndpitch = p4/261.626
- iLoopIndex = iPar2 * 3
- ils table iLoopIndex, 5755
- ile table iLoopIndex+1, 5755
- icd table iLoopIndex+2, 5755
- if ile == 0 then
- ile = nsamp(5000+iPar2) * giScale - .01
- endif
- if icd == 0 then
- icd = .01
- endif
- aSource flooper2 kpara4*.4, iSndpitch*abs(kpara1), ils, ile, icd, 5000+iPar2
- aSource butterlp aSource, abs(kpara3)
-elseif iSourceType == 7 then
- kvoy = int(kpara2*3)
- kform1 table kvoy, 4
- kform2 table kvoy+1, 4
- kform3 table kvoy+2, 4
- kform1 port kform1, .1, 500
- kform2 port kform2, .1, 1500
- kform3 port kform3, .1, 2500
- kvibadev randomi -.0852, .0152, .5
- kvibfdev randomi -.032, .032, .5
- kvibfreqrand randomi kpara3-.75, kpara3+.75, .2
- kvibfatt linseg 0, .3, 1, p3-.3, 1
- kvib oscili (1+kvibadev)*kvibfatt, (kvibfreqrand+kvibfdev), 1
- kharm randomi 40, 50, 1.34
- kmul randomi .80, .84, 1.45
- kbam randomi 480., 510., 2.07
- kfunddev randomi -.0053, .0052, 1.05
- ar gbuzz kbam, (p4*kpara1*(1+kfunddev)+kvib), int(kharm), 0, kmul, 2
- a1 resonx ar, kform1, 140, 2, 1
- a2 resonx ar, kform2, 180, 2, 1
- a3 resonx ar, kform3, 220, 2 , 1
- aSource = ((a1*80)+(a2*55)+(a3*40))*kpara4
-elseif iSourceType == 8 then
- iSndPitch = p4/261.626
- igrdur = .1
- itable = 5000+iPar2
- irealTable = 5500 + iSourceNum
- itabdur = nsamp(itable)
- ifreq = 1 / igrdur
- kamp = kpara4 * .2
- aindex upsamp abs(kpara3) * itabdur
- atrans upsamp kpara1 * igrdur * iSndPitch
-
- as1 synthGrain aindex, atrans, ifreq, 0.82, irealTable, itabdur
- as2 synthGrain aindex, atrans, ifreq, .58, irealTable, itabdur
- as3 synthGrain aindex, atrans, ifreq, .41, irealTable, itabdur
- as4 synthGrain aindex, atrans, ifreq, 0.19, irealTable, itabdur
- as5 synthGrain aindex, atrans, ifreq, 0, irealTable, itabdur
- aSource = (as1+as2+as3+as4+as5)*kamp
- aSource butterlp aSource, 7500
-elseif iSourceType == 9 then
- aSource homeSine p4*kpara1, kpara2*0.1, iPar3+30
- aSource = aSource*kpara4
-elseif iSourceType == 10 then
- Sname sprintf "/labmic%d", iPar2
- Sfullname strcat gSpath, Sname
- iSndpitch = p4/261.626
- aSource diskin Sfullname, iSndpitch*abs(kpara3), 0, 1
- aSource = aSource * kpara4
-endif
-
-aSource dcblock aSource
-xout aSource
-
-nosource:
-endop
-
-opcode effects, a, ii
-iFxNum, ipitch xin
-
-iFxType table iFxNum+7, 5203
-
-if iFxType == 0 then
-goto nofx
-endif
-
-as1 zar iFxNum
-as2 zar iFxNum+4
-as = as1+as2
-
-ioffset = (iFxNum+3)*4
-kpara1 zkr ioffset+1
-kpara2 zkr ioffset+2
-kpara3 zkr ioffset+3
-kpara4 zkr ioffset+4
-
-ioffset2 = (iFxNum-1)*4
-iPar1 table ioffset2, 5202
-iPar2 table ioffset2+1, 5202
-iPar3 table ioffset2+2, 5202
-iPar4 table ioffset2+3, 5202
-
-if iFxType == 1 then
- kwgfeed limit kpara3, 0, 1
- aFx wguide1 as, abs(kpara1)+1, kpara2, kwgfeed
- aFx = aFx*kpara4
-elseif iFxType == 2 then
- aFx lpf18 as*.0005, abs(kpara1)+20, kpara2, kpara3
- aFx = aFx*5000*kpara4
-elseif iFxType == 3 then
- aFx bqrez as*kpara4, abs(kpara1)+20, abs(kpara2)+1, int(iPar3)
- aFx balance aFx, as*kpara4
-elseif iFxType == 4 then
- amod lfo 1, kpara1, int(iPar3)
- aFx = ((as*amod*kpara2)+(as*(1-kpara2)))*kpara4
-elseif iFxType == 5 then
- ain = as*kpara4
- krevLength limit kpara1, 0.01, 10
- arev reverb ain, krevLength
- arev butterlp arev, kpara2
- aFx = (arev*kpara3)+(as*(1-kpara3))
-elseif iFxType == 6 then
- fsig pvsanal as, 1024, 256, 1024, 1
- ftps1 pvscale fsig, kpara1
- aFx pvsynth ftps1
- adry delay as, iPar2
- aFx = ((aFx*kpara3)+(adry*(1-kpara3)))*kpara4
-elseif iFxType == 7 then
- aeq1 butterbp as, 700, 400
- aeq2 butterbp as, 1500, 600
- aeq3 butterbp as, 3000, 1000
- aeq4 butterbp as, 5000, 2000
- aFx = (aeq1*kpara1)+(aeq2*kpara2)+(aeq3*kpara3)+(aeq4*kpara4)
-elseif iFxType == 8 then
- afeed init 0
- adel oscil kpara1, kpara2, 1
- adel = adel + kpara1 + kpara3
- adel limit adel, 0, 50
- aFx vdelay as+afeed, adel, 50
- afeed = aFx * kpara4
-endif
-
-xout aFx
-
-nofx:
-endop
-
-
-/****************************************************************
-Reverb + master out
-*****************************************************************/
-instr 200
-
-gktime timek
-
-kTrackpadX chnget "trackpadX"
-gkTrackpadX = kTrackpadX / 600.
-gkTrackpadX limit gkTrackpadX, -1, 1
-
-kTrackpadY chnget "trackpadY"
-gkTrackpadY = kTrackpadY / 450.
-gkTrackpadY limit -gkTrackpadY, -1, 1
-
-koutGain chnget "masterVolume"
-koutGain = koutGain * 0.02
-gkduck init 1
-gkduck port gkduck, .03, 1.
-
-ain dcblock gainrev*0.05
-arev reverb ain, 2.5
-arev butterlp arev, 5000
-
-aLeft butterlp gaoutL, 7500
-aRight butterlp gaoutR, 7500
-
-aLeft eqfil aLeft, 4000, 1000, 0.125
-aRight eqfil aRight, 4000, 1000, 0.125
-
-;aLeft butterhp aLeft, 150
-;aRight butterhp aRight, 150
-
-aOutLeft dcblock (arev + aLeft) * koutGain * gkduck
-aOutRight dcblock (arev + aRight) * koutGain * gkduck
-gaRecL = aOutLeft
-gaRecR = aOutRight
- outs aOutLeft, aOutRight
-
- gaoutL = 0
- gaoutR = 0
- gainrev = 0
-
-endin
-
-/****************************************************************
-ducking
-****************************************************************/
-instr 5600
-gkduck linseg 1., 0.005, 0.05, 3.9, 0.05, 0.095, 1
-endin
-
-/****************************************************************
-Performance recording start
-*****************************************************************/
-instr 5400
-Sname strget p4
-ihandle fiopen Sname, 2
-fout Sname, 2, gaRecL, gaRecR
-clear gaRecL, gaRecR
-endin
-
-/****************************************************************
-Performance recording stop ( closing file )
-*****************************************************************/
-instr 5401
-Sname strget p4
-turnoff2 5400, 8, 0
-ficlose Sname
-endin
-
-/****************************************************************
-Handler audio input recording
-****************************************************************/
-instr 5201
-
-ktim timeinsts
-
-gkduck = .05
-itab = p4
-ain inch 1
-krms rms ain
-ktrig trigger krms, 1500, 0
-
-if ktrig == 1 then
-event "i", 5202, 0 , 1, itab
-turnoff
-endif
-
-ithresh = p3 - 1
-
-if ktim > ithresh then
-gkduck linseg .05, .8, .05, .2, 1
-endif
-
-endin
-
-/****************************************************************
-Audio input recording
-****************************************************************/
-instr 5202
-kenv adsr 0.005, 0.05, .9, 0.01
-gkduck linseg .05, .8, .05, .2, 1
-ain inch 1
-
-adel delay ain, .01
-
-Sname sprintf "/home/olpc/.sugar/default/tamtam/snds/mic%d", int(p4)-6
-ihandle fiopen Sname, 2
-event "i", 5212, 1 , .01, p4
-
-fout Sname, 2, adel*kenv
-adel = 0
-endin
-
-/****************************************************************
-Audio input recording ( closing file )
-****************************************************************/
-instr 5212
-Sname sprintf "/home/olpc/.sugar/default/tamtam/snds/mic%d", int(p4)-6
-ficlose Sname
-endin
-
-/****************************************************************
-SynthLab mic recording
-****************************************************************/
-instr 6000
-ain inch 1
-aindex phasor 1/p3
-tablew ain, aindex, 6000+p4, 1
-endin
-
-/****************************************************************
-SynthLab input recording
-****************************************************************/
-instr 5204
-
-Sname sprintf "/lab%d", int(p4)-85
-Sfile strcat gSpath, Sname
-fout Sfile, 2, gasynth
-clear gasynth
-endin
-
-/************************
-TamTam's SynthLab instrument
-************************/
-instr 5203
-
-gSpath strget p10
-
-if p5 != 0 then
-event_i "i", 5204, 0, p3, p5
-endif
-
-aSource1 init 0
-aSource2 init 0
-aSource3 init 0
-aSource4 init 0
-aFx1 init 0
-aFx2 init 0
-aFx3 init 0
-aFx4 init 0
-aout init 0
-
-ipitch = p4
-
-kc1 controller 1,p3
-kc2 controller 2,p3
-kc3 controller 3,p3
-kc4 controller 4,p3
-
-is1p1 ControlMatrice 5201, 0, kc1, kc2, kc3, kc4
-is1p2 ControlMatrice 5201, 1, kc1, kc2, kc3, kc4
-is1p3 ControlMatrice 5201, 2, kc1, kc2, kc3, kc4
-is1p4 ControlMatrice 5201, 3, kc1, kc2, kc3, kc4
-is2p1 ControlMatrice 5201, 4, kc1, kc2, kc3, kc4
-is2p2 ControlMatrice 5201, 5, kc1, kc2, kc3, kc4
-is2p3 ControlMatrice 5201, 6, kc1, kc2, kc3, kc4
-is2p4 ControlMatrice 5201, 7, kc1, kc2, kc3, kc4
-is3p1 ControlMatrice 5201, 8, kc1, kc2, kc3, kc4
-is3p2 ControlMatrice 5201, 9, kc1, kc2, kc3, kc4
-is3p3 ControlMatrice 5201, 10, kc1, kc2, kc3, kc4
-is3p4 ControlMatrice 5201, 11, kc1, kc2, kc3, kc4
-is4p1 ControlMatrice 5201, 12, kc1, kc2, kc3, kc4
-is4p2 ControlMatrice 5201, 13, kc1, kc2, kc3, kc4
-is4p3 ControlMatrice 5201, 14, kc1, kc2, kc3, kc4
-is4p4 ControlMatrice 5201, 15, kc1, kc2, kc3, kc4
-
-aSource1 source 1, ipitch*2
-aSource2 source 2, ipitch*2
-aSource3 source 3, ipitch*2
-aSource4 source 4, ipitch*2
-
-ifx1p1 ControlMatrice 5202, 0, kc1, kc2, kc3, kc4
-ifx1p2 ControlMatrice 5202, 1, kc1, kc2, kc3, kc4
-ifx1p3 ControlMatrice 5202, 2, kc1, kc2, kc3, kc4
-ifx1p4 ControlMatrice 5202, 3, kc1, kc2, kc3, kc4
-ifx2p1 ControlMatrice 5202, 4, kc1, kc2, kc3, kc4
-ifx2p2 ControlMatrice 5202, 5, kc1, kc2, kc3, kc4
-ifx2p3 ControlMatrice 5202, 6, kc1, kc2, kc3, kc4
-ifx2p4 ControlMatrice 5202, 7, kc1, kc2, kc3, kc4
-ifx3p1 ControlMatrice 5202, 8, kc1, kc2, kc3, kc4
-ifx3p2 ControlMatrice 5202, 9, kc1, kc2, kc3, kc4
-ifx3p3 ControlMatrice 5202, 10, kc1, kc2, kc3, kc4
-ifx3p4 ControlMatrice 5202, 11, kc1, kc2, kc3, kc4
-ifx4p1 ControlMatrice 5202, 12, kc1, kc2, kc3, kc4
-ifx4p2 ControlMatrice 5202, 13, kc1, kc2, kc3, kc4
-ifx4p3 ControlMatrice 5202, 14, kc1, kc2, kc3, kc4
-ifx4p4 ControlMatrice 5202, 15, kc1, kc2, kc3, kc4
-
-ifx1in SourceMatrice 1, aSource1, aSource2, aSource3, aSource4
-ifx2in SourceMatrice 2, aSource1, aSource2, aSource3, aSource4
-ifx3in SourceMatrice 3, aSource1, aSource2, aSource3, aSource4
-ifx4in SourceMatrice 4, aSource1, aSource2, aSource3, aSource4
-
-ifx1in1 FxMatrice 5, aFx1, aFx2, aFx3, aFx4
-ifx2in1 FxMatrice 6, aFx1, aFx2, aFx3, aFx4
-ifx3in1 FxMatrice 7, aFx1, aFx2, aFx3, aFx4
-ifx4in1 FxMatrice 8, aFx1, aFx2, aFx3, aFx4
-
-aFx1 effects 1, ipitch
-aFx2 effects 2, ipitch
-aFx3 effects 3, ipitch
-aFx4 effects 4, ipitch
-
-iSourceOut1 table 8, 5206
-iSourceOut2 table 9, 5206
-iSourceOut3 table 10, 5206
-iSourceOut4 table 11, 5206
-iFxOut1 table 12, 5206
-iFxOut2 table 13, 5206
-iFxOut3 table 14, 5206
-iFxOut4 table 15, 5206
-
-aout = (aSource1*iSourceOut1)+(aSource2*iSourceOut2)+(aSource3*iSourceOut3)+(aSource4*iSourceOut4)+(aFx1*iFxOut1)+(aFx2*iFxOut2)+(aFx3*iFxOut3)+(aFx4*iFxOut4)
-
-kenv adsr p3*p6+0.001, p3*p7, p8, p3*p9
-aout = aout*kenv
-
-vincr gasynth, aout
-
- outs aout*.707, aout*.707
-
-zacl 0, 8
-
-endin
-
-/***********************
-DELETE RESOURCES
-************************/
-
-instr 5000
-
-icount init 0
-
-again:
-ftfree 5000+icount, 0
-icount = icount+1
-
-if icount < p4 goto again
-
-turnoff
-
-endin
-
-/*************************
-Loop points editor
-*************************/
-instr 5022
-
-kstart chnget "lstart"
-kend chnget "lend"
-kdur chnget "ldur"
-kvol chnget "lvol"
-
-idurfadein init 0.005
-idurfadeout init 0.095
-iampe0 init 1
-iampe1 init 1
-iampe2 init 1
-
-itie tival
-if itie == 1 igoto nofadein
-
-iampe0 init 0
-iskip = 1
-
-nofadein:
-iskip = 0
-igliss = 0.005
-
-if p3 < 0 igoto nofadeout
-
-iampe2 init 0
-
-nofadeout:
-
-idelta = idurfadein+idurfadeout
-if idelta > abs(p3) then
-idelta = abs(p3)
-endif
-
-iampe0 = iampe0
-iampe2 = iampe2
-kenv linseg iampe0, idurfadein, iampe1, abs(p3)-idelta, iampe1, idurfadeout, iampe2
-
-
-ivibRand random 4.1, 5.7
-
-kvibrato oscil .006, ivibRand, 1
-
- tigoto tieskip
-
-a1 flooper2 0.5, 1+kvibrato, kstart, kend, kdur, 4999, 0, 0, 0, iskip
-
-a1 = a1*kenv*kvol
-
-gaoutL = a1*0.5+gaoutL
-gaoutR = a1*0.5+gaoutR
-
-gainrev = a1*0.05+gainrev
-
- tieskip:
-endin
-
-/*************************
-Loop points editor, simple player
-*************************/
-instr 5023
-
-kvol chnget "lvol"
-
-p3 = nsamp(4999) * giScale
-
-a1 loscil 0.5, 1, 4999, 1
-
-kenv adsr 0.005, 0.05, .8, 0.1
-
-a1 = a1*kenv*kvol
-
-gaoutL = a1*0.5+gaoutL
-gaoutR = a1*0.5+gaoutR
-
-gainrev = a1*0.05+gainrev
-
-endin
-
-/****************************************************************
-Soundfile player with miniTamTam's tied notes
-****************************************************************/
-/*************************
-pitch, reverbGain, amp, pan, table, att, dec, filtType, cutoff, loopstart, loopend, crossdur
-*************************/
-instr 5001, 5002, 5003, 5004, 5005, 5006, 5007, 5008, 5009, 5010
-
-idump = p16
-idump2 = p17
-idump3 = p18
-idump4 = p19
-
-iTrackId = int(p1-5001)
-SvolTrackName sprintf "trackVolume%0d", iTrackId
-kvol chnget SvolTrackName
-kvol = kvol * 0.01
-kvol port kvol, .01, i(kvol)
-
-idurfadein init 0.005
-idurfadeout init 0.095
-iampe0 init 1
-iampe1 = p6
-iampe2 init 1
-
-itie tival
-if itie == 1 igoto nofadein
-
-idurfadein init p9
-iampe0 init 0
-iskip = 1
-kpitch init p4
-kamp init p6
-kpan init p7
-krg init p5
-
-nofadein:
-iskip = 0
-igliss = 0.005
-
-if p3 < 0 igoto nofadeout
-
-idurfadeout init p10
-iampe2 init 0
-
-nofadeout:
-
-idelta = idurfadein+idurfadeout
-if idelta > abs(p3) then
-idelta = abs(p3)
-endif
-
-iampe0 = iampe0 * p6
-iampe2 = iampe2 * p6
-kenv linseg iampe0, idurfadein, iampe1, abs(p3)-idelta, iampe1, idurfadeout, iampe2
-
-kpitchBend port gkTrackpadX, .03, i(gkTrackpadX)
-kpitchBend pow kpitchBend + 1, 5
-kampBend port gkTrackpadY, .03, i(gkTrackpadY)
-kampBend pow kampBend + 1, 5
-
-ivibRand random 4.1, 5.7
-
-kvibrato oscil .006*kampBend, ivibRand*kpitchBend, 1
-
- tigoto tieskip
-
-kpitch portk p4, igliss, p4
-kpan portk p7, igliss, p7
-krg portk p5, igliss, p5
-kcutoff portk p12, igliss, p12
-kls portk p13, igliss, p13
-kle portk p14, igliss, p14
-kcd portk p15, igliss, p15
-
-a1 flooper2 1, kpitch+kvibrato, kls, kle, kcd, p8, 0, 0, 0, iskip
-
-if (p11-1) != -1 then
-acomp = a1
-a1 bqrez a1, kcutoff, 6, p11-1
-a1 balance a1, acomp
-endif
-
-if kpitch < 1 then
-kalias = giAliasSr*kpitch
-else
-kalias = giAliasSr
-endif
-
-a1 tone a1, kalias
-
-a1 = a1*kenv*kvol
-
-gaoutL = a1*(1-kpan)+gaoutL
-gaoutR = a1*kpan+gaoutR
-
-gainrev = a1*krg+gainrev
-
- tieskip:
-endin
-
-
-/*************************
-Soundfile player with edit's looped notes
-*************************/
-instr 5101, 5102, 5103, 5104, 5105, 5106, 5107, 5108, 5109, 5110
-
-if p16 != -1 then
- inum = frac(p16) * 10000
- itable2 = int(p16)
- event_i "i", inum, 0, p3, p4, p5, p6, p7, itable2, p9, p10, p11, p12, p17, p18, p19, -1
-endif
-
-ipitch random p4*.995, p4*1.005
-
-iTrackId = int(p1-5101)
-SvolTrackName2 sprintf "trackVolume%0d", iTrackId
-kvol chnget SvolTrackName2
-kvol = kvol * 0.01
-kvol port kvol, .01, 0 ;i(kvol)
-
-ivibRand random 4.1, 5.7
-
-kvibrato oscil .006, ivibRand, 1
-
-a1 flooper2 1, ipitch+kvibrato, p13, p14, p15, p8, 0, 0, 0
-
-if (p11-1) != -1 then
-acomp = a1
-a1 bqrez a1, p12, 6, p11-1
-a1 balance a1, acomp
-endif
-
-;if p4 < 1 then
-;ialias = giAliasSr*p4
-;else
-;ialias = giAliasSr
-;endif
-
-;a1 tone a1, ialias
-
-aenv adsr p9, 0.005, p6, p10
-a1 = a1*aenv*kvol
-
-gaoutL = a1*(1-p7)+gaoutL
-gaoutR = a1*p7+gaoutR
-
-gainrev = a1*p5+gainrev
-
-endin
-
-/**************************************************************
-Simple soundfile player (miniTamTam)
-**************************************************************/
-
-instr 5011, 5012, 5013, 5014, 5015, 5016, 5017, 5018, 5019, 5020
-
-idump = p16
-idump2 = p17
-idump3 = p18
-idump4 = p19
-
-iTrackId = int(p1-5011)
-SvolTrackName3 sprintf "trackVolume%0d", iTrackId
-kvol chnget SvolTrackName3
-kvol = kvol * 0.01
-kvol port kvol, .01
-
-p3 = nsamp(p8) * giScale / p4
-
-a1 loscil p6, p4, p8, 1
-
-if (p11-1) != -1 then
-acomp = a1
-a1 bqrez a1, p12, 6, p11-1
-a1 balance a1, acomp
-endif
-
-if p4 < 1 then
-ialias = giAliasSr*p4
-else
-ialias = giAliasSr
-endif
-
-a1 tone a1, ialias
-
-kenv adsr p9, 0.05, .8, p10
-a1 = a1*kenv*kvol
-
-gaoutL = a1*(1-p7)+gaoutL
-gaoutR = a1*p7+gaoutR
-
-gainrev = a1*p5+gainrev
-
-endin
-
-/**************************************************************
-Simple soundfile player (Edit)
-**************************************************************/
-
-instr 5111, 5112, 5113, 5114, 5115, 5116, 5117, 5118, 5119, 5120
-
-if p16 != -1 then
- inum = frac(p16) * 10000
- itable2 = int(p16)
- event_i "i", inum, 0, p3, p4, p5, p6, p7, itable2, p9, p10, p11, p12, p17, p18, p19, -1
-endif
-
-iTrackId = int(p1-5111)
-SvolTrackName4 sprintf "trackVolume%0d", iTrackId
-kvol chnget SvolTrackName4
-kvol = kvol * 0.01
-kvol port kvol, .01
-
-a1 loscil p6, p4, p8, 1
-
-if (p11-1) != -1 then
-acomp = a1
-a1 bqrez a1, p12, 6, p11-1
-a1 balance a1, acomp
-endif
-
-;if p4 < 1 then
-;ialias = giAliasSr*p4
-;else
-;ialias = giAliasSr
-;endif
-
-;a1 tone a1, ialias
-
-kenv adsr p9, 0.05, .8, p10
-
-a1 = a1*kenv*kvol
-
-gaoutL = a1*(1-p7)+gaoutL
-gaoutR = a1*p7+gaoutR
-
-gainrev = a1*p5+gainrev
-
-endin
-
-
-
-/********************************************************************
-soundfile player for percussion - resonance notes
-********************************************************************/
-instr 5021
-
-a1 flooper2 1, p4, .25, .750, .2, p8
-
-if (p11-1) != -1 then
-acomp = a1
-a1 bqrez a1, p12, 6, p11-1
-a1 balance a1, acomp
-endif
-
-kenv expseg 0.001, .003, .6, p3 - .003, 0.001
-klocalenv adsr p8, 0.05, .8, p10
-
-a1 = a1*kenv*klocalenv
-
-gaoutL = a1*(1-p7)+gaoutL
-gaoutR = a1*p7+gaoutR
-
-gainrev = a1*p5+gainrev
-
-endin
-
-</CsInstruments>
-<CsScore>
-f1 0 8192 10 1
-f2 0 8192 11 1 1
-
-f4 0 32 -2 250 2250 2980 420 2050 2630 590 1770 2580
- 750 1450 2590 290 750 2300 360 770 2530 520 900 2510 710 1230 2700 570 1560 2560 0 0 0 0 0
-f30 0 1024 10 1 0 .3 0 .1
-f31 0 1024 10 1 .5 .3 .25 .1
-f32 0 1024 10 1 0 .1 0 .3 .2 0 0 .1
-f33 0 1024 10 1 0 0 0 .1 0 0 .2 .1 0 0 .1
-f34 0 1024 10 1 .6 0 0 .4 .2 .1 0 0 .1
-f35 0 1024 10 1 .5 .3 0 .1 0 0 0 .1 .1
-f36 0 1024 10 1 0 .6 .4 .1 0 0 .2 .1 0 0 .1
-f37 0 1024 10 1 0 0 0 .1 .2 .1 0 0 0 .1 0 0 .1
-f38 0 1024 10 1 .4 .3 0 .1 .2 .1 .1 .1 0 0 0 0 .1 .05
-f39 0 1024 10 1 0 .5 0 0 .3 0 0 .2 0 .1 0 0 0 0 .2 0 0 0 .05 0 0 0 0 .03 ; ADDITIVE SYNTHESIS WAVE
-f41 0 8193 19 .5 .5 270 .5 ; SIGMOID FUNCTION
-f42 0 8192 -20 2 1
-f44 0 8192 5 1 8192 0.001 ; EXPONENTIAL FUNCTION
-f45 0 512 7 0 500 0 2 1 10 1
-f5150 0 32768 7 0 32768 0
-f6001 0 131072 7 0 131072 0
-f6002 0 131072 7 0 131072 0
-f6003 0 131072 7 0 131072 0
-f6004 0 131072 7 0 131072 0
-i200 0 600000
-</CsScore>
-</CsoundSynthesizer>
diff --git a/TamTamSynthLab.activity/common/Tooltips.py b/TamTamSynthLab.activity/common/Tooltips.py
deleted file mode 100644
index 42511c2..0000000
--- a/TamTamSynthLab.activity/common/Tooltips.py
+++ /dev/null
@@ -1,123 +0,0 @@
-from gettext import gettext as _
-
-class Tooltips:
- def __init__(self):
- # Edit
- self.Edit = {}
- # tools
- self.Edit["2toolPointerButton"] = _('Select tool')
- self.Edit["2toolPencilButton"] = _('Draw tool')
- self.Edit["2toolBrushButton"] = _('Paint tool')
- # create tune
- self.Edit["2generateBtn"] = _('Generate new tune')
- # page
- self.Edit["2pageGenerateButton"] = _('Generate page')
- self.Edit["2pagePropertiesButton"] = _('Page properties')
- self.Edit["2pageDeleteButton"] = _('Delete page(s)')
- self.Edit["2pageDuplicateButton"] = _('Duplicate page(s)')
- self.Edit["2pageNewButton"] = _('Add page')
- self.Edit["2pageBeatsButton"] = _('Beats per page')
- self.Edit["2saveButton"] = _('Save tune')
- self.Edit["2loadButton"] = _('Load tune')
- # track
- self.Edit["2trackGenerateButton"] = _('Generate track')
- self.Edit["2trackPropertiesButton"] = _('Track properties')
- self.Edit["2trackDeleteButton"] = _('Clear track')
- self.Edit["2trackDuplicateButton"] = _('Duplicate track')
- # note
- self.Edit["2notePropertiesButton"] = _('Note(s) properties')
- self.Edit["2noteDeleteButton"] = _('Delete note(s)')
- self.Edit["2noteDuplicateButton"] = _('Duplicate note(s)')
- self.Edit["2noteOnsetMinusButton"] = _('Move note in time')
- self.Edit["2noteOnsetPlusButton"] = _('Move note in time')
- self.Edit["2notePitchMinusButton"] = _('Lower pitch')
- self.Edit["2notePitchPlusButton"] = _('Raise pitch')
- self.Edit["2noteDurationMinusButton"] = _('Modify duration')
- self.Edit["2noteDurationPlusButton"] = _('Modify duration')
- self.Edit["2noteVolumeMinusButton"] = _('Lower volume')
- self.Edit["2noteVolumePlusButton"] = _('Raise volume')
- # transport
- self.Edit["2playButton"] = _('Play')
- self.Edit["2pauseButton"] = _('Pause')
- self.Edit["2stopButton"] = _('Stop')
- self.Edit["2keyRecordButton"] = _('Keyboard recording')
- self.Edit["2recordButton"] = _('Save as .ogg')
- self.Edit["2rewindButton"] = _('Rewind')
- self.Edit["2closeButton"] = _('Save to journal and quit')
- # volume and tempo
- self.Edit["2volumeSlider"] = _('Master volume')
- self.Edit["2tempoSlider"] = _('Tempo')
- #InstrumentBox
- self.Edit["2instrument1muteButton"] = _("Left click to mute, right click to solo")
- self.Edit["2instrument2muteButton"] = _("Left click to mute, right click to solo")
- self.Edit["2instrument3muteButton"] = _("Left click to mute, right click to solo")
- self.Edit["2instrument4muteButton"] = _("Left click to mute, right click to solo")
- self.Edit["2drumMuteButton"] = _("Left click to mute, right click to solo")
-
- self.ALGO = {}
- self.ALGO["XYButton1"] = _('-- Rythm density, | Rythm regularity' )
- self.ALGO["XYButton2"] = _('-- Pitch regularity, | Pitch maximum step' )
- self.ALGO["XYButton3"] = _('-- Average duration, | Silence probability')
- self.ALGO["drunk"] = _('Drunk')
- self.ALGO["droneJump"] = _('Drone and Jump')
- self.ALGO["repeat"] = _('Repeater')
- self.ALGO["loopSeg"] = _('Loop segments')
- self.ALGO["majorKey"] = _('Major scale')
- self.ALGO["minorHarmKey"] = _('Harmonic minor scale')
- self.ALGO["minorKey"] = _('Natural minor scale')
- self.ALGO["phrygienKey"] = _('Phrygian scale')
- self.ALGO["dorienKey"] = _('Dorian scale')
- self.ALGO["lydienKey"] = _('Lydian scale')
- self.ALGO["myxoKey"] = _('Myxolydian scale')
- self.ALGO["saveButton"] = _('Save preset')
- self.ALGO["loadButton"] = _('Load preset')
- self.ALGO["checkButton"] = _('Generate')
- self.ALGO["cancelButton"] = _('Close')
-
- self.PROP = {}
- self.PROP['pitchUp'] = _('Transpose up')
- self.PROP['pitchDown'] = _('Transpose down')
- self.PROP['volumeUp'] = _('Volume up')
- self.PROP['volumeDown'] = _('Volume down')
- self.PROP['panSlider'] = _('Panoramisation')
- self.PROP['reverbSlider'] = _('Reverb')
- self.PROP['attackSlider'] = _('Attack duration')
- self.PROP['decaySlider'] = _('Decay duration')
- self.PROP['filterTypeLowButton'] = _('Lowpass filter')
- self.PROP['filterTypeHighButton'] = _('Highpass filter')
- self.PROP['filterTypeBandButton'] = _('Bandpass filter')
- self.PROP['cutoffSlider'] = _('Filter cutoff')
- self.PROP['pitchGen'] = _('Open algorithmic generator')
- self.PROP['volumeGen'] = _('Open algorithmic generator')
- self.PROP['panGen'] = _('Open algorithmic generator')
- self.PROP['reverbGen'] = _('Open algorithmic generator')
- self.PROP['attackGen'] = _('Open algorithmic generator')
- self.PROP['decayGen'] = _('Open algorithmic generator')
- self.PROP['cutoffGen'] = _('Open algorithmic generator')
- self.PROP['line'] = _('Line')
- self.PROP['drunk'] = _('Drunk')
- self.PROP['droneJump'] = _('Drone and jump')
- self.PROP['repeater'] = _('Repeater')
- self.PROP['loopseg'] = _('Loop segments')
- self.PROP['minSlider'] = _('Minimum value')
- self.PROP['maxSlider'] = _('Maximum value')
- self.PROP['paraSlider'] = _('Specific parameter')
- self.PROP['checkButton'] = _('Apply generator')
- self.PROP['cancelButton'] = _('Cancel')
-
-
-
- #miniTamTam
- VOL = _('Volume')
- BAL = _('Balance')
- REV = _('Reverb')
- PLAY = _('Play / Stop')
- STOP = _('Stop')
- SEQ = _('Left click to record, right click to record on top')
- GEN = _('Generate')
- COMPL = _('Complexity of beat')
- BEAT = _('Beats per bar')
- TEMPO = _('Tempo')
- RECMIC = _('Record with the microphone')
- RECLAB = _('Open SynthLab to create noise')
- MT_RECORDBUTTONS = [_('Record mic into slot 1'), _('Record mic into slot 2'), _('Record mic into slot 3'), _('Record mic into slot 4')]
diff --git a/TamTamSynthLab.activity/common/Util/CSoundClient.py b/TamTamSynthLab.activity/common/Util/CSoundClient.py
deleted file mode 100644
index b6acd96..0000000
--- a/TamTamSynthLab.activity/common/Util/CSoundClient.py
+++ /dev/null
@@ -1,411 +0,0 @@
-import os
-import socket
-import select
-import sys
-import threading
-import time
-import array
-from math import sqrt
-
-from common.Util.Clooper import *
-import common.Config as Config
-
-from common.Generation.GenerationConstants import GenerationConstants
-from common.Util import NoteDB
-import common.Util.InstrumentDB as InstrumentDB
-
-loadedInstruments = []
-
-_note_template = array.array('f', [0] * 19 )
-def _new_note_array():
- return _note_template.__copy__()
-
-def _noteid(dbnote):
- return (dbnote.page << 16) + dbnote.id
-
-_loop_default=0
-
-class _CSoundClientPlugin:
-
- #array index constants for csound
- (INSTR_TRACK, \
- ONSET, \
- DURATION, \
- PITCH,
- REVERBSEND, \
- AMPLITUDE, \
- PAN, \
- INST_ID, \
- ATTACK, \
- DECAY, \
- FILTERTYPE, \
- FILTERCUTOFF, \
- INSTRUMENT2 ) = range(13)
-
- def __init__(self):
- sc_initialize( Config.PLUGIN_UNIVORC, Config.PLUGIN_DEBUG,
- Config.PLUGIN_PERIOD, Config.PLUGIN_NPERIODS,
- Config.PLUGIN_VERBOSE,
- Config.PLUGIN_KSMPS, Config.PLUGIN_RATE)
- self.on = False
- #self.masterVolume = 100.0
- self.periods_per_buffer = 2
- global _loop_default
- _loop_default = self.loopCreate()
- self.instrumentDB = InstrumentDB.getRef()
-
- self.jamesSux = {} # temporyary dictionary of loopId: loopNumTicks, while I wait for james to implement it properly
-
- def __del__(self):
- self.connect(False)
- sc_destroy()
-
- def setChannel(self, name, val):
- sc_setChannel(name, val)
-
- def setMasterVolume(self, volume):
- sc_setChannel( 'masterVolume', volume)
-
- def setTrackVolume( self, volume, trackId ):
- sc_setChannel( 'trackVolume' + str(trackId + 1), volume )
-
- def setTrackpadX( self, value ):
- sc_setChannel( 'trackpadX', value)
-
- def setTrackpadY( self, value ):
- sc_setChannel( 'trackpadY', value)
-
- def micRecording( self, table ):
- sc_inputMessage( Config.CSOUND_MIC_RECORD % table )
-
- def load_mic_instrument( self, inst ):
- fileName = Config.DATA_DIR + '/' + inst
- instrumentId = Config.INSTRUMENT_TABLE_OFFSET + self.instrumentDB.instNamed[inst].instrumentId
- sc_inputMessage(Config.CSOUND_LOAD_INSTRUMENT % (instrumentId, fileName))
-
- def load_synth_instrument( self, inst ):
- fileName = Config.DATA_DIR + '/' + inst
- instrumentId = Config.INSTRUMENT_TABLE_OFFSET + self.instrumentDB.instNamed[inst].instrumentId
- sc_inputMessage(Config.CSOUND_LOAD_INSTRUMENT % (instrumentId, fileName))
-
- def load_ls_instrument( self, inst ):
- fileName = Config.DATA_DIR + '/' + inst
- sc_inputMessage(Config.CSOUND_LOAD_LS_INSTRUMENT % fileName)
-
- def load_instruments( self ):
- for instrumentSoundFile in self.instrumentDB.instNamed.keys():
- if instrumentSoundFile[0:3] == 'mic' or instrumentSoundFile[0:3] == 'lab' or self.instrumentDB.instNamed[instrumentSoundFile].category == 'mysounds':
- fileName = Config.DATA_DIR + '/' + instrumentSoundFile
- else:
- fileName = Config.SOUNDS_DIR + "/" + instrumentSoundFile
- instrumentId = Config.INSTRUMENT_TABLE_OFFSET + self.instrumentDB.instNamed[ instrumentSoundFile ].instrumentId
- sc_inputMessage( Config.CSOUND_LOAD_INSTRUMENT % (instrumentId, fileName) )
-
- def load_instrument(self, inst):
- if not inst in loadedInstruments:
- if inst[0:3] == 'mic' or inst[0:3] == 'lab' or self.instrumentDB.instNamed[inst].category == 'mysounds':
- if os.path.isfile(os.path.join(Config.DATA_DIR, inst)):
- fileName = os.path.join(Config.DATA_DIR, inst)
- else:
- fileName = os.path.join(Config.SOUNDS_DIR, 'armbone')
- else:
- fileName = os.path.join(Config.SOUNDS_DIR, inst)
- instrumentId = Config.INSTRUMENT_TABLE_OFFSET + self.instrumentDB.instNamed[ inst ].instrumentId
- sc_inputMessage( Config.CSOUND_LOAD_INSTRUMENT % (instrumentId, fileName) )
- loadedInstruments.append(inst)
-
- def load_drumkit(self, kit):
- if not kit in loadedInstruments:
- for i in self.instrumentDB.instNamed[kit].kit.values():
- fileName = Config.SOUNDS_DIR + "/" + i
- instrumentId = Config.INSTRUMENT_TABLE_OFFSET + self.instrumentDB.instNamed[ i ].instrumentId
- sc_inputMessage( Config.CSOUND_LOAD_INSTRUMENT % (instrumentId, fileName) )
- loadedInstruments.append(i)
- loadedInstruments.append(kit)
-
- def connect( self, init = True ):
- def reconnect():
- if sc_start(self.periods_per_buffer) :
- if (Config.DEBUG > 0) : print 'ERROR connecting'
- else:
- self.on = True
- def disconnect():
- if sc_stop() :
- if (Config.DEBUG > 0) : print 'ERROR connecting'
- else:
- self.on = False
-
- if init and not self.on :
- reconnect()
- if not init and self.on :
- disconnect()
-
- def destroy( self ):
- self.connect(False)
- sc_destroy()
-
- def inputMessage(self,msg):
- sc_inputMessage(msg)
-
- def getTick( self ):
- return sc_getTickf()
-
- def adjustTick( self, amt ):
- sc_adjustTick(amt)
-
- def setTempo(self,t):
- if (Config.DEBUG > 3) : print 'INFO: loop tempo: %f -> %f' % (t, 60.0 / (Config.TICKS_PER_BEAT * t))
- sc_setTickDuration( 60.0 / (Config.TICKS_PER_BEAT * t))
-
-
- def loopCreate(self):
- return sc_loop_new()
-
- def loopDestroy(self, loopId):
- sc_loop_delete(loopId)
- try:
- del self.jamesSux[ loopId ]
- except:
- pass
-
- def loopClear(self):
- global _loop_default
- sc_loop_delete(_loop_default)
- _loop_default = sc_loop_new()
- try:
- del self.jamesSux[ loopId ]
- except:
- pass
-
-
- # this is function deletes an Event from a loop
- # TODO: rename this function
- def loopDelete(self, dbnote, loopId=_loop_default):
- sc_loop_delScoreEvent( loopId, _noteid(dbnote))
-
- def loopDelete1(self, page, id, loopId=_loop_default):
- sc_loop_delScoreEvent( loopId, (page << 16) + id)
-
- def loopStart(self, loopId=_loop_default):
- sc_loop_playing(loopId, 1)
-
- def loopPause(self, loopId=_loop_default):
- sc_loop_playing(loopId, 0)
-
- def loopSetTick(self,t, loopId=_loop_default):
- sc_loop_setTickf(loopId, t)
-
- def loopGetTick(self, loopId=_loop_default):
- return sc_loop_getTickf(loopId)
-
- def loopSetNumTicks(self,n, loopId=_loop_default):
- sc_loop_setNumTicks(loopId, n)
- self.jamesSux[loopId] = n
-
- def loopGetNumTicks( self, loopId = _loop_default ):
- return self.jamesSux[loopId]
-
- def loopSetTickDuration(self,d, loopId=_loop_default):
- sc_loop_setTickDuration(loopId, d)
- james
-
- def loopDeactivate(self, note = 'all', loopId=_loop_default):
- if note == 'all':
- sc_loop_deactivate_all(loopId)
- else:
- if (Config.DEBUG > 0) : print 'ERROR: deactivating a single note is not implemented'
-
- def loopUpdate(self, note, parameter, value,cmd, loopId=_loop_default):
- page = note.page
- track = note.track
- id = note.id
- if note.cs.mode == 'mini':
- instrument_id_offset = 0
- elif note.cs.mode == 'edit':
- if self.instrumentDB.instId[note.cs.instrumentId].kit != None:
- instrument_id_offset = 0
- else:
- instrument_id_offset = 100
- if (parameter == NoteDB.PARAMETER.ONSET):
- if (Config.DEBUG > 2): print 'INFO: updating onset', (page<<16)+id, value
- sc_loop_updateEvent( loopId, (page<<16)+id, 1, value, cmd)
- elif (parameter == NoteDB.PARAMETER.PITCH):
- if (Config.DEBUG > 2): print 'INFO: updating pitch', (page<<16)+id, value
- pitch = value
- if self.instrumentDB.instId[note.cs.instrumentId].kit != None:
- instrument = self.instrumentDB.instNamed[
- self.instrumentDB.instId[note.cs.instrumentId].kit[pitch]]
- csoundInstId = instrument.csoundInstrumentId
- csoundTable = Config.INSTRUMENT_TABLE_OFFSET + instrument.instrumentId
- if (Config.DEBUG > 2): print 'INFO: updating drum instrument (pitch)', (page<<16)+id, instrument.name, csoundInstId
- sc_loop_updateEvent( loopId, (page<<16)+id, 0, (csoundInstId + instrument_id_offset) + note.track * 0.01, -1 )
- sc_loop_updateEvent( loopId, (page<<16)+id, 7, csoundTable , -1 )
- pitch = 1
- else:
- pitch = GenerationConstants.TRANSPOSE[ pitch - 24 ]
- sc_loop_updateEvent( loopId, (page<<16)+id, 3, pitch, cmd)
- elif (parameter == NoteDB.PARAMETER.AMPLITUDE):
- if (Config.DEBUG > 2): print 'INFO: updating amp', (page<<16)+id, value
- sc_loop_updateEvent( loopId, (page<<16)+id, 5, value, cmd)
- elif (parameter == NoteDB.PARAMETER.DURATION):
- if (Config.DEBUG > 2): print 'INFO: updating duration', (page<<16)+id, value
- sc_loop_updateEvent( loopId, (page<<16)+id, self.DURATION, value, cmd)
- elif (parameter == NoteDB.PARAMETER.INSTRUMENT):
- pitch = note.cs.pitch
- instrument = self.instrumentDB.instId[value]
- if instrument.kit != None:
- instrument = self.instrumentDB.instNamed[instrument.kit[pitch]]
- csoundInstId = instrument.csoundInstrumentId
- csoundTable = Config.INSTRUMENT_TABLE_OFFSET + instrument.instrumentId
- loopStart = instrument.loopStart
- loopEnd = instrument.loopEnd
- crossDur = instrument.crossDur
- if (Config.DEBUG > 2): print 'INFO: updating instrument', (page<<16)+id, instrument.name, csoundInstId
- sc_loop_updateEvent( loopId, (page<<16)+id, 0, (csoundInstId + (track+1) + instrument_id_offset) + note.track * 0.01, cmd )
- sc_loop_updateEvent( loopId, (page<<16)+id, 7, csoundTable, -1 )
- sc_loop_updateEvent( loopId, (page<<16)+id, 12, loopStart, -1 )
- sc_loop_updateEvent( loopId, (page<<16)+id, 13, loopEnd, -1 )
- sc_loop_updateEvent( loopId, (page<<16)+id, 14, crossDur , -1 )
- elif (parameter == NoteDB.PARAMETER.PAN):
- sc_loop_updateEvent( loopId, (page<<16)+id, self.PAN, value, cmd)
- elif (parameter == NoteDB.PARAMETER.REVERB):
- sc_loop_updateEvent( loopId, (page<<16)+id, self.REVERBSEND, value, cmd)
- elif (parameter == NoteDB.PARAMETER.ATTACK):
- sc_loop_updateEvent( loopId, (page<<16)+id, self.ATTACK, value, cmd)
- elif (parameter == NoteDB.PARAMETER.DECAY):
- sc_loop_updateEvent( loopId, (page<<16)+id, self.DECAY, value, cmd)
- elif (parameter == NoteDB.PARAMETER.FILTERTYPE):
- sc_loop_updateEvent( loopId, (page<<16)+id, self.FILTERTYPE, value, cmd)
- elif (parameter == NoteDB.PARAMETER.FILTERCUTOFF):
- sc_loop_updateEvent( loopId, (page<<16)+id, self.FILTERCUTOFF, value, cmd)
- elif (parameter == NoteDB.PARAMETER.INSTRUMENT2):
- sc_loop_updateEvent( loopId, (page<<16)+id, self.INSTRUMENT2, value, cmd)
- else:
- if (Config.DEBUG > 0): print 'ERROR: loopUpdate(): unsupported parameter change'
-
- def loopPlay(self, dbnote, active, storage=_new_note_array(),
- loopId=_loop_default ):
- qid = (dbnote.page << 16) + dbnote.id
- sc_loop_addScoreEvent( loopId, qid, 1, active, 'i',
- self.csnote_to_array( dbnote.cs, storage))
-
- def play(self, csnote, secs_per_tick, storage=_new_note_array()):
- a = self.csnote_to_array(csnote, storage)
- a[self.DURATION] = a[self.DURATION] * secs_per_tick
- a[self.ATTACK] = max(a[self.ATTACK]*a[self.DURATION], 0.002)
- a[self.DECAY] = max(a[self.DECAY]*a[self.DURATION], 0.002)
- sc_scoreEvent( 'i', a)
-
- def csnote_to_array(self, csnote, storage):
- return self._csnote_to_array1(storage,
- csnote.onset,
- csnote.pitch,
- csnote.amplitude,
- csnote.pan,
- csnote.duration,
- csnote.trackId,
- csnote.attack,
- csnote.decay,
- csnote.reverbSend,
- csnote.filterType,
- csnote.filterCutoff,
- csnote.tied,
- csnote.instrumentId,
- csnote.mode,
- csnote.instrumentId2 )
-
- def _csnote_to_array1( self, storage, onset, pitch, amplitude, pan, duration,
- trackId, attack, decay, reverbSend, filterType, filterCutoff,
- tied, instrumentId, mode, instrumentId2 = -1):
-
- rval=storage
- instrument = self.instrumentDB.instId[instrumentId]
-
- if instrument.volatile != None:
- sound = os.path.join(Config.DATA_DIR, instrument.name)
- if os.path.isfile(sound):
- st_mtime = os.stat(sound).st_mtime
- if st_mtime != instrument.volatile:
- instrument.volatile = st_mtime
- loadedInstruments.remove(instrument.name)
- self.load_instrument(instrument.name)
- time.sleep(0.2)
-
- if instrument.kit != None:
- instrument = self.instrumentDB.instNamed[instrument.kit[pitch]]
- pitch = 1
- time_in_ticks = 0
- else:
- pitch = GenerationConstants.TRANSPOSE[ pitch - 24 ]
- time_in_ticks = 1
-
- instrument_id_offset = 0
- # condition for tied notes
- if instrument.csoundInstrumentId == Config.INST_TIED:
- if tied:
- if mode == 'mini':
- duration = -1
- instrument_id_offset = 0
- elif mode == 'edit':
- instrument_id_offset = 0
- if duration < 0:
- duration = -1
- else:
- if mode == 'mini':
- instrument_id_offset = 0
- elif mode == 'edit':
- instrument_id_offset = 100
-
- if instrument.csoundInstrumentId == Config.INST_SIMP:
- if mode == 'mini':
- instrument_id_offset = 0
- elif mode == 'edit':
- if instrument.name[0:4] == 'drum':
- instrument_id_offset = 0
- else:
- instrument_id_offset = 100
-
- amplitude = amplitude / sqrt(pitch) * instrument.ampScale
- rval[0] = (instrument.csoundInstrumentId + \
- (trackId+1) + instrument_id_offset) + trackId * 0.01
- rval[1] = onset
- rval[2] = duration
- rval[3] = pitch
- rval[4] = reverbSend
- rval[5] = amplitude
- rval[6] = pan
- rval[7] = Config.INSTRUMENT_TABLE_OFFSET + instrument.instrumentId
- rval[8] = attack
- rval[9] = decay
- rval[10]= filterType
- rval[11]= filterCutoff
- rval[12]= float(instrument.loopStart)
- rval[13]= float(instrument.loopEnd)
- rval[14]= float(instrument.crossDur)
-
- if instrumentId2 != -1:
- instrument2 = self.instrumentDB.instId[instrumentId2]
- csInstrumentId2 = (instrument2.csoundInstrumentId + 100) * 0.0001
- rval[15] = Config.INSTRUMENT_TABLE_OFFSET + instrumentId2 + csInstrumentId2
- rval[16] = instrument2.loopStart
- rval[17] = instrument2.loopEnd
- rval[18] = instrument2.crossDur
- else:
- rval[15] = -1
- rval[16] = 0
- rval[17] = 0
- rval[18] = 0
-
- return rval
-
-_Client = None
-
-def new_csound_client():
- global _Client
- if _Client == None:
- _Client = _CSoundClientPlugin()
- _Client.connect(True)
- _Client.setMasterVolume(100.0)
- #_Client.load_instruments()
- time.sleep(0.2)
- return _Client
diff --git a/TamTamSynthLab.activity/common/Util/CSoundNote.py b/TamTamSynthLab.activity/common/Util/CSoundNote.py
deleted file mode 100644
index a188a62..0000000
--- a/TamTamSynthLab.activity/common/Util/CSoundNote.py
+++ /dev/null
@@ -1,80 +0,0 @@
-import common.Config as Config
-import common.Util.InstrumentDB as InstrumentDB
-
-class CSoundNote :
- def __init__( self,
- onset,
- pitch,
- amplitude,
- pan,
- duration,
- trackId,
- instrumentId = 1, #self.instrumentDB.instNamed["flute"].instrumentId,
- attack = 0.005,
- decay = 0.098,
- reverbSend = 0.1,
- filterType = 0,
- filterCutoff = 1000,
- tied = False,
- mode = 'edit',
- instrumentId2 = -1 ):
-
- self.instrumentDB = InstrumentDB.getRef()
-
- self.onset = onset
- self.pitch = pitch
- self.amplitude = amplitude
- self.pan = pan
- self.duration = duration
- self.trackId = trackId
- self.instrumentId = instrumentId
- #temp: catch old code trying to pass in instrument names here
- int(instrumentId)
- self.attack = attack
- self.decay = decay
- self.reverbSend = reverbSend
- self.filterType = filterType
- self.filterCutoff = filterCutoff
- self.tied = tied
- self.mode = mode
- self.instrumentId2 = instrumentId2
-
- def clone( self ):
- return CSoundNote( self.onset, self.pitch, self.amplitude, self.pan,
- self.duration, self.trackId, self.instrumentId,
- self.attack, self.decay, self.reverbSend,
- self.filterType, self.filterCutoff, self.tied,
- self.mode, self.instrumentId2 )
-
- def __getstate__unused(self):
- return {'onset': self.onset,
- 'pitch': self.pitch,
- 'amplitude': self.amplitude,
- 'pan': self.pan,
- 'duration': self.duration,
- 'trackId': self.trackId,
- 'instrumentId': self.instrumentId,
- 'attack': self.attack,
- 'decay': self.decay,
- 'reverbSend': self.reverbSend,
- 'filterType': self.filterType,
- 'filterCutoff': self.filterCutoff,
- 'tied': self.tied,
- 'mode': self.mode }
-
- def __setstate__unused(self,dict):
- self.onset = dict['onset']
- self.pitch = dict['pitch']
- self.amplitude = dict['amplitude']
- self.pan = dict['pan']
- self.duration = dict['duration']
- self.trackId = dict['trackId']
- self.instrumentId = dict['instrumentId']
- self.attack = dict['attack']
- self.decay = dict['decay']
- self.reverbSend = dict['reverbSend']
- self.filterType = dict['filterType']
- self.filterCutoff = dict['filterCutoff']
- self.tied = dict['tied']
- self.mode = dict['mode']
- self.nchanges = 0
diff --git a/TamTamSynthLab.activity/common/Util/Clooper/Makefile b/TamTamSynthLab.activity/common/Util/Clooper/Makefile
deleted file mode 100644
index f82d475..0000000
--- a/TamTamSynthLab.activity/common/Util/Clooper/Makefile
+++ /dev/null
@@ -1,23 +0,0 @@
-CC=gcc
-
-CSOUND_ARCH = $(shell arch | grep 64 >/dev/null && echo linux64 || echo linux32)
-CSOUND_VERSION = $(shell csound --version 2>&1 | grep -o "Csound version [0-9]\+\.[0-9]\+" | awk '{print $$3}' | sed s/\\.//g)
-LIB_NAME = $(CSOUND_ARCH)_$(CSOUND_VERSION)
-
-CXXFLAGS = $(shell python-config --cflags) \
- -Wall -Werror -fPIC -O2 -finline
-LDFLAGS+= $(python-config --libs) \
- -lasound -lcsound
-
-all : aclient.so
- rm -rf $(LIB_NAME)
- mkdir $(LIB_NAME)
- mv aclient.so $(LIB_NAME)/
- touch $(LIB_NAME)/__init__.py
-
-aclient.so : aclient.cpp audio.cpp
- g++ $(CXXFLAGS) -shared -o $@ $< $(LDFLAGS)
-
-clean :
- rm aclient*.so
-
diff --git a/TamTamSynthLab.activity/common/Util/Clooper/SoundClient.i b/TamTamSynthLab.activity/common/Util/Clooper/SoundClient.i
deleted file mode 100644
index 80d77df..0000000
--- a/TamTamSynthLab.activity/common/Util/Clooper/SoundClient.i
+++ /dev/null
@@ -1,14 +0,0 @@
-
-%module SClient
-
-%{
-#define SWIG_FILE_WITH_INIT
-#include "SoundClient.h"
-%}
-
-%pythoncode
-%{
-
-%}
-
-%include "SoundClient.h"
diff --git a/TamTamSynthLab.activity/common/Util/Clooper/__init__.py b/TamTamSynthLab.activity/common/Util/Clooper/__init__.py
deleted file mode 100644
index 363fc88..0000000
--- a/TamTamSynthLab.activity/common/Util/Clooper/__init__.py
+++ /dev/null
@@ -1,21 +0,0 @@
-import os
-import sys
-import logging
-
-_sys_path = sys.path
-_root_path = os.path.dirname(__file__)
-
-for i in os.listdir(_root_path):
- path = os.path.join(_root_path, i)
- if (os.path.isdir(path)):
- sys.path = _sys_path + [os.path.join('.', path)]
- try:
- from aclient import *
- logging.debug('use %s blobs' % path)
- _sys_path = None
- break
- except Exception, e:
- logging.debug('skip %s blobs: %s' % (path, e))
-
-if _sys_path:
- raise('cannot find proper binary blobs')
diff --git a/TamTamSynthLab.activity/common/Util/Clooper/aclient.cpp b/TamTamSynthLab.activity/common/Util/Clooper/aclient.cpp
deleted file mode 100644
index 1a8e81b..0000000
--- a/TamTamSynthLab.activity/common/Util/Clooper/aclient.cpp
+++ /dev/null
@@ -1,1101 +0,0 @@
-#include <Python.h>
-
-#include <pthread.h>
-#include <stdio.h>
-#include <time.h>
-#include <unistd.h>
-#include <sys/time.h>
-#include <sched.h>
-
-#include <vector>
-#include <map>
-#include <cmath>
-
-#include <csound/csound.h>
-#include <alsa/asoundlib.h>
-
-static double pytime(const struct timeval * tv)
-{
- struct timeval t;
- if (!tv)
- {
- tv = &t;
- gettimeofday(&t, NULL);
- }
- return (double) tv->tv_sec + (double) tv->tv_usec / 1000000.0;
-}
-#include "log.cpp"
-#include "audio.cpp"
-
-#define FLOAT_TO_SHORT(in,out) __asm__ __volatile__ ("fistps %0" : "=m" (out) : "t" (in) : "st") ;
-
-int VERBOSE = 3;
-FILE * _debug = NULL;
-struct TamTamSound;
-struct Music;
-TamTamSound * g_tt = NULL;
-Music * g_music = NULL;
-static log_t * g_log = NULL;
-const int STEP_eventMax = 16; //this is the most events that will be queued by a loop per step()
-
-/**
- * Event is the type of event that Clooper puts in the loop buffer.
- * It corresponds to a line of csound that starts with an 'i'
- */
-struct Event
-{
- char type; ///< if this event were listed in a csound file, the line would begin with this letter
- int onset; ///< the onset time of this event (its temporal position)
- bool time_in_ticks; ///< if true, then some parameters will be updated according to the tempo
- bool active; ///< if true, then event() will actually do something
- MYFLT prev_secs_per_tick; ///< normally used for ____, sometimes set to -1 to force recalculation of param[] entries
- MYFLT duration, attack, decay;///< canonical values of some tempo-dependent parameters
- std::vector<MYFLT> param; ///< parameter buffer for csound
-
- Event(char type, MYFLT * p, int param_count, bool in_ticks, bool active)
- : type(type), onset(0), time_in_ticks(in_ticks), active(active), param(param_count)
- {
- assert(param_count >= 4);
- onset = (int) p[1];
- duration = p[2];
- attack = param_count > 8 ? p[8]: 0.0; //attack
- decay = param_count > 9 ? p[9]: 0.0; //decay
- prev_secs_per_tick = -1.0;
- for (int i = 0; i < param_count; ++i) param[i] = p[i];
-
- param[1] = 0.0; //onset
- }
- /*
- bool operator<(const Event &e) const
- {
- return onset < e.onset;
- }
- */
- void ev_print(FILE *f)
- {
- fprintf(f, "INFO: scoreEvent %c ", type);
- for (size_t i = 0; i < param.size(); ++i) fprintf(f, "%lf ", param[i]);
- fprintf(f, "[%s]\n", active ? "active": "inactive");
- }
- /**
- * Update the idx'th param value to have a certain value.
- *
- * Certain of the parameters are linked in strange hack-y ways, as defined by
- * the constructor, and update() (which should be consistent with one another!)
- *
- * These events are for use with the file: TamTam/Resources/univorc.csd.
- * So that file defines how the parameters will be interpreted by csound.
- */
- void update(int idx, MYFLT val)
- {
- if ( (unsigned)idx >= param.size())
- {
- if (_debug && (VERBOSE > 0)) fprintf(_debug, "ERROR: updateEvent request for too-high parameter %i\n", idx);
- return;
- }
- if (time_in_ticks)
- {
- switch(idx)
- {
- case 1: onset = (int) val; break;
- case 2: duration = val; break;
- case 8: attack = val; break;
- case 9: decay = val; break;
- default: param[idx] = val; break;
- }
- prev_secs_per_tick = -1.0; //force recalculation
- }
- else
- {
- param[idx] = val;
- }
- }
- /**
- * An Event instance can be in an active or inactive state. If an Event instance
- * is active, then event() will call a corresponding csoundScoreEvent(). If an
- * Event instance is inactive, then event() is a noop.
- */
- void activate_cmd(int cmd)
- {
- switch(cmd)
- {
- case 0: active = false; break;
- case 1: active = true; break;
- case 2: active = !active; break;
- }
- }
-
- /**
- * Iff this instance is active, this call generates a csound event.
- * Parameters are passed directly as a buffer of floats. If secs_per_tick
- * != prev_secs_per_tick (possibly because prev_secs_per_tick was set to -1
- * by update() ) then this call will do some floating point ops to
- * recalculate the parameter buffer.
- */
- void event(CSOUND * csound, MYFLT secs_per_tick)
- {
- if (!active) return;
-
- if (time_in_ticks && (secs_per_tick != prev_secs_per_tick))
- {
- param[2] = duration * secs_per_tick;
- if (param.size() > 8) param[8] = std::max(0.002f, attack * param[2]);
- if (param.size() > 9) param[9] = std::max(0.002f, decay * param[2]);
- prev_secs_per_tick = secs_per_tick;
- if (_debug && (VERBOSE > 2)) fprintf(_debug, "setting duration to %f\n", param[5]);
- }
- csoundScoreEvent(csound, type, &param[0], param.size());
- }
-};
-
-/**
- *
- * Loop is a repeat-able loop of Event instances.
- * */
-struct Loop
-{
- typedef int onset_t;
- typedef int id_t;
- typedef std::pair<onset_t, Event *> pair_t;
- typedef std::multimap<onset_t, Event *>::iterator iter_t;
- typedef std::map<id_t, iter_t>::iterator idmap_t;
-
- int tick_prev;
- int tickMax;
- MYFLT rtick;
-
- // a container of all events, sorted by onset time
- // used for efficient playback
- std::multimap<onset_t, Event *> ev;
- // the playback head
- std::multimap<onset_t, Event *>::iterator ev_pos;
- // a container of pointers into ev, indexed by note id
- // used for deleting, updating notes
- std::map<id_t, iter_t> idmap;
- int steps;
- int playing; //true means that step() works, else step() is no-op
-
- Loop() : tick_prev(0), tickMax(1), rtick(0.0), ev(), ev_pos(ev.end()), steps(0), playing(0)
- {
- }
- ~Loop()
- {
- //TODO: send these events to a recycling queue, don't erase them
- for (iter_t i = ev.begin(); i != ev.end(); ++i)
- {
- delete i->second;
- }
- }
- void deactivateAll()
- {
- for (iter_t i = ev.begin(); i != ev.end(); ++i)
- {
- i->second->activate_cmd(0);
- }
- }
- MYFLT getTickf()
- {
- return fmod(rtick, (MYFLT)tickMax);
- }
- void setNumTicks(int nticks)
- {
- tickMax = nticks;
- MYFLT fnticks = nticks;
- if (rtick > fnticks)
- {
- rtick = fmodf(rtick, fnticks);
- }
- }
- void setTickf(float t)
- {
- rtick = fmodf(t, (MYFLT) tickMax);
- ev_pos = ev.lower_bound( (int) rtick );
- }
- /** advance in play loop by rtick_inc ticks, possibly generate some
- * csoundScoreEvent calls.
- */
- void step(MYFLT rtick_inc, MYFLT secs_per_tick , CSOUND * csound)
- {
- if (!playing) return;
- rtick += rtick_inc;
- int tick = (int)rtick % tickMax;
- if (tick == tick_prev) return;
-
- int events = 0;
- int loop0 = 0;
- int loop1 = 0;
- if (!ev.empty())
- {
- if (steps && (tick < tick_prev)) // should be true only after the loop wraps (not after insert)
- {
- while (ev_pos != ev.end())
- {
- if (_debug && (VERBOSE > 3)) ev_pos->second->ev_print(_debug);
- if (events < STEP_eventMax) ev_pos->second->event(csound, secs_per_tick);
- ++ev_pos;
- ++events;
- ++loop0;
- }
- ev_pos = ev.begin();
- }
- while ((ev_pos != ev.end()) && (tick >= ev_pos->first))
- {
- if (_debug && (VERBOSE > 3)) ev_pos->second->ev_print(_debug);
- if (events < STEP_eventMax) ev_pos->second->event(csound, secs_per_tick);
- ++ev_pos;
- ++events;
- ++loop1;
- }
- }
- tick_prev = tick;
- if (_debug && (VERBOSE>1) && (events >= STEP_eventMax)) fprintf(_debug, "WARNING: %i/%i events at once (%i, %i)\n", events, (int)ev.size(),loop0,loop1);
- ++steps;
- }
- void addEvent(int id, char type, MYFLT * p, int np, bool in_ticks, bool active)
- {
- Event * e = new Event(type, p, np, in_ticks, active);
-
- idmap_t id_iter = idmap.find(id);
- if (id_iter == idmap.end())
- {
- //this is a new id
- iter_t e_iter = ev.insert(pair_t(e->onset, e));
-
- //TODO: optimize by thinking about whether to do ev_pos = e_iter
- ev_pos = ev.upper_bound( tick_prev );
- idmap[id] = e_iter;
- }
- else
- {
- g_log->printf(1, "%s duplicate note %i\n", __FUNCTION__, id);
- }
- }
- void delEvent(int id)
- {
- idmap_t id_iter = idmap.find(id);
- if (id_iter != idmap.end())
- {
- iter_t e_iter = id_iter->second;//idmap[id];
- if (e_iter == ev_pos) ++ev_pos;
-
- delete e_iter->second;
- ev.erase(e_iter);
- idmap.erase(id_iter);
- }
- else
- {
- g_log->printf( 1, "%s unknown note %i\n", __FUNCTION__, id);
- }
- }
- void updateEvent(int id, int idx, float val, int activate_cmd)
- {
- idmap_t id_iter = idmap.find(id);
- if (id_iter != idmap.end())
- {
- //this is a new id
- iter_t e_iter = id_iter->second;
- Event * e = e_iter->second;
- int onset = e->onset;
- e->update(idx, val);
- e->activate_cmd(activate_cmd);
- if (onset != e->onset)
- {
- ev.erase(e_iter);
-
- e_iter = ev.insert(pair_t(e->onset, e));
-
- //TODO: optimize by thinking about whether to do ev_pos = e_iter
- ev_pos = ev.upper_bound( tick_prev );
- idmap[id] = e_iter;
- }
- }
- else
- {
- g_log->printf(1, "%s unknown note %i\n", __FUNCTION__, id);
- }
- }
- void reset()
- {
- steps = 0;
- }
- void setPlaying(int tf)
- {
- playing = tf;
- }
-};
-
-/** management of loops */
-struct Music
-{
- typedef int loopIdx_t;
- typedef std::map<int, Loop * > eventMap_t;
-
- eventMap_t loop;
- int loop_nextIdx;
- void * mutex; //modification and playing of loops cannot be interwoven
-
- Music() :
- loop(),
- loop_nextIdx(0),
- mutex(csoundCreateMutex(0))
- {
- }
- ~Music()
- {
- for (eventMap_t::iterator i = loop.begin(); i != loop.end(); ++i)
- {
- delete i->second;
- }
- csoundDestroyMutex(mutex);
- }
-
- void step(MYFLT amt, MYFLT secs_per_tick, CSOUND * csound)
- {
- csoundLockMutex(mutex);
- for (eventMap_t::iterator i = loop.begin(); i != loop.end(); ++i)
- {
- i->second->step(amt, secs_per_tick, csound);
- }
- csoundUnlockMutex(mutex);
- }
-
- /** allocate a new loop, and return its index */
- loopIdx_t alloc()
- {
- csoundLockMutex(mutex);
- //find a loop_nextIdx that isn't in loop map already
- while ( loop.find( loop_nextIdx) != loop.end()) ++loop_nextIdx;
- loop[loop_nextIdx] = new Loop();
- csoundUnlockMutex(mutex);
- return loop_nextIdx;
- }
- /** de-allocate a loop */
- void destroy(loopIdx_t loopIdx)
- {
- if (loop.find(loopIdx) != loop.end())
- {
- csoundLockMutex(mutex);
- //TODO: save the note events to a cache for recycling
- delete loop[loopIdx];
- loop.erase(loopIdx);
- csoundUnlockMutex(mutex);
- }
- else
- {
- g_log->printf(1, "%s() called on non-existant loop %i\n", __FUNCTION__ , loopIdx);
- }
- }
- /** set the playing flag of the given loop */
- void playing(loopIdx_t loopIdx, int tf)
- {
- if (loop.find(loopIdx) != loop.end())
- {
- csoundLockMutex(mutex);
- loop[loopIdx]->setPlaying(tf);
- csoundUnlockMutex(mutex);
- }
- else
- {
- g_log->printf(1, "%s() called on non-existant loop %i\n", __FUNCTION__ , loopIdx);
- }
- }
- /** set the playing flag of the given loop */
- void addEvent(loopIdx_t loopIdx, int eventId, char type, MYFLT * p, int np, bool in_ticks, bool active)
- {
- if (loop.find(loopIdx) != loop.end())
- {
- csoundLockMutex(mutex);
- loop[loopIdx]->addEvent(eventId, type, p, np, in_ticks, active);
- csoundUnlockMutex(mutex);
- }
- else
- {
- g_log->printf(1, "%s() called on non-existant loop %i\n", __FUNCTION__ , loopIdx);
- }
- }
- void delEvent(loopIdx_t loopIdx, int eventId)
- {
- if (loop.find(loopIdx) != loop.end())
- {
- csoundLockMutex(mutex);
- loop[loopIdx]->delEvent(eventId);
- csoundUnlockMutex(mutex);
- }
- else
- {
- g_log->printf(1, "%s() called on non-existant loop %i\n", __FUNCTION__ , loopIdx);
- }
- }
- void updateEvent(loopIdx_t loopIdx, int eventId, int pIdx, float pVal, int activate_cmd)
- {
- if (loop.find(loopIdx) != loop.end())
- {
- csoundLockMutex(mutex);
- loop[loopIdx]->updateEvent(eventId, pIdx, pVal, activate_cmd);
- csoundUnlockMutex(mutex);
- }
- else
- {
- g_log->printf(1, "%s() called on non-existant loop %i\n", __FUNCTION__ , loopIdx);
- }
- }
- MYFLT getTickf(loopIdx_t loopIdx)
- {
- if (loop.find(loopIdx) != loop.end())
- {
- return loop[loopIdx]->getTickf();
- }
- else
- {
- g_log->printf(1, "%s() called on non-existant loop %i\n", __FUNCTION__ , loopIdx);
- return 0.0;
- }
- }
- void setTickf(loopIdx_t loopIdx, MYFLT tickf)
- {
- if (loop.find(loopIdx) != loop.end())
- {
- loop[loopIdx]->setTickf(tickf);
- }
- else
- {
- g_log->printf(1, "%s() called on non-existant loop %i\n", __FUNCTION__ , loopIdx);
- }
- }
- void setNumTicks(loopIdx_t loopIdx, int numTicks)
- {
- if (loop.find(loopIdx) != loop.end())
- {
- loop[loopIdx]->setNumTicks(numTicks);
- }
- else
- {
- g_log->printf(1, "%s() called on non-existant loop %i\n", __FUNCTION__ , loopIdx);
- }
- }
- void deactivateAll(loopIdx_t loopIdx)
- {
- if (loop.find(loopIdx) != loop.end())
- {
- loop[loopIdx]->deactivateAll();
- }
- else
- {
- g_log->printf(1, "%s() called on non-existant loop %i\n", __FUNCTION__ , loopIdx);
- }
- }
-
-};
-
-/**
- * The main object of control in the Clooper plugin.
- *
- * This guy controls the sound rendering thread, loads and unloads ALSA,
- * maintains a csound instance, and maintains a subset of notes from the
- * currently-loaded TamTam.
- */
-struct TamTamSound
-{
- /** the id of an running sound-rendering thread, or NULL */
- void * ThreadID;
- /** a flag to tell the thread to continue, or break */
- enum {CONTINUE, STOP} PERF_STATUS;
- /** our csound object, NULL iff there was a problem creating it */
- CSOUND * csound;
- /** our note sources */
- Music music;
-
- MYFLT secs_per_tick;
- MYFLT ticks_per_period;
- MYFLT tick_adjustment; //the default time increment in thread_fn
- MYFLT tick_total;
-
- /** the upsampling ratio from csound */
- unsigned int csound_ksmps;
- snd_pcm_uframes_t csound_frame_rate;
- snd_pcm_uframes_t csound_period_size;
- snd_pcm_uframes_t period0;
- unsigned int period_per_buffer; //should be 2
- int up_ratio; //if the hardware only supports a small integer multiple of our effective samplerate, do a real-time conversion
-
- log_t * ll;
- SystemStuff * sys_stuff;
-
- TamTamSound(log_t * ll, char * orc, snd_pcm_uframes_t period0, unsigned int ppb, int ksmps, int framerate )
- : ThreadID(NULL), PERF_STATUS(STOP), csound(NULL),
- music(),
- ticks_per_period(0.0),
- tick_adjustment(0.0),
- tick_total(0.0),
- csound_ksmps(ksmps), //must agree with the orchestra file
- csound_frame_rate(framerate), //must agree with the orchestra file
- period0(period0),
- period_per_buffer(ppb),
- up_ratio(1),
- ll( ll ),
- sys_stuff(NULL)
- {
- sys_stuff = new SystemStuff(ll);
- if (0 > sys_stuff->open(csound_frame_rate, 4, period0, period_per_buffer))
- {
- return;
- }
- sys_stuff->close(0);
- up_ratio = sys_stuff->rate / csound_frame_rate;
- csound_period_size = (sys_stuff->period_size % up_ratio == 0)
- ? sys_stuff->period_size / up_ratio
- : csound_ksmps * 4;
-
- csound = csoundCreate(NULL);
- int argc=3;
- const char **argv = (const char**)malloc(argc*sizeof(char*));
- argv[0] = "csound";
- argv[1] = "-m0";
- argv[2] = orc;
-
- ll->printf(1, "loading csound orchestra file %s\n", orc);
- //csoundInitialize(&argc, &argv, 0);
- csoundPreCompile(csound);
- csoundSetHostImplementedAudioIO(csound, 1, csound_period_size);
- int result = csoundCompile(csound, argc, (char**)argv);
- if (result)
- {
- csound = NULL;
- ll->printf( "ERROR: csoundCompile of orchestra %s failed with code %i\n", orc, result);
- }
- free(argv);
- setTickDuration(0.05);
- }
- ~TamTamSound()
- {
- if (csound)
- {
- stop();
- ll->printf(2, "Going for csoundDestroy\n");
- csoundDestroy(csound);
- }
- ll->printf(2, "TamTamSound destroyed\n");
- if (sys_stuff) delete sys_stuff;
- delete ll;
- }
- bool good()
- {
- return csound != NULL;
- }
-
- uintptr_t thread_fn()
- {
- assert(csound);
-
- const int nchannels = 2;
- int nloops = 0;
- long int csound_nsamples = csoundGetOutputBufferSize(csound);
- long int csound_nframes = csound_nsamples / nchannels;
-
- ll->printf(2, "INFO: nsamples = %li nframes = %li\n", csound_nsamples, csound_nframes);
-
- if (0 > sys_stuff->open(csound_frame_rate, 4, period0, period_per_buffer))
- {
- ll->printf( "ERROR: failed to open alsa device, thread abort\n");
- return 1;
- }
-
- assert(up_ratio == (signed)(sys_stuff->rate / csound_frame_rate));
-
- bool do_upsample = (signed)sys_stuff->period_size != csound_nframes;
- short *upbuf = new short[ sys_stuff->period_size * nchannels ];
- int cbuf_pos = csound_nframes; // trigger a call to csoundPerformBuffer immediately
- float *cbuf = NULL;
- int up_pos = 0;
- int ratio_pos = 0;
-
- tick_total = 0.0f;
-
- while (PERF_STATUS == CONTINUE)
- {
- if ( do_upsample ) //fill one period of audio buffer data by 0 or more calls to csound
- {
- up_pos = 0;
- int messed = 0;
- short cursample[2]={0,0};
- while(!messed)
- {
- if (cbuf_pos == csound_nframes)
- {
- cbuf_pos = 0;
- if (csoundPerformBuffer(csound)) { messed = 1;break;}
- cbuf = csoundGetOutputBuffer(csound);
- cursample[0] = (signed short int) (cbuf[cbuf_pos*2+0] * (1<<15));
- cursample[1] = (signed short int) (cbuf[cbuf_pos*2+1] * (1<<15));
-
-/*
- cbuf[cbuf_pos*2+0] *= (float) ((1<<14));
- cbuf[cbuf_pos*2+1] *= (float) ((1<<14));
- FLOAT_TO_SHORT( cbuf[cbuf_pos*2+0], cursample[0]);
- FLOAT_TO_SHORT( cbuf[cbuf_pos*2+1], cursample[1]);
-*/
- }
- upbuf[2*up_pos+0] = cursample[0];
- upbuf[2*up_pos+1] = cursample[1];
- if (++ratio_pos == up_ratio)
- {
- ratio_pos = 0;
- ++cbuf_pos;
- cursample[0] = (signed short int) (cbuf[cbuf_pos*2+0] * (1<<15));
- cursample[1] = (signed short int) (cbuf[cbuf_pos*2+1] * (1<<15));
- /*cbuf[cbuf_pos*2+0] *= (float) ((1<<14));
- cbuf[cbuf_pos*2+1] *= (float) ((1<<14));
- FLOAT_TO_SHORT( cbuf[cbuf_pos*2+0], cursample[0]);
- FLOAT_TO_SHORT( cbuf[cbuf_pos*2+1], cursample[1]);
-*/
- }
-
- if (++up_pos == (signed)sys_stuff->period_size) break;
- }
- if (messed || (up_pos != (signed)sys_stuff->period_size)) break;
-
- if (0 > sys_stuff->writebuf(sys_stuff->period_size, upbuf)) break;
- }
- else //fill one period of audio directly from csound
- {
- if (csoundPerformBuffer(csound)) break;
- cbuf = csoundGetOutputBuffer(csound);
- for (int i = 0; i < csound_nframes * nchannels; ++i)
- {
- cbuf[i] *= (float) ((1<<15)-100.0f);
- FLOAT_TO_SHORT( cbuf[i], upbuf[i]);
- }
- if (0 > sys_stuff->writebuf(csound_nframes,upbuf)) break;
- }
-
- if (tick_adjustment > - ticks_per_period)
- {
- MYFLT tick_inc = ticks_per_period + tick_adjustment;
- music.step( tick_inc, secs_per_tick, csound);
- tick_adjustment = 0.0;
- tick_total += tick_inc;
- }
- else
- {
- tick_adjustment += ticks_per_period;
- }
- ++nloops;
- }
-
- sys_stuff->close(1);
- delete [] upbuf;
- ll->printf(2, "INFO: performance thread returning 0\n");
- return 0;
- }
- static uintptr_t csThread(void *clientData)
- {
- return ((TamTamSound*)clientData)->thread_fn();
- }
- int start(int )
- {
- if (!csound) {
- ll->printf(1, "skipping %s, csound==NULL\n", __FUNCTION__);
- return 1;
- }
- if (!ThreadID)
- {
- PERF_STATUS = CONTINUE;
- ThreadID = csoundCreateThread(csThread, (void*)this);
- ll->printf( "INFO(%s:%i) aclient launching performance thread (%p)\n", __FILE__, __LINE__, ThreadID );
- return 0;
- }
- ll->printf( "INFO(%s:%i) skipping duplicate request to launch a thread\n", __FILE__, __LINE__ );
- return 1;
- }
- int stop()
- {
- if (!csound) {
- ll->printf(1, "skipping %s, csound==NULL\n", __FUNCTION__);
- return 1;
- }
- if (ThreadID)
- {
- PERF_STATUS = STOP;
- ll->printf( "INFO(%s:%i) aclient joining performance thread\n", __FILE__, __LINE__ );
- uintptr_t rval = csoundJoinThread(ThreadID);
- ll->printf( "INFO(%s:%i) ... joined\n", __FILE__, __LINE__ );
- if (rval) ll->printf( "WARNING: thread returned %zu\n", rval);
- ThreadID = NULL;
- return 0;
- }
- return 1;
- }
-
- /** pass an array event straight through to csound. only works if perf. thread is running */
- void scoreEvent(char type, MYFLT * p, int np)
- {
- if (!csound) {
- ll->printf(1, "skipping %s, csound==NULL\n", __FUNCTION__);
- return;
- }
- if (!ThreadID)
- {
- if (_debug && (VERBOSE > 1)) fprintf(_debug, "skipping %s, ThreadID==NULL\n", __FUNCTION__);
- return ;
- }
- if (_debug && (VERBOSE > 2))
- {
- fprintf(_debug, "INFO: scoreEvent %c ", type);
- for (int i = 0; i < np; ++i) fprintf(_debug, "%lf ", p[i]);
- fprintf(_debug, "\n");
- }
- csoundScoreEvent(csound, type, p, np);
- }
- /** pass a string event straight through to csound. only works if perf. thread is running */
- void inputMessage(const char * msg)
- {
- if (!csound) {
- ll->printf(1, "skipping %s, csound==NULL\n", __FUNCTION__);
- return;
- }
- if (!ThreadID)
- {
- if (_debug && (VERBOSE > 1)) fprintf(_debug, "skipping %s, ThreadID==NULL\n", __FUNCTION__);
- return ;
- }
- if (_debug &&(VERBOSE > 3)) fprintf(_debug, "%s\n", msg);
- csoundInputMessage(csound, msg);
- }
- /** pass a setChannel command through to csound. only works if perf. thread is running */
- void setChannel(const char * name, MYFLT vol)
- {
- if (!csound) {
- ll->printf(1, "skipping %s, csound==NULL\n", __FUNCTION__);
- return;
- }
- if (!ThreadID)
- {
- if (_debug && (VERBOSE > 1)) fprintf(_debug, "skipping %s, ThreadID==NULL\n", __FUNCTION__);
- return ;
- }
- MYFLT *p;
- if (!(csoundGetChannelPtr(csound, &p, name, CSOUND_CONTROL_CHANNEL | CSOUND_INPUT_CHANNEL)))
- *p = (MYFLT) vol;
- else
- {
- if (_debug && (VERBOSE >0)) fprintf(_debug, "ERROR: failed to set channel: %s\n", name);
- }
- }
-
- /** adjust the global tick value by this much */
- void adjustTick(MYFLT dtick)
- {
- tick_adjustment += dtick;
- }
- void setTickDuration(MYFLT d )
- {
- secs_per_tick = d;
- ticks_per_period = csound_period_size / ( secs_per_tick * csound_frame_rate);
- ll->printf( 3, "INFO: duration %lf := ticks_per_period %lf\n", secs_per_tick , ticks_per_period);
- }
- MYFLT getTickf()
- {
- return tick_total + tick_adjustment;
- }
-};
-
-
-static void cleanup(void)
-{
- if (g_tt)
- {
- delete g_tt;
- g_tt = NULL;
- }
-}
-
-#define DECL(s) static PyObject * s(PyObject * self, PyObject *args)
-#define RetNone Py_INCREF(Py_None); return Py_None;
-
-//call once at end
-DECL(sc_destroy)
-{
- if (!PyArg_ParseTuple(args, ""))
- {
- return NULL;
- }
- if (g_tt)
- {
- delete g_tt;
- g_tt = NULL;
- if (_debug) fclose(_debug);
- }
- RetNone;
-}
-//call once at startup, should return 0
-DECL(sc_initialize) //(char * csd)
-{
- char * str;
- char * log_file;
- int period, ppb, ksmps, framerate;
- if (!PyArg_ParseTuple(args, "ssiiiii", &str, &log_file, &period, &ppb, &VERBOSE, &ksmps, &framerate ))
- {
- return NULL;
- }
- if ( log_file[0] )
- {
- _debug = fopen(log_file,"w");
- if (_debug==NULL)
- {
- fprintf(stderr, "WARNING: fopen(%s) failed, logging to stderr\n", log_file);
- _debug = stderr;
- }
- }
- else
- {
- _debug = NULL;
- fprintf(stderr, "Logging disabled on purpose\n");
- }
- g_log = new log_t(_debug, VERBOSE);
- g_tt = new TamTamSound(g_log, str, period, ppb, ksmps, framerate);
- g_music = & g_tt->music;
- atexit(&cleanup);
- if (g_tt->good())
- return Py_BuildValue("i", 0);
- else
- return Py_BuildValue("i", -1);
-}
-//compile the score, connect to device, start a sound rendering thread
-DECL(sc_start)
-{
- int ppb;
- if (!PyArg_ParseTuple(args, "i", &ppb ))
- {
- return NULL;
- }
- return Py_BuildValue("i", g_tt->start(ppb));
-}
-//stop csound rendering thread, disconnect from sound device, clear tables.
-DECL(sc_stop)
-{
- if (!PyArg_ParseTuple(args, "" ))
- {
- return NULL;
- }
- return Py_BuildValue("i", g_tt->stop());
-}
-DECL(sc_scoreEvent) //(char type, farray param)
-{
- char ev_type;
- PyObject *o;
- if (!PyArg_ParseTuple(args, "cO", &ev_type, &o ))
- {
- return NULL;
- }
- if (o->ob_type
- && o->ob_type->tp_as_buffer
- && (1 == o->ob_type->tp_as_buffer->bf_getsegcount(o, NULL)))
- {
- if (o->ob_type->tp_as_buffer->bf_getreadbuffer)
- {
- void * ptr;
- size_t len;
- len = o->ob_type->tp_as_buffer->bf_getreadbuffer(o, 0, &ptr);
- float * fptr = (float*)ptr;
- size_t flen = len / sizeof(float);
- g_tt->scoreEvent(ev_type, fptr, flen);
-
- Py_INCREF(Py_None);
- return Py_None;
- }
- else
- {
- assert(!"asdf");
- }
- }
- assert(!"not reached");
- return NULL;
-}
-DECL (sc_inputMessage) //(const char *msg)
-{
- char * msg;
- if (!PyArg_ParseTuple(args, "s", &msg ))
- {
- return NULL;
- }
- g_tt->inputMessage(msg);
- RetNone;
-}
-DECL(sc_setChannel) //(string name, float value)
-{
- const char * str;
- float v;
- if (!PyArg_ParseTuple(args, "sf", &str,&v))
- {
- return NULL;
- }
- g_tt->setChannel(str,v);
- Py_INCREF(Py_None);
- return Py_None;
-}
-DECL(sc_getTickf) // () -> float
-{
- if (!PyArg_ParseTuple(args, ""))
- {
- return NULL;
- }
- return Py_BuildValue("f", g_tt->getTickf());
-}
-DECL(sc_adjustTick) // (MYFLT ntick)
-{
- float spt;
- if (!PyArg_ParseTuple(args, "f", &spt ))
- {
- return NULL;
- }
- g_tt->adjustTick(spt);
- RetNone;
-}
-DECL(sc_setTickDuration) // (MYFLT secs_per_tick)
-{
- float spt;
- if (!PyArg_ParseTuple(args, "f", &spt ))
- {
- return NULL;
- }
- g_tt->setTickDuration(spt);
- RetNone;
-}
-DECL(sc_loop_new) // () -> int
-{
- if (!PyArg_ParseTuple(args, "" )) return NULL;
- return Py_BuildValue("i", g_music->alloc());
-}
-DECL(sc_loop_delete) // (int loopIdx)
-{
- int loopIdx;
- if (!PyArg_ParseTuple(args, "i", &loopIdx )) return NULL;
- g_music->destroy(loopIdx);
- RetNone;
-}
-DECL(sc_loop_getTickf) // (int loopIdx) -> float
-{
- int idx;
- if (!PyArg_ParseTuple(args, "i", &idx ))
- {
- return NULL;
- }
- return Py_BuildValue("f", g_music->getTickf(idx));
-}
-DECL(sc_loop_setNumTicks) //(int loopIdx, int nticks)
-{
- int loopIdx;
- int nticks;
- if (!PyArg_ParseTuple(args, "ii", &loopIdx, &nticks )) return NULL;
- g_music->setNumTicks(loopIdx, nticks);
- RetNone;
-}
-DECL(sc_loop_setTickf) // (int loopIdx, float pos)
-{
- int loopIdx;
- MYFLT pos;
- if (!PyArg_ParseTuple(args, "if", &loopIdx, &pos )) return NULL;
- g_music->setTickf(loopIdx, pos);
- RetNone;
-}
-DECL(sc_loop_addScoreEvent) // (int loopIdx, int id, int duration_in_ticks, char type, farray param)
-{
- int loopIdx, qid, inticks, active;
- char ev_type;
- PyObject *o;
- if (!PyArg_ParseTuple(args, "iiiicO", &loopIdx, &qid, &inticks, &active, &ev_type, &o )) return NULL;
-
- if (o->ob_type
- && o->ob_type->tp_as_buffer
- && (1 == o->ob_type->tp_as_buffer->bf_getsegcount(o, NULL)))
- {
- if (o->ob_type->tp_as_buffer->bf_getreadbuffer)
- {
- void * ptr;
- size_t len;
- len = o->ob_type->tp_as_buffer->bf_getreadbuffer(o, 0, &ptr);
- float * fptr = (float*)ptr;
- size_t flen = len / sizeof(float);
-
- g_music->addEvent(loopIdx, qid, ev_type, fptr, flen, inticks, active);
-
- RetNone;
- }
- else
- {
- assert(!"asdf");
- }
- }
- assert(!"not reached");
- return NULL;
-}
-DECL(sc_loop_delScoreEvent) // (int loopIdx, int id)
-{
- int loopIdx, id;
- if (!PyArg_ParseTuple(args, "ii", &loopIdx, &id ))
- {
- return NULL;
- }
- g_music->delEvent(loopIdx, id);
- RetNone;
-}
-DECL(sc_loop_updateEvent) // (int loopIdx, int id, int paramIdx, float paramVal, int activate_cmd))
-{
- int loopIdx, eventId;
- int idx;
- float val;
- int cmd;
- if (!PyArg_ParseTuple(args, "iiifi", &loopIdx, &eventId, &idx, &val, &cmd)) return NULL;
- g_music->updateEvent(loopIdx, eventId, idx, val, cmd);
- RetNone;
-}
-DECL(sc_loop_deactivate_all) // (int id)
-{
- int loopIdx;
- if (!PyArg_ParseTuple(args, "i", &loopIdx)) return NULL;
- g_music->deactivateAll(loopIdx);
- RetNone;
-}
-DECL(sc_loop_playing) // (int loopIdx, int tf)
-{
- int loopIdx, tf;
- if (!PyArg_ParseTuple(args, "ii", &loopIdx, &tf )) return NULL;
- g_music->playing(loopIdx, tf);
- RetNone;
-}
-
-#define MDECL(s) {""#s, s, METH_VARARGS, "documentation of "#s"... nothing!"}
-static PyMethodDef SpamMethods[] = {
- MDECL(sc_destroy),
- MDECL(sc_initialize),
- MDECL(sc_start),
- MDECL(sc_stop),
-
- MDECL(sc_setChannel),
- MDECL(sc_inputMessage),
- MDECL(sc_scoreEvent),
-
- MDECL(sc_getTickf),
- MDECL(sc_adjustTick),
- MDECL(sc_setTickDuration),
-
- MDECL(sc_loop_new),
- MDECL(sc_loop_delete),
- MDECL(sc_loop_getTickf),
- MDECL(sc_loop_setTickf),
- MDECL(sc_loop_setNumTicks),
- MDECL(sc_loop_delScoreEvent),
- MDECL(sc_loop_addScoreEvent),
- MDECL(sc_loop_updateEvent),
- MDECL(sc_loop_deactivate_all),
- MDECL(sc_loop_playing),
- {NULL, NULL, 0, NULL} /*end of list */
-};
-
-PyMODINIT_FUNC
-initaclient(void)
-{
- (void) Py_InitModule("aclient", SpamMethods);
-}
-
-
diff --git a/TamTamSynthLab.activity/common/Util/Clooper/audio.cpp b/TamTamSynthLab.activity/common/Util/Clooper/audio.cpp
deleted file mode 100644
index 6f5a271..0000000
--- a/TamTamSynthLab.activity/common/Util/Clooper/audio.cpp
+++ /dev/null
@@ -1,237 +0,0 @@
-#ifndef AUDIO_HXX
-#define AUDIO_HXX
-
-/*
- * Latency test program
- *
- * Author: Jaroslav Kysela <perex@suse.cz>
- *
- * This small demo program can be used for measuring latency between
- * capture and playback. This latency is measured from driver (diff when
- * playback and capture was started). Scheduler is set to SCHED_RR.
- *
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sched.h>
-#include <errno.h>
-#include <getopt.h>
-#include <sys/time.h>
-#include <math.h>
-
-#include <string>
-#include <alsa/asoundlib.h>
-
-#define ERROR_HERE ll->printf("ERROR_HERE: %s %i\n", __FILE__, __LINE__)
-
-struct SystemStuff
-{
- log_t * ll;
-
- snd_pcm_t *phandle;
- snd_pcm_uframes_t period_size;
- unsigned int rate;
- const snd_pcm_format_t sample_format;
- SystemStuff(log_t * ll) : ll(ll), phandle(NULL), period_size(0), rate(0), sample_format(SND_PCM_FORMAT_S16)
- {
- }
- ~SystemStuff()
- {
- if (phandle) close(0);
- }
-
- void setscheduler(void)
- {
- struct sched_param sched_param;
-
- if (sched_getparam(0, &sched_param) < 0) {
- ll->printf( "Scheduler getparam failed...\n");
- return;
- }
- sched_param.sched_priority = sched_get_priority_max(SCHED_RR);
- if (!sched_setscheduler(0, SCHED_RR, &sched_param)) {
- ll->printf( "Scheduler set to Round Robin with priority %i...\n", sched_param.sched_priority);
- return;
- }
- ll->printf( "!!!Scheduler set to Round Robin with priority %i FAILED!!!\n", sched_param.sched_priority);
- }
-
- int open(unsigned int rate0, int upsample_max, snd_pcm_uframes_t period0, unsigned int p_per_buff)
- {
- snd_pcm_hw_params_t *hw;
-
- if (phandle)
- {
- ll->printf( "ERROR: open called twice! First close the sound device\n");
- return -1;
- }
-
- if ( 0 > snd_pcm_open(&phandle, "default", SND_PCM_STREAM_PLAYBACK, 0)) { ERROR_HERE; return -1; }
- if ( 0 > snd_pcm_hw_params_malloc(&hw)) { ERROR_HERE; snd_pcm_close(phandle); phandle = NULL; return -1; }
-
- //now we can be a bit flexible with the buffer size and the sample-rate...
-
- int upsample;
- for (upsample = 1; upsample < upsample_max; ++upsample)
- {
- rate = rate0 * upsample;
-
- if ( 0 > snd_pcm_hw_params_any(phandle, hw)) { ERROR_HERE; goto open_error;}
-
- //first do the compulsory steps... interleaved float, 2 channel
- if ( 0 > snd_pcm_hw_params_set_rate_resample(phandle, hw, 0)) { ERROR_HERE; goto open_error;}
- if ( 0 > snd_pcm_hw_params_test_access(phandle, hw, SND_PCM_ACCESS_RW_INTERLEAVED)){ ERROR_HERE; goto open_error;}
- if ( 0 > snd_pcm_hw_params_set_access(phandle, hw, SND_PCM_ACCESS_RW_INTERLEAVED)){ ERROR_HERE; goto open_error;}
- if ( 0 > snd_pcm_hw_params_test_format(phandle, hw, sample_format)) { ERROR_HERE; goto open_error;}
- if ( 0 > snd_pcm_hw_params_set_format(phandle, hw, sample_format)) { ERROR_HERE; goto open_error;}
- if ( 0 > snd_pcm_hw_params_set_channels(phandle, hw, 2)) { ERROR_HERE; goto open_error;}
-
- if ( snd_pcm_hw_params_set_rate_near(phandle, hw, &rate, 0))
- {
- ll->printf("test_rate failed( %i\n", rate);
- continue;
- }
- else
- {
- ll->printf(1, "success! setting rate : %i\n", rate);
-
- snd_pcm_uframes_t minb=0, maxb= 0;
- int mind=0, maxd=0;
- snd_pcm_hw_params_get_period_size_min(hw, &minb,&mind);
- snd_pcm_hw_params_get_period_size_max(hw, &maxb,&maxd);
- ll->printf(2, "FYI: period size range is [%li/%i,%li/%i]\n", minb,mind, maxb, maxd);
-
- if ((mind != 0) || (maxd == 0))
- {
- ll->printf(2, "watch out, mind and maxd non-zero... you didn't set rate_resample to 0 did you...\n");
- }
-
- if (period0 < minb)
- {
- ll->printf(1, "requested period size (%li) < min (%li), adjusting to min\n", period_size, minb);
- period_size = minb;
- }
- else if (period0 > maxb)
- {
- ll->printf(2, "requested period size (%li) < max (%li), adjusting to min\n", period_size, maxb);
- period_size = maxb;
- }
- else
- {
- period_size = period0;
- }
-
- ll->printf(1, "testing period size : %li\n", period_size);
- if ( 0 > snd_pcm_hw_params_test_period_size(phandle, hw, period_size, 0)){ ERROR_HERE; goto open_error;}
-
-
- ll->printf(1, "setting period size : %li\n", period_size);
- if ( 0 > snd_pcm_hw_params_set_period_size_near(phandle, hw, &period_size, 0)){ ERROR_HERE; goto open_error;}
-
- ll->printf(1, "setting buffer size : %i * %li = %li\n", p_per_buff, period_size, p_per_buff * period_size);
- snd_pcm_uframes_t buff_size = p_per_buff * period_size;
- if ( 0 > snd_pcm_hw_params_set_buffer_size_near(phandle, hw, &buff_size)) { ERROR_HERE; goto open_error;}
-
- break;
- }
- }
-
- if (upsample_max == upsample) { ERROR_HERE; goto open_error; }
-
- if (0 > snd_pcm_hw_params(phandle, hw)) { ERROR_HERE; goto open_error; }
-
- snd_pcm_hw_params_free (hw);
- return 0;
-
-open_error:
- snd_pcm_hw_params_free (hw);
- snd_pcm_close(phandle);
- phandle = NULL;
- return -1;
- }
- void close(int drain = 0)
- {
- if (!phandle)
- {
- ll->printf(0, "WARNING: attempt to close already-closed pcm\n");
- return;
- }
- ll->printf(1, "INFO: closing phandle device\n");
- if (drain) snd_pcm_drain(phandle);
- snd_pcm_close(phandle);
- phandle = NULL;
- }
- void prepare()
- {
- if (!phandle)
- {
- ll->printf(0, "ERROR: attempt to prepare a closed pcm\n");
- return;
- }
- if (0 > snd_pcm_prepare(phandle)) { ERROR_HERE; }
- }
- int writebuf(snd_pcm_uframes_t frame_count, short int * frame_data)
- {
- if (!phandle)
- {
- ll->printf(0, "ERROR: attempt to write a closed phandle\n");
- return -1;
- }
- int err = 0;
- while (frame_count > 0) {
- err = snd_pcm_writei (phandle, frame_data, frame_count );
- if (err == (signed)frame_count) return 0; //success
- if (err == -EAGAIN)
- continue;
- if (err < 0)
- break;
- frame_data += err * 4;
- frame_count -= err;
- }
-
- if (err >= 0)
- {
- ll->printf(0, "madness on line %s:%i\n", __FILE__, __LINE__);
- return -1;
- }
-
- const char * msg = NULL;
- snd_pcm_state_t state = snd_pcm_state(phandle);
- switch (state)
- {
- case SND_PCM_STATE_OPEN: msg = "open"; break;
- case SND_PCM_STATE_SETUP: msg = "setup"; break;
- case SND_PCM_STATE_PREPARED:msg = "prepared"; break;
- case SND_PCM_STATE_RUNNING: msg = "running"; break;
- case SND_PCM_STATE_XRUN: msg = "xrun"; break;
- case SND_PCM_STATE_DRAINING: msg = "draining"; break;
- case SND_PCM_STATE_PAUSED: msg = "paused"; break;
- case SND_PCM_STATE_SUSPENDED: msg = "suspended"; break;
- case SND_PCM_STATE_DISCONNECTED: msg = "disconnected"; break;
- }
- ll->printf(1, "WARNING: write failed (%s)\tstate = %s\ttime=%lf\n", snd_strerror (err), msg, pytime(NULL));
- if (0 > snd_pcm_recover(phandle, err, 0)) { ERROR_HERE; return err;}
- if (0 > snd_pcm_prepare(phandle)) { ERROR_HERE; return err;}
- return 1; //warning
- }
-};
-#undef ERROR_HERE
-
-#endif
diff --git a/TamTamSynthLab.activity/common/Util/Clooper/cmd_csound.cpp b/TamTamSynthLab.activity/common/Util/Clooper/cmd_csound.cpp
deleted file mode 100644
index ef94f84..0000000
--- a/TamTamSynthLab.activity/common/Util/Clooper/cmd_csound.cpp
+++ /dev/null
@@ -1,22 +0,0 @@
-
-#include <stdio.h>
-#include <csound/csound.hpp>
-
-#include "SoundClient.h"
-
-int main( int argc, char ** argv)
-{
- int userInput = 200;
- int rval = sc_initialize(argv[1]);
- sc_setMasterVolume(30.0);
-
- while ((userInput != 0) && (rval == 0))
- {
- fprintf(stderr, "Enter a pitch\n");
- scanf("%i", &userInput);
- //sc_instrumentLoad(5083, "/home/olpc/tamtam/Resources/Sounds/sitar");
- scanf("%i", &userInput);
- }
-
- return 0;
-}
diff --git a/TamTamSynthLab.activity/common/Util/Clooper/linux32_508/__init__.py b/TamTamSynthLab.activity/common/Util/Clooper/linux32_508/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/TamTamSynthLab.activity/common/Util/Clooper/linux32_508/__init__.py
+++ /dev/null
diff --git a/TamTamSynthLab.activity/common/Util/Clooper/linux32_510/__init__.py b/TamTamSynthLab.activity/common/Util/Clooper/linux32_510/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/TamTamSynthLab.activity/common/Util/Clooper/linux32_510/__init__.py
+++ /dev/null
diff --git a/TamTamSynthLab.activity/common/Util/Clooper/linux64_510/__init__.py b/TamTamSynthLab.activity/common/Util/Clooper/linux64_510/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/TamTamSynthLab.activity/common/Util/Clooper/linux64_510/__init__.py
+++ /dev/null
diff --git a/TamTamSynthLab.activity/common/Util/Clooper/linux64_511_deb/__init__.py b/TamTamSynthLab.activity/common/Util/Clooper/linux64_511_deb/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/TamTamSynthLab.activity/common/Util/Clooper/linux64_511_deb/__init__.py
+++ /dev/null
diff --git a/TamTamSynthLab.activity/common/Util/Clooper/log.cpp b/TamTamSynthLab.activity/common/Util/Clooper/log.cpp
deleted file mode 100644
index d4a8c72..0000000
--- a/TamTamSynthLab.activity/common/Util/Clooper/log.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-#ifndef LOG_HXX
-#define LOG_HXX
-
-#include <stdarg.h>
-#include <stdio.h>
-
-struct log_t
-{
- FILE * _file;
- int _level;
- int _close;
-
- log_t(const char * logpath, int level = 0) : _file(NULL), _level(level), _close(1)
- {
- _file = fopen(logpath, "w");
- if (!_file)
- {
- fprintf(stderr, "Failed to open log file for writing: %s\n", logpath);
- }
- }
- log_t(FILE * file, int level = 0): _file(file), _level(level), _close(0)
- {
- }
- ~log_t()
- {
- if (_close && _file) fclose(_file);
- }
- void printf( const char * fmt, ... ) __attribute__(( format (printf, 2,3)))
- {
- if (!_file) return;
- va_list ap;
- va_start(ap,fmt);
- ::vfprintf(_file, fmt, ap);
- va_end(ap);
- fflush(_file);
- }
- void printf( int level, const char * fmt, ... ) __attribute__(( format (printf, 3,4)))
- {
- if (level <= _level)
- {
- if (!_file) return;
- fprintf(_file, "L%i:", level);
- va_list ap;
- va_start(ap,fmt);
- ::vfprintf(_file, fmt, ap);
- va_end(ap);
- fflush(_file);
- }
- }
-};
-
-#endif
diff --git a/TamTamSynthLab.activity/common/Util/Clooper/ttest.c b/TamTamSynthLab.activity/common/Util/Clooper/ttest.c
deleted file mode 100644
index 9ff3d85..0000000
--- a/TamTamSynthLab.activity/common/Util/Clooper/ttest.c
+++ /dev/null
@@ -1,53 +0,0 @@
-
-#include <pthread.h>
-#include <stdio.h>
-#include <time.h>
-#include <unistd.h>
-#include <sys/time.h>
-
-double sleeptime = 0.0;
-int usleep(int);
-static void * threadfn(void * _arg)
-{
- double pytime(const struct timeval * tv)
- {
- return (double) tv->tv_sec + (double) tv->tv_usec / 1000000.0;
- }
- struct timeval tv0, tv1;
- double m = 0.0;
-
- int loops = 0;
-
- while (1)
- {
- gettimeofday(&tv0, 0);
- usleep( (int) (sleeptime * 1000000) );
- gettimeofday(&tv1, 0);
- double t0 = pytime(&tv0);
- double t1 = pytime(&tv1);
- if (t1 - t0 > 1.2 * sleeptime)
- {
- fprintf(stderr, "critical lagginess %lf\n", t1 - t0);
- }
- if (m < t1 - t0)
- {
- m = t1 - t0;
- fprintf(stderr, "maximum lag %lf\n", m);
- }
-
- if ( ( loops % 100 ) == 0 )
- {
- fprintf(stderr, "loop (%lf)\n", t0);
- }
- ++loops;
- }
- return NULL;
-}
-void testtimer(double st)
-{
- pthread_t pth;
- sleeptime = st;
-
- pthread_create( &pth, NULL, &threadfn, NULL );
-}
-
diff --git a/TamTamSynthLab.activity/common/Util/Clooper/ttest.h b/TamTamSynthLab.activity/common/Util/Clooper/ttest.h
deleted file mode 100644
index 111f10c..0000000
--- a/TamTamSynthLab.activity/common/Util/Clooper/ttest.h
+++ /dev/null
@@ -1,15 +0,0 @@
-#ifndef _MSL_MATH_H
-#define _MSL_MATH_H
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-void testtimer(double);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/TamTamSynthLab.activity/common/Util/Clooper/ttest.i b/TamTamSynthLab.activity/common/Util/Clooper/ttest.i
deleted file mode 100644
index 0c88add..0000000
--- a/TamTamSynthLab.activity/common/Util/Clooper/ttest.i
+++ /dev/null
@@ -1,15 +0,0 @@
-
-%module ttest
-
-%{
-#define SWIG_FILE_WITH_INIT
-#include "ttest.h"
-%}
-
-%pythoncode
-%{
-def somefn(seed, mat):
-
-%}
-
-%include "ttest.h"
diff --git a/TamTamSynthLab.activity/common/Util/Clooper/ttest.py b/TamTamSynthLab.activity/common/Util/Clooper/ttest.py
deleted file mode 100644
index 302c8f3..0000000
--- a/TamTamSynthLab.activity/common/Util/Clooper/ttest.py
+++ /dev/null
@@ -1,54 +0,0 @@
-# This file was automatically generated by SWIG (http://www.swig.org).
-# Version 1.3.31
-#
-# Don't modify this file, modify the SWIG interface instead.
-# This file is compatible with both classic and new-style classes.
-
-import _ttest
-import new
-new_instancemethod = new.instancemethod
-try:
- _swig_property = property
-except NameError:
- pass # Python < 2.2 doesn't have 'property'.
-def _swig_setattr_nondynamic(self,class_type,name,value,static=1):
- if (name == "thisown"): return self.this.own(value)
- if (name == "this"):
- if type(value).__name__ == 'PySwigObject':
- self.__dict__[name] = value
- return
- method = class_type.__swig_setmethods__.get(name,None)
- if method: return method(self,value)
- if (not static) or hasattr(self,name):
- self.__dict__[name] = value
- else:
- raise AttributeError("You cannot add attributes to %s" % self)
-
-def _swig_setattr(self,class_type,name,value):
- return _swig_setattr_nondynamic(self,class_type,name,value,0)
-
-def _swig_getattr(self,class_type,name):
- if (name == "thisown"): return self.this.own()
- method = class_type.__swig_getmethods__.get(name,None)
- if method: return method(self)
- raise AttributeError,name
-
-def _swig_repr(self):
- try: strthis = "proxy of " + self.this.__repr__()
- except: strthis = ""
- return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)
-
-import types
-try:
- _object = types.ObjectType
- _newclass = 1
-except AttributeError:
- class _object : pass
- _newclass = 0
-del types
-
-
-
-testtimer = _ttest.testtimer
-
-
diff --git a/TamTamSynthLab.activity/common/Util/Clooper/ttest_wrap.c b/TamTamSynthLab.activity/common/Util/Clooper/ttest_wrap.c
deleted file mode 100644
index a073e99..0000000
--- a/TamTamSynthLab.activity/common/Util/Clooper/ttest_wrap.c
+++ /dev/null
@@ -1,3042 +0,0 @@
-/* ----------------------------------------------------------------------------
- * This file was automatically generated by SWIG (http://www.swig.org).
- * Version 1.3.31
- *
- * This file is not intended to be easily readable and contains a number of
- * coding conventions designed to improve portability and efficiency. Do not make
- * changes to this file unless you know what you are doing--modify the SWIG
- * interface file instead.
- * ----------------------------------------------------------------------------- */
-
-#define SWIGPYTHON
-#define SWIG_PYTHON_DIRECTOR_NO_VTABLE
-/* -----------------------------------------------------------------------------
- * This section contains generic SWIG labels for method/variable
- * declarations/attributes, and other compiler dependent labels.
- * ----------------------------------------------------------------------------- */
-
-/* template workaround for compilers that cannot correctly implement the C++ standard */
-#ifndef SWIGTEMPLATEDISAMBIGUATOR
-# if defined(__SUNPRO_CC)
-# if (__SUNPRO_CC <= 0x560)
-# define SWIGTEMPLATEDISAMBIGUATOR template
-# else
-# define SWIGTEMPLATEDISAMBIGUATOR
-# endif
-# else
-# define SWIGTEMPLATEDISAMBIGUATOR
-# endif
-#endif
-
-/* inline attribute */
-#ifndef SWIGINLINE
-# if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
-# define SWIGINLINE inline
-# else
-# define SWIGINLINE
-# endif
-#endif
-
-/* attribute recognised by some compilers to avoid 'unused' warnings */
-#ifndef SWIGUNUSED
-# if defined(__GNUC__)
-# if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
-# define SWIGUNUSED __attribute__ ((__unused__))
-# else
-# define SWIGUNUSED
-# endif
-# elif defined(__ICC)
-# define SWIGUNUSED __attribute__ ((__unused__))
-# else
-# define SWIGUNUSED
-# endif
-#endif
-
-#ifndef SWIGUNUSEDPARM
-# ifdef __cplusplus
-# define SWIGUNUSEDPARM(p)
-# else
-# define SWIGUNUSEDPARM(p) p SWIGUNUSED
-# endif
-#endif
-
-/* internal SWIG method */
-#ifndef SWIGINTERN
-# define SWIGINTERN static SWIGUNUSED
-#endif
-
-/* internal inline SWIG method */
-#ifndef SWIGINTERNINLINE
-# define SWIGINTERNINLINE SWIGINTERN SWIGINLINE
-#endif
-
-/* exporting methods */
-#if (__GNUC__ >= 4) || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4)
-# ifndef GCC_HASCLASSVISIBILITY
-# define GCC_HASCLASSVISIBILITY
-# endif
-#endif
-
-#ifndef SWIGEXPORT
-# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
-# if defined(STATIC_LINKED)
-# define SWIGEXPORT
-# else
-# define SWIGEXPORT __declspec(dllexport)
-# endif
-# else
-# if defined(__GNUC__) && defined(GCC_HASCLASSVISIBILITY)
-# define SWIGEXPORT __attribute__ ((visibility("default")))
-# else
-# define SWIGEXPORT
-# endif
-# endif
-#endif
-
-/* calling conventions for Windows */
-#ifndef SWIGSTDCALL
-# if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
-# define SWIGSTDCALL __stdcall
-# else
-# define SWIGSTDCALL
-# endif
-#endif
-
-/* Deal with Microsoft's attempt at deprecating C standard runtime functions */
-#if !defined(SWIG_NO_CRT_SECURE_NO_DEPRECATE) && defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE)
-# define _CRT_SECURE_NO_DEPRECATE
-#endif
-
-
-/* Python.h has to appear first */
-#include <Python.h>
-
-/* -----------------------------------------------------------------------------
- * swigrun.swg
- *
- * This file contains generic CAPI SWIG runtime support for pointer
- * type checking.
- * ----------------------------------------------------------------------------- */
-
-/* This should only be incremented when either the layout of swig_type_info changes,
- or for whatever reason, the runtime changes incompatibly */
-#define SWIG_RUNTIME_VERSION "3"
-
-/* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */
-#ifdef SWIG_TYPE_TABLE
-# define SWIG_QUOTE_STRING(x) #x
-# define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x)
-# define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE)
-#else
-# define SWIG_TYPE_TABLE_NAME
-#endif
-
-/*
- You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for
- creating a static or dynamic library from the swig runtime code.
- In 99.9% of the cases, swig just needs to declare them as 'static'.
-
- But only do this if is strictly necessary, ie, if you have problems
- with your compiler or so.
-*/
-
-#ifndef SWIGRUNTIME
-# define SWIGRUNTIME SWIGINTERN
-#endif
-
-#ifndef SWIGRUNTIMEINLINE
-# define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE
-#endif
-
-/* Generic buffer size */
-#ifndef SWIG_BUFFER_SIZE
-# define SWIG_BUFFER_SIZE 1024
-#endif
-
-/* Flags for pointer conversions */
-#define SWIG_POINTER_DISOWN 0x1
-
-/* Flags for new pointer objects */
-#define SWIG_POINTER_OWN 0x1
-
-
-/*
- Flags/methods for returning states.
-
- The swig conversion methods, as ConvertPtr, return and integer
- that tells if the conversion was successful or not. And if not,
- an error code can be returned (see swigerrors.swg for the codes).
-
- Use the following macros/flags to set or process the returning
- states.
-
- In old swig versions, you usually write code as:
-
- if (SWIG_ConvertPtr(obj,vptr,ty.flags) != -1) {
- // success code
- } else {
- //fail code
- }
-
- Now you can be more explicit as:
-
- int res = SWIG_ConvertPtr(obj,vptr,ty.flags);
- if (SWIG_IsOK(res)) {
- // success code
- } else {
- // fail code
- }
-
- that seems to be the same, but now you can also do
-
- Type *ptr;
- int res = SWIG_ConvertPtr(obj,(void **)(&ptr),ty.flags);
- if (SWIG_IsOK(res)) {
- // success code
- if (SWIG_IsNewObj(res) {
- ...
- delete *ptr;
- } else {
- ...
- }
- } else {
- // fail code
- }
-
- I.e., now SWIG_ConvertPtr can return new objects and you can
- identify the case and take care of the deallocation. Of course that
- requires also to SWIG_ConvertPtr to return new result values, as
-
- int SWIG_ConvertPtr(obj, ptr,...) {
- if (<obj is ok>) {
- if (<need new object>) {
- *ptr = <ptr to new allocated object>;
- return SWIG_NEWOBJ;
- } else {
- *ptr = <ptr to old object>;
- return SWIG_OLDOBJ;
- }
- } else {
- return SWIG_BADOBJ;
- }
- }
-
- Of course, returning the plain '0(success)/-1(fail)' still works, but you can be
- more explicit by returning SWIG_BADOBJ, SWIG_ERROR or any of the
- swig errors code.
-
- Finally, if the SWIG_CASTRANK_MODE is enabled, the result code
- allows to return the 'cast rank', for example, if you have this
-
- int food(double)
- int fooi(int);
-
- and you call
-
- food(1) // cast rank '1' (1 -> 1.0)
- fooi(1) // cast rank '0'
-
- just use the SWIG_AddCast()/SWIG_CheckState()
-
-
- */
-#define SWIG_OK (0)
-#define SWIG_ERROR (-1)
-#define SWIG_IsOK(r) (r >= 0)
-#define SWIG_ArgError(r) ((r != SWIG_ERROR) ? r : SWIG_TypeError)
-
-/* The CastRankLimit says how many bits are used for the cast rank */
-#define SWIG_CASTRANKLIMIT (1 << 8)
-/* The NewMask denotes the object was created (using new/malloc) */
-#define SWIG_NEWOBJMASK (SWIG_CASTRANKLIMIT << 1)
-/* The TmpMask is for in/out typemaps that use temporal objects */
-#define SWIG_TMPOBJMASK (SWIG_NEWOBJMASK << 1)
-/* Simple returning values */
-#define SWIG_BADOBJ (SWIG_ERROR)
-#define SWIG_OLDOBJ (SWIG_OK)
-#define SWIG_NEWOBJ (SWIG_OK | SWIG_NEWOBJMASK)
-#define SWIG_TMPOBJ (SWIG_OK | SWIG_TMPOBJMASK)
-/* Check, add and del mask methods */
-#define SWIG_AddNewMask(r) (SWIG_IsOK(r) ? (r | SWIG_NEWOBJMASK) : r)
-#define SWIG_DelNewMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_NEWOBJMASK) : r)
-#define SWIG_IsNewObj(r) (SWIG_IsOK(r) && (r & SWIG_NEWOBJMASK))
-#define SWIG_AddTmpMask(r) (SWIG_IsOK(r) ? (r | SWIG_TMPOBJMASK) : r)
-#define SWIG_DelTmpMask(r) (SWIG_IsOK(r) ? (r & ~SWIG_TMPOBJMASK) : r)
-#define SWIG_IsTmpObj(r) (SWIG_IsOK(r) && (r & SWIG_TMPOBJMASK))
-
-
-/* Cast-Rank Mode */
-#if defined(SWIG_CASTRANK_MODE)
-# ifndef SWIG_TypeRank
-# define SWIG_TypeRank unsigned long
-# endif
-# ifndef SWIG_MAXCASTRANK /* Default cast allowed */
-# define SWIG_MAXCASTRANK (2)
-# endif
-# define SWIG_CASTRANKMASK ((SWIG_CASTRANKLIMIT) -1)
-# define SWIG_CastRank(r) (r & SWIG_CASTRANKMASK)
-SWIGINTERNINLINE int SWIG_AddCast(int r) {
- return SWIG_IsOK(r) ? ((SWIG_CastRank(r) < SWIG_MAXCASTRANK) ? (r + 1) : SWIG_ERROR) : r;
-}
-SWIGINTERNINLINE int SWIG_CheckState(int r) {
- return SWIG_IsOK(r) ? SWIG_CastRank(r) + 1 : 0;
-}
-#else /* no cast-rank mode */
-# define SWIG_AddCast
-# define SWIG_CheckState(r) (SWIG_IsOK(r) ? 1 : 0)
-#endif
-
-
-
-
-#include <string.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef void *(*swig_converter_func)(void *);
-typedef struct swig_type_info *(*swig_dycast_func)(void **);
-
-/* Structure to store inforomation on one type */
-typedef struct swig_type_info {
- const char *name; /* mangled name of this type */
- const char *str; /* human readable name of this type */
- swig_dycast_func dcast; /* dynamic cast function down a hierarchy */
- struct swig_cast_info *cast; /* linked list of types that can cast into this type */
- void *clientdata; /* language specific type data */
- int owndata; /* flag if the structure owns the clientdata */
-} swig_type_info;
-
-/* Structure to store a type and conversion function used for casting */
-typedef struct swig_cast_info {
- swig_type_info *type; /* pointer to type that is equivalent to this type */
- swig_converter_func converter; /* function to cast the void pointers */
- struct swig_cast_info *next; /* pointer to next cast in linked list */
- struct swig_cast_info *prev; /* pointer to the previous cast */
-} swig_cast_info;
-
-/* Structure used to store module information
- * Each module generates one structure like this, and the runtime collects
- * all of these structures and stores them in a circularly linked list.*/
-typedef struct swig_module_info {
- swig_type_info **types; /* Array of pointers to swig_type_info structures that are in this module */
- size_t size; /* Number of types in this module */
- struct swig_module_info *next; /* Pointer to next element in circularly linked list */
- swig_type_info **type_initial; /* Array of initially generated type structures */
- swig_cast_info **cast_initial; /* Array of initially generated casting structures */
- void *clientdata; /* Language specific module data */
-} swig_module_info;
-
-/*
- Compare two type names skipping the space characters, therefore
- "char*" == "char *" and "Class<int>" == "Class<int >", etc.
-
- Return 0 when the two name types are equivalent, as in
- strncmp, but skipping ' '.
-*/
-SWIGRUNTIME int
-SWIG_TypeNameComp(const char *f1, const char *l1,
- const char *f2, const char *l2) {
- for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) {
- while ((*f1 == ' ') && (f1 != l1)) ++f1;
- while ((*f2 == ' ') && (f2 != l2)) ++f2;
- if (*f1 != *f2) return (*f1 > *f2) ? 1 : -1;
- }
- return (l1 - f1) - (l2 - f2);
-}
-
-/*
- Check type equivalence in a name list like <name1>|<name2>|...
- Return 0 if not equal, 1 if equal
-*/
-SWIGRUNTIME int
-SWIG_TypeEquiv(const char *nb, const char *tb) {
- int equiv = 0;
- const char* te = tb + strlen(tb);
- const char* ne = nb;
- while (!equiv && *ne) {
- for (nb = ne; *ne; ++ne) {
- if (*ne == '|') break;
- }
- equiv = (SWIG_TypeNameComp(nb, ne, tb, te) == 0) ? 1 : 0;
- if (*ne) ++ne;
- }
- return equiv;
-}
-
-/*
- Check type equivalence in a name list like <name1>|<name2>|...
- Return 0 if equal, -1 if nb < tb, 1 if nb > tb
-*/
-SWIGRUNTIME int
-SWIG_TypeCompare(const char *nb, const char *tb) {
- int equiv = 0;
- const char* te = tb + strlen(tb);
- const char* ne = nb;
- while (!equiv && *ne) {
- for (nb = ne; *ne; ++ne) {
- if (*ne == '|') break;
- }
- equiv = (SWIG_TypeNameComp(nb, ne, tb, te) == 0) ? 1 : 0;
- if (*ne) ++ne;
- }
- return equiv;
-}
-
-
-/* think of this as a c++ template<> or a scheme macro */
-#define SWIG_TypeCheck_Template(comparison, ty) \
- if (ty) { \
- swig_cast_info *iter = ty->cast; \
- while (iter) { \
- if (comparison) { \
- if (iter == ty->cast) return iter; \
- /* Move iter to the top of the linked list */ \
- iter->prev->next = iter->next; \
- if (iter->next) \
- iter->next->prev = iter->prev; \
- iter->next = ty->cast; \
- iter->prev = 0; \
- if (ty->cast) ty->cast->prev = iter; \
- ty->cast = iter; \
- return iter; \
- } \
- iter = iter->next; \
- } \
- } \
- return 0
-
-/*
- Check the typename
-*/
-SWIGRUNTIME swig_cast_info *
-SWIG_TypeCheck(const char *c, swig_type_info *ty) {
- SWIG_TypeCheck_Template(strcmp(iter->type->name, c) == 0, ty);
-}
-
-/* Same as previous function, except strcmp is replaced with a pointer comparison */
-SWIGRUNTIME swig_cast_info *
-SWIG_TypeCheckStruct(swig_type_info *from, swig_type_info *into) {
- SWIG_TypeCheck_Template(iter->type == from, into);
-}
-
-/*
- Cast a pointer up an inheritance hierarchy
-*/
-SWIGRUNTIMEINLINE void *
-SWIG_TypeCast(swig_cast_info *ty, void *ptr) {
- return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr);
-}
-
-/*
- Dynamic pointer casting. Down an inheritance hierarchy
-*/
-SWIGRUNTIME swig_type_info *
-SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) {
- swig_type_info *lastty = ty;
- if (!ty || !ty->dcast) return ty;
- while (ty && (ty->dcast)) {
- ty = (*ty->dcast)(ptr);
- if (ty) lastty = ty;
- }
- return lastty;
-}
-
-/*
- Return the name associated with this type
-*/
-SWIGRUNTIMEINLINE const char *
-SWIG_TypeName(const swig_type_info *ty) {
- return ty->name;
-}
-
-/*
- Return the pretty name associated with this type,
- that is an unmangled type name in a form presentable to the user.
-*/
-SWIGRUNTIME const char *
-SWIG_TypePrettyName(const swig_type_info *type) {
- /* The "str" field contains the equivalent pretty names of the
- type, separated by vertical-bar characters. We choose
- to print the last name, as it is often (?) the most
- specific. */
- if (!type) return NULL;
- if (type->str != NULL) {
- const char *last_name = type->str;
- const char *s;
- for (s = type->str; *s; s++)
- if (*s == '|') last_name = s+1;
- return last_name;
- }
- else
- return type->name;
-}
-
-/*
- Set the clientdata field for a type
-*/
-SWIGRUNTIME void
-SWIG_TypeClientData(swig_type_info *ti, void *clientdata) {
- swig_cast_info *cast = ti->cast;
- /* if (ti->clientdata == clientdata) return; */
- ti->clientdata = clientdata;
-
- while (cast) {
- if (!cast->converter) {
- swig_type_info *tc = cast->type;
- if (!tc->clientdata) {
- SWIG_TypeClientData(tc, clientdata);
- }
- }
- cast = cast->next;
- }
-}
-SWIGRUNTIME void
-SWIG_TypeNewClientData(swig_type_info *ti, void *clientdata) {
- SWIG_TypeClientData(ti, clientdata);
- ti->owndata = 1;
-}
-
-/*
- Search for a swig_type_info structure only by mangled name
- Search is a O(log #types)
-
- We start searching at module start, and finish searching when start == end.
- Note: if start == end at the beginning of the function, we go all the way around
- the circular list.
-*/
-SWIGRUNTIME swig_type_info *
-SWIG_MangledTypeQueryModule(swig_module_info *start,
- swig_module_info *end,
- const char *name) {
- swig_module_info *iter = start;
- do {
- if (iter->size) {
- register size_t l = 0;
- register size_t r = iter->size - 1;
- do {
- /* since l+r >= 0, we can (>> 1) instead (/ 2) */
- register size_t i = (l + r) >> 1;
- const char *iname = iter->types[i]->name;
- if (iname) {
- register int compare = strcmp(name, iname);
- if (compare == 0) {
- return iter->types[i];
- } else if (compare < 0) {
- if (i) {
- r = i - 1;
- } else {
- break;
- }
- } else if (compare > 0) {
- l = i + 1;
- }
- } else {
- break; /* should never happen */
- }
- } while (l <= r);
- }
- iter = iter->next;
- } while (iter != end);
- return 0;
-}
-
-/*
- Search for a swig_type_info structure for either a mangled name or a human readable name.
- It first searches the mangled names of the types, which is a O(log #types)
- If a type is not found it then searches the human readable names, which is O(#types).
-
- We start searching at module start, and finish searching when start == end.
- Note: if start == end at the beginning of the function, we go all the way around
- the circular list.
-*/
-SWIGRUNTIME swig_type_info *
-SWIG_TypeQueryModule(swig_module_info *start,
- swig_module_info *end,
- const char *name) {
- /* STEP 1: Search the name field using binary search */
- swig_type_info *ret = SWIG_MangledTypeQueryModule(start, end, name);
- if (ret) {
- return ret;
- } else {
- /* STEP 2: If the type hasn't been found, do a complete search
- of the str field (the human readable name) */
- swig_module_info *iter = start;
- do {
- register size_t i = 0;
- for (; i < iter->size; ++i) {
- if (iter->types[i]->str && (SWIG_TypeEquiv(iter->types[i]->str, name)))
- return iter->types[i];
- }
- iter = iter->next;
- } while (iter != end);
- }
-
- /* neither found a match */
- return 0;
-}
-
-/*
- Pack binary data into a string
-*/
-SWIGRUNTIME char *
-SWIG_PackData(char *c, void *ptr, size_t sz) {
- static const char hex[17] = "0123456789abcdef";
- register const unsigned char *u = (unsigned char *) ptr;
- register const unsigned char *eu = u + sz;
- for (; u != eu; ++u) {
- register unsigned char uu = *u;
- *(c++) = hex[(uu & 0xf0) >> 4];
- *(c++) = hex[uu & 0xf];
- }
- return c;
-}
-
-/*
- Unpack binary data from a string
-*/
-SWIGRUNTIME const char *
-SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
- register unsigned char *u = (unsigned char *) ptr;
- register const unsigned char *eu = u + sz;
- for (; u != eu; ++u) {
- register char d = *(c++);
- register unsigned char uu;
- if ((d >= '0') && (d <= '9'))
- uu = ((d - '0') << 4);
- else if ((d >= 'a') && (d <= 'f'))
- uu = ((d - ('a'-10)) << 4);
- else
- return (char *) 0;
- d = *(c++);
- if ((d >= '0') && (d <= '9'))
- uu |= (d - '0');
- else if ((d >= 'a') && (d <= 'f'))
- uu |= (d - ('a'-10));
- else
- return (char *) 0;
- *u = uu;
- }
- return c;
-}
-
-/*
- Pack 'void *' into a string buffer.
-*/
-SWIGRUNTIME char *
-SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) {
- char *r = buff;
- if ((2*sizeof(void *) + 2) > bsz) return 0;
- *(r++) = '_';
- r = SWIG_PackData(r,&ptr,sizeof(void *));
- if (strlen(name) + 1 > (bsz - (r - buff))) return 0;
- strcpy(r,name);
- return buff;
-}
-
-SWIGRUNTIME const char *
-SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) {
- if (*c != '_') {
- if (strcmp(c,"NULL") == 0) {
- *ptr = (void *) 0;
- return name;
- } else {
- return 0;
- }
- }
- return SWIG_UnpackData(++c,ptr,sizeof(void *));
-}
-
-SWIGRUNTIME char *
-SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) {
- char *r = buff;
- size_t lname = (name ? strlen(name) : 0);
- if ((2*sz + 2 + lname) > bsz) return 0;
- *(r++) = '_';
- r = SWIG_PackData(r,ptr,sz);
- if (lname) {
- strncpy(r,name,lname+1);
- } else {
- *r = 0;
- }
- return buff;
-}
-
-SWIGRUNTIME const char *
-SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) {
- if (*c != '_') {
- if (strcmp(c,"NULL") == 0) {
- memset(ptr,0,sz);
- return name;
- } else {
- return 0;
- }
- }
- return SWIG_UnpackData(++c,ptr,sz);
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-/* Errors in SWIG */
-#define SWIG_UnknownError -1
-#define SWIG_IOError -2
-#define SWIG_RuntimeError -3
-#define SWIG_IndexError -4
-#define SWIG_TypeError -5
-#define SWIG_DivisionByZero -6
-#define SWIG_OverflowError -7
-#define SWIG_SyntaxError -8
-#define SWIG_ValueError -9
-#define SWIG_SystemError -10
-#define SWIG_AttributeError -11
-#define SWIG_MemoryError -12
-#define SWIG_NullReferenceError -13
-
-
-
-
-/* Add PyOS_snprintf for old Pythons */
-#if PY_VERSION_HEX < 0x02020000
-# if defined(_MSC_VER) || defined(__BORLANDC__) || defined(_WATCOM)
-# define PyOS_snprintf _snprintf
-# else
-# define PyOS_snprintf snprintf
-# endif
-#endif
-
-/* A crude PyString_FromFormat implementation for old Pythons */
-#if PY_VERSION_HEX < 0x02020000
-
-#ifndef SWIG_PYBUFFER_SIZE
-# define SWIG_PYBUFFER_SIZE 1024
-#endif
-
-static PyObject *
-PyString_FromFormat(const char *fmt, ...) {
- va_list ap;
- char buf[SWIG_PYBUFFER_SIZE * 2];
- int res;
- va_start(ap, fmt);
- res = vsnprintf(buf, sizeof(buf), fmt, ap);
- va_end(ap);
- return (res < 0 || res >= (int)sizeof(buf)) ? 0 : PyString_FromString(buf);
-}
-#endif
-
-/* Add PyObject_Del for old Pythons */
-#if PY_VERSION_HEX < 0x01060000
-# define PyObject_Del(op) PyMem_DEL((op))
-#endif
-#ifndef PyObject_DEL
-# define PyObject_DEL PyObject_Del
-#endif
-
-/* A crude PyExc_StopIteration exception for old Pythons */
-#if PY_VERSION_HEX < 0x02020000
-# ifndef PyExc_StopIteration
-# define PyExc_StopIteration PyExc_RuntimeError
-# endif
-# ifndef PyObject_GenericGetAttr
-# define PyObject_GenericGetAttr 0
-# endif
-#endif
-/* Py_NotImplemented is defined in 2.1 and up. */
-#if PY_VERSION_HEX < 0x02010000
-# ifndef Py_NotImplemented
-# define Py_NotImplemented PyExc_RuntimeError
-# endif
-#endif
-
-
-/* A crude PyString_AsStringAndSize implementation for old Pythons */
-#if PY_VERSION_HEX < 0x02010000
-# ifndef PyString_AsStringAndSize
-# define PyString_AsStringAndSize(obj, s, len) {*s = PyString_AsString(obj); *len = *s ? strlen(*s) : 0;}
-# endif
-#endif
-
-/* PySequence_Size for old Pythons */
-#if PY_VERSION_HEX < 0x02000000
-# ifndef PySequence_Size
-# define PySequence_Size PySequence_Length
-# endif
-#endif
-
-
-/* PyBool_FromLong for old Pythons */
-#if PY_VERSION_HEX < 0x02030000
-static
-PyObject *PyBool_FromLong(long ok)
-{
- PyObject *result = ok ? Py_True : Py_False;
- Py_INCREF(result);
- return result;
-}
-#endif
-
-/* Py_ssize_t for old Pythons */
-/* This code is as recommended by: */
-/* http://www.python.org/dev/peps/pep-0353/#conversion-guidelines */
-#if PY_VERSION_HEX < 0x02050000 && !defined(PY_SSIZE_T_MIN)
-typedef int Py_ssize_t;
-# define PY_SSIZE_T_MAX INT_MAX
-# define PY_SSIZE_T_MIN INT_MIN
-#endif
-
-/* -----------------------------------------------------------------------------
- * error manipulation
- * ----------------------------------------------------------------------------- */
-
-SWIGRUNTIME PyObject*
-SWIG_Python_ErrorType(int code) {
- PyObject* type = 0;
- switch(code) {
- case SWIG_MemoryError:
- type = PyExc_MemoryError;
- break;
- case SWIG_IOError:
- type = PyExc_IOError;
- break;
- case SWIG_RuntimeError:
- type = PyExc_RuntimeError;
- break;
- case SWIG_IndexError:
- type = PyExc_IndexError;
- break;
- case SWIG_TypeError:
- type = PyExc_TypeError;
- break;
- case SWIG_DivisionByZero:
- type = PyExc_ZeroDivisionError;
- break;
- case SWIG_OverflowError:
- type = PyExc_OverflowError;
- break;
- case SWIG_SyntaxError:
- type = PyExc_SyntaxError;
- break;
- case SWIG_ValueError:
- type = PyExc_ValueError;
- break;
- case SWIG_SystemError:
- type = PyExc_SystemError;
- break;
- case SWIG_AttributeError:
- type = PyExc_AttributeError;
- break;
- default:
- type = PyExc_RuntimeError;
- }
- return type;
-}
-
-
-SWIGRUNTIME void
-SWIG_Python_AddErrorMsg(const char* mesg)
-{
- PyObject *type = 0;
- PyObject *value = 0;
- PyObject *traceback = 0;
-
- if (PyErr_Occurred()) PyErr_Fetch(&type, &value, &traceback);
- if (value) {
- PyObject *old_str = PyObject_Str(value);
- PyErr_Clear();
- Py_XINCREF(type);
- PyErr_Format(type, "%s %s", PyString_AsString(old_str), mesg);
- Py_DECREF(old_str);
- Py_DECREF(value);
- } else {
- PyErr_Format(PyExc_RuntimeError, mesg);
- }
-}
-
-
-
-#if defined(SWIG_PYTHON_NO_THREADS)
-# if defined(SWIG_PYTHON_THREADS)
-# undef SWIG_PYTHON_THREADS
-# endif
-#endif
-#if defined(SWIG_PYTHON_THREADS) /* Threading support is enabled */
-# if !defined(SWIG_PYTHON_USE_GIL) && !defined(SWIG_PYTHON_NO_USE_GIL)
-# if (PY_VERSION_HEX >= 0x02030000) /* For 2.3 or later, use the PyGILState calls */
-# define SWIG_PYTHON_USE_GIL
-# endif
-# endif
-# if defined(SWIG_PYTHON_USE_GIL) /* Use PyGILState threads calls */
-# ifndef SWIG_PYTHON_INITIALIZE_THREADS
-# define SWIG_PYTHON_INITIALIZE_THREADS PyEval_InitThreads()
-# endif
-# ifdef __cplusplus /* C++ code */
- class SWIG_Python_Thread_Block {
- bool status;
- PyGILState_STATE state;
- public:
- void end() { if (status) { PyGILState_Release(state); status = false;} }
- SWIG_Python_Thread_Block() : status(true), state(PyGILState_Ensure()) {}
- ~SWIG_Python_Thread_Block() { end(); }
- };
- class SWIG_Python_Thread_Allow {
- bool status;
- PyThreadState *save;
- public:
- void end() { if (status) { PyEval_RestoreThread(save); status = false; }}
- SWIG_Python_Thread_Allow() : status(true), save(PyEval_SaveThread()) {}
- ~SWIG_Python_Thread_Allow() { end(); }
- };
-# define SWIG_PYTHON_THREAD_BEGIN_BLOCK SWIG_Python_Thread_Block _swig_thread_block
-# define SWIG_PYTHON_THREAD_END_BLOCK _swig_thread_block.end()
-# define SWIG_PYTHON_THREAD_BEGIN_ALLOW SWIG_Python_Thread_Allow _swig_thread_allow
-# define SWIG_PYTHON_THREAD_END_ALLOW _swig_thread_allow.end()
-# else /* C code */
-# define SWIG_PYTHON_THREAD_BEGIN_BLOCK PyGILState_STATE _swig_thread_block = PyGILState_Ensure()
-# define SWIG_PYTHON_THREAD_END_BLOCK PyGILState_Release(_swig_thread_block)
-# define SWIG_PYTHON_THREAD_BEGIN_ALLOW PyThreadState *_swig_thread_allow = PyEval_SaveThread()
-# define SWIG_PYTHON_THREAD_END_ALLOW PyEval_RestoreThread(_swig_thread_allow)
-# endif
-# else /* Old thread way, not implemented, user must provide it */
-# if !defined(SWIG_PYTHON_INITIALIZE_THREADS)
-# define SWIG_PYTHON_INITIALIZE_THREADS
-# endif
-# if !defined(SWIG_PYTHON_THREAD_BEGIN_BLOCK)
-# define SWIG_PYTHON_THREAD_BEGIN_BLOCK
-# endif
-# if !defined(SWIG_PYTHON_THREAD_END_BLOCK)
-# define SWIG_PYTHON_THREAD_END_BLOCK
-# endif
-# if !defined(SWIG_PYTHON_THREAD_BEGIN_ALLOW)
-# define SWIG_PYTHON_THREAD_BEGIN_ALLOW
-# endif
-# if !defined(SWIG_PYTHON_THREAD_END_ALLOW)
-# define SWIG_PYTHON_THREAD_END_ALLOW
-# endif
-# endif
-#else /* No thread support */
-# define SWIG_PYTHON_INITIALIZE_THREADS
-# define SWIG_PYTHON_THREAD_BEGIN_BLOCK
-# define SWIG_PYTHON_THREAD_END_BLOCK
-# define SWIG_PYTHON_THREAD_BEGIN_ALLOW
-# define SWIG_PYTHON_THREAD_END_ALLOW
-#endif
-
-/* -----------------------------------------------------------------------------
- * Python API portion that goes into the runtime
- * ----------------------------------------------------------------------------- */
-
-#ifdef __cplusplus
-extern "C" {
-#if 0
-} /* cc-mode */
-#endif
-#endif
-
-/* -----------------------------------------------------------------------------
- * Constant declarations
- * ----------------------------------------------------------------------------- */
-
-/* Constant Types */
-#define SWIG_PY_POINTER 4
-#define SWIG_PY_BINARY 5
-
-/* Constant information structure */
-typedef struct swig_const_info {
- int type;
- char *name;
- long lvalue;
- double dvalue;
- void *pvalue;
- swig_type_info **ptype;
-} swig_const_info;
-
-#ifdef __cplusplus
-#if 0
-{ /* cc-mode */
-#endif
-}
-#endif
-
-
-/* -----------------------------------------------------------------------------
- * See the LICENSE file for information on copyright, usage and redistribution
- * of SWIG, and the README file for authors - http://www.swig.org/release.html.
- *
- * pyrun.swg
- *
- * This file contains the runtime support for Python modules
- * and includes code for managing global variables and pointer
- * type checking.
- *
- * ----------------------------------------------------------------------------- */
-
-/* Common SWIG API */
-
-/* for raw pointers */
-#define SWIG_Python_ConvertPtr(obj, pptr, type, flags) SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, 0)
-#define SWIG_ConvertPtr(obj, pptr, type, flags) SWIG_Python_ConvertPtr(obj, pptr, type, flags)
-#define SWIG_ConvertPtrAndOwn(obj,pptr,type,flags,own) SWIG_Python_ConvertPtrAndOwn(obj, pptr, type, flags, own)
-#define SWIG_NewPointerObj(ptr, type, flags) SWIG_Python_NewPointerObj(ptr, type, flags)
-#define SWIG_CheckImplicit(ty) SWIG_Python_CheckImplicit(ty)
-#define SWIG_AcquirePtr(ptr, src) SWIG_Python_AcquirePtr(ptr, src)
-#define swig_owntype int
-
-/* for raw packed data */
-#define SWIG_ConvertPacked(obj, ptr, sz, ty) SWIG_Python_ConvertPacked(obj, ptr, sz, ty)
-#define SWIG_NewPackedObj(ptr, sz, type) SWIG_Python_NewPackedObj(ptr, sz, type)
-
-/* for class or struct pointers */
-#define SWIG_ConvertInstance(obj, pptr, type, flags) SWIG_ConvertPtr(obj, pptr, type, flags)
-#define SWIG_NewInstanceObj(ptr, type, flags) SWIG_NewPointerObj(ptr, type, flags)
-
-/* for C or C++ function pointers */
-#define SWIG_ConvertFunctionPtr(obj, pptr, type) SWIG_Python_ConvertFunctionPtr(obj, pptr, type)
-#define SWIG_NewFunctionPtrObj(ptr, type) SWIG_Python_NewPointerObj(ptr, type, 0)
-
-/* for C++ member pointers, ie, member methods */
-#define SWIG_ConvertMember(obj, ptr, sz, ty) SWIG_Python_ConvertPacked(obj, ptr, sz, ty)
-#define SWIG_NewMemberObj(ptr, sz, type) SWIG_Python_NewPackedObj(ptr, sz, type)
-
-
-/* Runtime API */
-
-#define SWIG_GetModule(clientdata) SWIG_Python_GetModule()
-#define SWIG_SetModule(clientdata, pointer) SWIG_Python_SetModule(pointer)
-#define SWIG_NewClientData(obj) PySwigClientData_New(obj)
-
-#define SWIG_SetErrorObj SWIG_Python_SetErrorObj
-#define SWIG_SetErrorMsg SWIG_Python_SetErrorMsg
-#define SWIG_ErrorType(code) SWIG_Python_ErrorType(code)
-#define SWIG_Error(code, msg) SWIG_Python_SetErrorMsg(SWIG_ErrorType(code), msg)
-#define SWIG_fail goto fail
-
-
-/* Runtime API implementation */
-
-/* Error manipulation */
-
-SWIGINTERN void
-SWIG_Python_SetErrorObj(PyObject *errtype, PyObject *obj) {
- SWIG_PYTHON_THREAD_BEGIN_BLOCK;
- PyErr_SetObject(errtype, obj);
- Py_DECREF(obj);
- SWIG_PYTHON_THREAD_END_BLOCK;
-}
-
-SWIGINTERN void
-SWIG_Python_SetErrorMsg(PyObject *errtype, const char *msg) {
- SWIG_PYTHON_THREAD_BEGIN_BLOCK;
- PyErr_SetString(errtype, (char *) msg);
- SWIG_PYTHON_THREAD_END_BLOCK;
-}
-
-#define SWIG_Python_Raise(obj, type, desc) SWIG_Python_SetErrorObj(SWIG_Python_ExceptionType(desc), obj)
-
-/* Set a constant value */
-
-SWIGINTERN void
-SWIG_Python_SetConstant(PyObject *d, const char *name, PyObject *obj) {
- PyDict_SetItemString(d, (char*) name, obj);
- Py_DECREF(obj);
-}
-
-/* Append a value to the result obj */
-
-SWIGINTERN PyObject*
-SWIG_Python_AppendOutput(PyObject* result, PyObject* obj) {
-#if !defined(SWIG_PYTHON_OUTPUT_TUPLE)
- if (!result) {
- result = obj;
- } else if (result == Py_None) {
- Py_DECREF(result);
- result = obj;
- } else {
- if (!PyList_Check(result)) {
- PyObject *o2 = result;
- result = PyList_New(1);
- PyList_SetItem(result, 0, o2);
- }
- PyList_Append(result,obj);
- Py_DECREF(obj);
- }
- return result;
-#else
- PyObject* o2;
- PyObject* o3;
- if (!result) {
- result = obj;
- } else if (result == Py_None) {
- Py_DECREF(result);
- result = obj;
- } else {
- if (!PyTuple_Check(result)) {
- o2 = result;
- result = PyTuple_New(1);
- PyTuple_SET_ITEM(result, 0, o2);
- }
- o3 = PyTuple_New(1);
- PyTuple_SET_ITEM(o3, 0, obj);
- o2 = result;
- result = PySequence_Concat(o2, o3);
- Py_DECREF(o2);
- Py_DECREF(o3);
- }
- return result;
-#endif
-}
-
-/* Unpack the argument tuple */
-
-SWIGINTERN int
-SWIG_Python_UnpackTuple(PyObject *args, const char *name, int min, int max, PyObject **objs)
-{
- if (!args) {
- if (!min && !max) {
- return 1;
- } else {
- PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got none",
- name, (min == max ? "" : "at least "), min);
- return 0;
- }
- }
- if (!PyTuple_Check(args)) {
- PyErr_SetString(PyExc_SystemError, "UnpackTuple() argument list is not a tuple");
- return 0;
- } else {
- register int l = PyTuple_GET_SIZE(args);
- if (l < min) {
- PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d",
- name, (min == max ? "" : "at least "), min, l);
- return 0;
- } else if (l > max) {
- PyErr_Format(PyExc_TypeError, "%s expected %s%d arguments, got %d",
- name, (min == max ? "" : "at most "), max, l);
- return 0;
- } else {
- register int i;
- for (i = 0; i < l; ++i) {
- objs[i] = PyTuple_GET_ITEM(args, i);
- }
- for (; l < max; ++l) {
- objs[l] = 0;
- }
- return i + 1;
- }
- }
-}
-
-/* A functor is a function object with one single object argument */
-#if PY_VERSION_HEX >= 0x02020000
-#define SWIG_Python_CallFunctor(functor, obj) PyObject_CallFunctionObjArgs(functor, obj, NULL);
-#else
-#define SWIG_Python_CallFunctor(functor, obj) PyObject_CallFunction(functor, "O", obj);
-#endif
-
-/*
- Helper for static pointer initialization for both C and C++ code, for example
- static PyObject *SWIG_STATIC_POINTER(MyVar) = NewSomething(...);
-*/
-#ifdef __cplusplus
-#define SWIG_STATIC_POINTER(var) var
-#else
-#define SWIG_STATIC_POINTER(var) var = 0; if (!var) var
-#endif
-
-/* -----------------------------------------------------------------------------
- * Pointer declarations
- * ----------------------------------------------------------------------------- */
-
-/* Flags for new pointer objects */
-#define SWIG_POINTER_NOSHADOW (SWIG_POINTER_OWN << 1)
-#define SWIG_POINTER_NEW (SWIG_POINTER_NOSHADOW | SWIG_POINTER_OWN)
-
-#define SWIG_POINTER_IMPLICIT_CONV (SWIG_POINTER_DISOWN << 1)
-
-#ifdef __cplusplus
-extern "C" {
-#if 0
-} /* cc-mode */
-#endif
-#endif
-
-/* How to access Py_None */
-#if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
-# ifndef SWIG_PYTHON_NO_BUILD_NONE
-# ifndef SWIG_PYTHON_BUILD_NONE
-# define SWIG_PYTHON_BUILD_NONE
-# endif
-# endif
-#endif
-
-#ifdef SWIG_PYTHON_BUILD_NONE
-# ifdef Py_None
-# undef Py_None
-# define Py_None SWIG_Py_None()
-# endif
-SWIGRUNTIMEINLINE PyObject *
-_SWIG_Py_None(void)
-{
- PyObject *none = Py_BuildValue((char*)"");
- Py_DECREF(none);
- return none;
-}
-SWIGRUNTIME PyObject *
-SWIG_Py_None(void)
-{
- static PyObject *SWIG_STATIC_POINTER(none) = _SWIG_Py_None();
- return none;
-}
-#endif
-
-/* The python void return value */
-
-SWIGRUNTIMEINLINE PyObject *
-SWIG_Py_Void(void)
-{
- PyObject *none = Py_None;
- Py_INCREF(none);
- return none;
-}
-
-/* PySwigClientData */
-
-typedef struct {
- PyObject *klass;
- PyObject *newraw;
- PyObject *newargs;
- PyObject *destroy;
- int delargs;
- int implicitconv;
-} PySwigClientData;
-
-SWIGRUNTIMEINLINE int
-SWIG_Python_CheckImplicit(swig_type_info *ty)
-{
- PySwigClientData *data = (PySwigClientData *)ty->clientdata;
- return data ? data->implicitconv : 0;
-}
-
-SWIGRUNTIMEINLINE PyObject *
-SWIG_Python_ExceptionType(swig_type_info *desc) {
- PySwigClientData *data = desc ? (PySwigClientData *) desc->clientdata : 0;
- PyObject *klass = data ? data->klass : 0;
- return (klass ? klass : PyExc_RuntimeError);
-}
-
-
-SWIGRUNTIME PySwigClientData *
-PySwigClientData_New(PyObject* obj)
-{
- if (!obj) {
- return 0;
- } else {
- PySwigClientData *data = (PySwigClientData *)malloc(sizeof(PySwigClientData));
- /* the klass element */
- data->klass = obj;
- Py_INCREF(data->klass);
- /* the newraw method and newargs arguments used to create a new raw instance */
- if (PyClass_Check(obj)) {
- data->newraw = 0;
- data->newargs = obj;
- Py_INCREF(obj);
- } else {
-#if (PY_VERSION_HEX < 0x02020000)
- data->newraw = 0;
-#else
- data->newraw = PyObject_GetAttrString(data->klass, (char *)"__new__");
-#endif
- if (data->newraw) {
- Py_INCREF(data->newraw);
- data->newargs = PyTuple_New(1);
- PyTuple_SetItem(data->newargs, 0, obj);
- } else {
- data->newargs = obj;
- }
- Py_INCREF(data->newargs);
- }
- /* the destroy method, aka as the C++ delete method */
- data->destroy = PyObject_GetAttrString(data->klass, (char *)"__swig_destroy__");
- if (PyErr_Occurred()) {
- PyErr_Clear();
- data->destroy = 0;
- }
- if (data->destroy) {
- int flags;
- Py_INCREF(data->destroy);
- flags = PyCFunction_GET_FLAGS(data->destroy);
-#ifdef METH_O
- data->delargs = !(flags & (METH_O));
-#else
- data->delargs = 0;
-#endif
- } else {
- data->delargs = 0;
- }
- data->implicitconv = 0;
- return data;
- }
-}
-
-SWIGRUNTIME void
-PySwigClientData_Del(PySwigClientData* data)
-{
- Py_XDECREF(data->newraw);
- Py_XDECREF(data->newargs);
- Py_XDECREF(data->destroy);
-}
-
-/* =============== PySwigObject =====================*/
-
-typedef struct {
- PyObject_HEAD
- void *ptr;
- swig_type_info *ty;
- int own;
- PyObject *next;
-} PySwigObject;
-
-SWIGRUNTIME PyObject *
-PySwigObject_long(PySwigObject *v)
-{
- return PyLong_FromVoidPtr(v->ptr);
-}
-
-SWIGRUNTIME PyObject *
-PySwigObject_format(const char* fmt, PySwigObject *v)
-{
- PyObject *res = NULL;
- PyObject *args = PyTuple_New(1);
- if (args) {
- if (PyTuple_SetItem(args, 0, PySwigObject_long(v)) == 0) {
- PyObject *ofmt = PyString_FromString(fmt);
- if (ofmt) {
- res = PyString_Format(ofmt,args);
- Py_DECREF(ofmt);
- }
- Py_DECREF(args);
- }
- }
- return res;
-}
-
-SWIGRUNTIME PyObject *
-PySwigObject_oct(PySwigObject *v)
-{
- return PySwigObject_format("%o",v);
-}
-
-SWIGRUNTIME PyObject *
-PySwigObject_hex(PySwigObject *v)
-{
- return PySwigObject_format("%x",v);
-}
-
-SWIGRUNTIME PyObject *
-#ifdef METH_NOARGS
-PySwigObject_repr(PySwigObject *v)
-#else
-PySwigObject_repr(PySwigObject *v, PyObject *args)
-#endif
-{
- const char *name = SWIG_TypePrettyName(v->ty);
- PyObject *hex = PySwigObject_hex(v);
- PyObject *repr = PyString_FromFormat("<Swig Object of type '%s' at 0x%s>", name, PyString_AsString(hex));
- Py_DECREF(hex);
- if (v->next) {
-#ifdef METH_NOARGS
- PyObject *nrep = PySwigObject_repr((PySwigObject *)v->next);
-#else
- PyObject *nrep = PySwigObject_repr((PySwigObject *)v->next, args);
-#endif
- PyString_ConcatAndDel(&repr,nrep);
- }
- return repr;
-}
-
-SWIGRUNTIME int
-PySwigObject_print(PySwigObject *v, FILE *fp, int SWIGUNUSEDPARM(flags))
-{
-#ifdef METH_NOARGS
- PyObject *repr = PySwigObject_repr(v);
-#else
- PyObject *repr = PySwigObject_repr(v, NULL);
-#endif
- if (repr) {
- fputs(PyString_AsString(repr), fp);
- Py_DECREF(repr);
- return 0;
- } else {
- return 1;
- }
-}
-
-SWIGRUNTIME PyObject *
-PySwigObject_str(PySwigObject *v)
-{
- char result[SWIG_BUFFER_SIZE];
- return SWIG_PackVoidPtr(result, v->ptr, v->ty->name, sizeof(result)) ?
- PyString_FromString(result) : 0;
-}
-
-SWIGRUNTIME int
-PySwigObject_compare(PySwigObject *v, PySwigObject *w)
-{
- void *i = v->ptr;
- void *j = w->ptr;
- return (i < j) ? -1 : ((i > j) ? 1 : 0);
-}
-
-SWIGRUNTIME PyTypeObject* _PySwigObject_type(void);
-
-SWIGRUNTIME PyTypeObject*
-PySwigObject_type(void) {
- static PyTypeObject *SWIG_STATIC_POINTER(type) = _PySwigObject_type();
- return type;
-}
-
-SWIGRUNTIMEINLINE int
-PySwigObject_Check(PyObject *op) {
- return ((op)->ob_type == PySwigObject_type())
- || (strcmp((op)->ob_type->tp_name,"PySwigObject") == 0);
-}
-
-SWIGRUNTIME PyObject *
-PySwigObject_New(void *ptr, swig_type_info *ty, int own);
-
-SWIGRUNTIME void
-PySwigObject_dealloc(PyObject *v)
-{
- PySwigObject *sobj = (PySwigObject *) v;
- PyObject *next = sobj->next;
- if (sobj->own) {
- swig_type_info *ty = sobj->ty;
- PySwigClientData *data = ty ? (PySwigClientData *) ty->clientdata : 0;
- PyObject *destroy = data ? data->destroy : 0;
- if (destroy) {
- /* destroy is always a VARARGS method */
- PyObject *res;
- if (data->delargs) {
- /* we need to create a temporal object to carry the destroy operation */
- PyObject *tmp = PySwigObject_New(sobj->ptr, ty, 0);
- res = SWIG_Python_CallFunctor(destroy, tmp);
- Py_DECREF(tmp);
- } else {
- PyCFunction meth = PyCFunction_GET_FUNCTION(destroy);
- PyObject *mself = PyCFunction_GET_SELF(destroy);
- res = ((*meth)(mself, v));
- }
- Py_XDECREF(res);
- } else {
- const char *name = SWIG_TypePrettyName(ty);
-#if !defined(SWIG_PYTHON_SILENT_MEMLEAK)
- printf("swig/python detected a memory leak of type '%s', no destructor found.\n", name);
-#endif
- }
- }
- Py_XDECREF(next);
- PyObject_DEL(v);
-}
-
-SWIGRUNTIME PyObject*
-PySwigObject_append(PyObject* v, PyObject* next)
-{
- PySwigObject *sobj = (PySwigObject *) v;
-#ifndef METH_O
- PyObject *tmp = 0;
- if (!PyArg_ParseTuple(next,(char *)"O:append", &tmp)) return NULL;
- next = tmp;
-#endif
- if (!PySwigObject_Check(next)) {
- return NULL;
- }
- sobj->next = next;
- Py_INCREF(next);
- return SWIG_Py_Void();
-}
-
-SWIGRUNTIME PyObject*
-#ifdef METH_NOARGS
-PySwigObject_next(PyObject* v)
-#else
-PySwigObject_next(PyObject* v, PyObject *SWIGUNUSEDPARM(args))
-#endif
-{
- PySwigObject *sobj = (PySwigObject *) v;
- if (sobj->next) {
- Py_INCREF(sobj->next);
- return sobj->next;
- } else {
- return SWIG_Py_Void();
- }
-}
-
-SWIGINTERN PyObject*
-#ifdef METH_NOARGS
-PySwigObject_disown(PyObject *v)
-#else
-PySwigObject_disown(PyObject* v, PyObject *SWIGUNUSEDPARM(args))
-#endif
-{
- PySwigObject *sobj = (PySwigObject *)v;
- sobj->own = 0;
- return SWIG_Py_Void();
-}
-
-SWIGINTERN PyObject*
-#ifdef METH_NOARGS
-PySwigObject_acquire(PyObject *v)
-#else
-PySwigObject_acquire(PyObject* v, PyObject *SWIGUNUSEDPARM(args))
-#endif
-{
- PySwigObject *sobj = (PySwigObject *)v;
- sobj->own = SWIG_POINTER_OWN;
- return SWIG_Py_Void();
-}
-
-SWIGINTERN PyObject*
-PySwigObject_own(PyObject *v, PyObject *args)
-{
- PyObject *val = 0;
-#if (PY_VERSION_HEX < 0x02020000)
- if (!PyArg_ParseTuple(args,(char *)"|O:own",&val))
-#else
- if (!PyArg_UnpackTuple(args, (char *)"own", 0, 1, &val))
-#endif
- {
- return NULL;
- }
- else
- {
- PySwigObject *sobj = (PySwigObject *)v;
- PyObject *obj = PyBool_FromLong(sobj->own);
- if (val) {
-#ifdef METH_NOARGS
- if (PyObject_IsTrue(val)) {
- PySwigObject_acquire(v);
- } else {
- PySwigObject_disown(v);
- }
-#else
- if (PyObject_IsTrue(val)) {
- PySwigObject_acquire(v,args);
- } else {
- PySwigObject_disown(v,args);
- }
-#endif
- }
- return obj;
- }
-}
-
-#ifdef METH_O
-static PyMethodDef
-swigobject_methods[] = {
- {(char *)"disown", (PyCFunction)PySwigObject_disown, METH_NOARGS, (char *)"releases ownership of the pointer"},
- {(char *)"acquire", (PyCFunction)PySwigObject_acquire, METH_NOARGS, (char *)"aquires ownership of the pointer"},
- {(char *)"own", (PyCFunction)PySwigObject_own, METH_VARARGS, (char *)"returns/sets ownership of the pointer"},
- {(char *)"append", (PyCFunction)PySwigObject_append, METH_O, (char *)"appends another 'this' object"},
- {(char *)"next", (PyCFunction)PySwigObject_next, METH_NOARGS, (char *)"returns the next 'this' object"},
- {(char *)"__repr__",(PyCFunction)PySwigObject_repr, METH_NOARGS, (char *)"returns object representation"},
- {0, 0, 0, 0}
-};
-#else
-static PyMethodDef
-swigobject_methods[] = {
- {(char *)"disown", (PyCFunction)PySwigObject_disown, METH_VARARGS, (char *)"releases ownership of the pointer"},
- {(char *)"acquire", (PyCFunction)PySwigObject_acquire, METH_VARARGS, (char *)"aquires ownership of the pointer"},
- {(char *)"own", (PyCFunction)PySwigObject_own, METH_VARARGS, (char *)"returns/sets ownership of the pointer"},
- {(char *)"append", (PyCFunction)PySwigObject_append, METH_VARARGS, (char *)"appends another 'this' object"},
- {(char *)"next", (PyCFunction)PySwigObject_next, METH_VARARGS, (char *)"returns the next 'this' object"},
- {(char *)"__repr__",(PyCFunction)PySwigObject_repr, METH_VARARGS, (char *)"returns object representation"},
- {0, 0, 0, 0}
-};
-#endif
-
-#if PY_VERSION_HEX < 0x02020000
-SWIGINTERN PyObject *
-PySwigObject_getattr(PySwigObject *sobj,char *name)
-{
- return Py_FindMethod(swigobject_methods, (PyObject *)sobj, name);
-}
-#endif
-
-SWIGRUNTIME PyTypeObject*
-_PySwigObject_type(void) {
- static char swigobject_doc[] = "Swig object carries a C/C++ instance pointer";
-
- static PyNumberMethods PySwigObject_as_number = {
- (binaryfunc)0, /*nb_add*/
- (binaryfunc)0, /*nb_subtract*/
- (binaryfunc)0, /*nb_multiply*/
- (binaryfunc)0, /*nb_divide*/
- (binaryfunc)0, /*nb_remainder*/
- (binaryfunc)0, /*nb_divmod*/
- (ternaryfunc)0,/*nb_power*/
- (unaryfunc)0, /*nb_negative*/
- (unaryfunc)0, /*nb_positive*/
- (unaryfunc)0, /*nb_absolute*/
- (inquiry)0, /*nb_nonzero*/
- 0, /*nb_invert*/
- 0, /*nb_lshift*/
- 0, /*nb_rshift*/
- 0, /*nb_and*/
- 0, /*nb_xor*/
- 0, /*nb_or*/
- (coercion)0, /*nb_coerce*/
- (unaryfunc)PySwigObject_long, /*nb_int*/
- (unaryfunc)PySwigObject_long, /*nb_long*/
- (unaryfunc)0, /*nb_float*/
- (unaryfunc)PySwigObject_oct, /*nb_oct*/
- (unaryfunc)PySwigObject_hex, /*nb_hex*/
-#if PY_VERSION_HEX >= 0x02020000
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_true_divide */
-#elif PY_VERSION_HEX >= 0x02000000
- 0,0,0,0,0,0,0,0,0,0,0 /* nb_inplace_add -> nb_inplace_or */
-#endif
- };
-
- static PyTypeObject pyswigobject_type;
- static int type_init = 0;
- if (!type_init) {
- const PyTypeObject tmp
- = {
- PyObject_HEAD_INIT(NULL)
- 0, /* ob_size */
- (char *)"PySwigObject", /* tp_name */
- sizeof(PySwigObject), /* tp_basicsize */
- 0, /* tp_itemsize */
- (destructor)PySwigObject_dealloc, /* tp_dealloc */
- (printfunc)PySwigObject_print, /* tp_print */
-#if PY_VERSION_HEX < 0x02020000
- (getattrfunc)PySwigObject_getattr, /* tp_getattr */
-#else
- (getattrfunc)0, /* tp_getattr */
-#endif
- (setattrfunc)0, /* tp_setattr */
- (cmpfunc)PySwigObject_compare, /* tp_compare */
- (reprfunc)PySwigObject_repr, /* tp_repr */
- &PySwigObject_as_number, /* tp_as_number */
- 0, /* tp_as_sequence */
- 0, /* tp_as_mapping */
- (hashfunc)0, /* tp_hash */
- (ternaryfunc)0, /* tp_call */
- (reprfunc)PySwigObject_str, /* tp_str */
- PyObject_GenericGetAttr, /* tp_getattro */
- 0, /* tp_setattro */
- 0, /* tp_as_buffer */
- Py_TPFLAGS_DEFAULT, /* tp_flags */
- swigobject_doc, /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
-#if PY_VERSION_HEX >= 0x02020000
- 0, /* tp_iter */
- 0, /* tp_iternext */
- swigobject_methods, /* tp_methods */
- 0, /* tp_members */
- 0, /* tp_getset */
- 0, /* tp_base */
- 0, /* tp_dict */
- 0, /* tp_descr_get */
- 0, /* tp_descr_set */
- 0, /* tp_dictoffset */
- 0, /* tp_init */
- 0, /* tp_alloc */
- 0, /* tp_new */
- 0, /* tp_free */
- 0, /* tp_is_gc */
- 0, /* tp_bases */
- 0, /* tp_mro */
- 0, /* tp_cache */
- 0, /* tp_subclasses */
- 0, /* tp_weaklist */
-#endif
-#if PY_VERSION_HEX >= 0x02030000
- 0, /* tp_del */
-#endif
-#ifdef COUNT_ALLOCS
- 0,0,0,0 /* tp_alloc -> tp_next */
-#endif
- };
- pyswigobject_type = tmp;
- pyswigobject_type.ob_type = &PyType_Type;
- type_init = 1;
- }
- return &pyswigobject_type;
-}
-
-SWIGRUNTIME PyObject *
-PySwigObject_New(void *ptr, swig_type_info *ty, int own)
-{
- PySwigObject *sobj = PyObject_NEW(PySwigObject, PySwigObject_type());
- if (sobj) {
- sobj->ptr = ptr;
- sobj->ty = ty;
- sobj->own = own;
- sobj->next = 0;
- }
- return (PyObject *)sobj;
-}
-
-/* -----------------------------------------------------------------------------
- * Implements a simple Swig Packed type, and use it instead of string
- * ----------------------------------------------------------------------------- */
-
-typedef struct {
- PyObject_HEAD
- void *pack;
- swig_type_info *ty;
- size_t size;
-} PySwigPacked;
-
-SWIGRUNTIME int
-PySwigPacked_print(PySwigPacked *v, FILE *fp, int SWIGUNUSEDPARM(flags))
-{
- char result[SWIG_BUFFER_SIZE];
- fputs("<Swig Packed ", fp);
- if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) {
- fputs("at ", fp);
- fputs(result, fp);
- }
- fputs(v->ty->name,fp);
- fputs(">", fp);
- return 0;
-}
-
-SWIGRUNTIME PyObject *
-PySwigPacked_repr(PySwigPacked *v)
-{
- char result[SWIG_BUFFER_SIZE];
- if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))) {
- return PyString_FromFormat("<Swig Packed at %s%s>", result, v->ty->name);
- } else {
- return PyString_FromFormat("<Swig Packed %s>", v->ty->name);
- }
-}
-
-SWIGRUNTIME PyObject *
-PySwigPacked_str(PySwigPacked *v)
-{
- char result[SWIG_BUFFER_SIZE];
- if (SWIG_PackDataName(result, v->pack, v->size, 0, sizeof(result))){
- return PyString_FromFormat("%s%s", result, v->ty->name);
- } else {
- return PyString_FromString(v->ty->name);
- }
-}
-
-SWIGRUNTIME int
-PySwigPacked_compare(PySwigPacked *v, PySwigPacked *w)
-{
- size_t i = v->size;
- size_t j = w->size;
- int s = (i < j) ? -1 : ((i > j) ? 1 : 0);
- return s ? s : strncmp((char *)v->pack, (char *)w->pack, 2*v->size);
-}
-
-SWIGRUNTIME PyTypeObject* _PySwigPacked_type(void);
-
-SWIGRUNTIME PyTypeObject*
-PySwigPacked_type(void) {
- static PyTypeObject *SWIG_STATIC_POINTER(type) = _PySwigPacked_type();
- return type;
-}
-
-SWIGRUNTIMEINLINE int
-PySwigPacked_Check(PyObject *op) {
- return ((op)->ob_type == _PySwigPacked_type())
- || (strcmp((op)->ob_type->tp_name,"PySwigPacked") == 0);
-}
-
-SWIGRUNTIME void
-PySwigPacked_dealloc(PyObject *v)
-{
- if (PySwigPacked_Check(v)) {
- PySwigPacked *sobj = (PySwigPacked *) v;
- free(sobj->pack);
- }
- PyObject_DEL(v);
-}
-
-SWIGRUNTIME PyTypeObject*
-_PySwigPacked_type(void) {
- static char swigpacked_doc[] = "Swig object carries a C/C++ instance pointer";
- static PyTypeObject pyswigpacked_type;
- static int type_init = 0;
- if (!type_init) {
- const PyTypeObject tmp
- = {
- PyObject_HEAD_INIT(NULL)
- 0, /* ob_size */
- (char *)"PySwigPacked", /* tp_name */
- sizeof(PySwigPacked), /* tp_basicsize */
- 0, /* tp_itemsize */
- (destructor)PySwigPacked_dealloc, /* tp_dealloc */
- (printfunc)PySwigPacked_print, /* tp_print */
- (getattrfunc)0, /* tp_getattr */
- (setattrfunc)0, /* tp_setattr */
- (cmpfunc)PySwigPacked_compare, /* tp_compare */
- (reprfunc)PySwigPacked_repr, /* tp_repr */
- 0, /* tp_as_number */
- 0, /* tp_as_sequence */
- 0, /* tp_as_mapping */
- (hashfunc)0, /* tp_hash */
- (ternaryfunc)0, /* tp_call */
- (reprfunc)PySwigPacked_str, /* tp_str */
- PyObject_GenericGetAttr, /* tp_getattro */
- 0, /* tp_setattro */
- 0, /* tp_as_buffer */
- Py_TPFLAGS_DEFAULT, /* tp_flags */
- swigpacked_doc, /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
-#if PY_VERSION_HEX >= 0x02020000
- 0, /* tp_iter */
- 0, /* tp_iternext */
- 0, /* tp_methods */
- 0, /* tp_members */
- 0, /* tp_getset */
- 0, /* tp_base */
- 0, /* tp_dict */
- 0, /* tp_descr_get */
- 0, /* tp_descr_set */
- 0, /* tp_dictoffset */
- 0, /* tp_init */
- 0, /* tp_alloc */
- 0, /* tp_new */
- 0, /* tp_free */
- 0, /* tp_is_gc */
- 0, /* tp_bases */
- 0, /* tp_mro */
- 0, /* tp_cache */
- 0, /* tp_subclasses */
- 0, /* tp_weaklist */
-#endif
-#if PY_VERSION_HEX >= 0x02030000
- 0, /* tp_del */
-#endif
-#ifdef COUNT_ALLOCS
- 0,0,0,0 /* tp_alloc -> tp_next */
-#endif
- };
- pyswigpacked_type = tmp;
- pyswigpacked_type.ob_type = &PyType_Type;
- type_init = 1;
- }
- return &pyswigpacked_type;
-}
-
-SWIGRUNTIME PyObject *
-PySwigPacked_New(void *ptr, size_t size, swig_type_info *ty)
-{
- PySwigPacked *sobj = PyObject_NEW(PySwigPacked, PySwigPacked_type());
- if (sobj) {
- void *pack = malloc(size);
- if (pack) {
- memcpy(pack, ptr, size);
- sobj->pack = pack;
- sobj->ty = ty;
- sobj->size = size;
- } else {
- PyObject_DEL((PyObject *) sobj);
- sobj = 0;
- }
- }
- return (PyObject *) sobj;
-}
-
-SWIGRUNTIME swig_type_info *
-PySwigPacked_UnpackData(PyObject *obj, void *ptr, size_t size)
-{
- if (PySwigPacked_Check(obj)) {
- PySwigPacked *sobj = (PySwigPacked *)obj;
- if (sobj->size != size) return 0;
- memcpy(ptr, sobj->pack, size);
- return sobj->ty;
- } else {
- return 0;
- }
-}
-
-/* -----------------------------------------------------------------------------
- * pointers/data manipulation
- * ----------------------------------------------------------------------------- */
-
-SWIGRUNTIMEINLINE PyObject *
-_SWIG_This(void)
-{
- return PyString_FromString("this");
-}
-
-SWIGRUNTIME PyObject *
-SWIG_This(void)
-{
- static PyObject *SWIG_STATIC_POINTER(swig_this) = _SWIG_This();
- return swig_this;
-}
-
-/* #define SWIG_PYTHON_SLOW_GETSET_THIS */
-
-SWIGRUNTIME PySwigObject *
-SWIG_Python_GetSwigThis(PyObject *pyobj)
-{
- if (PySwigObject_Check(pyobj)) {
- return (PySwigObject *) pyobj;
- } else {
- PyObject *obj = 0;
-#if (!defined(SWIG_PYTHON_SLOW_GETSET_THIS) && (PY_VERSION_HEX >= 0x02030000))
- if (PyInstance_Check(pyobj)) {
- obj = _PyInstance_Lookup(pyobj, SWIG_This());
- } else {
- PyObject **dictptr = _PyObject_GetDictPtr(pyobj);
- if (dictptr != NULL) {
- PyObject *dict = *dictptr;
- obj = dict ? PyDict_GetItem(dict, SWIG_This()) : 0;
- } else {
-#ifdef PyWeakref_CheckProxy
- if (PyWeakref_CheckProxy(pyobj)) {
- PyObject *wobj = PyWeakref_GET_OBJECT(pyobj);
- return wobj ? SWIG_Python_GetSwigThis(wobj) : 0;
- }
-#endif
- obj = PyObject_GetAttr(pyobj,SWIG_This());
- if (obj) {
- Py_DECREF(obj);
- } else {
- if (PyErr_Occurred()) PyErr_Clear();
- return 0;
- }
- }
- }
-#else
- obj = PyObject_GetAttr(pyobj,SWIG_This());
- if (obj) {
- Py_DECREF(obj);
- } else {
- if (PyErr_Occurred()) PyErr_Clear();
- return 0;
- }
-#endif
- if (obj && !PySwigObject_Check(obj)) {
- /* a PyObject is called 'this', try to get the 'real this'
- PySwigObject from it */
- return SWIG_Python_GetSwigThis(obj);
- }
- return (PySwigObject *)obj;
- }
-}
-
-/* Acquire a pointer value */
-
-SWIGRUNTIME int
-SWIG_Python_AcquirePtr(PyObject *obj, int own) {
- if (own) {
- PySwigObject *sobj = SWIG_Python_GetSwigThis(obj);
- if (sobj) {
- int oldown = sobj->own;
- sobj->own = own;
- return oldown;
- }
- }
- return 0;
-}
-
-/* Convert a pointer value */
-
-SWIGRUNTIME int
-SWIG_Python_ConvertPtrAndOwn(PyObject *obj, void **ptr, swig_type_info *ty, int flags, int *own) {
- if (!obj) return SWIG_ERROR;
- if (obj == Py_None) {
- if (ptr) *ptr = 0;
- return SWIG_OK;
- } else {
- PySwigObject *sobj = SWIG_Python_GetSwigThis(obj);
- while (sobj) {
- void *vptr = sobj->ptr;
- if (ty) {
- swig_type_info *to = sobj->ty;
- if (to == ty) {
- /* no type cast needed */
- if (ptr) *ptr = vptr;
- break;
- } else {
- swig_cast_info *tc = SWIG_TypeCheck(to->name,ty);
- if (!tc) {
- sobj = (PySwigObject *)sobj->next;
- } else {
- if (ptr) *ptr = SWIG_TypeCast(tc,vptr);
- break;
- }
- }
- } else {
- if (ptr) *ptr = vptr;
- break;
- }
- }
- if (sobj) {
- if (own) *own = sobj->own;
- if (flags & SWIG_POINTER_DISOWN) {
- sobj->own = 0;
- }
- return SWIG_OK;
- } else {
- int res = SWIG_ERROR;
- if (flags & SWIG_POINTER_IMPLICIT_CONV) {
- PySwigClientData *data = ty ? (PySwigClientData *) ty->clientdata : 0;
- if (data && !data->implicitconv) {
- PyObject *klass = data->klass;
- if (klass) {
- PyObject *impconv;
- data->implicitconv = 1; /* avoid recursion and call 'explicit' constructors*/
- impconv = SWIG_Python_CallFunctor(klass, obj);
- data->implicitconv = 0;
- if (PyErr_Occurred()) {
- PyErr_Clear();
- impconv = 0;
- }
- if (impconv) {
- PySwigObject *iobj = SWIG_Python_GetSwigThis(impconv);
- if (iobj) {
- void *vptr;
- res = SWIG_Python_ConvertPtrAndOwn((PyObject*)iobj, &vptr, ty, 0, 0);
- if (SWIG_IsOK(res)) {
- if (ptr) {
- *ptr = vptr;
- /* transfer the ownership to 'ptr' */
- iobj->own = 0;
- res = SWIG_AddCast(res);
- res = SWIG_AddNewMask(res);
- } else {
- res = SWIG_AddCast(res);
- }
- }
- }
- Py_DECREF(impconv);
- }
- }
- }
- }
- return res;
- }
- }
-}
-
-/* Convert a function ptr value */
-
-SWIGRUNTIME int
-SWIG_Python_ConvertFunctionPtr(PyObject *obj, void **ptr, swig_type_info *ty) {
- if (!PyCFunction_Check(obj)) {
- return SWIG_ConvertPtr(obj, ptr, ty, 0);
- } else {
- void *vptr = 0;
-
- /* here we get the method pointer for callbacks */
- const char *doc = (((PyCFunctionObject *)obj) -> m_ml -> ml_doc);
- const char *desc = doc ? strstr(doc, "swig_ptr: ") : 0;
- if (desc) {
- desc = ty ? SWIG_UnpackVoidPtr(desc + 10, &vptr, ty->name) : 0;
- if (!desc) return SWIG_ERROR;
- }
- if (ty) {
- swig_cast_info *tc = SWIG_TypeCheck(desc,ty);
- if (!tc) return SWIG_ERROR;
- *ptr = SWIG_TypeCast(tc,vptr);
- } else {
- *ptr = vptr;
- }
- return SWIG_OK;
- }
-}
-
-/* Convert a packed value value */
-
-SWIGRUNTIME int
-SWIG_Python_ConvertPacked(PyObject *obj, void *ptr, size_t sz, swig_type_info *ty) {
- swig_type_info *to = PySwigPacked_UnpackData(obj, ptr, sz);
- if (!to) return SWIG_ERROR;
- if (ty) {
- if (to != ty) {
- /* check type cast? */
- swig_cast_info *tc = SWIG_TypeCheck(to->name,ty);
- if (!tc) return SWIG_ERROR;
- }
- }
- return SWIG_OK;
-}
-
-/* -----------------------------------------------------------------------------
- * Create a new pointer object
- * ----------------------------------------------------------------------------- */
-
-/*
- Create a new instance object, whitout calling __init__, and set the
- 'this' attribute.
-*/
-
-SWIGRUNTIME PyObject*
-SWIG_Python_NewShadowInstance(PySwigClientData *data, PyObject *swig_this)
-{
-#if (PY_VERSION_HEX >= 0x02020000)
- PyObject *inst = 0;
- PyObject *newraw = data->newraw;
- if (newraw) {
- inst = PyObject_Call(newraw, data->newargs, NULL);
- if (inst) {
-#if !defined(SWIG_PYTHON_SLOW_GETSET_THIS)
- PyObject **dictptr = _PyObject_GetDictPtr(inst);
- if (dictptr != NULL) {
- PyObject *dict = *dictptr;
- if (dict == NULL) {
- dict = PyDict_New();
- *dictptr = dict;
- PyDict_SetItem(dict, SWIG_This(), swig_this);
- }
- }
-#else
- PyObject *key = SWIG_This();
- PyObject_SetAttr(inst, key, swig_this);
-#endif
- }
- } else {
- PyObject *dict = PyDict_New();
- PyDict_SetItem(dict, SWIG_This(), swig_this);
- inst = PyInstance_NewRaw(data->newargs, dict);
- Py_DECREF(dict);
- }
- return inst;
-#else
-#if (PY_VERSION_HEX >= 0x02010000)
- PyObject *inst;
- PyObject *dict = PyDict_New();
- PyDict_SetItem(dict, SWIG_This(), swig_this);
- inst = PyInstance_NewRaw(data->newargs, dict);
- Py_DECREF(dict);
- return (PyObject *) inst;
-#else
- PyInstanceObject *inst = PyObject_NEW(PyInstanceObject, &PyInstance_Type);
- if (inst == NULL) {
- return NULL;
- }
- inst->in_class = (PyClassObject *)data->newargs;
- Py_INCREF(inst->in_class);
- inst->in_dict = PyDict_New();
- if (inst->in_dict == NULL) {
- Py_DECREF(inst);
- return NULL;
- }
-#ifdef Py_TPFLAGS_HAVE_WEAKREFS
- inst->in_weakreflist = NULL;
-#endif
-#ifdef Py_TPFLAGS_GC
- PyObject_GC_Init(inst);
-#endif
- PyDict_SetItem(inst->in_dict, SWIG_This(), swig_this);
- return (PyObject *) inst;
-#endif
-#endif
-}
-
-SWIGRUNTIME void
-SWIG_Python_SetSwigThis(PyObject *inst, PyObject *swig_this)
-{
- PyObject *dict;
-#if (PY_VERSION_HEX >= 0x02020000) && !defined(SWIG_PYTHON_SLOW_GETSET_THIS)
- PyObject **dictptr = _PyObject_GetDictPtr(inst);
- if (dictptr != NULL) {
- dict = *dictptr;
- if (dict == NULL) {
- dict = PyDict_New();
- *dictptr = dict;
- }
- PyDict_SetItem(dict, SWIG_This(), swig_this);
- return;
- }
-#endif
- dict = PyObject_GetAttrString(inst, (char*)"__dict__");
- PyDict_SetItem(dict, SWIG_This(), swig_this);
- Py_DECREF(dict);
-}
-
-
-SWIGINTERN PyObject *
-SWIG_Python_InitShadowInstance(PyObject *args) {
- PyObject *obj[2];
- if (!SWIG_Python_UnpackTuple(args,(char*)"swiginit", 2, 2, obj)) {
- return NULL;
- } else {
- PySwigObject *sthis = SWIG_Python_GetSwigThis(obj[0]);
- if (sthis) {
- PySwigObject_append((PyObject*) sthis, obj[1]);
- } else {
- SWIG_Python_SetSwigThis(obj[0], obj[1]);
- }
- return SWIG_Py_Void();
- }
-}
-
-/* Create a new pointer object */
-
-SWIGRUNTIME PyObject *
-SWIG_Python_NewPointerObj(void *ptr, swig_type_info *type, int flags) {
- if (!ptr) {
- return SWIG_Py_Void();
- } else {
- int own = (flags & SWIG_POINTER_OWN) ? SWIG_POINTER_OWN : 0;
- PyObject *robj = PySwigObject_New(ptr, type, own);
- PySwigClientData *clientdata = type ? (PySwigClientData *)(type->clientdata) : 0;
- if (clientdata && !(flags & SWIG_POINTER_NOSHADOW)) {
- PyObject *inst = SWIG_Python_NewShadowInstance(clientdata, robj);
- if (inst) {
- Py_DECREF(robj);
- robj = inst;
- }
- }
- return robj;
- }
-}
-
-/* Create a new packed object */
-
-SWIGRUNTIMEINLINE PyObject *
-SWIG_Python_NewPackedObj(void *ptr, size_t sz, swig_type_info *type) {
- return ptr ? PySwigPacked_New((void *) ptr, sz, type) : SWIG_Py_Void();
-}
-
-/* -----------------------------------------------------------------------------*
- * Get type list
- * -----------------------------------------------------------------------------*/
-
-#ifdef SWIG_LINK_RUNTIME
-void *SWIG_ReturnGlobalTypeList(void *);
-#endif
-
-SWIGRUNTIME swig_module_info *
-SWIG_Python_GetModule(void) {
- static void *type_pointer = (void *)0;
- /* first check if module already created */
- if (!type_pointer) {
-#ifdef SWIG_LINK_RUNTIME
- type_pointer = SWIG_ReturnGlobalTypeList((void *)0);
-#else
- type_pointer = PyCObject_Import((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION,
- (char*)"type_pointer" SWIG_TYPE_TABLE_NAME);
- if (PyErr_Occurred()) {
- PyErr_Clear();
- type_pointer = (void *)0;
- }
-#endif
- }
- return (swig_module_info *) type_pointer;
-}
-
-#if PY_MAJOR_VERSION < 2
-/* PyModule_AddObject function was introduced in Python 2.0. The following function
- is copied out of Python/modsupport.c in python version 2.3.4 */
-SWIGINTERN int
-PyModule_AddObject(PyObject *m, char *name, PyObject *o)
-{
- PyObject *dict;
- if (!PyModule_Check(m)) {
- PyErr_SetString(PyExc_TypeError,
- "PyModule_AddObject() needs module as first arg");
- return SWIG_ERROR;
- }
- if (!o) {
- PyErr_SetString(PyExc_TypeError,
- "PyModule_AddObject() needs non-NULL value");
- return SWIG_ERROR;
- }
-
- dict = PyModule_GetDict(m);
- if (dict == NULL) {
- /* Internal error -- modules must have a dict! */
- PyErr_Format(PyExc_SystemError, "module '%s' has no __dict__",
- PyModule_GetName(m));
- return SWIG_ERROR;
- }
- if (PyDict_SetItemString(dict, name, o))
- return SWIG_ERROR;
- Py_DECREF(o);
- return SWIG_OK;
-}
-#endif
-
-SWIGRUNTIME void
-SWIG_Python_DestroyModule(void *vptr)
-{
- swig_module_info *swig_module = (swig_module_info *) vptr;
- swig_type_info **types = swig_module->types;
- size_t i;
- for (i =0; i < swig_module->size; ++i) {
- swig_type_info *ty = types[i];
- if (ty->owndata) {
- PySwigClientData *data = (PySwigClientData *) ty->clientdata;
- if (data) PySwigClientData_Del(data);
- }
- }
- Py_DECREF(SWIG_This());
-}
-
-SWIGRUNTIME void
-SWIG_Python_SetModule(swig_module_info *swig_module) {
- static PyMethodDef swig_empty_runtime_method_table[] = { {NULL, NULL, 0, NULL} };/* Sentinel */
-
- PyObject *module = Py_InitModule((char*)"swig_runtime_data" SWIG_RUNTIME_VERSION,
- swig_empty_runtime_method_table);
- PyObject *pointer = PyCObject_FromVoidPtr((void *) swig_module, SWIG_Python_DestroyModule);
- if (pointer && module) {
- PyModule_AddObject(module, (char*)"type_pointer" SWIG_TYPE_TABLE_NAME, pointer);
- } else {
- Py_XDECREF(pointer);
- }
-}
-
-/* The python cached type query */
-SWIGRUNTIME PyObject *
-SWIG_Python_TypeCache(void) {
- static PyObject *SWIG_STATIC_POINTER(cache) = PyDict_New();
- return cache;
-}
-
-SWIGRUNTIME swig_type_info *
-SWIG_Python_TypeQuery(const char *type)
-{
- PyObject *cache = SWIG_Python_TypeCache();
- PyObject *key = PyString_FromString(type);
- PyObject *obj = PyDict_GetItem(cache, key);
- swig_type_info *descriptor;
- if (obj) {
- descriptor = (swig_type_info *) PyCObject_AsVoidPtr(obj);
- } else {
- swig_module_info *swig_module = SWIG_Python_GetModule();
- descriptor = SWIG_TypeQueryModule(swig_module, swig_module, type);
- if (descriptor) {
- obj = PyCObject_FromVoidPtr(descriptor, NULL);
- PyDict_SetItem(cache, key, obj);
- Py_DECREF(obj);
- }
- }
- Py_DECREF(key);
- return descriptor;
-}
-
-/*
- For backward compatibility only
-*/
-#define SWIG_POINTER_EXCEPTION 0
-#define SWIG_arg_fail(arg) SWIG_Python_ArgFail(arg)
-#define SWIG_MustGetPtr(p, type, argnum, flags) SWIG_Python_MustGetPtr(p, type, argnum, flags)
-
-SWIGRUNTIME int
-SWIG_Python_AddErrMesg(const char* mesg, int infront)
-{
- if (PyErr_Occurred()) {
- PyObject *type = 0;
- PyObject *value = 0;
- PyObject *traceback = 0;
- PyErr_Fetch(&type, &value, &traceback);
- if (value) {
- PyObject *old_str = PyObject_Str(value);
- Py_XINCREF(type);
- PyErr_Clear();
- if (infront) {
- PyErr_Format(type, "%s %s", mesg, PyString_AsString(old_str));
- } else {
- PyErr_Format(type, "%s %s", PyString_AsString(old_str), mesg);
- }
- Py_DECREF(old_str);
- }
- return 1;
- } else {
- return 0;
- }
-}
-
-SWIGRUNTIME int
-SWIG_Python_ArgFail(int argnum)
-{
- if (PyErr_Occurred()) {
- /* add information about failing argument */
- char mesg[256];
- PyOS_snprintf(mesg, sizeof(mesg), "argument number %d:", argnum);
- return SWIG_Python_AddErrMesg(mesg, 1);
- } else {
- return 0;
- }
-}
-
-SWIGRUNTIMEINLINE const char *
-PySwigObject_GetDesc(PyObject *self)
-{
- PySwigObject *v = (PySwigObject *)self;
- swig_type_info *ty = v ? v->ty : 0;
- return ty ? ty->str : (char*)"";
-}
-
-SWIGRUNTIME void
-SWIG_Python_TypeError(const char *type, PyObject *obj)
-{
- if (type) {
-#if defined(SWIG_COBJECT_TYPES)
- if (obj && PySwigObject_Check(obj)) {
- const char *otype = (const char *) PySwigObject_GetDesc(obj);
- if (otype) {
- PyErr_Format(PyExc_TypeError, "a '%s' is expected, 'PySwigObject(%s)' is received",
- type, otype);
- return;
- }
- } else
-#endif
- {
- const char *otype = (obj ? obj->ob_type->tp_name : 0);
- if (otype) {
- PyObject *str = PyObject_Str(obj);
- const char *cstr = str ? PyString_AsString(str) : 0;
- if (cstr) {
- PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s(%s)' is received",
- type, otype, cstr);
- } else {
- PyErr_Format(PyExc_TypeError, "a '%s' is expected, '%s' is received",
- type, otype);
- }
- Py_XDECREF(str);
- return;
- }
- }
- PyErr_Format(PyExc_TypeError, "a '%s' is expected", type);
- } else {
- PyErr_Format(PyExc_TypeError, "unexpected type is received");
- }
-}
-
-
-/* Convert a pointer value, signal an exception on a type mismatch */
-SWIGRUNTIME void *
-SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int argnum, int flags) {
- void *result;
- if (SWIG_Python_ConvertPtr(obj, &result, ty, flags) == -1) {
- PyErr_Clear();
- if (flags & SWIG_POINTER_EXCEPTION) {
- SWIG_Python_TypeError(SWIG_TypePrettyName(ty), obj);
- SWIG_Python_ArgFail(argnum);
- }
- }
- return result;
-}
-
-
-#ifdef __cplusplus
-#if 0
-{ /* cc-mode */
-#endif
-}
-#endif
-
-
-
-#define SWIG_exception_fail(code, msg) do { SWIG_Error(code, msg); SWIG_fail; } while(0)
-
-#define SWIG_contract_assert(expr, msg) if (!(expr)) { SWIG_Error(SWIG_RuntimeError, msg); SWIG_fail; } else
-
-
-
-/* -------- TYPES TABLE (BEGIN) -------- */
-
-#define SWIGTYPE_p_char swig_types[0]
-#define SWIGTYPE_p_gsl_complex swig_types[1]
-static swig_type_info *swig_types[3];
-static swig_module_info swig_module = {swig_types, 2, 0, 0, 0, 0};
-#define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
-#define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
-
-/* -------- TYPES TABLE (END) -------- */
-
-#if (PY_VERSION_HEX <= 0x02000000)
-# if !defined(SWIG_PYTHON_CLASSIC)
-# error "This python version requires swig to be run with the '-classic' option"
-# endif
-#endif
-
-/*-----------------------------------------------
- @(target):= _ttest.so
- ------------------------------------------------*/
-#define SWIG_init init_ttest
-
-#define SWIG_name "_ttest"
-
-#define SWIGVERSION 0x010331
-#define SWIG_VERSION SWIGVERSION
-
-
-#define SWIG_as_voidptr(a) (void *)((const void *)(a))
-#define SWIG_as_voidptrptr(a) ((void)SWIG_as_voidptr(*a),(void**)(a))
-
-
-#define SWIG_FILE_WITH_INIT
-#include "ttest.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-SWIGINTERN PyObject *_wrap_testtimer(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
- PyObject *resultobj = 0;
-
- if (!PyArg_ParseTuple(args,(char *)":testtimer")) SWIG_fail;
- testtimer();
- resultobj = SWIG_Py_Void();
- return resultobj;
-fail:
- return NULL;
-}
-
-
-static PyMethodDef SwigMethods[] = {
- { (char *)"testtimer", _wrap_testtimer, METH_VARARGS, NULL},
- { NULL, NULL, 0, NULL }
-};
-
-
-/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
-
-static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0};
-static swig_type_info _swigt__p_gsl_complex = {"_p_gsl_complex", "gsl_complex *|msl_complex_t *", 0, 0, (void*)0, 0};
-
-static swig_type_info *swig_type_initial[] = {
- &_swigt__p_char,
- &_swigt__p_gsl_complex,
-};
-
-static swig_cast_info _swigc__p_char[] = { {&_swigt__p_char, 0, 0, 0},{0, 0, 0, 0}};
-static swig_cast_info _swigc__p_gsl_complex[] = { {&_swigt__p_gsl_complex, 0, 0, 0},{0, 0, 0, 0}};
-
-static swig_cast_info *swig_cast_initial[] = {
- _swigc__p_char,
- _swigc__p_gsl_complex,
-};
-
-
-/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */
-
-static swig_const_info swig_const_table[] = {
-{0, 0, 0, 0.0, 0, 0}};
-
-#ifdef __cplusplus
-}
-#endif
-/* -----------------------------------------------------------------------------
- * Type initialization:
- * This problem is tough by the requirement that no dynamic
- * memory is used. Also, since swig_type_info structures store pointers to
- * swig_cast_info structures and swig_cast_info structures store pointers back
- * to swig_type_info structures, we need some lookup code at initialization.
- * The idea is that swig generates all the structures that are needed.
- * The runtime then collects these partially filled structures.
- * The SWIG_InitializeModule function takes these initial arrays out of
- * swig_module, and does all the lookup, filling in the swig_module.types
- * array with the correct data and linking the correct swig_cast_info
- * structures together.
- *
- * The generated swig_type_info structures are assigned staticly to an initial
- * array. We just loop through that array, and handle each type individually.
- * First we lookup if this type has been already loaded, and if so, use the
- * loaded structure instead of the generated one. Then we have to fill in the
- * cast linked list. The cast data is initially stored in something like a
- * two-dimensional array. Each row corresponds to a type (there are the same
- * number of rows as there are in the swig_type_initial array). Each entry in
- * a column is one of the swig_cast_info structures for that type.
- * The cast_initial array is actually an array of arrays, because each row has
- * a variable number of columns. So to actually build the cast linked list,
- * we find the array of casts associated with the type, and loop through it
- * adding the casts to the list. The one last trick we need to do is making
- * sure the type pointer in the swig_cast_info struct is correct.
- *
- * First off, we lookup the cast->type name to see if it is already loaded.
- * There are three cases to handle:
- * 1) If the cast->type has already been loaded AND the type we are adding
- * casting info to has not been loaded (it is in this module), THEN we
- * replace the cast->type pointer with the type pointer that has already
- * been loaded.
- * 2) If BOTH types (the one we are adding casting info to, and the
- * cast->type) are loaded, THEN the cast info has already been loaded by
- * the previous module so we just ignore it.
- * 3) Finally, if cast->type has not already been loaded, then we add that
- * swig_cast_info to the linked list (because the cast->type) pointer will
- * be correct.
- * ----------------------------------------------------------------------------- */
-
-#ifdef __cplusplus
-extern "C" {
-#if 0
-} /* c-mode */
-#endif
-#endif
-
-#if 0
-#define SWIGRUNTIME_DEBUG
-#endif
-
-
-SWIGRUNTIME void
-SWIG_InitializeModule(void *clientdata) {
- size_t i;
- swig_module_info *module_head, *iter;
- int found;
-
- clientdata = clientdata;
-
- /* check to see if the circular list has been setup, if not, set it up */
- if (swig_module.next==0) {
- /* Initialize the swig_module */
- swig_module.type_initial = swig_type_initial;
- swig_module.cast_initial = swig_cast_initial;
- swig_module.next = &swig_module;
- }
-
- /* Try and load any already created modules */
- module_head = SWIG_GetModule(clientdata);
- if (!module_head) {
- /* This is the first module loaded for this interpreter */
- /* so set the swig module into the interpreter */
- SWIG_SetModule(clientdata, &swig_module);
- module_head = &swig_module;
- } else {
- /* the interpreter has loaded a SWIG module, but has it loaded this one? */
- found=0;
- iter=module_head;
- do {
- if (iter==&swig_module) {
- found=1;
- break;
- }
- iter=iter->next;
- } while (iter!= module_head);
-
- /* if the is found in the list, then all is done and we may leave */
- if (found) return;
- /* otherwise we must add out module into the list */
- swig_module.next = module_head->next;
- module_head->next = &swig_module;
- }
-
- /* Now work on filling in swig_module.types */
-#ifdef SWIGRUNTIME_DEBUG
- printf("SWIG_InitializeModule: size %d\n", swig_module.size);
-#endif
- for (i = 0; i < swig_module.size; ++i) {
- swig_type_info *type = 0;
- swig_type_info *ret;
- swig_cast_info *cast;
-
-#ifdef SWIGRUNTIME_DEBUG
- printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name);
-#endif
-
- /* if there is another module already loaded */
- if (swig_module.next != &swig_module) {
- type = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, swig_module.type_initial[i]->name);
- }
- if (type) {
- /* Overwrite clientdata field */
-#ifdef SWIGRUNTIME_DEBUG
- printf("SWIG_InitializeModule: found type %s\n", type->name);
-#endif
- if (swig_module.type_initial[i]->clientdata) {
- type->clientdata = swig_module.type_initial[i]->clientdata;
-#ifdef SWIGRUNTIME_DEBUG
- printf("SWIG_InitializeModule: found and overwrite type %s \n", type->name);
-#endif
- }
- } else {
- type = swig_module.type_initial[i];
- }
-
- /* Insert casting types */
- cast = swig_module.cast_initial[i];
- while (cast->type) {
- /* Don't need to add information already in the list */
- ret = 0;
-#ifdef SWIGRUNTIME_DEBUG
- printf("SWIG_InitializeModule: look cast %s\n", cast->type->name);
-#endif
- if (swig_module.next != &swig_module) {
- ret = SWIG_MangledTypeQueryModule(swig_module.next, &swig_module, cast->type->name);
-#ifdef SWIGRUNTIME_DEBUG
- if (ret) printf("SWIG_InitializeModule: found cast %s\n", ret->name);
-#endif
- }
- if (ret) {
- if (type == swig_module.type_initial[i]) {
-#ifdef SWIGRUNTIME_DEBUG
- printf("SWIG_InitializeModule: skip old type %s\n", ret->name);
-#endif
- cast->type = ret;
- ret = 0;
- } else {
- /* Check for casting already in the list */
- swig_cast_info *ocast = SWIG_TypeCheck(ret->name, type);
-#ifdef SWIGRUNTIME_DEBUG
- if (ocast) printf("SWIG_InitializeModule: skip old cast %s\n", ret->name);
-#endif
- if (!ocast) ret = 0;
- }
- }
-
- if (!ret) {
-#ifdef SWIGRUNTIME_DEBUG
- printf("SWIG_InitializeModule: adding cast %s\n", cast->type->name);
-#endif
- if (type->cast) {
- type->cast->prev = cast;
- cast->next = type->cast;
- }
- type->cast = cast;
- }
- cast++;
- }
- /* Set entry in modules->types array equal to the type */
- swig_module.types[i] = type;
- }
- swig_module.types[i] = 0;
-
-#ifdef SWIGRUNTIME_DEBUG
- printf("**** SWIG_InitializeModule: Cast List ******\n");
- for (i = 0; i < swig_module.size; ++i) {
- int j = 0;
- swig_cast_info *cast = swig_module.cast_initial[i];
- printf("SWIG_InitializeModule: type %d %s\n", i, swig_module.type_initial[i]->name);
- while (cast->type) {
- printf("SWIG_InitializeModule: cast type %s\n", cast->type->name);
- cast++;
- ++j;
- }
- printf("---- Total casts: %d\n",j);
- }
- printf("**** SWIG_InitializeModule: Cast List ******\n");
-#endif
-}
-
-/* This function will propagate the clientdata field of type to
-* any new swig_type_info structures that have been added into the list
-* of equivalent types. It is like calling
-* SWIG_TypeClientData(type, clientdata) a second time.
-*/
-SWIGRUNTIME void
-SWIG_PropagateClientData(void) {
- size_t i;
- swig_cast_info *equiv;
- static int init_run = 0;
-
- if (init_run) return;
- init_run = 1;
-
- for (i = 0; i < swig_module.size; i++) {
- if (swig_module.types[i]->clientdata) {
- equiv = swig_module.types[i]->cast;
- while (equiv) {
- if (!equiv->converter) {
- if (equiv->type && !equiv->type->clientdata)
- SWIG_TypeClientData(equiv->type, swig_module.types[i]->clientdata);
- }
- equiv = equiv->next;
- }
- }
- }
-}
-
-#ifdef __cplusplus
-#if 0
-{
- /* c-mode */
-#endif
-}
-#endif
-
-
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
- /* Python-specific SWIG API */
-#define SWIG_newvarlink() SWIG_Python_newvarlink()
-#define SWIG_addvarlink(p, name, get_attr, set_attr) SWIG_Python_addvarlink(p, name, get_attr, set_attr)
-#define SWIG_InstallConstants(d, constants) SWIG_Python_InstallConstants(d, constants)
-
- /* -----------------------------------------------------------------------------
- * global variable support code.
- * ----------------------------------------------------------------------------- */
-
- typedef struct swig_globalvar {
- char *name; /* Name of global variable */
- PyObject *(*get_attr)(void); /* Return the current value */
- int (*set_attr)(PyObject *); /* Set the value */
- struct swig_globalvar *next;
- } swig_globalvar;
-
- typedef struct swig_varlinkobject {
- PyObject_HEAD
- swig_globalvar *vars;
- } swig_varlinkobject;
-
- SWIGINTERN PyObject *
- swig_varlink_repr(swig_varlinkobject *SWIGUNUSEDPARM(v)) {
- return PyString_FromString("<Swig global variables>");
- }
-
- SWIGINTERN PyObject *
- swig_varlink_str(swig_varlinkobject *v) {
- PyObject *str = PyString_FromString("(");
- swig_globalvar *var;
- for (var = v->vars; var; var=var->next) {
- PyString_ConcatAndDel(&str,PyString_FromString(var->name));
- if (var->next) PyString_ConcatAndDel(&str,PyString_FromString(", "));
- }
- PyString_ConcatAndDel(&str,PyString_FromString(")"));
- return str;
- }
-
- SWIGINTERN int
- swig_varlink_print(swig_varlinkobject *v, FILE *fp, int SWIGUNUSEDPARM(flags)) {
- PyObject *str = swig_varlink_str(v);
- fprintf(fp,"Swig global variables ");
- fprintf(fp,"%s\n", PyString_AsString(str));
- Py_DECREF(str);
- return 0;
- }
-
- SWIGINTERN void
- swig_varlink_dealloc(swig_varlinkobject *v) {
- swig_globalvar *var = v->vars;
- while (var) {
- swig_globalvar *n = var->next;
- free(var->name);
- free(var);
- var = n;
- }
- }
-
- SWIGINTERN PyObject *
- swig_varlink_getattr(swig_varlinkobject *v, char *n) {
- PyObject *res = NULL;
- swig_globalvar *var = v->vars;
- while (var) {
- if (strcmp(var->name,n) == 0) {
- res = (*var->get_attr)();
- break;
- }
- var = var->next;
- }
- if (res == NULL && !PyErr_Occurred()) {
- PyErr_SetString(PyExc_NameError,"Unknown C global variable");
- }
- return res;
- }
-
- SWIGINTERN int
- swig_varlink_setattr(swig_varlinkobject *v, char *n, PyObject *p) {
- int res = 1;
- swig_globalvar *var = v->vars;
- while (var) {
- if (strcmp(var->name,n) == 0) {
- res = (*var->set_attr)(p);
- break;
- }
- var = var->next;
- }
- if (res == 1 && !PyErr_Occurred()) {
- PyErr_SetString(PyExc_NameError,"Unknown C global variable");
- }
- return res;
- }
-
- SWIGINTERN PyTypeObject*
- swig_varlink_type(void) {
- static char varlink__doc__[] = "Swig var link object";
- static PyTypeObject varlink_type;
- static int type_init = 0;
- if (!type_init) {
- const PyTypeObject tmp
- = {
- PyObject_HEAD_INIT(NULL)
- 0, /* Number of items in variable part (ob_size) */
- (char *)"swigvarlink", /* Type name (tp_name) */
- sizeof(swig_varlinkobject), /* Basic size (tp_basicsize) */
- 0, /* Itemsize (tp_itemsize) */
- (destructor) swig_varlink_dealloc, /* Deallocator (tp_dealloc) */
- (printfunc) swig_varlink_print, /* Print (tp_print) */
- (getattrfunc) swig_varlink_getattr, /* get attr (tp_getattr) */
- (setattrfunc) swig_varlink_setattr, /* Set attr (tp_setattr) */
- 0, /* tp_compare */
- (reprfunc) swig_varlink_repr, /* tp_repr */
- 0, /* tp_as_number */
- 0, /* tp_as_sequence */
- 0, /* tp_as_mapping */
- 0, /* tp_hash */
- 0, /* tp_call */
- (reprfunc)swig_varlink_str, /* tp_str */
- 0, /* tp_getattro */
- 0, /* tp_setattro */
- 0, /* tp_as_buffer */
- 0, /* tp_flags */
- varlink__doc__, /* tp_doc */
- 0, /* tp_traverse */
- 0, /* tp_clear */
- 0, /* tp_richcompare */
- 0, /* tp_weaklistoffset */
-#if PY_VERSION_HEX >= 0x02020000
- 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0, /* tp_iter -> tp_weaklist */
-#endif
-#if PY_VERSION_HEX >= 0x02030000
- 0, /* tp_del */
-#endif
-#ifdef COUNT_ALLOCS
- 0,0,0,0 /* tp_alloc -> tp_next */
-#endif
- };
- varlink_type = tmp;
- varlink_type.ob_type = &PyType_Type;
- type_init = 1;
- }
- return &varlink_type;
- }
-
- /* Create a variable linking object for use later */
- SWIGINTERN PyObject *
- SWIG_Python_newvarlink(void) {
- swig_varlinkobject *result = PyObject_NEW(swig_varlinkobject, swig_varlink_type());
- if (result) {
- result->vars = 0;
- }
- return ((PyObject*) result);
- }
-
- SWIGINTERN void
- SWIG_Python_addvarlink(PyObject *p, char *name, PyObject *(*get_attr)(void), int (*set_attr)(PyObject *p)) {
- swig_varlinkobject *v = (swig_varlinkobject *) p;
- swig_globalvar *gv = (swig_globalvar *) malloc(sizeof(swig_globalvar));
- if (gv) {
- size_t size = strlen(name)+1;
- gv->name = (char *)malloc(size);
- if (gv->name) {
- strncpy(gv->name,name,size);
- gv->get_attr = get_attr;
- gv->set_attr = set_attr;
- gv->next = v->vars;
- }
- }
- v->vars = gv;
- }
-
- SWIGINTERN PyObject *
- SWIG_globals(void) {
- static PyObject *_SWIG_globals = 0;
- if (!_SWIG_globals) _SWIG_globals = SWIG_newvarlink();
- return _SWIG_globals;
- }
-
- /* -----------------------------------------------------------------------------
- * constants/methods manipulation
- * ----------------------------------------------------------------------------- */
-
- /* Install Constants */
- SWIGINTERN void
- SWIG_Python_InstallConstants(PyObject *d, swig_const_info constants[]) {
- PyObject *obj = 0;
- size_t i;
- for (i = 0; constants[i].type; ++i) {
- switch(constants[i].type) {
- case SWIG_PY_POINTER:
- obj = SWIG_NewPointerObj(constants[i].pvalue, *(constants[i]).ptype,0);
- break;
- case SWIG_PY_BINARY:
- obj = SWIG_NewPackedObj(constants[i].pvalue, constants[i].lvalue, *(constants[i].ptype));
- break;
- default:
- obj = 0;
- break;
- }
- if (obj) {
- PyDict_SetItemString(d, constants[i].name, obj);
- Py_DECREF(obj);
- }
- }
- }
-
- /* -----------------------------------------------------------------------------*/
- /* Fix SwigMethods to carry the callback ptrs when needed */
- /* -----------------------------------------------------------------------------*/
-
- SWIGINTERN void
- SWIG_Python_FixMethods(PyMethodDef *methods,
- swig_const_info *const_table,
- swig_type_info **types,
- swig_type_info **types_initial) {
- size_t i;
- for (i = 0; methods[i].ml_name; ++i) {
- const char *c = methods[i].ml_doc;
- if (c && (c = strstr(c, "swig_ptr: "))) {
- int j;
- swig_const_info *ci = 0;
- const char *name = c + 10;
- for (j = 0; const_table[j].type; ++j) {
- if (strncmp(const_table[j].name, name,
- strlen(const_table[j].name)) == 0) {
- ci = &(const_table[j]);
- break;
- }
- }
- if (ci) {
- size_t shift = (ci->ptype) - types;
- swig_type_info *ty = types_initial[shift];
- size_t ldoc = (c - methods[i].ml_doc);
- size_t lptr = strlen(ty->name)+2*sizeof(void*)+2;
- char *ndoc = (char*)malloc(ldoc + lptr + 10);
- if (ndoc) {
- char *buff = ndoc;
- void *ptr = (ci->type == SWIG_PY_POINTER) ? ci->pvalue : 0;
- if (ptr) {
- strncpy(buff, methods[i].ml_doc, ldoc);
- buff += ldoc;
- strncpy(buff, "swig_ptr: ", 10);
- buff += 10;
- SWIG_PackVoidPtr(buff, ptr, ty->name, lptr);
- methods[i].ml_doc = ndoc;
- }
- }
- }
- }
- }
- }
-
-#ifdef __cplusplus
-}
-#endif
-
-/* -----------------------------------------------------------------------------*
- * Partial Init method
- * -----------------------------------------------------------------------------*/
-
-#ifdef __cplusplus
-extern "C"
-#endif
-SWIGEXPORT void SWIG_init(void) {
- PyObject *m, *d;
-
- /* Fix SwigMethods to carry the callback ptrs when needed */
- SWIG_Python_FixMethods(SwigMethods, swig_const_table, swig_types, swig_type_initial);
-
- m = Py_InitModule((char *) SWIG_name, SwigMethods);
- d = PyModule_GetDict(m);
-
- SWIG_InitializeModule(0);
- SWIG_InstallConstants(d,swig_const_table);
-
-
-}
-
diff --git a/TamTamSynthLab.activity/common/Util/ControlStream.py b/TamTamSynthLab.activity/common/Util/ControlStream.py
deleted file mode 100644
index eea3150..0000000
--- a/TamTamSynthLab.activity/common/Util/ControlStream.py
+++ /dev/null
@@ -1,254 +0,0 @@
-import sys
-import types
-import time
-
-import common.Config as Config
-
-import os
-
-from common.Util import NoteDB
-from common.Util.CSoundNote import CSoundNote
-from common.Util.CSoundClient import new_csound_client
-
-import common.Util.InstrumentDB as InstrumentDB
-
-try:
- from Jam import Block
-except:
- pass # we're not in Jam mode
-
-class TamTamOStream:
- def __init__(self, file):
- self.file = file
- self.instrumentDB = InstrumentDB.getRef()
-
- def note_add(self, note):
- l = ['note_add', note.id, note.page, note.track,
- note.cs.onset,
- note.cs.pitch,
- note.cs.amplitude,
- note.cs.pan,
- note.cs.duration,
- note.cs.trackId,
- note.cs.instrumentId,
- note.cs.attack,
- note.cs.decay,
- note.cs.reverbSend,
- note.cs.filterType,
- note.cs.filterCutoff,
- int(note.cs.tied),
- note.cs.mode]
-
- self.file.write( " ".join([str(i) for i in l]))
- self.file.write('\n')
-
- def page_add(self, pid, page):
- l = [ 'page_add', str(pid), str(page.beats), str(page.color), str( [ self.instrumentDB.getInstrument(i).name for i in page.instruments ] ) ]
- self.file.write( " ".join([str(i) for i in l]))
- self.file.write('\n')
-
- def track_vol(self, vols):
- self.file.write('track_vol ')
- self.file.write(" ".join([str(t) for t in vols]))
- self.file.write('\n')
-
- def master_vol(self, volume):
- self.file.write('master_vol ')
- self.file.write(str(volume))
- self.file.write('\n')
-
- def tempo(self, tempo):
- self.file.write('tempo ')
- self.file.write(str(tempo))
- self.file.write('\n')
-
- def block_add( self, typeStr, active, centerX, centerY, child, data ):
- if typeStr == "Drum" or typeStr == "Instrument":
- realId = data["id"] # don't overwrite the block's data
- data["id"] = self.instrumentDB.getInstrument( data["id"] ).name
- l = [ "block_add", typeStr, str(active), str(centerX), str(centerY), str(child), str(data) ]
- self.file.write( " ".join([str(i) for i in l]))
- self.file.write('\n')
- if typeStr == "Drum" or typeStr == "Instrument":
- data["id"] = realId
-
- def desktop_store( self, filename, id ):
- self.file.write( "desktop_store %d\n" % id )
- try:
- file = open( filename, "r" )
- for line in file:
- self.file.write( line )
- file.close()
- except:
- if Config.DEBUG > 3: print "ERROR:: desktop_store could not open file: " + filename
- self.file.write( "desktop_store END\n" )
-
- def desktop_set( self, id ):
- self.file.write( "desktop_set %d\n" % id )
-
- def sync_beats( self, beats ):
- self.file.write( "sync_beats %d\n" % beats )
-
-class TamTamTable:
-
- def __init__(self, noteDB = None, jam = None ):
- self.noteDB = noteDB
- self.jam = jam
- self.csnd = new_csound_client()
- self.pid = {} #stream_pid : local_pid
- self.instrumentDB = InstrumentDB.getRef()
-
- def parseTable(self):
- return {
- 'note_set':self.note_set,
- 'note_add':self.note_add,
- 'page_add':self.page_add,
- 'page_set':self.page_set,
- 'track_vol':self.track_vol,
- 'master_vol':self.master_vol,
- 'tempo':self.tempo,
- 'block_add':self.block_add,
- 'desktop_store':self.desktop_store,
- 'desktop_set':self.desktop_set,
- 'sync_beats':self.sync_beats,
- 'sleep':self.sleep,
- 'quit':self.quit}
-
- def parseFile(self, ifile):
- table = self.parseTable()
- self.file = ifile
- for l in self.file:
- #print "---", l
- cmdlist = l.split()
- if len(cmdlist) > 0:
- if cmdlist[0] not in table:
- print 'ERROR: skipping command %s not found in parse table' % cmdlist[0]
- else:
- table[cmdlist[0]](cmdlist[1:])
-
- def note_add(self, argv):
- if Config.DEBUG > 3: print 'note_add', argv
-
- nid = int(argv[0])
- page = self.pid[int(argv[1])]
- track = int(argv[2])
- instId = self.noteDB.getPage( page ).instruments[ track ]
- cs = CSoundNote(
- int(argv[3]),
- int(argv[4]),
- float(argv[5]),
- float(argv[6]),
- float(argv[7]),
- int(argv[8]),
- instId,
- float(argv[10]),
- float(argv[11]),
- float(argv[12]),
- float(argv[13]),
- float(argv[14]),
- bool(argv[15]),
- argv[16])
-
- self.noteDB.addNote( -1, page, track, cs )
-
- def note_set(self, argv):
- print 'note_set', argv
-
- def page_add(self, argv):
- if Config.DEBUG > 3: print 'page_add', argv
- pid = int (argv[0])
- beats = int (argv[1])
- color = int( argv[2] )
- insts = ""
- for str in argv[3:]:
- insts += str
- #print pid, insts
- instrumentNames = eval( insts )
- instruments = [ self.instrumentDB.getInstrumentByName( i ).instrumentId for i in instrumentNames ]
- for id in instruments:
- i = self.instrumentDB.getInstrument( id )
- if i.kit == None:
- self.csnd.load_instrument(i.name)
- else:
- self.csnd.load_drumkit(i.name)
- if len( self.noteDB.tune ):
- after = self.noteDB.tune[-1]
- else:
- after = False
- self.pid[pid] = self.noteDB.addPage(-1, NoteDB.Page(beats,color,instruments), after)
-
- def page_set(self, argv):
- print 'page_set', argv
-
- def track_vol(self, argv):
- self.tracks_volume = []
- for i in range(len(argv)):
- self.tracks_volume.append(float(argv[i]))
-
- def master_vol(self, argv):
- self.masterVolume = eval( argv[0] )
-
- def tempo(self, argv):
- self.tempo = eval( argv[0] )
-
- def block_add( self, argv ):
- blockClass = Block.StrToClass[argv[0]]
- active = eval( argv[1] )
- x = int( argv[2] )
- y = int( argv[3] )
- child = eval( argv[4] )
- data = ""
- for str in argv[5:]:
- data += str
- data = eval( data )
-
- if blockClass == Block.Drum:
- data["page"] = self.pid[ data["page"] ]
- data["id"] = self.instrumentDB.getInstrumentByName( data["id"] ).instrumentId
- elif blockClass == Block.Instrument:
- data["id"] = self.instrumentDB.getInstrumentByName( data["id"] ).instrumentId
- elif blockClass == Block.Loop:
- data["id"] = self.pid[ data["id"] ]
- self.jam.updateLoopImage( data["id"] )
-
- if child:
- block = blockClass( self.jam.getDesktop(), data )
- self.lastBlock.addChild( block )
- else:
- block = self.jam.getDesktop().addBlock( blockClass, data, ( x, y ) )
-
- block.setPlaced( True )
-
- if blockClass == Block.Instrument and active:
- self.jam.getDesktop().activateInstrument( block )
-
- self.lastBlock = block
-
- def desktop_store( self, argv ):
- filename = self.jam.getDesktopScratchFile( int( argv[0] ) )
- #try:
- if os.path.isfile( filename ):
- os.remove( filename )
-
- file = open( filename, "w" )
- for line in self.file:
- if line == "desktop_store END\n":
- break
- file.write( line )
- file.close
- #except:
- # if Config.DEBUG > 3: print "ERROR:: desktop_store could not open file: " + filename
-
- def desktop_set( self, argv ):
- self.jam.setDesktop( int( argv[0] ), True )
-
- def sync_beats( self, argv ):
- self.jam.setSyncBeats( int( argv[0] ) )
-
- def sleep(self, argv):
- t = float(argv[0])
- print 'sleeping for %i seconds' % t
- time.sleep(t)
- def quit(self, argv):
- print 'quitting...'
- sys.exit(0)
diff --git a/TamTamSynthLab.activity/common/Util/Credits.py b/TamTamSynthLab.activity/common/Util/Credits.py
deleted file mode 100644
index c8d2644..0000000
--- a/TamTamSynthLab.activity/common/Util/Credits.py
+++ /dev/null
@@ -1,39 +0,0 @@
-# -*- coding: utf-8 -*-
-import pygtk
-pygtk.require( '2.0' )
-import gtk
-
-class Credits( gtk.Window ):
- def __init__(self , handleCreditsCloseCallback , pos):
- gtk.Window.__init__( self, gtk.WINDOW_TOPLEVEL )
- self.set_type_hint(gtk.gdk.WINDOW_TYPE_HINT_DIALOG)
- self.connect('destroy' , self.destroy)
- #self.set_decorated(False)
- self.handleCreditsCloseCallback = handleCreditsCloseCallback
- self.move(pos[0] , pos[1])
-
- self.vbox = gtk.VBox()
- self.tb = gtk.TextBuffer()
- self.tb.set_text('miniTamTam\n\nby\n\nOlivier Bélanger\nJames Bergstra\nEric Lamothe\nNathanaël Lécaudé\nAdrian Martin\nJean Piché\nSean Wood\n\nThanks to\n\nBarry Vercoe\nVictor Lazzarini\nMarco Pesenti Gritti\nSimon Schampijer\nPeter Kirn\n\nUniversité de Montréal 2006')
- self.tw = gtk.TextView(buffer = self.tb)
- self.tw.set_editable(False)
- self.tw.set_cursor_visible(False)
- #self.tw.set_right_margin(10)
- #self.tw.set_left_margin(10)
- self.tw.set_justification(gtk.JUSTIFY_CENTER)
- self.vbox.add(self.tw)
-
- self.closeButton = gtk.Button(label='X')
- self.closeButton.connect('clicked' , self.destroy)
- self.vbox.add(self.closeButton)
- self.add(self.vbox)
- self.show_all()
-
- def destroy(self, widget):
- self.handleCreditsCloseCallback(False)
- self.hide_all()
-
-
-if __name__ == '__main__':
- credits = Credits()
- gtk.main() \ No newline at end of file
diff --git a/TamTamSynthLab.activity/common/Util/InstrumentDB.py b/TamTamSynthLab.activity/common/Util/InstrumentDB.py
deleted file mode 100644
index ac72a19..0000000
--- a/TamTamSynthLab.activity/common/Util/InstrumentDB.py
+++ /dev/null
@@ -1,140 +0,0 @@
-import os
-
-##############
-## SOUNDS
-##############
-
-class Instrument:
- def __init__(self, id):
- self.instrumentId = id
- self.kitStage = False
- self.volatile = None
-
- # build an Instrument instance from argument list
- def loadFromArgs( self, name, csoundInstrumentId, register, loopStart,
- loopEnd, crossDur, ampScale, kit, wav, img, category, nameTooltip = "" ):
- self.name = name
- self.csoundInstrumentId = csoundInstrumentId
- self.instrumentRegister = register
- self.loopStart = loopStart
- self.loopEnd = loopEnd
- self.crossDur = crossDur
- self.ampScale = ampScale
- self.kit = kit
- self.wav = wav
- self.img = img
- self.category = category
- self.nameTooltip = nameTooltip
-
- # build an Instrument instance by parsing a file
- def loadFromPath(self, path ):
- f = file(path, 'r')
- magic = f.readline()[:-1]
- if (magic != 'TamTam idf v1'):
- raise 'given file has wrong header'
- self.name = f.readline()[:-1]
- self.csoundInstrumentId = float(f.readline()[:-1])
- self.register = f.readline()[:-1]
- self.loopStart = float( f.readline()[:-1])
- self.loopEnd = float( f.readline()[:-1])
- self.crossDur = float( f.readline()[:-1])
- self.ampScale = float( f.readline()[:-1])
- self.kit = None
- self.wav = f.readline()[:-1]
- self.img = f.readline()[:-1]
- self.category = f.readline()
- f.close()
-
-class InstrumentDB:
-
- # initialize an empty InstrumentDB instance
- def __init__(self):
- self.labelSet = {'All':set([])} # <key> -> all instruments labelled by <key>
- self.inst = [] # all instruments
- self.instNamed = {} # <name> -> instrument with that name
- self.instId = {} # <instrumentId> -> instrument
-
- # TEMP? add instrument from args
- def addInstrumentFromArgs( self, name, csoundInstrumentId, register, loopStart,
- loopEnd, crossDur, ampScale, kit, wav, img, category,
- kitStage = False, volatile = False, nameTooltip = "" ):
- i = Instrument(len(self.inst))
- self.inst += [ i ]
- i.loadFromArgs( name, csoundInstrumentId, register, loopStart, loopEnd, crossDur, ampScale, kit, wav, img, category, nameTooltip )
- i.kitStage = kitStage
- if volatile: i.volatile = 0
- self.instNamed[ i.name ] = i
- self.instId[i.instrumentId] = i
-
- self.labelSet['All'].add(i)
- if not self.labelSet.has_key(category):
- self.labelSet[category] = set([])
- self.labelSet[category].add( i )
-
- # add an instrument to the DB by reading from an instrument definition file
- def addInstrument( self, path ):
- from common.Util.CSoundClient import new_csound_client
- csnd = new_csound_client()
- i = Instrument(len(self.inst))
- self.inst += [ i ]
- i.loadFromPath( path )
- self.instNamed[ i.name ] = i
- self.instId[i.instrumentId] = i
- #print 'labelSet... ', self.labelSet
- self.labelSet['All'].add(i)
- if not self.labelSet.has_key(category):
- self.labelSet[category] = set([])
- self.labelSet[category].add( i )
- csnd.load_instrument(i.name)
-
- # try to load each file in a given folder as an instrument def. file
- def scanInstrumentDir( self, path ):
- dirlist = os.listdir( path )
- for fpath in dirlist:
- try :
- self.addInstrument( path + fpath )
- except :
- print 'ERROR: scanning instrument path %s: file %s invalid' % (path, fpath)
-
- def getLabels( self ):
- return self.labelSet.keys()
-
- def getSet( self, label ):
- return self.labelSet[label]
-
- def getInstrument( self, id ):
- return self.instId[id]
-
- def getInstrumentByName( self, name ):
- try:
- return self.instNamed[ name ]
- except:
- print "Instrument not found: ", name
- return self.inst[0]
-
- def debug_summarize(self):
- for i in self.inst:
- print i.id, i.name
-
- for l in self.labelSet:
- print l, [ i.name for i in self.labelSet[l]]
-
-
-db_instance = None
-def getRef():
- global db_instance
- if (None == db_instance):
- db_instance = InstrumentDB()
- return db_instance
-
-
-if __name__ == "__main__":
- i1 = getRef()
- i2 = getRef()
-
- print i1, i2
-
- import sys
- i1.scanInstrumentDir( sys.argv[1] )
-
- i1.debug_summarize()
diff --git a/TamTamSynthLab.activity/common/Util/InstrumentPanel.py b/TamTamSynthLab.activity/common/Util/InstrumentPanel.py
deleted file mode 100644
index 014d794..0000000
--- a/TamTamSynthLab.activity/common/Util/InstrumentPanel.py
+++ /dev/null
@@ -1,379 +0,0 @@
-import pygtk
-pygtk.require( '2.0' )
-import gtk
-
-import time
-
-import common.Util.InstrumentDB as InstrumentDB
-import common.Config as Config
-from common.Util.ThemeWidgets import *
-Tooltips = Config.Tooltips
-
-class InstrumentPanel( gtk.EventBox ):
- def __init__(self,setInstrument = None, playInstrument = None, enterMode = False, micRec = None, synthRec = None, rowLen = 8, _instDic = None, force_load = True ):
- gtk.EventBox.__init__(self)
-
- self.instrumentDB = InstrumentDB.getRef()
- self.setInstrument = setInstrument
- self.playInstrument = playInstrument
- self.micRec = micRec
- self.synthRec = synthRec
- self.rowLen = rowLen
- self.enterMode = enterMode
-
- self.instDic = _instDic
-
- self.loaded = False
- self.loadData = {}
- self.loadStage = [0,0,0]
- if force_load: self.load()
-
- def configure( self, setInstrument = None, playInstrument = None, enterMode = False, micRec = None, synthRec = None, rowLen = 8 ):
-
- self.setInstrument = setInstrument
- self.playInstrument = playInstrument
- self.enterMode = enterMode
- self.micRec = micRec
-
- if self.rowLen != rowLen:
- self.rowLen = rowLen
- self.prepareInstrumentTable( self.category )
- else:
- self.rowLen = rowLen
-
- def load( self, timeout = -1 ):
- if self.loaded: return True
- if Config.DEBUG > 4: print "InstrumentPanel load", self.loadStage
-
- if self.loadStage[0] == 0:
- color = gtk.gdk.color_parse(Config.PANEL_BCK_COLOR)
- self.modify_bg(gtk.STATE_NORMAL, color)
- self.loadStage[0] = 1
- if timeout >= 0 and time.time() > timeout: return False
-
- if self.loadStage[0] == 1:
- self.tooltips = gtk.Tooltips()
- self.loadStage[0] = 2
- if timeout >= 0 and time.time() > timeout: return False
-
- if self.loadStage[0] == 2:
- self.instTable = None
- self.recstate = False
- self.lastInstrumentWidget = None
-
- self.mainVBox = gtk.VBox()
- self.loadStage[0] = 3
- if timeout >= 0 and time.time() > timeout: return False
-
- if self.loadStage[0] == 3:
- if not self.loadInstrumentList( timeout, self.loadStage ):
- return False
- self.loadStage[0] = 4
- if timeout >= 0 and time.time() > timeout: return False
-
- if self.loadStage[0] == 4:
- if not self.loadToolbar( timeout, self.loadStage ):
- return False
- self.loadStage[0] = 5
- if timeout >= 0 and time.time() > timeout: return False
-
- if self.loadStage[0] == 5:
- if self.instDic == None:
- self.instDic = {}
- self.loadStage[0] = 5.1
- else:
- self.loadStage[0] = 6
-
- if self.loadStage[0] == 5.1:
- if not self.loadInstDic( self.instDic, timeout, self.loadStage ):
- return False
- self.loadStage[0] = 6
- if timeout >= 0 and time.time() > timeout: return False
-
- if self.loadStage[0] == 6:
- self.loadInstrumentViewport()
- self.loadStage[0] = 7
- if timeout >= 0 and time.time() > timeout: return False
-
- if self.loadStage[0] == 7:
- self.prepareInstrumentTable()
- self.loadStage[0] = 8
- if timeout >= 0 and time.time() > timeout: return False
-
- self.add(self.mainVBox)
- self.show_all()
-
- self.loaded = True
- return True
-
- def loadInstrumentList( self, timeout = -1, loadStage = [0,0,0] ):
-
- if loadStage[1] == 0:
- self.instrumentList = { "all": [], "all.enterMode": [], "percussions.enterMode": [], "lab": [], "mic": [], "kit": [] }
- for category in Config.CATEGORIES:
- self.instrumentList[category] = []
- loadStage[1] = 1
- if timeout >= 0 and time.time() > timeout: return False
-
- if loadStage[1] == 1:
- keys = self.instrumentDB.instNamed.keys()
- for i in range(loadStage[2], len(keys)):
- key = keys[i]
- instrument = self.instrumentDB.instNamed[key]
- if key[0:4] != 'drum' and key[0:4] != 'guid' and key[0:3] != 'mic' and key[0:3] != 'lab':
- self.instrumentList["all"].append( key )
- if key[0:4] != 'drum' and key[0:4] != 'guid' and key[0:3] != 'mic' and key[0:3] != 'lab':
- self.instrumentList["all.enterMode"].append( key )
- if key[0:4] != 'drum' and key[0:4] != 'guid':
- self.instrumentList[instrument.category].append( key )
- if instrument.category == "percussions":
- self.instrumentList["percussions.enterMode"].append( key )
- if instrument.category == "kit":
- self.instrumentList["kit"].append( key )
- loadStage[2] += 1
- if timeout >= 0 and time.time() > timeout: return False
-
- loadStage[1] = 2
- loadStage[2] = 0
-
- self.instrumentList["mic"].sort()
- self.instrumentList["lab"].sort()
-
- self.instrumentList["all"] += self.instrumentList["kit"] + self.instrumentList["mic"] + self.instrumentList["lab"]
- self.instrumentList["all.enterMode"] += self.instrumentList["mic"] + self.instrumentList["lab"]
- self.instrumentList["percussions"] += self.instrumentList["kit"]
- self.instrumentList["people"] += self.instrumentList["mic"]
- self.instrumentList["keyboard"] += self.instrumentList["lab"]
-
- loadStage[1] = 0
- return True
-
- def loadToolbar( self, timeout = -1, loadStage = [0,0,0] ):
- if loadStage[1] == 0:
- self.loadData["toolbarBox"] = gtk.HBox()
- self.firstTbBtn = None
- self.loadStage[1] = 1
- if timeout >= 0 and time.time() > timeout: return False
-
- for i in range(loadStage[1]-1, len(Config.CATEGORIES)):
- category = Config.CATEGORIES[i]
- if loadStage[2] == 0:
- self.loadData["btnBox"] = RoundVBox(fillcolor = Config.CATEGORY_BCK_COLOR, bordercolor = Config.PANEL_BCK_COLOR, radius = Config.PANEL_RADIUS)
- self.loadData["btnBox"].set_border_width(Config.PANEL_SPACING)
- loadStage[2] = 1
- if timeout >= 0 and time.time() > timeout: return False
-
- if loadStage[2] == 1:
- self.loadData["btn"] = ImageRadioButton(self.firstTbBtn,Config.IMAGE_ROOT + category + '.png', Config.IMAGE_ROOT + category + 'sel.png', Config.IMAGE_ROOT + category + 'sel.png')
- loadStage[2] = 2
- if timeout >= 0 and time.time() > timeout: return False
-
- if self.firstTbBtn == None:
- self.firstTbBtn = self.loadData["btn"]
- self.loadData["btn"].connect('clicked',self.handleToolbarBtnPress,category)
- self.loadData["btnBox"].add(self.loadData["btn"])
- self.loadData["toolbarBox"].pack_start(self.loadData["btnBox"],True,True)
-
- loadStage[2] = 0
- loadStage[1] += 1
- if timeout >= 0 and time.time() > timeout: return False
-
- self.mainVBox.pack_start(self.loadData["toolbarBox"],False,False)
-
- self.loadData.pop("btn")
- self.loadData.pop("btnBox")
- self.loadData.pop("toolbarBox")
- loadStage[1] = 0
- return True
-
- def loadInstDic( self, instDic, timeout = -1, loadStage = [0,0,0] ):
-
- if loadStage[1] == 0:
- self.firstInstButton = None
- self.loadData["len"] = len(self.instrumentList['all'])
- loadStage[1] = 1
- if timeout >= 0 and time.time() > timeout: return False
-
-
- for i in range( loadStage[1]-1, self.loadData["len"] ):
- instrument = self.instrumentList["all"][i]
- if loadStage[2] == 0:
- self.loadData["instBox"] = RoundVBox(fillcolor = Config.INST_BCK_COLOR, bordercolor = Config.INSTRUMENT_GRID_COLOR, radius = Config.PANEL_RADIUS)
- self.loadData["instBox"].set_border_width(Config.PANEL_SPACING)
- loadStage[2] = 1
- if timeout >= 0 and time.time() > timeout: return False
-
- if loadStage[2] == 1:
- try:
- self.loadData["instButton"] = ImageRadioButton(self.firstInstButton, Config.IMAGE_ROOT + instrument + '.png' , Config.IMAGE_ROOT + instrument + 'sel.png', Config.IMAGE_ROOT + instrument + 'sel.png')
- except:
- self.loadData["instButton"] = ImageRadioButton(self.firstInstButton, Config.IMAGE_ROOT + 'generic.png' , Config.IMAGE_ROOT + 'genericsel.png', Config.IMAGE_ROOT + 'genericsel.png')
- loadStage[2] = 2
- if timeout >= 0 and time.time() > timeout: return False
-
- if loadStage[2] == 2:
- self.loadData["instButton"].clickedHandler = self.loadData["instButton"].connect('clicked',self.handleInstrumentButtonClick, instrument)
- self.loadData["instButton"].connect('enter',self.handleInstrumentButtonEnter, instrument)
- loadStage[2] = 3
- if timeout >= 0 and time.time() > timeout: return False
-
- self.loadData["instBox"].pack_start(self.loadData["instButton"],False,False)
- instDic[instrument] = self.loadData["instBox"]
- if self.firstInstButton == None:
- self.firstInstButton = self.loadData["instButton"]
- loadStage[2] = 0
- if timeout >= 0 and time.time() > timeout: return False
-
- loadStage[1] += 1
-
- self.loadData.pop("instBox")
- self.loadData.pop("instButton")
- self.loadData.pop("len")
- loadStage[1] = 0
- return True
-
- def loadInstrumentViewport( self ):
- self.instrumentBox = RoundHBox(fillcolor = Config.INSTRUMENT_GRID_COLOR, bordercolor = Config.PANEL_BCK_COLOR, radius = Config.PANEL_RADIUS)
-
- self.scrollWin = gtk.ScrolledWindow()
- self.scrollWin.set_policy(gtk.POLICY_NEVER,gtk.POLICY_AUTOMATIC)
-
- self.tableEventBox = gtk.EventBox()
- color = gtk.gdk.color_parse(Config.INSTRUMENT_GRID_COLOR)
- self.tableEventBox.modify_bg(gtk.STATE_NORMAL, color)
-
- self.scrollWin.add_with_viewport(self.tableEventBox)
- self.tableEventBox.get_parent().set_shadow_type( gtk.SHADOW_NONE )
- self.instrumentBox.pack_start(self.scrollWin,True,True,0)
- self.mainVBox.pack_start(self.instrumentBox)
- self.show_all()
-
- def prepareInstrumentTable(self,category = 'all'):
-
- self.category = category
-
- if self.enterMode:
- if category == "all": category = "all.enterMode"
- elif category == "percussions": category = "percussions.enterMode"
-
- if self.instTable != None:
- for child in self.instTable.get_children()[:]:
- self.instTable.remove(child)
- self.tableEventBox.remove(self.instTable)
- self.instTable.destroy()
-
- instrumentNum = len(self.instrumentList[category])
- instruments = self.instrumentList[category]
-
- cols = self.rowLen
- if instrumentNum < cols:
- cols = instrumentNum
- rows = (instrumentNum // cols)
- if instrumentNum % cols is not 0: #S'il y a un reste
- rows = rows + 1
-
- self.instTable = gtk.Table(rows,cols,True)
- self.instTable.set_row_spacings(0)
- self.instTable.set_col_spacings(0)
-
- for row in range(rows):
- for col in range(cols):
- if row*cols+col >= instrumentNum:
- break
- instBox = self.instDic[instruments[row*cols+col]]
- self.instTable.attach(instBox, col, col+1, row, row+1, gtk.SHRINK, gtk.SHRINK, 0, 0)
-
- self.tableEventBox.add(self.instTable)
- self.instTable.show_all()
-
- def selectFirstCat(self):
- self.firstTbBtn.set_active(True)
-
- def handleToolbarBtnPress(self, widget, category):
- if widget.get_active():
- self.prepareInstrumentTable(category)
-
- def handleInstrumentButtonClick(self,widget,instrument):
- if widget.get_active() is True and self.recstate == False:
- if self.setInstrument:
- widget.event( gtk.gdk.Event( gtk.gdk.LEAVE_NOTIFY ) ) # fake the leave event
- self.setInstrument(instrument)
- if self.playInstrument: self.playInstrument(instrument)
- if self.enterMode:
- pass #Close the window
-
- def handleInstrumentButtonEnter(self,widget,instrument):
- if self.enterMode and self.playInstrument:
- self.playInstrument(instrument)
-
- def handleMicRecButtonClick(self,widget,mic):
- self.recstate = False
- self.setInstrument(mic)
- if self.micRec: self.micRec(mic)
-
- def handleRecButtonPress(self,widget,btn):
- self.recstate = True
- btn.set_active(True)
-
- def set_activeInstrument(self,instrument, state):
- if len(self.instDic) > 0:
- for key in self.instDic:
- if key == instrument:
- btn = self.instDic[key].get_children()[0]
- btn.handler_block(btn.clickedHandler)
- btn.set_active(state)
- btn.handler_unblock(btn.clickedHandler)
-
-
-class DrumPanel( gtk.EventBox ):
- def __init__(self, setDrum = None):
- gtk.EventBox.__init__(self)
- color = gtk.gdk.color_parse(Config.PANEL_BCK_COLOR)
- self.modify_bg(gtk.STATE_NORMAL, color)
-
- self.setDrum = setDrum
- self.instrumentList = []
- keys = self.instrumentDB.instNamed.keys()
- for key in self.instrumentDB.instNamed.keys():
- if self.instrumentDB.instNamed[key].category == "kit":
- self.instrumentList.append( key )
- self.instrumentList.sort()
- self.drawDrums()
-
- def drawDrums(self):
- firstBtn = None
- btnBox = RoundHBox(fillcolor = '#6F947B', bordercolor = Config.PANEL_BCK_COLOR, radius = Config.PANEL_RADIUS)
- btnBox.set_border_width(Config.PANEL_SPACING)
- self.drums = {}
- for drumkit in self.instrumentList:
- instBox = RoundVBox(fillcolor = Config.INST_BCK_COLOR, bordercolor = Config.PANEL_COLOR, radius = Config.PANEL_RADIUS)
- instBox.set_border_width(Config.PANEL_SPACING)
- self.drums[drumkit] = ImageRadioButton(firstBtn, Config.IMAGE_ROOT + drumkit + '.png' , Config.IMAGE_ROOT + drumkit + 'sel.png', Config.IMAGE_ROOT + drumkit + 'sel.png')
- self.drums[drumkit].clickedHandler = self.drums[drumkit].connect('clicked',self.setDrums,drumkit)
- if firstBtn == None:
- firstBtn = self.drums[drumkit]
- instBox.pack_start(self.drums[drumkit], False, False, 0)
- btnBox.pack_start(instBox, False, False, 0)
- self.add(btnBox)
- self.show_all()
-
- def setDrums(self,widget,data):
- if widget.get_active():
- if self.setDrum:
- widget.event( gtk.gdk.Event( gtk.gdk.LEAVE_NOTIFY ) ) # fake the leave event
- self.setDrum(data)
-
- def set_activeInstrument( self, instrument, state ):
- if instrument in self.instrumentList:
- btn = self.drums[instrument]
- btn.handler_block(btn.clickedHandler)
- btn.set_active(state)
- btn.handler_unblock(btn.clickedHandler)
-
-if __name__ == "__main__":
- win = gtk.Window()
- wc = DrumPanel(None)
- win.add(wc)
- win.show()
- #start the gtk event loop
- gtk.main()
diff --git a/TamTamSynthLab.activity/common/Util/Instruments.py b/TamTamSynthLab.activity/common/Util/Instruments.py
deleted file mode 100644
index 315e451..0000000
--- a/TamTamSynthLab.activity/common/Util/Instruments.py
+++ /dev/null
@@ -1,309 +0,0 @@
-import os
-from gettext import gettext as _
-
-import common.Config as Config
-import common.Util.InstrumentDB as InstrumentDB
-from sugar.activity.activity import get_bundle_name
-
-LOW = Config.LOW
-MID = Config.MID
-HIGH = Config.HIGH
-PUNCH = Config.PUNCH
-
-INSTRUMENT_TABLE_OFFSET = Config.INSTRUMENT_TABLE_OFFSET
-INST_FREE = Config.INST_FREE
-INST_TIED = Config.INST_TIED
-INST_SIMP = Config.INST_SIMP
-INST_PERC = Config.INST_PERC
-
-instrumentDB = InstrumentDB.getRef()
-
-
-def _addInstrument( name, csoundInstrumentId, instrumentRegister, category, loopStart, loopEnd, crossDur, ampScale = 1, kit = None, kitStage = False, volatile = False, nameTooltip = "" ):
- instrumentDB.addInstrumentFromArgs( name, csoundInstrumentId, instrumentRegister, loopStart, loopEnd, crossDur, ampScale, kit, name, Config.IMAGE_ROOT+"/"+name+".png", category, kitStage = kitStage, volatile = volatile, nameTooltip = nameTooltip )
-
-if Config.FEATURES_MIC:
- _addInstrument( "mic1", INST_TIED, MID, 'mysounds', .01, 1.99, .01, 1, volatile = True )
- _addInstrument( "mic2", INST_TIED, MID, 'mysounds', .01, 1.99, .01, 1, volatile = True )
- _addInstrument( "mic3", INST_TIED, MID, 'mysounds', .01, 1.99, .01, 1, volatile = True )
- _addInstrument( "mic4", INST_TIED, MID, 'mysounds', .01, 1.99, .01, 1, volatile = True )
-
-if Config.FEATURES_LAB:
- _addInstrument( "lab1", INST_SIMP, MID, 'mysounds', 0, 0, 0, 1, volatile = True )
- _addInstrument( "lab2", INST_SIMP, MID, 'mysounds', 0, 0, 0, 1, volatile = True )
- _addInstrument( "lab3", INST_SIMP, MID, 'mysounds', 0, 0, 0, 1, volatile = True )
- _addInstrument( "lab4", INST_SIMP, MID, 'mysounds', 0, 0, 0, 1, volatile = True )
- _addInstrument( "lab5", INST_SIMP, MID, 'mysounds', 0, 0, 0, 1, volatile = True )
- _addInstrument( "lab6", INST_SIMP, MID, 'mysounds', 0, 0, 0, 1, volatile = True )
-
-_addInstrument( "ounk", INST_SIMP, MID, 'animals', 0, 0, 0, 1, nameTooltip = _("Ounk") )
-_addInstrument( "gam", INST_TIED, HIGH, 'percussions', .69388, .7536, .02922, 1.4, nameTooltip = _("Gam") )
-_addInstrument( "guit", INST_TIED, MID, 'strings', .08592, .75126, .33571, 0.7, nameTooltip = _("Electric Guitar") )
-_addInstrument( "guitmute", INST_SIMP, MID, 'strings', 0, 0, 0, 0.6, nameTooltip = _("Electric Guitar") )
-_addInstrument( "guitshort", INST_SIMP, MID, 'strings', 0, 0, 0, 0.6, nameTooltip = _("Electric Guitar") )
-_addInstrument( "koto", INST_TIED, HIGH, 'strings', .56523, .70075, .05954, 1, nameTooltip = _("Koto") )
-_addInstrument( "banjo", INST_TIED, MID, 'strings', .8928046875, 1.6325390625, .0525, 0.6, nameTooltip = _("Banjo") )
-_addInstrument( "ukulele", INST_TIED, MID, 'strings', .64097090625, 1.0887984375, .17375, 0.35, nameTooltip = _("Ukulele") )
-_addInstrument( "harpsichord", INST_TIED, MID, 'strings', .57529609375, .936075, .2, 0.35, nameTooltip = _("Harpsichord") )
-_addInstrument( "clarinette", INST_TIED, MID, 'winds', 1.635276375, 2.72956523438, .2, 0.3, nameTooltip = _("Clarinette") )
-_addInstrument( "flute", INST_TIED, MID, 'winds', .47169, .53693, .02481, 1.3, nameTooltip = _("Flute") )
-_addInstrument( "drum1hatpedal", INST_SIMP, MID, 'percussions', 0, 0, 0, 1, kitStage = True)
-_addInstrument( "drum1hatshoulder", INST_SIMP, HIGH, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum1hardride", INST_SIMP, MID, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum1ridebell", INST_SIMP, HIGH, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum1snare", INST_SIMP, MID, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum1snaresidestick", INST_SIMP, MID, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum1crash", INST_SIMP, PUNCH, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum1splash", INST_SIMP, PUNCH, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum1tom", INST_SIMP, MID, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum1floortom", INST_SIMP, LOW, 'percussions', 0, 0, 0, 1, kitStage = True)
-_addInstrument( "drum1chine", INST_SIMP, PUNCH, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum1kick", INST_SIMP, LOW, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "piano", INST_TIED, MID, 'keyboard', 0.8883, 1.420524, .13575, 1, nameTooltip = _("Piano") )
-_addInstrument( "dog", INST_SIMP, MID, 'animals', 0, 0, 0, 1, nameTooltip = _("Dog") )
-_addInstrument( "chiken", INST_TIED, MID, 'animals', .1972125, .8689675781, .02, 0.5, nameTooltip = _("Chiken") )
-_addInstrument( "duck", INST_SIMP, MID, 'animals', 0, 0, 0, 0.7, nameTooltip = _("Duck") )
-_addInstrument( "armbone", INST_SIMP, MID, 'concret', 0, 0, 0, 0.8, nameTooltip = _("Armbone") )
-_addInstrument( "drum2darbukadoom", INST_SIMP, LOW, 'percussions', 0, 0 ,0, 1, kitStage = True )
-_addInstrument( "drum2darbukapied", INST_SIMP, LOW, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum2darbukapiedsoft", INST_SIMP, LOW, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum2hatflanger", INST_SIMP, PUNCH, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum2darbukatak", INST_SIMP, PUNCH, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum2darbukafinger", INST_SIMP, MID, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum2darbukaroll", INST_SIMP, HIGH, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum2darbukaslap", INST_SIMP, MID, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum2hatpied", INST_SIMP, MID, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum2tambourinepied", INST_SIMP, MID, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum2hatpied2", INST_SIMP, HIGH, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum2tambourinepiedsoft", INST_SIMP, HIGH, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum3cowbell", INST_SIMP, HIGH, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum3cowbelltip", INST_SIMP, MID, 'percussions', 0, 0, 0, 1, kitStage = True)
-_addInstrument( "drum3cup", INST_SIMP, HIGH, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum3djembelow", INST_SIMP, LOW, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum3djembemid", INST_SIMP, HIGH, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum3djembesidestick", INST_SIMP, MID, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum3djembeslap", INST_SIMP, LOW, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum3djembestickmid", INST_SIMP, MID, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum3metalstand", INST_SIMP, MID, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum3pedalperc", INST_SIMP, LOW, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum3rainstick", INST_SIMP, PUNCH, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum3tambourinehigh", INST_SIMP, PUNCH, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum3tambourinelow", INST_SIMP, PUNCH, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "harmonica", INST_TIED, MID, 'winds', .1531, .19188, .01792, 1, nameTooltip = _("Harmonica") )
-_addInstrument( "alarm", INST_TIED, MID, 'concret', 1.37555859375, 2.0286015625, .0675, 0.4, nameTooltip = _("Alarm") )
-_addInstrument( "bird", INST_TIED, MID, 'animals', .1, 1, .05, 1, nameTooltip = _("Bird") )
-_addInstrument( "frogs", INST_TIED, MID, 'animals', 1.954453125, 4.350234375, .2, 0.5, nameTooltip = _("Frog") )
-_addInstrument( "cat", INST_SIMP, MID, 'animals', 0, 0, 0, 0.8, nameTooltip = _("Cat") )
-_addInstrument( "cow", INST_SIMP, MID, 'animals', 0, 0, 0, 0.7, nameTooltip = _("Cow") )
-_addInstrument( "cricket", INST_SIMP, MID, 'animals', 0, 0, 0, 0.5, nameTooltip = _("Cricket") )
-_addInstrument( "duck2", INST_SIMP, MID, 'animals', 0, 0, 0, 1, nameTooltip = _("Duck") )
-_addInstrument( "bottle", INST_TIED, MID, 'concret', .20532, .41064, .05292, 0.8, nameTooltip = _("Bottle") )
-_addInstrument( "clang", INST_SIMP, MID, 'concret', 0, 0, 0, 0.8, nameTooltip = _("Dump") )
-_addInstrument( "clang2", INST_SIMP, MID, 'concret', 0, 0, 0, 0.6, nameTooltip = _("Clang") )
-_addInstrument( "ow", INST_SIMP, MID, 'people', 0, 0, 0, 1, nameTooltip = _("Ow") )
-_addInstrument( "hey", INST_SIMP, MID, 'people', 0, 0, 0, 0.5, nameTooltip = _("Hey") )
-_addInstrument( "sheep", INST_SIMP, MID, 'animals', 0, 0, 0, 1, nameTooltip = _("Sheep") )
-_addInstrument( "water", INST_SIMP, MID, 'concret', 0, 0, 0, 1, nameTooltip = _("Water") )
-_addInstrument( "zap", INST_TIED, MID, 'keyboard', .299, .7323, .09895, 0.8, nameTooltip = _("Zap") )
-_addInstrument( "trumpet", INST_TIED, MID, 'winds', .91195, 1.652909375, .05375, 0.3, nameTooltip = _("Trumpet") )
-_addInstrument( "clavinet", INST_TIED, MID, 'keyboard', .6398328125, .9401625, .094, 0.4, nameTooltip = _("Clavinet") )
-_addInstrument( "flugel", INST_TIED, MID, 'winds', 1.291740625, 2.37588007813, .065, 0.3, nameTooltip = _("Ow") )
-_addInstrument( "foghorn", INST_TIED, LOW, 'winds', 2.07005, 3.758775, .2, 0.5, nameTooltip = _("Foghorn") )
-_addInstrument( "bubbles", INST_TIED, MID, 'concret', 0.02, 1.177, 0.02, 0.7, nameTooltip = _("Bubbles") )
-_addInstrument( "marimba", INST_TIED, MID, 'percussions', .18883789, .343623047, .07625, 0.4, nameTooltip = _("Marimba") )
-_addInstrument( "triangle", INST_TIED, MID, 'percussions', 2.27261836, 3.2965453, .2, 0.6, nameTooltip = _("Triangle") )
-_addInstrument( "fingercymbals", INST_TIED, HIGH, 'percussions', 1.29635195312, 1.92448125, .094, 0.6, nameTooltip = _("Fingercymbals") )
-_addInstrument( "laugh", INST_SIMP, MID, 'people', 0, 0, 0, 1, nameTooltip = _("Laugh") )
-_addInstrument( "babylaugh", INST_TIED, MID, 'people', 0.72920078, 1.63253906, 0.01, 0.3, nameTooltip = _("Baby Laugh"))
-_addInstrument( "babyuhoh", INST_SIMP, MID, 'people', 0, 0, 0, 0.3, nameTooltip = _("Baby Yuhoh") )
-_addInstrument( "voix", INST_TIED, MID, 'people', .89608, .96092, .02343, 0.8, nameTooltip = _("Voix") )
-_addInstrument( "cling", INST_TIED, MID, 'keyboard', .09096, .7878, .18026, 0.7, nameTooltip = _("Cling") )
-_addInstrument( "byke", INST_SIMP, MID, 'concret', 0, 0, 0, 1, nameTooltip = _("Bike") )
-_addInstrument( "door", INST_SIMP, MID, 'concret', 0, 0, 0, 1, nameTooltip = _("Door") )
-_addInstrument( "basse", INST_TIED, MID, 'strings', 0.50470875, 0.833315, 0.09375, 1.4, nameTooltip = _("Basse") )
-_addInstrument( "acguit", INST_TIED, MID, 'strings', 0.5123225, 0.7491675, 0.08475, 0.5, nameTooltip = _("Acoustic Guitar") )
-_addInstrument( "diceinst", INST_SIMP, MID, 'concret', 0, 0, 0, 1.3, nameTooltip = _("Dice") )
-_addInstrument( "didjeridu", INST_TIED, LOW, 'winds', .55669, 1.73704, .09178, 1.5, nameTooltip = _("Didjeridu") )
-_addInstrument( "harmonium", INST_TIED, MID, 'keyboard', .242032, .898165625, .2, 0.6, nameTooltip = _("Harmonium") )
-_addInstrument( "horse", INST_SIMP, MID, 'animals', 0, 0, 0, 0.6, nameTooltip = _("Horse") )
-_addInstrument( "kalimba", INST_TIED, MID, 'percussions', .20751, .30161, .04658, 1.3, nameTooltip = _("Kalimba") )
-_addInstrument( "mando", INST_TIED, MID, 'strings', 0.507107031, 0.934144531, 0.2, 0.5, nameTooltip = _("Mando") )
-_addInstrument( "ocarina", INST_TIED, MID, 'winds', .06612, .19033, .01776, 0.8, nameTooltip = _("Ocarina") )
-_addInstrument( "rhodes", INST_TIED, MID, 'keyboard', 0.58100625, 0.821625, 0.067, 0.7, nameTooltip = _("Rhodes") )
-_addInstrument( "saxo", INST_TIED, MID, 'winds', .53722, .6583, .05264, 0.25, nameTooltip = _("Saxo") )
-_addInstrument( "saxsoprano", INST_TIED, HIGH, 'winds', .90721015625, 1.71199335938, .07675, 0.25, nameTooltip = _("Saxo Soprano") )
-_addInstrument( "shenai", INST_TIED, MID, 'winds', .29003, .33072, .00634, 0.5, nameTooltip = _("Shenai") )
-_addInstrument( "sitar", INST_TIED, MID, 'strings', 1.1361625, 1.575134375, .183, 0.3, nameTooltip = _("Sitar") )
-_addInstrument( "tuba", INST_TIED, LOW, 'winds', .51063, .58384, .035, 1.2, nameTooltip = _("Tuba") )
-_addInstrument( "violin", INST_TIED, MID, 'strings', .105, .30656, .028, 1, nameTooltip = _("Violin") )
-_addInstrument( "guidice1", INST_SIMP, MID, 'concret', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "guidice2", INST_SIMP, MID, 'concret', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "guidice3", INST_SIMP, MID, 'concret', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "guidice4", INST_SIMP, MID, 'concret', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "guidice5", INST_SIMP, MID, 'concret', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "guidice6", INST_SIMP, MID, 'concret', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "guidice7", INST_SIMP, MID, 'concret', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "guidice8", INST_SIMP, MID, 'concret', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "guidice9", INST_SIMP, MID, 'concret', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "guidice10", INST_SIMP, MID, 'concret', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum4afrofeet", INST_SIMP, LOW, 'percussions', 0, 0 ,0, 1, kitStage = True )
-_addInstrument( "drum4fingersn", INST_SIMP, HIGH, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum4mutecuic", INST_SIMP, PUNCH, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum4stompbass", INST_SIMP, PUNCH, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum4tambouri", INST_SIMP, HIGH, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum4tr707clap", INST_SIMP, MID, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum4tr707open", INST_SIMP, PUNCH, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum4tr808closed", INST_SIMP, HIGH, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum4tr808sn", INST_SIMP, MID, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum4tr909bass", INST_SIMP, LOW, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum4tr909kick", INST_SIMP, LOW, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum4tr909sn", INST_SIMP, MID, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum5timablesslap", INST_SIMP, LOW, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum5congagraveouvert", INST_SIMP, LOW, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum5timablesaiguslap", INST_SIMP, LOW, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum5congagraveferme", INST_SIMP, MID, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum5guiroretour", INST_SIMP, PUNCH, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum5vibraslap", INST_SIMP, PUNCH, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum5congaaiguouvert", INST_SIMP, MID, 'percussions', 0, 0 ,0, 1, kitStage = True )
-_addInstrument( "drum5quicamedium", INST_SIMP, PUNCH, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum5quicaaigu", INST_SIMP, MID, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum5agogograve", INST_SIMP, HIGH, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum5bongoaiguouvert", INST_SIMP, HIGH, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum5agogoaigu", INST_SIMP, HIGH, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "drum5bongograveouvert", INST_SIMP, HIGH, 'percussions', 0, 0, 0, 1, kitStage = True )
-_addInstrument( "camera", INST_SIMP, MID, 'concret', 0, 0, 0, 1, nameTooltip = _("Camera") )
-_addInstrument( "car", INST_TIED, MID, 'concret', .67, 1.05761, .01, 0.6, nameTooltip = _("Car") )
-_addInstrument( "carhorn", INST_SIMP, MID, 'concret', 0, 0, 0, 0.4, nameTooltip = _("Car Horn") )
-_addInstrument( "cello", INST_TIED, MID, 'strings', 0.4761, 0.92244375, 0.19125, .6, nameTooltip = _("Cello") )
-_addInstrument( "chimes", INST_TIED, MID, 'percussions', 4.104825, 5.644134375, .02, 1, nameTooltip = _("Chimes") )
-_addInstrument( "crash", INST_SIMP, MID, 'concret', 0, 0, 0, 1, nameTooltip = _("Crash") )
-_addInstrument( "guit2", INST_TIED, MID, 'strings', 1.186341406, 1.929568266, .2, 0.25, nameTooltip = _("Electric Guitar") )
-_addInstrument( "plane", INST_SIMP, MID, 'concret', 0, 0, 0, 0.6, nameTooltip = _("Plane") )
-_addInstrument( "slap", INST_SIMP, MID, 'concret', 0, 0, 0, 0.7, nameTooltip = _("Slap") )
-_addInstrument( "templebell", INST_SIMP, MID, 'percussions', 0, 0, 0, 1, nameTooltip = _("Temple Bell") )
-_addInstrument( "sarangi", INST_SIMP, MID, 'strings', 0, 0, 0, 1, nameTooltip = _("Sarangi"))
-_addInstrument( "drum6madal00", INST_SIMP, LOW, 'percussions', 0, 0 ,0, 1, kitStage = True )
-_addInstrument( "drum6madal01", INST_SIMP, LOW, 'percussions', 0, 0 ,0, 1, kitStage = True )
-_addInstrument( "drum6madal02", INST_SIMP, LOW, 'percussions', 0, 0 ,0, 1, kitStage = True )
-_addInstrument( "drum6madal03", INST_SIMP, LOW, 'percussions', 0, 0 ,0, 1, kitStage = True )
-_addInstrument( "drum6madal04", INST_SIMP, LOW, 'percussions', 0, 0 ,0, 1, kitStage = True )
-_addInstrument( "drum6madal05", INST_SIMP, LOW, 'percussions', 0, 0 ,0, 1, kitStage = True )
-_addInstrument( "drum6madal06", INST_SIMP, LOW, 'percussions', 0, 0 ,0, 1, kitStage = True )
-_addInstrument( "drum6madal07", INST_SIMP, LOW, 'percussions', 0, 0 ,0, 1, kitStage = True )
-_addInstrument( "drum6madal08", INST_SIMP, LOW, 'percussions', 0, 0 ,0, 1, kitStage = True )
-_addInstrument( "drum6madal09", INST_SIMP, LOW, 'percussions', 0, 0 ,0, 1, kitStage = True )
-_addInstrument( "drum6madal10", INST_SIMP, LOW, 'percussions', 0, 0 ,0, 1, kitStage = True )
-_addInstrument( "drum6madal11", INST_SIMP, LOW, 'percussions', 0, 0 ,0, 1, kitStage = True )
-_addInstrument( "drum6madal12", INST_SIMP, LOW, 'percussions', 0, 0 ,0, 1, kitStage = True )
-
-if Config.FEATURES_NEWSOUNDS:
- try:
- files = os.listdir(Config.SNDS_INFO_DIR)
- for file in files:
- instrumentDB.addInstrument(Config.SNDS_INFO_DIR + '/' + file)
- except:
- pass
-
-#jamId = os.path.split(os.path.realpath("/home/olpc/isolation/1/bundle_id_to_gid/org.laptop.TamTamJam"))[1]
-
-
-DRUM1KIT = { 24 : "drum1kick",
- 26 : "drum1floortom",
- 28 : "drum1tom",
- 30 : "drum1chine",
- 32 : "drum1splash",
- 34 : "drum1crash",
- 36 : "drum1snaresidestick",
- 38 : "drum1snaresidestick",
- 40 : "drum1snare",
- 42 : "drum1ridebell",
- 44 : "drum1hardride",
- 46 : "drum1hatshoulder",
- 48 : "drum1hatpedal" }
-
-DRUM2KIT = { 24 : "drum2darbukadoom",
- 26 : "drum2darbukapied",
- 28 : "drum2darbukapiedsoft",
- 30 : "drum2hatflanger",
- 32 : "drum2darbukatak",
- 34 : "drum2darbukatak",
- 36 : "drum2darbukafinger",
- 38 : "drum2darbukaroll",
- 40 : "drum2darbukaslap",
- 42 : "drum2hatpied",
- 44 : "drum2tambourinepied",
- 46 : "drum2hatpied2",
- 48 : "drum2tambourinepiedsoft" }
-
-DRUM3KIT = { 24 : "drum3djembelow",
- 26 : "drum3pedalperc",
- 28 : "drum3djembeslap",
- 30 : "drum3tambourinehigh",
- 32 : "drum3tambourinelow",
- 34 : "drum3rainstick",
- 36 : "drum3djembemid",
- 38 : "drum3djembesidestick",
- 40 : "drum3djembestickmid",
- 42 : "drum3cowbell",
- 44 : "drum3cowbelltip",
- 46 : "drum3cup",
- 48 : "drum3metalstand" }
-
-DRUM4KIT = { 24 : "drum4afrofeet",
- 26 : "drum4tr909kick",
- 28 : "drum4tr909bass",
- 30 : "drum4stompbass",
- 32 : "drum4tr707open",
- 34 : "drum4mutecuic",
- 36 : "drum4tr808sn",
- 38 : "drum4tr707clap",
- 40 : "drum4tr909sn",
- 42 : "drum4tambouri",
- 44 : "drum4fingersn",
- 46 : "drum4fingersn",
- 48 : "drum4tr808closed" }
-
-DRUM5KIT = { 24 : "drum5timablesslap",
- 26 : "drum5timablesaiguslap",
- 28 : "drum5congagraveouvert",
- 30 : "drum5quicamedium",
- 32 : "drum5guiroretour",
- 34 : "drum5vibraslap",
- 36 : "drum5congagraveferme",
- 38 : "drum5quicaaigu",
- 40 : "drum5congaaiguouvert",
- 42 : "drum5agogoaigu",
- 44 : "drum5bongograveouvert",
- 46 : "drum5agogograve",
- 48 : "drum5bongoaiguouvert" }
-
-DRUM6KIT = { 24 : "drum6madal00",
- 26 : "drum6madal01",
- 28 : "drum6madal02",
- 30 : "drum6madal03",
- 32 : "drum6madal04",
- 34 : "drum6madal05",
- 36 : "drum6madal06",
- 38 : "drum6madal07",
- 40 : "drum6madal08",
- 42 : "drum6madal09",
- 44 : "drum6madal10",
- 46 : "drum6madal11",
- 48 : "drum6madal12" }
-
-_addInstrument( "drum1kit", 0, 0, "percussions", 0, 0, 0, 1, DRUM1KIT )
-_addInstrument( "drum2kit", 0, 0, "percussions", 0, 0, 0, 1, DRUM2KIT )
-_addInstrument( "drum3kit", 0, 0, "percussions", 0, 0, 0, 1, DRUM3KIT )
-_addInstrument( "drum4kit", 0, 0, "percussions", 0, 0, 0, 1, DRUM4KIT )
-_addInstrument( "drum5kit", 0, 0, "percussions", 0, 0, 0, 1, DRUM5KIT )
-_addInstrument( "drum6kit", 0, 0, "percussions", 0, 0, 0, 1, DRUM6KIT )
-
-DRUMTIPS = [
- _('Jazz / Rock Kit'),
- _('African Kit'),
- _('Arabic Kit'),
- _('South American Kit'),
- _('Electronic Kit'),
- _('Nepali') ]
-
-DRUMCOUNT = 6
diff --git a/TamTamSynthLab.activity/common/Util/KeyboardWindow.py b/TamTamSynthLab.activity/common/Util/KeyboardWindow.py
deleted file mode 100644
index e828967..0000000
--- a/TamTamSynthLab.activity/common/Util/KeyboardWindow.py
+++ /dev/null
@@ -1,180 +0,0 @@
-import pygtk
-pygtk.require( '2.0' )
-import gtk
-import random
-from common.Util.ThemeWidgets import keyButton
-import common.Config as Config
-KEY_MAP_PIANO = Config.KEY_MAP_PIANO
-
-class KeyboardWindow(gtk.Window):
- def __init__(self, size = None, pos = 0, popup = False):
- if popup is False:
- gtk.Window.__init__(self , gtk.WINDOW_TOPLEVEL)
- else:
- gtk.Window.__init__(self , gtk.WINDOW_POPUP)
- color = gtk.gdk.color_parse("#000000")
- self.modify_bg(gtk.STATE_NORMAL, color)
- self.set_decorated(False)
-
- self.add_events(gtk.gdk.BUTTON_PRESS_MASK | gtk.gdk.BUTTON_RELEASE_MASK | gtk.gdk.ENTER_NOTIFY_MASK | gtk.gdk.KEY_PRESS_MASK)
- self.connect("key-press-event",self.handle_keypress)
- self.connect("key-release-event",self.handle_keyrelease)
- self.connect("button-press-event",self.handle_mousePress)
- self.connect("button-release-event",self.handle_mouseRelease)
- self.connect("enter-notify-event",self.handle_enter)
-
- self.size = size
- self.pos = pos
- self.popup = popup
- self.set_pos(self.pos)
-
- if self.size == None:
- self.pixel_space = 15
- self.height = 45
- else:
- self.pixel_space = size
- self.height = 3 * size
-
- self.draw()
-
- def draw(self):
- self.rows = {}
- self.rows[1] = [(49,1), (10,3), (11,3), (12,3), (13,3), (14,3), (15,3), (16,3), (17,3), (18,3), (19,3), (20,3), (21,5)]
- self.rows[2] = [(23,3), (24,3), (25,3), (26,3), (27,3), (28,3), (29,3), (30,3), (31,3), (32,3), (33,3), (34,3), (35,4)]
- self.rows[3] = [(37,4), (38,3), (39,3), (40,3), (41,3), (42,3), (43,3), (44,3), (45,3), (46,3), (47,3), (48,3), (51,3)]
- self.rows[4] = [(50,6), (52,3), (53,3), (54,3), (55,3), (56,3), (57,3), (58,3), (59,3), (60,3), (61,3), (62,5)]
- self.rows[5] = [(216,1),(133,4),(64,4), (65,25), (108,4), (134,4,), (113,3)]
-
- self.right_section = [(22,7),(36,(7,7)),(111,3),(219,3),(116,3),(114,3)]
-
- self.btn_dic = {}
-
- mainvbox = gtk.VBox()
- mainhbox = gtk.HBox()
-
- #Main keyboard section
- vbox = gtk.VBox()
- for row in [1,2,3,4,5]:
- hbox = gtk.HBox()
- for key in self.rows[row]:
- self.btn_dic[key[0]] = keyButton(self.pixel_space * key[1], self.height, [0,0,0], [0.5,0.5,0.5])
- hbox.pack_start(self.btn_dic[key[0]], padding = self.pixel_space//2)
- vbox.pack_start(hbox, padding = self.pixel_space//2)
- mainhbox.pack_start(vbox)
-
- #Right part of the keyboard
- right_vbox = gtk.VBox()
- right_tophbox = gtk.HBox()
- right_lowhbox = gtk.HBox()
-
- self.btn_dic[self.right_section[0][0]] = keyButton(self.pixel_space * self.right_section[0][1], self.height, [0,0,0], [0.5,0.5,0.5])
- self.btn_dic[self.right_section[1][0]] = keyButton(self.pixel_space * self.right_section[1][1][0], self.pixel_space * self.right_section[1][1][1], [0,0,0], [0.5,0.5,0.5])
- self.btn_dic[self.right_section[2][0]] = keyButton(self.pixel_space * self.right_section[2][1], self.height, [0,0,0], [0.5,0.5,0.5])
- self.btn_dic[self.right_section[3][0]] = keyButton(self.pixel_space * self.right_section[3][1], self.height, [0,0,0], [0.5,0.5,0.5])
- self.btn_dic[self.right_section[4][0]] = keyButton(self.pixel_space * self.right_section[4][1], self.height, [0,0,0], [0.5,0.5,0.5])
- self.btn_dic[self.right_section[5][0]] = keyButton(self.pixel_space * self.right_section[5][1], self.height, [0,0,0], [0.5,0.5,0.5])
-
- right_vbox.pack_start(self.btn_dic[self.right_section[0][0]], padding = self.pixel_space//2)
- right_vbox.pack_start(self.btn_dic[self.right_section[1][0]], padding = self.pixel_space//2)
- right_tophbox.pack_start(self.btn_dic[self.right_section[2][0]], padding = self.pixel_space//2)
- right_tophbox.pack_start(self.btn_dic[self.right_section[3][0]], padding = self.pixel_space//2)
- right_lowhbox.pack_start(self.btn_dic[self.right_section[4][0]], padding = self.pixel_space//2)
- right_lowhbox.pack_start(self.btn_dic[self.right_section[5][0]], padding = self.pixel_space//2)
- right_vbox.pack_start(right_tophbox, padding = self.pixel_space//2)
- right_vbox.pack_start(right_lowhbox, padding = self.pixel_space//2)
-
- #Mouse buttons
- mouse_hbox = gtk.HBox()
- self.btn_dic["left_mouse"] = keyButton(self.pixel_space * 6, self.pixel_space * 2, [0,0,0], [0.5,0.5,0.5])
- self.btn_dic["right_mouse"] = keyButton(self.pixel_space * 6, self.pixel_space * 2, [0,0,0], [0.5,0.5,0.5])
- mouse_hbox.pack_start(self.btn_dic["left_mouse"], True, True, self.pixel_space//2)
- mouse_hbox.pack_end(self.btn_dic["right_mouse"], True, True, self.pixel_space//2)
-
-
- #Enter and Leave connections
- for key in self.btn_dic:
- self.btn_dic[key].connect("enter",self.handle_mouseEnter)
- self.btn_dic[key].connect("leave",self.handle_mouseLeave)
-
- mainhbox.pack_start(right_vbox)
- mainvbox.pack_start(mainhbox)
- mainvbox.pack_start(mouse_hbox, padding = self.pixel_space//2)
-
- self.add(mainvbox)
-
- def set_pos(self,_pos = 0):
- width = self.get_screen().get_width()
- height = self.get_screen().get_height()
- win_width = self.get_size()[0]
- win_height = self.get_size()[1]
-
- self.pos = _pos
-
- pos = [0,0]
- pos[0] = (0, 0)
- pos[1] = (width - win_width, height - win_height)
- self.move(pos[self.pos][0],pos[self.pos][1])
-
- def color_piano(self):
- for key in KEY_MAP_PIANO:
- self.btn_dic[key].set_fillcolor(1,1,1)
-
-
- def handle_keypress(self,widget,event):
- if event.hardware_keycode == 9: # Hide the keyboard with escape Key
- self.hide_all()
- elif event.hardware_keycode == 216: # Send a fake mouse event
- self.btn_dic["left_mouse"].set_fillcolor(random.random(),random.random(),random.random())
- elif event.hardware_keycode == 133: # Send a fake mouse event
- self.btn_dic["right_mouse"].set_fillcolor(random.random(),random.random(),random.random())
- else:
- if self.btn_dic.has_key(event.hardware_keycode):
- self.btn_dic[event.hardware_keycode].set_fillcolor(random.random(),random.random(),random.random())
-
- def handle_keyrelease(self,widget,event):
- if KEY_MAP_PIANO.has_key(event.hardware_keycode):
- self.btn_dic[event.hardware_keycode].set_fillcolor(1,1,1)
- else:
- if self.btn_dic.has_key(event.hardware_keycode):
- self.btn_dic[event.hardware_keycode].set_fillcolor(0,0,0)
- if event.hardware_keycode == 216 or event.hardware_keycode == 133:
- self.btn_dic["left_mouse"].set_fillcolor(0,0,0)
- self.btn_dic["right_mouse"].set_fillcolor(0,0,0)
-
-
- def handle_mousePress(self,widget,event):
- if event.button == 1:
- self.btn_dic["left_mouse"].set_fillcolor(random.random(),random.random(),random.random())
- elif event.button == 3:
- self.btn_dic["right_mouse"].set_fillcolor(random.random(),random.random(),random.random())
-
- def handle_mouseRelease(self,widget,event):
- if event.button == 1:
- self.btn_dic["left_mouse"].set_fillcolor(0,0,0)
- elif event.button == 3:
- self.btn_dic["right_mouse"].set_fillcolor(0,0,0)
-
- def handle_mouseEnter(self,widget,event = None):
- widget.set_strokecolor(1,1,1)
-
- def handle_mouseLeave(self,widget,event = None):
- widget.set_strokecolor(0.5,0.5,0.5)
-
- def handle_enter(self,widget,event):
- if self.popup is False:
- return
- if self.pos == 0:
- self.set_pos(1)
- else:
- self.set_pos(0)
-
- def close(self,widget,event = None):
- self.hide_all()
-
-
-
-if __name__ == "__main__":
- win = KeyboardWindow()
- win.connect("destroy",gtk.main_quit)
- win.show_all()
- gtk.main()
diff --git a/TamTamSynthLab.activity/common/Util/LoopSettings.py b/TamTamSynthLab.activity/common/Util/LoopSettings.py
deleted file mode 100644
index d672050..0000000
--- a/TamTamSynthLab.activity/common/Util/LoopSettings.py
+++ /dev/null
@@ -1,229 +0,0 @@
-import pygtk
-pygtk.require('2.0')
-import gtk
-import gobject
-import os
-from common.Util.ThemeWidgets import *
-import common.Config as Config
-import commands
-Tooltips = Config.Tooltips()
-
-class LoopSettings( gtk.VBox ):
- def __init__( self, popup, playFunction, setChannelFunction, doneLoopSettingsPopup ):
- gtk.VBox.__init__( self )
- self.tooltips = gtk.Tooltips()
- self.popup = popup
- self.playFunction = playFunction
- self.setChannel = setChannelFunction
- self.doneLoopSettingsPopup = doneLoopSettingsPopup
- self.loopedSound = False
- self.soundLength = 1.00
- self.start = 0
- self.end = 1.00
- self.dur = 0.01
- self.register = 0
- self.ok = True
-
- self.settingsBox = gtk.HBox()
- self.pack_start(self.settingsBox)
-
- self.fixed = gtk.Fixed()
- self.settingsBox.pack_start(self.fixed)
-
- self.mainBox = gtk.VBox()
-
- self.controlsBox = gtk.HBox()
-
- self.GUI = {}
-
- nameBox = gtk.VBox()
- self.nameEntry = gtk.Entry()
- self.nameEntry.set_text("name_of_the_sound")
- nameBox.pack_start(self.nameEntry)
- self.mainBox.pack_start(nameBox, False, False, 5)
-
- loopedBox = gtk.HBox()
- loopedLabel = gtk.Label("Looped sound: ")
- loopedBox.pack_start(loopedLabel)
- loopedToggle = ImageToggleButton(Config.IMAGE_ROOT+"checkOff.svg",Config.IMAGE_ROOT+"checkOn.svg")
- loopedToggle.connect('button-press-event', self.handleLooped )
- loopedBox.pack_start(loopedToggle)
- self.mainBox.pack_start(loopedBox, False, False, 5)
-
- categoryBox = gtk.HBox()
- categoryMenu = gtk.MenuBar()
- cmenu = gtk.Menu()
- for cat in Config.CATEGORIES:
- if cat != 'all':
- entry = gtk.MenuItem(cat)
- cmenu.append(entry)
- entry.connect("activate", self.handleCategory, cat)
- entry.show()
- self.categoryButton = gtk.Button("Category")
- self.categoryButton.connect_object("event", self.categoryBtnPress, cmenu)
- categoryBox.pack_end(self.categoryButton)
- #self.mainBox.pack_start(categoryBox, False, False, 5)
-
- registerBox = gtk.HBox()
- registerMenu = gtk.MenuBar()
- rmenu = gtk.Menu()
- self.registerList = ['LOW', 'MID', 'HIGH', 'PUNCH']
- for reg in self.registerList:
- entry = gtk.MenuItem(reg)
- rmenu.append(entry)
- entry.connect("activate", self.handleRegister, self.registerList.index(reg))
- entry.show()
- self.registerButton = gtk.Button("Register")
- self.registerButton.connect_object("event", self.registerBtnPress, rmenu)
- registerBox.pack_end(self.registerButton)
- self.mainBox.pack_start(registerBox, False, False, 5)
-
- startBox = gtk.VBox()
- self.startAdjust = gtk.Adjustment( 0.01, 0, 1., .001, .001, 0)
- self.GUI['startSlider'] = ImageVScale( Config.IMAGE_ROOT + "sliderEditVolume.png", self.startAdjust, 7 )
- self.startAdjust.connect("value-changed", self.handleStart)
- self.GUI['startSlider'].set_inverted(True)
- self.GUI['startSlider'].set_size_request(50, 200)
- self.startEntry = gtk.Entry()
- self.startEntry.set_width_chars(5)
- self.handleStart( self.startAdjust )
- startBox.pack_start(self.GUI['startSlider'], True, True, 5)
- startBox.pack_start(self.startEntry, True, True, 5)
- self.controlsBox.pack_start(startBox)
-
- endBox = gtk.VBox()
- self.endAdjust = gtk.Adjustment( 0.9, 0, 1, .001, .001, 0)
- self.GUI['endSlider'] = ImageVScale( Config.IMAGE_ROOT + "sliderEditVolume.png", self.endAdjust, 7 )
- self.endAdjust.connect("value-changed", self.handleEnd)
- self.GUI['endSlider'].set_inverted(True)
- self.GUI['endSlider'].set_size_request(50, 200)
- self.endEntry = gtk.Entry()
- self.endEntry.set_width_chars(5)
- self.handleEnd( self.endAdjust )
- endBox.pack_start(self.GUI['endSlider'], True, True, 5)
- endBox.pack_start(self.endEntry, True, True, 5)
- self.controlsBox.pack_start(endBox)
-
- durBox = gtk.VBox()
- self.durAdjust = gtk.Adjustment( 0.01, 0, 0.2, .001, .001, 0)
- self.GUI['durSlider'] = ImageVScale( Config.IMAGE_ROOT + "sliderEditVolume.png", self.durAdjust, 7 )
- self.durAdjust.connect("value-changed", self.handleDur)
- self.GUI['durSlider'].set_inverted(True)
- self.GUI['durSlider'].set_size_request(50, 200)
- self.durEntry = gtk.Entry()
- self.durEntry.set_width_chars(5)
- self.handleDur( self.durAdjust )
- durBox.pack_start(self.GUI['durSlider'], True, True, 5)
- durBox.pack_start(self.durEntry, True, True, 5)
- self.controlsBox.pack_start(durBox)
-
- self.mainBox.pack_start(self.controlsBox, False, False, 5)
-
- previewBox = gtk.VBox()
- self.playStopButton = ImageToggleButton(Config.IMAGE_ROOT + 'miniplay.png', Config.IMAGE_ROOT + 'stop.png')
- self.playStopButton.connect('button-press-event' , self.handlePlayButton)
- previewBox.pack_start(self.playStopButton)
- self.mainBox.pack_start(previewBox, False, False, 5)
-
- checkBox = gtk.VBox()
- checkButton = ImageButton(Config.IMAGE_ROOT + 'check.png')
- checkButton.connect('clicked' , self.handleCheck)
- checkBox.pack_start(checkButton)
- self.mainBox.pack_start(checkBox, False, False, 5)
-
- self.fixed.put( self.mainBox, 0, 0 )
-
- self.show_all()
-
- def handleCheck(self, widget):
- ofile = open(Config.DATA_DIR + "/sounds_settings", 'a')
- name = self.nameEntry.get_text()
- if self.loopedSound:
- tied = str(Config.INST_TIED)
- else:
- tied = str(Config.INST_SIMP)
- register = str(self.register)
- melo = 'melo'
- category = 'mysounds'
- start = str(self.start)
- end = str(self.end)
- dur = str(self.dur)
-
- ofile.write(name + ' ' + tied + ' ' + register + ' ' + melo + ' ' + category + ' ' + start + ' ' + end + ' ' + dur + '\n')
-
- ofile.close()
- (s,o) = commands.getstatusoutput('cp ' + Config.DATA_DIR + '/' + self.oldName + ' ' + Config.DATA_DIR + '/' + name)
- self.doneLoopSettingsPopup()
-
- def set_name(self, name):
- self.oldName = name
- self.nameEntry.set_text('_' + name)
-
- def set_values(self, soundLength):
- self.soundLength = soundLength
- self.handleStart(self.GUI['startSlider'])
- self.handleEnd(self.GUI['endSlider'])
-
- def handleLooped(self, widget, data=None):
- if widget.get_active() == True:
- self.loopedSound = False
- else:
- self.loopedSound = True
-
- def categoryBtnPress(self, widget, event):
- if event.type == gtk.gdk.BUTTON_PRESS:
- widget.popup(None, None, None, event.button, event.time)
- return True
- return False
-
- def handleCategory(self, widget, category):
- self.category = category
- self.categoryButton.set_label(self.category)
-
- def registerBtnPress(self, widget, event):
- if event.type == gtk.gdk.BUTTON_PRESS:
- widget.popup(None, None, None, event.button, event.time)
- return True
- return False
-
- def handleRegister(self, widget, register):
- self.register = register
- self.registerButton.set_label(self.registerList[self.register])
-
- def handleStart(self, widget, data=None):
- self.startSlider = self.startAdjust.value
- self.start = self.startSlider * self.soundLength
- if self.start > self.end:
- self.start = self.end
- self.startEntry.set_text(str(self.start))
- self.setChannel('lstart', self.start)
-
- def handleEnd(self, widget, data=None):
- self.endSlider = self.endAdjust.value
- self.end = self.endSlider * self.soundLength
- if self.end < self.start:
- self.end = self.start
- self.endEntry.set_text(str(self.end))
- self.setChannel('lend', self.end)
-
- def handleDur(self, widget, data=None):
- self.dur = self.durAdjust.value
- self.durEntry.set_text(str(self.dur))
- self.setChannel('ldur', self.dur)
-
- def handlePlayButton(self, widget, data=None):
- if self.ok:
- self.playFunction(widget.get_active(), self.loopedSound)
- if self.loopedSound == False and widget.get_active() == False:
- self.timeoutStop = gobject.timeout_add(int(self.soundLength * 1000)+500, self.playButtonState)
-
- def setButtonState(self):
- self.ok = False
- self.playStopButton.set_active(False)
- self.ok = True
-
- def playButtonState(self):
- self.ok = False
- self.playStopButton.set_active(False)
- gobject.source_remove(self.timeoutStop)
- self.ok = True
diff --git a/TamTamSynthLab.activity/common/Util/Network.py b/TamTamSynthLab.activity/common/Util/Network.py
deleted file mode 100644
index 79fbab5..0000000
--- a/TamTamSynthLab.activity/common/Util/Network.py
+++ /dev/null
@@ -1,572 +0,0 @@
-
-#===========================================================================
-# Networking Module
-#
-# - to force host mode create an empty file named "FORCE_HOST" in the base
-# TamTam directory
-# - to force peer mode create a file named "FORCE_PEER" with a single line
-# containing the IP of the host to connect to
-#
-# !! the host must be running before the peers start up !!
-#---------------------------------------------------------------------------
-
-import os
-import socket
-import select
-import threading
-import xdrlib
-import random
-
-import time
-import gtk
-import gobject
-import common.Config as Config
-
-PORT = 24460
-LISTENER_PORT = PORT-1
-WAIT_PORT = PORT-2
-
-BACKLOG = 5 # allow a backlog of N new connections
-MAX_SIZE = 1024 # max message size to receive in one go
-
-MD_OFFLINE = 0
-MD_HOST = 1
-MD_PEER = 2
-MD_WAIT = 3
-
-# enumerate message types
-# format: ("NAME", <message size>)
-# <message size> specified in bytes
-# special:
-# -1 == dynamic, first byte of data containes size
-# -2 == dynamic, first uint32 of data contains size
-message_enum = [
-("HT_LATENCY_REPLY", 4), # reply to latency test
-("HT_SYNC_REPLY", 8), # reply to sync test
-("HT_TEMPO_UPDATE", 4), # reply to sync test
-
-("PR_LATENCY_QUERY", 4), # test latency
-("PR_SYNC_QUERY", 4), # test sync
-("PR_TEMPO_QUERY", 0), # test sync
-("PR_REQUEST_TEMPO_CHANGE", 4), # request tempo change
-
-("MAX_MSG_ID", 0)
-]
-
-# Initialize message ids and MSG_NAME/MSG_SIZE arrays
-MSG_NAME = [""]
-MSG_SIZE = [0]
-i = 1
-for m in message_enum:
- exec "%s = %d" % (m[0],i)
- MSG_NAME.append(m[0])
- MSG_SIZE.append(m[1])
- i += 1
-del message_enum # clear memory
-if MAX_MSG_ID > 256:
- print "Network:: MAX_MSG_ID exeeds limit of 256!"
-
-
-class Listener( threading.Thread ):
-
- def __init__( self, owner, listenerSocket, inputSockets, outputSockets, exceptSockets ):
- threading.Thread.__init__(self)
- self.owner = owner
- self.listenerSocket = listenerSocket
- self.inputSockets = inputSockets # note that these are array pointers that match
- self.outputSockets = outputSockets # those of the Network and should not be reset
- self.exceptSockets = exceptSockets #
-
- def run(self):
- while 1: # rely on the owner to kill us when necessary
- try:
- inputReady, outputReady, exceptReady = select.select( self.inputSockets, self.outputSockets, self.exceptSockets, 0.5 )
- if not len( inputReady ): # timeout
- continue
- if self.listenerSocket in inputReady:
- data, s = self.listenerSocket.recvfrom(MAX_SIZE)
- if data == "REFRESH":
- continue
- if data == "CLEAR":
- self.owner._clearSockets()
- continue
- else:
- break # exit thread
- gtk.gdk.threads_enter()
- self.owner._processSockets( inputReady )
- gtk.gdk.threads_leave()
- except socket.error, (value, message):
- print "Listener:: socket error: " + message
- gtk.gdk.threads_leave()
- break
-
-class Connection:
-
- def __init__( self, sock, address ):
- self.socket = sock
- self.address = address
- self.recvBuf = ""
- self.waitingForData = 0
- self.message = 0
-
-class Network:
-
- def __init__( self, mode = MD_OFFLINE, hostaddress = None ):
-
- # check for forced networking
- if os.path.isfile("FORCE_HOST"):
- mode = MD_HOST
- elif os.path.isfile("FORCE_PEER"):
- f = open("FORCE_PEER")
- l = f.read(16)
- print l
- f.close()
- mode = MD_PEER
- hostaddress = (l,PORT)
-
- # prepare message handlers
- self.processMessage = {}
- for i in range(1,MAX_MSG_ID):
- self.processMessage[i] = []
-
- self.statusWatcher = []
-
- # data packing classes
- self.packer = xdrlib.Packer()
- self.unpacker = xdrlib.Unpacker("")
-
- self.mode = -1
- self.listener = None
- self._fromListener = False
- try:
- self.listenerSocket = socket.socket( socket.AF_INET, socket.SOCK_DGRAM )
- self.listenerSocket.bind( ("localhost", LISTENER_PORT) )
- except socket.error, (value,message):
- print "Network:: FAILED to open listenerSocket: " + message
- mode = MD_OFFLINE
-
- self.inputSockets = [ self.listenerSocket ] # NOTE that these array pointers are passed into
- self.outputSockets = [] # the Listener and should not be reset
- self.exceptSockets = [] #
- self.connection = {} # dict of connections indexed by socket
-
- self.latencyQueryHandler = {}
- self.latencyQueryStart = {}
-
- self.connectMessage( HT_LATENCY_REPLY, self.processHT_LATENCY_REPLY )
- self.connectMessage( PR_LATENCY_QUERY, self.processPR_LATENCY_QUERY )
-
- self.setMode( mode, hostaddress )
-
- def shutdown( self ):
- if Config.DEBUG > 1: print "Network:: shutting down!"
-
- if self.listener:
- self.listenerSocket.sendto( "EXIT", ("localhost",LISTENER_PORT) )
- time.sleep(0.01) # get off the cpu so the listerer thread has a chance to clear.. IS THERE A BETTER WAY TO DO THIS?
- self.listener = None
-
- if self.mode == MD_HOST:
- for s in self.inputSockets:
- s.close()
- elif self.mode == MD_PEER:
- self.socket.close()
- self.hostAddress = None
-
- def setMode( self, mode, hostaddress = None ):
-
- # cleanup old mode
- if Config.DEBUG > 1: print "Network:: cleaning up old connections"
-
- if self._fromListener:
- self._clearSockets()
- elif self.listener: # make the listener wake so sockets can close properly
- self.listenerSocket.sendto( "CLEAR", ("localhost",LISTENER_PORT) )
- time.sleep(0.01) # get off the cpu so the listerer thread has a chance to clear.. IS THERE A BETTER WAY TO DO THIS?
-
- self.hostAddress = None
-
- # initialize new mode
- self.mode = mode
- if self.mode == MD_HOST:
- if Config.DEBUG > 1: print "Network:: initializing network, host mode"
- try:
- self.socket = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
- address = ("",PORT)
- self.connection[self.socket] = Connection( self.socket, address )
- self.socket.bind(address)
- self.socket.listen(BACKLOG)
- self.inputSockets.append(self.socket)
- if not self._fromListener and self.listener:
- self.listenerSocket.sendto( "REFRESH", ("localhost", LISTENER_PORT) )
- elif not self.listener:
- self.listener = Listener( self, self.listenerSocket, self.inputSockets, self.outputSockets, self.exceptSockets )
- self.listener.start()
- except socket.error, (value, message):
- if self.socket:
- self.socket.close()
- self.connection.pop(self.socket)
- print "Network:: FAILED to open socket: " + message
- self.mode = MD_OFFLINE
- if self.listener:
- self.listenerSocket.sendto( "EXIT", ("localhost", LISTENER_PORT) )
- self.listener = None
-
- elif self.mode == MD_PEER:
- if Config.DEBUG > 1: print "Network:: initializing network, client mode: " + hostaddress[0]
- self.hostAddress = hostaddress
- try:
- self.socket = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
- self.connection[self.socket] = Connection( self.socket, self.hostAddress )
- self.socket.connect(self.hostAddress)
- self.inputSockets.append(self.socket)
- if not self._fromListener and self.listener:
- self.listenerSocket.sendto( "REFRESH", ("localhost", LISTENER_PORT) )
- elif not self.listener:
- self.listener = Listener( self, self.listenerSocket, self.inputSockets, self.outputSockets, self.exceptSockets )
- self.listener.start()
- except socket.error, (value, message):
- if self.socket:
- self.socket.close()
- self.connection.pop(self.socket)
- print "Network:: FAILED to open socket: " + message
- self.mode = MD_OFFLINE
- self.hostAddress = None
- if self.listener:
- self.listenerSocket.sendto( "EXIT", ("localhost", LISTENER_PORT) )
- self.listener = None
-
- elif self.mode == MD_WAIT:
- if Config.DEBUG > 1: print "Network:: initializing network, wait mode"
- try:
- self.socket = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
- address = ("",WAIT_PORT)
- self.connection[self.socket] = Connection( self.socket, address )
- self.socket.bind(address)
- self.socket.listen(BACKLOG)
- self.inputSockets.append(self.socket)
- if not self._fromListener and self.listener:
- self.listenerSocket.sendto( "REFRESH", ("localhost", LISTENER_PORT) )
- elif not self.listener:
- self.listener = Listener( self, self.listenerSocket, self.inputSockets, self.outputSockets, self.exceptSockets )
- self.listener.start()
- except socket.error, (value, message):
- if self.socket:
- self.socket.close()
- self.connection.pop(self.socket)
- print "Network:: FAILED to open socket: " + message
- self.mode = MD_OFFLINE
- if self.listener:
- self.listenerSocket.sendto( "EXIT", ("localhost", LISTENER_PORT) )
- self.listener = None
-
- else:
- if Config.DEBUG > 1: print "Network:: offline"
- if self.listener:
- self.listenerSocket.sendto( "EXIT", ("localhost", LISTENER_PORT) )
- self.listener = None
-
- for watcher in self.statusWatcher:
- watcher( self.mode )
-
- def _clearSockets( self ):
- for s in self.inputSockets:
- if s != self.listenerSocket:
- self.inputSockets.remove(s)
- self.connection.pop(s)
- s.close()
- for s in self.outputSockets:
- self.outputSockets.remove(s)
- s.close()
- for s in self.exceptSockets:
- self.exceptSockets.remove(s)
- s.close()
-
-
- def introducePeer( self, ip ):
- if Config.DEBUG > 1: print "Network:: introducing self to peer " + ip
- try:
- poke = socket.socket( socket.AF_INET, socket.SOCK_STREAM )
- poke.setblocking(0)
- except socket.error, (value, message):
- print "Network::introducePeer:: FAILED to open socket: " + message
- return
- if poke.connect_ex( (ip, WAIT_PORT) ): # failed to connect
- gobject.timeout_add( 500, self._pokePeer, poke, ip, 0 )
- else: # connected
- if Config.DEBUG > 1: print "Netwtork:: introduction succeeded"
- poke.close()
-
- def _pokePeer( self, poke, ip, retry ):
- if poke.connect_ex( (ip, WAIT_PORT) ): # failed to connect
- if retry > 120: # give up
- print "Network::introducePeer:: peer failed to respond after 60 seconds, giving up!"
- else:
- gobject.timeout_add( 500, self._pokePeer, poke, ip, retry+1 )
- else: # connected
- if Config.DEBUG > 1: print "Netwtork:: introduction succeeded"
- poke.close()
-
- return False
-
-
- def addPeer( self, peer, address ):
- if Config.DEBUG > 1: print "Network:: adding peer: %s" % address[0]
- self.connection[peer] = Connection( peer, address )
- self.inputSockets.append( peer )
- self.listenerSocket.sendto( "REFRESH", ("localhost", LISTENER_PORT) )
- #self.listener.updateSockets( self.inputSockets, self.outputSockets, self.exceptSockets )
-
- def removePeer( self, peer ):
- if Config.DEBUG > 1: print "Network:: removing peer: %s" % self.connection[peer].address[0]
- self.connection.pop(peer)
- self.inputSockets.remove(peer)
- self.listenerSocket.sendto( "REFRESH", ("localhost", LISTENER_PORT) )
- #self.listener.updateSockets( self.inputSockets, self.outputSockets, self.exceptSockets )
-
- # register a status watcher, format: func( self, status, args )
- def addWatcher( self, func ):
- self.statusWatcher.append( func )
-
- def removeWatcher( self, func ):
- self.statusWatcher.remove( func )
-
- # connect a message handler, format: func( self, sock, message, data )
- def connectMessage( self, message, func ):
- self.processMessage[message].append(func)
-
- def connectMessageAfter( self, message, func, after ):
- try:
- ind = self.processMessage[message].index(after)
- self.processMessage[message].insert(ind+1,func)
- except:
- print "Network::connectMessageAfter:: function not registered: " + str(after)
-
- def connectMessageBefore( self, message, func, before ):
- try:
- ind = self.processMessage[message].index(before)
- self.processMessage[message].insert(ind,func)
- except:
- print "Network::connectMessageBefore:: function not registered: " + str(before)
-
- def disconnectMessage( self, message, func ):
- try:
- self.processMessage[message].remove(func)
- except:
- print "Network::disconnectMessage:: function not registered: " + str(func)
-
- def isOffline( self ):
- if self.mode == MD_OFFLINE: return True
- return False
-
- def isOnline( self ):
- if self.mode != MD_OFFLINE: return True
- return False
-
- def isHost( self ):
- if self.mode == MD_HOST: return True
- return False
-
- def isPeer( self ):
- if self.mode == MD_PEER: return True
- return False
-
- def isWaiting( self ):
- if self.mode == MD_WAIT: return True
- return False
-
-
- #-----------------------------------------------------------------------
- # Message Senders
-
- # basic send function
- # - message type will be automatically inserted before the data
- # - message size will be automatically inserted if applicable
- # - to is only defined in HOST mode
- def send( self, message, data = "", to = None ):
- if self.mode == MD_OFFLINE:
- return
-
- length = len(data)
- size = MSG_SIZE[message]
-
- if size >= 0:
- if length != size:
- print "Network:: message wrong length! Got %d expected %d: %s" % (len(data), MSG_SIZE[message], MSG_NAME[message])
- return
- msg = chr(message) + data
- elif size == -1:
- if length > 255:
- print "Network:: oversized message! Got %d, max size 255: %s" % (length, MSG_NAME[message])
- return
- msg = chr(message) + chr(length) + data
- else: # size == -2
- self.packer.pack_uint(size)
- msg = chr(message) + self.packer.get_buffer() + data
- self.packer.reset()
-
- if self.mode == MD_PEER:
- try:
- self.socket.send( msg )
- #print "Network:: sent %d bytes" % (len(msg))
- except socket.error, (value, errmsg):
- print "Network:: FAILED to send message (%s) to %s: %s" % (MSG_NAME[message], self.hostAddress[0], errmsg)
- # TODO something intelligent
- else: # MD_HOST
- try:
- to.send( msg )
- #print "Network:: sent %d bytes" % (len(msg))
- except socket.error, (value, errmsg):
- print "Network:: FAILED to send message (%s) to %s: %s" % (MSG_NAME[message], self.connection[to].address[0], errmsg)
- # TODO something intelligent
-
-
- def sendAll( self, message, data = "" ):
- if self.mode != MD_HOST:
- return
-
- length = len(data)
- size = MSG_SIZE[message]
-
- if size >= 0:
- if length != size:
- print "Network:: message wrong length! Got %d expected %d: %s" % (MSG_SIZE[message], len(data), MSG_NAME[message])
- return
- msg = chr(message) + data
- elif size == -1:
- if length > 255:
- print "Network:: oversized message! Size %d, max size 255: %s" % (length, MSG_NAME[message])
- return
- msg = chr(message) + chr(length) + data
- else: # size == -2
- self.packer.pack_uint(size)
- msg = chr(message) + self.packer.get_buffer() + data
- self.packer.reset()
-
- for sock in self.connection:
- if sock == self.socket:
- continue
- try:
- sock.send( msg )
- except socket.error, (value, errmsg):
- print "Network:: FAILED to send message (%s) to %s: %s" % (MSG_NAME[message], self.connection[sock].address[0], errmsg)
- # TODO something intelligent
-
- def sendLatencyQuery( self, handler ):
- if self.mode != MD_PEER:
- return
-
- self.packer.pack_float(random.random())
- hash = self.packer.get_buffer()
- self.packer.reset()
- self.latencyQueryHandler[hash] = handler
- self.latencyQueryStart[hash] = time.time()
- self.send(PR_LATENCY_QUERY,hash)
-
- #-----------------------------------------------------------------------
- # Message Handlers
-
- def _processSockets( self, inputReady ):
-
- self._fromListener = True
-
- if self.mode == MD_HOST:
-
- for s in inputReady:
- if s == self.socket:
- # accept new connections
- try:
- peer, address = self.socket.accept()
- self.addPeer( peer, address )
- except socket.error, (value, message):
- print "Network:: error accepting connection: " + message
-
- else:
- try:
- data = s.recv(MAX_SIZE)
- #print "Network:: recv %d bytes: %s" % (len(data), data)
- if not len(data): # no data to read, socket must be closed
- self.removePeer(s)
- else:
- self.processStream( s, data )
- except socket.error, (value, message):
- print "Network:: error reading data: " + message
-
- elif self.mode == MD_PEER:
-
- for s in inputReady:
- try:
- data = s.recv(MAX_SIZE)
- if not len(data): # no data to read, socket must be closed
- self.setMode( MD_OFFLINE )
- else:
- #print "Network:: recv %d bytes: %s" % (len(data), data)
- self.processStream( s, data )
- except socket.error, (value, message):
- print "Network:: error reading data: " + message
-
- else: # MD_WAIT
-
- for s in inputReady:
- try:
- peer, address = self.socket.accept()
- self.setMode( MD_PEER, (address[0], PORT) )
- except socket.error, (value, message):
- print "Network:: error accepting connection: " + message
-
- self._fromListener = False
-
-
- def processStream( self, sock, newData = "" ):
- con = self.connection[sock]
- con.recvBuf += newData
-
- if con.waitingForData == -1: # message size in char
- con.waitingForData = ord(con.recvBuf[0])
- con.recvBuf = con.recvBuf[1:]
-
- elif con.waitingForData == -2: # message size in uint
- if len(con.recvBuf) >= 4:
- self.unpacker.reset(con.recvBuf[0:4])
- con.waitingForData = self.unpacker.unpack_uint()
- con.recvBuf = con.recvBuf[4:]
- else:
- return # wait for more data
-
- elif con.waitingForData:
- if len(con.recvBuf) >= con.waitingForData:
- data = con.recvBuf[0:con.waitingForData]
- con.recvBuf = con.recvBuf[con.waitingForData:]
- con.waitingForData = 0
- for func in self.processMessage[con.message]:
- gobject.idle_add( func, sock, con.message, data )
- else:
- return # wait for more data
-
- else:
- con.message = ord(con.recvBuf[0])
- if MSG_SIZE[con.message] == 0:
- con.recvBuf = con.recvBuf[1:]
- for func in self.processMessage[con.message]:
- gobject.idle_add( func, sock, con.message, "" )
- else:
- con.waitingForData = MSG_SIZE[con.message]
- con.recvBuf = con.recvBuf[1:]
-
- if len(con.recvBuf):
- self.processStream( sock )
-
- #-- HOST handlers ------------------------------------------------------
- def processPR_LATENCY_QUERY( self, sock, message, data ):
- self.send( HT_LATENCY_REPLY, data, sock )
-
- #-- PEER handlers ------------------------------------------------------
- def processHT_LATENCY_REPLY( self, sock, message, data ):
- t = time.time()
- latency = t - self.latencyQueryStart[data]
- #print "got latency reply %d" % (latency*1000)
- self.latencyQueryHandler[data]( latency )
- self.latencyQueryHandler.pop(data)
- self.latencyQueryStart.pop(data)
-
-
diff --git a/TamTamSynthLab.activity/common/Util/NoteDB.py b/TamTamSynthLab.activity/common/Util/NoteDB.py
deleted file mode 100644
index 646f8d8..0000000
--- a/TamTamSynthLab.activity/common/Util/NoteDB.py
+++ /dev/null
@@ -1,813 +0,0 @@
-import common.Util.InstrumentDB as InstrumentDB
-import common.Config as Config
-
-class PARAMETER:
- PAGE_BEATS, \
- PAGE_COLOR, \
- ONSET, \
- PITCH, \
- AMPLITUDE, \
- DURATION, \
- INSTRUMENT, \
- PAN, \
- REVERB, \
- ATTACK, \
- DECAY, \
- FILTERTYPE, \
- FILTERCUTOFF, \
- INSTRUMENT2 \
- = range(14) #python-stye enum
-
-class Note:
- def __init__( self, page, track, id, cs ):
- self.page = page
- self.track = track
- self.id = id
- self.cs = cs
-
- self.csStack = []
-
- def pushState( self ):
- self.csStack.append( self.cs.clone() )
-
- def popState( self ):
- self.cs = self.csStack.pop()
-
-class Page:
- def __init__( self, beats, color = 0, instruments = False, local = True ): # , tempo, insruments, color = 0 ):
- self.instrumentDB = InstrumentDB.getRef()
- self.beats = beats
- self.ticks = beats*Config.TICKS_PER_BEAT
-
- self.color = color
-
- if not instruments:
- self.instruments = [ self.instrumentDB.instNamed["kalimba"].instrumentId for i in range(Config.NUMBER_OF_TRACKS-1) ] + [ self.instrumentDB.instNamed["drum1kit"].instrumentId ]
- else:
- self.instruments = instruments[:]
-
- self.local = local # page local/global?
-
- self.nextNoteId = 0 # first note will be 1
-
- def genId( self ):
- self.nextNoteId += 1
- if self.nextNoteId == 65536: # short
- print "note id overflow!"
- # TODO think of how to handle this!?
- return self.nextNoteId
-
- def setLocal( self, local ):
- self.local = local
-
-class PageListener:
- def notifyPageAdd( self, id, at ):
- pass
-
- def notifyPageDelete( self, which, safe ):
- pass
-
- def notifyPageDuplicate( self, new, at ):
- pass
-
- def notifyPageMove( self, which, low, high ):
- pass
-
- def notifyPageUpdate( self, which, parameter, value ):
- pass
-
-class NoteListener:
- def notifyNoteAdd( self, page, track, id ):
- pass
- def notifyNoteDelete( self, page, track, id ):
- pass
- def notifyNoteUpdate( self, page, track, id, parameter, value ):
- pass
-
-class NoteDB:
- def __init__( self ):
- self.instrumentDB = InstrumentDB.getRef()
- self.noteD = {} # bins containing all the notes by page, track, and id
- # structure self.noteD[pageId][trackIndex][noteId]
-
- self.noteS = {} # bins containing all the notes by page and track
- # first sorted by onset then by pitch (for drum hits)
- # structure self.noteS[pageId][trackIndex][noteIndex]
-
- self.pages = {} # dict of Pages indexed by pageId
-
- self.tune = [] # list of pageIds ordered by tune
-
- #self.beatsBefore = {} # count of beats on previous pages indexed by page id
-
- self.listeners = [] # complete list of listeners
- self.pageListeners = [] # list of listeners who want page notifications
- self.noteListeners = [] # list of listeners who want note notifications
- self.parasiteList = {} # dict of parasites indexed by listener
-
- self.parasiteD = {} # bin of parasites indexed by listener
- self.parasiteS = {} # parasites sorted as in self.noteS,
-
- self.nextId = 0 # base id, first page will be 1
-
- self.clipboard = [] # stores copied cs notes
- self.clipboardArea = [] # stores the limits and tracks for each page in the clipboard
-
- def dumpToStream( self, ostream, localOnly = False ):
- for pid in self.tune:
- if not localOnly or self.pages[pid].local:
- ostream.page_add(pid, self.pages[pid])
- for note in self.getNotesByPage( pid ):
- ostream.note_add( note )
-
- #-- private --------------------------------------------
- def _genId( self ):
- self.nextId += 1
- if self.nextId == 65536: # short
- print "page id overflow!"
- # TODO think of how to handle this!?
- return self.nextId
-
- #=======================================================
- # Page Functions
-
- def addPage( self, pid, page, after = False ):
- pid = self._newPage( pid, page )
- at = self._insertPage( pid, after )
-
- #self._updateBeatsBefore( at )
-
- for l in self.pageListeners:
- l.notifyPageAdd( pid, at )
-
- return pid
-
- def deletePages( self, which, instruments = False ):
- beats = self.pages[self.tune[0]].beats
-
- low = 999999
- ind = -1
- for id in which:
- ind = self.tune.index(id)
- if ind < low: low = ind
-
- for t in range(Config.NUMBER_OF_TRACKS):
- for n in self.noteD[id][t].keys():
- self.deleteNote( id, t, n )
-
- #del self.beatsBefore[id]
-
- del self.noteD[id]
- del self.noteS[id]
- del self.parasiteD[id]
- del self.parasiteS[id]
- del self.pages[id]
-
- at = self.tune.index( id )
- self.tune.pop(at)
-
- if not len(self.tune):
- self.addPage( -1, Page(beats, instruments = instruments) ) # always have at least one page
- safe = self.tune[0]
- #self._updateBeatsBefore(0)
- else:
- safe = self.tune[max(ind-1,0)]
- #self._updateBeatsBefore(low)
-
- for l in self.pageListeners:
- l.notifyPageDelete( which, safe )
-
- def duplicatePages( self, which, after = False ):
- sorted = []
- if after: first = self.tune.index(after)+1
- else: first = 0
-
- i = j = 0
- while i < len(self.tune) and j < len(which):
- if self.tune[i] in which:
- sorted.append(self.tune[i])
- j += 1
- i += 1
-
- new = {}
- for cp in sorted:
- id = self._newPage( -1, Page(self.pages[cp].beats,self.pages[cp].color,self.pages[cp].instruments) )
- self._insertPage( id, after )
- after = id
- new[cp] = id
-
- #self._updateBeatsBefore( first )
-
- for l in self.pageListeners:
- l.notifyPageDuplicate( new, first )
-
- for cp in sorted:
- for t in range(Config.NUMBER_OF_TRACKS):
- for n in self.noteD[cp][t].keys():
- self.duplicateNote( cp, t, n, new[cp], t, 0 )
-
- return new
-
- def movePages( self, which, after = False ):
- sorted = []
- if after: at = self.tune.index(after)+1
- else: at = 0
- low = high = at
-
- i = j = 0
- while i < len(self.tune):
- if self.tune[i] in which:
- sorted.append(self.tune[i])
- self.tune.pop(i)
- if i < low: low = i
- if i > high: high = i
- if i < at: at -= 1
- j += 1
- else:
- i += 1
-
- self.tune = self.tune[:at] + sorted + self.tune[at:]
-
- #self._updateBeatsBefore( low )
-
- for l in self.pageListeners:
- l.notifyPageMove( sorted, low, high )
-
- def updatePage( self, page, parameter, value ):
- if parameter == PARAMETER.PAGE_BEATS:
- ticks = value*Config.TICKS_PER_BEAT
- if self.pages[page].beats > value: # crop some notes
- dstream = []
- ustream = []
- for track in range(Config.NUMBER_OF_TRACKS):
- dsub = []
- usub = []
- for note in self.getNotesByTrack(page, track):
- if ticks <= note.cs.onset:
- dsub.append( note.id )
- elif ticks < note.cs.onset + note.cs.duration:
- usub.append( note.id )
- usub.append( ticks - note.cs.onset )
- if len(dsub):
- dstream += [ page, track, len(dsub) ] + dsub
- if len(usub):
- ustream += [ page, track, PARAMETER.DURATION, len(usub)//2 ] + usub
- if len(dstream):
- self.deleteNotes( dstream + [-1] )
- if len(ustream):
- self.updateNotes( ustream + [-1] )
-
- self.pages[page].beats = value
- self.pages[page].ticks = ticks
- #self._updateBeatsBefore(self.tune.index(page))
- elif parameter == PARAMETER.PAGE_COLOR:
- self.pages[page].color = value
-
- for l in self.pageListeners:
- l.notifyPageUpdate( page, parameter, value )
-
- # stream format:
- # parameter id
- # number of following pages (N)
- # page id
- # value
- def updatePages( self, stream ):
- i = [-1]
- parameter = self._readstream(stream,i)
- N = self._readstream(stream,i)
- for j in range(N):
- page = self._readstream(stream,i)
- val = self._readstream(stream,i)
- self.updatePage( page, parameter, val )
-
- def getInstruments(self, pages):
- dict = {}
- for page in pages:
- list = []
- for track in range(Config.NUMBER_OF_TRACKS):
- list.append(self.instrumentDB.instId[self.pages[page].instruments[track]].name)
- dict[page] = list[:]
- return dict
-
- #-- private --------------------------------------------
- def _newPage( self, pid, page ):
- if pid == -1 : pid = self._genId()
- self.pages[pid] = page
- self.noteD[pid] = [ {} for i in range(Config.NUMBER_OF_TRACKS) ]
- self.noteS[pid] = [ [] for i in range(Config.NUMBER_OF_TRACKS) ]
- self.parasiteD[pid] = [ {} for i in range(Config.NUMBER_OF_TRACKS) ]
- self.parasiteS[pid] = [ {} for i in range(Config.NUMBER_OF_TRACKS) ]
- for i in range(Config.NUMBER_OF_TRACKS):
- for par in self.parasiteList.keys():
- self.parasiteD[pid][i][par] = {}
- self.parasiteS[pid][i][par] = []
- return pid
-
- def _insertPage( self, pid, after ):
- if not after: at = 0
- else: at = self.tune.index(after)+1
- self.tune.insert( at, pid )
-
- return at
-
- #def _updateBeatsBefore( self, ind ):
- # if ind == 0: beats = 0
- # else: beats = self.beatsBefore[self.tune[ind-1]] + self.pages[self.tune[ind-1]].beats
- # for i in range(ind, len(self.tune)):
- # self.beatsBefore[self.tune[ind]] = beats
- # beats += self.pages[self.tune[ind]].beats
-
-
-
- #=======================================================
- # Track Functions
-
- def setInstrument( self, pages, track, instrumentId ):
- stream = []
- for page in pages:
- self.pages[page].instruments[track] = instrumentId
- notes = self.getNotesByTrack( page, track )
- sub = []
- for note in notes:
- sub.append( note.id )
- sub.append( instrumentId )
- if len(sub):
- stream += [ page, track, PARAMETER.INSTRUMENT, len(sub)//2 ] + sub
- if len(stream):
- self.updateNotes( stream + [-1] )
-
- def setInstrument2( self, pages, track, instrumentId ):
- stream = []
- for page in pages:
- #self.pages[page].instruments[track] = instrumentId
- notes = self.getNotesByTrack( page, track )
- sub = []
- for note in notes:
- sub.append( note.id )
- sub.append( instrumentId )
- if len(sub):
- stream += [ page, track, PARAMETER.INSTRUMENT2, len(sub)//2 ] + sub
- if len(stream):
- self.updateNotes( stream + [-1] )
-
- #=======================================================
- # Note Functions
-
- def addNote( self, nid, page, track, cs, hint = False ):
- if nid == -1: nid = self.pages[page].genId()
- n = self.noteD[page][track][nid] = Note( page, track, nid, cs )
-
- if not hint: at = 0
- else: at = hint[0]
- while at > 0:
- onset = self.noteS[page][track][at-1].cs.onset
- if onset <= cs.onset:
- if onset <= cs.onset: break
- elif self.noteS[page][track][at-1].cs.pitch <= cs.pitch: break
- at -= 1
- last = len(self.noteS[page][track])
- while at < last:
- onset = self.noteS[page][track][at].cs.onset
- if onset >= cs.onset:
- if onset > cs.onset: break
- elif self.noteS[page][track][at].cs.pitch > cs.pitch: break
- at += 1
-
- self.noteS[page][track].insert( at, n )
-
- for par in self.parasiteList.keys():
- parasite = self.parasiteList[par]( self, par, n )
- self.parasiteD[page][track][par][nid] = parasite.attach() # give parasites the option of return something other than themselves
- self.parasiteS[page][track][par].insert( at, parasite.attach() )
-
- if hint: hint[0] = at + 1 # assume the next note will fall after this one
-
- for l in self.noteListeners:
- l.notifyNoteAdd( page, track, nid )
-
- return nid
-
- # stream format:
- # page id
- # track index
- # number of following notes (N)
- # cs pointer
- # ... up to N
- # page id or -1 to exit
- def addNotes( self, stream ):
- new = {}
- i = [-1]
- p = self._readstream(stream,i)
- while p != -1:
- if p not in new:
- new[p] = [ [] for x in range(Config.NUMBER_OF_TRACKS) ]
- t = self._readstream(stream,i)
- N = self._readstream(stream,i)
- hint = [0]
- for j in range(N):
- new[p][t].append( self.addNote( -1, p, t, self._readstream(stream,i), hint ) )
- p = self._readstream(stream,i)
-
- return new
-
- def deleteNote( self, page, track, id ):
- ind = self.noteS[page][track].index( self.noteD[page][track][id] )
-
- for par in self.parasiteList.keys():
- self.parasiteD[page][track][par][id].destroy()
- self.parasiteS[page][track][par].pop(ind)
- del self.parasiteD[page][track][par][id]
-
- self.noteS[page][track].pop(ind)
- del self.noteD[page][track][id]
-
- for l in self.noteListeners:
- l.notifyNoteDelete( page, track, id )
-
- # stream format:
- # page id
- # track index
- # number of following notes (N)
- # note id
- # ... up to N
- # page id or -1 to exit
- def deleteNotes( self, stream ):
- i = [-1]
- p = self._readstream(stream,i)
- while p != -1:
- t = self._readstream(stream,i)
- N = self._readstream(stream,i)
- for j in range(N):
- self.deleteNote( p, t, self._readstream(stream,i) )
- p = self._readstream(stream,i)
-
- def deleteNotesByTrack( self, pages, tracks ):
- for p in pages:
- for t in tracks:
- notes = self.noteS[p][t][:]
- for n in notes:
- self.deleteNote( p, t, n.id )
-
- def duplicateNote( self, page, track, id, toPage, toTrack, offset ):
- cs = self.noteD[page][track][id].cs.clone()
- cs.trackId = toTrack
- cs.pageId = toPage
- cs.onset += offset
- ticks = self.pages[toPage].ticks
- if cs.onset >= ticks: return False # off the end of the page
- if cs.onset + cs.duration > ticks:
- cs.duration = ticks - cs.onset
-
- return self.addNote( -1, toPage, toTrack, cs )
-
- # stream format:
- # page id
- # track index
- # toPage id
- # toTrack index
- # offset
- # number of following notes (N)
- # note id
- # ... up to N
- # page id or -1 to exit
- def duplicateNotes( self, stream ):
- i = [-1]
- p = self._readstream(stream,i)
- while p != -1:
- t = self._readstream(stream,i)
- toP = self._readstream(stream,i)
- toT = self._readstream(stream,i)
- offset = self._readstream(stream,i)
- N = self._readstream(stream,i)
- for j in range(N):
- self.duplicateNote( p, t, self._readstream(stream,i), toP, toT, offset )
- p = self._readstream(stream,i)
-
-
- def updateNote( self, page, track, id, parameter, value ):
- if parameter == PARAMETER.ONSET:
- self.noteD[page][track][id].cs.onset = value
- self._resortNote( page, track, id )
- elif parameter == PARAMETER.PITCH:
- self.noteD[page][track][id].cs.pitch= value
- self._resortNote( page, track, id )
- elif parameter == PARAMETER.AMPLITUDE:
- self.noteD[page][track][id].cs.amplitude = value
- elif parameter == PARAMETER.DURATION:
- self.noteD[page][track][id].cs.duration = value
- elif parameter == PARAMETER.INSTRUMENT:
- self.noteD[page][track][id].cs.instrumentId = value
- elif parameter == PARAMETER.PAN:
- self.noteD[page][track][id].cs.pan = value
- elif parameter == PARAMETER.REVERB:
- self.noteD[page][track][id].cs.reverbSend = value
- elif parameter == PARAMETER.ATTACK:
- self.noteD[page][track][id].cs.attack = value
- elif parameter == PARAMETER.DECAY:
- self.noteD[page][track][id].cs.decay = value
- elif parameter == PARAMETER.FILTERTYPE:
- self.noteD[page][track][id].cs.filterType = value
- elif parameter == PARAMETER.FILTERCUTOFF:
- self.noteD[page][track][id].cs.filterCutoff = value
- elif parameter == PARAMETER.INSTRUMENT2:
- self.noteD[page][track][id].cs.instrumentId2 = value
-
- for par in self.parasiteList.keys():
- self.parasiteD[page][track][par][id].updateParameter( parameter, value )
-
- for l in self.noteListeners:
- l.notifyNoteUpdate( page, track, id, parameter, value )
-
- # stream format:
- # page id
- # track index
- # parameter id
- # number of following notes (N)
- # note id
- # value
- # ... up to N
- # page id or -1 to exit
- def updateNotes( self, stream ):
- i = [-1]
- p = self._readstream(stream,i)
- while p != -1:
- t = self._readstream(stream,i)
- param = self._readstream(stream,i)
- N = self._readstream(stream,i)
- for j in range(N):
- self.updateNote( p, t, self._readstream(stream,i), param, self._readstream(stream,i) )
- p = self._readstream(stream,i)
-
- #-- private --------------------------------------------
- def _readstream( self, stream, i ):
- i[0] += 1
- return stream[i[0]]
-
- def _resortNote( self, page, track, id ):
- ins = out = self.noteS[page][track].index(self.noteD[page][track][id])
- cs = self.noteD[page][track][id].cs
- while ins > 0: # check backward
- onset = self.noteS[page][track][ins-1].cs.onset
- if onset <= cs.onset:
- if onset <= cs.onset: break
- elif self.noteS[page][track][ins-1].cs.pitch <= cs.pitch: break
- ins -= 1
- if ins == out: # check forward
- ins += 1
- last = len(self.noteS[page][track])
- while ins < last:
- onset = self.noteS[page][track][ins].cs.onset
- if onset >= cs.onset:
- if onset > cs.onset: break
- elif self.noteS[page][track][ins].cs.pitch > cs.pitch: break
- ins += 1
-
- if ins != out: # resort
- if ins > out: ins -= 1
- n = self.noteS[page][track].pop( out )
- self.noteS[page][track].insert( ins, n )
- for par in self.parasiteList.keys():
- p = self.parasiteS[page][track][par].pop( out )
- self.parasiteS[page][track][par].insert( ins, p )
-
-
- #=======================================================
- # Clipboard Functions
-
- # stream format:
- # page id
- # track index
- # number of following notes (N)
- # note id
- # ... up to N
- # page id or -1 to exit
- def notesToClipboard( self, stream ):
- self.clipboard = []
- self.clipboardArea = []
- i = [-1]
- pages = []
- p = self._readstream(stream,i)
- while p != -1:
- if p not in pages:
- page = [ [] for x in range(Config.NUMBER_OF_TRACKS) ]
- pageArea = { "limit": [ 99999, 0 ],
- "tracks": [ 0 for x in range(Config.NUMBER_OF_TRACKS) ] }
- pages.append(p)
- self.clipboard.append(page)
- self.clipboardArea.append(pageArea)
- else:
- ind = pages.index(p)
- page = self.clipboard[ind]
- pageArea = self.clipboardArea[ind]
- t = self._readstream(stream,i)
- pageArea["tracks"][t] = 1
- N = self._readstream(stream,i)
- for j in range(N):
- cs = self.noteD[p][t][self._readstream(stream,i)].cs.clone()
- if cs.onset < pageArea["limit"][0]: pageArea["limit"][0] = cs.onset
- if cs.onset + cs.duration > pageArea["limit"][1]: pageArea["limit"][1] = cs.onset + cs.duration
- page[t].append( cs )
- p = self._readstream(stream,i)
-
- return self.clipboardArea
-
- def tracksToClipboard( self, pages, tracks ):
- self.clipboard = []
- self.clipboardOrigin = [ 0, 0 ]
- self.clipboardArea = []
- for p in pages:
- page = [ [] for x in range(Config.NUMBER_OF_TRACKS) ]
- pageArea = { "limit": [ 0, 99999 ],
- "tracks": [ 0 for x in range(Config.NUMBER_OF_TRACKS) ] }
- self.clipboard.append(page)
- self.clipboardArea.append(pageArea)
- for t in tracks:
- pageArea["tracks"][t] = 1
- for id in self.noteD[p][t]:
- cs = self.noteD[p][t][id].cs.clone()
- page[t].append( cs )
-
- return self.clipboardArea
-
- # trackMap = { X: Y, W: Z, ... }; X,W are track indices, Y,Z are clipboard indices
- # instrumentMap = { X: Y, W: Z, ... }; X,W are track indices, Y,Z are instrument ids
- def pasteClipboard( self, pages, offset, trackMap, instrumentMap = {} ):
- if not len(self.clipboard): return
-
- deleteStream = []
- updateStream = []
- addStream = []
-
- pp = 0
- ppMax = len(self.clipboard)
- for p in pages:
- ticks = self.pages[p].ticks
- area = self.clipboardArea[pp]
- area["limit"][0] += offset
- area["limit"][1] += offset
- for t in trackMap.keys():
- if not area["tracks"][trackMap[t]]: continue
- if instrumentMap.has_key(t):
- updateInstrument = True
- instrumentId = instrumentMap[t]
- else:
- updateInstrument = False
- tdeleteStream = []
- tupdateOStream = []
- tupdateDStream = []
- taddStream = []
- # clear area
- for n in self.noteS[p][t]:
- start = n.cs.onset
- end = start + n.cs.duration
- if area["limit"][0] <= start < area["limit"][1]: start = area["limit"][1]
- if area["limit"][0] < end <= area["limit"][1]: end = area["limit"][0]
- if start < area["limit"][0] and end > area["limit"][1]: end = area["limit"][0]
- if end <= start:
- tdeleteStream.append( n.id )
- elif start != n.cs.onset:
- tupdateDStream += [ n.id, end - start ]
- tupdateOStream += [ n.id, start ]
- elif end != start + n.cs.duration:
- tupdateDStream += [ n.id, end - start ]
- if len(tdeleteStream):
- deleteStream += [ p, t, len(tdeleteStream) ] + tdeleteStream
- if len(tupdateOStream):
- updateStream += [ p, t, PARAMETER.ONSET, len(tupdateOStream)//2 ] + tupdateOStream
- if len(tupdateDStream):
- updateStream += [ p, t, PARAMETER.DURATION, len(tupdateDStream)//2 ] + tupdateDStream
- # paste notes
- for cs in self.clipboard[pp][trackMap[t]]:
- newcs = cs.clone()
- newcs.onset += offset
- if newcs.onset >= ticks: continue
- if newcs.onset + newcs.duration > ticks:
- newcs.duration = ticks - newcs.onset
- newcs.pageId = p
- newcs.trackId = t
- if updateInstrument:
- newcs.instrumentId = instrumentId
- # TODO update any other parameters?
- taddStream.append( newcs )
- if len(taddStream):
- addStream += [ p, t, len(taddStream) ] + taddStream
-
- pp += 1
- if pp == ppMax: pp -= ppMax
-
-
-
- if len(deleteStream):
- self.deleteNotes( deleteStream + [-1] )
- if len(updateStream):
- self.updateNotes( updateStream + [-1] )
- if len(addStream):
- return self.addNotes( addStream + [-1] )
-
- return None
-
- def getClipboardArea( self, ind ):
- N = len(self.clipboardArea)
- while ind >= N: ind -= N
- return self.clipboardArea[ind]
-
- #=======================================================
- # Listener Functions
-
- def addListener( self, listener, parasite = None, page = False, note = False ):
- if listener in self.listeners:
- return # only one listener per object
-
- if parasite:
- self.parasiteList[listener] = parasite
- self._addParasite( listener, parasite )
-
- if page: self.pageListeners.append( listener )
- if note: self.noteListeners.append( listener )
- self.listeners.append( listener )
-
- def deleteListener( self, listener ):
- self.listeners.remove( listener )
- if listener in self.pageListeners:
- self.pageListeners.remove( listener )
- if listener in self.noteListeners:
- self.noteListeners.remove( listener )
- if self.parasites.has_key( listener ):
- self._deleteParasite( listener )
- del self.parasiteList[listener]
-
- #-- private --------------------------------------------
- def _addParasite( self, listener, parasite ):
- for p in self.tune:
- for t in range(Config.NUMBER_OF_TRACKS):
- self.parasiteD[p][t][listener] = {}
- self.parasiteS[p][t][listener] = []
- for n in self.noteD[p][t].keys():
- parasite( self, listener, self.noteD[p][t][n] )
- self.parasiteD[p][t][listener][n] = parasite.attach() # give parasites the option of returning something other than themselves
- self.parasiteS[p][t][listener].insert( self.noteS[p][t].index( self.noteD[p][t][n]), parasite.attach() )
-
- def _deleteParasite( self, listener ):
- for p in self.tune:
- for t in range(Config.NUMBER_OF_TRACKS):
- for n in self.notes[p][t].keys():
- self.parasiteD[p][t][listener][n].destroy()
- del self.parasiteD[p][t][listener]
- del self.parasiteS[p][t][listener]
-
- #=======================================================
- # Get Functions
-
- def getPageCount( self ):
- return len(self.pages)
-
- def getTune( self ):
- return self.tune
-
- def getPage( self, page ):
- return self.pages[page]
-
- def getPageByIndex( self, ind ):
- return self.tune[ind]
-
- def getPageIndex( self, page ):
- return self.tune.index(page)
-
- # Not sure if this is useful!
- #def getBeatsBeforePage( self, page ):
- # return self.beatsBefore[page]
-
- def getNote( self, page, track, id, listener = None ):
- if listener:
- return self.parasiteD[page][track][listener][id]
- return self.noteD[page][track][id]
-
- def getNotesByPage( self, page, listener = None ):
- notes = []
- if listener:
- for i in range(Config.NUMBER_OF_TRACKS):
- notes.extend( self.parasiteS[page][i][listener] )
- else:
- for i in range(Config.NUMBER_OF_TRACKS):
- notes.extend( self.noteS[page][i] )
- return notes
-
-
- def getNotesByTrack( self, page, track, listener = None ):
- if listener:
- return self.parasiteS[page][track][listener]
- else:
- return self.noteS[page][track]
-
- def getNotes(self, listener = None ):
- notes = []
- for p in self.pages:
- notes.extend( self.getNotesByPage(p, listener ) )
- return notes
-
-
- def getCSNotesByPage( self, page ):
- return map( lambda n: n.cs, self.getNotesByPage( page ) )
-
- def getCSNotesByTrack( self, page, track ):
- return map( lambda n: n.cs, self.getNotesByTrack( page, track ) )
diff --git a/TamTamSynthLab.activity/common/Util/OS.py b/TamTamSynthLab.activity/common/Util/OS.py
deleted file mode 100644
index 605fbf4..0000000
--- a/TamTamSynthLab.activity/common/Util/OS.py
+++ /dev/null
@@ -1,36 +0,0 @@
-import commands
-import logging
-import os
-
-import common.Config as Config
-
-def system(*args):
- cmd = ' '.join(args)
- logging.debug('[system] %s' % cmd)
-
- status = commands.getstatusoutput(cmd)
- logging.debug('[system][out] %d: %s' % status)
-
- return status
-
-def arecord(duration, crop_csd, dst):
- tmp_file = os.path.join(Config.TMP_DIR, 'tempMic.wav')
- out_file = os.path.join(Config.TMP_DIR, 'micTemp.wav')
- crop_file = os.path.join(Config.FILES_DIR, crop_csd)
- dst_file = os.path.join(Config.DATA_DIR, dst)
-
- if system(Config.ARECORD, "-d", str(duration), tmp_file)[0] != 0:
- logging.error('arecord failed')
- return False
-
- system("csound", "--strset999=" + Config.TMP_DIR, crop_file)
-
- if os.path.isfile(dst):
- os.remove(dst_file)
-
- if os.path.isfile(out_file):
- os.rename(out_file, dst_file)
- os.remove(tmp_file)
- else:
- logging.debug('crop failed')
- os.rename(tmp_file, dst_file)
diff --git a/TamTamSynthLab.activity/common/Util/Profiler.py b/TamTamSynthLab.activity/common/Util/Profiler.py
deleted file mode 100644
index 0019a6c..0000000
--- a/TamTamSynthLab.activity/common/Util/Profiler.py
+++ /dev/null
@@ -1,93 +0,0 @@
-
-import time
-
-class TaskProfiler( object ):
- def __init__( self ):
- self.profiles = {}
-
- def ProfileBegin( self, profile ):
- if self.profiles.has_key(profile) == False: self.profiles[profile] = TaskProfile(profile)
- self.profiles[profile].begin()
-
- def ProfilePause( self, profile ):
- if self.profiles.has_key(profile) == False: return False
- self.profiles[profile].pause()
-
- def ProfileEnd( self, profile ):
- if self.profiles.has_key(profile) == False: return False
- self.profiles[profile].end()
-
- def Profile(self, profile):
- if profile in self.profiles:
- if self.profiles[profile].inProgress:
- self.profiles[profile].end()
- else:
- self.profiles[profile].begin()
- else:
- self.profiles[profile] = TaskProfile(profile)
- self.profiles[profile].begin()
-
- def ProfilePrint( self, profile ):
- if self.profiles.has_key(profile) == False: return "Couldn't find profile: " + profile
- return self.profiles[profile].printoverall()
-
- def ProfileEndAndPrint( self, profile ):
- if self.profiles.has_key(profile) == False: return "Couldn't find profile: " + profile
- self.profiles[profile].end()
- return self.profiles[profile].printlast()
-
-
- def PrintAll( self ):
- str = ""
- keys = self.profiles.keys()
- keys.sort()
- return "\n".join( [self.profiles[k].printoverall() for k in keys] )
- #for p in self.profiles:
- #str += "\n" + self.profiles[p].printoverall()
- #return str
-
-
-class TaskProfile( object ):
- def __init__( self, name ):
- self.name = name
- self.count = 0
- self.min = 666666666.0 # really high
- self.max = -1.0 # pretty low
- self.avg = 0.0
- self.dt = 0
- self.inProgress = False
- self.paused = False
-
- def begin( self ):
- if self.inProgress: return False # you fucked up your ProfileBegin and ProfileEnd pairs
- self.inProgress = True
- if self.paused:
- self.paused = False
- self.startTime += time.time() - self.pauseTime
- else:
- self.startTime = time.time()
-
- def pause( self ):
- self.pauseTime = time.time()
- self.inProgress = False
- self.paused = True
-
- def end( self ):
- self.dt = time.time() - self.startTime
- if self.paused:
- self.dt = self.pauseTime - self.startTime
- if self.dt > self.max: self.max = self.dt
- if self.dt < self.min: self.min = self.dt
- self.avg = (self.dt + self.avg*self.count)/(self.count+1)
- self.count += 1
- self.inProgress = False
- self.paused = False
-
- def printlast( self ):
- return "Profile: " + self.name + " last dt: %f" % (self.dt)
-
- def printoverall( self ):
- if self.count == 0: return "Profile: " + self.name + ", no data!"
- return "Profile: " + self.name + " avg: %f max: %f min: %f count: %d" % (self.avg, self.max, self.min, self.count)
-
-TP = TaskProfiler()
diff --git a/TamTamSynthLab.activity/common/Util/ThemeWidgets.py b/TamTamSynthLab.activity/common/Util/ThemeWidgets.py
deleted file mode 100644
index 6512655..0000000
--- a/TamTamSynthLab.activity/common/Util/ThemeWidgets.py
+++ /dev/null
@@ -1,1280 +0,0 @@
-import pygtk
-pygtk.require( '2.0' )
-import gtk
-import logging
-import common.Config as Config
-
-from sugar.graphics.combobox import ComboBox
-from sugar.graphics.palette import Palette, WidgetInvoker
-
-
-class ITYPE:
- PIXBUF = 0
- PIXMAP = 1
-
-class ImageHScale( gtk.HScale ):
- def __init__( self, image_name, adjustment = None, slider_border = 0, insensitive_name = None, trough_color = "#3D403A", snap = False ):
- gtk.HScale.__init__( self, adjustment )
-
- if snap: self.snap = 1/snap
- else: self.snap = False
-
- colormap = self.get_colormap()
- self.troughcolor = colormap.alloc_color( trough_color, True, True )
-
- img = gtk.Image()
- img.set_from_file( image_name )
- self.sliderPixbuf = img.get_pixbuf()
-
- if insensitive_name == None:
- self.insensitivePixbuf = None
- else:
- img = gtk.Image()
- img.set_from_file( insensitive_name )
- self.insensitivePixbuf = img.get_pixbuf()
-
- name = image_name + "ImageHScale"
- self.set_name(name)
-
- rc_str = """
-style "scale_style" {
- GtkRange::slider_width = %d
- GtkScale::slider_length = %d
-}
-widget "*%s*" style "scale_style"
- """ % ( self.sliderPixbuf.get_width(), self.sliderPixbuf.get_height(), name)
- gtk.rc_parse_string( rc_str )
-
- self.pixbufWidth = self.sliderPixbuf.get_width()
- self.pixbufHeight = self.sliderPixbuf.get_height()
- self.sliderBorder = slider_border
- self.sliderBorderMUL2 = self.sliderBorder*2
-
- self.set_draw_value(False)
-
- self.connect( "expose-event", self.expose )
- self.connect( "size-allocate", self.size_allocate )
- self.connect( "button-release-event", self.button_release )
- adjustment.connect( "changed", self.value_changed )
- adjustment.connect( "value-changed", self.value_changed )
-
- def size_allocate( self, widget, allocation ):
- self.alloc = allocation
- self.sliderY = self.alloc.height//2 - self.pixbufHeight//2
- return False
-
- def set_snap( self, snap ):
- if snap: self.snap = 1/snap
- else: self.snap = False
- self.queue_draw()
-
- def value_changed( self, adjustment ):
- if self.snap:
- val = round(self.snap*self.get_value())/self.snap
- if val != self.get_value():
- self.set_value( val )
- return True
-
- def expose( self, widget, event ):
-
- style = self.get_style()
- gc = style.fg_gc[gtk.STATE_NORMAL]
-
- gc.foreground = self.troughcolor
-
- self.window.draw_rectangle( gc, True, self.alloc.x + self.sliderBorder, self.alloc.y + self.alloc.height//2 - 1, self.alloc.width - self.sliderBorderMUL2, 3 )
-
- val = self.get_value()
- if self.snap:
- val = round(self.snap*val)/self.snap
- adj = self.get_adjustment()
- if self.get_inverted():
- sliderX = int((self.alloc.width - self.pixbufWidth)*(adj.upper-val)/(adj.upper - adj.lower))
- else:
- sliderX = int((self.alloc.width - self.pixbufWidth)*(val-adj.lower)/(adj.upper - adj.lower))
-
- if self.insensitivePixbuf != None and self.state == gtk.STATE_INSENSITIVE:
- self.window.draw_pixbuf( gc, self.insensitivePixbuf, 0, 0, self.alloc.x + sliderX, self.alloc.y + self.sliderY, self.pixbufWidth, self.pixbufHeight, gtk.gdk.RGB_DITHER_NORMAL, 0, 0 )
- else:
- self.window.draw_pixbuf( gc, self.sliderPixbuf, 0, 0, self.alloc.x + sliderX, self.alloc.y + self.sliderY, self.pixbufWidth, self.pixbufHeight, gtk.gdk.RGB_DITHER_NORMAL, 0, 0 )
-
- return True
-
- def button_release( self, widget, event ):
-
- if self.snap:
- self.set_value( round(self.snap*self.get_value())/self.snap )
-
-class ImageVScale( gtk.VScale ):
- def __init__( self, image_name, adjustment = None, slider_border = 0, insensitive_name = None, trough_color = "#3D403A", snap = False ):
- gtk.VScale.__init__( self, adjustment )
-
- if snap: self.snap = 1/snap
- else: self.snap = False
-
- colormap = self.get_colormap()
- self.troughcolor = colormap.alloc_color( trough_color, True, True )
-
- img = gtk.Image()
- img.set_from_file( image_name )
- self.sliderPixbuf = img.get_pixbuf()
-
- if insensitive_name == None:
- self.insensitivePixbuf = None
- else:
- img = gtk.Image()
- img.set_from_file( insensitive_name )
- self.insensitivePixbuf = img.get_pixbuf()
-
- name = image_name + "ImageVScale"
- self.set_name(name)
-
- rc_str = """
-style "scale_style" {
- GtkRange::slider_width = %d
- GtkScale::slider_length = %d
-}
-widget "*%s*" style "scale_style"
- """ % ( self.sliderPixbuf.get_width(), self.sliderPixbuf.get_height(), name)
- gtk.rc_parse_string( rc_str )
-
- self.pixbufWidth = self.sliderPixbuf.get_width()
- self.pixbufHeight = self.sliderPixbuf.get_height()
- self.sliderBorder = slider_border
- self.sliderBorderMUL2 = self.sliderBorder*2
-
- self.set_draw_value(False)
-
- self.connect( "expose-event", self.expose )
- self.connect( "size-allocate", self.size_allocate )
- self.connect( "button-release-event", self.button_release )
- adjustment.connect( "value-changed", self.value_changed )
-
- def size_allocate( self, widget, allocation ):
- self.alloc = allocation
- self.sliderX = self.alloc.width//2 - self.pixbufWidth//2
- return False
-
- def set_snap( self, snap ):
- if snap: self.snap = 1/snap
- else: self.snap = False
- self.queue_draw()
-
- def value_changed( self, adjustment ):
- if self.snap:
- val = round(self.snap*self.get_value())/self.snap
- if val != self.get_value():
- self.set_value( val )
-
- def expose( self, widget, event ):
-
- style = self.get_style()
- gc = style.fg_gc[gtk.STATE_NORMAL]
-
- gc.foreground = self.troughcolor
-
- self.window.draw_rectangle( gc, True, self.alloc.x + self.alloc.width//2 - 1, self.alloc.y + self.sliderBorder, 3, self.alloc.height - self.sliderBorderMUL2 )
-
- val = self.get_value()
- if self.snap:
- val = round(self.snap*val)/self.snap
- adj = self.get_adjustment()
- if self.get_inverted():
- sliderY = int((self.alloc.height - self.pixbufHeight)*(adj.upper-val)/(adj.upper - adj.lower))
- else:
- sliderY = int((self.alloc.height - self.pixbufHeight)*(val-adj.lower)/(adj.upper - adj.lower))
-
- if self.insensitivePixbuf != None and self.state == gtk.STATE_INSENSITIVE:
- self.window.draw_pixbuf( gc, self.insensitivePixbuf, 0, 0, self.alloc.x + self.sliderX, self.alloc.y + sliderY, self.pixbufWidth, self.pixbufHeight, gtk.gdk.RGB_DITHER_NORMAL, 0, 0 )
- else:
- self.window.draw_pixbuf( gc, self.sliderPixbuf, 0, 0, self.alloc.x + self.sliderX, self.alloc.y + sliderY, self.pixbufWidth, self.pixbufHeight, gtk.gdk.RGB_DITHER_NORMAL, 0, 0 )
-
- return True
-
- def button_release( self, widget, event ):
-
- if self.snap:
- self.set_value( round(self.snap*self.get_value())/self.snap )
-
-class XYSlider( gtk.EventBox ):
- def __init__( self, fixed, button, xadjustment, yadjustment, flipX = False, flipY = False ):
- gtk.EventBox.__init__( self )
-
- self.fixed = fixed
- self.button = button
- self.xadjustment = xadjustment
- self.yadjustment = yadjustment
- self.flipX = flipX
- self.flipY = flipY
-
- if ( button.get_parent() == None ):
- fixed.put( button, 0, 0 )
-
- self.add(fixed)
-
- self.fWidth = self.fHeight = 1
- self.bWidth = self.bHeight = 1
-
- self.add_events(gtk.gdk.POINTER_MOTION_HINT_MASK)
- self.connect( "size-allocate", lambda w,a:self.updateAlloc() )
- self.connect( "button-press-event", self.handlePress )
- self.connect( "button-release-event", self.handleRelease )
- self.connect( "motion-notify-event", self.handleMotion )
- self.button.connect( "size-allocate", lambda w,a: self.updateButton() )
- self.button.connect( "button-press-event", self.handleButtonPress )
- self.button.connect( "button-release-event", self.handleButtonRelease )
- self.button.add_events(gtk.gdk.BUTTON_MOTION_MASK|gtk.gdk.POINTER_MOTION_HINT_MASK)
- self.button.connect( "motion-notify-event", self.handleMotion )
- self.xadjustment.connect( "changed", lambda a1: self.updateAdjustemnt("x") )
- self.xadjustment.connect( "value-changed", lambda a1: self.updateLoc() )
- self.yadjustment.connect( "changed", lambda a1: self.updateAdjustment("y") )
- self.yadjustment.connect( "value-changed", lambda a1: self.updateLoc() )
-
- self.updateAdjustment("x")
- self.updateAdjustment("y")
- self.updateButton()
-
- def updateAlloc( self ):
- alloc = self.fixed.get_allocation()
- if self.fWidth != alloc.width or self.fHeight != alloc.height:
- self.fWidth = alloc.width
- self.fHeight = alloc.height
- self.width = self.fWidth - self.bWidth
- self.height = self.fHeight - self.bHeight
- self.updateLoc()
-
- def updateButton( self ):
- alloc = self.button.get_allocation()
- if self.bWidth != alloc.width or self.bHeight != alloc.height:
- self.bWidth = alloc.width
- self.bHeight = alloc.height
- self.bWidthDIV2 = alloc.width//2
- self.bHeightDIV2 = alloc.height//2
- self.width = self.fWidth - self.bWidth
- self.height = self.fHeight - self.bHeight
- self.updateLoc()
-
- def updateAdjustment( self, which ):
- if which == "x": self.xRange = int(self.xadjustment.upper - self.xadjustment.lower)
- else: self.yRange = int(self.yadjustment.upper - self.yadjustment.lower)
-
- def updateLoc( self ):
- if self.flipX: self.x = (self.width*int(self.xadjustment.upper - self.xadjustment.value))//self.xRange
- else: self.x = (self.width*int(self.xadjustment.value - self.xadjustment.lower))//self.xRange
- if self.flipY: self.y = (self.height*int(self.yadjustment.upper - self.yadjustment.value))//self.yRange
- else: self.y = (self.height*int(self.yadjustment.value - self.yadjustment.lower))//self.yRange
-
- self.fixed.move( self.button, self.x, self.y )
-
- def handlePress( self, w, event ):
- self.clickOffset = (0,0)
- self.updatePointer( int(event.x), int(event.y) )
- self.button.set_active(True)
-
- def handleRelease( self, w, event ):
- self.button.set_active(False)
- return True
-
- def handleButtonPress( self, w, event ):
- self.clickOffset = ( event.x - self.bWidthDIV2, event.y - self.bHeightDIV2 )
- self.button.set_active(True)
-
- def handleButtonRelease( self, w, event ):
- self.button.set_active(False)
- return True # block event propagation
-
- def handleMotion( self, w, event ):
- x, y, state = self.window.get_pointer()
- self.updatePointer( int(x - self.clickOffset[0]), int(y - self.clickOffset[1]) )
- return True
-
- def updatePointer( self, x, y ):
- x -= self.bWidthDIV2
- y -= self.bHeightDIV2
- if x < 0: x = 0
- elif x > self.width: x = self.width
- if y < 0: y = 0
- elif y > self.height: y = self.height
- if self.flipX: xvalue = self.xadjustment.lower+(self.xRange*(self.width - x))//self.width
- else: xvalue = self.xadjustment.lower+(self.xRange*x)//self.width
- if xvalue != self.xadjustment.value: self.xadjustment.set_value(xvalue)
- if self.flipY: yvalue = self.yadjustment.lower+(self.yRange*(self.height - y))//self.height
- else: yvalue = self.yadjustment.lower+(self.yRange*y)//self.height
- if yvalue != self.yadjustment.value: self.yadjustment.set_value(yvalue)
-
-class RoundHBox( gtk.HBox ):
- def __init__( self, radius = 5, fillcolor = "#000", bordercolor = "#FFF", homogeneous = False, spacing = 0 ):
- gtk.HBox.__init__( self, homogeneous, spacing )
- self.alloc = None
-
- self.radius = radius
-
- colormap = self.get_colormap()
- self.fillcolor = colormap.alloc_color(fillcolor,True,True)
- self.bordercolor = colormap.alloc_color(bordercolor,True,True)
-
- self.connect( "expose-event", self.expose )
- self.connect( "size-allocate", self.size_allocate )
-
- def update_constants( self ):
-
- if self.alloc == None: return
-
- self.borderW = self.get_border_width()
- self.borderWMUL2 = self.borderW*2
- self.corner = self.radius + self.borderW
- self.cornerMUL2 = self.corner*2
- self.cornerMINborderW = self.corner - self.borderW
-
- self.xPLUborderW = self.alloc.x + self.borderW
- self.xPLUcorner = self.alloc.x + self.corner
- self.xPLUwidthMINborderW = self.alloc.x + self.alloc.width - self.borderW
- self.xPLUwidthMINcorner = self.alloc.x + self.alloc.width - self.corner
- self.yPLUborderW = self.alloc.y + self.borderW
- self.yPLUcorner = self.alloc.y + self.corner
- self.yPLUheightMINborderW = self.alloc.y + self.alloc.height - self.borderW
- self.yPLUheightMINcorner = self.alloc.y + self.alloc.height - self.corner
- self.widthMINborderW = self.alloc.width - self.borderW
- self.widthMINcorner = self.alloc.width - self.corner
- self.widthMINcornerMUL2 = self.alloc.width - self.cornerMUL2
- self.heightMINborderW = self.alloc.height - self.borderW
- self.heightMINcorner = self.alloc.height - self.corner
- self.heightMINborderWMUL2 = self.alloc.height - self.borderWMUL2
- self.heightMINcornerMUL2 = self.alloc.height - self.cornerMUL2
-
- self.roundX1 = self.alloc.x + self.borderW - 1
- self.roundX2 = self.alloc.x + self.alloc.width - self.corner - self.radius - 1
- self.roundY1 = self.alloc.y + self.borderW - 1
- self.roundY2 = self.alloc.y + self.alloc.height - self.corner - self.radius - 1
- self.roundD = self.radius*2 + 1
- self.rightAngle = 90*64
-
- def size_allocate( self, widget, allocation ):
- self.alloc = allocation
- self.update_constants()
- return False
-
- def set_border_width( self, width ):
- gtk.HBox.set_border_width( self, width )
- self.update_constants()
-
- def set_radius( self, radius ):
- self.radius = radius
- self.update_constants()
-
- def set_fill_color( self, color ):
- colormap = self.get_colormap()
- self.fillcolor = colormap.alloc_color(color,True,True)
-
- def set_border_color( self, color ):
- colormap = self.get_colormap()
- self.bordercolor = colormap.alloc_color(color,True,True)
-
- def expose( self, widget, event ):
-
- if self.alloc == None: return
-
- #TP.ProfileBegin( "Round*Box::expose" )
-
- style = self.get_style()
- gc = style.fg_gc[gtk.STATE_NORMAL]
-
- startX = event.area.x - self.alloc.x
- startY = event.area.y - self.alloc.y
- stopX = startX + event.area.width
- stopY = startY + event.area.height
-
- saveForeground = gc.foreground
-
- # Note: could maybe do some optimization to fill only areas that are within the dirty rect, but drawing
- # seems to be quite fast compared to python code, so just leave it at clipping by each geometry feature
-
- gc.foreground = self.bordercolor
- if self.borderW:
- if stopY > self.corner and startY < self.heightMINcorner:
- if startX < self.borderW: # draw left border
- self.window.draw_rectangle( gc, True, self.alloc.x, self.yPLUcorner, self.borderW, self.heightMINcornerMUL2 )
- if stopX > self.widthMINborderW: # draw right border
- self.window.draw_rectangle( gc, True, self.xPLUwidthMINborderW, self.yPLUcorner, self.borderW, self.heightMINcornerMUL2 )
-
- if stopX > self.corner and startX < self.widthMINcorner:
- if startY < self.borderW: # draw top border
- self.window.draw_rectangle( gc, True, self.xPLUcorner, self.alloc.y, self.widthMINcornerMUL2, self.borderW )
- if stopY > self.heightMINborderW: # draw bottom border
- self.window.draw_rectangle( gc, True, self.xPLUcorner, self.yPLUheightMINborderW, self.widthMINcornerMUL2, self.borderW )
-
- if startX < self.corner:
- if startY < self.corner: # draw top left corner
- self.window.draw_rectangle( gc, True, self.alloc.x, self.alloc.y, self.corner, self.corner )
- gc.foreground = self.fillcolor
- self.window.draw_arc( gc, True, self.roundX1, self.roundY1, self.roundD, self.roundD, self.rightAngle, self.rightAngle )
- gc.foreground = self.bordercolor
- if stopY > self.heightMINcorner: # draw bottom left corner
- self.window.draw_rectangle( gc, True, self.alloc.x, self.yPLUheightMINcorner, self.corner, self.corner )
- gc.foreground = self.fillcolor
- self.window.draw_arc( gc, True, self.roundX1, self.roundY2, self.roundD, self.roundD, -self.rightAngle, -self.rightAngle )
- gc.foreground = self.bordercolor
- if stopX > self.widthMINcorner:
- if startY < self.corner: # draw top right corner
- self.window.draw_rectangle( gc, True, self.xPLUwidthMINcorner, self.alloc.y, self.corner, self.corner )
- gc.foreground = self.fillcolor
- self.window.draw_arc( gc, True, self.roundX2, self.roundY1, self.roundD, self.roundD, 0, self.rightAngle )
- gc.foreground = self.bordercolor
- if stopY > self.heightMINcorner: # draw bottom right corner
- self.window.draw_rectangle( gc, True, self.xPLUwidthMINcorner, self.yPLUheightMINcorner, self.corner, self.corner )
- gc.foreground = self.fillcolor
- self.window.draw_arc( gc, True, self.roundX2, self.roundY2, self.roundD, self.roundD, 0, -self.rightAngle )
- gc.foreground = self.bordercolor
-
- gc.foreground = self.fillcolor
- if startX < self.widthMINcorner and stopX > self.corner:
- if startY < self.heightMINborderW and stopY > self.borderW: # draw centre fill
- self.window.draw_rectangle( gc, True, self.xPLUcorner, self.yPLUborderW, self.widthMINcornerMUL2, self.heightMINborderWMUL2 )
- if startX < self.corner and stopX > self.borderW:
- if startY < self.heightMINcorner and stopY > self.corner: # draw left fill
- self.window.draw_rectangle( gc, True, self.xPLUborderW, self.yPLUcorner, self.cornerMINborderW, self.heightMINcornerMUL2 )
- if startX < self.widthMINborderW and stopX > self.widthMINcorner:
- if startY < self.heightMINcorner and stopY > self.corner: # draw right fill
- self.window.draw_rectangle( gc, True, self.xPLUwidthMINcorner, self.yPLUcorner, self.cornerMINborderW, self.heightMINcornerMUL2 )
-
- gc.foreground = saveForeground
-
- #TP.ProfileEnd( "Round*Box::expose" )
-
- return False
-
-class RoundVBox( gtk.VBox ):
- def __init__( self, radius = 5, fillcolor = "#000", bordercolor = "#FFF", homogeneous = False, spacing = 0 ):
- gtk.VBox.__init__( self, homogeneous, spacing )
- self.alloc = None
-
- self.radius = radius
-
- colormap = self.get_colormap()
- self.fillcolor = colormap.alloc_color(fillcolor,True,True)
- self.bordercolor = colormap.alloc_color(bordercolor,True,True)
-
- self.connect( "expose-event",self.expose )
- self.connect( "size-allocate", self.size_allocate )
-
- def update_constants( self ):
-
- if self.alloc == None: return
-
- self.borderW = self.get_border_width()
- self.borderWMUL2 = self.borderW*2
- self.corner = self.radius + self.borderW
- self.cornerMUL2 = self.corner*2
- self.cornerMINborderW = self.corner - self.borderW
-
- self.xPLUborderW = self.alloc.x + self.borderW
- self.xPLUcorner = self.alloc.x + self.corner
- self.xPLUwidthMINborderW = self.alloc.x + self.alloc.width - self.borderW
- self.xPLUwidthMINcorner = self.alloc.x + self.alloc.width - self.corner
- self.yPLUborderW = self.alloc.y + self.borderW
- self.yPLUcorner = self.alloc.y + self.corner
- self.yPLUheightMINborderW = self.alloc.y + self.alloc.height - self.borderW
- self.yPLUheightMINcorner = self.alloc.y + self.alloc.height - self.corner
- self.widthMINborderW = self.alloc.width - self.borderW
- self.widthMINcorner = self.alloc.width - self.corner
- self.widthMINcornerMUL2 = self.alloc.width - self.cornerMUL2
- self.heightMINborderW = self.alloc.height - self.borderW
- self.heightMINcorner = self.alloc.height - self.corner
- self.heightMINborderWMUL2 = self.alloc.height - self.borderWMUL2
- self.heightMINcornerMUL2 = self.alloc.height - self.cornerMUL2
-
- self.roundX1 = self.alloc.x + self.borderW - 1
- self.roundX2 = self.alloc.x + self.alloc.width - self.corner - self.radius - 1
- self.roundY1 = self.alloc.y + self.borderW - 1
- self.roundY2 = self.alloc.y + self.alloc.height - self.corner - self.radius - 1
- self.roundD = self.radius*2 + 1
- self.rightAngle = 90*64
-
- def size_allocate( self, widget, allocation ):
- self.alloc = allocation
- self.update_constants()
- return False
-
- def set_border_width( self, width ):
- gtk.VBox.set_border_width( self, width )
- self.update_constants()
-
- def set_radius( self, radius ):
- self.radius = radius
- self.update_constants()
-
- def set_fill_color( self, color ):
- colormap = self.get_colormap()
- self.fillcolor = colormap.alloc_color(color,True,True)
-
- def set_border_color( self, color ):
- colormap = self.get_colormap()
- self.bordercolor = colormap.alloc_color(color,True,True)
-
- def expose( self, widget, event ):
-
- if self.alloc == None: return
-
- #TP.ProfileBegin( "Round*Box::expose" )
-
- style = self.get_style()
- gc = style.fg_gc[gtk.STATE_NORMAL]
-
- startX = event.area.x - self.alloc.x
- startY = event.area.y - self.alloc.y
- stopX = startX + event.area.width
- stopY = startY + event.area.height
-
- saveForeground = gc.foreground
-
- # Note: could maybe do some optimization to fill only areas that are within the dirty rect, but drawing
- # seems to be quite fast compared to python code, so just leave it at clipping by each geometry feature
-
- gc.foreground = self.bordercolor
- if self.borderW:
- if stopY > self.corner and startY < self.heightMINcorner:
- if startX < self.borderW: # draw left border
- self.window.draw_rectangle( gc, True, self.alloc.x, self.yPLUcorner, self.borderW, self.heightMINcornerMUL2 )
- if stopX > self.widthMINborderW: # draw right border
- self.window.draw_rectangle( gc, True, self.xPLUwidthMINborderW, self.yPLUcorner, self.borderW, self.heightMINcornerMUL2 )
-
- if stopX > self.corner and startX < self.widthMINcorner:
- if startY < self.borderW: # draw top border
- self.window.draw_rectangle( gc, True, self.xPLUcorner, self.alloc.y, self.widthMINcornerMUL2, self.borderW )
- if stopY > self.heightMINborderW: # draw bottom border
- self.window.draw_rectangle( gc, True, self.xPLUcorner, self.yPLUheightMINborderW, self.widthMINcornerMUL2, self.borderW )
-
- if startX < self.corner:
- if startY < self.corner: # draw top left corner
- self.window.draw_rectangle( gc, True, self.alloc.x, self.alloc.y, self.corner, self.corner )
- gc.foreground = self.fillcolor
- self.window.draw_arc( gc, True, self.roundX1, self.roundY1, self.roundD, self.roundD, self.rightAngle, self.rightAngle )
- gc.foreground = self.bordercolor
- if stopY > self.heightMINcorner: # draw bottom left corner
- self.window.draw_rectangle( gc, True, self.alloc.x, self.yPLUheightMINcorner, self.corner, self.corner )
- gc.foreground = self.fillcolor
- self.window.draw_arc( gc, True, self.roundX1, self.roundY2, self.roundD, self.roundD, -self.rightAngle, -self.rightAngle )
- gc.foreground = self.bordercolor
- if stopX > self.widthMINcorner:
- if startY < self.corner: # draw top right corner
- self.window.draw_rectangle( gc, True, self.xPLUwidthMINcorner, self.alloc.y, self.corner, self.corner )
- gc.foreground = self.fillcolor
- self.window.draw_arc( gc, True, self.roundX2, self.roundY1, self.roundD, self.roundD, 0, self.rightAngle )
- gc.foreground = self.bordercolor
- if stopY > self.heightMINcorner: # draw bottom right corner
- self.window.draw_rectangle( gc, True, self.xPLUwidthMINcorner, self.yPLUheightMINcorner, self.corner, self.corner )
- gc.foreground = self.fillcolor
- self.window.draw_arc( gc, True, self.roundX2, self.roundY2, self.roundD, self.roundD, 0, -self.rightAngle )
- gc.foreground = self.bordercolor
-
- gc.foreground = self.fillcolor
- if startX < self.widthMINcorner and stopX > self.corner:
- if startY < self.heightMINborderW and stopY > self.borderW: # draw centre fill
- self.window.draw_rectangle( gc, True, self.xPLUcorner, self.yPLUborderW, self.widthMINcornerMUL2, self.heightMINborderWMUL2 )
- if startX < self.corner and stopX > self.borderW:
- if startY < self.heightMINcorner and stopY > self.corner: # draw left fill
- self.window.draw_rectangle( gc, True, self.xPLUborderW, self.yPLUcorner, self.cornerMINborderW, self.heightMINcornerMUL2 )
- if startX < self.widthMINborderW and stopX > self.widthMINcorner:
- if startY < self.heightMINcorner and stopY > self.corner: # draw right fill
- self.window.draw_rectangle( gc, True, self.xPLUwidthMINcorner, self.yPLUcorner, self.cornerMINborderW, self.heightMINcornerMUL2 )
-
- gc.foreground = saveForeground
-
- #TP.ProfileEnd( "Round*Box::expose" )
-
- return False
-
-class RoundFixed( gtk.Fixed ):
- def __init__( self, radius = 5, fillcolor = "#000", bordercolor = "#FFF" ):
- gtk.Fixed.__init__( self )
- self.alloc = None
-
- self.radius = radius
-
- colormap = self.get_colormap()
- self.fillcolor = colormap.alloc_color(fillcolor,True,True)
- self.bordercolor = colormap.alloc_color(bordercolor,True,True)
-
- self.connect( "expose-event", self.expose )
- self.connect( "size-allocate", self.size_allocate )
-
- def update_constants( self ):
-
- if self.alloc == None: return
-
- self.borderW = self.get_border_width()
- self.borderWMUL2 = self.borderW*2
- self.corner = self.radius + self.borderW
- self.cornerMUL2 = self.corner*2
- self.cornerMINborderW = self.corner - self.borderW
-
- self.xPLUborderW = self.alloc.x + self.borderW
- self.xPLUcorner = self.alloc.x + self.corner
- self.xPLUwidthMINborderW = self.alloc.x + self.alloc.width - self.borderW
- self.xPLUwidthMINcorner = self.alloc.x + self.alloc.width - self.corner
- self.yPLUborderW = self.alloc.y + self.borderW
- self.yPLUcorner = self.alloc.y + self.corner
- self.yPLUheightMINborderW = self.alloc.y + self.alloc.height - self.borderW
- self.yPLUheightMINcorner = self.alloc.y + self.alloc.height - self.corner
- self.widthMINborderW = self.alloc.width - self.borderW
- self.widthMINcorner = self.alloc.width - self.corner
- self.widthMINcornerMUL2 = self.alloc.width - self.cornerMUL2
- self.heightMINborderW = self.alloc.height - self.borderW
- self.heightMINcorner = self.alloc.height - self.corner
- self.heightMINborderWMUL2 = self.alloc.height - self.borderWMUL2
- self.heightMINcornerMUL2 = self.alloc.height - self.cornerMUL2
-
- self.roundX1 = self.alloc.x + self.borderW - 1
- self.roundX2 = self.alloc.x + self.alloc.width - self.corner - self.radius - 1
- self.roundY1 = self.alloc.y + self.borderW - 1
- self.roundY2 = self.alloc.y + self.alloc.height - self.corner - self.radius - 1
- self.roundD = self.radius*2 + 1
- self.rightAngle = 90*64
-
- def size_allocate( self, widget, allocation ):
- self.alloc = allocation
- self.update_constants()
- return False
-
- def set_border_width( self, width ):
- gtk.Fixed.set_border_width( self, width )
- self.update_constants()
-
- def set_radius( self, radius ):
- self.radius = radius
- self.update_constants()
-
- def set_fill_color( self, color ):
- colormap = self.get_colormap()
- self.fillcolor = colormap.alloc_color(color,True,True)
-
- def set_border_color( self, color ):
- colormap = self.get_colormap()
- self.bordercolor = colormap.alloc_color(color,True,True)
-
- def expose( self, widget, event ):
-
- if self.alloc == None: return
-
- #TP.ProfileBegin( "Round*Box::expose" )
-
- style = self.get_style()
- gc = style.fg_gc[gtk.STATE_NORMAL]
-
- startX = event.area.x - self.alloc.x
- startY = event.area.y - self.alloc.y
- stopX = startX + event.area.width
- stopY = startY + event.area.height
-
- saveForeground = gc.foreground
-
- # Note: could maybe do some optimization to fill only areas that are within the dirty rect, but drawing
- # seems to be quite fast compared to python code, so just leave it at clipping by each geometry feature
-
- gc.foreground = self.bordercolor
- if self.borderW:
- if stopY > self.corner and startY < self.heightMINcorner:
- if startX < self.borderW: # draw left border
- self.window.draw_rectangle( gc, True, self.alloc.x, self.yPLUcorner, self.borderW, self.heightMINcornerMUL2 )
- if stopX > self.widthMINborderW: # draw right border
- self.window.draw_rectangle( gc, True, self.xPLUwidthMINborderW, self.yPLUcorner, self.borderW, self.heightMINcornerMUL2 )
-
- if stopX > self.corner and startX < self.widthMINcorner:
- if startY < self.borderW: # draw top border
- self.window.draw_rectangle( gc, True, self.xPLUcorner, self.alloc.y, self.widthMINcornerMUL2, self.borderW )
- if stopY > self.heightMINborderW: # draw bottom border
- self.window.draw_rectangle( gc, True, self.xPLUcorner, self.yPLUheightMINborderW, self.widthMINcornerMUL2, self.borderW )
-
- if startX < self.corner:
- if startY < self.corner: # draw top left corner
- self.window.draw_rectangle( gc, True, self.alloc.x, self.alloc.y, self.corner, self.corner )
- gc.foreground = self.fillcolor
- self.window.draw_arc( gc, True, self.roundX1, self.roundY1, self.roundD, self.roundD, self.rightAngle, self.rightAngle )
- gc.foreground = self.bordercolor
- if stopY > self.heightMINcorner: # draw bottom left corner
- self.window.draw_rectangle( gc, True, self.alloc.x, self.yPLUheightMINcorner, self.corner, self.corner )
- gc.foreground = self.fillcolor
- self.window.draw_arc( gc, True, self.roundX1, self.roundY2, self.roundD, self.roundD, -self.rightAngle, -self.rightAngle )
- gc.foreground = self.bordercolor
- if stopX > self.widthMINcorner:
- if startY < self.corner: # draw top right corner
- self.window.draw_rectangle( gc, True, self.xPLUwidthMINcorner, self.alloc.y, self.corner, self.corner )
- gc.foreground = self.fillcolor
- self.window.draw_arc( gc, True, self.roundX2, self.roundY1, self.roundD, self.roundD, 0, self.rightAngle )
- gc.foreground = self.bordercolor
- if stopY > self.heightMINcorner: # draw bottom right corner
- self.window.draw_rectangle( gc, True, self.xPLUwidthMINcorner, self.yPLUheightMINcorner, self.corner, self.corner )
- gc.foreground = self.fillcolor
- self.window.draw_arc( gc, True, self.roundX2, self.roundY2, self.roundD, self.roundD, 0, -self.rightAngle )
- gc.foreground = self.bordercolor
-
- gc.foreground = self.fillcolor
- if startX < self.widthMINcorner and stopX > self.corner:
- if startY < self.heightMINborderW and stopY > self.borderW: # draw centre fill
- self.window.draw_rectangle( gc, True, self.xPLUcorner, self.yPLUborderW, self.widthMINcornerMUL2, self.heightMINborderWMUL2 )
- if startX < self.corner and stopX > self.borderW:
- if startY < self.heightMINcorner and stopY > self.corner: # draw left fill
- self.window.draw_rectangle( gc, True, self.xPLUborderW, self.yPLUcorner, self.cornerMINborderW, self.heightMINcornerMUL2 )
- if startX < self.widthMINborderW and stopX > self.widthMINcorner:
- if startY < self.heightMINcorner and stopY > self.corner: # draw right fill
- self.window.draw_rectangle( gc, True, self.xPLUwidthMINcorner, self.yPLUcorner, self.cornerMINborderW, self.heightMINcornerMUL2 )
-
- gc.foreground = saveForeground
-
- #TP.ProfileEnd( "Round*Box::expose" )
-
- return False
-
-class ImageButton(gtk.Button):
- def __init__( self, mainImg_path, clickImg_path = None, enterImg_path = None, backgroundFill = None ):
- gtk.Button.__init__(self)
- self.alloc = None
- win = gtk.gdk.get_default_root_window()
- self.gc = gtk.gdk.GC( win )
- self.image = {}
- self.itype = {}
- self.iwidth = {}
- self.iwidthDIV2 = {}
- self.iheight = {}
- self.iheightDIV2 = {}
-
- self.backgroundFill = backgroundFill
-
- def prepareImage( name, path ):
- pix = gtk.gdk.pixbuf_new_from_file(path)
- if pix.get_has_alpha():
- if backgroundFill == None:
- self.image[name] = pix
- self.itype[name] = ITYPE.PIXBUF
- else:
- self.image[name] = gtk.gdk.Pixmap( win, pix.get_width(), pix.get_height() )
- colormap = self.get_colormap()
- self.gc.foreground = colormap.alloc_color( backgroundFill, True, True )
- self.image[name].draw_rectangle( self.gc, True, 0, 0, pix.get_width(), pix.get_height() )
- self.image[name].draw_pixbuf( self.gc, pix, 0, 0, 0, 0, pix.get_width(), pix.get_height(), gtk.gdk.RGB_DITHER_NONE )
- self.itype[name] = ITYPE.PIXMAP
- else:
- self.image[name] = gtk.gdk.Pixmap( win, pix.get_width(), pix.get_height() )
- self.image[name].draw_pixbuf( self.gc, pix, 0, 0, 0, 0, pix.get_width(), pix.get_height(), gtk.gdk.RGB_DITHER_NONE )
- self.itype[name] = ITYPE.PIXMAP
- self.iwidth[name] = pix.get_width()
- self.iwidthDIV2[name] = self.iwidth[name]//2
- self.iheight[name] = pix.get_height()
- self.iheightDIV2[name] = self.iheight[name]//2
-
- prepareImage( "main", mainImg_path )
-
- if enterImg_path != None:
- prepareImage( "enter", enterImg_path )
- self.connect('enter-notify-event',self.on_btn_enter)
- self.connect('leave-notify-event',self.on_btn_leave)
- if clickImg_path != None:
- prepareImage( "click", clickImg_path )
- self.connect('pressed',self.on_btn_press, None)
- self.connect('released',self.on_btn_release, None)
- if enterImg_path == None:
- self.image["enter"] = self.image["main"]
- self.itype["enter"] = self.itype["main"]
- self.iwidth["enter"] = self.iwidth["main"]
- self.iwidthDIV2["enter"] = self.iwidthDIV2["main"]
- self.iheight["enter"] = self.iheight["main"]
- self.iheightDIV2["enter"] = self.iheightDIV2["main"]
- self.connect('enter-notify-event',self.on_btn_enter)
- self.connect('leave-notify-event',self.on_btn_leave)
-
- self.curImage = self.upImage = "main"
- self.down = False
-
- self.connect('expose-event', self.expose)
- self.connect('size-allocate', self.size_allocate)
-
- self.set_size_request(self.iwidth["main"],self.iheight["main"])
-
- def size_allocate(self, widget, allocation):
- self.alloc = allocation
- self.drawX = allocation.x + allocation.width//2
- self.drawY = allocation.y + allocation.height//2
-
- def expose(self, widget, event):
- if self.itype[self.curImage] == ITYPE.PIXBUF:
- self.window.draw_pixbuf( self.gc, self.image[self.curImage], 0, 0, self.drawX - self.iwidthDIV2[self.curImage], self.drawY - self.iheightDIV2[self.curImage], self.iwidth[self.curImage], self.iheight[self.curImage], gtk.gdk.RGB_DITHER_NONE)
- else:
- self.window.draw_drawable( self.gc, self.image[self.curImage], 0, 0, self.drawX - self.iwidthDIV2[self.curImage], self.drawY - self.iheightDIV2[self.curImage], self.iwidth[self.curImage], self.iheight[self.curImage] )
- return True
-
- def setImage(self, name, pix):
- if name == "main" and self.image["main"] == self.image["enter"]:
- updateEnter = True
- else:
- updateEnter = False
-
- if pix.get_has_alpha():
- if self.backgroundFill == None:
- self.image[name] = pix
- self.itype[name] = ITYPE.PIXBUF
- else:
- self.image[name] = gtk.gdk.Pixmap( win, pix.get_width(), pix.get_height() )
- colormap = self.get_colormap()
- self.gc.foreground = colormap.alloc_color( self.backgroundFill, True, True )
- self.image[name].draw_rectangle( self.gc, True, 0, 0, pix.get_width(), pix.get_height() )
- self.image[name].draw_pixbuf( self.gc, pix, 0, 0, 0, 0, pix.get_width(), pix.get_height(), gtk.gdk.RGB_DITHER_NONE )
- self.itype[name] = ITYPE.PIXMAP
- else:
- self.image[name] = gtk.gdk.Pixmap( win, pix.get_width(), pix.get_height() )
- self.image[name].draw_pixbuf( self.gc, pix, 0, 0, 0, 0, pix.get_width(), pix.get_height(), gtk.gdk.RGB_DITHER_NONE )
- self.itype[name] = ITYPE.PIXMAP
- self.iwidth[name] = pix.get_width()
- self.iwidthDIV2[name] = self.iwidth[name]//2
- self.iheight[name] = pix.get_height()
- self.iheightDIV2[name] = self.iheight[name]//2
-
- if updateEnter:
- self.image["enter"] = self.image["main"]
- self.itype["enter"] = self.itype["main"]
- self.iwidth["enter"] = self.iwidth["main"]
- self.iwidthDIV2["enter"] = self.iwidthDIV2["main"]
- self.iheight["enter"] = self.iheight["main"]
- self.iheightDIV2["enter"] = self.iheightDIV2["main"]
- self.connect('enter-notify-event',self.on_btn_enter)
- self.connect('leave-notify-event',self.on_btn_leave)
-
- self.queue_draw()
-
- def on_btn_press(self, widget, event):
- self.curImage = "click"
- self.down = True
- self.queue_draw()
-
- def on_btn_enter(self, widget, event):
- if event.mode == gtk.gdk.CROSSING_NORMAL:
- self.upImage = "enter"
- if self.down: self.curImage = "click"
- else: self.curImage = "enter"
- self.queue_draw()
-
- def on_btn_leave(self, widget, event):
- if event.mode == gtk.gdk.CROSSING_NORMAL:
- self.curImage = self.upImage = "main"
- self.queue_draw()
-
- def on_btn_release(self, widget, event):
- self.curImage = self.upImage
- self.down = False
- self.queue_draw()
-
- def set_palette(self, palette):
- self._palette = palette
- self._palette.props.invoker = WidgetInvoker(self)
- self._palette.props.invoker._position_hint = WidgetInvoker.AT_CURSOR
-
-class ImageToggleButton(gtk.ToggleButton):
-
- def __init__(self , mainImg_path, altImg_path, enterImg_path = None, backgroundFill = None ):
- gtk.ToggleButton.__init__(self)
- self.alloc = None
- self.within = False
- self.clicked = False
-
- win = gtk.gdk.get_default_root_window()
- self.gc = gtk.gdk.GC( win )
- self.image = {}
- self.itype = {}
- self.iwidth = {}
- self.iwidthDIV2 = {}
- self.iheight = {}
- self.iheightDIV2 = {}
-
- self.backgroundFill = backgroundFill
-
- def prepareImage( name, path ):
- pix = gtk.gdk.pixbuf_new_from_file(path)
- if pix.get_has_alpha():
- if backgroundFill == None:
- self.image[name] = pix
- self.itype[name] = ITYPE.PIXBUF
- else:
- self.image[name] = gtk.gdk.Pixmap( win, pix.get_width(), pix.get_height() )
- colormap = self.get_colormap()
- self.gc.foreground = colormap.alloc_color( backgroundFill, True, True )
- self.image[name].draw_rectangle( self.gc, True, 0, 0, pix.get_width(), pix.get_height() )
- self.image[name].draw_pixbuf( self.gc, pix, 0, 0, 0, 0, pix.get_width(), pix.get_height(), gtk.gdk.RGB_DITHER_NONE )
- self.itype[name] = ITYPE.PIXMAP
- else:
- self.image[name] = gtk.gdk.Pixmap( win, pix.get_width(), pix.get_height() )
- self.image[name].draw_pixbuf( self.gc, pix, 0, 0, 0, 0, pix.get_width(), pix.get_height(), gtk.gdk.RGB_DITHER_NONE )
- self.itype[name] = ITYPE.PIXMAP
- self.iwidth[name] = pix.get_width()
- self.iwidthDIV2[name] = self.iwidth[name]//2
- self.iheight[name] = pix.get_height()
- self.iheightDIV2[name] = self.iheight[name]//2
-
- prepareImage( "main", mainImg_path )
- prepareImage( "alt", altImg_path )
-
- if enterImg_path != None:
- prepareImage( "enter", enterImg_path )
- else:
- self.image["enter"] = self.image["main"]
- self.itype["enter"] = self.itype["main"]
- self.iwidth["enter"] = self.iwidth["main"]
- self.iwidthDIV2["enter"] = self.iwidthDIV2["main"]
- self.iheight["enter"] = self.iheight["main"]
- self.iheightDIV2["enter"] = self.iheightDIV2["main"]
-
- self.connect('enter-notify-event',self.on_btn_enter)
- self.connect('leave-notify-event',self.on_btn_leave)
-
- self.connect('toggled',self.toggleImage)
- self.connect('pressed',self.pressed )
- self.connect('released',self.released )
- self.connect('expose-event', self.expose)
- self.connect('size-allocate', self.size_allocate)
-
- self.set_size_request(self.iwidth["main"],self.iheight["main"])
-
- self.toggleImage( self )
-
- def size_allocate(self, widget, allocation):
- self.alloc = allocation
- self.drawX = allocation.x + allocation.width//2
- self.drawY = allocation.y + allocation.height//2
-
- def expose(self, widget, event):
- if self.itype[self.curImage] == ITYPE.PIXBUF:
- self.window.draw_pixbuf( self.gc, self.image[self.curImage], 0, 0, self.drawX - self.iwidthDIV2[self.curImage], self.drawY - self.iheightDIV2[self.curImage], self.iwidth[self.curImage], self.iheight[self.curImage], gtk.gdk.RGB_DITHER_NONE)
- else:
- self.window.draw_drawable( self.gc, self.image[self.curImage], 0, 0, self.drawX - self.iwidthDIV2[self.curImage], self.drawY - self.iheightDIV2[self.curImage], self.iwidth[self.curImage], self.iheight[self.curImage] )
- return True
-
- def setImage(self, name, pix):
- if name == "main" and self.image["main"] == self.image["enter"]:
- updateEnter = True
- else:
- updateEnter = False
-
- if pix.get_has_alpha():
- if self.backgroundFill == None:
- self.image[name] = pix
- self.itype[name] = ITYPE.PIXBUF
- else:
- self.image[name] = gtk.gdk.Pixmap( win, pix.get_width(), pix.get_height() )
- colormap = self.get_colormap()
- self.gc.foreground = colormap.alloc_color( self.backgroundFill, True, True )
- self.image[name].draw_rectangle( self.gc, True, 0, 0, pix.get_width(), pix.get_height() )
- self.image[name].draw_pixbuf( self.gc, pix, 0, 0, 0, 0, pix.get_width(), pix.get_height(), gtk.gdk.RGB_DITHER_NONE )
- self.itype[name] = ITYPE.PIXMAP
- else:
- self.image[name] = gtk.gdk.Pixmap( win, pix.get_width(), pix.get_height() )
- self.image[name].draw_pixbuf( self.gc, pix, 0, 0, 0, 0, pix.get_width(), pix.get_height(), gtk.gdk.RGB_DITHER_NONE )
- self.itype[name] = ITYPE.PIXMAP
- self.iwidth[name] = pix.get_width()
- self.iwidthDIV2[name] = self.iwidth[name]//2
- self.iheight[name] = pix.get_height()
- self.iheightDIV2[name] = self.iheight[name]//2
-
- if updateEnter:
- self.image["enter"] = self.image["main"]
- self.itype["enter"] = self.itype["main"]
- self.iwidth["enter"] = self.iwidth["main"]
- self.iwidthDIV2["enter"] = self.iwidthDIV2["main"]
- self.iheight["enter"] = self.iheight["main"]
- self.iheightDIV2["enter"] = self.iheightDIV2["main"]
- self.connect('enter-notify-event',self.on_btn_enter)
- self.connect('leave-notify-event',self.on_btn_leave)
-
- self.queue_draw()
-
- def toggleImage(self, widget):
- if not self.get_active():
- if self.within and self.image.has_key("enter"):
- self.curImage = "enter"
- else:
- self.curImage = "main"
- else:
- self.curImage = "alt"
- self.queue_draw()
-
- def pressed( self, widget ):
- self.clicked = True
- self.curImage = "alt"
- self.queue_draw()
-
- def released( self, widget ):
- self.clicked = False
- self.toggleImage( self )
-
- def on_btn_enter(self, widget, event ):
- if event.mode == gtk.gdk.CROSSING_NORMAL:
- self.within = True
- if not self.get_active() and not self.clicked:
- self.curImage = "enter"
- else:
- self.curImage = "alt"
- self.queue_draw()
-
- def on_btn_leave(self, widget, event ):
- if event.mode == gtk.gdk.CROSSING_NORMAL:
- self.within = False
- if not self.get_active():
- self.curImage = "main"
- else:
- self.curImage = "alt"
- self.queue_draw()
-
- def set_palette(self, palette):
- self._palette = palette
- self._palette.props.invoker = WidgetInvoker(self)
- self._palette.props.invoker._position_hint = WidgetInvoker.AT_CURSOR
-
-class ImageRadioButton(gtk.RadioButton):
-
- def __init__( self, group, mainImg_path, altImg_path, enterImg_path = None, backgroundFill = None ):
- gtk.RadioButton.__init__(self, group)
- self.alloc = None
- self.within = False
- self.clicked = False
-
- win = gtk.gdk.get_default_root_window()
- self.gc = gtk.gdk.GC( win )
- self.image = {}
- self.itype = {}
- self.iwidth = {}
- self.iwidthDIV2 = {}
- self.iheight = {}
- self.iheightDIV2 = {}
-
- self.backgroundFill = backgroundFill
-
- def prepareImage( name, path ):
- pix = gtk.gdk.pixbuf_new_from_file(path)
- if pix.get_has_alpha():
- if backgroundFill == None:
- self.image[name] = pix
- self.itype[name] = ITYPE.PIXBUF
- else:
- self.image[name] = gtk.gdk.Pixmap( win, pix.get_width(), pix.get_height() )
- colormap = self.get_colormap()
- self.gc.foreground = colormap.alloc_color( backgroundFill, True, True )
- self.image[name].draw_rectangle( self.gc, True, 0, 0, pix.get_width(), pix.get_height() )
- self.image[name].draw_pixbuf( self.gc, pix, 0, 0, 0, 0, pix.get_width(), pix.get_height(), gtk.gdk.RGB_DITHER_NONE )
- self.itype[name] = ITYPE.PIXMAP
- else:
- self.image[name] = gtk.gdk.Pixmap( win, pix.get_width(), pix.get_height() )
- self.image[name].draw_pixbuf( self.gc, pix, 0, 0, 0, 0, pix.get_width(), pix.get_height(), gtk.gdk.RGB_DITHER_NONE )
- self.itype[name] = ITYPE.PIXMAP
- self.iwidth[name] = pix.get_width()
- self.iwidthDIV2[name] = self.iwidth[name]//2
- self.iheight[name] = pix.get_height()
- self.iheightDIV2[name] = self.iheight[name]//2
-
- prepareImage( "main", mainImg_path )
- prepareImage( "alt", altImg_path )
-
- if enterImg_path != None:
- prepareImage( "enter", enterImg_path )
- else:
- self.image["enter"] = self.image["main"]
- self.itype["enter"] = self.itype["main"]
- self.iwidth["enter"] = self.iwidth["main"]
- self.iwidthDIV2["enter"] = self.iwidthDIV2["main"]
- self.iheight["enter"] = self.iheight["main"]
- self.iheightDIV2["enter"] = self.iheightDIV2["main"]
-
- self.connect('enter-notify-event',self.on_btn_enter)
- self.connect('leave-notify-event',self.on_btn_leave)
-
- self.connect("toggled", self.toggleImage )
- self.connect('pressed',self.pressed )
- self.connect('released',self.released )
- self.connect('expose-event', self.expose)
- self.connect('size-allocate', self.size_allocate)
-
- self.set_size_request(self.iwidth["main"],self.iheight["main"])
-
- self.toggleImage( self )
-
- def size_allocate(self, widget, allocation):
- self.alloc = allocation
- self.drawX = allocation.x + allocation.width//2
- self.drawY = allocation.y + allocation.height//2
-
- def expose(self, widget, event):
- if self.itype[self.curImage] == ITYPE.PIXBUF:
- self.window.draw_pixbuf( self.gc, self.image[self.curImage], 0, 0, self.drawX - self.iwidthDIV2[self.curImage], self.drawY - self.iheightDIV2[self.curImage], self.iwidth[self.curImage], self.iheight[self.curImage], gtk.gdk.RGB_DITHER_NONE)
- else:
- self.window.draw_drawable( self.gc, self.image[self.curImage], 0, 0, self.drawX - self.iwidthDIV2[self.curImage], self.drawY - self.iheightDIV2[self.curImage], self.iwidth[self.curImage], self.iheight[self.curImage] )
- return True
-
- def setImage(self, name, pix):
- if name == "main" and self.image["main"] == self.image["enter"]:
- updateEnter = True
- else:
- updateEnter = False
-
- if pix.get_has_alpha():
- if self.backgroundFill == None:
- self.image[name] = pix
- self.itype[name] = ITYPE.PIXBUF
- else:
- self.image[name] = gtk.gdk.Pixmap( win, pix.get_width(), pix.get_height() )
- colormap = self.get_colormap()
- self.gc.foreground = colormap.alloc_color( self.backgroundFill, True, True )
- self.image[name].draw_rectangle( self.gc, True, 0, 0, pix.get_width(), pix.get_height() )
- self.image[name].draw_pixbuf( self.gc, pix, 0, 0, 0, 0, pix.get_width(), pix.get_height(), gtk.gdk.RGB_DITHER_NONE )
- self.itype[name] = ITYPE.PIXMAP
- else:
- self.image[name] = gtk.gdk.Pixmap( win, pix.get_width(), pix.get_height() )
- self.image[name].draw_pixbuf( self.gc, pix, 0, 0, 0, 0, pix.get_width(), pix.get_height(), gtk.gdk.RGB_DITHER_NONE )
- self.itype[name] = ITYPE.PIXMAP
- self.iwidth[name] = pix.get_width()
- self.iwidthDIV2[name] = self.iwidth[name]//2
- self.iheight[name] = pix.get_height()
- self.iheightDIV2[name] = self.iheight[name]//2
-
- if updateEnter:
- self.image["enter"] = self.image["main"]
- self.itype["enter"] = self.itype["main"]
- self.iwidth["enter"] = self.iwidth["main"]
- self.iwidthDIV2["enter"] = self.iwidthDIV2["main"]
- self.iheight["enter"] = self.iheight["main"]
- self.iheightDIV2["enter"] = self.iheightDIV2["main"]
- self.connect('enter-notify-event',self.on_btn_enter)
- self.connect('leave-notify-event',self.on_btn_leave)
-
- self.queue_draw()
-
- def toggleImage( self, widget ):
- if not self.get_active():
- if self.within and self.image.has_key("enter"):
- self.curImage = "enter"
- else:
- self.curImage = "main"
- else:
- self.curImage = "alt"
- self.queue_draw()
-
- def pressed( self, widget ):
- self.clicked = True
- self.curImage = "alt"
- self.queue_draw()
-
- def released( self, widget ):
- self.clicked = False
- self.toggleImage( self )
-
- def on_btn_enter(self, widget, event):
- if event.mode == gtk.gdk.CROSSING_NORMAL:
- self.within = True
- if not self.get_active() and not self.clicked:
- self.curImage = "enter"
- else:
- self.curImage = "alt"
- self.queue_draw()
-
- def on_btn_leave(self, widget, event):
- if event.mode == gtk.gdk.CROSSING_NORMAL:
- self.within = False
- if not self.get_active():
- self.curImage = "main"
- else:
- self.curImage = "alt"
- self.queue_draw()
-
- def set_palette(self, palette):
- self._palette = palette
- self._palette.props.invoker = WidgetInvoker(self)
- self._palette.props.invoker._position_hint = WidgetInvoker.AT_CURSOR
-
-class keyButton(gtk.Button):
- import cairo
- def __init__(self, width, height, fillcolor, strokecolor):
- gtk.Button.__init__(self)
- self.alloc = None
- win = gtk.gdk.get_default_root_window()
- self.gc = gtk.gdk.GC(win)
-
- self.connect('expose-event', self.expose)
- self.connect('size-allocate', self.size_allocate)
-
- self.width = width
- self.height = height
- self.fillcolor = fillcolor
- self.strokecolor = strokecolor
-
- self.set_size_request(self.width,self.height)
-
- def size_allocate(self, widget, allocation):
- self.alloc = allocation
- self.drawX = allocation.x + allocation.width//2
- self.drawY = allocation.y + allocation.height//2
-
- def expose(self, widget, event):
- self.draw()
- return True
-
- def draw(self):
- self.cr = self.window.cairo_create()
- self.cr.set_source_rgb(self.fillcolor[0],self.fillcolor[1],self.fillcolor[2])
- self.draw_round_rect(self.cr,self.drawX - self.width//2, self.drawY - self.height //2, self.width,self.height,10)
- self.cr.fill()
- self.cr.set_line_width(3)
- self.cr.set_source_rgb(self.strokecolor[0],self.strokecolor[1],self.strokecolor[2])
- self.draw_round_rect(self.cr,self.drawX - self.width//2, self.drawY - self.height //2, self.width,self.height,10)
- self.cr.stroke()
-
- def draw_round_rect(self,context,x,y,w,h,r):
- context.move_to(x+r,y) # Move to A
- context.line_to(x+w-r,y) # Straight line to B
- context.curve_to(x+w,y,x+w,y,x+w,y+r) # Curve to C, Control points are both at Q
- context.line_to(x+w,y+h-r) # Move to D
- context.curve_to(x+w,y+h,x+w,y+h,x+w-r,y+h) # Curve to E
- context.line_to(x+r,y+h) # Line to F
- context.curve_to(x,y+h,x,y+h,x,y+h-r) # Curve to G
- context.line_to(x,y+r) # Line to H
- context.curve_to(x,y,x,y,x+r,y) # Curve to A
- return
-
- def set_fillcolor(self,r,g,b):
- self.fillcolor = [r,g,b]
- self.queue_draw()
-
- def set_strokecolor(self,r,g,b):
- self.strokecolor = [r,g,b]
- self.queue_draw()
-
-class BigComboBox(ComboBox):
- def __init__(self):
- ComboBox.__init__(self)
-
- def append_item(self, action_id, text, icon_name=None, size = None,
- pixbuf = None):
-
- if not self._icon_renderer and (icon_name or pixbuf):
- self._icon_renderer = gtk.CellRendererPixbuf()
-
- settings = self.get_settings()
- w, h = gtk.icon_size_lookup_for_settings(settings, gtk.ICON_SIZE_MENU)
- self._icon_renderer.props.stock_size = w
-
- self.pack_start(self._icon_renderer, False)
- self.add_attribute(self._icon_renderer, 'pixbuf', 2)
-
- if not self._text_renderer and text:
- self._text_renderer = gtk.CellRendererText()
- self.pack_end(self._text_renderer, True)
- self.add_attribute(self._text_renderer, 'text', 1)
-
- if not pixbuf:
- if icon_name:
- if not size:
- size = gtk.ICON_SIZE_LARGE_TOOLBAR
- width, height = gtk.icon_size_lookup(size)
- else:
- width, height = size
- if icon_name[0:6] == "theme:":
- icon_name = self._get_real_name_from_theme(icon_name[6:], size)
- pixbuf = gtk.gdk.pixbuf_new_from_file_at_size(icon_name, width, height)
- else:
- pixbuf = None
-
- self._model.append([action_id, text, pixbuf, False])
diff --git a/TamTamSynthLab.activity/common/Util/Trackpad.py b/TamTamSynthLab.activity/common/Util/Trackpad.py
deleted file mode 100644
index 64f9a81..0000000
--- a/TamTamSynthLab.activity/common/Util/Trackpad.py
+++ /dev/null
@@ -1,95 +0,0 @@
-import pygtk
-pygtk.require( '2.0' )
-import gtk
-import gobject
-
-from common.Util.CSoundClient import new_csound_client
-import common.Config as Config
-
-KEY_MAP_PIANO = Config.KEY_MAP_PIANO
-
-class Trackpad:
- def __init__(self, win):
- if not Config.FEATURES_GRAB_MOUSE:
- return
-
- self.win = win
- self.csnd = new_csound_client()
- win.add_events(gtk.gdk.POINTER_MOTION_MASK)
- win.add_events(gtk.gdk.BUTTON_PRESS_MASK)
- win.add_events(gtk.gdk.BUTTON_RELEASE_MASK)
- win.connect('motion-notify-event',self.handle_motion)
- win.connect('key-press-event',self.handle_keyPress)
- win.connect('key-release-event',self.handle_keyRelease)
-
- self.first_x = None
- self.current_x = None
- self.final_x = None
- self.first_y = None
- self.current_y = None
- self.final_y = None
-
- self.buttonPressed = False
-
- self.create_invisible_cursor()
-
- self.display = self.win.get_display()
- self.screen = gtk.gdk.Display.get_default_screen(self.display)
- self.context = None
-
- def setContext(self, context):
- self.context = context
-
- def create_invisible_cursor(self):
- pix_data = """/* XPM */
- static char * invisible_xpm[] = {
- "1 1 1 1",
- " c None",
- " "};"""
- color = gtk.gdk.Color()
- pix = gtk.gdk.pixmap_create_from_data(None, pix_data, 1, 1, 1, color, color)
- self.invisible_cursor = gtk.gdk.Cursor(pix,pix,color,color,0,0)
-
- def handle_motion(self,widget,event):
- if self.context != 'edit':
- if event.x < 0:
- X = 0
- elif event.x > self.screen.get_width():
- X = self.screen.get_width()
- else:
- X = event.x
-
- if event.y < 0:
- Y = 0
- elif event.y > self.screen.get_height():
- Y = self.screen.get_height()
- else:
- Y = event.y
-
- self.current_x = X
- self.current_y = Y
- if self.buttonPressed:
- self.final_x = X - self.first_x
- self.final_y = Y - self.first_y
- self.csnd.setTrackpadX(self.final_x)
- self.csnd.setTrackpadY(self.final_y)
-
- def handle_keyPress(self,widget,event):
- if KEY_MAP_PIANO.has_key(event.hardware_keycode) and self.buttonPressed == False:
- gtk.gdk.Display.warp_pointer(self.display, self.screen, self.screen.get_width() / 2, self.screen.get_height() / 2)
- gtk.gdk.pointer_grab(self.win.window, event_mask = gtk.gdk.POINTER_MOTION_MASK)#, cursor = self.invisible_cursor)
- self.buttonPressed = True
- self.first_x = self.screen.get_width() / 2
- self.first_y = self.screen.get_height() / 2
-
- def handle_keyRelease(self,widget,event):
- if KEY_MAP_PIANO.has_key(event.hardware_keycode):
- gtk.gdk.pointer_ungrab(time = 0L)
- self.buttonPressed = False
- self.restoreDelay = gobject.timeout_add(120, self.restore)
-
- def restore( self ):
- self.csnd.setTrackpadX(0)
- self.csnd.setTrackpadY(0)
- gobject.source_remove( self.restoreDelay )
-
diff --git a/TamTamSynthLab.activity/common/Util/__init__.py b/TamTamSynthLab.activity/common/Util/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/TamTamSynthLab.activity/common/Util/__init__.py
+++ /dev/null
diff --git a/TamTamSynthLab.activity/common/__init__.py b/TamTamSynthLab.activity/common/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/TamTamSynthLab.activity/common/__init__.py
+++ /dev/null
diff --git a/TamTamSynthLab.activity/common/port/COPYING b/TamTamSynthLab.activity/common/port/COPYING
deleted file mode 100644
index 623b625..0000000
--- a/TamTamSynthLab.activity/common/port/COPYING
+++ /dev/null
@@ -1,340 +0,0 @@
- GNU GENERAL PUBLIC LICENSE
- Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
- 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
- Preamble
-
- The licenses for most software are designed to take away your
-freedom to share and change it. By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users. This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it. (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.) You can apply it to
-your programs, too.
-
- When we speak of free software, we are referring to freedom, not
-price. Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
- To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
- For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have. You must make sure that they, too, receive or can get the
-source code. And you must show them these terms so they know their
-rights.
-
- We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
- Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software. If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
- Finally, any free program is threatened constantly by software
-patents. We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary. To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
- The precise terms and conditions for copying, distribution and
-modification follow.
-
- GNU GENERAL PUBLIC LICENSE
- TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
- 0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License. The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language. (Hereinafter, translation is included without limitation in
-the term "modification".) Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope. The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
- 1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
- 2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
- a) You must cause the modified files to carry prominent notices
- stating that you changed the files and the date of any change.
-
- b) You must cause any work that you distribute or publish, that in
- whole or in part contains or is derived from the Program or any
- part thereof, to be licensed as a whole at no charge to all third
- parties under the terms of this License.
-
- c) If the modified program normally reads commands interactively
- when run, you must cause it, when started running for such
- interactive use in the most ordinary way, to print or display an
- announcement including an appropriate copyright notice and a
- notice that there is no warranty (or else, saying that you provide
- a warranty) and that users may redistribute the program under
- these conditions, and telling the user how to view a copy of this
- License. (Exception: if the Program itself is interactive but
- does not normally print such an announcement, your work based on
- the Program is not required to print an announcement.)
-
-These requirements apply to the modified work as a whole. If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works. But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
- 3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
- a) Accompany it with the complete corresponding machine-readable
- source code, which must be distributed under the terms of Sections
- 1 and 2 above on a medium customarily used for software interchange; or,
-
- b) Accompany it with a written offer, valid for at least three
- years, to give any third party, for a charge no more than your
- cost of physically performing source distribution, a complete
- machine-readable copy of the corresponding source code, to be
- distributed under the terms of Sections 1 and 2 above on a medium
- customarily used for software interchange; or,
-
- c) Accompany it with the information you received as to the offer
- to distribute corresponding source code. (This alternative is
- allowed only for noncommercial distribution and only if you
- received the program in object code or executable form with such
- an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it. For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable. However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
- 4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License. Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
- 5. You are not required to accept this License, since you have not
-signed it. However, nothing else grants you permission to modify or
-distribute the Program or its derivative works. These actions are
-prohibited by law if you do not accept this License. Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
- 6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions. You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
- 7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License. If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all. For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices. Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
- 8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded. In such case, this License incorporates
-the limitation as if written in the body of this License.
-
- 9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time. Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number. If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation. If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
- 10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission. For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this. Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
- NO WARRANTY
-
- 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
- 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
- END OF TERMS AND CONDITIONS
-
- How to Apply These Terms to Your New Programs
-
- If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
- To do so, attach the following notices to the program. It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
- <one line to give the program's name and a brief idea of what it does.>
- Copyright (C) <year> <name of author>
-
- This program is free software; you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation; either version 2 of the License, or
- (at your option) any later version.
-
- This program is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this program; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
- Gnomovision version 69, Copyright (C) year name of author
- Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
- This is free software, and you are welcome to redistribute it
- under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License. Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary. Here is a sample; alter the names:
-
- Yoyodyne, Inc., hereby disclaims all copyright interest in the program
- `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
- <signature of Ty Coon>, 1 April 1989
- Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs. If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library. If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/TamTamSynthLab.activity/common/port/README b/TamTamSynthLab.activity/common/port/README
deleted file mode 100644
index 256200d..0000000
--- a/TamTamSynthLab.activity/common/port/README
+++ /dev/null
@@ -1,18 +0,0 @@
-About
------
-
-A set of sugar components/libraries/etc to simplify writing activities.
-
-Cornerstone purposes for this project:
-* Total backwards compatibility for sugar-port API
-* Run on all sugar platforms beginning from 0.82
-
-In most cases sugar-port could be embedded to activity's directory tree.
-There is no need to include the whole sugar-port project only top level
-files/directories you are using directly - sugar-port's top level entities
-don't import each other.
-
-Get it
-------
-
-http://wiki.sugarlabs.org/go/Development_Team/sugar-port
diff --git a/TamTamSynthLab.activity/common/port/__init__.py b/TamTamSynthLab.activity/common/port/__init__.py
deleted file mode 100644
index e69de29..0000000
--- a/TamTamSynthLab.activity/common/port/__init__.py
+++ /dev/null
diff --git a/TamTamSynthLab.activity/common/port/scrolledbox.py b/TamTamSynthLab.activity/common/port/scrolledbox.py
deleted file mode 100644
index db38b51..0000000
--- a/TamTamSynthLab.activity/common/port/scrolledbox.py
+++ /dev/null
@@ -1,189 +0,0 @@
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program; if not, write to the Free Software
-# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-import gtk
-
-from sugar.graphics.icon import Icon
-
-class ScrollButton(gtk.ToolButton):
- def __init__(self, icon_name):
- gtk.ToolButton.__init__(self)
-
- icon = Icon(icon_name = icon_name,
- icon_size=gtk.ICON_SIZE_SMALL_TOOLBAR)
- # The alignment is a hack to work around gtk.ToolButton code
- # that sets the icon_size when the icon_widget is a gtk.Image
- alignment = gtk.Alignment(0.5, 0.5)
- alignment.add(icon)
- self.set_icon_widget(alignment)
-
-class ScrolledBox(gtk.EventBox):
- def __init__(self, orientation,
- arrows_policy=gtk.POLICY_AUTOMATIC,
- scroll_policy=gtk.POLICY_AUTOMATIC):
-
- gtk.EventBox.__init__(self)
- self.orientation = orientation
- self._viewport = None
- self._abox = None
- self._aviewport = None
- self._aviewport_sig = None
- self._arrows_policy = arrows_policy
- self._scroll_policy = scroll_policy
- self._left = None
- self._right = None
-
- if orientation == gtk.ORIENTATION_HORIZONTAL:
- box = gtk.HBox()
- else:
- box = gtk.VBox()
- if self._arrows_policy == gtk.POLICY_AUTOMATIC:
- box.connect("size-allocate", self._box_allocate_cb)
- self.add(box)
-
- if self._arrows_policy != gtk.POLICY_NEVER:
- if orientation == gtk.ORIENTATION_HORIZONTAL:
- self._left = ScrollButton('go-left')
- else:
- self._left = ScrollButton('go-up')
- self._left.connect('clicked', self._scroll_cb,
- gtk.gdk.SCROLL_LEFT)
- box.pack_start(self._left, False, False, 0)
-
- self._scrolled = gtk.ScrolledWindow()
- if orientation == gtk.ORIENTATION_HORIZONTAL:
- self._scrolled.set_policy(scroll_policy, gtk.POLICY_NEVER)
- else:
- self._scrolled.set_policy(gtk.POLICY_NEVER, scroll_policy)
- self._scrolled.connect('scroll-event', self._scroll_event_cb)
- box.pack_start(self._scrolled, True, True, 0)
-
- if orientation == gtk.ORIENTATION_HORIZONTAL:
- self._adj = self._scrolled.get_hadjustment()
- else:
- self._adj = self._scrolled.get_vadjustment()
- self._adj.connect('changed', self._scroll_changed_cb)
- self._adj.connect('value-changed', self._scroll_changed_cb)
-
- if self._arrows_policy != gtk.POLICY_NEVER:
- if orientation == gtk.ORIENTATION_HORIZONTAL:
- self._right = ScrollButton('go-right')
- else:
- self._right = ScrollButton('go-down')
- self._right.connect('clicked', self._scroll_cb,
- gtk.gdk.SCROLL_RIGHT)
- box.pack_start(self._right, False, False, 0)
-
- def modify_fg(self, state, bg):
- gtk.EventBox.modify_fg(self, state, bg)
- self._viewport.get_parent().modify_fg(state, bg)
-
- def modify_bg(self, state, bg):
- gtk.EventBox.modify_bg(self, state, bg)
- self._viewport.get_parent().modify_bg(state, bg)
-
- def set_viewport(self, widget):
- if widget == self._viewport: return
- if self._viewport and self._aviewport_sig:
- self._viewport.disconnect(self._aviewport_sig)
- self._viewport = widget
-
- if self._arrows_policy == gtk.POLICY_AUTOMATIC:
- self._aviewport_sig = self._viewport.connect('size-allocate',
- self._viewport_allocate_cb)
-
- self._scrolled.add_with_viewport(widget)
-
- def get_viewport_allocation(self):
- alloc = self._scrolled.get_allocation()
- alloc.x -= self._adj.get_value()
- return alloc
-
- def get_adjustment(self):
- return self._adj
-
- def _box_allocate_cb(self, w, a):
- self._abox = a
- self._update_arrows()
-
- def _viewport_allocate_cb(self, w, a):
- self._aviewport = a
- self._update_arrows()
-
- def _update_arrows(self):
- if not self._abox or not self._aviewport: return
-
- if self.orientation == gtk.ORIENTATION_HORIZONTAL:
- show_flag = self._abox.width < self._aviewport.width
- else:
- show_flag = self._abox.height < self._aviewport.height
-
- if show_flag:
- self._left.show()
- self._right.show()
- else:
- self._left.hide()
- self._right.hide()
-
- def _scroll_event_cb(self, widget, event):
- if self.orientation == gtk.ORIENTATION_HORIZONTAL:
- if event.direction == gtk.gdk.SCROLL_UP:
- event.direction = gtk.gdk.SCROLL_LEFT
- if event.direction == gtk.gdk.SCROLL_DOWN:
- event.direction = gtk.gdk.SCROLL_RIGHT
- else:
- if event.direction == gtk.gdk.SCROLL_LEFT:
- event.direction = gtk.gdk.SCROLL_UP
- if event.direction == gtk.gdk.SCROLL_RIGHT:
- event.direction = gtk.gdk.SCROLL_DOWN
-
- if self._scroll_policy == gtk.POLICY_NEVER:
- self._scroll_cb(None, event.direction)
-
- return False
-
- def _scroll_cb(self, widget, direction):
- if direction in (gtk.gdk.SCROLL_LEFT, gtk.gdk.SCROLL_UP):
- val = max(self._adj.get_property('lower'), self._adj.get_value()
- - self._adj.get_property('page_increment'))
- else:
- val = min(self._adj.get_property('upper')
- - self._adj.get_property('page_size'),
- self._adj.get_value()
- + self._adj.get_property('page_increment'))
-
- self._adj.set_value(val)
-
- def _scroll_changed_cb(self, widget):
- val = self._adj.get_value()
- if self._left:
- if val == 0:
- self._left.set_sensitive(False)
- else:
- self._left.set_sensitive(True)
-
- if self._right:
- if val >= self._adj.get_property('upper') - \
- self._adj.get_property('page_size'):
- self._right.set_sensitive(False)
- else:
- self._right.set_sensitive(True)
-
-class HScrolledBox(ScrolledBox):
- def __init__(self, **kwargs):
- ScrolledBox.__init__(self, gtk.ORIENTATION_HORIZONTAL, **kwargs)
-
-class VScrolledBox(ScrolledBox):
- def __init__(self, **kwargs):
- ScrolledBox.__init__(self, gtk.ORIENTATION_VERTICAL, **kwargs)