Skip to content

Commit c820210

Browse files
authored
Merge pull request #171 from exowanderer/master
upgraded to python3
2 parents 4b7a229 + b2a59f2 commit c820210

16 files changed

+52
-51
lines changed

examples/example_1.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,6 @@
1515
eot = midi.EndOfTrackEvent(tick=1)
1616
track.append(eot)
1717
# Print out the pattern
18-
print pattern
18+
print(pattern)
1919
# Save the pattern to disk
2020
midi.write_midifile("example.mid", pattern)

examples/example_2.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,3 @@
11
import midi
22
pattern = midi.read_midifile("example.mid")
3-
print pattern
3+
print(pattern)

scripts/mididump.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@
66
import sys
77

88
if len(sys.argv) != 2:
9-
print "Usage: {0} <midifile>".format(sys.argv[0])
9+
print("Usage: {0} <midifile>".format(sys.argv[0]))
1010
sys.exit(2)
1111

1212
midifile = sys.argv[1]
1313
pattern = midi.read_midifile(midifile)
14-
print repr(pattern)
14+
print(repr(pattern))

scripts/mididumphw.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@
66

77
s = sequencer.SequencerHardware()
88

9-
print s
9+
print(s)

scripts/midilisten.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import midi.sequencer as sequencer
99

1010
if len(sys.argv) != 3:
11-
print "Usage: {0} <client> <port>".format(sys.argv[0])
11+
print("Usage: {0} <client> <port>".format(sys.argv[0]))
1212
exit(2)
1313

1414
client = sys.argv[1]
@@ -21,4 +21,4 @@
2121
while True:
2222
event = seq.event_read()
2323
if event is not None:
24-
print event
24+
print(event)

scripts/midiplay.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import midi.sequencer as sequencer
99

1010
if len(sys.argv) != 4:
11-
print "Usage: {0} <client> <port> <file>".format(sys.argv[0])
11+
print("Usage: {0} <client> <port> <file>".format(sys.argv[0]))
1212
exit(2)
1313

1414
client = sys.argv[1]
@@ -45,4 +45,4 @@
4545
seq.drain()
4646
time.sleep(.5)
4747

48-
print 'The end?'
48+
print('The end?')

setup.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ def configure_platform():
6262
setup_alsa(ns)
6363
pass
6464
else:
65-
print "No sequencer available for '%s' platform." % platform
65+
print("No sequencer available for '%s' platform." % platform)
6666
return ns
6767

6868
if __name__ == "__main__":

src/__init__.py

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1-
from containers import *
2-
from events import *
1+
from .containers import *
2+
from .events import *
3+
from .util import *
4+
from .fileio import *
5+
36
from struct import unpack, pack
4-
from util import *
5-
from fileio import *

src/events.py

+13-13
Original file line numberDiff line numberDiff line change
@@ -6,21 +6,21 @@ class EventRegistry(object):
66

77
def register_event(cls, event, bases):
88
if (Event in bases) or (NoteEvent in bases):
9-
assert event.statusmsg not in cls.Events, \
9+
assert(event.statusmsg not in cls.Events), \
1010
"Event %s already registered" % event.name
1111
cls.Events[event.statusmsg] = event
1212
elif (MetaEvent in bases) or (MetaEventWithText in bases):
1313
if event.metacommand is not None:
14-
assert event.metacommand not in cls.MetaEvents, \
14+
assert(event.metacommand not in cls.MetaEvents), \
1515
"Event %s already registered" % event.name
1616
cls.MetaEvents[event.metacommand] = event
1717
else:
18-
raise ValueError, "Unknown bases class in event type: "+event.name
18+
raise ValueError("Unknown bases class in event type: "+event.name)
1919
register_event = classmethod(register_event)
2020

2121

2222
class AbstractEvent(object):
23-
__slots__ = ['tick', 'data']
23+
# __slots__ = ['tick', 'data']
2424
name = "Generic MIDI Event"
2525
length = 0
2626
statusmsg = 0x0
@@ -61,7 +61,7 @@ def __repr__(self):
6161

6262

6363
class Event(AbstractEvent):
64-
__slots__ = ['channel']
64+
# __slots__ = ['channel']
6565
name = 'Event'
6666

6767
def __init__(self, **kw):
@@ -111,7 +111,7 @@ def is_event(cls, statusmsg):
111111
"""
112112

113113
class NoteEvent(Event):
114-
__slots__ = ['pitch', 'velocity']
114+
# __slots__ = ['pitch', 'velocity']
115115
length = 2
116116

117117
def get_pitch(self):
@@ -152,7 +152,7 @@ def set_value(self, val):
152152
value = property(get_value, set_value)
153153

154154
class ControlChangeEvent(Event):
155-
__slots__ = ['control', 'value']
155+
# __slots__ = ['control', 'value']
156156
statusmsg = 0xB0
157157
length = 2
158158
name = 'Control Change'
@@ -170,7 +170,7 @@ def get_value(self):
170170
value = property(get_value, set_value)
171171

172172
class ProgramChangeEvent(Event):
173-
__slots__ = ['value']
173+
# __slots__ = ['value']
174174
statusmsg = 0xC0
175175
length = 1
176176
name = 'Program Change'
@@ -182,7 +182,7 @@ def get_value(self):
182182
value = property(get_value, set_value)
183183

184184
class ChannelAfterTouchEvent(Event):
185-
__slots__ = ['value']
185+
# __slots__ = ['value']
186186
statusmsg = 0xD0
187187
length = 1
188188
name = 'Channel After Touch'
@@ -194,7 +194,7 @@ def get_value(self):
194194
value = property(get_value, set_value)
195195

196196
class PitchWheelEvent(Event):
197-
__slots__ = ['pitch']
197+
# __slots__ = ['pitch']
198198
statusmsg = 0xE0
199199
length = 2
200200
name = 'Pitch Wheel'
@@ -302,7 +302,7 @@ class EndOfTrackEvent(MetaEvent):
302302
metacommand = 0x2F
303303

304304
class SetTempoEvent(MetaEvent):
305-
__slots__ = ['bpm', 'mpqn']
305+
# __slots__ = ['bpm', 'mpqn']
306306
name = 'Set Tempo'
307307
metacommand = 0x51
308308
length = 3
@@ -326,7 +326,7 @@ class SmpteOffsetEvent(MetaEvent):
326326
metacommand = 0x54
327327

328328
class TimeSignatureEvent(MetaEvent):
329-
__slots__ = ['numerator', 'denominator', 'metronome', 'thirtyseconds']
329+
# __slots__ = ['numerator', 'denominator', 'metronome', 'thirtyseconds']
330330
name = 'Time Signature'
331331
metacommand = 0x58
332332
length = 4
@@ -356,7 +356,7 @@ def set_thirtyseconds(self, val):
356356
thirtyseconds = property(get_thirtyseconds, set_thirtyseconds)
357357

358358
class KeySignatureEvent(MetaEvent):
359-
__slots__ = ['alternatives', 'minor']
359+
# __slots__ = ['alternatives', 'minor']
360360
name = 'Key Signature'
361361
metacommand = 0x59
362362
length = 2

src/fileio.py

+15-15
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1+
from struct import unpack, pack
12
from warnings import *
23

3-
from containers import *
4-
from events import *
5-
from struct import unpack, pack
6-
from constants import *
7-
from util import *
4+
from .containers import *
5+
from .events import *
6+
from .constants import *
7+
from .util import *
88

99
class FileReader(object):
1010
def read(self, midifile):
@@ -17,7 +17,7 @@ def parse_file_header(self, midifile):
1717
# First four bytes are MIDI header
1818
magic = midifile.read(4)
1919
if magic != 'MThd':
20-
raise TypeError, "Bad header in MIDI file."
20+
raise TypeError("Bad header in MIDI file.")
2121
# next four bytes are header size
2222
# next two bytes specify the format version
2323
# next two bytes specify the number of tracks
@@ -38,7 +38,7 @@ def parse_track_header(self, midifile):
3838
# First four bytes are Track header
3939
magic = midifile.read(4)
4040
if magic != 'MTrk':
41-
raise TypeError, "Bad track header in MIDI file: " + magic
41+
raise TypeError("Bad track header in MIDI file: " + magic)
4242
# next four bytes are track size
4343
trksz = unpack(">L", midifile.read(4))[0]
4444
return trksz
@@ -63,7 +63,7 @@ def parse_midi_event(self, trackdata):
6363
if MetaEvent.is_event(stsmsg):
6464
cmd = ord(trackdata.next())
6565
if cmd not in EventRegistry.MetaEvents:
66-
warn("Unknown Meta MIDI Event: " + `cmd`, Warning)
66+
warn("Unknown Meta MIDI Event: " + cmd, Warning)
6767
cls = UnknownMetaEvent
6868
else:
6969
cls = EventRegistry.MetaEvents[cmd]
@@ -83,7 +83,7 @@ def parse_midi_event(self, trackdata):
8383
else:
8484
key = stsmsg & 0xF0
8585
if key not in EventRegistry.Events:
86-
assert self.RunningStatus, "Bad byte value"
86+
assert(self.RunningStatus), "Bad byte value"
8787
data = []
8888
key = self.RunningStatus & 0xF0
8989
cls = EventRegistry.Events[key]
@@ -97,7 +97,7 @@ def parse_midi_event(self, trackdata):
9797
channel = self.RunningStatus & 0x0F
9898
data = [ord(trackdata.next()) for x in range(cls.length)]
9999
return cls(tick=tick, channel=channel, data=data)
100-
raise Warning, "Unknown MIDI Event: " + `stsmsg`
100+
raise Warning("Unknown MIDI Event: " + stsmsg)
101101

102102
class FileWriter(object):
103103
def write(self, midifile, pattern):
@@ -146,17 +146,17 @@ def encode_midi_event(self, event):
146146
ret += chr(event.statusmsg | event.channel)
147147
ret += str.join('', map(chr, event.data))
148148
else:
149-
raise ValueError, "Unknown MIDI Event: " + str(event)
149+
raise ValueError("Unknown MIDI Event: " + str(event))
150150
return ret
151151

152152
def write_midifile(midifile, pattern):
153-
if type(midifile) in (str, unicode):
154-
midifile = open(midifile, 'wb')
153+
if isinstance(midifile, str):
154+
midifile = open(midifile, 'w')
155155
writer = FileWriter()
156156
return writer.write(midifile, pattern)
157157

158158
def read_midifile(midifile):
159-
if type(midifile) in (str, unicode):
160-
midifile = open(midifile, 'rb')
159+
if isinstance(midifile, str):
160+
midifile = open(midifile, 'r')
161161
reader = FileReader()
162162
return reader.read(midifile)

src/sequencer.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,7 @@ def __iter__(self):
6060

6161
def __next_edge(self):
6262
if self.endoftrack:
63-
raise StopIteration
63+
raise StopIteration("")
6464
lastedge = self.window_edge
6565
self.window_edge += int(self.window_length / self.tempo.mpt)
6666
if self.window_edge > self.ttp:

src/sequencer_alsa/__init__.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
try:
2-
from sequencer import *
2+
from .sequencer import *
33
except ImportError:
44
pass

src/sequencer_alsa/sequencer.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ def get_nonblock(self):
7272
def _error(self, errcode):
7373
strerr = S.snd_strerror(errcode)
7474
msg = "ALSAError[%d]: %s" % (errcode, strerr)
75-
raise RuntimeError, msg
75+
raise RuntimeError(msg)
7676

7777
def _init_handle(self):
7878
ret = S.open_client(self.alsa_sequencer_name,
@@ -204,7 +204,7 @@ def output_pending(self):
204204
## EVENT HANDLERS
205205
##
206206
def event_write(self, event, direct=False, relative=False, tick=False):
207-
#print event.__class__, event
207+
#print(event.__class__, event)
208208
## Event Filter
209209
if isinstance(event, midi.EndOfTrackEvent):
210210
return
@@ -269,7 +269,7 @@ def event_write(self, event, direct=False, relative=False, tick=False):
269269
seqev.data.control.value = event.pitch
270270
## Unknown
271271
else:
272-
print "Warning :: Unknown event type: %s" % event
272+
print("Warning :: Unknown event type: %s" % event)
273273
return None
274274

275275
err = S.snd_seq_event_output(self.client, seqev)

src/sequencer_osx/sequencer_osx.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ def _swig_getattr(self,class_type,name):
3131
if (name == "thisown"): return self.this.own()
3232
method = class_type.__swig_getmethods__.get(name,None)
3333
if method: return method(self)
34-
raise AttributeError,name
34+
raise AttributeError(name)
3535

3636
def _swig_repr(self):
3737
try: strthis = "proxy of " + self.this.__repr__()

src/sequencer_osx/test.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
import sequencer_osx
2-
print "MIDIGetNumberOfDevices:", sequencer_osx._MIDIGetNumberOfDevices()
2+
print("MIDIGetNumberOfDevices:", sequencer_osx._MIDIGetNumberOfDevices())
33
client = sequencer_osx._MIDIClientCreate("python")
44
endpoint = sequencer_osx._MIDISourceCreate(client, "python-source")
55
port = sequencer_osx._MIDIOutputPortCreate(client, "python-port")
66
sequencer_osx._MIDIPortConnectSource(port, endpoint)
7-
print client, endpoint, endpoint
7+
print(client, endpoint, endpoint)
88
raw_input()
99
#sequencer_osx._MIDIClientDispose(handle)

tests/tests.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ def get_loop_client_port(self):
4444
hw = sequencer.SequencerHardware()
4545
ports = {port.name: port for port in hw}
4646
loop = ports.get("Midi Through", None)
47-
assert loop != None, "Could not find Midi Through port!"
47+
assert(loop != None), "Could not find Midi Through port!"
4848
loop_port = loop.get_port("Midi Through Port-0")
4949
return (loop.client, loop_port.port)
5050

0 commit comments

Comments
 (0)