At Fri, 30 Nov 2007 08:34:00 +0100, Clemens Ladisch wrote:
Lennart Poettering wrote:
Just a few random comments:
/* I/O */
snd_input_stdio_open snd_input_stdio_attach snd_input_buffer_open snd_input_close snd_input_scanf snd_input_gets snd_input_getc snd_input_ungetc
snd_output_stdio_open snd_output_stdio_attach snd_output_buffer_open snd_output_buffer_string snd_output_close snd_output_printf snd_output_vprintf snd_output_puts snd_output_putc snd_output_flush
May I ask why these are exported at all? The seem to be some kind of STDOUT/STDIN abstraction, and have no place in a sound API I would say. Especially not in any "standardized" version of it.
The configuration code uses these functions to read and write .conf files.
It might be useful for an application to have some private ALSA config and to let ALSA read it from a file or from a string, but I don't think this is something that belongs in LSB.
Yeah, some are already used. So, they need to be listed. But, some of (directly-) unused functions were already removed from my new list.
snd_pcm_dump snd_pcm_dump_hw_setup snd_pcm_dump_sw_setup snd_pcm_dump_setup snd_pcm_hw_params_dump snd_pcm_sw_params_dump snd_pcm_status_dump
And these? They are not even documented, or am I blind?
Well, their documentation isn't less useful than that of most other functions. ;-(
These functions are very valuable when debugging. I wouldn't want to discourage anybody from using them.
snd_pcm_dump_*() are removed as they aren't used directly. snd_pcm_dump() remains (it is already used).
The below is the revised version of white list. The functions with '#' are to drop, and '*' are newly listed (but not recommended to use).
Takashi
===
/* GLOBAL */
snd_asoundlib_version snd_lib_error_set_handler snd_strerror
/* I/O */
snd_input_stdio_open snd_input_stdio_attach snd_input_buffer_open snd_input_close # snd_input_scanf # snd_input_gets # snd_input_getc # snd_input_ungetc
snd_output_stdio_open snd_output_stdio_attach snd_output_buffer_open snd_output_buffer_string snd_output_close # snd_output_printf # snd_output_vprintf snd_output_puts snd_output_putc # snd_output_flush
/* CONIFG */
snd_config snd_config_top snd_config_load snd_config_save snd_config_update snd_config_update_free_global
snd_config_search snd_config_searchv # snd_config_search_definition # snd_config_expand # snd_config_evaluate
snd_config_add snd_config_delete # snd_config_delete_compound_members snd_config_copy # snd_config_make snd_config_make_integer snd_config_make_integer64 # snd_config_make_real snd_config_make_string # snd_config_make_pointer snd_config_make_compound snd_config_imake_integer snd_config_imake_integer64 # snd_config_imake_real snd_config_imake_string # snd_config_imake_pointer snd_config_get_type
# snd_config_set_id snd_config_set_integer snd_config_set_integer64 # snd_config_set_real snd_config_set_string snd_config_set_ascii # snd_config_set_pointer snd_config_get_id snd_config_get_integer snd_config_get_integer64 # snd_config_get_real # snd_config_get_ireal snd_config_get_string snd_config_get_ascii # snd_config_get_pointer # snd_config_test_id
snd_config_iterator_first snd_config_iterator_next snd_config_iterator_end snd_config_iterator_entry
/* ASYNC */
snd_async_add_handler snd_async_del_handler # snd_async_handler_get_fd # snd_async_handler_get_signo snd_async_handler_get_callback_private
snd_async_add_ctl_handler snd_async_handler_get_ctl
snd_async_add_pcm_handler snd_async_handler_get_pcm
# snd_async_add_timer_handler # snd_async_handler_get_timer
/* CONTROL / GLOBAL */
snd_card_load snd_card_next snd_card_get_index snd_card_get_name snd_card_get_longname
snd_device_name_hint snd_device_name_free_hint snd_device_name_get_hint
snd_ctl_open snd_ctl_close snd_ctl_nonblock snd_ctl_poll_descriptors_count snd_ctl_poll_descriptors # snd_ctl_poll_descriptors_revents snd_ctl_subscribe_events
snd_ctl_card_info snd_ctl_elem_list snd_ctl_elem_info snd_ctl_elem_read snd_ctl_elem_write # snd_ctl_elem_lock # snd_ctl_elem_unlock
snd_ctl_hwdep_next_device snd_ctl_hwdep_info snd_ctl_pcm_next_device snd_ctl_pcm_info # snd_ctl_pcm_prefer_subdevice snd_ctl_rawmidi_next_device snd_ctl_rawmidi_info # snd_ctl_rawmidi_prefer_subdevice
snd_ctl_read # snd_ctl_wait snd_ctl_name # snd_ctl_type
snd_ctl_elem_type_name snd_ctl_elem_iface_name # snd_ctl_event_type_name
snd_ctl_event_elem_get_mask snd_ctl_event_elem_get_id
snd_ctl_elem_list_alloc_space snd_ctl_elem_list_free_space
snd_ctl_elem_id_sizeof snd_ctl_elem_id_malloc snd_ctl_elem_id_free snd_ctl_elem_id_clear snd_ctl_elem_id_copy snd_ctl_elem_id_get_numid snd_ctl_elem_id_get_interface snd_ctl_elem_id_get_device snd_ctl_elem_id_get_subdevice snd_ctl_elem_id_get_name snd_ctl_elem_id_get_index snd_ctl_elem_id_set_numid snd_ctl_elem_id_set_interface snd_ctl_elem_id_set_device snd_ctl_elem_id_set_subdevice snd_ctl_elem_id_set_name snd_ctl_elem_id_set_index
snd_ctl_card_info_sizeof snd_ctl_card_info_malloc snd_ctl_card_info_free snd_ctl_card_info_clear snd_ctl_card_info_copy snd_ctl_card_info_get_id snd_ctl_card_info_get_driver snd_ctl_card_info_get_name snd_ctl_card_info_get_longname snd_ctl_card_info_get_mixername snd_ctl_card_info_get_components
snd_ctl_event_sizeof snd_ctl_event_malloc snd_ctl_event_free snd_ctl_event_clear snd_ctl_event_copy # snd_ctl_event_get_type
snd_ctl_elem_list_sizeof snd_ctl_elem_list_malloc snd_ctl_elem_list_free snd_ctl_elem_list_clear snd_ctl_elem_list_copy snd_ctl_elem_list_set_offset snd_ctl_elem_list_get_used snd_ctl_elem_list_get_count snd_ctl_elem_list_get_id # snd_ctl_elem_list_get_numid snd_ctl_elem_list_get_name
snd_ctl_elem_info_sizeof snd_ctl_elem_info_malloc snd_ctl_elem_info_free snd_ctl_elem_info_clear snd_ctl_elem_info_copy snd_ctl_elem_info_get_type snd_ctl_elem_info_is_readable snd_ctl_elem_info_is_writable snd_ctl_elem_info_is_volatile snd_ctl_elem_info_is_inactive snd_ctl_elem_info_is_locked # snd_ctl_elem_info_is_owner snd_ctl_elem_info_is_user # snd_ctl_elem_info_get_owner snd_ctl_elem_info_get_count snd_ctl_elem_info_get_min snd_ctl_elem_info_get_max snd_ctl_elem_info_get_step snd_ctl_elem_info_get_min64 snd_ctl_elem_info_get_max64 snd_ctl_elem_info_get_step64 snd_ctl_elem_info_get_items snd_ctl_elem_info_set_item snd_ctl_elem_info_get_item_name snd_ctl_elem_info_get_id snd_ctl_elem_info_get_numid snd_ctl_elem_info_get_name snd_ctl_elem_info_set_id
snd_ctl_elem_add_integer # snd_ctl_elem_add_integer64 snd_ctl_elem_add_boolean snd_ctl_elem_add_iec958 snd_ctl_elem_remove
snd_ctl_elem_value_sizeof snd_ctl_elem_value_malloc snd_ctl_elem_value_free snd_ctl_elem_value_clear snd_ctl_elem_value_copy snd_ctl_elem_value_get_id # snd_ctl_elem_value_get_numid # snd_ctl_elem_value_get_name snd_ctl_elem_value_set_id snd_ctl_elem_value_get_boolean snd_ctl_elem_value_get_integer snd_ctl_elem_value_get_integer64 snd_ctl_elem_value_get_enumerated snd_ctl_elem_value_get_byte snd_ctl_elem_value_set_boolean snd_ctl_elem_value_set_integer snd_ctl_elem_value_set_integer64 snd_ctl_elem_value_set_enumerated snd_ctl_elem_value_set_byte # snd_ctl_elem_value_set_bytes snd_ctl_elem_value_get_bytes snd_ctl_elem_value_get_iec958 snd_ctl_elem_value_set_iec958
snd_hctl_open # snd_hctl_open_ctl snd_hctl_close # snd_hctl_nonblock # snd_hctl_poll_descriptors_count # snd_hctl_poll_descriptors # snd_hctl_poll_descriptors_revents # snd_hctl_get_count # snd_hctl_set_compare
snd_hctl_first_elem snd_hctl_last_elem snd_hctl_find_elem snd_hctl_set_callback snd_hctl_set_callback_private snd_hctl_get_callback_private snd_hctl_load snd_hctl_free # snd_hctl_handle_events # snd_hctl_name # snd_hctl_wait # snd_hctl_ctl
snd_hctl_elem_next snd_hctl_elem_prev snd_hctl_elem_info snd_hctl_elem_read snd_hctl_elem_write
# snd_hctl_elem_get_hctl
snd_hctl_elem_get_id snd_hctl_elem_set_callback snd_hctl_elem_get_callback_private snd_hctl_elem_set_callback_private
/* MIXER */
snd_mixer_open snd_mixer_close snd_mixer_first_elem snd_mixer_last_elem snd_mixer_handle_events snd_mixer_attach # snd_mixer_attach_hctl snd_mixer_detach # snd_mixer_detach_hctl # snd_mixer_get_hctl snd_mixer_poll_descriptors_count snd_mixer_poll_descriptors snd_mixer_poll_descriptors_revents snd_mixer_load snd_mixer_free snd_mixer_wait # snd_mixer_set_compare snd_mixer_set_callback snd_mixer_get_callback_private snd_mixer_set_callback_private snd_mixer_get_count
snd_mixer_elem_next snd_mixer_elem_prev snd_mixer_elem_set_callback snd_mixer_elem_get_callback_private snd_mixer_elem_set_callback_private snd_mixer_elem_get_type
snd_mixer_selem_channel_name snd_mixer_selem_register snd_mixer_selem_get_id snd_mixer_selem_get_name snd_mixer_selem_get_index snd_mixer_find_selem snd_mixer_selem_is_active snd_mixer_selem_is_playback_mono snd_mixer_selem_has_playback_channel snd_mixer_selem_is_capture_mono snd_mixer_selem_has_capture_channel snd_mixer_selem_get_capture_group snd_mixer_selem_has_common_volume snd_mixer_selem_has_playback_volume snd_mixer_selem_has_playback_volume_joined snd_mixer_selem_has_capture_volume snd_mixer_selem_has_capture_volume_joined snd_mixer_selem_has_common_switch snd_mixer_selem_has_playback_switch snd_mixer_selem_has_playback_switch_joined snd_mixer_selem_has_capture_switch snd_mixer_selem_has_capture_switch_joined snd_mixer_selem_has_capture_switch_exclusive
snd_mixer_selem_get_playback_volume snd_mixer_selem_get_capture_volume snd_mixer_selem_get_playback_switch snd_mixer_selem_get_capture_switch snd_mixer_selem_set_playback_volume snd_mixer_selem_set_capture_volume snd_mixer_selem_set_playback_volume_all snd_mixer_selem_set_capture_volume_all snd_mixer_selem_set_playback_switch snd_mixer_selem_set_capture_switch snd_mixer_selem_set_playback_switch_all snd_mixer_selem_set_capture_switch_all snd_mixer_selem_get_playback_volume_range snd_mixer_selem_set_playback_volume_range snd_mixer_selem_get_capture_volume_range snd_mixer_selem_set_capture_volume_range
snd_mixer_selem_is_enumerated snd_mixer_selem_is_enum_playback snd_mixer_selem_is_enum_capture snd_mixer_selem_get_enum_items snd_mixer_selem_get_enum_item_name snd_mixer_selem_get_enum_item snd_mixer_selem_set_enum_item
snd_mixer_selem_id_sizeof snd_mixer_selem_id_malloc snd_mixer_selem_id_free snd_mixer_selem_id_copy snd_mixer_selem_id_get_name snd_mixer_selem_id_get_index snd_mixer_selem_id_set_name snd_mixer_selem_id_set_index
/* HWDEP */
snd_hwdep_open snd_hwdep_close snd_hwdep_poll_descriptors # snd_hwdep_poll_descriptors_revents # snd_hwdep_nonblock snd_hwdep_info snd_hwdep_dsp_status snd_hwdep_dsp_load snd_hwdep_ioctl snd_hwdep_write snd_hwdep_read
snd_hwdep_info_sizeof snd_hwdep_info_malloc snd_hwdep_info_free snd_hwdep_info_copy snd_hwdep_info_get_device snd_hwdep_info_get_card snd_hwdep_info_get_id snd_hwdep_info_get_name snd_hwdep_info_get_iface snd_hwdep_info_set_device
snd_hwdep_dsp_status_sizeof snd_hwdep_dsp_status_malloc snd_hwdep_dsp_status_free snd_hwdep_dsp_status_copy snd_hwdep_dsp_status_get_version snd_hwdep_dsp_status_get_id snd_hwdep_dsp_status_get_num_dsps snd_hwdep_dsp_status_get_dsp_loaded snd_hwdep_dsp_status_get_chip_ready
snd_hwdep_dsp_image_sizeof snd_hwdep_dsp_image_malloc snd_hwdep_dsp_image_free snd_hwdep_dsp_image_copy snd_hwdep_dsp_image_get_index snd_hwdep_dsp_image_get_name snd_hwdep_dsp_image_get_image snd_hwdep_dsp_image_get_length snd_hwdep_dsp_image_set_index snd_hwdep_dsp_image_set_name snd_hwdep_dsp_image_set_image snd_hwdep_dsp_image_set_length
/* PCM */
snd_pcm_open snd_pcm_open_lconf snd_pcm_close snd_pcm_name snd_pcm_type snd_pcm_stream snd_pcm_poll_descriptors_count snd_pcm_poll_descriptors snd_pcm_poll_descriptors_revents snd_pcm_nonblock snd_pcm_info snd_pcm_hw_params_current snd_pcm_hw_params snd_pcm_hw_free snd_pcm_sw_params_current snd_pcm_sw_params snd_pcm_prepare snd_pcm_reset snd_pcm_status snd_pcm_start snd_pcm_drop snd_pcm_drain snd_pcm_pause snd_pcm_state snd_pcm_hwsync snd_pcm_delay snd_pcm_resume snd_pcm_avail_update snd_pcm_rewind snd_pcm_forward snd_pcm_writei snd_pcm_readi snd_pcm_writen snd_pcm_readn snd_pcm_wait snd_pcm_link snd_pcm_unlink snd_pcm_recover
snd_pcm_info_sizeof snd_pcm_info_malloc snd_pcm_info_free snd_pcm_info_copy snd_pcm_info_get_device snd_pcm_info_get_subdevice snd_pcm_info_get_stream snd_pcm_info_get_card snd_pcm_info_get_id snd_pcm_info_get_name snd_pcm_info_get_subdevice_name snd_pcm_info_get_class # snd_pcm_info_get_subclass snd_pcm_info_get_subdevices_count snd_pcm_info_get_subdevices_avail # snd_pcm_info_get_sync snd_pcm_info_set_device snd_pcm_info_set_subdevice snd_pcm_info_set_stream
snd_pcm_hw_params_sizeof snd_pcm_hw_params_malloc snd_pcm_hw_params_free snd_pcm_hw_params_copy snd_pcm_hw_params_any snd_pcm_hw_params_can_mmap_sample_resolution snd_pcm_hw_params_is_double snd_pcm_hw_params_can_pause snd_pcm_hw_params_can_resume snd_pcm_hw_params_is_half_duplex snd_pcm_hw_params_is_joint_duplex snd_pcm_hw_params_can_sync_start snd_pcm_hw_params_get_rate_numden snd_pcm_hw_params_get_sbits snd_pcm_hw_params_get_access snd_pcm_hw_params_test_access snd_pcm_hw_params_set_access snd_pcm_hw_params_set_access_mask snd_pcm_hw_params_get_access_mask snd_pcm_hw_params_get_format snd_pcm_hw_params_test_format snd_pcm_hw_params_set_format snd_pcm_hw_params_set_format_mask snd_pcm_hw_params_get_format_mask snd_pcm_hw_params_get_channels snd_pcm_hw_params_get_channels_min snd_pcm_hw_params_get_channels_max snd_pcm_hw_params_test_channels snd_pcm_hw_params_set_channels snd_pcm_hw_params_set_channels_near snd_pcm_hw_params_get_rate snd_pcm_hw_params_get_rate_min snd_pcm_hw_params_get_rate_max snd_pcm_hw_params_test_rate snd_pcm_hw_params_set_rate snd_pcm_hw_params_set_rate_near snd_pcm_hw_params_set_rate_resample snd_pcm_hw_params_get_rate_resample snd_pcm_hw_params_get_period_time snd_pcm_hw_params_get_period_time_min snd_pcm_hw_params_get_period_time_max snd_pcm_hw_params_test_period_time snd_pcm_hw_params_set_period_time snd_pcm_hw_params_set_period_time_near snd_pcm_hw_params_get_period_size snd_pcm_hw_params_get_period_size_min snd_pcm_hw_params_get_period_size_max snd_pcm_hw_params_test_period_size snd_pcm_hw_params_set_period_size snd_pcm_hw_params_set_period_size_near snd_pcm_hw_params_get_periods snd_pcm_hw_params_get_periods_min snd_pcm_hw_params_get_periods_max snd_pcm_hw_params_test_periods snd_pcm_hw_params_set_periods snd_pcm_hw_params_set_periods_near snd_pcm_hw_params_set_periods_integer snd_pcm_hw_params_get_buffer_time snd_pcm_hw_params_get_buffer_time_min snd_pcm_hw_params_get_buffer_time_max snd_pcm_hw_params_test_buffer_time snd_pcm_hw_params_set_buffer_time snd_pcm_hw_params_set_buffer_time_near snd_pcm_hw_params_get_buffer_size snd_pcm_hw_params_get_buffer_size_min snd_pcm_hw_params_get_buffer_size_max snd_pcm_hw_params_test_buffer_size snd_pcm_hw_params_set_buffer_size snd_pcm_hw_params_set_buffer_size_near * snd_pcm_hw_params_can_overrange * snd_pcm_hw_params_get_subformat * snd_pcm_hw_params_get_tick_time * snd_pcm_hw_params_get_tick_time_max * snd_pcm_hw_params_get_tick_time_min * snd_pcm_hw_params_is_batch * snd_pcm_hw_params_is_block_transfer * snd_pcm_hw_params_set_periods_min
snd_pcm_sw_params_sizeof snd_pcm_sw_params_malloc snd_pcm_sw_params_free snd_pcm_sw_params_copy snd_pcm_sw_params_get_boundary snd_pcm_sw_params_set_tstamp_mode snd_pcm_sw_params_get_tstamp_mode snd_pcm_sw_params_set_avail_min snd_pcm_sw_params_get_avail_min snd_pcm_sw_params_set_start_threshold snd_pcm_sw_params_get_start_threshold snd_pcm_sw_params_set_stop_threshold snd_pcm_sw_params_get_stop_threshold snd_pcm_sw_params_set_silence_threshold snd_pcm_sw_params_get_silence_threshold snd_pcm_sw_params_set_silence_size snd_pcm_sw_params_get_silence_size * snd_pcm_sw_params_set_sleep_min * snd_pcm_sw_params_set_xfer_align
snd_pcm_access_mask_sizeof snd_pcm_access_mask_malloc snd_pcm_access_mask_free snd_pcm_access_mask_copy snd_pcm_access_mask_none snd_pcm_access_mask_any snd_pcm_access_mask_test # snd_pcm_access_mask_empty snd_pcm_access_mask_set # snd_pcm_access_mask_reset
snd_pcm_format_mask_sizeof snd_pcm_format_mask_malloc snd_pcm_format_mask_free snd_pcm_format_mask_copy snd_pcm_format_mask_none snd_pcm_format_mask_any snd_pcm_format_mask_test # snd_pcm_format_mask_empty snd_pcm_format_mask_set # snd_pcm_format_mask_reset
snd_pcm_status_sizeof snd_pcm_status_malloc snd_pcm_status_free snd_pcm_status_copy snd_pcm_status_get_state snd_pcm_status_get_trigger_tstamp # snd_pcm_status_get_trigger_htstamp snd_pcm_status_get_tstamp # snd_pcm_status_get_htstamp snd_pcm_status_get_delay snd_pcm_status_get_avail snd_pcm_status_get_avail_max
snd_pcm_type_name snd_pcm_stream_name snd_pcm_access_name snd_pcm_format_name snd_pcm_format_description snd_pcm_format_value # snd_pcm_tstamp_mode_name snd_pcm_state_name
snd_pcm_dump # snd_pcm_dump_hw_setup # snd_pcm_dump_sw_setup # snd_pcm_dump_setup snd_pcm_hw_params_dump snd_pcm_sw_params_dump snd_pcm_status_dump
snd_pcm_mmap_begin snd_pcm_mmap_commit snd_pcm_mmap_writei snd_pcm_mmap_readi snd_pcm_mmap_writen snd_pcm_mmap_readn
snd_pcm_format_signed snd_pcm_format_unsigned snd_pcm_format_linear snd_pcm_format_float snd_pcm_format_little_endian snd_pcm_format_big_endian snd_pcm_format_cpu_endian snd_pcm_format_width snd_pcm_format_physical_width snd_pcm_format_size snd_pcm_build_linear_format snd_pcm_format_set_silence snd_pcm_bytes_to_frames snd_pcm_frames_to_bytes snd_pcm_bytes_to_samples snd_pcm_samples_to_bytes snd_pcm_area_silence snd_pcm_areas_silence snd_pcm_area_copy snd_pcm_areas_copy
/* deprecated */
/* RAWMIDI */
snd_rawmidi_open snd_rawmidi_close snd_rawmidi_poll_descriptors_count snd_rawmidi_poll_descriptors snd_rawmidi_poll_descriptors_revents snd_rawmidi_nonblock # snd_rawmidi_name # snd_rawmidi_type # snd_rawmidi_stream snd_rawmidi_drain snd_rawmidi_drop snd_rawmidi_write snd_rawmidi_read
# snd_rawmidi_info # snd_rawmidi_info_sizeof # snd_rawmidi_info_malloc # snd_rawmidi_info_free # snd_rawmidi_info_copy # snd_rawmidi_info_get_device # snd_rawmidi_info_get_subdevice # snd_rawmidi_info_get_stream # snd_rawmidi_info_get_card # snd_rawmidi_info_get_flags # snd_rawmidi_info_get_id # snd_rawmidi_info_get_name # snd_rawmidi_info_get_subdevice_name # snd_rawmidi_info_get_subdevices_count # snd_rawmidi_info_get_subdevices_avail # snd_rawmidi_info_set_device # snd_rawmidi_info_set_subdevice # snd_rawmidi_info_set_stream
# snd_rawmidi_params # snd_rawmidi_params_current # snd_rawmidi_params_sizeof # snd_rawmidi_params_malloc # snd_rawmidi_params_free # snd_rawmidi_params_copy # snd_rawmidi_params_set_buffer_size # snd_rawmidi_params_get_buffer_size # snd_rawmidi_params_set_avail_min # snd_rawmidi_params_get_avail_min # snd_rawmidi_params_set_no_active_sensing # snd_rawmidi_params_get_no_active_sensing
# snd_rawmidi_status_sizeof # snd_rawmidi_status_malloc # snd_rawmidi_status_free # snd_rawmidi_status_copy # snd_rawmidi_status # snd_rawmidi_status_get_tstamp # snd_rawmidi_status_get_avail # snd_rawmidi_status_get_xruns
/* TIMER */
snd_timer_open snd_timer_close
snd_timer_poll_descriptors_count snd_timer_poll_descriptors # snd_timer_poll_descriptors_revents snd_timer_info snd_timer_params snd_timer_status snd_timer_start snd_timer_stop snd_timer_continue snd_timer_read
snd_timer_id_sizeof snd_timer_id_malloc snd_timer_id_free snd_timer_id_copy snd_timer_id_set_class snd_timer_id_get_class snd_timer_id_set_sclass snd_timer_id_get_sclass snd_timer_id_set_card snd_timer_id_get_card snd_timer_id_set_device snd_timer_id_get_device snd_timer_id_set_subdevice snd_timer_id_get_subdevice
snd_timer_info_sizeof snd_timer_info_malloc snd_timer_info_free snd_timer_info_copy # snd_timer_info_is_slave snd_timer_info_get_card snd_timer_info_get_id snd_timer_info_get_name snd_timer_info_get_resolution
# snd_timer_params_sizeof # snd_timer_params_malloc # snd_timer_params_free # snd_timer_params_copy # snd_timer_params_set_auto_start # snd_timer_params_get_auto_start # snd_timer_params_set_exclusive # snd_timer_params_get_exclusive # snd_timer_params_set_early_event # snd_timer_params_get_early_event # snd_timer_params_set_ticks # snd_timer_params_get_ticks # snd_timer_params_set_queue_size # snd_timer_params_get_queue_size # snd_timer_params_set_filter # snd_timer_params_get_filter
# snd_timer_status_sizeof # snd_timer_status_malloc # snd_timer_status_free # snd_timer_status_copy # snd_timer_status_get_timestamp # snd_timer_status_get_resolution # snd_timer_status_get_lost # snd_timer_status_get_overrun # snd_timer_status_get_queue
/* SEQUENCER */
snd_seq_open # snd_seq_name # snd_seq_type snd_seq_close snd_seq_poll_descriptors_count snd_seq_poll_descriptors snd_seq_poll_descriptors_revents snd_seq_nonblock snd_seq_client_id
snd_seq_get_output_buffer_size snd_seq_get_input_buffer_size snd_seq_set_output_buffer_size snd_seq_set_input_buffer_size
snd_seq_system_info_sizeof snd_seq_system_info_malloc snd_seq_system_info_free snd_seq_system_info_copy snd_seq_system_info_get_queues snd_seq_system_info_get_clients snd_seq_system_info_get_ports # snd_seq_system_info_get_channels # snd_seq_system_info_get_cur_clients # snd_seq_system_info_get_cur_queues snd_seq_system_info
snd_seq_client_info_sizeof snd_seq_client_info_malloc snd_seq_client_info_free snd_seq_client_info_copy
snd_seq_client_info_get_client snd_seq_client_info_get_type snd_seq_client_info_get_name snd_seq_client_info_get_num_ports # snd_seq_client_info_get_event_lost
snd_seq_client_info_set_client snd_seq_client_info_set_name
snd_seq_get_client_info snd_seq_get_any_client_info snd_seq_set_client_info snd_seq_query_next_client
snd_seq_port_info_sizeof snd_seq_port_info_malloc snd_seq_port_info_free snd_seq_port_info_copy
snd_seq_port_info_get_client snd_seq_port_info_get_port snd_seq_port_info_get_addr snd_seq_port_info_get_name snd_seq_port_info_get_capability snd_seq_port_info_get_type # snd_seq_port_info_get_midi_channels # snd_seq_port_info_get_midi_voices # snd_seq_port_info_get_synth_voices # snd_seq_port_info_get_read_use # snd_seq_port_info_get_write_use # snd_seq_port_info_get_port_specified # snd_seq_port_info_get_timestamping # snd_seq_port_info_get_timestamp_real # snd_seq_port_info_get_timestamp_queue
snd_seq_port_info_set_client snd_seq_port_info_set_port # snd_seq_port_info_set_addr snd_seq_port_info_set_name snd_seq_port_info_set_capability snd_seq_port_info_set_type # snd_seq_port_info_set_midi_channels # snd_seq_port_info_set_midi_voices # snd_seq_port_info_set_synth_voices snd_seq_port_info_set_port_specified snd_seq_port_info_set_timestamping snd_seq_port_info_set_timestamp_real snd_seq_port_info_set_timestamp_queue
snd_seq_create_port snd_seq_delete_port snd_seq_get_port_info snd_seq_get_any_port_info snd_seq_set_port_info snd_seq_query_next_port
snd_seq_port_subscribe_sizeof snd_seq_port_subscribe_malloc snd_seq_port_subscribe_free snd_seq_port_subscribe_copy
snd_seq_port_subscribe_get_sender snd_seq_port_subscribe_get_dest snd_seq_port_subscribe_get_queue snd_seq_port_subscribe_get_exclusive snd_seq_port_subscribe_get_time_update snd_seq_port_subscribe_get_time_real
snd_seq_port_subscribe_set_sender snd_seq_port_subscribe_set_dest snd_seq_port_subscribe_set_queue snd_seq_port_subscribe_set_exclusive snd_seq_port_subscribe_set_time_update snd_seq_port_subscribe_set_time_real
snd_seq_get_port_subscription snd_seq_subscribe_port snd_seq_unsubscribe_port
snd_seq_query_subscribe_sizeof snd_seq_query_subscribe_malloc snd_seq_query_subscribe_free snd_seq_query_subscribe_copy # snd_seq_query_subscribe_get_client # snd_seq_query_subscribe_get_port snd_seq_query_subscribe_get_root # snd_seq_query_subscribe_get_type snd_seq_query_subscribe_get_index # snd_seq_query_subscribe_get_num_subs snd_seq_query_subscribe_get_addr snd_seq_query_subscribe_get_queue snd_seq_query_subscribe_get_exclusive snd_seq_query_subscribe_get_time_update snd_seq_query_subscribe_get_time_real
# snd_seq_query_subscribe_set_client # snd_seq_query_subscribe_set_port snd_seq_query_subscribe_set_root snd_seq_query_subscribe_set_type snd_seq_query_subscribe_set_index snd_seq_query_port_subscribers
snd_seq_alloc_named_queue snd_seq_alloc_queue snd_seq_free_queue
snd_seq_queue_status_sizeof snd_seq_queue_status_malloc snd_seq_queue_status_free snd_seq_queue_status_copy # snd_seq_queue_status_get_queue # snd_seq_queue_status_get_events snd_seq_queue_status_get_tick_time snd_seq_queue_status_get_real_time # snd_seq_queue_status_get_status snd_seq_get_queue_status
snd_seq_queue_tempo_sizeof snd_seq_queue_tempo_malloc snd_seq_queue_tempo_free snd_seq_queue_tempo_copy # snd_seq_queue_tempo_get_queue snd_seq_queue_tempo_get_tempo snd_seq_queue_tempo_get_ppq snd_seq_queue_tempo_set_tempo snd_seq_queue_tempo_set_ppq snd_seq_get_queue_tempo snd_seq_set_queue_tempo
snd_seq_free_event snd_seq_event_length snd_seq_event_output #snd_seq_event_output_buffer snd_seq_event_output_direct snd_seq_event_input snd_seq_event_input_pending snd_seq_drain_output # snd_seq_event_output_pending # snd_seq_extract_output snd_seq_drop_output snd_seq_drop_output_buffer # snd_seq_drop_input # snd_seq_drop_input_buffer
snd_seq_event_types
snd_seq_control_queue snd_seq_create_simple_port snd_seq_delete_simple_port snd_seq_connect_from snd_seq_connect_to snd_seq_disconnect_from snd_seq_disconnect_to snd_seq_set_client_name snd_seq_sync_output_queue
snd_seq_parse_address
snd_midi_event_new # snd_midi_event_resize_buffer snd_midi_event_free snd_midi_event_init snd_midi_event_reset_encode snd_midi_event_reset_decode # snd_midi_event_no_status snd_midi_event_encode snd_midi_event_encode_byte snd_midi_event_decode