Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authoramartin <olpc@xo-05-28-21.localdomain>2007-09-19 09:25:33 (GMT)
committer amartin <olpc@xo-05-28-21.localdomain>2007-09-19 09:25:33 (GMT)
commitae3ecf931b84a285ed308e7c92cd79890005c430 (patch)
tree836975317322b343b57e07fc4332c9592fa074a6
parentf0f8faf28d8a40c6ba2fa78e04424792f9385f70 (diff)
parent7166d2a7e53465811cfa50120a02a44591fa20e2 (diff)
merge
-rw-r--r--TamTamEdit.activity/Edit/EditToolbars.py12
-rw-r--r--TamTamEdit.activity/Edit/MainWindow.py39
-rw-r--r--TamTamEdit.activity/Edit/TuneInterface.py3
-rw-r--r--TamTamEdit.activity/MANIFEST1
-rw-r--r--TamTamEdit.activity/TamTamEdit.py30
-rw-r--r--TamTamJam.activity/Jam/Popup.py6
-rw-r--r--TamTamJam.activity/MANIFEST13
-rw-r--r--TamTamJam.activity/TamTamJam.py20
-rw-r--r--TamTamMini.activity/TamTamMini.py20
-rw-r--r--TamTamSynthLab.activity/TamTamSynthLab.py20
-rwxr-xr-xcommon/Resources/Loops/apple.ttl20
-rwxr-xr-xcommon/Resources/Loops/apricot.ttl20
-rwxr-xr-xcommon/Resources/Loops/cherry.ttl17
-rwxr-xr-xcommon/Resources/Loops/coconut.ttl12
-rwxr-xr-xcommon/Resources/Loops/fig.ttl17
-rwxr-xr-xcommon/Resources/Loops/guava.ttl36
-rwxr-xr-xcommon/Resources/Loops/kumquat.ttl16
-rwxr-xr-xcommon/Resources/Loops/lime.ttl26
-rw-r--r--common/Resources/Loops/loop1.ttl5
-rw-r--r--common/Resources/Loops/loop2.ttl44
-rw-r--r--common/Resources/Loops/loop3.ttl9
-rwxr-xr-xcommon/Resources/Loops/pear.ttl29
-rwxr-xr-xcommon/Resources/Loops/plum.ttl14
23 files changed, 267 insertions, 162 deletions
diff --git a/TamTamEdit.activity/Edit/EditToolbars.py b/TamTamEdit.activity/Edit/EditToolbars.py
index 7854b7d..ae0c334 100644
--- a/TamTamEdit.activity/Edit/EditToolbars.py
+++ b/TamTamEdit.activity/Edit/EditToolbars.py
@@ -89,8 +89,6 @@ class mainToolbar(gtk.Toolbar):
self.pointerButton = RadioToolButton('edit-pointer', group = None)
self.pointerButton.set_palette(self._pointerPalette)
self.pointerButton.connect('toggled', self.edit.handleToolClick, 'default')
- self.pointerButton.get_child().connect('enter-notify-event', self.edit.blockFocus)
- self.pointerButton.get_child().connect('leave-notify-event', self.edit.unblockFocus)
self.insert(self.pointerButton, -1)
self.pointerButton.show()
@@ -99,8 +97,6 @@ class mainToolbar(gtk.Toolbar):
self.drawButton = RadioToolButton('edit-pencil', group = self.pointerButton)
self.drawButton.set_palette(self._drawPalette)
self.drawButton.connect('toggled', self.edit.handleToolClick, 'draw')
- self.drawButton.get_child().connect('enter-notify-event', self.edit.blockFocus)
- self.drawButton.get_child().connect('leave-notify-event', self.edit.unblockFocus)
self.insert(self.drawButton, -1)
self.drawButton.show()
@@ -109,8 +105,6 @@ class mainToolbar(gtk.Toolbar):
self.paintButton = RadioToolButton('edit-brush', group = self.pointerButton)
self.paintButton.set_palette(self._paintPalette)
self.paintButton.connect('toggled', self.edit.handleToolClick, 'paint')
- self.paintButton.get_child().connect('enter-notify-event', self.edit.blockFocus)
- self.paintButton.get_child().connect('leave-notify-event', self.edit.unblockFocus)
self.insert(self.paintButton, -1)
self.paintButton.show()
@@ -127,8 +121,6 @@ class mainToolbar(gtk.Toolbar):
self._volumeTempoPalette = volumeTempoPalette(_('Volume / Tempo'), self.edit)
self.volumeTempoButton = ToggleToolButton('voltemp')
self.volumeTempoButton.set_palette(self._volumeTempoPalette)
- self.volumeTempoButton.get_child().connect('enter-notify-event', self.edit.blockFocus)
- self.volumeTempoButton.get_child().connect('leave-notify-event', self.edit.unblockFocus)
self.insert(self.volumeTempoButton, -1)
self.volumeTempoButton.show()
@@ -219,8 +211,6 @@ class generateToolbar(gtk.Toolbar):
self.generationButton = ToggleToolButton('dice')
#self.generationButton.connect(None)
self.generationButton.set_palette(self._generationPalette)
- self.generationButton.get_child().connect('enter-notify-event', self.edit.blockFocus)
- self.generationButton.get_child().connect('leave-notify-event', self.edit.unblockFocus)
self.insert(self.generationButton, -1)
self.generationButton.show()
@@ -228,8 +218,6 @@ class generateToolbar(gtk.Toolbar):
self._propertiesPalette = propertiesPalette(_('Properties'), self.edit)
self.propsButton = ToggleToolButton('props')
self.propsButton.set_palette(self._propertiesPalette)
- self.propsButton.get_child().connect('enter-notify-event', self.edit.blockFocus)
- self.propsButton.get_child().connect('leave-notify-event', self.edit.unblockFocus)
self.insert(self.propsButton, -1)
self.propsButton.show()
diff --git a/TamTamEdit.activity/Edit/MainWindow.py b/TamTamEdit.activity/Edit/MainWindow.py
index d23f5eb..c4c697a 100644
--- a/TamTamEdit.activity/Edit/MainWindow.py
+++ b/TamTamEdit.activity/Edit/MainWindow.py
@@ -247,9 +247,7 @@ class MainWindow( gtk.EventBox ):
self.GUI["2drumButton"] = ImageToggleButton(Config.IMAGE_ROOT + self.trackInstrument[4].name + '.png', Config.IMAGE_ROOT + self.trackInstrument[4].name + '.png')
self.GUI["2drumPalette"] = instrumentPalette(_('Track 5 Volume'), 4, self)
self.GUI["2drumButton"].set_palette(self.GUI["2drumPalette"])
- self.GUI["2drumButton"].connect("toggled", self.pickDrum)
- self.GUI["2drumButton"].connect('enter-notify-event', self.blockFocus)
- self.GUI["2drumButton"].connect('leave-notify-event', self.unblockFocus)
+ self.GUI["2drumButton"].connect("toggled", self.pickDrum)
self.GUI["2drumBox"].pack_start( self.GUI["2drumButton"] )
self.GUI["2instrumentPanel"].pack_start( self.GUI["2drumBox"] )
self.GUI["2page"].pack_start( self.GUI["2instrumentPanel"], False )
@@ -963,14 +961,6 @@ class MainWindow( gtk.EventBox ):
#self.GUI["2instrument" + str(i+1) + "muteButton"].set_active(False)
self.GUI["2instrument" + str(i+1) + "Palette"].muteButton.set_active(False)
self.updatePagesPlaying()
-
- def blockFocus(self, widget = None, data = None):
- self.activity.handler_block(self.activity.focusOutHandler)
- self.activity.handler_block(self.activity.focusInHandler)
-
- def unblockFocus(self, widget = None, data = None):
- self.activity.handler_unblock(self.activity.focusOutHandler)
- self.activity.handler_unblock(self.activity.focusInHandler)
#-----------------------------------
# generation functions
@@ -1906,7 +1896,6 @@ class InstrumentButton( gtk.DrawingArea ):
self.connect( "button-press-event", self.button_press )
self.connect( "button-release-event", self.button_release )
self.connect( "motion-notify-event", self.motion_notify )
- self.connect( "enter-notify-event", self.enter_notify )
self.connect( "leave-notify-event", self.leave_notify )
self.connect( "expose-event", self.expose )
@@ -1996,13 +1985,6 @@ class InstrumentButton( gtk.DrawingArea ):
if self.clicked == None:
self.queue_draw()
- self.owner.activity.handler_unblock(self.owner.activity.focusOutHandler)
- self.owner.activity.handler_unblock(self.owner.activity.focusInHandler)
-
- def enter_notify(self, widget, event):
- # Block the Focus Out event so that the sound does'nt stop when a Palette is invoked.
- self.owner.activity.handler_block(self.owner.activity.focusOutHandler)
- self.owner.activity.handler_block(self.owner.activity.focusInHandler)
def setPrimary( self, img ):
self.primary = img
@@ -2092,10 +2074,29 @@ class instrumentPalette(Palette):
self.volumeSlider.set_size_request(250, -1)
self.volumeSlider.set_inverted(False)
self.volumeSlider.set_draw_value(False)
+
+ self.instrumentBox = BigComboBox()
+ rawinstruments = Config.INSTRUMENTS.keys()
+ instruments = [instrument for instrument in rawinstruments if not instrument.startswith('drum') and not instrument.startswith('gui')]
+ instruments.sort()
+
+ for instrument in instruments:
+ image = Config.IMAGE_ROOT + instrument + '.png'
+ if not os.path.isfile(image):
+ image = Config.IMAGE_ROOT + 'generic.png'
+ self.instrumentBox.append_item(instrument, instrument, image)
+ self.instrumentBox.set_active(0)
+ self.instrumentBox.connect('changed', self.handleInstrumentChange)
self.volumeBox.pack_start(self.muteButton, padding = 5)
self.volumeBox.pack_start(self.volumeSlider, padding = 5)
+ self.volumeBox.pack_start(self.instrumentBox, padding = 5)
self.volumeBox.show_all()
self.set_content(self.volumeBox)
+ def handleInstrumentChange(self, widget):
+ instrument = widget.props.value
+ self.edit.playInstrumentNote(instrument)
+ self.edit.donePickInstrument(instrument)
+
diff --git a/TamTamEdit.activity/Edit/TuneInterface.py b/TamTamEdit.activity/Edit/TuneInterface.py
index d29597b..f8bc4e7 100644
--- a/TamTamEdit.activity/Edit/TuneInterface.py
+++ b/TamTamEdit.activity/Edit/TuneInterface.py
@@ -617,7 +617,8 @@ class TuneInterface( gtk.EventBox ):
self.dirtyRectToAdd.y = y
self.dirtyRectToAdd.width = width
self.dirtyRectToAdd.height = height
- self.drawingArea.window.invalidate_rect( self.dirtyRectToAdd, True )
+ if self.drawingArea.window:
+ self.drawingArea.window.invalidate_rect( self.dirtyRectToAdd, True )
self.drawingAreaDirty = True
def invalidate_thumbnail( self, id, x, y, width, height ):
diff --git a/TamTamEdit.activity/MANIFEST b/TamTamEdit.activity/MANIFEST
index 2d94334..af569b0 100644
--- a/TamTamEdit.activity/MANIFEST
+++ b/TamTamEdit.activity/MANIFEST
@@ -43,7 +43,6 @@ icons/volume2.svg
icons/volume3.svg
Edit/EditToolbars.py
Edit/HitInterface.py
-Edit/KeyboardInput.py
Edit/MainWindow.py
Edit/NoteInterface.py
Edit/Properties.py
diff --git a/TamTamEdit.activity/TamTamEdit.py b/TamTamEdit.activity/TamTamEdit.py
index 854ff16..9d9a029 100644
--- a/TamTamEdit.activity/TamTamEdit.py
+++ b/TamTamEdit.activity/TamTamEdit.py
@@ -27,15 +27,12 @@ class TamTamEdit(activity.Activity):
color = gtk.gdk.color_parse(Config.WS_BCK_COLOR)
self.modify_bg(gtk.STATE_NORMAL, color)
- self.set_title('TamTam Mini')
self.set_resizable(False)
self.trackpad = Trackpad( self )
self.preloadTimeout = None
- self.focusInHandler = self.connect('focus_in_event',self.onFocusIn)
- self.focusOutHandler = self.connect('focus_out_event',self.onFocusOut)
self.connect('notify::active', self.onActive)
self.connect('destroy', self.onDestroy)
@@ -80,20 +77,14 @@ class TamTamEdit(activity.Activity):
if Config.DEBUG > 4: print "TamTam::preload returned after", time.time() - t
return True
-
- def onFocusIn(self, event, data=None):
- if Config.DEBUG > 3: print 'DEBUG: TamTam::onFocusOut in TamTam.py'
- csnd = new_csound_client()
- csnd.connect(True)
- #csnd.load_instruments()
-
- def onFocusOut(self, event, data=None):
- if Config.DEBUG > 3: print 'DEBUG: TamTam::onFocusOut in TamTam.py'
- csnd = new_csound_client()
- csnd.connect(False)
def onActive(self, widget = None, event = None):
- pass
+ if widget.props.active == False:
+ csnd = new_csound_client()
+ csnd.connect(False)
+ else:
+ csnd = new_csound_client()
+ csnd.connect(True)
def onKeyPress(self, widget, event):
pass
@@ -105,7 +96,7 @@ class TamTamEdit(activity.Activity):
if Config.DEBUG: print 'DEBUG: TamTam::onDestroy()'
os.system('rm -f ' + Config.PREF_DIR + '/synthTemp*')
- self.mini.onDestroy()
+ self.edit.onDestroy()
csnd = new_csound_client()
csnd.connect(False)
@@ -136,8 +127,7 @@ class TamTamEdit(activity.Activity):
os.system('chmod 0777 ' + Config.SNDS_DIR + '/' + snd + ' &')
def read_file(self,file_path):
- self.metadata['tamtam_subactivity'] = 'mini'
-
+ self.edit.handleJournalLoad(file_path)
+
def write_file(self,file_path):
- f = open(file_path,'w')
- f.close()
+ self.edit.handleJournalSave(file_path)
diff --git a/TamTamJam.activity/Jam/Popup.py b/TamTamJam.activity/Jam/Popup.py
index 187e841..087be0b 100644
--- a/TamTamJam.activity/Jam/Popup.py
+++ b/TamTamJam.activity/Jam/Popup.py
@@ -71,9 +71,6 @@ class Popup( Palette ):
self._palette_popup_sid = None
def popup( self, immediate = False ):
- self.owner.activity.handler_block(self.owner.activity.focusOutHandler)
- self.owner.activity.handler_block(self.owner.activity.focusInHandler)
-
Palette.popup( self, immediate )
def popdown( self, immediate = False ):
@@ -81,9 +78,6 @@ class Popup( Palette ):
Palette.popdown( self, immediate )
- self.owner.activity.handler_unblock(self.owner.activity.focusOutHandler)
- self.owner.activity.handler_unblock(self.owner.activity.focusInHandler)
-
def updatePosition( self ):
self.props.invoker._cursor_x = -1
self.props.invoker._cursor_y = -1
diff --git a/TamTamJam.activity/MANIFEST b/TamTamJam.activity/MANIFEST
index 1b49d16..f476ea5 100644
--- a/TamTamJam.activity/MANIFEST
+++ b/TamTamJam.activity/MANIFEST
@@ -384,9 +384,16 @@ common/Resources/Images/winds.png
common/Resources/Images/windssel.png
common/Resources/Images/zap.png
common/Resources/Images/zapsel.png
-common/Resources/Loops/loop1.ttl
-common/Resources/Loops/loop2.ttl
-common/Resources/Loops/loop3.ttl
+common/Resources/Loops/apple.ttl
+common/Resources/Loops/apricot.ttl
+common/Resources/Loops/cherry.ttl
+common/Resources/Loops/coconut.ttl
+common/Resources/Loops/fig.ttl
+common/Resources/Loops/guava.ttl
+common/Resources/Loops/kumquat.ttl
+common/Resources/Loops/lime.ttl
+common/Resources/Loops/pear.ttl
+common/Resources/Loops/plum.ttl
common/Resources/Sounds/acguit
common/Resources/Sounds/alarm
common/Resources/Sounds/banjo
diff --git a/TamTamJam.activity/TamTamJam.py b/TamTamJam.activity/TamTamJam.py
index 1b08bbb..a979b0b 100644
--- a/TamTamJam.activity/TamTamJam.py
+++ b/TamTamJam.activity/TamTamJam.py
@@ -33,8 +33,6 @@ class TamTamJam(activity.Activity):
self.preloadTimeout = None
- self.focusInHandler = self.connect('focus_in_event',self.onFocusIn)
- self.focusOutHandler = self.connect('focus_out_event',self.onFocusOut)
self.connect('notify::active', self.onActive)
self.connect('destroy', self.onDestroy)
@@ -73,20 +71,14 @@ class TamTamJam(activity.Activity):
if Config.DEBUG > 4: print "TamTam::preload returned after", time.time() - t
return True
-
- def onFocusIn(self, event, data=None):
- if Config.DEBUG > 3: print 'DEBUG: TamTam::onFocusOut in TamTam.py'
- csnd = new_csound_client()
- csnd.connect(True)
- #csnd.load_instruments()
-
- def onFocusOut(self, event, data=None):
- if Config.DEBUG > 3: print 'DEBUG: TamTam::onFocusOut in TamTam.py'
- csnd = new_csound_client()
- csnd.connect(False)
def onActive(self, widget = None, event = None):
- pass
+ if widget.props.active == False:
+ csnd = new_csound_client()
+ csnd.connect(False)
+ else:
+ csnd = new_csound_client()
+ csnd.connect(True)
def onKeyPress(self, widget, event):
pass
diff --git a/TamTamMini.activity/TamTamMini.py b/TamTamMini.activity/TamTamMini.py
index edebf72..aa3393c 100644
--- a/TamTamMini.activity/TamTamMini.py
+++ b/TamTamMini.activity/TamTamMini.py
@@ -34,8 +34,6 @@ class TamTamMini(activity.Activity):
self.preloadTimeout = None
- self.focusInHandler = self.connect('focus_in_event',self.onFocusIn)
- self.focusOutHandler = self.connect('focus_out_event',self.onFocusOut)
self.connect('notify::active', self.onActive)
self.connect('destroy', self.onDestroy)
@@ -80,20 +78,14 @@ class TamTamMini(activity.Activity):
if Config.DEBUG > 4: print "TamTam::preload returned after", time.time() - t
return True
-
- def onFocusIn(self, event, data=None):
- if Config.DEBUG > 3: print 'DEBUG: TamTam::onFocusOut in TamTam.py'
- csnd = new_csound_client()
- csnd.connect(True)
- #csnd.load_instruments()
-
- def onFocusOut(self, event, data=None):
- if Config.DEBUG > 3: print 'DEBUG: TamTam::onFocusOut in TamTam.py'
- csnd = new_csound_client()
- csnd.connect(False)
def onActive(self, widget = None, event = None):
- pass
+ if widget.props.active == False:
+ csnd = new_csound_client()
+ csnd.connect(False)
+ else:
+ csnd = new_csound_client()
+ csnd.connect(True)
def onKeyPress(self, widget, event):
pass
diff --git a/TamTamSynthLab.activity/TamTamSynthLab.py b/TamTamSynthLab.activity/TamTamSynthLab.py
index 6a1d085..dd3b6d5 100644
--- a/TamTamSynthLab.activity/TamTamSynthLab.py
+++ b/TamTamSynthLab.activity/TamTamSynthLab.py
@@ -33,8 +33,6 @@ class TamTamSynthLab(activity.Activity):
self.preloadTimeout = None
- self.focusInHandler = self.connect('focus_in_event',self.onFocusIn)
- self.focusOutHandler = self.connect('focus_out_event',self.onFocusOut)
self.connect('notify::active', self.onActive)
self.connect('destroy', self.onDestroy)
@@ -76,20 +74,14 @@ class TamTamSynthLab(activity.Activity):
if Config.DEBUG > 4: print "TamTam::preload returned after", time.time() - t
return True
-
- def onFocusIn(self, event, data=None):
- if Config.DEBUG > 3: print 'DEBUG: TamTam::onFocusOut in TamTam.py'
- csnd = new_csound_client()
- csnd.connect(True)
- #csnd.load_instruments()
-
- def onFocusOut(self, event, data=None):
- if Config.DEBUG > 3: print 'DEBUG: TamTam::onFocusOut in TamTam.py'
- csnd = new_csound_client()
- csnd.connect(False)
def onActive(self, widget = None, event = None):
- pass
+ if widget.props.active == False:
+ csnd = new_csound_client()
+ csnd.connect(False)
+ else:
+ csnd = new_csound_client()
+ csnd.connect(True)
def onKeyPress(self, widget, event):
pass
diff --git a/common/Resources/Loops/apple.ttl b/common/Resources/Loops/apple.ttl
new file mode 100755
index 0000000..65ccac9
--- /dev/null
+++ b/common/Resources/Loops/apple.ttl
@@ -0,0 +1,20 @@
+page_add 16 4 0 [84, 77, 56, 128, 135]
+note_add 381 16 0 0 27 0.75 0.5 3 0 84 0.005 0.098 0.1 0 1000 0 edit
+note_add 352 16 0 3 30 0.724734883755 0.5 3 0 84 0.002 0.1 0.1 0 1000 0 edit
+note_add 353 16 0 6 35 0.727622531346 0.5 3 0 84 0.002 0.1 0.1 0 1000 0 edit
+note_add 354 16 0 9 33 0.692050895146 0.5 3 0 84 0.002 0.1 0.1 0 1000 0 edit
+note_add 382 16 0 12 27 0.75 0.5 3 0 84 0.005 0.098 0.1 0 1000 0 edit
+note_add 356 16 0 15 32 0.682376219419 0.5 3 0 84 0.002 0.1 0.1 0 1000 0 edit
+note_add 357 16 0 18 30 0.716935231019 0.5 3 0 84 0.002 0.1 0.1 0 1000 0 edit
+note_add 358 16 0 21 33 0.689479315257 0.5 3 0 84 0.002 0.1 0.1 0 1000 0 edit
+note_add 397 16 0 24 27 0.75 0.5 3 0 84 0.005 0.098 0.1 0 1000 0 edit
+note_add 360 16 0 27 30 0.660596101679 0.5 3 0 84 0.002 0.1 0.1 0 1000 0 edit
+note_add 361 16 0 30 33 0.660824038049 0.5 3 0 84 0.002 0.1 0.1 0 1000 0 edit
+note_add 362 16 0 33 35 0.710170295213 0.5 3 0 84 0.002 0.1 0.1 0 1000 0 edit
+note_add 398 16 0 36 27 0.75 0.5 3 0 84 0.005 0.098 0.1 0 1000 0 edit
+note_add 364 16 0 39 30 0.749427826153 0.5 3 0 84 0.002 0.1 0.1 0 1000 0 edit
+note_add 365 16 0 42 32 0.699757524777 0.5 3 0 84 0.002 0.1 0.1 0 1000 0 edit
+note_add 366 16 0 45 33 0.744983194925 0.5 3 0 84 0.002 0.1 0.1 0 1000 0 edit
+track_vol 50 50 50 50 50
+master_vol 50
+tempo 70
diff --git a/common/Resources/Loops/apricot.ttl b/common/Resources/Loops/apricot.ttl
new file mode 100755
index 0000000..8201205
--- /dev/null
+++ b/common/Resources/Loops/apricot.ttl
@@ -0,0 +1,20 @@
+page_add 22 4 0 [86, 12, 15, 69, 134]
+note_add 144 22 0 0 41 0.795098170116 0.5 1 0 86 0.002 0.1 0.1 0 1000 0 edit
+note_add 145 22 0 1 46 0.75 0.5 3 0 86 0.005 0.098 0.1 0 1000 0 edit
+note_add 146 22 0 4 41 0.75 0.5 1 0 86 0.005 0.098 0.1 0 1000 0 edit
+note_add 147 22 0 5 44 0.697954414187 0.5 3 0 86 0.002 0.1 0.1 0 1000 0 edit
+note_add 148 22 0 8 41 0.75 0.5 1 0 86 0.005 0.098 0.1 0 1000 0 edit
+note_add 149 22 0 9 46 0.75 0.5 3 0 86 0.005 0.098 0.1 0 1000 0 edit
+note_add 122 22 0 12 44 0.901099463411 0.5 6 0 86 0.002 0.1 0.1 0 1000 0 edit
+note_add 129 22 0 18 41 0.75 0.5 3 0 86 0.005 0.098 0.1 0 1000 0 edit
+note_add 132 22 0 21 39 0.75 0.5 2 0 86 0.005 0.098 0.1 0 1000 0 edit
+note_add 123 22 0 24 47 0.872773238104 0.5 1 0 86 0.002 0.1 0.1 0 1000 0 edit
+note_add 124 22 0 27 48 0.70474380564 0.5 1 0 86 0.002 0.1 0.1 0 1000 0 edit
+note_add 125 22 0 30 43 0.667829308401 0.5 3 0 86 0.002 0.1 0.1 0 1000 0 edit
+note_add 126 22 0 36 46 0.78747766666 0.5 3 0 86 0.002 0.1 0.1 0 1000 0 edit
+note_add 142 22 0 39 44 0.75 0.5 2 0 86 0.005 0.098 0.1 0 1000 0 edit
+note_add 130 22 0 42 41 0.75 0.5 3 0 86 0.005 0.098 0.1 0 1000 0 edit
+note_add 131 22 0 45 39 0.75 0.5 2 0 86 0.005 0.098 0.1 0 1000 0 edit
+track_vol 50 50 0.0 50 50
+master_vol 50
+tempo 63
diff --git a/common/Resources/Loops/cherry.ttl b/common/Resources/Loops/cherry.ttl
new file mode 100755
index 0000000..a186ec9
--- /dev/null
+++ b/common/Resources/Loops/cherry.ttl
@@ -0,0 +1,17 @@
+page_add 19 3 0 [89, 76, 15, 69, 136]
+note_add 1 19 0 0 48 0.961249234804 0.5 2 0 89 0.002 0.1 0.1 0 1000 0 edit
+note_add 2 19 0 3 40 0.736587760725 0.5 3 0 89 0.002 0.1 0.1 0 1000 0 edit
+note_add 3 19 0 6 43 0.728958597793 0.5 3 0 89 0.002 0.1 0.1 0 1000 0 edit
+note_add 4 19 0 12 46 0.746482182011 0.5 2 0 89 0.002 0.1 0.1 0 1000 0 edit
+note_add 5 19 0 15 40 0.65152420631 0.5 3 0 89 0.002 0.1 0.1 0 1000 0 edit
+note_add 6 19 0 18 43 0.712162760809 0.5 2 0 89 0.002 0.1 0.1 0 1000 0 edit
+note_add 51 19 0 21 46 0.75 0.5 2 0 89 0.005 0.098 0.1 0 1000 0 edit
+note_add 7 19 0 24 45 0.79718877653 0.5 2 0 89 0.002 0.1 0.1 0 1000 0 edit
+note_add 8 19 0 27 40 0.669739874117 0.5 3 0 89 0.002 0.1 0.1 0 1000 0 edit
+note_add 9 19 0 30 43 0.65667173599 0.5 2 0 89 0.002 0.1 0.1 0 1000 0 edit
+note_add 50 19 0 33 40 0.75 0.5 1 0 89 0.005 0.098 0.1 0 1000 0 edit
+note_add 53 19 0 34 43 0.75 0.5 1 0 89 0.005 0.098 0.1 0 1000 0 edit
+note_add 54 19 0 35 40 0.75 0.5 1 0 89 0.005 0.098 0.1 0 1000 0 edit
+track_vol 50 50 50 50 50
+master_vol 50
+tempo 63
diff --git a/common/Resources/Loops/coconut.ttl b/common/Resources/Loops/coconut.ttl
new file mode 100755
index 0000000..9c09d23
--- /dev/null
+++ b/common/Resources/Loops/coconut.ttl
@@ -0,0 +1,12 @@
+page_add 16 4 0 [84, 77, 56, 128, 135]
+note_add 17 16 0 0 27 1 0.5 12 0 84 0.005 0.098 0.1 0 1000 0 edit
+note_add 20 16 0 12 34 0.75 0.5 3 0 84 0.005 0.098 0.1 0 1000 0 edit
+note_add 21 16 0 18 27 0.75 0.5 12 0 84 0.005 0.098 0.1 0 1000 0 edit
+note_add 18 16 0 30 30 1 0.5 3 0 84 0.005 0.098 0.1 0 1000 0 edit
+note_add 22 16 0 33 32 0.75 0.5 3 0 84 0.005 0.098 0.1 0 1000 0 edit
+note_add 23 16 0 36 30 0.75 0.5 3 0 84 0.005 0.098 0.1 0 1000 0 edit
+note_add 24 16 0 39 27 0.75 0.5 2 0 84 0.005 0.098 0.1 0 1000 0 edit
+note_add 19 16 0 42 32 1 0.5 6 0 84 0.005 0.098 0.1 0 1000 0 edit
+track_vol 50 50 50 50 50
+master_vol 50
+tempo 70
diff --git a/common/Resources/Loops/fig.ttl b/common/Resources/Loops/fig.ttl
new file mode 100755
index 0000000..a19131a
--- /dev/null
+++ b/common/Resources/Loops/fig.ttl
@@ -0,0 +1,17 @@
+page_add 19 5 0 [12, 12, 15, 69, 134]
+note_add 60 19 0 0 32 0.692325136594 0.5 1 0 12 0.002 0.1 0.1 0 1000 0 edit
+note_add 61 19 0 3 32 0.692524176958 0.5 1 0 12 0.002 0.1 0.1 0 1000 0 edit
+note_add 62 19 0 6 32 0.680959679148 0.5 1 0 12 0.002 0.1 0.1 0 1000 0 edit
+note_add 63 19 0 9 32 0.805726627002 0.5 1 0 12 0.002 0.1 0.1 0 1000 0 edit
+note_add 64 19 0 15 30 0.69955254508 0.5 1 0 12 0.002 0.1 0.1 0 1000 0 edit
+note_add 65 19 0 20 32 0.854450674271 0.5 1 0 12 0.002 0.1 0.1 0 1000 0 edit
+note_add 99 19 0 24 35 0.75 0.5 5 0 12 0.005 0.098 0.1 0 1000 0 edit
+note_add 68 19 0 36 39 0.75 0.5 1 0 12 0.005 0.098 0.1 0 1000 0 edit
+note_add 69 19 0 39 35 0.75 0.5 1 0 12 0.005 0.098 0.1 0 1000 0 edit
+note_add 70 19 0 42 33 0.75 0.5 1 0 12 0.005 0.098 0.1 0 1000 0 edit
+note_add 71 19 0 45 32 0.75 0.5 1 0 12 0.005 0.098 0.1 0 1000 0 edit
+note_add 77 19 0 51 44 0.75 0.5 1 0 12 0.005 0.098 0.1 0 1000 0 edit
+note_add 72 19 0 57 44 0.75 0.5 1 0 12 0.005 0.098 0.1 0 1000 0 edit
+track_vol 50 50 0.0 50 50
+master_vol 50
+tempo 63
diff --git a/common/Resources/Loops/guava.ttl b/common/Resources/Loops/guava.ttl
new file mode 100755
index 0000000..0b8972f
--- /dev/null
+++ b/common/Resources/Loops/guava.ttl
@@ -0,0 +1,36 @@
+page_add 32 8 0 [85, 13, 14, 82, 137]
+note_add 901 32 0 0 45 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+note_add 902 32 0 3 47 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+note_add 903 32 0 6 48 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+note_add 904 32 0 9 43 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+note_add 905 32 0 12 47 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+note_add 906 32 0 15 40 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+note_add 907 32 0 18 47 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+note_add 908 32 0 21 48 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+note_add 909 32 0 24 39 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+note_add 910 32 0 27 47 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+note_add 911 32 0 30 48 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+note_add 912 32 0 33 40 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+note_add 913 32 0 36 47 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+note_add 914 32 0 39 42 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+note_add 915 32 0 42 47 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+note_add 916 32 0 45 48 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+note_add 949 32 0 48 43 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+note_add 950 32 0 51 47 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+note_add 951 32 0 54 48 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+note_add 952 32 0 57 45 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+note_add 953 32 0 60 47 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+note_add 954 32 0 63 46 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+note_add 955 32 0 66 47 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+note_add 956 32 0 69 48 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+note_add 957 32 0 72 47 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+note_add 958 32 0 75 47 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+note_add 959 32 0 78 48 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+note_add 960 32 0 81 47 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+note_add 961 32 0 84 47 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+note_add 962 32 0 87 47 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+note_add 963 32 0 90 47 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+note_add 964 32 0 93 48 1 0.5 1 0 85 0.005 0.098 0.1 0 1000 0 edit
+track_vol 53.0 61.0 59.0 47.0 50
+master_vol 50
+tempo 67
diff --git a/common/Resources/Loops/kumquat.ttl b/common/Resources/Loops/kumquat.ttl
new file mode 100755
index 0000000..488b1b9
--- /dev/null
+++ b/common/Resources/Loops/kumquat.ttl
@@ -0,0 +1,16 @@
+page_add 32 8 0 [28, 13, 14, 82, 137]
+note_add 369 32 0 0 42 0.75 0.5 6 0 28 0.005 0.098 0.1 0 1000 0 edit
+note_add 370 32 0 6 46 0.75 0.5 6 0 28 0.005 0.098 0.1 0 1000 0 edit
+note_add 371 32 0 12 39 0.75 0.5 12 0 28 0.005 0.098 0.1 0 1000 0 edit
+note_add 372 32 0 24 41 0.75 0.5 6 0 28 0.005 0.098 0.1 0 1000 0 edit
+note_add 373 32 0 30 42 0.75 0.5 6 0 28 0.005 0.098 0.1 0 1000 0 edit
+note_add 368 32 0 36 45 0.75 0.5 12 0 28 0.005 0.098 0.1 0 1000 0 edit
+note_add 374 32 0 48 38 0.75 0.5 6 0 28 0.005 0.098 0.1 0 1000 0 edit
+note_add 375 32 0 54 41 0.75 0.5 6 0 28 0.005 0.098 0.1 0 1000 0 edit
+note_add 376 32 0 60 44 0.75 0.5 12 0 28 0.005 0.098 0.1 0 1000 0 edit
+note_add 377 32 0 72 41 0.75 0.5 6 0 28 0.005 0.098 0.1 0 1000 0 edit
+note_add 378 32 0 78 38 0.75 0.5 6 0 28 0.005 0.098 0.1 0 1000 0 edit
+note_add 379 32 0 84 39 0.75 0.5 12 0 28 0.005 0.098 0.1 0 1000 0 edit
+track_vol 53.0 61.0 59.0 47.0 50
+master_vol 50
+tempo 67
diff --git a/common/Resources/Loops/lime.ttl b/common/Resources/Loops/lime.ttl
new file mode 100755
index 0000000..2bf14ca
--- /dev/null
+++ b/common/Resources/Loops/lime.ttl
@@ -0,0 +1,26 @@
+page_add 32 8 0 [130, 13, 14, 82, 137]
+note_add 134 32 0 0 31 0.860057705168 0.5 3 0 130 0.002 0.1 0.1 0 1000 0 edit
+note_add 135 32 0 3 33 0.733191046795 0.5 3 0 130 0.002 0.1 0.1 0 1000 0 edit
+note_add 155 32 0 6 38 0.75 0.5 6 0 130 0.005 0.098 0.1 0 1000 0 edit
+note_add 137 32 0 12 33 0.831666976577 0.5 3 0 130 0.002 0.1 0.1 0 1000 0 edit
+note_add 138 32 0 15 38 0.686755707619 0.5 3 0 130 0.002 0.1 0.1 0 1000 0 edit
+note_add 139 32 0 18 40 0.704748581497 0.5 6 0 130 0.002 0.1 0.1 0 1000 0 edit
+note_add 132 32 0 24 33 0.831666976577 0.5 3 0 130 0.002 0.1 0.1 0 1000 0 edit
+note_add 131 32 0 27 38 0.686755707619 0.5 3 0 130 0.002 0.1 0.1 0 1000 0 edit
+note_add 133 32 0 30 41 0.704748581497 0.5 6 0 130 0.002 0.1 0.1 0 1000 0 edit
+note_add 156 32 0 36 33 0.831666976577 0.5 3 0 130 0.002 0.1 0.1 0 1000 0 edit
+note_add 141 32 0 39 41 0.686755707619 0.5 3 0 130 0.002 0.1 0.1 0 1000 0 edit
+note_add 142 32 0 42 45 0.704748581497 0.5 6 0 130 0.002 0.1 0.1 0 1000 0 edit
+note_add 146 32 0 48 31 0.860057705168 0.5 3 0 130 0.002 0.1 0.1 0 1000 0 edit
+note_add 147 32 0 51 33 0.733191046795 0.5 3 0 130 0.002 0.1 0.1 0 1000 0 edit
+note_add 149 32 0 60 33 0.831666976577 0.5 3 0 130 0.002 0.1 0.1 0 1000 0 edit
+note_add 150 32 0 63 36 0.686755707619 0.5 3 0 130 0.002 0.1 0.1 0 1000 0 edit
+note_add 151 32 0 66 41 0.704748581497 0.5 6 0 130 0.002 0.1 0.1 0 1000 0 edit
+note_add 152 32 0 72 33 0.831666976577 0.5 3 0 130 0.002 0.1 0.1 0 1000 0 edit
+note_add 153 32 0 75 38 0.686755707619 0.5 3 0 130 0.002 0.1 0.1 0 1000 0 edit
+note_add 154 32 0 78 40 0.704748581497 0.5 6 0 130 0.002 0.1 0.1 0 1000 0 edit
+note_add 143 32 0 84 33 0.831666976577 0.5 3 0 130 0.002 0.1 0.1 0 1000 0 edit
+note_add 144 32 0 87 38 0.686755707619 0.5 3 0 130 0.002 0.1 0.1 0 1000 0 edit
+track_vol 50 50 50 50 50
+master_vol 50
+tempo 67
diff --git a/common/Resources/Loops/loop1.ttl b/common/Resources/Loops/loop1.ttl
deleted file mode 100644
index 97bb9a6..0000000
--- a/common/Resources/Loops/loop1.ttl
+++ /dev/null
@@ -1,5 +0,0 @@
-page_add 2 7 0 [88, 77, 67, 85, 137]
-note_add 92 2 0 0 29 0.75 0.5 24 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 93 2 0 24 44 0.75 0.5 7 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 94 2 0 36 44 0.75 0.5 6 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 95 2 0 48 32 0.75 0.5 24 0 88 0.005 0.098 0.1 0 1000 0 edit
diff --git a/common/Resources/Loops/loop2.ttl b/common/Resources/Loops/loop2.ttl
deleted file mode 100644
index 2e5e7ea..0000000
--- a/common/Resources/Loops/loop2.ttl
+++ /dev/null
@@ -1,44 +0,0 @@
-page_add 16 5 0 [88, 76, 56, 82, 135]
-note_add 73 16 0 0 48 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 74 16 0 12 24 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 75 16 0 1 48 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 76 16 0 2 48 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 77 16 0 3 48 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 78 16 0 4 48 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 79 16 0 13 24 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 80 16 0 14 24 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 81 16 0 15 24 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 82 16 0 16 24 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 83 16 0 24 48 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 84 16 0 25 48 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 85 16 0 26 48 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 86 16 0 27 48 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 87 16 0 36 24 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 88 16 0 37 24 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 89 16 0 38 24 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 90 16 0 39 24 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 91 16 0 55 35 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 92 16 0 56 36 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 93 16 0 57 34 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 94 16 0 58 36 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 95 16 0 59 34 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 96 16 0 43 35 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 97 16 0 44 36 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 98 16 0 45 34 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 99 16 0 46 36 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 100 16 0 47 34 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 101 16 0 31 35 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 102 16 0 32 36 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 103 16 0 33 34 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 104 16 0 34 36 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 105 16 0 35 34 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 106 16 0 19 35 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 107 16 0 20 36 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 108 16 0 21 34 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 109 16 0 22 36 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 110 16 0 23 34 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 111 16 0 7 35 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 112 16 0 8 36 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 113 16 0 9 34 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 114 16 0 10 36 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 115 16 0 11 34 0.75 0.5 1 0 88 0.005 0.098 0.1 0 1000 0 edit
diff --git a/common/Resources/Loops/loop3.ttl b/common/Resources/Loops/loop3.ttl
deleted file mode 100644
index 4b6bdd6..0000000
--- a/common/Resources/Loops/loop3.ttl
+++ /dev/null
@@ -1,9 +0,0 @@
-page_add 16 2 0 [88, 76, 56, 82, 135]
-note_add 116 16 0 0 45 0.75 0.5 3 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 117 16 0 3 45 0.75 0.5 3 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 118 16 0 6 45 0.75 0.5 3 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 119 16 0 9 41 0.75 0.5 3 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 120 16 0 12 24 0.75 0.5 3 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 121 16 0 15 24 0.75 0.5 3 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 122 16 0 18 38 0.75 0.5 3 0 88 0.005 0.098 0.1 0 1000 0 edit
-note_add 123 16 0 21 45 0.75 0.5 3 0 88 0.005 0.098 0.1 0 1000 0 edit
diff --git a/common/Resources/Loops/pear.ttl b/common/Resources/Loops/pear.ttl
new file mode 100755
index 0000000..ce3e61b
--- /dev/null
+++ b/common/Resources/Loops/pear.ttl
@@ -0,0 +1,29 @@
+page_add 16 8 0 [84, 77, 56, 128, 135]
+note_add 25 16 0 0 26 0.68133015131 0.5 1 0 84 0.002 0.1 0.1 0 1000 0 edit
+note_add 26 16 0 3 27 0.69403360515 0.5 1 0 84 0.002 0.1 0.1 0 1000 0 edit
+note_add 27 16 0 9 36 0.810733628261 0.5 1 0 84 0.002 0.1 0.1 0 1000 0 edit
+note_add 28 16 0 12 31 0.737149102372 0.5 1 0 84 0.002 0.1 0.1 0 1000 0 edit
+note_add 30 16 0 18 26 0.686536409629 0.5 1 0 84 0.002 0.1 0.1 0 1000 0 edit
+note_add 31 16 0 21 27 0.847254647536 0.5 1 0 84 0.002 0.1 0.1 0 1000 0 edit
+note_add 32 16 0 24 32 0.72836871545 0.5 1 0 84 0.002 0.1 0.1 0 1000 0 edit
+note_add 33 16 0 30 31 0.655803277027 0.5 1 0 84 0.002 0.1 0.1 0 1000 0 edit
+note_add 34 16 0 36 26 0.74495754243 0.5 1 0 84 0.002 0.1 0.1 0 1000 0 edit
+note_add 35 16 0 39 27 0.740636325773 0.5 1 0 84 0.002 0.1 0.1 0 1000 0 edit
+note_add 36 16 0 45 36 0.878617281029 0.5 1 0 84 0.002 0.1 0.1 0 1000 0 edit
+note_add 152 16 0 48 31 0.75 0.5 1 0 84 0.005 0.098 0.1 0 1000 0 edit
+note_add 38 16 0 54 26 0.650253656912 0.5 1 0 84 0.002 0.1 0.1 0 1000 0 edit
+note_add 39 16 0 57 27 0.854625846456 0.5 1 0 84 0.002 0.1 0.1 0 1000 0 edit
+note_add 40 16 0 60 32 0.702079209887 0.5 1 0 84 0.002 0.1 0.1 0 1000 0 edit
+note_add 41 16 0 63 36 0.681239631025 0.5 1 0 84 0.002 0.1 0.1 0 1000 0 edit
+note_add 159 16 0 69 35 0.75 0.5 1 0 84 0.005 0.098 0.1 0 1000 0 edit
+note_add 160 16 0 72 32 0.75 0.5 1 0 84 0.005 0.098 0.1 0 1000 0 edit
+note_add 161 16 0 75 31 0.75 0.5 1 0 84 0.005 0.098 0.1 0 1000 0 edit
+note_add 170 16 0 80 32 0.75 0.5 1 0 84 0.005 0.098 0.1 0 1000 0 edit
+note_add 165 16 0 81 34 0.75 0.5 1 0 84 0.005 0.098 0.1 0 1000 0 edit
+note_add 166 16 0 84 32 0.75 0.5 1 0 84 0.005 0.098 0.1 0 1000 0 edit
+note_add 167 16 0 87 31 0.75 0.5 1 0 84 0.005 0.098 0.1 0 1000 0 edit
+note_add 168 16 0 90 38 0.75 0.5 1 0 84 0.005 0.098 0.1 0 1000 0 edit
+note_add 169 16 0 93 38 0.75 0.5 1 0 84 0.005 0.098 0.1 0 1000 0 edit
+track_vol 50 50 50 50 50
+master_vol 50
+tempo 70
diff --git a/common/Resources/Loops/plum.ttl b/common/Resources/Loops/plum.ttl
new file mode 100755
index 0000000..df6f9f5
--- /dev/null
+++ b/common/Resources/Loops/plum.ttl
@@ -0,0 +1,14 @@
+page_add 19 4 0 [12, 12, 15, 69, 134]
+note_add 313 19 0 0 34 0.75 0.5 2 0 12 0.005 0.098 0.1 0 1000 0 edit
+note_add 243 19 0 4 39 0.70038166369 0.5 2 0 12 0.002 0.1 0.1 0 1000 0 edit
+note_add 244 19 0 8 34 0.675659026554 0.5 2 0 12 0.002 0.1 0.1 0 1000 0 edit
+note_add 245 19 0 12 33 0.701284482144 0.5 6 0 12 0.002 0.1 0.1 0 1000 0 edit
+note_add 246 19 0 21 36 0.709139804579 0.5 2 0 12 0.002 0.1 0.1 0 1000 0 edit
+note_add 247 19 0 25 33 0.718231225374 0.5 5 0 12 0.002 0.1 0.1 0 1000 0 edit
+note_add 248 19 0 30 36 0.731056837143 0.5 2 0 12 0.002 0.1 0.1 0 1000 0 edit
+note_add 249 19 0 36 36 0.688546601189 0.5 2 0 12 0.002 0.1 0.1 0 1000 0 edit
+note_add 250 19 0 39 38 0.738460747412 0.5 2 0 12 0.002 0.1 0.1 0 1000 0 edit
+note_add 314 19 0 41 36 0.75 0.5 2 0 12 0.005 0.098 0.1 0 1000 0 edit
+track_vol 50 50 0.0 50 50
+master_vol 50
+tempo 63