summaryrefslogtreecommitdiff
path: root/muse2/share/pybridge/examples/repeatpart.py
diff options
context:
space:
mode:
Diffstat (limited to 'muse2/share/pybridge/examples/repeatpart.py')
-rw-r--r--muse2/share/pybridge/examples/repeatpart.py61
1 files changed, 61 insertions, 0 deletions
diff --git a/muse2/share/pybridge/examples/repeatpart.py b/muse2/share/pybridge/examples/repeatpart.py
new file mode 100644
index 00000000..e2b8ff31
--- /dev/null
+++ b/muse2/share/pybridge/examples/repeatpart.py
@@ -0,0 +1,61 @@
+"""
+//=========================================================
+// MusE
+// Linux Music Editor
+// (C) Copyright 2009 Mathias Gyllengahm (lunar_shuttle@users.sf.net)
+//=========================================================
+"""
+
+import Pyro.core
+import sys
+import time
+
+SLEEPIVAL=0.3
+
+def advanceToNextSection(muse, newlpos, newrpos):
+ print "Advancing..."
+ currpos = muse.getRPos()
+ curlpos = muse.getLPos()
+ curpos = muse.getCPos()
+ muse.setLoop(False)
+
+ while curpos < currpos:
+ time.sleep(SLEEPIVAL)
+ curpos = muse.getCPos()
+ print "Leaving current section..."
+ muse.setRPos(newrpos)
+ curpos = muse.getCPos()
+
+ while curpos < newlpos:
+ time.sleep(SLEEPIVAL)
+ curpos = muse.getCPos()
+ print "Entered new section"
+ muse.setLPos(newlpos)
+ muse.setLoop(True)
+ return
+
+muse=Pyro.core.getProxyForURI('PYRONAME://:Default.muse')
+muse.stopPlay()
+parts = muse.getParts("Track 1")
+muse.setLPos(parts[0]['tick'])
+muse.setRPos(parts[0]['tick'] + parts[0]['len'])
+muse.setCPos(0)
+time.sleep(0.2) # Hmmm, don't like it but it seems necessary to pause a short while before starting play
+muse.setLoop(True)
+muse.startPlay()
+
+for i in range(1, len(parts)):
+ part = parts[i]
+ tick = part['tick']
+ len = part['len']
+ print "Press enter to advance to next section/part!"
+ sys.stdin.read(1)
+ advanceToNextSection(muse, tick, tick + len)
+
+print "This is the final section. Disabling loop and leaving..."
+muse.setLoop(False)
+
+#print "Press enter to leave final section"
+#sys.stdin.read(1)
+#muse.setLoop(False)
+