Classes | Defines | Typedefs | Enumerations | Functions

Functions used when implementing your own midi device.

Classes

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

Defines

#define MIDI_INPUT_QUEUE_LENGTH   192

Typedefs

typedef void(* midi_no_byte_func_t )(MidiDevice *device)

Enumerations

enum  input_state_t {
  IDLE, ONE_BYTE_MESSAGE = 1, TWO_BYTE_MESSAGE = 2, THREE_BYTE_MESSAGE = 3,
  SYSEX_MESSAGE
}

Functions

void midi_device_input (MidiDevice *device, uint8_t cnt, uint8_t byte0, uint8_t byte1, uint8_t byte2)
 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.
void midi_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.
void midi_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.

Detailed Description

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


Define Documentation

#define MIDI_INPUT_QUEUE_LENGTH   192

Typedef Documentation

typedef void(* midi_no_byte_func_t)(MidiDevice *device)

Enumeration Type Documentation

Enumerator:
IDLE 
ONE_BYTE_MESSAGE 
TWO_BYTE_MESSAGE 
THREE_BYTE_MESSAGE 
SYSEX_MESSAGE 

Function Documentation

void midi_device_input ( MidiDevice device,
uint8_t  cnt,
uint8_t  byte0,
uint8_t  byte1,
uint8_t  byte2 
)

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
byte0 the first byte to process
byte1 the second byte to process, ignored if cnt != 2
byte2 the third byte to process , ignored if cnt != 3
void midi_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
void midi_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