Exemplo n.º 1
0
def build_note_off(channel,note,velocity,time):
    m = Message("note_off")
    m.channel = channel
    m.note = note
    m.velocity = velocity
    m.time = time
    return m
Exemplo n.º 2
0
def raw_to_msg(raw):
    if raw[0] == 144:
        msg = Message.from_bytes(raw[:3])
    else:
        msg = Message('sysex', data=[])
    msg.time = raw[3] / 1000
    return msg
Exemplo n.º 3
0
 def appendNote(self, note, velocity, time, seconds = False):
     msg = Message("note_on")
     msg.note = note
     msg.velocity = velocity
     ## time (s) * (ticks / beat) * (beats / min) * (1min / 60s)
     msg.time = time if seconds == False else int(round(time / self.seconds))
     self.appendMsg(msg)
Exemplo n.º 4
0
 def send (self, msg: mido.Message):
     self.input.send(msg)
     channel: RuntimeChannelData = self.runtime_data.channel_data(msg.channel)
     data: ChannelData = self.cube.reg().data(self).channel_data(msg.channel)
     index = 0
     curr_bar = self.bar_counter % data.bars
     msg.time = time.clock_gettime_ns(time.CLOCK_BOOTTIME) - channel.last_start
     #Find postition
     for i in range(len(channel.messages)):
         if channel.messages[len(channel.messages) - i - 1].time < msg.time:
             index = len(channel.messages) - i
     #Insert
     channel.messages.insert(index, msg)
Exemplo n.º 5
0
def shiftAndScale(inputFileName, outputFileName, pitchShift, timeScale):
    orig = MidiFile(inputFileName)
    mid = MidiFile()

    for tr in orig.tracks:
        track = MidiTrack()
        mid.tracks.append(track)
        #<meta message track_name name='Grand Piano' time=0>

        # time=0 could be replaced be time=timeShift if necessary
        msg = Message('note_on', note=0, velocity=0, time=0)
        track.append(msg)

        for msg in tr:
            if msg.type == 'note_on':
                msg.time = round(msg.time * timeScale)
                msg.note = msg.note + pitchShift
                track.append(msg)
    mid.save(outputFileName)
Exemplo n.º 6
0
def encoding_to_message(encoding, decodings, defaults=master_defaults):

    message = decodings[encoding]

    if message == "START_TRACK":
        #header defaults
        time_signature = MetaMessage("time_signature")
        time_signature.numerator = defaults["time_signature.numerator"]
        time_signature.denominator = defaults["time_signature.denominator"]
        time_signature.clocks_per_click = defaults[
            "time_signature.clocks_per_click"]
        time_signature.notated_32nd_notes_per_beat = defaults[
            "time_signature.notated_32nd_notes_per_beat"]

        key_signature = MetaMessage("key_signature")
        key_signature.key = defaults["key_signature.key"]

        set_tempo = MetaMessage("set_tempo")
        set_tempo.tempo = defaults["set_tempo.tempo"]

        return [time_signature, key_signature, set_tempo]

    if message == "END_TRACK":
        return [MetaMessage('end_of_track')]

    if message == "WAIT_A_BEAT":
        return [message]

    if message.startswith("note"):
        parts = message.split("-")
        res = Message(parts[0])
        res.note = int(parts[1])
        res.time = int(parts[2])
        # defaults
        res.channel = defaults["note.channel"]
        res.velocity = defaults["note.velocity"]
        return [res]

    return []