mdOpenInPort, mdOpenOutPort, mdClosePort, mdGetFd - open and close
MDport mdOpenInPort(char *name)
MDport mdOpenOutPort(char *name)
int mdClosePort(MDport port)
int mdGetFd(MDport port)
mdOpenInPort and mdOpenOutPort create an MDport for a specified
interface. An MDport maintains the state of the communications path
between the application and a MIDI interface. An MDport is passed as the
first argument to most MIDI library routines.
The name parameter contains the name of the MIDI interface to which the
newly opened port is connected. The mdGetName(3dm) function returns
strings which can be used as valid values of name. If NULL is passed in
for name, the default MIDI interface will be opened.
When a port is first opened, its default stamp mode is MD_DELTASTAMP and
the origin of the port is set to the time at which it was opened (see
mdSetStartPoint(3dm)). If the application changes the stamp mode to one
of the tick modes (either MD_RELATIVETICK or MD_DELTATICK), the port will
use a default tempo of 500000 and a default division of 384. However, an
application should explicitly set any port parameters it depends on
rather than depending on the default values.
mdClosePort closes the connection to the MIDI interface and frees all
resources associated with the connection. When a port is closed, all
events that have been queued but not yet transmitted are discarded. As a
result, the application may need to insure that all desired events have
been transmitted before closing the port. One way the application can do
this is for it to wait until mdTellNow(3dm) returns the stamp of the last
The application must call mdInit(3dm) before calling either mdOpenInPort
or mdOpenOutPort. Failing to do so will produce indeterminant results.
mdGetFd returns a file descriptor that an application can use to
construct the arguments for a select(2) or poll(2) call. These calls are
used when the application wants to give up control of the CPU (letting
other processes use the CPU) until a port becomes ready for input or
output. MIDI input ports are considered to be ready when one or more
events are available for reception. Output ports are ready when they are
capable of accepting additional events. Once a port becomes ready,
select and poll return, and the application can continue processing.
When using select, an input port's file descriptor is used in a read
fdset and an output port's file descriptor is used in a write fdset.
When using poll, an input port's file descriptor is used with the POLLIN
event flag and an output port's file descriptor is used with a POLLOUT
mdGetFd should only be used in select or poll; the results of passing it
as an argument to any other system calls are undefined.
mdOpenInPort and mdOpenOutPort return an MDport on success or NULL in
event of failure. mdClosePort returns 0 on success and -1 on failure.
On an error, errno will be set to one of the following:
ENOMEM - No memory was available for the MDport data structure
ENODEV - The MIDI driver wasn't present
EINVAL - An undefined operation was called.
mdGetFd returns a file descriptor. On an error it returns -1.
mdIntro(3dm), mdSetStampMode(3dm), mdGetName(3dm), mdTellNow(3dm),
PPPPaaaaggggeeee 2222 [ Back ]