Midi Device

Last updated 11 months ago

group midi_device

You use the functions when you are implementing your own midi device.

You set a send function to actually send bytes via your device, this method is called when you call a send function with this device, for instance midi_send_cc

You use the midi_device_input to process input data from the device and pass it through the device's associated callbacks.

You use the midi_device_set_pre_input_process_func if you want to have a function called at the beginning of the device's process function, generally to poll for input and pass that into midi_device_input

Summary

Members

Descriptions

defineMIDI_INPUT_QUEUE_LENGTH

enuminput_state_t

public voidmidi_device_input(MidiDevice* device,uint8_t cnt,uint8_t * input)

Process input bytes. This function parses bytes and calls the appropriate callbacks associated with the given device. You use this function if you are creating a custom device and you want to have midi input.

public voidmidi_device_set_send_func(MidiDevice* device,midi_var_byte_func_t send_func)

Set the callback function that will be used for sending output data bytes. This is only used if you're creating a custom device. You'll most likely want the callback function to disable interrupts so that you can call the various midi send functions without worrying about locking.

public voidmidi_device_set_pre_input_process_func(MidiDevice* device,midi_no_byte_func_t pre_process_func)

Set a callback which is called at the beginning of the midi_device_process call. This can be used to poll for input data and send the data through the midi_device_input function. You'll probably only use this if you're creating a custom device.

struct_midi_device

This structure represents the input and output functions and processing data for a midi device.

Members

Values

Descriptions

IDLE

ONE_BYTE_MESSAGE

TWO_BYTE_MESSAGE

THREE_BYTE_MESSAGE

SYSEX_MESSAGE

public voidmidi_device_input(MidiDevice* device,uint8_t cnt,uint8_t * input)

Process input bytes. This function parses bytes and calls the appropriate callbacks associated with the given device. You use this function if you are creating a custom device and you want to have midi input.

Parameters

  • device the midi device to associate the input with

  • cnt the number of bytes you are processing

  • input the bytes to process

public voidmidi_device_set_send_func(MidiDevice* device,midi_var_byte_func_t send_func)

Set the callback function that will be used for sending output data bytes. This is only used if you're creating a custom device. You'll most likely want the callback function to disable interrupts so that you can call the various midi send functions without worrying about locking.

Parameters

  • device the midi device to associate this callback with

  • send_func the callback function that will do the sending

public voidmidi_device_set_pre_input_process_func(MidiDevice* device,midi_no_byte_func_t pre_process_func)

Set a callback which is called at the beginning of the midi_device_process call. This can be used to poll for input data and send the data through the midi_device_input function. You'll probably only use this if you're creating a custom device.

Parameters

  • device the midi device to associate this callback with

  • midi_no_byte_func_t the actual callback function

struct _midi_device

This structure represents the input and output functions and processing data for a midi device.

A device can represent an actual physical device [serial port, usb port] or something virtual. You should not need to modify this structure directly.

Summary

Members

Descriptions

public midi_var_byte_func_tsend_func

public midi_three_byte_func_tinput_cc_callback

public midi_three_byte_func_tinput_noteon_callback

public midi_three_byte_func_tinput_noteoff_callback

public midi_three_byte_func_tinput_aftertouch_callback

public midi_three_byte_func_tinput_pitchbend_callback

public midi_three_byte_func_tinput_songposition_callback

public midi_two_byte_func_tinput_progchange_callback

public midi_two_byte_func_tinput_chanpressure_callback

public midi_two_byte_func_tinput_songselect_callback

public midi_two_byte_func_tinput_tc_quarterframe_callback

public midi_one_byte_func_tinput_realtime_callback

public midi_one_byte_func_tinput_tunerequest_callback

public midi_sysex_func_tinput_sysex_callback

public midi_var_byte_func_tinput_fallthrough_callback

public midi_var_byte_func_tinput_catchall_callback

public midi_no_byte_func_tpre_input_process_callback

public uint8_tinput_buffer

public input_state_tinput_state

public uint16_tinput_count

public uint8_tinput_queue_data

publicbyteQueue_t`[input_queue`](#structmididevice_1a49c8538a8a02193c58e28a56eb695d8f)

Members

public midi_var_byte_func_tsend_func

public midi_three_byte_func_tinput_cc_callback

public midi_three_byte_func_tinput_noteon_callback

public midi_three_byte_func_tinput_noteoff_callback

public midi_three_byte_func_tinput_aftertouch_callback

public midi_three_byte_func_tinput_pitchbend_callback

public midi_three_byte_func_tinput_songposition_callback

public midi_two_byte_func_tinput_progchange_callback

public midi_two_byte_func_tinput_chanpressure_callback

public midi_two_byte_func_tinput_songselect_callback

public midi_two_byte_func_tinput_tc_quarterframe_callback

public midi_one_byte_func_tinput_realtime_callback

public midi_one_byte_func_tinput_tunerequest_callback

public midi_sysex_func_tinput_sysex_callback

public midi_var_byte_func_tinput_fallthrough_callback

public midi_var_byte_func_tinput_catchall_callback

public midi_no_byte_func_tpre_input_process_callback

public uint8_tinput_buffer

public input_state_tinput_state

public uint16_tinput_count

public uint8_tinput_queue_data

publicbyteQueue_t`[input_queue`](#structmididevice_1a49c8538a8a02193c58e28a56eb695d8f)