diff options
Diffstat (limited to 'muse2/share/scripts/RandomPosition1')
| -rwxr-xr-x | muse2/share/scripts/RandomPosition1 | 96 | 
1 files changed, 96 insertions, 0 deletions
| 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_()) | 
