-# -*- coding: ISO-8859-1 -*-\r
-\r
-from RawInstreamFile import RawInstreamFile\r
-from MidiFileParser import MidiFileParser\r
-\r
-\r
-class MidiInFile:\r
-\r
- """\r
- \r
- Parses a midi file, and triggers the midi events on the outStream \r
- object.\r
- \r
- Get example data from a minimal midi file, generated with cubase.\r
- >>> test_file = 'C:/Documents and Settings/maxm/Desktop/temp/midi/src/midi/tests/midifiles/minimal-cubase-type0.mid'\r
- \r
- Do parsing, and generate events with MidiToText,\r
- so we can see what a minimal midi file contains\r
- >>> from MidiToText import MidiToText\r
- >>> midi_in = MidiInFile(MidiToText(), test_file)\r
- >>> midi_in.read()\r
- format: 0, nTracks: 1, division: 480\r
- ----------------------------------\r
- <BLANKLINE>\r
- Start - track #0\r
- sequence_name: Type 0\r
- tempo: 500000\r
- time_signature: 4 2 24 8\r
- note_on - ch:00, note:48, vel:64 time:0\r
- note_off - ch:00, note:48, vel:40 time:480\r
- End of track\r
- <BLANKLINE>\r
- End of file\r
- \r
- \r
- """\r
-\r
- def __init__(self, outStream, infile):\r
- # these could also have been mixins, would that be better? Nah!\r
- self.raw_in = RawInstreamFile(infile)\r
- self.parser = MidiFileParser(self.raw_in, outStream)\r
-\r
-\r
- def read(self):\r
- "Start parsing the file"\r
- p = self.parser\r
- p.parseMThdChunk()\r
- p.parseMTrkChunks()\r
-\r
-\r
- def setData(self, data=''):\r
- "Sets the data from a plain string"\r
- self.raw_in.setData(data)\r
- \r
- \r