diff options
Diffstat (limited to 'muse2/share/scripts/RemoveShortEvents')
-rwxr-xr-x | muse2/share/scripts/RemoveShortEvents | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/muse2/share/scripts/RemoveShortEvents b/muse2/share/scripts/RemoveShortEvents new file mode 100755 index 00000000..cc6735b2 --- /dev/null +++ b/muse2/share/scripts/RemoveShortEvents @@ -0,0 +1,79 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# MusE external midi processing script +# By: Robert Jonsson 2009 +# RemoveShortEvents + +import sys,time +from PyQt4 import QtGui, QtCore + +class RemoveShortEvents(QtGui.QWidget): + def __init__(self, parent=None): + QtGui.QWidget.__init__(self, parent) + + self.setWindowTitle('RemoveShortEvents') + + title = QtGui.QLabel('Remove events shorter than:') + self.timeEdit = QtGui.QComboBox() + self.timeEdit.addItem('1/1',1) + self.timeEdit.addItem('1/2',2) + self.timeEdit.addItem('1/4',4) + self.timeEdit.addItem('1/8',8) + self.timeEdit.addItem('1/16',16) + self.timeEdit.addItem('1/32',32) + self.timeEdit.setCurrentIndex(3) + + button = QtGui.QPushButton("Execute") + self.connect(button, QtCore.SIGNAL('clicked()'), self.execute) + + grid = QtGui.QGridLayout() + grid.setSpacing(3) + + grid.addWidget(title, 1, 0) + grid.addWidget(self.timeEdit, 1, 1) + + grid.addWidget(button, 2, 1) + + self.setLayout(grid) + self.resize(200, 100) + button.setFocus() + + def execute(self): + testFile = file(sys.argv[1],"r") + inputEvents = testFile.readlines() + testFile.close() + + beatDiv = int(self.timeEdit.itemData(self.timeEdit.currentIndex()).toInt()[0]) + minSize=0 # fill in when we get the beat size value + outputEvents=[] + + #get beat length to calculate minimum length of event + for line in inputEvents: + if line.startswith('BEATLEN'): + tag,tick = line.split(' ') + minSize=int(tick)/beatDiv + break + #loop through events + for line in inputEvents: + if line.startswith('NOTE'): + tag,tick,note,length,velocity = line.split(' ') + if int(length) > minSize: # only append long enough events + outputEvents.append(line) + + else: + outputEvents.append(line) + + + testFile = file(sys.argv[1],"w") + testFile.writelines(outputEvents) + testFile.close() + + + quit() + + + +app = QtGui.QApplication(sys.argv) +qb = RemoveShortEvents() +qb.show() +sys.exit(app.exec_()) |