-class EventDispatcherBase:\r
-\r
-\r
- def __init__(self, outstream):\r
- """\r
- The event dispatcher generates events on the outstream. This \r
- is the base implementation. It is more like an interface for \r
- how the EventDispatcher. It has the methods that are used by \r
- the Midi Parser.\r
- """\r
- # internal values, don't mess with 'em directly\r
- self.outstream = outstream\r
-\r
-\r
- def eof(self):\r
- "End of file!"\r
- self.outstream.eof()\r
-\r
-\r
- def update_time(self, new_time=0, relative=1):\r
- "Updates relative/absolute time."\r
- self.outstream.update_time(new_time, relative)\r
-\r
- # 'official' midi events\r
-\r
- def header(self, format, nTracks, division):\r
- "Triggers the header event"\r
- self.outstream.header(format, nTracks, division)\r
-\r
-\r
- def start_of_track(self, current_track):\r
- "Triggers the start of track event"\r
- \r
- # I do this twice so that users can overwrite the \r
- # start_of_track event handler without worrying whether the \r
- # track number is updated correctly.\r
- self.outstream.set_current_track(current_track)\r
- self.outstream.start_of_track(current_track)\r
-\r
- # Event dispatchers for midi events\r
-\r
- def channel_messages(self, hi_nible, channel, data):\r
- "Dispatches channel messages"\r
- self.outstream.channel_message(hi_nible, channel, data)\r
-\r
-\r
- def continuous_controllers(self, channel, controller, value):\r
- "Dispatches channel messages"\r
- self.outstream.continuous_controller(channel, controller, value)\r
- \r
- \r
- def system_commons(self, common_type, common_data):\r
- "Dispatches system common messages"\r
- self.outstream.system_common(common_type, common_data)\r
-\r
-\r
- def meta_event(self, meta_type, data):\r
- "Dispatches meta events"\r
- self.outstream.meta_event(meta_type, data)\r
-\r
-\r
- def sysex_events(self, data):\r
- "Dispatcher for sysex events"\r
- self.outstream.sysex_event(data)\r
-\r
-\r
-\r
-if __name__ == '__main__':\r
-\r
-\r
- from MidiToText import MidiToText\r
- from constants import NOTE_ON\r
- \r
- outstream = MidiToText()\r
- dispatcher = EventDispatcherBase(outstream)\r
- dispatcher.channel_messages(NOTE_ON, 0x00, '\x40\x40')
\ No newline at end of file