Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWalter Bender <walter@walter-laptop.(none)>2009-11-05 22:27:18 (GMT)
committer Walter Bender <walter@walter-laptop.(none)>2009-11-05 22:27:18 (GMT)
commit33734906724a0f9bf8c61b4e602a4cacc66951bb (patch)
tree2a0e9f2f55d983e8bb56285e3995158f71608c93
new project
-rw-r--r--COPYING20
-rw-r--r--ErikosActivity.py149
-rw-r--r--MANIFEST27
-rw-r--r--NEWS4
-rw-r--r--Sounds/acguitbin0 -> 32360 bytes
-rw-r--r--Sounds/alarmbin0 -> 71140 bytes
-rw-r--r--Sounds/armbonebin0 -> 5154 bytes
-rw-r--r--Sounds/babylaughbin0 -> 55724 bytes
-rw-r--r--Sounds/babyuhohbin0 -> 37630 bytes
-rw-r--r--Sounds/banjobin0 -> 69260 bytes
-rw-r--r--Sounds/bassebin0 -> 32516 bytes
-rw-r--r--Sounds/basse2bin0 -> 11206 bytes
-rw-r--r--Sounds/birdbin0 -> 32804 bytes
-rw-r--r--Sounds/bottlebin0 -> 19206 bytes
-rw-r--r--Sounds/bubblesbin0 -> 40364 bytes
-rw-r--r--Sounds/bykebin0 -> 32726 bytes
-rw-r--r--Sounds/camerabin0 -> 22564 bytes
-rw-r--r--Sounds/carbin0 -> 63940 bytes
-rw-r--r--Sounds/carhornbin0 -> 79844 bytes
-rw-r--r--Sounds/catbin0 -> 18160 bytes
-rw-r--r--Sounds/cellobin0 -> 152352 bytes
-rw-r--r--Sounds/chikenbin0 -> 31554 bytes
-rw-r--r--Sounds/chimesbin0 -> 218924 bytes
-rw-r--r--Sounds/clangbin0 -> 41150 bytes
-rw-r--r--Sounds/clang2bin0 -> 46210 bytes
-rw-r--r--Sounds/clarinettebin0 -> 105078 bytes
-rw-r--r--Sounds/clavinetbin0 -> 33428 bytes
-rw-r--r--Sounds/clingbin0 -> 31758 bytes
-rw-r--r--Sounds/cowbin0 -> 52060 bytes
-rw-r--r--Sounds/crashbin0 -> 20352 bytes
-rw-r--r--Sounds/cricketbin0 -> 5304 bytes
-rw-r--r--Sounds/diceinstbin0 -> 12658 bytes
-rw-r--r--Sounds/didjeridubin0 -> 60788 bytes
-rw-r--r--Sounds/dogbin0 -> 22332 bytes
-rw-r--r--Sounds/doorbin0 -> 33640 bytes
-rw-r--r--Sounds/drum1chinebin0 -> 20480 bytes
-rw-r--r--Sounds/drum1crashbin0 -> 64044 bytes
-rw-r--r--Sounds/drum1floortombin0 -> 38498 bytes
-rw-r--r--Sounds/drum1hardridebin0 -> 80044 bytes
-rw-r--r--Sounds/drum1hatpedalbin0 -> 23022 bytes
-rw-r--r--Sounds/drum1hatshoulderbin0 -> 28508 bytes
-rw-r--r--Sounds/drum1kickbin0 -> 32044 bytes
-rw-r--r--Sounds/drum1kitbin0 -> 32044 bytes
-rw-r--r--Sounds/drum1ridebellbin0 -> 80044 bytes
-rw-r--r--Sounds/drum1snarebin0 -> 32044 bytes
-rw-r--r--Sounds/drum1snaresidestickbin0 -> 5726 bytes
-rw-r--r--Sounds/drum1splashbin0 -> 48044 bytes
-rw-r--r--Sounds/drum1tombin0 -> 37152 bytes
-rw-r--r--Sounds/drum2darbukadoombin0 -> 38652 bytes
-rw-r--r--Sounds/drum2darbukafingerbin0 -> 22470 bytes
-rw-r--r--Sounds/drum2darbukapiedbin0 -> 32106 bytes
-rw-r--r--Sounds/drum2darbukapiedsoftbin0 -> 24454 bytes
-rw-r--r--Sounds/drum2darbukarollbin0 -> 27176 bytes
-rw-r--r--Sounds/drum2darbukaslapbin0 -> 25672 bytes
-rw-r--r--Sounds/drum2darbukatakbin0 -> 12882 bytes
-rw-r--r--Sounds/drum2hatflangerbin0 -> 64246 bytes
-rw-r--r--Sounds/drum2hatpiedbin0 -> 14638 bytes
-rw-r--r--Sounds/drum2hatpied2bin0 -> 14460 bytes
-rw-r--r--Sounds/drum2kitbin0 -> 38652 bytes
-rw-r--r--Sounds/drum2tambourinepiedbin0 -> 33262 bytes
-rw-r--r--Sounds/drum2tambourinepiedsoftbin0 -> 19470 bytes
-rw-r--r--Sounds/drum3cowbellbin0 -> 15950 bytes
-rw-r--r--Sounds/drum3cowbelltipbin0 -> 12872 bytes
-rw-r--r--Sounds/drum3cupbin0 -> 15926 bytes
-rw-r--r--Sounds/drum3djembelowbin0 -> 32080 bytes
-rw-r--r--Sounds/drum3djembemidbin0 -> 15050 bytes
-rw-r--r--Sounds/drum3djembesidestickbin0 -> 13602 bytes
-rw-r--r--Sounds/drum3djembeslapbin0 -> 24090 bytes
-rw-r--r--Sounds/drum3djembestickmidbin0 -> 25722 bytes
-rw-r--r--Sounds/drum3kitbin0 -> 13602 bytes
-rw-r--r--Sounds/drum3metalstandbin0 -> 16108 bytes
-rw-r--r--Sounds/drum3pedalpercbin0 -> 16160 bytes
-rw-r--r--Sounds/drum3rainstickbin0 -> 56454 bytes
-rw-r--r--Sounds/drum3tambourinehighbin0 -> 15996 bytes
-rw-r--r--Sounds/drum3tambourinelowbin0 -> 15506 bytes
-rw-r--r--Sounds/drum4afrofeetbin0 -> 23774 bytes
-rw-r--r--Sounds/drum4fingersnbin0 -> 33644 bytes
-rw-r--r--Sounds/drum4kitbin0 -> 20920 bytes
-rw-r--r--Sounds/drum4mutecuicbin0 -> 12738 bytes
-rw-r--r--Sounds/drum4stompbassbin0 -> 22026 bytes
-rw-r--r--Sounds/drum4tambouribin0 -> 21382 bytes
-rw-r--r--Sounds/drum4tr707clapbin0 -> 11456 bytes
-rw-r--r--Sounds/drum4tr707openbin0 -> 29702 bytes
-rw-r--r--Sounds/drum4tr808closedbin0 -> 7530 bytes
-rw-r--r--Sounds/drum4tr808snbin0 -> 17474 bytes
-rw-r--r--Sounds/drum4tr909bassbin0 -> 61846 bytes
-rw-r--r--Sounds/drum4tr909kickbin0 -> 27516 bytes
-rw-r--r--Sounds/drum4tr909snbin0 -> 20920 bytes
-rw-r--r--Sounds/drum5agogoaigubin0 -> 22366 bytes
-rw-r--r--Sounds/drum5agogogravebin0 -> 19796 bytes
-rw-r--r--Sounds/drum5bongoaiguouvertbin0 -> 11418 bytes
-rw-r--r--Sounds/drum5bongograveouvertbin0 -> 14442 bytes
-rw-r--r--Sounds/drum5congaaiguouvertbin0 -> 16146 bytes
-rw-r--r--Sounds/drum5congagravefermebin0 -> 9674 bytes
-rw-r--r--Sounds/drum5congagraveouvertbin0 -> 14490 bytes
-rw-r--r--Sounds/drum5guiroretourbin0 -> 14462 bytes
-rw-r--r--Sounds/drum5kitbin0 -> 11418 bytes
-rw-r--r--Sounds/drum5quicaaigubin0 -> 10410 bytes
-rw-r--r--Sounds/drum5quicamediumbin0 -> 11398 bytes
-rw-r--r--Sounds/drum5timablesaiguslapbin0 -> 33698 bytes
-rw-r--r--Sounds/drum5timablesslapbin0 -> 37170 bytes
-rw-r--r--Sounds/drum5vibraslapbin0 -> 52238 bytes
-rw-r--r--Sounds/drum6kitbin0 -> 21504 bytes
-rw-r--r--Sounds/drum6kit.origbin0 -> 172794 bytes
-rw-r--r--Sounds/drum6madal00bin0 -> 14382 bytes
-rw-r--r--Sounds/drum6madal01bin0 -> 11532 bytes
-rw-r--r--Sounds/drum6madal02bin0 -> 10530 bytes
-rw-r--r--Sounds/drum6madal03bin0 -> 8982 bytes
-rw-r--r--Sounds/drum6madal04bin0 -> 11852 bytes
-rw-r--r--Sounds/drum6madal05bin0 -> 21504 bytes
-rw-r--r--Sounds/drum6madal06bin0 -> 16148 bytes
-rw-r--r--Sounds/drum6madal07bin0 -> 16090 bytes
-rw-r--r--Sounds/drum6madal08bin0 -> 11878 bytes
-rw-r--r--Sounds/drum6madal09bin0 -> 21474 bytes
-rw-r--r--Sounds/drum6madal10bin0 -> 11352 bytes
-rw-r--r--Sounds/drum6madal11bin0 -> 15914 bytes
-rw-r--r--Sounds/drum6madal12bin0 -> 32700 bytes
-rw-r--r--Sounds/duckbin0 -> 12942 bytes
-rw-r--r--Sounds/duck2bin0 -> 7840 bytes
-rw-r--r--Sounds/fingercymbalsbin0 -> 68426 bytes
-rw-r--r--Sounds/flugelbin0 -> 118102 bytes
-rw-r--r--Sounds/flutebin0 -> 26902 bytes
-rw-r--r--Sounds/foghornbin0 -> 139456 bytes
-rw-r--r--Sounds/frogsbin0 -> 161400 bytes
-rw-r--r--Sounds/gambin0 -> 31848 bytes
-rw-r--r--Sounds/guidice1bin0 -> 10610 bytes
-rw-r--r--Sounds/guidice10bin0 -> 12298 bytes
-rw-r--r--Sounds/guidice2bin0 -> 16130 bytes
-rw-r--r--Sounds/guidice3bin0 -> 14980 bytes
-rw-r--r--Sounds/guidice4bin0 -> 14128 bytes
-rw-r--r--Sounds/guidice5bin0 -> 9760 bytes
-rw-r--r--Sounds/guidice6bin0 -> 12658 bytes
-rw-r--r--Sounds/guidice7bin0 -> 11148 bytes
-rw-r--r--Sounds/guidice8bin0 -> 11720 bytes
-rw-r--r--Sounds/guidice9bin0 -> 12376 bytes
-rw-r--r--Sounds/guitbin0 -> 32432 bytes
-rw-r--r--Sounds/guit2bin0 -> 82082 bytes
-rw-r--r--Sounds/guitmutebin0 -> 15700 bytes
-rw-r--r--Sounds/guitshortbin0 -> 8666 bytes
-rw-r--r--Sounds/harmonicabin0 -> 10396 bytes
-rw-r--r--Sounds/harmoniumbin0 -> 34576 bytes
-rw-r--r--Sounds/harpsichordbin0 -> 49924 bytes
-rw-r--r--Sounds/heybin0 -> 14508 bytes
-rw-r--r--Sounds/horsebin0 -> 36966 bytes
-rw-r--r--Sounds/kalimbabin0 -> 14496 bytes
-rw-r--r--Sounds/kotobin0 -> 29288 bytes
-rw-r--r--Sounds/laughbin0 -> 18112 bytes
-rw-r--r--Sounds/mandobin0 -> 68326 bytes
-rw-r--r--Sounds/marimbabin0 -> 15850 bytes
-rw-r--r--Sounds/mic1bin0 -> 44 bytes
-rw-r--r--Sounds/mic2bin0 -> 44 bytes
-rw-r--r--Sounds/mic3bin0 -> 44 bytes
-rw-r--r--Sounds/mic4bin0 -> 44 bytes
-rw-r--r--Sounds/ocarinabin0 -> 8610 bytes
-rw-r--r--Sounds/ounkbin0 -> 15232 bytes
-rw-r--r--Sounds/owbin0 -> 20300 bytes
-rw-r--r--Sounds/pianobin0 -> 96828 bytes
-rw-r--r--Sounds/planebin0 -> 69662 bytes
-rw-r--r--Sounds/rhodesbin0 -> 30080 bytes
-rw-r--r--Sounds/sarangibin0 -> 49132 bytes
-rw-r--r--Sounds/sarangi.origbin0 -> 164992 bytes
-rw-r--r--Sounds/saxobin0 -> 29702 bytes
-rw-r--r--Sounds/saxsopranobin0 -> 74918 bytes
-rw-r--r--Sounds/sheepbin0 -> 39768 bytes
-rw-r--r--Sounds/shenaibin0 -> 14716 bytes
-rw-r--r--Sounds/sitarbin0 -> 66104 bytes
-rw-r--r--Sounds/slapbin0 -> 17534 bytes
-rw-r--r--Sounds/templebellbin0 -> 23804 bytes
-rw-r--r--Sounds/templebell.origbin0 -> 86973 bytes
-rw-r--r--Sounds/trianglebin0 -> 127866 bytes
-rw-r--r--Sounds/trumpetbin0 -> 72956 bytes
-rw-r--r--Sounds/tubabin0 -> 25876 bytes
-rw-r--r--Sounds/ukulelebin0 -> 60594 bytes
-rw-r--r--Sounds/violinbin0 -> 21884 bytes
-rw-r--r--Sounds/voixbin0 -> 39052 bytes
-rw-r--r--Sounds/waterbin0 -> 19512 bytes
-rw-r--r--Sounds/zapbin0 -> 24218 bytes
-rw-r--r--activity/activity-erikos.svg43
-rw-r--r--activity/activity.info8
-rw-r--r--constants.py23
-rw-r--r--images/Aoff.svg20
-rw-r--r--images/Aon.svg20
-rw-r--r--images/Boff.svg20
-rw-r--r--images/Bon.svg20
-rw-r--r--images/Coff.svg20
-rw-r--r--images/Con.svg20
-rw-r--r--images/Doff.svg20
-rw-r--r--images/Don.svg20
-rwxr-xr-xsetup.py5
-rwxr-xr-xsound.py268
-rw-r--r--sprite_factory.py51
-rw-r--r--sprites.py153
-rw-r--r--window.py223
193 files changed, 1134 insertions, 0 deletions
diff --git a/COPYING b/COPYING
new file mode 100644
index 0000000..a817f22
--- /dev/null
+++ b/COPYING
@@ -0,0 +1,20 @@
+Copyright (c) 2007-9, Playful Invention Company, Sugar Labs
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
+
diff --git a/ErikosActivity.py b/ErikosActivity.py
new file mode 100644
index 0000000..213cccb
--- /dev/null
+++ b/ErikosActivity.py
@@ -0,0 +1,149 @@
+# -*- coding: utf-8 -*-
+#Copyright (c) 2009, Walter Bender
+
+#Permission is hereby granted, free of charge, to any person obtaining a copy
+#of this software and associated documentation files (the "Software"), to deal
+#in the Software without restriction, including without limitation the rights
+#to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+#copies of the Software, and to permit persons to whom the Software is
+#furnished to do so, subject to the following conditions:
+
+#The above copyright notice and this permission notice shall be included in
+#all copies or substantial portions of the Software.
+
+#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+#AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+#LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+#OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+#THE SOFTWARE.
+
+import pygtk
+pygtk.require('2.0')
+import gtk
+import gobject
+
+import sugar
+from sugar.activity import activity
+try: # 0.86+ toolbar widgets
+ from sugar.bundle.activitybundle import ActivityBundle
+ from sugar.activity.widgets import ActivityToolbarButton
+ from sugar.activity.widgets import StopButton
+ from sugar.graphics.toolbarbox import ToolbarBox
+ from sugar.graphics.toolbarbox import ToolbarButton
+except ImportError:
+ pass
+from sugar.graphics.toolbutton import ToolButton
+from sugar.graphics.menuitem import MenuItem
+from sugar.graphics.icon import Icon
+from sugar.datastore import datastore
+
+from gettext import gettext as _
+import locale
+import os.path
+
+import logging
+_logger = logging.getLogger("erikos-activity")
+
+from sprites import *
+import window
+
+#
+# Sugar activity
+#
+class ErikosActivity(activity.Activity):
+
+ def __init__(self, handle):
+ super(ErikosActivity,self).__init__(handle)
+
+ try:
+ # Use 0.86 toolbar design
+ toolbar_box = ToolbarBox()
+
+ # Buttons added to the Activity toolbar
+ activity_button = ActivityToolbarButton(self)
+ toolbar_box.toolbar.insert(activity_button, 0)
+ activity_button.show()
+
+ # Play Button
+ self.play = ToolButton( "media-playback-start" )
+ self.play.set_tooltip(_('Play'))
+ self.play.props.sensitive = True
+ self.play.connect('clicked', self._play_cb)
+ toolbar_box.toolbar.insert(self.play, -1)
+ self.play.show()
+
+ separator = gtk.SeparatorToolItem()
+ separator.props.draw = False
+ separator.set_expand(True)
+ separator.show()
+ toolbar_box.toolbar.insert(separator, -1)
+
+ # The ever-present Stop Button
+ stop_button = StopButton(self)
+ stop_button.props.accelerator = '<Ctrl>Q'
+ toolbar_box.toolbar.insert(stop_button, -1)
+ stop_button.show()
+
+ self.set_toolbar_box(toolbar_box)
+ toolbar_box.show()
+
+ except NameError:
+ # Use pre-0.86 toolbar design
+ self.toolbox = activity.ActivityToolbox(self)
+ self.set_toolbox(self.toolbox)
+
+ self.projectToolbar = ProjectToolbar(self)
+ self.toolbox.add_toolbar( _('Project'), self.projectToolbar )
+
+ self.toolbox.show()
+
+ # Create a canvas
+ canvas = gtk.DrawingArea()
+ canvas.set_size_request(gtk.gdk.screen_width(), \
+ gtk.gdk.screen_height())
+ self.set_canvas(canvas)
+ canvas.show()
+ self.show_all()
+
+ # Initialize the canvas
+ self.tw = window.new_window(canvas, \
+ os.path.join(activity.get_bundle_path(), \
+ 'images/'), \
+ self)
+
+ # Read the level from the Journal
+ try:
+ tw,level = int(self.metadata['level'])
+ except:
+ pass
+
+ def _play_cb(self, button):
+ window._play_the_game(self.tw)
+ return True
+
+ """
+ Write the slider positions to the Journal
+ """
+ def write_file(self, file_path):
+ _logger.debug("Write level: " + str(self.tw.level))
+ self.metadata['level'] = self.tw.level
+
+#
+# Project toolbar for pre-0.86 toolbars
+#
+class ProjectToolbar(gtk.Toolbar):
+
+ def __init__(self, pc):
+ gtk.Toolbar.__init__(self)
+ self.activity = pc
+
+ # Play button
+ self.activity.play = ToolButton( "media-playback-start" )
+ self.activity.play.set_tooltip(_('Play'))
+ self.activity.play.props.sensitive = True
+ self.activity.play.connect('clicked', self.activity._play_cb)
+ self.insert(self.activity.play, -1)
+ self.activity.play.show()
+
diff --git a/MANIFEST b/MANIFEST
new file mode 100644
index 0000000..a27ca74
--- /dev/null
+++ b/MANIFEST
@@ -0,0 +1,27 @@
+C.py
+SlideruleActivity.py
+NEWS
+
+COPYING
+sprites.py
+window.py
+D.py
+
+setup.py
+activity/activity-sliderule.svg
+activity/activity.info
+images/D.svg
+images/reticule.svg
+images/C.svg
+po/Sliderule.pot
+
+
+
+constants.py
+sprite_factory.py
+activity/activity-sliderule.png
+images/tab.svg
+A.py
+images/A.svg
+icons/A.svg
+icons/C.svg
diff --git a/NEWS b/NEWS
new file mode 100644
index 0000000..19de154
--- /dev/null
+++ b/NEWS
@@ -0,0 +1,4 @@
+1
+
+* new project
+
diff --git a/Sounds/acguit b/Sounds/acguit
new file mode 100644
index 0000000..2e28014
--- /dev/null
+++ b/Sounds/acguit
Binary files differ
diff --git a/Sounds/alarm b/Sounds/alarm
new file mode 100644
index 0000000..73b7628
--- /dev/null
+++ b/Sounds/alarm
Binary files differ
diff --git a/Sounds/armbone b/Sounds/armbone
new file mode 100644
index 0000000..38fc68a
--- /dev/null
+++ b/Sounds/armbone
Binary files differ
diff --git a/Sounds/babylaugh b/Sounds/babylaugh
new file mode 100644
index 0000000..9c72bd3
--- /dev/null
+++ b/Sounds/babylaugh
Binary files differ
diff --git a/Sounds/babyuhoh b/Sounds/babyuhoh
new file mode 100644
index 0000000..705f61a
--- /dev/null
+++ b/Sounds/babyuhoh
Binary files differ
diff --git a/Sounds/banjo b/Sounds/banjo
new file mode 100644
index 0000000..f15278d
--- /dev/null
+++ b/Sounds/banjo
Binary files differ
diff --git a/Sounds/basse b/Sounds/basse
new file mode 100644
index 0000000..2bc1571
--- /dev/null
+++ b/Sounds/basse
Binary files differ
diff --git a/Sounds/basse2 b/Sounds/basse2
new file mode 100644
index 0000000..744d196
--- /dev/null
+++ b/Sounds/basse2
Binary files differ
diff --git a/Sounds/bird b/Sounds/bird
new file mode 100644
index 0000000..fbe8a29
--- /dev/null
+++ b/Sounds/bird
Binary files differ
diff --git a/Sounds/bottle b/Sounds/bottle
new file mode 100644
index 0000000..8f3d680
--- /dev/null
+++ b/Sounds/bottle
Binary files differ
diff --git a/Sounds/bubbles b/Sounds/bubbles
new file mode 100644
index 0000000..849ff02
--- /dev/null
+++ b/Sounds/bubbles
Binary files differ
diff --git a/Sounds/byke b/Sounds/byke
new file mode 100644
index 0000000..6f428b8
--- /dev/null
+++ b/Sounds/byke
Binary files differ
diff --git a/Sounds/camera b/Sounds/camera
new file mode 100644
index 0000000..8eaa5b5
--- /dev/null
+++ b/Sounds/camera
Binary files differ
diff --git a/Sounds/car b/Sounds/car
new file mode 100644
index 0000000..66e42ae
--- /dev/null
+++ b/Sounds/car
Binary files differ
diff --git a/Sounds/carhorn b/Sounds/carhorn
new file mode 100644
index 0000000..fbbd02b
--- /dev/null
+++ b/Sounds/carhorn
Binary files differ
diff --git a/Sounds/cat b/Sounds/cat
new file mode 100644
index 0000000..845ee8e
--- /dev/null
+++ b/Sounds/cat
Binary files differ
diff --git a/Sounds/cello b/Sounds/cello
new file mode 100644
index 0000000..31720df
--- /dev/null
+++ b/Sounds/cello
Binary files differ
diff --git a/Sounds/chiken b/Sounds/chiken
new file mode 100644
index 0000000..736bfd0
--- /dev/null
+++ b/Sounds/chiken
Binary files differ
diff --git a/Sounds/chimes b/Sounds/chimes
new file mode 100644
index 0000000..01c80e4
--- /dev/null
+++ b/Sounds/chimes
Binary files differ
diff --git a/Sounds/clang b/Sounds/clang
new file mode 100644
index 0000000..01476fc
--- /dev/null
+++ b/Sounds/clang
Binary files differ
diff --git a/Sounds/clang2 b/Sounds/clang2
new file mode 100644
index 0000000..cb1fed2
--- /dev/null
+++ b/Sounds/clang2
Binary files differ
diff --git a/Sounds/clarinette b/Sounds/clarinette
new file mode 100644
index 0000000..5ed08c2
--- /dev/null
+++ b/Sounds/clarinette
Binary files differ
diff --git a/Sounds/clavinet b/Sounds/clavinet
new file mode 100644
index 0000000..db88314
--- /dev/null
+++ b/Sounds/clavinet
Binary files differ
diff --git a/Sounds/cling b/Sounds/cling
new file mode 100644
index 0000000..db3525f
--- /dev/null
+++ b/Sounds/cling
Binary files differ
diff --git a/Sounds/cow b/Sounds/cow
new file mode 100644
index 0000000..5d31cf5
--- /dev/null
+++ b/Sounds/cow
Binary files differ
diff --git a/Sounds/crash b/Sounds/crash
new file mode 100644
index 0000000..8408175
--- /dev/null
+++ b/Sounds/crash
Binary files differ
diff --git a/Sounds/cricket b/Sounds/cricket
new file mode 100644
index 0000000..cb3504c
--- /dev/null
+++ b/Sounds/cricket
Binary files differ
diff --git a/Sounds/diceinst b/Sounds/diceinst
new file mode 100644
index 0000000..5a41341
--- /dev/null
+++ b/Sounds/diceinst
Binary files differ
diff --git a/Sounds/didjeridu b/Sounds/didjeridu
new file mode 100644
index 0000000..d7556e7
--- /dev/null
+++ b/Sounds/didjeridu
Binary files differ
diff --git a/Sounds/dog b/Sounds/dog
new file mode 100644
index 0000000..c1e8e22
--- /dev/null
+++ b/Sounds/dog
Binary files differ
diff --git a/Sounds/door b/Sounds/door
new file mode 100644
index 0000000..2b3b21a
--- /dev/null
+++ b/Sounds/door
Binary files differ
diff --git a/Sounds/drum1chine b/Sounds/drum1chine
new file mode 100644
index 0000000..bb29f18
--- /dev/null
+++ b/Sounds/drum1chine
Binary files differ
diff --git a/Sounds/drum1crash b/Sounds/drum1crash
new file mode 100644
index 0000000..5f520c2
--- /dev/null
+++ b/Sounds/drum1crash
Binary files differ
diff --git a/Sounds/drum1floortom b/Sounds/drum1floortom
new file mode 100644
index 0000000..f43cb2b
--- /dev/null
+++ b/Sounds/drum1floortom
Binary files differ
diff --git a/Sounds/drum1hardride b/Sounds/drum1hardride
new file mode 100644
index 0000000..94f052f
--- /dev/null
+++ b/Sounds/drum1hardride
Binary files differ
diff --git a/Sounds/drum1hatpedal b/Sounds/drum1hatpedal
new file mode 100644
index 0000000..0c0afe6
--- /dev/null
+++ b/Sounds/drum1hatpedal
Binary files differ
diff --git a/Sounds/drum1hatshoulder b/Sounds/drum1hatshoulder
new file mode 100644
index 0000000..395ef0b
--- /dev/null
+++ b/Sounds/drum1hatshoulder
Binary files differ
diff --git a/Sounds/drum1kick b/Sounds/drum1kick
new file mode 100644
index 0000000..0acfb56
--- /dev/null
+++ b/Sounds/drum1kick
Binary files differ
diff --git a/Sounds/drum1kit b/Sounds/drum1kit
new file mode 100644
index 0000000..0acfb56
--- /dev/null
+++ b/Sounds/drum1kit
Binary files differ
diff --git a/Sounds/drum1ridebell b/Sounds/drum1ridebell
new file mode 100644
index 0000000..6f6b6ce
--- /dev/null
+++ b/Sounds/drum1ridebell
Binary files differ
diff --git a/Sounds/drum1snare b/Sounds/drum1snare
new file mode 100644
index 0000000..54a6372
--- /dev/null
+++ b/Sounds/drum1snare
Binary files differ
diff --git a/Sounds/drum1snaresidestick b/Sounds/drum1snaresidestick
new file mode 100644
index 0000000..a99e846
--- /dev/null
+++ b/Sounds/drum1snaresidestick
Binary files differ
diff --git a/Sounds/drum1splash b/Sounds/drum1splash
new file mode 100644
index 0000000..49a334e
--- /dev/null
+++ b/Sounds/drum1splash
Binary files differ
diff --git a/Sounds/drum1tom b/Sounds/drum1tom
new file mode 100644
index 0000000..ed1464c
--- /dev/null
+++ b/Sounds/drum1tom
Binary files differ
diff --git a/Sounds/drum2darbukadoom b/Sounds/drum2darbukadoom
new file mode 100644
index 0000000..5a90725
--- /dev/null
+++ b/Sounds/drum2darbukadoom
Binary files differ
diff --git a/Sounds/drum2darbukafinger b/Sounds/drum2darbukafinger
new file mode 100644
index 0000000..163aa3c
--- /dev/null
+++ b/Sounds/drum2darbukafinger
Binary files differ
diff --git a/Sounds/drum2darbukapied b/Sounds/drum2darbukapied
new file mode 100644
index 0000000..006586a
--- /dev/null
+++ b/Sounds/drum2darbukapied
Binary files differ
diff --git a/Sounds/drum2darbukapiedsoft b/Sounds/drum2darbukapiedsoft
new file mode 100644
index 0000000..cf2aaa8
--- /dev/null
+++ b/Sounds/drum2darbukapiedsoft
Binary files differ
diff --git a/Sounds/drum2darbukaroll b/Sounds/drum2darbukaroll
new file mode 100644
index 0000000..ded7a31
--- /dev/null
+++ b/Sounds/drum2darbukaroll
Binary files differ
diff --git a/Sounds/drum2darbukaslap b/Sounds/drum2darbukaslap
new file mode 100644
index 0000000..fd70b88
--- /dev/null
+++ b/Sounds/drum2darbukaslap
Binary files differ
diff --git a/Sounds/drum2darbukatak b/Sounds/drum2darbukatak
new file mode 100644
index 0000000..329f619
--- /dev/null
+++ b/Sounds/drum2darbukatak
Binary files differ
diff --git a/Sounds/drum2hatflanger b/Sounds/drum2hatflanger
new file mode 100644
index 0000000..9dd9389
--- /dev/null
+++ b/Sounds/drum2hatflanger
Binary files differ
diff --git a/Sounds/drum2hatpied b/Sounds/drum2hatpied
new file mode 100644
index 0000000..84e774e
--- /dev/null
+++ b/Sounds/drum2hatpied
Binary files differ
diff --git a/Sounds/drum2hatpied2 b/Sounds/drum2hatpied2
new file mode 100644
index 0000000..cd21b17
--- /dev/null
+++ b/Sounds/drum2hatpied2
Binary files differ
diff --git a/Sounds/drum2kit b/Sounds/drum2kit
new file mode 100644
index 0000000..5a90725
--- /dev/null
+++ b/Sounds/drum2kit
Binary files differ
diff --git a/Sounds/drum2tambourinepied b/Sounds/drum2tambourinepied
new file mode 100644
index 0000000..d6b566a
--- /dev/null
+++ b/Sounds/drum2tambourinepied
Binary files differ
diff --git a/Sounds/drum2tambourinepiedsoft b/Sounds/drum2tambourinepiedsoft
new file mode 100644
index 0000000..4da2ea6
--- /dev/null
+++ b/Sounds/drum2tambourinepiedsoft
Binary files differ
diff --git a/Sounds/drum3cowbell b/Sounds/drum3cowbell
new file mode 100644
index 0000000..3c52687
--- /dev/null
+++ b/Sounds/drum3cowbell
Binary files differ
diff --git a/Sounds/drum3cowbelltip b/Sounds/drum3cowbelltip
new file mode 100644
index 0000000..7b79fe2
--- /dev/null
+++ b/Sounds/drum3cowbelltip
Binary files differ
diff --git a/Sounds/drum3cup b/Sounds/drum3cup
new file mode 100644
index 0000000..6cf6da2
--- /dev/null
+++ b/Sounds/drum3cup
Binary files differ
diff --git a/Sounds/drum3djembelow b/Sounds/drum3djembelow
new file mode 100644
index 0000000..ad5fd0a
--- /dev/null
+++ b/Sounds/drum3djembelow
Binary files differ
diff --git a/Sounds/drum3djembemid b/Sounds/drum3djembemid
new file mode 100644
index 0000000..55b6d9f
--- /dev/null
+++ b/Sounds/drum3djembemid
Binary files differ
diff --git a/Sounds/drum3djembesidestick b/Sounds/drum3djembesidestick
new file mode 100644
index 0000000..94c29e6
--- /dev/null
+++ b/Sounds/drum3djembesidestick
Binary files differ
diff --git a/Sounds/drum3djembeslap b/Sounds/drum3djembeslap
new file mode 100644
index 0000000..d201e52
--- /dev/null
+++ b/Sounds/drum3djembeslap
Binary files differ
diff --git a/Sounds/drum3djembestickmid b/Sounds/drum3djembestickmid
new file mode 100644
index 0000000..9da83ba
--- /dev/null
+++ b/Sounds/drum3djembestickmid
Binary files differ
diff --git a/Sounds/drum3kit b/Sounds/drum3kit
new file mode 100644
index 0000000..94c29e6
--- /dev/null
+++ b/Sounds/drum3kit
Binary files differ
diff --git a/Sounds/drum3metalstand b/Sounds/drum3metalstand
new file mode 100644
index 0000000..059efcc
--- /dev/null
+++ b/Sounds/drum3metalstand
Binary files differ
diff --git a/Sounds/drum3pedalperc b/Sounds/drum3pedalperc
new file mode 100644
index 0000000..c271d66
--- /dev/null
+++ b/Sounds/drum3pedalperc
Binary files differ
diff --git a/Sounds/drum3rainstick b/Sounds/drum3rainstick
new file mode 100644
index 0000000..561d0d9
--- /dev/null
+++ b/Sounds/drum3rainstick
Binary files differ
diff --git a/Sounds/drum3tambourinehigh b/Sounds/drum3tambourinehigh
new file mode 100644
index 0000000..cf2c61e
--- /dev/null
+++ b/Sounds/drum3tambourinehigh
Binary files differ
diff --git a/Sounds/drum3tambourinelow b/Sounds/drum3tambourinelow
new file mode 100644
index 0000000..ff8e278
--- /dev/null
+++ b/Sounds/drum3tambourinelow
Binary files differ
diff --git a/Sounds/drum4afrofeet b/Sounds/drum4afrofeet
new file mode 100644
index 0000000..b2044da
--- /dev/null
+++ b/Sounds/drum4afrofeet
Binary files differ
diff --git a/Sounds/drum4fingersn b/Sounds/drum4fingersn
new file mode 100644
index 0000000..e6b60a5
--- /dev/null
+++ b/Sounds/drum4fingersn
Binary files differ
diff --git a/Sounds/drum4kit b/Sounds/drum4kit
new file mode 100644
index 0000000..486ed42
--- /dev/null
+++ b/Sounds/drum4kit
Binary files differ
diff --git a/Sounds/drum4mutecuic b/Sounds/drum4mutecuic
new file mode 100644
index 0000000..ef0c0c0
--- /dev/null
+++ b/Sounds/drum4mutecuic
Binary files differ
diff --git a/Sounds/drum4stompbass b/Sounds/drum4stompbass
new file mode 100644
index 0000000..68dd316
--- /dev/null
+++ b/Sounds/drum4stompbass
Binary files differ
diff --git a/Sounds/drum4tambouri b/Sounds/drum4tambouri
new file mode 100644
index 0000000..5b32be2
--- /dev/null
+++ b/Sounds/drum4tambouri
Binary files differ
diff --git a/Sounds/drum4tr707clap b/Sounds/drum4tr707clap
new file mode 100644
index 0000000..f9ea03e
--- /dev/null
+++ b/Sounds/drum4tr707clap
Binary files differ
diff --git a/Sounds/drum4tr707open b/Sounds/drum4tr707open
new file mode 100644
index 0000000..f7d54bf
--- /dev/null
+++ b/Sounds/drum4tr707open
Binary files differ
diff --git a/Sounds/drum4tr808closed b/Sounds/drum4tr808closed
new file mode 100644
index 0000000..8995edd
--- /dev/null
+++ b/Sounds/drum4tr808closed
Binary files differ
diff --git a/Sounds/drum4tr808sn b/Sounds/drum4tr808sn
new file mode 100644
index 0000000..adde850
--- /dev/null
+++ b/Sounds/drum4tr808sn
Binary files differ
diff --git a/Sounds/drum4tr909bass b/Sounds/drum4tr909bass
new file mode 100644
index 0000000..6420213
--- /dev/null
+++ b/Sounds/drum4tr909bass
Binary files differ
diff --git a/Sounds/drum4tr909kick b/Sounds/drum4tr909kick
new file mode 100644
index 0000000..6e33dd3
--- /dev/null
+++ b/Sounds/drum4tr909kick
Binary files differ
diff --git a/Sounds/drum4tr909sn b/Sounds/drum4tr909sn
new file mode 100644
index 0000000..486ed42
--- /dev/null
+++ b/Sounds/drum4tr909sn
Binary files differ
diff --git a/Sounds/drum5agogoaigu b/Sounds/drum5agogoaigu
new file mode 100644
index 0000000..3889332
--- /dev/null
+++ b/Sounds/drum5agogoaigu
Binary files differ
diff --git a/Sounds/drum5agogograve b/Sounds/drum5agogograve
new file mode 100644
index 0000000..5717751
--- /dev/null
+++ b/Sounds/drum5agogograve
Binary files differ
diff --git a/Sounds/drum5bongoaiguouvert b/Sounds/drum5bongoaiguouvert
new file mode 100644
index 0000000..95aba33
--- /dev/null
+++ b/Sounds/drum5bongoaiguouvert
Binary files differ
diff --git a/Sounds/drum5bongograveouvert b/Sounds/drum5bongograveouvert
new file mode 100644
index 0000000..d7d1e58
--- /dev/null
+++ b/Sounds/drum5bongograveouvert
Binary files differ
diff --git a/Sounds/drum5congaaiguouvert b/Sounds/drum5congaaiguouvert
new file mode 100644
index 0000000..a59ce75
--- /dev/null
+++ b/Sounds/drum5congaaiguouvert
Binary files differ
diff --git a/Sounds/drum5congagraveferme b/Sounds/drum5congagraveferme
new file mode 100644
index 0000000..a49c459
--- /dev/null
+++ b/Sounds/drum5congagraveferme
Binary files differ
diff --git a/Sounds/drum5congagraveouvert b/Sounds/drum5congagraveouvert
new file mode 100644
index 0000000..3b9503c
--- /dev/null
+++ b/Sounds/drum5congagraveouvert
Binary files differ
diff --git a/Sounds/drum5guiroretour b/Sounds/drum5guiroretour
new file mode 100644
index 0000000..025ebfb
--- /dev/null
+++ b/Sounds/drum5guiroretour
Binary files differ
diff --git a/Sounds/drum5kit b/Sounds/drum5kit
new file mode 100644
index 0000000..95aba33
--- /dev/null
+++ b/Sounds/drum5kit
Binary files differ
diff --git a/Sounds/drum5quicaaigu b/Sounds/drum5quicaaigu
new file mode 100644
index 0000000..d952c8c
--- /dev/null
+++ b/Sounds/drum5quicaaigu
Binary files differ
diff --git a/Sounds/drum5quicamedium b/Sounds/drum5quicamedium
new file mode 100644
index 0000000..57e92e6
--- /dev/null
+++ b/Sounds/drum5quicamedium
Binary files differ
diff --git a/Sounds/drum5timablesaiguslap b/Sounds/drum5timablesaiguslap
new file mode 100644
index 0000000..1b531b0
--- /dev/null
+++ b/Sounds/drum5timablesaiguslap
Binary files differ
diff --git a/Sounds/drum5timablesslap b/Sounds/drum5timablesslap
new file mode 100644
index 0000000..1e5ec3e
--- /dev/null
+++ b/Sounds/drum5timablesslap
Binary files differ
diff --git a/Sounds/drum5vibraslap b/Sounds/drum5vibraslap
new file mode 100644
index 0000000..e539891
--- /dev/null
+++ b/Sounds/drum5vibraslap
Binary files differ
diff --git a/Sounds/drum6kit b/Sounds/drum6kit
new file mode 100644
index 0000000..a409f6c
--- /dev/null
+++ b/Sounds/drum6kit
Binary files differ
diff --git a/Sounds/drum6kit.orig b/Sounds/drum6kit.orig
new file mode 100644
index 0000000..8bfe82c
--- /dev/null
+++ b/Sounds/drum6kit.orig
Binary files differ
diff --git a/Sounds/drum6madal00 b/Sounds/drum6madal00
new file mode 100644
index 0000000..6af692f
--- /dev/null
+++ b/Sounds/drum6madal00
Binary files differ
diff --git a/Sounds/drum6madal01 b/Sounds/drum6madal01
new file mode 100644
index 0000000..0a7dbdb
--- /dev/null
+++ b/Sounds/drum6madal01
Binary files differ
diff --git a/Sounds/drum6madal02 b/Sounds/drum6madal02
new file mode 100644
index 0000000..e12a412
--- /dev/null
+++ b/Sounds/drum6madal02
Binary files differ
diff --git a/Sounds/drum6madal03 b/Sounds/drum6madal03
new file mode 100644
index 0000000..b3a210e
--- /dev/null
+++ b/Sounds/drum6madal03
Binary files differ
diff --git a/Sounds/drum6madal04 b/Sounds/drum6madal04
new file mode 100644
index 0000000..fcef18f
--- /dev/null
+++ b/Sounds/drum6madal04
Binary files differ
diff --git a/Sounds/drum6madal05 b/Sounds/drum6madal05
new file mode 100644
index 0000000..a409f6c
--- /dev/null
+++ b/Sounds/drum6madal05
Binary files differ
diff --git a/Sounds/drum6madal06 b/Sounds/drum6madal06
new file mode 100644
index 0000000..e7c307d
--- /dev/null
+++ b/Sounds/drum6madal06
Binary files differ
diff --git a/Sounds/drum6madal07 b/Sounds/drum6madal07
new file mode 100644
index 0000000..25bf251
--- /dev/null
+++ b/Sounds/drum6madal07
Binary files differ
diff --git a/Sounds/drum6madal08 b/Sounds/drum6madal08
new file mode 100644
index 0000000..4bcba5a
--- /dev/null
+++ b/Sounds/drum6madal08
Binary files differ
diff --git a/Sounds/drum6madal09 b/Sounds/drum6madal09
new file mode 100644
index 0000000..3cb92ee
--- /dev/null
+++ b/Sounds/drum6madal09
Binary files differ
diff --git a/Sounds/drum6madal10 b/Sounds/drum6madal10
new file mode 100644
index 0000000..af6f451
--- /dev/null
+++ b/Sounds/drum6madal10
Binary files differ
diff --git a/Sounds/drum6madal11 b/Sounds/drum6madal11
new file mode 100644
index 0000000..cddcf4a
--- /dev/null
+++ b/Sounds/drum6madal11
Binary files differ
diff --git a/Sounds/drum6madal12 b/Sounds/drum6madal12
new file mode 100644
index 0000000..1b3dc5b
--- /dev/null
+++ b/Sounds/drum6madal12
Binary files differ
diff --git a/Sounds/duck b/Sounds/duck
new file mode 100644
index 0000000..37b5f85
--- /dev/null
+++ b/Sounds/duck
Binary files differ
diff --git a/Sounds/duck2 b/Sounds/duck2
new file mode 100644
index 0000000..1c62622
--- /dev/null
+++ b/Sounds/duck2
Binary files differ
diff --git a/Sounds/fingercymbals b/Sounds/fingercymbals
new file mode 100644
index 0000000..aa1f221
--- /dev/null
+++ b/Sounds/fingercymbals
Binary files differ
diff --git a/Sounds/flugel b/Sounds/flugel
new file mode 100644
index 0000000..4367cc2
--- /dev/null
+++ b/Sounds/flugel
Binary files differ
diff --git a/Sounds/flute b/Sounds/flute
new file mode 100644
index 0000000..68a2580
--- /dev/null
+++ b/Sounds/flute
Binary files differ
diff --git a/Sounds/foghorn b/Sounds/foghorn
new file mode 100644
index 0000000..65549e6
--- /dev/null
+++ b/Sounds/foghorn
Binary files differ
diff --git a/Sounds/frogs b/Sounds/frogs
new file mode 100644
index 0000000..9b2831a
--- /dev/null
+++ b/Sounds/frogs
Binary files differ
diff --git a/Sounds/gam b/Sounds/gam
new file mode 100644
index 0000000..dca077b
--- /dev/null
+++ b/Sounds/gam
Binary files differ
diff --git a/Sounds/guidice1 b/Sounds/guidice1
new file mode 100644
index 0000000..9e48310
--- /dev/null
+++ b/Sounds/guidice1
Binary files differ
diff --git a/Sounds/guidice10 b/Sounds/guidice10
new file mode 100644
index 0000000..8da4267
--- /dev/null
+++ b/Sounds/guidice10
Binary files differ
diff --git a/Sounds/guidice2 b/Sounds/guidice2
new file mode 100644
index 0000000..7b12043
--- /dev/null
+++ b/Sounds/guidice2
Binary files differ
diff --git a/Sounds/guidice3 b/Sounds/guidice3
new file mode 100644
index 0000000..68d1f45
--- /dev/null
+++ b/Sounds/guidice3
Binary files differ
diff --git a/Sounds/guidice4 b/Sounds/guidice4
new file mode 100644
index 0000000..3d72119
--- /dev/null
+++ b/Sounds/guidice4
Binary files differ
diff --git a/Sounds/guidice5 b/Sounds/guidice5
new file mode 100644
index 0000000..79cc786
--- /dev/null
+++ b/Sounds/guidice5
Binary files differ
diff --git a/Sounds/guidice6 b/Sounds/guidice6
new file mode 100644
index 0000000..dc2f756
--- /dev/null
+++ b/Sounds/guidice6
Binary files differ
diff --git a/Sounds/guidice7 b/Sounds/guidice7
new file mode 100644
index 0000000..af341b7
--- /dev/null
+++ b/Sounds/guidice7
Binary files differ
diff --git a/Sounds/guidice8 b/Sounds/guidice8
new file mode 100644
index 0000000..9901020
--- /dev/null
+++ b/Sounds/guidice8
Binary files differ
diff --git a/Sounds/guidice9 b/Sounds/guidice9
new file mode 100644
index 0000000..8798781
--- /dev/null
+++ b/Sounds/guidice9
Binary files differ
diff --git a/Sounds/guit b/Sounds/guit
new file mode 100644
index 0000000..dfb1866
--- /dev/null
+++ b/Sounds/guit
Binary files differ
diff --git a/Sounds/guit2 b/Sounds/guit2
new file mode 100644
index 0000000..fcb9163
--- /dev/null
+++ b/Sounds/guit2
Binary files differ
diff --git a/Sounds/guitmute b/Sounds/guitmute
new file mode 100644
index 0000000..93026d6
--- /dev/null
+++ b/Sounds/guitmute
Binary files differ
diff --git a/Sounds/guitshort b/Sounds/guitshort
new file mode 100644
index 0000000..698364b
--- /dev/null
+++ b/Sounds/guitshort
Binary files differ
diff --git a/Sounds/harmonica b/Sounds/harmonica
new file mode 100644
index 0000000..7b0af9f
--- /dev/null
+++ b/Sounds/harmonica
Binary files differ
diff --git a/Sounds/harmonium b/Sounds/harmonium
new file mode 100644
index 0000000..5bc5fcb
--- /dev/null
+++ b/Sounds/harmonium
Binary files differ
diff --git a/Sounds/harpsichord b/Sounds/harpsichord
new file mode 100644
index 0000000..dac451f
--- /dev/null
+++ b/Sounds/harpsichord
Binary files differ
diff --git a/Sounds/hey b/Sounds/hey
new file mode 100644
index 0000000..0bd7b20
--- /dev/null
+++ b/Sounds/hey
Binary files differ
diff --git a/Sounds/horse b/Sounds/horse
new file mode 100644
index 0000000..b7756a3
--- /dev/null
+++ b/Sounds/horse
Binary files differ
diff --git a/Sounds/kalimba b/Sounds/kalimba
new file mode 100644
index 0000000..2e02b48
--- /dev/null
+++ b/Sounds/kalimba
Binary files differ
diff --git a/Sounds/koto b/Sounds/koto
new file mode 100644
index 0000000..9279a7f
--- /dev/null
+++ b/Sounds/koto
Binary files differ
diff --git a/Sounds/laugh b/Sounds/laugh
new file mode 100644
index 0000000..05483ce
--- /dev/null
+++ b/Sounds/laugh
Binary files differ
diff --git a/Sounds/mando b/Sounds/mando
new file mode 100644
index 0000000..092125b
--- /dev/null
+++ b/Sounds/mando
Binary files differ
diff --git a/Sounds/marimba b/Sounds/marimba
new file mode 100644
index 0000000..489ba71
--- /dev/null
+++ b/Sounds/marimba
Binary files differ
diff --git a/Sounds/mic1 b/Sounds/mic1
new file mode 100644
index 0000000..d26b87b
--- /dev/null
+++ b/Sounds/mic1
Binary files differ
diff --git a/Sounds/mic2 b/Sounds/mic2
new file mode 100644
index 0000000..d26b87b
--- /dev/null
+++ b/Sounds/mic2
Binary files differ
diff --git a/Sounds/mic3 b/Sounds/mic3
new file mode 100644
index 0000000..d26b87b
--- /dev/null
+++ b/Sounds/mic3
Binary files differ
diff --git a/Sounds/mic4 b/Sounds/mic4
new file mode 100644
index 0000000..d26b87b
--- /dev/null
+++ b/Sounds/mic4
Binary files differ
diff --git a/Sounds/ocarina b/Sounds/ocarina
new file mode 100644
index 0000000..7b00cc6
--- /dev/null
+++ b/Sounds/ocarina
Binary files differ
diff --git a/Sounds/ounk b/Sounds/ounk
new file mode 100644
index 0000000..1272c5f
--- /dev/null
+++ b/Sounds/ounk
Binary files differ
diff --git a/Sounds/ow b/Sounds/ow
new file mode 100644
index 0000000..8270199
--- /dev/null
+++ b/Sounds/ow
Binary files differ
diff --git a/Sounds/piano b/Sounds/piano
new file mode 100644
index 0000000..f98a513
--- /dev/null
+++ b/Sounds/piano
Binary files differ
diff --git a/Sounds/plane b/Sounds/plane
new file mode 100644
index 0000000..d20142a
--- /dev/null
+++ b/Sounds/plane
Binary files differ
diff --git a/Sounds/rhodes b/Sounds/rhodes
new file mode 100644
index 0000000..16cd8ec
--- /dev/null
+++ b/Sounds/rhodes
Binary files differ
diff --git a/Sounds/sarangi b/Sounds/sarangi
new file mode 100644
index 0000000..69bde54
--- /dev/null
+++ b/Sounds/sarangi
Binary files differ
diff --git a/Sounds/sarangi.orig b/Sounds/sarangi.orig
new file mode 100644
index 0000000..4fb94da
--- /dev/null
+++ b/Sounds/sarangi.orig
Binary files differ
diff --git a/Sounds/saxo b/Sounds/saxo
new file mode 100644
index 0000000..16de921
--- /dev/null
+++ b/Sounds/saxo
Binary files differ
diff --git a/Sounds/saxsoprano b/Sounds/saxsoprano
new file mode 100644
index 0000000..b9f63e9
--- /dev/null
+++ b/Sounds/saxsoprano
Binary files differ
diff --git a/Sounds/sheep b/Sounds/sheep
new file mode 100644
index 0000000..178bb43
--- /dev/null
+++ b/Sounds/sheep
Binary files differ
diff --git a/Sounds/shenai b/Sounds/shenai
new file mode 100644
index 0000000..115f125
--- /dev/null
+++ b/Sounds/shenai
Binary files differ
diff --git a/Sounds/sitar b/Sounds/sitar
new file mode 100644
index 0000000..6fdc321
--- /dev/null
+++ b/Sounds/sitar
Binary files differ
diff --git a/Sounds/slap b/Sounds/slap
new file mode 100644
index 0000000..6e1f375
--- /dev/null
+++ b/Sounds/slap
Binary files differ
diff --git a/Sounds/templebell b/Sounds/templebell
new file mode 100644
index 0000000..705fbbc
--- /dev/null
+++ b/Sounds/templebell
Binary files differ
diff --git a/Sounds/templebell.orig b/Sounds/templebell.orig
new file mode 100644
index 0000000..0790114
--- /dev/null
+++ b/Sounds/templebell.orig
Binary files differ
diff --git a/Sounds/triangle b/Sounds/triangle
new file mode 100644
index 0000000..8c3c1b9
--- /dev/null
+++ b/Sounds/triangle
Binary files differ
diff --git a/Sounds/trumpet b/Sounds/trumpet
new file mode 100644
index 0000000..3ce006d
--- /dev/null
+++ b/Sounds/trumpet
Binary files differ
diff --git a/Sounds/tuba b/Sounds/tuba
new file mode 100644
index 0000000..9e47196
--- /dev/null
+++ b/Sounds/tuba
Binary files differ
diff --git a/Sounds/ukulele b/Sounds/ukulele
new file mode 100644
index 0000000..bfacc40
--- /dev/null
+++ b/Sounds/ukulele
Binary files differ
diff --git a/Sounds/violin b/Sounds/violin
new file mode 100644
index 0000000..f89733c
--- /dev/null
+++ b/Sounds/violin
Binary files differ
diff --git a/Sounds/voix b/Sounds/voix
new file mode 100644
index 0000000..87f6ca6
--- /dev/null
+++ b/Sounds/voix
Binary files differ
diff --git a/Sounds/water b/Sounds/water
new file mode 100644
index 0000000..c6cee2e
--- /dev/null
+++ b/Sounds/water
Binary files differ
diff --git a/Sounds/zap b/Sounds/zap
new file mode 100644
index 0000000..e401f6b
--- /dev/null
+++ b/Sounds/zap
Binary files differ
diff --git a/activity/activity-erikos.svg b/activity/activity-erikos.svg
new file mode 100644
index 0000000..5dc6159
--- /dev/null
+++ b/activity/activity-erikos.svg
@@ -0,0 +1,43 @@
+<?xml version="1.0" ?>
+<!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd' [
+ <!ENTITY stroke_color "#000">
+ <!ENTITY fill_color "#eee">
+]>
+<svg height="45px" viewBox="0 0 45 45" width="45px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" stroke-linecap="round" stroke-linejoin="round" stroke-width="3.5" stroke="&stroke_color;" fill="&fill_color;">
+ <g
+ id="g2390"
+ transform="translate(2.5,2.4999985)">
+ <rect
+ style="fill:&fill_color;;stroke:&stroke_color;;stroke-width:1.45688474"
+ id="rect4"
+ transform="matrix(-0.7071068,-0.7071068,0.7071068,-0.7071068,0,0)"
+ y="-13.627049"
+ x="-27.769184"
+ height="13.111962"
+ width="13.111962" />
+ <rect
+ style="fill:&fill_color;;stroke:&stroke_color;;stroke-width:1.45688474"
+ id="rect2384"
+ transform="matrix(-0.7071068,-0.7071068,0.7071068,-0.7071068,0,0)"
+ y="0.51508725"
+ x="-27.769186"
+ height="13.111962"
+ width="13.111962" />
+ <rect
+ style="fill:&fill_color;;stroke:&stroke_color;;stroke-width:1.45688474"
+ id="rect2386"
+ transform="matrix(-0.7071068,-0.7071068,0.7071068,-0.7071068,0,0)"
+ y="0.51508671"
+ x="-41.91132"
+ height="13.111962"
+ width="13.111962" />
+ <rect
+ style="fill:&fill_color;;stroke:&stroke_color;;stroke-width:1.45688474"
+ id="rect2388"
+ transform="matrix(-0.7071068,-0.7071068,0.7071068,-0.7071068,0,0)"
+ y="-13.627048"
+ x="-41.911324"
+ height="13.111962"
+ width="13.111962" />
+ </g>
+</svg>
diff --git a/activity/activity.info b/activity/activity.info
new file mode 100644
index 0000000..5a83843
--- /dev/null
+++ b/activity/activity.info
@@ -0,0 +1,8 @@
+[Activity]
+name = Erikos
+activity_version = 1
+license = GPLv3
+bundle_id = org.sugarlabs.ErikosActivity
+exec = sugar-activity ErikosActivity.ErikosActivity
+icon = activity-erikos
+show_launcher = yes
diff --git a/constants.py b/constants.py
new file mode 100644
index 0000000..1e7987a
--- /dev/null
+++ b/constants.py
@@ -0,0 +1,23 @@
+# -*- coding: utf-8 -*-
+#Copyright (c) 2009, Walter Bender
+
+#Permission is hereby granted, free of charge, to any person obtaining a copy
+#of this software and associated documentation files (the "Software"), to deal
+#in the Software without restriction, including without limitation the rights
+#to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+#copies of the Software, and to permit persons to whom the Software is
+#furnished to do so, subject to the following conditions:
+
+#The above copyright notice and this permission notice shall be included in
+#all copies or substantial portions of the Software.
+
+#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+#AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+#LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+#OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+#THE SOFTWARE.
+
+W = 156
+H = 156
diff --git a/images/Aoff.svg b/images/Aoff.svg
new file mode 100644
index 0000000..8ecae2a
--- /dev/null
+++ b/images/Aoff.svg
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.0"
+ width="77.781746"
+ height="77.781746"
+ id="svg2">
+ <defs
+ id="defs7" />
+ <rect
+ width="55"
+ height="55"
+ x="-27.5"
+ y="27.5"
+ transform="matrix(0.7071068,-0.7071068,0.7071068,0.7071068,0,0)"
+ id="rect4"
+ style="opacity:1;fill:#c08080;fill-opacity:1" />
+</svg>
diff --git a/images/Aon.svg b/images/Aon.svg
new file mode 100644
index 0000000..c9abef6
--- /dev/null
+++ b/images/Aon.svg
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.0"
+ width="77.781746"
+ height="77.781746"
+ id="svg2">
+ <defs
+ id="defs7" />
+ <rect
+ width="55"
+ height="55"
+ x="-27.5"
+ y="27.5"
+ transform="matrix(0.7071068,-0.7071068,0.7071068,0.7071068,0,0)"
+ id="rect4"
+ style="opacity:1;fill:#ff0000;fill-opacity:1" />
+</svg>
diff --git a/images/Boff.svg b/images/Boff.svg
new file mode 100644
index 0000000..7a544c0
--- /dev/null
+++ b/images/Boff.svg
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.0"
+ width="77.781746"
+ height="77.781746"
+ id="svg2">
+ <defs
+ id="defs7" />
+ <rect
+ width="55"
+ height="55"
+ x="-27.5"
+ y="27.5"
+ transform="matrix(0.7071068,-0.7071068,0.7071068,0.7071068,0,0)"
+ id="rect4"
+ style="opacity:1;fill:#80C080;fill-opacity:1" />
+</svg>
diff --git a/images/Bon.svg b/images/Bon.svg
new file mode 100644
index 0000000..db77081
--- /dev/null
+++ b/images/Bon.svg
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.0"
+ width="77.781746"
+ height="77.781746"
+ id="svg2">
+ <defs
+ id="defs7" />
+ <rect
+ width="55"
+ height="55"
+ x="-27.5"
+ y="27.5"
+ transform="matrix(0.7071068,-0.7071068,0.7071068,0.7071068,0,0)"
+ id="rect4"
+ style="opacity:1;fill:#00ff00;fill-opacity:1" />
+</svg>
diff --git a/images/Coff.svg b/images/Coff.svg
new file mode 100644
index 0000000..141b200
--- /dev/null
+++ b/images/Coff.svg
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.0"
+ width="77.781746"
+ height="77.781746"
+ id="svg2">
+ <defs
+ id="defs7" />
+ <rect
+ width="55"
+ height="55"
+ x="-27.5"
+ y="27.5"
+ transform="matrix(0.7071068,-0.7071068,0.7071068,0.7071068,0,0)"
+ id="rect4"
+ style="opacity:1;fill:#8080C0;fill-opacity:1" />
+</svg>
diff --git a/images/Con.svg b/images/Con.svg
new file mode 100644
index 0000000..1a84d2b
--- /dev/null
+++ b/images/Con.svg
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.0"
+ width="77.781746"
+ height="77.781746"
+ id="svg2">
+ <defs
+ id="defs7" />
+ <rect
+ width="55"
+ height="55"
+ x="-27.5"
+ y="27.5"
+ transform="matrix(0.7071068,-0.7071068,0.7071068,0.7071068,0,0)"
+ id="rect4"
+ style="opacity:1;fill:#0000ff;fill-opacity:1" />
+</svg>
diff --git a/images/Doff.svg b/images/Doff.svg
new file mode 100644
index 0000000..99f3a23
--- /dev/null
+++ b/images/Doff.svg
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.0"
+ width="77.781746"
+ height="77.781746"
+ id="svg2">
+ <defs
+ id="defs7" />
+ <rect
+ width="55"
+ height="55"
+ x="-27.5"
+ y="27.5"
+ transform="matrix(0.7071068,-0.7071068,0.7071068,0.7071068,0,0)"
+ id="rect4"
+ style="opacity:1;fill:#C0C080;fill-opacity:1" />
+</svg>
diff --git a/images/Don.svg b/images/Don.svg
new file mode 100644
index 0000000..dabbec8
--- /dev/null
+++ b/images/Don.svg
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ version="1.0"
+ width="77.781746"
+ height="77.781746"
+ id="svg2">
+ <defs
+ id="defs7" />
+ <rect
+ width="55"
+ height="55"
+ x="-27.5"
+ y="27.5"
+ transform="matrix(0.7071068,-0.7071068,0.7071068,0.7071068,0,0)"
+ id="rect4"
+ style="opacity:1;fill:#ffff00;fill-opacity:1" />
+</svg>
diff --git a/setup.py b/setup.py
new file mode 100755
index 0000000..bd1e319
--- /dev/null
+++ b/setup.py
@@ -0,0 +1,5 @@
+#!/usr/bin/env python
+from sugar.activity import bundlebuilder
+if __name__ == "__main__":
+ bundlebuilder.start()
+
diff --git a/sound.py b/sound.py
new file mode 100755
index 0000000..d937703
--- /dev/null
+++ b/sound.py
@@ -0,0 +1,268 @@
+#! /usr/bin/env python
+import os
+import sys
+from gettext import gettext as _
+
+dirs = ['./Sounds/']
+orchlines = []
+scorelines = []
+instrlist = []
+fnum = [100]
+
+"""XXX: This function seems to be broken. (CSA)
+def quit(self):
+ perf.Stop()
+ perf.Join()
+ cs.Reset()
+ cs = None
+"""
+def finddir():
+ for d in dirs:
+ if os.path.isdir(d):
+ return d
+
+def defAdsr(attack=0.01, decay=0.1, sustain=0.8, release=0.1):
+ """Define an ADSR envelope. fnum = defADSR(attack = [0.01], decay = [0.1], sustain = [0.8], release = [0.1])"""
+ att = int(2048 * attack)
+ dec = int(2048 * decay)
+ rel = int(2048 * release)
+ bal = 2048 - (att + dec + rel)
+ sus = min(1., sustain)
+
+ fnum[0] += 1
+ scorelines.append("f%ld 0 2048 7 0 %ld 1. %ld %f %ld %f %ld 0\n" % (fnum[0], att, dec, sus, bal, sus, rel))
+ return fnum[0]
+
+def defLineSegments(list=[0,10,1,10,0,10,1,10,0]):
+ """Define a breakpoints envelope. list=[0,10,1,10,0,10,1,10,0]. list begin with the start value of the function and is follow by any pair values (duration, value). The number of elements in the list should odd."""
+
+ totalLength = 0
+ newlist = []
+ for i in range(len(list)):
+ if (i % 2) == 1:
+ totalLength += list[i]
+
+ for i in range(len(list)):
+ if (i % 2) == 0: newlist.append(list[i])
+ else: newlist.append(int(2048 * (list[i] / float(totalLength))))
+
+ fnum[0] += 1
+ scorelines.append("f" + str(fnum[0]) + " 0 2048 -7 " + " ".join([str(n) for n in newlist]) + '\n')
+ return fnum[0]
+
+def defComplexWave(list=[1,0,0,.3,0,.2,0,0,.1]):
+ """Define a complex waveform to be read with 'playComplex' function. list=[1,0,0,.3,0,.2,0,0,.1]
+is a list of amplitude for succesive harmonics of a waveform"""
+ fnum[0] += 1
+ scorelines.append("f" + str(fnum[0]) + " 0 2048 10 " + " ".join([str(n) for n in list]) + '\n')
+ return fnum[0]
+
+def playSine( pitch=1000, amplitude=5000, duration=1, starttime=0, pitch_envelope='default', amplitude_envelope='default'):
+ """Play a sine wave (pitch = [1000], amplitude = [5000], duration = [1], starttime = [0], pitch_envelope=['default'], amplitude_envelope=['default'])"""
+ _play(pitch, amplitude, duration, starttime, pitch_envelope, amplitude_envelope, 1)
+
+def playSquare( pitch=1000, amplitude=5000, duration=1, starttime=0, pitch_envelope='default', amplitude_envelope='default'):
+ """Play a square wave (pitch = [1000], amplitude = [5000], duration = [1], starttime = [0], pitch_envelope=['default'], amplitude_envelope=['default'])"""
+ _play(pitch, amplitude, duration, starttime, pitch_envelope, amplitude_envelope, 2)
+
+def playSawtooth( pitch=1000, amplitude=5000, duration=1, starttime=0, pitch_envelope='default', amplitude_envelope='default'):
+ """Play a sawtooth wave (pitch = [1000], amplitude = [5000], duration = [1], starttime = [0], pitch_envelope=['default'], amplitude_envelope=['default'])"""
+ _play(pitch, amplitude, duration, starttime, pitch_envelope, amplitude_envelope, 3)
+
+def playComplex( pitch=1000, amplitude=5000, duration=1, starttime=0, pitch_envelope='default', amplitude_envelope='default', wave='default'):
+ """Play a complex wave (pitch = [1000], amplitude = [5000], duration = [1], starttime = [0], pitch_envelope = ['default'], amplitude_envelope, wave = ['default'] )"""
+ if wave == 'default': wavetable = 10
+ else: wavetable = wave
+ _play(pitch, amplitude, duration, starttime, pitch_envelope, amplitude_envelope, wavetable)
+
+def _play( pitch, amplitude, duration, starttime, pitch_envelope, amplitude_envelope, instrument):
+ if pitch_envelope == 'default': pitenv = 99
+ else: pitenv = pitch_envelope
+
+ if amplitude_envelope == 'default': ampenv = 100
+ else: ampenv = amplitude_envelope
+
+ if not 1 in instrlist:
+ orchlines.append("instr 1\n")
+ orchlines.append("kpitenv oscil 1, 1/p3, p6\n")
+ orchlines.append("aenv oscil 1, 1/p3, p7\n")
+ orchlines.append("asig oscil p5*aenv, p4*kpitenv, p8\n")
+ orchlines.append("out asig\n")
+ orchlines.append("endin\n\n")
+ instrlist.append(1)
+
+ scorelines.append("i1 %s %s %s %s %s %s %s\n" % (str(starttime), str(duration), str(pitch), str(amplitude), str(pitenv), str(ampenv), str(instrument)))
+
+def playFrequencyModulation( pitch=500, amplitude=5000, duration=2, starttime=0, carrier=1, modulator=.5, index=5, pitch_envelope='default', amplitude_envelope='default', carrier_envelope='default', modulator_envelope='default', index_envelope='default', wave='default'):
+ """Play a frequency modulation synthesis sound (pitch = [100], amplitude = [5000], duration = [2], starttime = [0], carrier = [1], modulator = [.5], index = [5], pitch_envelope = ['default'], amplitude_envelope = ['default'], carrier_envelope = ['default'], modulator_envelope = ['default'], index_envelope = ['default'], wave = ['default'] )"""
+ if pitch_envelope == 'default': pitenv = 99
+ else: pitenv = pitch_envelope
+
+ if amplitude_envelope == 'default': ampenv = 100
+ else: ampenv = amplitude_envelope
+
+ if carrier_envelope == 'default': carenv = 99
+ else: carenv = carrier_envelope
+
+ if modulator_envelope == 'default': modenv = 99
+ else: modenv = modulator_envelope
+
+ if index_envelope == 'default': indenv = 99
+ else: indenv = index_envelope
+
+ if wave == 'default': wavetable = 1
+ else: wavetable = wave
+
+ if not 7 in instrlist:
+ orchlines.append("instr 7\n")
+ orchlines.append("kpitenv oscil 1, 1/p3, p10\n")
+ orchlines.append("kenv oscil 1, 1/p3, p11\n")
+ orchlines.append("kcarenv oscil 1, 1/p3, p12\n")
+ orchlines.append("kmodenv oscil 1, 1/p3, p13\n")
+ orchlines.append("kindenv oscil 1, 1/p3, p14\n")
+ orchlines.append("asig foscil p5*kenv, p4*kpitenv, p6*kcarenv, p7*kmodenv, p8*kindenv, p9\n")
+ orchlines.append("out asig\n")
+ orchlines.append("endin\n\n")
+ instrlist.append(7)
+
+ scorelines.append("i7 %s %s %s %s %s %s %s %s %s %s %s %s %s\n" % (str(starttime), str(duration), str(pitch), str(amplitude), str(carrier), str(modulator), str(index), str(wavetable), str(pitenv), str(ampenv), str(carenv), str(modenv), str(indenv)))
+
+def playPluck( pitch=100, amplitude=5000, duration=2, starttime=0, pitch_envelope='default', amplitude_envelope='default'):
+ """Play a string physical modeling sound (pitch = [100], amplitude = [5000], duration = [2], starttime = [0], pitch_envelope = ['default'], amplitude_envelope )"""
+ if pitch_envelope == 'default': pitenv = 99
+ else: pitenv = pitch_envelope
+
+ if amplitude_envelope == 'default': ampenv = 100
+ else: ampenv = amplitude_envelope
+
+ if not 8 in instrlist:
+ orchlines.append("instr 8\n")
+ orchlines.append("kpitenv oscil 1, 1/p3, p6\n")
+ orchlines.append("kenv oscil 1, 1/p3, p7\n")
+ orchlines.append("asig pluck p5*kenv, p4*kpitenv, 40, 0, 6\n")
+ orchlines.append("asig butterlp asig, 4000\n")
+ orchlines.append("out asig\n")
+ orchlines.append("endin\n\n")
+ instrlist.append(8)
+
+ scorelines.append("i8 %s %s %s %s %s %s\n" % (str(starttime), str(duration), str(pitch), str(amplitude), str(pitenv), str(ampenv)))
+
+def playWave(sound='horse', pitch=1, amplitude=1, loop=False, duration=1, starttime=0, pitch_envelope='default', amplitude_envelope='default'):
+ """Play a wave file (sound = ['horse'], pitch = [1], amplitude = [1], loop = [False], duration = [1], starttime = [0], pitch_envelope=['default'], amplitude_envelope=['default'])"""
+
+ if '/' in sound:
+ fullname = sound
+ else:
+ fullname = finddir() + str(sound)
+
+ if loop == False: lp = 0
+ else: lp = 1
+
+ if pitch_envelope == 'default': pitenv = 99
+ else: pitenv = pitch_envelope
+
+ if amplitude_envelope == 'default': ampenv = 100
+ else: ampenv = amplitude_envelope
+
+ # orchlines = []
+ if not 9 in instrlist:
+ orchlines.append("instr 9\n")
+ orchlines.append("kpitenv oscil 1, 1/p3, p8\n")
+ orchlines.append("aenv oscil 1, 1/p3, p9\n")
+ orchlines.append("asig diskin p4, p5*kpitenv, 0, p7\n")
+ orchlines.append("out asig*p6*aenv\n")
+ orchlines.append("endin\n\n")
+ instrlist.append(9)
+
+ # scorelines = []
+ scorelines.append('i9 %f %f "%s" %s %s %s %s %s\n' % (float(starttime), float(duration), fullname, str(pitch), str(amplitude), str(lp), str(pitenv), str(ampenv)))
+ print scorelines
+
+def getSoundList():
+ list = finddir()
+ if list == None:
+ print _("Please install TamTamEdit's sound library.")
+ sys.exit(0)
+ return sorted(os.listdir(list))
+
+temp_path=None
+def audioOut(file=None):
+ """Compile a .csd file and start csound to run it. If a string is given as argument, it write a wave file on disk instead of sending sound to hp. (file = [None])"""
+ global temp_path
+ import os
+ if temp_path is None:
+ from sugar import env
+ import os.path
+ try:
+ temp_path = os.path.join(activity.get_activity_root(), "instance")
+ except:
+ # Early versions of Sugar (e.g., 656) didn't support
+ # get_activity_root()
+ temp_path = os.path.join( \
+ os.environ['HOME'], \
+ ".sugar/default/org.sugarlabs.ErikosActivity/instance")
+ path = temp_path
+ csd = open(path + "/temp.csd", "w")
+ csd.write("<CsoundSynthesizer>\n\n")
+ csd.write("<CsOptions>\n")
+ if file == None:
+ csd.write("-+rtaudio=alsa -odevaudio -m0 -d -b256 -B512\n")
+ else:
+ file = path + "/" + str(file) + ".wav"
+ csd.write("-+rtaudio=alsa -o%s -m0 -W -d -b256 -B512\n" % file)
+ csd.write("</CsOptions>\n\n")
+ csd.write("<CsInstruments>\n\n")
+ csd.write("sr=16000\n")
+ csd.write("ksmps=50\n")
+ csd.write("nchnls=1\n\n")
+ for line in orchlines:
+ csd.write(line)
+ csd.write("\n</CsInstruments>\n\n")
+ csd.write("<CsScore>\n\n")
+ csd.write("f1 0 2048 10 1\n")
+ csd.write("f2 0 2048 10 1 0 .33 0 .2 0 .143 0 .111\n")
+ csd.write("f3 0 2048 10 1 .5 .33 .25 .2 .175 .143 .125 .111 .1\n")
+ csd.write("f10 0 2048 10 1 0 0 .3 0 .2 0 0 .1\n")
+ csd.write("f99 0 2048 7 1 2048 1\n")
+ csd.write("f100 0 2048 7 0. 10 1. 1900 1. 132 0.\n")
+ for line in scorelines:
+ csd.write(line)
+ csd.write("e\n")
+ csd.write("\n</CsScore>\n")
+ csd.write("\n</CsoundSynthesizer>")
+ csd.close()
+
+ os.system('csound ' + path + '/temp.csd >/dev/null 2>/dev/null')
+ # os.system('csound ' + path + '/temp.csd')
+
+def audioWrite(file):
+ """Compile a .csd file"""
+
+ csd = open(file, "w")
+ csd.write("<CsoundSynthesizer>\n\n")
+ csd.write("<CsOptions>\n")
+ csd.write("-+rtaudio=alsa -odevaudio -m0 -d -b256 -B512\n")
+ csd.write("</CsOptions>\n\n")
+ csd.write("<CsInstruments>\n\n")
+ csd.write("sr=16000\n")
+ csd.write("ksmps=50\n")
+ csd.write("nchnls=1\n\n")
+ # csd.write(orchlines.pop())
+ for line in orchlines:
+ csd.write(line)
+ csd.write("\n</CsInstruments>\n\n")
+ csd.write("<CsScore>\n\n")
+ csd.write("f1 0 2048 10 1\n")
+ csd.write("f2 0 2048 10 1 0 .33 0 .2 0 .143 0 .111\n")
+ csd.write("f3 0 2048 10 1 .5 .33 .25 .2 .175 .143 .125 .111 .1\n")
+ csd.write("f10 0 2048 10 1 0 0 .3 0 .2 0 0 .1\n")
+ csd.write("f99 0 2048 7 1 2048 1\n")
+ csd.write("f100 0 2048 7 0. 10 1. 1900 1. 132 0.\n")
+ csd.write(scorelines.pop())
+ # for line in scorelines:
+ # csd.write(line)
+ csd.write("e\n")
+ csd.write("\n</CsScore>\n")
+ csd.write("\n</CsoundSynthesizer>")
+ csd.close()
+
diff --git a/sprite_factory.py b/sprite_factory.py
new file mode 100644
index 0000000..dd19ebc
--- /dev/null
+++ b/sprite_factory.py
@@ -0,0 +1,51 @@
+#Copyright (c) 2009, Walter Bender
+
+#Permission is hereby granted, free of charge, to any person obtaining a copy
+#of this software and associated documentation files (the "Software"), to deal
+#in the Software without restriction, including without limitation the rights
+#to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+#copies of the Software, and to permit persons to whom the Software is
+#furnished to do so, subject to the following conditions:
+
+#The above copyright notice and this permission notice shall be included in
+#all copies or substantial portions of the Software.
+
+#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+#AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+#LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+#OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+#THE SOFTWARE.
+
+import pygtk
+pygtk.require('2.0')
+import gtk
+import gobject
+import os.path
+
+from sprites import *
+
+#
+# class for defining individual cards
+#
+class Sprite:
+ def __init__(self, tw, name, x, y, w, h, name_label=False):
+ # create sprite from svg file
+ self.spr = sprNew(tw, x, y,
+ self.load_image(tw.path,name,w,h))
+ if name_label is True:
+ self.spr.label = name
+ else:
+ self.spr.label = ""
+
+ def draw_slider(self, layer=1000):
+ setlayer(self.spr, layer)
+ draw(self.spr)
+
+ def load_image(self, file, name, w, h):
+ return gtk.gdk.pixbuf_new_from_file_at_size(os.path.join(file +
+ name +
+ '.svg'),
+ w, h)
+
diff --git a/sprites.py b/sprites.py
new file mode 100644
index 0000000..2d11d6c
--- /dev/null
+++ b/sprites.py
@@ -0,0 +1,153 @@
+# -*- coding: utf-8 -*-
+
+#Copyright (c) 2007-8, Playful Invention Company.
+#Copyright (c) 2008-9, Walter Bender
+
+#Permission is hereby granted, free of charge, to any person obtaining a copy
+#of this software and associated documentation files (the "Software"), to deal
+#in the Software without restriction, including without limitation the rights
+#to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+#copies of the Software, and to permit persons to whom the Software is
+#furnished to do so, subject to the following conditions:
+
+#The above copyright notice and this permission notice shall be included in
+#all copies or substantial portions of the Software.
+
+#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+#AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+#LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+#OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+#THE SOFTWARE.
+
+import pygtk
+pygtk.require('2.0')
+import gtk
+import gobject
+import pango
+class taSprite: pass
+
+def findsprite(tw,pos):
+ list = tw.sprites[:]
+ list.reverse()
+ for s in list:
+ if hit(s,pos): return s
+ return None
+
+def redrawsprites(tw):
+ for s in tw.sprites: draw(s)
+
+def sprNew(tw,x,y,image,altlabel=False):
+ spr = taSprite()
+ spr.tw, spr.x, spr.y = tw,x,y
+ setimage(spr,image)
+ spr.label = None
+ spr.ds_id = None
+ if altlabel:
+ spr.draw_label = draw_label2
+ else: spr.draw_label = draw_label1
+ return spr
+
+def setimage(spr,image):
+ spr.image = image
+ if isinstance(image,gtk.gdk.Pixbuf):
+ spr.width = image.get_width()
+ spr.height = image.get_height()
+ else: spr.width,spr.height=image.get_size()
+
+def move(spr,pos):
+ inval(spr)
+ spr.x,spr.y = pos
+ inval(spr)
+
+def setshape(spr,image):
+ inval(spr)
+ setimage(spr,image)
+ inval(spr)
+
+def setshapex(spr):
+ inval(spr)
+
+def setlayer(spr, layer):
+ sprites = spr.tw.sprites
+ if spr in sprites: sprites.remove(spr)
+ spr.layer = layer
+ for i in range(len(sprites)):
+ if layer < sprites[i].layer:
+ sprites.insert(i, spr)
+ inval(spr)
+ return
+ sprites.append(spr)
+ inval(spr)
+
+def hide(spr):
+ if spr not in spr.tw.sprites: return
+ inval(spr)
+ spr.tw.sprites.remove(spr)
+
+def setlabel(spr,label):
+ spr.label = label
+ inval(spr)
+
+def inval(spr):
+ spr.tw.area.invalidate_rect(gtk.gdk.Rectangle(spr.x,spr.y,spr.width, \
+ spr.height), False)
+
+def draw(spr):
+ if isinstance(spr.image,gtk.gdk.Pixbuf):
+ spr.tw.area.draw_pixbuf(spr.tw.gc, spr.image, 0, 0, spr.x, spr.y)
+ else:
+ spr.tw.area.draw_drawable(spr.tw.gc,spr.image,0,0,spr.x,spr.y,-1,-1)
+ if spr.label!=None:
+ if hasattr(spr, 'proto') and hasattr(spr.proto, 'name'):
+ name = spr.proto.name
+ else:
+ name = ""
+ spr.draw_label(spr,str(spr.label))
+
+def hit(spr,pos):
+ x,y = pos
+ if x<spr.x: return False
+ if x>spr.x+spr.width: return False
+ if y<spr.y: return False
+ if y>spr.y+spr.height: return False
+ return True
+
+def draw_label(spr, label, myscale, center_flag="False", vert_pos="middle"):
+ fd = pango.FontDescription('Sans')
+ fd.set_size(int(myscale*spr.tw.scale*pango.SCALE))
+ if type(label) == str or type(label) == unicode:
+ mylabel = label.replace("\0"," ")
+ l = len(mylabel)
+ pl = spr.tw.canvas.create_pango_layout(mylabel)
+ pl.set_font_description(fd)
+ if center_flag:
+ swidth = pl.get_size()[0]/pango.SCALE
+ centerx = spr.x+spr.width/2
+ x = int(centerx-swidth/2)
+ else:
+ x = spr.x+4 # small offset from left edge
+ sheight = pl.get_size()[1]/pango.SCALE
+ centery = spr.y+spr.height/2
+ if vert_pos == "middle":
+ y = int(centery-sheight/2)
+ elif vert_pos == "top":
+ y = int(sheight/2)
+ elif vert_pos == "bottom":
+ y = int(spr.height-sheight)
+ spr.tw.gc.set_foreground(spr.tw.msgcolor)
+ spr.tw.area.draw_layout(spr.tw.gc, x, y, pl)
+ else:
+ print type(label)
+
+# used for sliders
+def draw_label1(spr, label):
+ draw_label(spr, label, 12, True, "middle")
+
+def draw_label2(spr, label):
+ draw_label(spr, str(label), 14, True, "top")
+
+def draw_label3(spr, label):
+ draw_label(spr, str(label), 14, True, "bottom")
+
diff --git a/window.py b/window.py
new file mode 100644
index 0000000..787f0e9
--- /dev/null
+++ b/window.py
@@ -0,0 +1,223 @@
+# -*- coding: utf-8 -*-
+#Copyright (c) 2009, Walter Bender
+
+#Permission is hereby granted, free of charge, to any person obtaining a copy
+#of this software and associated documentation files (the "Software"), to deal
+#in the Software without restriction, including without limitation the rights
+#to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+#copies of the Software, and to permit persons to whom the Software is
+#furnished to do so, subject to the following conditions:
+
+#The above copyright notice and this permission notice shall be included in
+#all copies or substantial portions of the Software.
+
+#THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+#IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+#FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+#AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+#LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+#OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+#THE SOFTWARE.
+
+from constants import *
+from time import *
+import pygtk
+pygtk.require('2.0')
+import gtk
+import gobject
+from sound import playWave, audioWrite
+import os
+
+from gettext import gettext as _
+import math
+
+try:
+ from sugar.graphics import style
+ GRID_CELL_SIZE = style.GRID_CELL_SIZE
+except:
+ GRID_CELL_SIZE = 0
+
+from sprite_factory import *
+
+class srWindow: pass
+
+#
+# handle launch from both within and without of Sugar environment
+#
+def new_window(canvas, path, parent=None):
+ tw = srWindow()
+ tw.path = path
+ tw.activity = parent
+
+ # starting from command line
+ # we have to do all the work that was done in CardSortActivity.py
+ if parent is None:
+ tw.sugar = False
+ tw.canvas = canvas
+
+ # starting from Sugar
+ else:
+ tw.sugar = True
+ tw.canvas = canvas
+ parent.show_all()
+
+ tw.canvas.set_flags(gtk.CAN_FOCUS)
+ tw.canvas.add_events(gtk.gdk.BUTTON_PRESS_MASK)
+ tw.canvas.add_events(gtk.gdk.BUTTON_RELEASE_MASK)
+ tw.canvas.add_events(gtk.gdk.POINTER_MOTION_MASK)
+ tw.canvas.connect("expose-event", _expose_cb, tw)
+ tw.canvas.connect("button-press-event", _button_press_cb, tw)
+ tw.canvas.connect("button-release-event", _button_release_cb, tw)
+ tw.canvas.connect("motion-notify-event", _mouse_move_cb, tw)
+ tw.width = gtk.gdk.screen_width()
+ tw.height = gtk.gdk.screen_height()-GRID_CELL_SIZE
+ tw.area = tw.canvas.window
+ tw.gc = tw.area.new_gc()
+ tw.cm = tw.gc.get_colormap()
+ tw.msgcolor = tw.cm.alloc_color('black')
+ tw.sprites = []
+ tw.scale = 1
+ tw.level = 0
+ tw.seq = [[0,1],[0,1,0,1],[0,1,2,3,0,1,2,3],[0,1,2,3,0,1,2,3,0,1,2,3]]
+ tw.counter = 0
+
+ # Open the sliders
+ tw.buttons_off = [Sprite(tw,"Aoff",tw.width/2-W/2,H/2,W/2,H/2),\
+ Sprite(tw,"Boff",tw.width/2-W,H,W/2,H/2),\
+ Sprite(tw,"Doff",tw.width/2,H,W/2,H/2),\
+ Sprite(tw,"Coff",tw.width/2-W/2,H+H/2,W/2,H/2)]
+ tw.buttons_on = [Sprite(tw,"Aon",tw.width/2-W/2,H/2,W/2,H/2),\
+ Sprite(tw,"Bon",tw.width/2-W,H,W/2,H/2),\
+ Sprite(tw,"Don",tw.width/2,H,W/2,H/2),\
+ Sprite(tw,"Con",tw.width/2-W/2,H+H/2,W/2,H/2)]
+ tw.sounds = ['dog','sheep','cat','bird']
+ tw.sound_files = []
+
+ for i in tw.sounds:
+ playWave(i)
+ path = tw.activity.get_activity_root() + "/instance/" + i + ".csd"
+ tw.sound_files.append(path)
+ audioWrite(path)
+
+ _all_off(tw)
+
+ # Start calculating
+ tw.press = None
+ tw.dragpos = 0
+ return tw
+
+#
+# Play
+#
+def _play_the_game(tw):
+ _all_on(tw)
+ for i in tw.buttons_on:
+ hide(i.spr)
+ for i in tw.seq[tw.level]:
+ draw(tw.buttons_on[i].spr)
+ inval(tw.buttons_on[i].spr)
+ # need to learn how timeouts really work...
+ print tw.sound_files[i]
+ os.system('csound ' + tw.sound_files[i] + \
+ '/temp.csd >/dev/null 2>/dev/null')
+ sleep(1)
+ gobject.timeout_add(1000,hide,tw.buttons_on[i].spr)
+ # hide(tw.buttons_on[i].spr)
+ tw.counter = 0
+
+#
+# Button press
+#
+def _button_press_cb(win, event, tw):
+ win.grab_focus()
+ x, y = map(int, event.get_coords())
+ tw.dragpos = x
+ spr = findsprite(tw,(x,y))
+ tw.press = spr
+ return True
+
+#
+# Mouse move
+#
+def _mouse_move_cb(win, event, tw):
+ if tw.press is None:
+ tw.dragpos = 0
+ return True
+
+ win.grab_focus()
+ x, y = map(int, event.get_coords())
+
+ dx = x-tw.dragpos
+
+ # reset drag position
+ tw.dragpos = x
+
+#
+# Button release
+#
+def _button_release_cb(win, event, tw):
+ if tw.press == None:
+ return True
+ for i in range (0,4):
+ if tw.press == tw.buttons_off[i].spr:
+ draw(tw.buttons_on[i].spr)
+ inval(tw.buttons_on[i].spr)
+ # gobject.timeout_add(1000,hide,tw.buttons_on[i].spr)
+ print tw.sound_files[i]
+ os.system('csound ' + tw.sound_files[i])
+ # os.system('csound ' + tw.sound_files[i] + \
+ # '/temp.csd >/dev/null 2>/dev/null')
+ sleep(1)
+ hide(tw.buttons_on[i].spr)
+ if tw.seq[tw.level][tw.counter] == i: # correct reponse
+ """
+ print str(tw.counter) + ": made a match between " + \
+ str(i) + " and " + str(tw.seq[tw.counter])
+ """
+ tw.counter += 1
+ if tw.counter == len(tw.seq[tw.level]):
+ _all_on(tw)
+ tw.counter = 0
+ tw.level += 1
+ if tw.level == len(tw.seq):
+ tw.level = 0
+ sleep(1)
+ _all_off(tw)
+ else: # incorrect response
+ """
+ print "mismatch: " + str(i) + " is not " + \
+ str(tw.seq[tw.counter])
+ """
+
+ """
+ _all_gone(tw)
+ sleep(1)
+ _all_off(tw)
+ """
+ tw.counter = 0
+ tw.press = None
+
+def _all_on(tw):
+ for i in tw.buttons_off:
+ i.draw_slider()
+ for i in tw.buttons_on:
+ i.draw_slider()
+
+def _all_off(tw):
+ for i in tw.buttons_off:
+ i.draw_slider()
+ for i in tw.buttons_on:
+ hide(i.spr)
+
+def _all_gone(tw):
+ for i in tw.buttons_off:
+ hide(i.spr)
+ for i in tw.buttons_on:
+ hide(i.spr)
+
+def _expose_cb(win, event, tw):
+ redrawsprites(tw)
+ return True
+
+def _destroy_cb(win, event, tw):
+ gtk.main_quit()