Lines Matching refs:rawmidi
2 * \file rawmidi/rawmidi.c
8 * See the \ref rawmidi page for more details.
28 /*! \page rawmidi RawMidi interface
37 The rawmidi implementation uses ring buffers to store outgoing and incoming
64 is not opened exclusively, so more applications can share given rawmidi device.
93 defaults.rawmidi.card 0
94 defaults.rawmidi.device 0
95 defaults.rawmidi.subdevice -1
123 Optionally, incoming rawmidi bytes can be marked with timestamps. The library hides
137 This example shows open and read/write rawmidi operations.
142 * \example ../test/rawmidi.c
144 * Shows open and read/write rawmidi operations.
156 * \param rawmidi RawMidi handle
160 static int snd_rawmidi_params_default(snd_rawmidi_t *rawmidi, snd_rawmidi_params_t *params)
162 assert(rawmidi);
291 err = snd_config_search_definition(root, "rawmidi", name, &rawmidi_conf);
354 * \param rawmidi RawMidi handle
360 int snd_rawmidi_close(snd_rawmidi_t *rawmidi)
363 assert(rawmidi);
364 err = rawmidi->ops->close(rawmidi);
365 free(rawmidi->name);
366 if (rawmidi->open_func)
367 snd_dlobj_cache_put(rawmidi->open_func);
368 free(rawmidi);
374 * \param rawmidi a RawMidi handle
380 const char *snd_rawmidi_name(snd_rawmidi_t *rawmidi)
382 assert(rawmidi);
383 return rawmidi->name;
388 * \param rawmidi a RawMidi handle
393 snd_rawmidi_type_t snd_rawmidi_type(snd_rawmidi_t *rawmidi)
395 assert(rawmidi);
396 return rawmidi->type;
401 * \param rawmidi a RawMidi handle
406 snd_rawmidi_stream_t snd_rawmidi_stream(snd_rawmidi_t *rawmidi)
408 assert(rawmidi);
409 return rawmidi->stream;
414 * \param rawmidi RawMidi handle
417 int snd_rawmidi_poll_descriptors_count(snd_rawmidi_t *rawmidi)
419 assert(rawmidi);
425 * \param rawmidi RawMidi handle
430 int snd_rawmidi_poll_descriptors(snd_rawmidi_t *rawmidi, struct pollfd *pfds, unsigned int space)
432 assert(rawmidi);
434 pfds->fd = rawmidi->poll_fd;
435 pfds->events = rawmidi->stream == SND_RAWMIDI_STREAM_OUTPUT ? (POLLOUT|POLLERR|POLLNVAL) : (POLLIN|POLLERR|POLLNVAL);
443 * \param rawmidi rawmidi RawMidi handle
449 int snd_rawmidi_poll_descriptors_revents(snd_rawmidi_t *rawmidi, struct pollfd *pfds, unsigned int nfds, unsigned short *revents)
451 assert(rawmidi && pfds && revents);
461 * \param rawmidi RawMidi handle
468 int snd_rawmidi_nonblock(snd_rawmidi_t *rawmidi, int nonblock)
471 assert(rawmidi);
472 assert(!(rawmidi->mode & SND_RAWMIDI_APPEND));
473 if ((err = rawmidi->ops->nonblock(rawmidi, nonblock)) < 0)
476 rawmidi->mode |= SND_RAWMIDI_NONBLOCK;
478 rawmidi->mode &= ~SND_RAWMIDI_NONBLOCK;
533 * \brief get rawmidi device number
535 * \return rawmidi device number
544 * \brief get rawmidi subdevice number
546 * \return rawmidi subdevice number
555 * \brief get rawmidi stream identification
557 * \return rawmidi stream identification
566 * \brief get rawmidi card number
568 * \return rawmidi card number
577 * \brief get rawmidi flags
579 * \return rawmidi flags
588 * \brief get rawmidi hardware driver identifier
590 * \return rawmidi hardware driver identifier
599 * \brief get rawmidi hardware driver name
601 * \return rawmidi hardware driver name
610 * \brief get rawmidi subdevice name
612 * \return rawmidi subdevice name
621 * \brief get rawmidi count of subdevices
623 * \return rawmidi count of subdevices
632 * \brief get rawmidi available count of subdevices
634 * \return rawmidi available count of subdevices
643 * \brief set rawmidi device number
654 * \brief set rawmidi subdevice number
665 * \brief set rawmidi stream identifier
667 * \param val rawmidi stream identifier
677 * \param rawmidi RawMidi handle
681 int snd_rawmidi_info(snd_rawmidi_t *rawmidi, snd_rawmidi_info_t * info)
683 assert(rawmidi);
685 return rawmidi->ops->info(rawmidi, info);
739 * \brief set rawmidi I/O ring buffer size
740 * \param rawmidi RawMidi handle
746 int snd_rawmidi_params_set_buffer_size(snd_rawmidi_t *rawmidi ATTRIBUTE_UNUSED, snd_rawmidi_params_t *params, size_t val)
748 int snd_rawmidi_params_set_buffer_size(snd_rawmidi_t *rawmidi, snd_rawmidi_params_t *params, size_t val)
751 assert(rawmidi && params);
758 * \brief get rawmidi I/O ring buffer size
760 * \return size of rawmidi I/O ring buffer in bytes
769 * \brief set minimum available bytes in rawmidi I/O ring buffer for wakeup
770 * \param rawmidi RawMidi handle
775 int snd_rawmidi_params_set_avail_min(snd_rawmidi_t *rawmidi ATTRIBUTE_UNUSED, snd_rawmidi_params_t *params, size_t val)
777 int snd_rawmidi_params_set_avail_min(snd_rawmidi_t *rawmidi, snd_rawmidi_params_t *params, size_t val)
780 assert(rawmidi && params);
787 * \brief get minimum available bytes in rawmidi I/O ring buffer for wakeup
799 * \param rawmidi RawMidi handle
805 int snd_rawmidi_params_set_no_active_sensing(snd_rawmidi_t *rawmidi ATTRIBUTE_UNUSED, snd_rawmidi_params_t *params, int val)
807 int snd_rawmidi_params_set_no_active_sensing(snd_rawmidi_t *rawmidi, snd_rawmidi_params_t *params, int val)
810 assert(rawmidi && params);
828 * \param rawmidi RawMidi handle
838 int snd_rawmidi_params_set_read_mode(const snd_rawmidi_t *rawmidi, snd_rawmidi_params_t *params, snd_rawmidi_read_mode_t val)
841 assert(rawmidi && params);
848 if (rawmidi->ops->tread == NULL)
857 (rawmidi->version < SNDRV_PROTOCOL_VERSION(2, 0, 2) || rawmidi->stream != SND_RAWMIDI_STREAM_INPUT))
881 * \param rawmidi RawMidi handle
891 int snd_rawmidi_params_set_clock_type(const snd_rawmidi_t *rawmidi, snd_rawmidi_params_t *params, snd_rawmidi_clock_t val)
893 assert(rawmidi && params);
897 (rawmidi->version < SNDRV_PROTOCOL_VERSION(2, 0, 2) || rawmidi->stream != SND_RAWMIDI_STREAM_INPUT))
916 * \brief set parameters about rawmidi stream
917 * \param rawmidi RawMidi handle
921 int snd_rawmidi_params(snd_rawmidi_t *rawmidi, snd_rawmidi_params_t * params)
924 assert(rawmidi);
926 err = rawmidi->ops->params(rawmidi, params);
929 rawmidi->buffer_size = params->buffer_size;
930 rawmidi->avail_min = params->avail_min;
931 rawmidi->no_active_sensing = params->no_active_sensing;
932 rawmidi->params_mode = rawmidi->version < SNDRV_PROTOCOL_VERSION(2, 0, 2) ? 0 : params->mode;
937 * \brief get current parameters about rawmidi stream
938 * \param rawmidi RawMidi handle
942 int snd_rawmidi_params_current(snd_rawmidi_t *rawmidi, snd_rawmidi_params_t *params)
944 assert(rawmidi);
946 params->buffer_size = rawmidi->buffer_size;
947 params->avail_min = rawmidi->avail_min;
948 params->no_active_sensing = rawmidi->no_active_sensing;
949 params->mode = rawmidi->params_mode;
1015 * \brief get current available bytes in the rawmidi I/O ring buffer
1017 * \return current available bytes in the rawmidi I/O ring buffer
1037 * \brief get status of rawmidi stream
1038 * \param rawmidi RawMidi handle
1042 int snd_rawmidi_status(snd_rawmidi_t *rawmidi, snd_rawmidi_status_t * status)
1044 assert(rawmidi);
1046 return rawmidi->ops->status(rawmidi, status);
1050 * \brief drop all bytes in the rawmidi I/O ring buffer immediately
1051 * \param rawmidi RawMidi handle
1054 int snd_rawmidi_drop(snd_rawmidi_t *rawmidi)
1056 assert(rawmidi);
1057 return rawmidi->ops->drop(rawmidi);
1061 * \brief drain all bytes in the rawmidi I/O ring buffer
1062 * \param rawmidi RawMidi handle
1068 int snd_rawmidi_drain(snd_rawmidi_t *rawmidi)
1070 assert(rawmidi);
1071 return rawmidi->ops->drain(rawmidi);
1076 * \param rawmidi RawMidi handle
1080 ssize_t snd_rawmidi_write(snd_rawmidi_t *rawmidi, const void *buffer, size_t size)
1082 assert(rawmidi);
1083 assert(rawmidi->stream == SND_RAWMIDI_STREAM_OUTPUT);
1085 return rawmidi->ops->write(rawmidi, buffer, size);
1090 * \param rawmidi RawMidi handle
1095 ssize_t snd_rawmidi_read(snd_rawmidi_t *rawmidi, void *buffer, size_t size)
1097 assert(rawmidi);
1098 assert(rawmidi->stream == SND_RAWMIDI_STREAM_INPUT);
1099 if ((rawmidi->params_mode & SNDRV_RAWMIDI_MODE_FRAMING_MASK) == SNDRV_RAWMIDI_MODE_FRAMING_TSTAMP)
1102 return (rawmidi->ops->read)(rawmidi, buffer, size);
1107 * \param rawmidi RawMidi handle
1113 ssize_t snd_rawmidi_tread(snd_rawmidi_t *rawmidi, struct timespec *tstamp, void *buffer, size_t size)
1115 assert(rawmidi);
1116 assert(rawmidi->stream == SND_RAWMIDI_STREAM_INPUT);
1118 if ((rawmidi->params_mode & SNDRV_RAWMIDI_MODE_FRAMING_MASK) != SNDRV_RAWMIDI_MODE_FRAMING_TSTAMP)
1120 if (rawmidi->ops->tread == NULL)
1122 return (rawmidi->ops->tread)(rawmidi, tstamp, buffer, size);
1127 * internal API functions for obtaining UMP info from rawmidi instance