From 612acc2cd3979edf441d2f33403f6b3403c1cf05 Mon Sep 17 00:00:00 2001 From: Robert Jonsson Date: Mon, 18 Feb 2013 20:32:11 +0000 Subject: some script fiddling --- muse2/share/scripts/CMakeLists.txt | 2 + muse2/share/scripts/RandomPosition1 | 96 +++++++++++++++++++++++++++++++++++++ muse2/share/scripts/SwingQuantize1 | 1 + 3 files changed, 99 insertions(+) create mode 100755 muse2/share/scripts/RandomPosition1 diff --git a/muse2/share/scripts/CMakeLists.txt b/muse2/share/scripts/CMakeLists.txt index 3a16ea26..2851336a 100644 --- a/muse2/share/scripts/CMakeLists.txt +++ b/muse2/share/scripts/CMakeLists.txt @@ -27,6 +27,8 @@ file(GLOB script_files DoubleSpeed ConstantLength SwingQuantize1 + RandomQuantize1 + Rhythm1 ) install (PROGRAMS ${script_files} 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_()) diff --git a/muse2/share/scripts/SwingQuantize1 b/muse2/share/scripts/SwingQuantize1 index e0d37f9a..4f359cfa 100755 --- a/muse2/share/scripts/SwingQuantize1 +++ b/muse2/share/scripts/SwingQuantize1 @@ -69,6 +69,7 @@ class Quantize(QtGui.QWidget): testFile = file(sys.argv[1],"r") inputEvents = testFile.readlines() testFile.close() + random.seed() beatDiv = self.beatEdit.itemData(self.beatEdit.currentIndex()).toInt()[0] minSize=0 # fill in when we get the beat size value -- cgit v1.2.3