From 612acc2cd3979edf441d2f33403f6b3403c1cf05 Mon Sep 17 00:00:00 2001
From: Robert Jonsson <spamatica@gmail.com>
Date: Mon, 18 Feb 2013 20:32:11 +0000
Subject: some script fiddling

---
 muse2/share/scripts/RandomPosition1 | 96 +++++++++++++++++++++++++++++++++++++
 1 file changed, 96 insertions(+)
 create mode 100755 muse2/share/scripts/RandomPosition1

(limited to 'muse2/share/scripts/RandomPosition1')

diff --git a/muse2/share/scripts/RandomPosition1 b/muse2/share/scripts/RandomPosition1
new file mode 100755
index 00000000..6f1e1fb8
--- /dev/null
+++ b/muse2/share/scripts/RandomPosition1
@@ -0,0 +1,96 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+# MusE external midi processing script
+# By: Robert Jonsson 2013
+# Quantize
+#=============================================================================
+#  MusE
+#  Linux Music Editor
+#  $Id:$
+#
+#  Copyright (C) 2002-2011 by Werner Schweer and others
+#
+#  This program is free software; you can redistribute it and/or modify
+#  it under the terms of the GNU General Public License
+#  as published by the Free Software Foundation; either version 2
+#  of the License, or (at your option) any later version.
+#
+#  This program is distributed in the hope that it will be useful,
+#  but WITHOUT ANY WARRANTY; without even the implied warranty of
+#  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+#  GNU General Public License for more details.
+#
+#  You should have received a copy of the GNU General Public License
+#  along with this program; if not, write to the
+#  Free Software Foundation, Inc.,
+#  51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+#=============================================================================
+
+
+import sys,time
+from PyQt4 import QtGui, QtCore
+import random
+
+class Quantize(QtGui.QWidget):
+    def __init__(self, parent=None):
+        QtGui.QWidget.__init__(self, parent)
+
+        self.setWindowTitle('Randomize note positions')
+
+        self.spreadEdit = QtGui.QLineEdit()
+        self.spreadEdit.setText('3')
+        
+        button = QtGui.QPushButton("Execute")
+        self.connect(button,  QtCore.SIGNAL('clicked()'), self.execute) 
+
+        grid = QtGui.QGridLayout()
+        grid.setSpacing(3)
+
+        grid.addWidget(QtGui.QLabel('Spread(ticks)'), 2, 0)
+        grid.addWidget(self.spreadEdit, 2, 1)
+        grid.addWidget(button, 3, 1)
+
+        self.setLayout(grid)
+        self.resize(200, 100)
+        button.setFocus()
+
+    def execute(self):
+        testFile = file(sys.argv[1],"r")
+        inputEvents = testFile.readlines()
+        testFile.close()
+        
+        minSize=0 # fill in when we get the beat size value
+        outputEvents=[]
+        quantLen=0
+        random.seed()
+
+        #loop through events and quantize to the given beat
+        eventList=[]
+        for line in inputEvents:
+            if line.startswith('NOTE'):
+              tag,tick,pitch,length,velocity = line.split(' ')
+
+              newTick = int(tick)
+              # apply swing factor to every beat              
+              newTick=int(random.gauss(newTick,self.spreadEdit.text().toInt()[0]))
+
+              newLine="NOTE "+ str(newTick)+" " + pitch  + " "+ length + " " + velocity
+              print "oldTick:", tick
+              print "newLine:",newLine.strip()
+              outputEvents.append(newLine)
+            else:
+              outputEvents.append(line)
+            
+
+
+        testFile = file(sys.argv[1],"w")
+        testFile.writelines(outputEvents)
+        testFile.close()
+
+        quit()
+
+
+app = QtGui.QApplication(sys.argv)
+qb = Quantize()
+qb.show()
+sys.exit(app.exec_())
-- 
cgit v1.2.3