Applications can use stream buffers to send streams of MIDI events to a device. Each stream buffer is a block of memory pointed to by a MIDIHDR structure. This block of memory contains data for one or more MIDI events, each of which is defined by a MIDIEVENT structure. An application controls the buffer by calling the stream-manipulation functions, such as midiStreamOpen, midiStreamOut, and midiStreamClose.