.. _moduleMidi.translate:

music21.midi.translate
======================

.. WARNING: DO NOT EDIT THIS FILE: AUTOMATICALLY GENERATED.  Edit the .py file directly

.. module:: music21.midi.translate



.. function:: chordToMidiEvents(inputM21, includeDeltaTime=True)

    

    >>> from music21 import *
    >>> c = chord.Chord(['c3','g#4', 'b5'])
    >>> eventList = chordToMidiEvents(c)
    >>> eventList
    [<MidiEvent DeltaTime, t=0, track=None, channel=None>, <MidiEvent NOTE_ON, t=None, track=None, channel=1, pitch=48, velocity=90>, <MidiEvent DeltaTime, t=0, track=None, channel=None>, <MidiEvent NOTE_ON, t=None, track=None, channel=1, pitch=68, velocity=90>, <MidiEvent DeltaTime, t=0, track=None, channel=None>, <MidiEvent NOTE_ON, t=None, track=None, channel=1, pitch=83, velocity=90>, <MidiEvent DeltaTime, t=1024, track=None, channel=None>, <MidiEvent NOTE_OFF, t=None, track=None, channel=1, pitch=48, velocity=0>, <MidiEvent DeltaTime, t=0, track=None, channel=None>, <MidiEvent NOTE_OFF, t=None, track=None, channel=1, pitch=68, velocity=0>, <MidiEvent DeltaTime, t=0, track=None, channel=None>, <MidiEvent NOTE_OFF, t=None, track=None, channel=1, pitch=83, velocity=0>] 

    

.. function:: chordToMidiFile(inputM21)


.. function:: durationToMidi(d)


.. function:: getEndEvents(mt=None, channelNumber=1)

    Provide a list of events found at the end of a track. 

.. function:: getStartEvents(mt=None, instrumentObj=None)

    Provide a list of events found at the beginning of a track. A MidiTrack reference can be provided via the `mt` parameter. 

.. function:: instrumentToMidiEvents(inputM21, includeDeltaTime=True)


.. function:: keySignatureToMidiEvents(ks, includeDeltaTime=True)

    Convert a single MIDI event into a music21 TimeSignature object. 

    >>> from music21 import key
    >>> ks = key.KeySignature(2)
    >>> ks
    <music21.key.KeySignature of 2 sharps> 
    >>> eventList = keySignatureToMidiEvents(ks)
    >>> eventList[1]
    <MidiEvent KEY_SIGNATURE, t=None, track=None, channel=1, data='\x02\x00'> 
    >>> ks = key.KeySignature(-5)
    >>> ks
    <music21.key.KeySignature of 5 flats> 
    >>> eventList = keySignatureToMidiEvents(ks)
    >>> eventList[1]
    <MidiEvent KEY_SIGNATURE, t=None, track=None, channel=1, data='\xfb\x00'> 

.. function:: midiEventsToChord(eventList, ticksPerQuarter=None, inputM21=None)

    

    

    >>> from music21 import *
    >>> mt = midi.MidiTrack(1)
    >>> dt1 = midi.DeltaTime(mt)
    >>> dt1.time = 0
    >>> me1 = midi.MidiEvent(mt)
    >>> me1.type = "NOTE_ON"
    >>> me1.pitch = 45
    >>> me1.velocity = 94
    >>> dt2 = midi.DeltaTime(mt)
    >>> dt2.time = 0
    >>> me2 = midi.MidiEvent(mt)
    >>> me2.type = "NOTE_ON"
    >>> me2.pitch = 46
    >>> me2.velocity = 94

    
    >>> dt3 = midi.DeltaTime(mt)
    >>> dt3.time = 2048
    >>> me3 = midi.MidiEvent(mt)
    >>> me3.type = "NOTE_OFF"
    >>> me3.pitch = 45
    >>> me3.velocity = 0
    >>> dt4 = midi.DeltaTime(mt)
    >>> dt4.time = 0
    >>> me4 = midi.MidiEvent(mt)
    >>> me4.type = "NOTE_OFF"
    >>> me4.pitch = 46
    >>> me4.velocity = 0
    >>> c = midiEventsToChord([dt1, me1, dt2, me2, dt3, me3, dt4, me4])
    >>> c
    <music21.chord.Chord A2 B-2> 
    >>> c.duration.quarterLength
    2.0 

.. function:: midiEventsToKeySignature(eventList)

    Convert a single MIDI event into a music21 TimeSignature object. 

    >>> from music21 import *
    >>> mt = midi.MidiTrack(1)
    >>> me1 = midi.MidiEvent(mt)
    >>> me1.type = "KEY_SIGNATURE"
    >>> me1.data = midi.putNumbersAsList([2, 0]) # d major
    >>> ks = midiEventsToKeySignature(me1)
    >>> ks
    <music21.key.KeySignature of 2 sharps> 
    >>> me2 = midi.MidiEvent(mt)
    >>> me2.type = "KEY_SIGNATURE"
    >>> me2.data = midi.putNumbersAsList([-2, 0]) # b- major
    >>> me2.data
    '\xfe\x00' 
    >>> midi.getNumbersAsList(me2.data)
    [254, 0] 
    >>> ks = midiEventsToKeySignature(me2)
    >>> ks
    <music21.key.KeySignature of 2 flats> 

    

.. function:: midiEventsToNote(eventList, ticksPerQuarter=None, inputM21=None)

    Convert from a list of MIDI message to a music21 note The `inputM21` parameter can be a Note or None; in the case of None, a Note object is created. 

    >>> from music21 import *
    >>> mt = midi.MidiTrack(1)
    >>> dt1 = midi.DeltaTime(mt)
    >>> dt1.time = 1024
    >>> me1 = midi.MidiEvent(mt)
    >>> me1.type = "NOTE_ON"
    >>> me1.pitch = 45
    >>> me1.velocity = 94
    >>> dt2 = midi.DeltaTime(mt)
    >>> dt2.time = 2048
    >>> me1 = midi.MidiEvent(mt)
    >>> me1.type = "NOTE_ON"
    >>> me1.pitch = 45
    >>> me1.velocity = 0
    >>> n = midiEventsToNote([dt1, me1, dt2, me1])
    >>> n.pitch
    A2 
    >>> n.duration.quarterLength
    1.0 

.. function:: midiEventsToTimeSignature(eventList)

    Convert a single MIDI event into a music21 TimeSignature object. 

    >>> from music21 import *
    >>> mt = midi.MidiTrack(1)
    >>> me1 = midi.MidiEvent(mt)
    >>> me1.type = "TIME_SIGNATURE"
    >>> me1.data = midi.putNumbersAsList([3, 1, 24, 8]) # 3/2 time
    >>> ts = midiEventsToTimeSignature(me1)
    >>> ts
    <music21.meter.TimeSignature 3/2> 
    >>> me2 = midi.MidiEvent(mt)
    >>> me2.type = "TIME_SIGNATURE"
    >>> me2.data = midi.putNumbersAsList([3, 4]) # 3/16 time
    >>> ts = midiEventsToTimeSignature(me2)
    >>> ts
    <music21.meter.TimeSignature 3/16> 

    

.. function:: midiFileToStream(mf, inputM21=None)

    

    >>> from music21 import *
    >>> import os
    >>> fp = os.path.join(common.getSourceFilePath(), 'midi', 'testPrimitive',  'test05.mid')
    >>> mf = midi.MidiFile()
    >>> mf.open(fp)
    >>> mf.read()
    >>> mf.close()
    >>> len(mf.tracks)
    1 
    >>> s = midiFileToStream(mf)
    >>> len(s.flat.notes)
    9 

.. function:: midiToDuration(ticks, ticksPerQuarter=None, inputM21=None)


.. function:: midiTrackToStream(mt, ticksPerQuarter=None, quantizePost=True, inputM21=None)

    

    >>> from music21 import *
    >>> import os
    >>> fp = os.path.join(common.getSourceFilePath(), 'midi', 'testPrimitive',  'test05.mid')
    >>> mf = midi.MidiFile()
    >>> mf.open(fp)
    >>> mf.read()
    >>> mf.close()
    >>> len(mf.tracks)
    1 
    >>> mt = mf.tracks[0]
    >>> s = midiTrackToStream(mt)
    >>> len(s.notes)
    9 

.. function:: midiTracksToStreams(midiTracks, ticksPerQuarter=None, quantizePost=True, inputM21=None)

    Given a list of midiTracks, populate this Stream with sub-streams for each part. 

.. function:: noteToMidiEvents(inputM21, includeDeltaTime=True)

    Translate Note to four MIDI events. 

    >>> from music21 import *
    >>> n1 = note.Note()
    >>> eventList = noteToMidiEvents(n1)
    >>> eventList
    [<MidiEvent DeltaTime, t=0, track=None, channel=None>, <MidiEvent NOTE_ON, t=None, track=None, channel=1, pitch=60, velocity=90>, <MidiEvent DeltaTime, t=1024, track=None, channel=None>, <MidiEvent NOTE_OFF, t=None, track=None, channel=1, pitch=60, velocity=0>] 
    >>> n1.duration.quarterLength = 2.5
    >>> eventList = noteToMidiEvents(n1)
    >>> eventList
    [<MidiEvent DeltaTime, t=0, track=None, channel=None>, <MidiEvent NOTE_ON, t=None, track=None, channel=1, pitch=60, velocity=90>, <MidiEvent DeltaTime, t=2560, track=None, channel=None>, <MidiEvent NOTE_OFF, t=None, track=None, channel=1, pitch=60, velocity=0>] 

.. function:: noteToMidiFile(inputM21)

    

    >>> from music21 import note
    >>> n1 = note.Note()
    >>> n1.quarterLength = 6
    >>> mf = noteToMidiFile(n1)
    >>> mf.tracks[0].events
    [<MidiEvent DeltaTime, t=0, track=1, channel=None>, <MidiEvent SEQUENCE_TRACK_NAME, t=0, track=1, channel=None, data=''>, <MidiEvent DeltaTime, t=0, track=1, channel=None>, <MidiEvent NOTE_ON, t=None, track=1, channel=1, pitch=60, velocity=90>, <MidiEvent DeltaTime, t=6144, track=1, channel=None>, <MidiEvent NOTE_OFF, t=None, track=1, channel=1, pitch=60, velocity=0>, <MidiEvent DeltaTime, t=0, track=1, channel=None>, <MidiEvent END_OF_TRACK, t=None, track=1, channel=1, data=''>] 

.. function:: offsetToMidi(o)

    Convert an offset value to MIDI ticks. 

.. function:: streamToMidiFile(inputM21)

    

    >>> from music21 import *
    >>> s = stream.Stream()
    >>> n = note.Note('g#')
    >>> n.quarterLength = .5
    >>> s.repeatAppend(n, 4)
    >>> mf = streamToMidiFile(s)
    >>> len(mf.tracks)
    1 
    >>> len(mf.tracks[0].events)
    20 

.. function:: streamToMidiTrack(inputM21, instObj=None, trackId=1)

    Returns a :class:`music21.midi.base.MidiTrack` object based on the content of this Stream. This assumes that this Stream has only one Part. For Streams that contain sub-streams, use streamToMidiTracks. 

    >>> from music21 import *
    >>> s = stream.Stream()
    >>> n = note.Note('g#')
    >>> n.quarterLength = .5
    >>> s.repeatAppend(n, 4)
    >>> mt = streamToMidiTrack(s)
    >>> len(mt.events)
    20 

.. function:: streamsToMidiTracks(inputM21)

    Given a multipart stream, return a list of MIDI tracks. 

.. function:: timeSignatureToMidiEvents(ts, includeDeltaTime=True)

    Translate a m21 TiemSignature to a pair of events, including a DeltaTime. 

    >>> from music21 import *
    >>> ts = meter.TimeSignature('5/4')
    >>> eventList = timeSignatureToMidiEvents(ts)
    >>> eventList[0]
    <MidiEvent DeltaTime, t=0, track=None, channel=None> 
    >>> eventList[1]
    <MidiEvent TIME_SIGNATURE, t=None, track=None, channel=1, data='\x05\x02\x18\x08'> 

