Skip to content

Commit e241e3f

Browse files
committed
Change variables and methods to python style
1 parent 46831fa commit e241e3f

File tree

9 files changed

+530
-532
lines changed

9 files changed

+530
-532
lines changed

MidiData.py

Lines changed: 48 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -6,85 +6,85 @@
66

77
# contains the finalized data after analysis
88
class MidiData:
9-
def __init__(self, midiFilename, middle_c="C4"):
10-
self.eventDecoder = MidiEventDecoder(midiFilename)
11-
headerData = self.eventDecoder.headerData()
9+
def __init__(self, midi_filename, middle_c="C4"):
10+
self.event_decoder = MidiEventDecoder(midi_filename)
11+
header_data = self.event_decoder.header_data()
1212
# variables
13-
self.format = headerData.formatType
14-
self.numTracks = headerData.numTracks
15-
self.isTicksPerBeat = False
13+
self.format = header_data.format_type
14+
self.num_tracks = header_data.num_tracks
15+
self.is_ticks_per_beat = False
1616
self.middle_c = middle_c
17-
if headerData.ticksPerBeat is None:
18-
self.isTicksPerBeat = False
19-
self.ticksPerSecond = (headerData.framesPerSecond *
20-
headerData.ticksPerFrame)
17+
if header_data.ticks_per_beat is None:
18+
self.is_ticks_per_beat = False
19+
self.ticks_per_second = (header_data.frames_per_second *
20+
header_data.ticks_per_frame)
2121
else:
22-
self.isTicksPerBeat = True
23-
self.ticksPerBeat = headerData.ticksPerBeat
22+
self.is_ticks_per_beat = True
23+
self.ticks_per_beat = header_data.ticks_per_beat
2424

25-
if headerData.formatType != 1 and headerData.formatType != 0:
26-
raise NotSupportedException("Midi files of format " + str(headerData.formatType)
25+
if header_data.format_type != 1 and header_data.format_type != 0:
26+
raise NotSupportedException("Midi files of format " + str(header_data.format_type)
2727
+ " are not supported")
2828

2929
# maps running total of delta times to microsecondsPerQuarter
30-
tempoChanges = TempoChanges()
30+
tempo_changes = TempoChanges()
3131
self.tracks = []
3232

33-
self.msPerBeat = 500 # default 120 bpm
33+
self.ms_per_beat = 500 # default 120 bpm
3434

3535
# read in each track
3636
tracknum = 0 # used to create temporary track names
37-
while self.eventDecoder.hasMoreEvents():
38-
trackName = "Track" + str(tracknum)
37+
while self.event_decoder.has_more_events():
38+
track_name = "Track" + str(tracknum)
3939
tracknum += 1
40-
trackData = TrackData(name=trackName, middle_c=self.middle_c)
40+
track_data = TrackData(name=track_name, middle_c=self.middle_c)
4141
# should be a track header
42-
event = self.eventDecoder.nextEvent()
42+
event = self.event_decoder.next_event()
4343
if not (isinstance(event, TrackHeader)):
4444
raise UnexpectedEventException(event, TrackHeader())
45-
# set up tempoChanges
46-
tempoChanges.reset()
47-
self.msPerBeat = 500 # default 120 bpm
48-
deltaTimeTotal = 0 # current time in ticks
49-
msTotal = 0 # current time in ms
45+
# set up tempo_changes
46+
tempo_changes.reset()
47+
self.ms_per_beat = 500 # default 120 bpm
48+
delta_time_total = 0 # current time in ticks
49+
ms_total = 0 # current time in ms
5050
# add events
5151
while not (isinstance(event, EndOfTrackEvent)):
52-
event = self.eventDecoder.nextEvent()
52+
event = self.event_decoder.next_event()
5353
if isinstance(event, SetTempoEvent):
54-
tempoChanges.addTempoChange(deltaTimeTotal, event.tempo)
55-
nextTotal = deltaTimeTotal + event.deltaTime
54+
tempo_changes.add_tempo_change(delta_time_total, event.tempo)
55+
next_total = delta_time_total + event.delta_time
5656
# calculate absolute start time for event in ms
57-
if self.isTicksPerBeat:
58-
while (tempoChanges.hasMore() and
59-
nextTotal >= tempoChanges.deltaTimeTotal()):
60-
msTotal += ((tempoChanges.deltaTimeTotal() - deltaTimeTotal)*self.msPerBeat/self.ticksPerBeat)
61-
deltaTimeTotal = tempoChanges.deltaTimeTotal()
62-
self.msPerBeat = tempoChanges.usPerQuarter() * .001
63-
tempoChanges.findNext()
64-
msTotal += ((nextTotal - deltaTimeTotal) * self.msPerBeat / self.ticksPerBeat)
57+
if self.is_ticks_per_beat:
58+
while (tempo_changes.has_more() and
59+
next_total >= tempo_changes.delta_time_total()):
60+
ms_total += ((tempo_changes.delta_time_total() - delta_time_total) * self.ms_per_beat / self.ticks_per_beat)
61+
delta_time_total = tempo_changes.delta_time_total()
62+
self.ms_per_beat = tempo_changes.us_per_quarter() * .001
63+
tempo_changes.find_next()
64+
ms_total += ((next_total - delta_time_total) * self.ms_per_beat / self.ticks_per_beat)
6565
else:
66-
msTotal = (event.deltaTime / self.ticksPerSecond) * .001
67-
# add event to trackData
68-
deltaTimeTotal = nextTotal
69-
event.setStartTimeMs(msTotal)
70-
event.setStartTimeTicks(deltaTimeTotal)
71-
trackData.addEvent(event)
72-
self.tracks.append(trackData)
66+
ms_total = (event.delta_time / self.ticks_per_second) * .001
67+
# add event to track_data
68+
delta_time_total = next_total
69+
event.set_start_time_ms(ms_total)
70+
event.set_start_time_ticks(delta_time_total)
71+
track_data.add_event(event)
72+
self.tracks.append(track_data)
7373

74-
def getNumTracks(self):
74+
def get_num_tracks(self):
7575
return len(self.tracks)
7676

77-
def getTrack(self, index):
77+
def get_track(self, index):
7878
return self.tracks[index]
7979

8080

8181
class UnexpectedEventException(Exception):
82-
def __init__(self, event, expectedEvent):
82+
def __init__(self, event, expected_event):
8383
self.event = event
84-
self.expectedEvent = expectedEvent
84+
self.expected_event = expected_event
8585

8686
def __str__(self):
87-
return str("MidiData expected event of type " + str(type(self.expectedEvent))
87+
return str("MidiData expected event of type " + str(type(self.expected_event))
8888
+ ", got event of type " + str(type(self.event)))
8989

9090

MidiEventDecoder.py

Lines changed: 52 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -4,74 +4,74 @@
44

55

66
# decodes data from the MidiParser into data easier to work with in MidiData
7-
# (will decode each piece of data from midiParser into an event,
7+
# (will decode each piece of data from midi_parser into an event,
88
# including header chunk pieces)
99
class MidiEventDecoder:
10-
def __init__(self, midiFilename):
11-
self.midiParser = MidiParser(midiFilename)
12-
self.runningStatus = False
13-
self.lastChannelStatusByte = None # the first byte of the last channel event that didn't use running status
10+
def __init__(self, midi_filename):
11+
self.midi_parser = MidiParser(midi_filename)
12+
self.running_status = False
13+
self.last_channel_status_byte = None # the first byte of the last channel event that didn't use running status
1414
return
1515

16-
def hasMoreEvents(self):
17-
return self.midiParser.hasMoreData()
16+
def has_more_events(self):
17+
return self.midi_parser.has_more_data()
1818

19-
# be sure to call this once before calling nextEvent
20-
def headerData(self):
19+
# be sure to call this once before calling next_event
20+
def header_data(self):
2121
data = HeaderData()
22-
data.setFromBytes(self.midiParser.readNextData(),
23-
self.midiParser.readNextData())
22+
data.set_from_bytes(self.midi_parser.read_next_data(),
23+
self.midi_parser.read_next_data())
2424
return data
2525

2626
# returns a MidiEvent
27-
def nextEvent(self):
28-
return self.midiEvent(self.midiParser.readNextData())
29-
# creates a MidiEvent from the midiData
27+
def next_event(self):
28+
return self.midi_event(self.midi_parser.read_next_data())
29+
# creates a MidiEvent from the midi_data
3030

31-
def midiEvent(self, midiData):
31+
def midi_event(self, midi_data):
3232
# check if TrackHeader
33-
if midiData[0:4] == b'MTrk':
34-
trackHeader = TrackHeader()
35-
trackHeader.setFromBytes(midiData)
36-
return trackHeader
37-
# find deltaTime
38-
tempData = midiData
39-
deltaTimeBytesLength = 0
40-
while Util.msbIsOne(tempData[deltaTimeBytesLength:]):
41-
deltaTimeBytesLength += 1
42-
deltaTimeBytesLength += 1
43-
deltaTime = tempData[:deltaTimeBytesLength]
44-
midiData = tempData[deltaTimeBytesLength:]
33+
if midi_data[0:4] == b'MTrk':
34+
track_header = TrackHeader()
35+
track_header.set_from_bytes(midi_data)
36+
return track_header
37+
# find delta_time
38+
temp_data = midi_data
39+
delta_time_bytes_length = 0
40+
while Util.msb_is_one(temp_data[delta_time_bytes_length:]):
41+
delta_time_bytes_length += 1
42+
delta_time_bytes_length += 1
43+
delta_time = temp_data[:delta_time_bytes_length]
44+
midi_data = temp_data[delta_time_bytes_length:]
4545
# Meta Event
46-
if midiData[0:1] == b'\xff':
47-
if midiData[1] in EventDictionaries.META_EVENT_DICTIONARY:
48-
metaEventClass = EventDictionaries.META_EVENT_DICTIONARY[midiData[1]]
46+
if midi_data[0:1] == b'\xff':
47+
if midi_data[1] in EventDictionaries.META_EVENT_DICTIONARY:
48+
meta_event_class = EventDictionaries.META_EVENT_DICTIONARY[midi_data[1]]
4949
else:
50-
metaEventClass = MetaEvent
51-
metaEvent = metaEventClass()
52-
metaEvent.setDeltaTimeFromBytes(deltaTime)
53-
metaEvent.setFromBytes(midiData)
54-
return metaEvent
50+
meta_event_class = MetaEvent
51+
meta_event = meta_event_class()
52+
meta_event.set_delta_time_from_bytes(delta_time)
53+
meta_event.set_from_bytes(midi_data)
54+
return meta_event
5555
# System Event
56-
if midiData[0:1] == b'\xf0' or midiData[0:1] == b'\xf7':
57-
systemEvent = SystemExclusiveEvent()
58-
systemEvent.setDeltaTimeFromBytes(deltaTime)
59-
systemEvent.setFromBytes(midiData)
60-
return systemEvent
56+
if midi_data[0:1] == b'\xf0' or midi_data[0:1] == b'\xf7':
57+
system_event = SystemExclusiveEvent()
58+
system_event.set_delta_time_from_bytes(delta_time)
59+
system_event.set_from_bytes(midi_data)
60+
return system_event
6161
# Channel Event
62-
if Util.msbIsOne(midiData): # running status
63-
self.lastChannelStatusByte = midiData[0:1]
62+
if Util.msb_is_one(midi_data): # running status
63+
self.last_channel_status_byte = midi_data[0:1]
6464
else: # not running status
65-
midiData = self.lastChannelStatusByte + midiData
66-
channelEventIdentifier = midiData[0] & int('f0', 16)
67-
if channelEventIdentifier in EventDictionaries.CHANNEL_EVENT_DICTIONARY:
68-
channelEventClass = EventDictionaries.CHANNEL_EVENT_DICTIONARY[channelEventIdentifier]
65+
midi_data = self.last_channel_status_byte + midi_data
66+
channel_event_identifier = midi_data[0] & int('f0', 16)
67+
if channel_event_identifier in EventDictionaries.CHANNEL_EVENT_DICTIONARY:
68+
channel_event_class = EventDictionaries.CHANNEL_EVENT_DICTIONARY[channel_event_identifier]
6969
else:
70-
channelEventClass = ChannelEvent
71-
channelEvent = channelEventClass()
72-
channelEvent.setDeltaTimeFromBytes(deltaTime)
73-
channelEvent.setFromBytes(midiData)
74-
return channelEvent
70+
channel_event_class = ChannelEvent
71+
channel_event = channel_event_class()
72+
channel_event.set_delta_time_from_bytes(delta_time)
73+
channel_event.set_from_bytes(midi_data)
74+
return channel_event
7575

7676
def close(self):
77-
self.midiParser.close()
77+
self.midi_parser.close()

0 commit comments

Comments
 (0)