Exemple #1
0
 def actOnInput(self, messagesAsTimes):
     if len(messagesAsTimes) is 0:
         messagesAsTimes.append(time.time())
     p = mido.Parser()
     while p.pending() > 0:
         messagesAsTimes.append(p.get_message())
     return 0
def readin_bytes(infile):
    """
    Read in messages from a binary mode file object.
    Returns iterator over Messages.
    """
    data = infile.read()
    parser = mido.Parser()
    parser.feed(data)
    return iter(parser)
Exemple #3
0
    def load_file(self, filename):
        global PARSER
        PARSER = MidiFile(filename)

        with open(filename, 'rb') as f:
            # read in the binary file as a byte array
            ba = bytearray(f.read())

            # feed that into mido's parser
            p = mido.Parser()
            p.feed(ba)
            self.messages = []
            while p.pending():
                self.messages.append(p.get_message())
def read_syx_file_gen(infile, n=1024):
    parser = mido.Parser()
    data = infile.read1(n)
    if data[0] == 0xF0:
        while data:
            parser.feed(data)
            yield from parser
            data = infile.read1(n)
    else:
        line = data + infile.readline()
        while line:
            text = line.translate(None, b'\t\n\r\f\v').decode('latin1')
            parser.feed(bytes.fromhex(text))
            yield from parser
            line = infile.readline()
Exemple #5
0
    def test_encode_and_parse_all(self):
        """Encode and then parse all message types.

        This checks mostly for errors in the parser.
        """
        p = mido.Parser()
        for spec in mido.messages.get_message_specs():
            if spec.type == 'sysex_end':
                # This is considered a part of 'sysex_start'.
                continue

            msg = Message(spec.type)
            p.feed(msg.bytes())
            outmsg = p.get_message()
            self.assertTrue(outmsg is not True)
            self.assertTrue(outmsg.type == spec.type)
def read_syx_file(infile):
    """
    Read in a binary or hex syx file.
    Takes a binary mode file object.
    (like mido.read_syx_file, but uses file objects)
    Returns iterator over mido Messages
    """
    data = infile.read()
    parser = mido.Parser()
    if data[0] == 0xF0:
        parser.feed(data)
    else:
        # get rid of non-space whitespace
        text = data.translate(None, b'\t\n\r\f\v').decode('latin1')
        parser.feed(bytes.fromhex(text))
    return iter(parser)
Exemple #7
0
 def __init__(self):
     self.backend = mido.Backend('mido.backends.rtmidi')
     try:
         self.input = self.backend.open_input('QU-32 MIDI Out')
         self.output = self.backend.open_output('QU-32 MIDI In')
     except:
         self.input = self.backend.open_input()
         self.output = self.backend.open_output()
         print('WARNING - Not connected to sound board!!!')
     self.header = b'\xF0\x00\x00\x1A\x50\x11\x01\x00\x00'
     self.parser = mido.Parser()
     self.last_message = None
     self.messages = [None]
     self.patches = {
         'cesar': 39,
         'ruben': 40,
         'helen': 42,
         'naylor': 34,
         'naylor2': 36,
         'doc': 34,
         'sherrif': 35,
         'father': 35,
         'woman': 36,
         'carlos': 41,
         'rfk': 35,
         'gray': 34,
         'leads': 16,
         'choir': 17,
         'band': 19,
         'fx': 0,
         'god': 33,
         'tomas': 32,
         'usher': 32,
         'old': 32,
         'dolores': 32,
         'fred': 34,
         'jim': 42,
         'danny': 32,
         'charles': 32,
         'reporter': 32,
         'maricella': 37,
         'monica': 36,
         'ernesto': 37,
         'god': 33
     }
Exemple #8
0
 def _send(self, message):
     if not isinstance(message, SysexMessage):
         raise ValueError("Can only send a SysexMessage")
     p = mido.Parser()
     p.feed(message.serialize())
     self._outport.send(p.get_message())
Exemple #9
0

from mido import MidiFile
import mido
output = mido.open_output()
output.send(mido.Message('note_on', note = 60, velocity=64))


with input as mido.open_input('SH-201'):
	for message in input:
		print(message)

from mido import MidiFile
for message in MidiFile('song.mid').play():
	output.send(message)
p = mido.Parser()
p.feed([0x90, 0x40])
p.feed_byte(0x60)

p.pending()
for message in p:
	print(message)

#note_on channel=0 note=64 velocity=96 time=0

for message in MidiFile('song.mid').play():
	port.send(message)

from mido import Message
msg = Message('note_on', note=60)
msg
Exemple #10
0
 def not_test_parse_random_bytes(self):
     r = random.Random('a_random_seed')
     parser = mido.Parser()
     for _ in range(10000):
         byte = r.randrange(256)
         parser.feed_byte(byte)
Exemple #11
0
LIGHT_OFF = 0x00
LIGHT_GREEN = 0x01
LIGHT_RED = 0x03
LIGHT_YELLOW = 0x05
LIGHT_BLINK_GREEN = 0x02
LIGHT_BLINK_RED = 0x04
LIGHT_BLINK_YELLOW = 0x06

COLOR_MAP = {
    "green": LIGHT_GREEN,
    "red": LIGHT_RED,
    "yellow": LIGHT_YELLOW,
}

parser = mido.Parser()


def get_arguments(argv):
    """"Creates and returns the ArgumentParser object."""
    argParser = argparse.ArgumentParser(description='APC mini enlighter')

    group = argParser.add_mutually_exclusive_group()
    group.add_argument("-l",
                       "--list",
                       help="List port names",
                       action="store_true")
    group.add_argument("-i", "--input", help="Path to the input file")
    argParser.add_argument("-p", "--port", help="Name of the port to use")
    parsed_args = argParser.parse_args(argv[1:])
Exemple #12
0
import pdb

data_path = join(
    expanduser('~'), 'Downloads',
    'maestro-v2.0.0.zip')  #'/home/David/Downloads/maestro-v2.0.0.zip'
with ZipFile(data_path, 'r') as archive:

    #get the list of files in the archive.
    info = json.loads(
        archive.read(join('maestro-v2.0.0', 'maestro-v2.0.0.json')))

    #split into test, train, and validation sets
    test = list(filter(lambda entry: entry['split'] == 'test', info))
    train = list(filter(lambda entry: entry['split'] == 'train', info))
    validation = list(
        filter(lambda entry: entry['split'] == 'validation', info))

    #
    wav = BytesIO(
        archive.read(join('maestro-v2.0.0', test[0]['audio_filename'])))
    midi = archive.read(join('maestro-v2.0.0', test[0]['midi_filename']))

    wav = wavfile.read(wav)
    pdb.set_trace()
    midi_parser = mido.Parser()
    midi_parser.feed(midi)
    #for m in midi_parser: m
    #write function/library to convert from midi-messages to piano-roll data

    pdb.set_trace()
    pass