MIDI Input and Output

rcp.midi

Objects related to MIDI event processing.

class rcp.midi.MIDIEncoder[source]

Abstract class for composing MIDI messages.

channel_pressure(channel, value)[source]

Send a Channel Pressure (aftertouch) message.

Parameters:
  • channel – MIDI channel, integer on [1,16]

  • value – MIDI value, integer on [0,127]

control_change(channel, controller, value)[source]

Send a Controller Change message.

Parameters:
  • channel – MIDI channel, integer on [1,16]

  • controller – MIDI controller index, integer on [0,127]

  • value – MIDI value, integer on [0,127]

message(message)[source]

Overridable method to output a single MIDI message.

Parameters:

message – list of integers constituting a MIDI message

note_off(channel, note, velocity=0)[source]

Send a Note On message.

Parameters:
  • channel – MIDI channel, integer on [1,16]

  • note – MIDI note, integer on [0,127]

  • velocity – optional MIDI velocity, integer on [0,127], normally zero, default zero

note_on(channel, note, velocity)[source]

Send a Note On message.

Parameters:
  • channel – MIDI channel, integer on [1,16]

  • note – MIDI note, integer on [0,127]

  • velocity – MIDI velocity, integer on [0,127]

polyphonic_key_pressure(channel, key, pressure)[source]

Send a Polyphonic Key Pressure message.

Parameters:
  • channel – MIDI channel, integer on [1,16]

  • note – MIDI note, integer on [0,127]

  • pressure – MIDI aftertouch, integer on [0,127]

class rcp.midi.MIDIProcessor[source]

Abstract class for processing MIDI events. Provides a callback for the specific MIDI events we use in our systems so this may be subclassed to implement a MIDI stream processor. This defines an informal protocol for MIDI input. This may be extended to more event times as needed.

channel_pressure(channel, value)[source]

Function to receive messages starting with 0xD0 through 0xDF.

Parameters:
  • channel – integer from 1 to 16

  • value – integer from 0 to 127

control_change(channel, control, value)[source]

Function to receive messages starting with 0xB0 through 0xBF.

Parameters:
  • channel – integer from 1 to 16

  • control – integer from 0 to 127; some have special meanings

  • value – integer from 0 to 127

decode_message(message)[source]

Decode a MIDI message expressed as a list of integers and perform callbacks for recognized message types.

Parameters:

message – list of integers containing a single MIDI message

decode_mpd218_cc(cc)[source]

Interpret a MPD218 knob control change event as a knob index and bank position. The MPD218 uses a non-contiguous set of channel indices so this normalizes the result. The knob index ranges from 1 to 6 matching the knob labels. Bank 0 is the A bank, bank 1 is the B bank, bank 2 is the C bank.

Parameters:

cc – an integer MIDI control channel identifier

Returns:

(knob, bank)

decode_mpd218_key(key)[source]

Interpret a MPD218 pad event key value as a row, column, and bank position. Row 0 is the front/bottom row (Pads 1-4), row 3 is the back/top row (Pads 13-16). Column 0 is the left, column 3 is the right. Bank 0 is the A bank, bank 1 is the B bank, bank 2 is the C bank.

Parameters:

key – an integer MIDI note value

Returns:

(row, column, bank)

note_off(channel, key, velocity)[source]

Function to receive messages starting with 0x80 through 0x8F.

Parameters:
  • channel – integer from 1 to 16

  • key – integer from 0 to 127

  • velocity – integer from 0 to 127

note_on(channel, key, velocity)[source]

Function to receive messages starting with 0x90 through 0x9F.

Parameters:
  • channel – integer from 1 to 16

  • key – integer from 0 to 127

  • velocity – integer from 0 to 127

polyphonic_key_pressure(channel, key, value)[source]

Function to receive messages starting with 0xA0 through 0xAF.

Parameters:
  • channel – integer from 1 to 16

  • key – integer from 0 to 127

  • value – integer from 0 to 127

class rcp.midi.QtMIDIListener(*args: Any, **kwargs: Any)[source]

Object to manage a MIDI input connection.

connect_midi_processor(processor)[source]

Attach an object to receive MIDI input events, generally a subclass of MIDIProcessor.

get_midi_port_names()[source]

Return a list of unique names for the current MIDI input ports. Duplicate names are modified to guarantee the uniqueness condition.

open_MIDI_input(name)[source]

Open the MIDI in port with the given name (a string). If the port is already open, this will close it first.

class rcp.midi.QtMIDISender[source]

Object to manage a MIDI output connection using rtmidi.

get_midi_port_names()[source]

Return a list of names of the current MIDI output ports.

message(message)[source]

Send a single MIDI message.

Parameters:

message – list of integers constituting a MIDI message

open_MIDI_output(name)[source]

Open the MIDI out port with the given name (a string). If the port is already open, this will close it first.