Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Playmidi.activity/csndsugui.py54
-rw-r--r--Playmidi.activity/playmidi.py19
-rw-r--r--Playmidi.activity/setup.py2
-rwxr-xr-xSynth.activity/csndsugui.py54
-rw-r--r--Waves.activity/csndsugui.py54
-rwxr-xr-xcsndsugui.py54
-rwxr-xr-xplayfile.activity/csndsugui.py54
7 files changed, 271 insertions, 20 deletions
diff --git a/Playmidi.activity/csndsugui.py b/Playmidi.activity/csndsugui.py
index 6ecf12e..5d60fcc 100644
--- a/Playmidi.activity/csndsugui.py
+++ b/Playmidi.activity/csndsugui.py
@@ -31,7 +31,7 @@
import pygtk
pygtk.require('2.0')
from sugar.activity import activity
-import gtk
+import gtk, gobject
import sys
import csnd
import math
@@ -349,7 +349,29 @@ class BasicGUI:
label.show()
self.set_channel(title, init)
return slider
-
+
+ def numdisplay(self,box,title="",init=0.0,label=""):
+ self.ndispwids = self.ndispwids + 1
+ entry = gtk.Entry()
+ if label == "": name = title
+ else: name = label
+ entry.set_text("%f" % init)
+ label = gtk.Label(name)
+ box.pack_start(entry, False, False, 2)
+ box.pack_start(label, False, False, 2)
+ self.ndisps.append([entry,title,init])
+ entry.show()
+ label.show()
+ self.set_channel(title,init)
+ return entry
+
+ def setnumdisp(self,title,val):
+ for i in self.ndisps:
+ if i[1] == title:
+ i[2] = val
+ i[0].set_text("%f" % val)
+ self.set_channel(title, val)
+
def spin(self,init, start, end, step, page, box, accel=0,title="",label=""):
"""Creates a spin button
init: initial value
@@ -576,6 +598,8 @@ class BasicGUI:
self.mbuttons = []
self.mbutts = 0
self.boxes = []
+ self.ndisps = []
+ self.ndispwids = 0
self.connected = False
self.channel_widgets = [self.sliders, self.spins, self.buttons]
self.filenames = dict()
@@ -642,6 +666,7 @@ class CsoundGUI(BasicGUI):
self.replay = self.on
self.logger.debug("focus_out and stopping")
self.reset()
+ return 1
def play(self):
"""Starts a performance. """
@@ -734,6 +759,29 @@ class CsoundGUI(BasicGUI):
self.reset()
sys.exit(0)
+ def tcallback(self,cbdata):
+ if self.stopcb: return False
+ if self.on and self.sync:
+ self.tcb(cbdata)
+ return True
+
+ def set_timer(self,time,cb,cbdata,sync=True):
+ """Sets a timer callback, called at time intervals.
+ Sync=True makes it start/stop with Csound performance"""
+ if(self.stopcb == True):
+ self.sync = sync
+ self.tcb = cb
+ self.stopcb = False
+ gobject.timeout_add(time,self.tcallback,cbdata)
+
+ def stop_timer(self):
+ """Stops the timer"""
+ self.stopcb = True
+
+ def score_time(self):
+ """Returns the current score time"""
+ return self.csound.GetScoreTime()
+
def __init__(self,act,colour=(-1,-1,-1),vert=True):
"""constructor
act: activity object
@@ -749,4 +797,4 @@ class CsoundGUI(BasicGUI):
self.name = "0"
self.arglist = None
self.replay = False
-
+ self.stopcb = True
diff --git a/Playmidi.activity/playmidi.py b/Playmidi.activity/playmidi.py
index ccbbea2..e0180ab 100644
--- a/Playmidi.activity/playmidi.py
+++ b/Playmidi.activity/playmidi.py
@@ -4,7 +4,7 @@
import csndsugui
import csnd
from sugar.activity import activity
-import gtk
+import gtk, gobject
class Playmidi(activity.Activity):
@@ -16,13 +16,22 @@ class Playmidi(activity.Activity):
white = (0xFFFF, 0xFFFF, 0xFFFF)
win = csndsugui.CsoundGUI(self, bg)
- win.text("Playing Sounds",colour=white)
- bbox = win.box(False)
+ win.text("Playing MIDI",colour=white)
+ hbox = win.box(False, padding=400)
+ vbox = win.box(True, hbox, padding=400)
+ self.ndisp = win.numdisplay(vbox,"time",0.0)
+ bbox = win.box(False,vbox)
win.filechooser(bbox,"midifile")
self.p = None
self.but = win.cbbutton(bbox, self.fcall, "load")
self.w = win
self.b = bbox
+
+
+ def time_callback(self,data):
+ self.time = self.w.score_time()
+ self.w.setnumdisp("time", self.time)
+ return True
def fcall(self, widget):
if self.p == None:
@@ -30,9 +39,11 @@ class Playmidi(activity.Activity):
self.p = self.w.button(self.b,"play")
self.w.button(self.b,"pause")
self.but.set_label("rewind/reload")
+ self.time = self.w.score_time()
+ self.w.set_timer(100, self.time_callback, self)
else:
self.w.reset()
self.w.compile("gm.csd", ["-F%s" % self.w.filenames["midifile"]])
-
+ self.time = self.w.score_time()
diff --git a/Playmidi.activity/setup.py b/Playmidi.activity/setup.py
index 2e21901..888f9d0 100644
--- a/Playmidi.activity/setup.py
+++ b/Playmidi.activity/setup.py
@@ -1,5 +1,5 @@
#!/usr/bin/env python
from sugar.activity import bundlebuilder
if __name__ == "__main__":
- bundlebuilder.start("Play files")
+ bundlebuilder.start("Play MIDI")
diff --git a/Synth.activity/csndsugui.py b/Synth.activity/csndsugui.py
index 6ecf12e..5d60fcc 100755
--- a/Synth.activity/csndsugui.py
+++ b/Synth.activity/csndsugui.py
@@ -31,7 +31,7 @@
import pygtk
pygtk.require('2.0')
from sugar.activity import activity
-import gtk
+import gtk, gobject
import sys
import csnd
import math
@@ -349,7 +349,29 @@ class BasicGUI:
label.show()
self.set_channel(title, init)
return slider
-
+
+ def numdisplay(self,box,title="",init=0.0,label=""):
+ self.ndispwids = self.ndispwids + 1
+ entry = gtk.Entry()
+ if label == "": name = title
+ else: name = label
+ entry.set_text("%f" % init)
+ label = gtk.Label(name)
+ box.pack_start(entry, False, False, 2)
+ box.pack_start(label, False, False, 2)
+ self.ndisps.append([entry,title,init])
+ entry.show()
+ label.show()
+ self.set_channel(title,init)
+ return entry
+
+ def setnumdisp(self,title,val):
+ for i in self.ndisps:
+ if i[1] == title:
+ i[2] = val
+ i[0].set_text("%f" % val)
+ self.set_channel(title, val)
+
def spin(self,init, start, end, step, page, box, accel=0,title="",label=""):
"""Creates a spin button
init: initial value
@@ -576,6 +598,8 @@ class BasicGUI:
self.mbuttons = []
self.mbutts = 0
self.boxes = []
+ self.ndisps = []
+ self.ndispwids = 0
self.connected = False
self.channel_widgets = [self.sliders, self.spins, self.buttons]
self.filenames = dict()
@@ -642,6 +666,7 @@ class CsoundGUI(BasicGUI):
self.replay = self.on
self.logger.debug("focus_out and stopping")
self.reset()
+ return 1
def play(self):
"""Starts a performance. """
@@ -734,6 +759,29 @@ class CsoundGUI(BasicGUI):
self.reset()
sys.exit(0)
+ def tcallback(self,cbdata):
+ if self.stopcb: return False
+ if self.on and self.sync:
+ self.tcb(cbdata)
+ return True
+
+ def set_timer(self,time,cb,cbdata,sync=True):
+ """Sets a timer callback, called at time intervals.
+ Sync=True makes it start/stop with Csound performance"""
+ if(self.stopcb == True):
+ self.sync = sync
+ self.tcb = cb
+ self.stopcb = False
+ gobject.timeout_add(time,self.tcallback,cbdata)
+
+ def stop_timer(self):
+ """Stops the timer"""
+ self.stopcb = True
+
+ def score_time(self):
+ """Returns the current score time"""
+ return self.csound.GetScoreTime()
+
def __init__(self,act,colour=(-1,-1,-1),vert=True):
"""constructor
act: activity object
@@ -749,4 +797,4 @@ class CsoundGUI(BasicGUI):
self.name = "0"
self.arglist = None
self.replay = False
-
+ self.stopcb = True
diff --git a/Waves.activity/csndsugui.py b/Waves.activity/csndsugui.py
index 6ecf12e..5d60fcc 100644
--- a/Waves.activity/csndsugui.py
+++ b/Waves.activity/csndsugui.py
@@ -31,7 +31,7 @@
import pygtk
pygtk.require('2.0')
from sugar.activity import activity
-import gtk
+import gtk, gobject
import sys
import csnd
import math
@@ -349,7 +349,29 @@ class BasicGUI:
label.show()
self.set_channel(title, init)
return slider
-
+
+ def numdisplay(self,box,title="",init=0.0,label=""):
+ self.ndispwids = self.ndispwids + 1
+ entry = gtk.Entry()
+ if label == "": name = title
+ else: name = label
+ entry.set_text("%f" % init)
+ label = gtk.Label(name)
+ box.pack_start(entry, False, False, 2)
+ box.pack_start(label, False, False, 2)
+ self.ndisps.append([entry,title,init])
+ entry.show()
+ label.show()
+ self.set_channel(title,init)
+ return entry
+
+ def setnumdisp(self,title,val):
+ for i in self.ndisps:
+ if i[1] == title:
+ i[2] = val
+ i[0].set_text("%f" % val)
+ self.set_channel(title, val)
+
def spin(self,init, start, end, step, page, box, accel=0,title="",label=""):
"""Creates a spin button
init: initial value
@@ -576,6 +598,8 @@ class BasicGUI:
self.mbuttons = []
self.mbutts = 0
self.boxes = []
+ self.ndisps = []
+ self.ndispwids = 0
self.connected = False
self.channel_widgets = [self.sliders, self.spins, self.buttons]
self.filenames = dict()
@@ -642,6 +666,7 @@ class CsoundGUI(BasicGUI):
self.replay = self.on
self.logger.debug("focus_out and stopping")
self.reset()
+ return 1
def play(self):
"""Starts a performance. """
@@ -734,6 +759,29 @@ class CsoundGUI(BasicGUI):
self.reset()
sys.exit(0)
+ def tcallback(self,cbdata):
+ if self.stopcb: return False
+ if self.on and self.sync:
+ self.tcb(cbdata)
+ return True
+
+ def set_timer(self,time,cb,cbdata,sync=True):
+ """Sets a timer callback, called at time intervals.
+ Sync=True makes it start/stop with Csound performance"""
+ if(self.stopcb == True):
+ self.sync = sync
+ self.tcb = cb
+ self.stopcb = False
+ gobject.timeout_add(time,self.tcallback,cbdata)
+
+ def stop_timer(self):
+ """Stops the timer"""
+ self.stopcb = True
+
+ def score_time(self):
+ """Returns the current score time"""
+ return self.csound.GetScoreTime()
+
def __init__(self,act,colour=(-1,-1,-1),vert=True):
"""constructor
act: activity object
@@ -749,4 +797,4 @@ class CsoundGUI(BasicGUI):
self.name = "0"
self.arglist = None
self.replay = False
-
+ self.stopcb = True
diff --git a/csndsugui.py b/csndsugui.py
index 6ecf12e..5d60fcc 100755
--- a/csndsugui.py
+++ b/csndsugui.py
@@ -31,7 +31,7 @@
import pygtk
pygtk.require('2.0')
from sugar.activity import activity
-import gtk
+import gtk, gobject
import sys
import csnd
import math
@@ -349,7 +349,29 @@ class BasicGUI:
label.show()
self.set_channel(title, init)
return slider
-
+
+ def numdisplay(self,box,title="",init=0.0,label=""):
+ self.ndispwids = self.ndispwids + 1
+ entry = gtk.Entry()
+ if label == "": name = title
+ else: name = label
+ entry.set_text("%f" % init)
+ label = gtk.Label(name)
+ box.pack_start(entry, False, False, 2)
+ box.pack_start(label, False, False, 2)
+ self.ndisps.append([entry,title,init])
+ entry.show()
+ label.show()
+ self.set_channel(title,init)
+ return entry
+
+ def setnumdisp(self,title,val):
+ for i in self.ndisps:
+ if i[1] == title:
+ i[2] = val
+ i[0].set_text("%f" % val)
+ self.set_channel(title, val)
+
def spin(self,init, start, end, step, page, box, accel=0,title="",label=""):
"""Creates a spin button
init: initial value
@@ -576,6 +598,8 @@ class BasicGUI:
self.mbuttons = []
self.mbutts = 0
self.boxes = []
+ self.ndisps = []
+ self.ndispwids = 0
self.connected = False
self.channel_widgets = [self.sliders, self.spins, self.buttons]
self.filenames = dict()
@@ -642,6 +666,7 @@ class CsoundGUI(BasicGUI):
self.replay = self.on
self.logger.debug("focus_out and stopping")
self.reset()
+ return 1
def play(self):
"""Starts a performance. """
@@ -734,6 +759,29 @@ class CsoundGUI(BasicGUI):
self.reset()
sys.exit(0)
+ def tcallback(self,cbdata):
+ if self.stopcb: return False
+ if self.on and self.sync:
+ self.tcb(cbdata)
+ return True
+
+ def set_timer(self,time,cb,cbdata,sync=True):
+ """Sets a timer callback, called at time intervals.
+ Sync=True makes it start/stop with Csound performance"""
+ if(self.stopcb == True):
+ self.sync = sync
+ self.tcb = cb
+ self.stopcb = False
+ gobject.timeout_add(time,self.tcallback,cbdata)
+
+ def stop_timer(self):
+ """Stops the timer"""
+ self.stopcb = True
+
+ def score_time(self):
+ """Returns the current score time"""
+ return self.csound.GetScoreTime()
+
def __init__(self,act,colour=(-1,-1,-1),vert=True):
"""constructor
act: activity object
@@ -749,4 +797,4 @@ class CsoundGUI(BasicGUI):
self.name = "0"
self.arglist = None
self.replay = False
-
+ self.stopcb = True
diff --git a/playfile.activity/csndsugui.py b/playfile.activity/csndsugui.py
index 6ecf12e..5d60fcc 100755
--- a/playfile.activity/csndsugui.py
+++ b/playfile.activity/csndsugui.py
@@ -31,7 +31,7 @@
import pygtk
pygtk.require('2.0')
from sugar.activity import activity
-import gtk
+import gtk, gobject
import sys
import csnd
import math
@@ -349,7 +349,29 @@ class BasicGUI:
label.show()
self.set_channel(title, init)
return slider
-
+
+ def numdisplay(self,box,title="",init=0.0,label=""):
+ self.ndispwids = self.ndispwids + 1
+ entry = gtk.Entry()
+ if label == "": name = title
+ else: name = label
+ entry.set_text("%f" % init)
+ label = gtk.Label(name)
+ box.pack_start(entry, False, False, 2)
+ box.pack_start(label, False, False, 2)
+ self.ndisps.append([entry,title,init])
+ entry.show()
+ label.show()
+ self.set_channel(title,init)
+ return entry
+
+ def setnumdisp(self,title,val):
+ for i in self.ndisps:
+ if i[1] == title:
+ i[2] = val
+ i[0].set_text("%f" % val)
+ self.set_channel(title, val)
+
def spin(self,init, start, end, step, page, box, accel=0,title="",label=""):
"""Creates a spin button
init: initial value
@@ -576,6 +598,8 @@ class BasicGUI:
self.mbuttons = []
self.mbutts = 0
self.boxes = []
+ self.ndisps = []
+ self.ndispwids = 0
self.connected = False
self.channel_widgets = [self.sliders, self.spins, self.buttons]
self.filenames = dict()
@@ -642,6 +666,7 @@ class CsoundGUI(BasicGUI):
self.replay = self.on
self.logger.debug("focus_out and stopping")
self.reset()
+ return 1
def play(self):
"""Starts a performance. """
@@ -734,6 +759,29 @@ class CsoundGUI(BasicGUI):
self.reset()
sys.exit(0)
+ def tcallback(self,cbdata):
+ if self.stopcb: return False
+ if self.on and self.sync:
+ self.tcb(cbdata)
+ return True
+
+ def set_timer(self,time,cb,cbdata,sync=True):
+ """Sets a timer callback, called at time intervals.
+ Sync=True makes it start/stop with Csound performance"""
+ if(self.stopcb == True):
+ self.sync = sync
+ self.tcb = cb
+ self.stopcb = False
+ gobject.timeout_add(time,self.tcallback,cbdata)
+
+ def stop_timer(self):
+ """Stops the timer"""
+ self.stopcb = True
+
+ def score_time(self):
+ """Returns the current score time"""
+ return self.csound.GetScoreTime()
+
def __init__(self,act,colour=(-1,-1,-1),vert=True):
"""constructor
act: activity object
@@ -749,4 +797,4 @@ class CsoundGUI(BasicGUI):
self.name = "0"
self.arglist = None
self.replay = False
-
+ self.stopcb = True