1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153
|
.. SPDX-FileCopyrightText: 2013 Ole Martin Bjorndalen <ombdalen@gmail.com>
..
.. SPDX-License-Identifier: CC-BY-4.0
Mido - MIDI Objects for Python
==============================
.. image:: https://img.shields.io/badge/License-MIT-blue.svg
:alt: MIT License
:target: https://github.com/mido/mido/blob/main/LICENSES/MIT.txt
.. image:: https://img.shields.io/pypi/v/mido.svg
:alt: PyPi version
:target: https://pypi.org/project/mido
.. image:: https://img.shields.io/pypi/pyversions/mido.svg
:alt: Python version
:target: https://python.org
.. image:: https://pepy.tech/badge/mido
:alt: Downloads
:target: https://pepy.tech/project/mido
.. image:: https://github.com/mido/mido/workflows/Test/badge.svg
:alt: Test status
:target: https://github.com/mido/mido/actions
.. image:: https://readthedocs.org/projects/mido/badge/?version=latest
:alt: Docs status
:target: https://mido.readthedocs.io/
.. image:: https://api.reuse.software/badge/github.com/mido/mido
:alt: REUSE status
:target: https://api.reuse.software/info/github.com/mido/mido
.. image:: https://www.bestpractices.dev/projects/7987/badge
:alt: OpenSSF Best Practices
:target: https://www.bestpractices.dev/projects/7987
Mido is a library for working with MIDI messages and ports:
.. code-block:: python
>>> import mido
>>> msg = mido.Message('note_on', note=60)
>>> msg.type
'note_on'
>>> msg.note
60
>>> msg.bytes()
[144, 60, 64]
>>> msg.copy(channel=2)
Message('note_on', channel=2, note=60, velocity=64, time=0)
.. code-block:: python
port = mido.open_output('Port Name')
port.send(msg)
.. code-block:: python
with mido.open_input() as inport:
for msg in inport:
print(msg)
.. code-block:: python
mid = mido.MidiFile('song.mid')
for msg in mid.play():
port.send(msg)
Full documentation at https://mido.readthedocs.io/
Main Features
-------------
* convenient message objects.
* supports RtMidi, PortMidi and Pygame. New backends are easy to
write.
* full support for all 18 messages defined by the MIDI standard.
* standard port API allows all kinds of input and output ports to be
used interchangeably. New port types can be written by subclassing
and overriding a few methods.
* includes a reusable MIDI stream parser.
* full support for MIDI files (read, write, create and play) with
complete access to every message in the file, including all common
meta messages.
* can read and write SYX files (binary and plain text).
* implements (somewhat experimental) MIDI over TCP/IP with socket
ports. This allows for example wireless MIDI between two
computers.
* includes programs for playing MIDI files, listing ports and
serving and forwarding ports over a network.
Status
------
1.3 is the fourth stable release.
This project uses `Semantic Versioning <https://semver.org>`_.
Requirements
------------
Mido requires Python 3.7 or higher.
Installing
----------
::
python3 -m pip install mido
Or, alternatively, if you want to use ports with the default backend::
python3 -m pip install mido[ports-rtmidi]
See ``docs/backends/`` for other backends.
Source Code
-----------
https://github.com/mido/mido/
License
-------
Mido is released under the terms of the `MIT license
<http://en.wikipedia.org/wiki/MIT_License>`_.
Questions and suggestions
-------------------------
For questions and proposals which may not fit into issues or pull requests,
we recommend to ask and discuss in the `Discussions
<https://github.com/mido/mido/discussions>`_ section.
|