ѸO      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                 ! " # $ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C DEFGHIJKLMNOPOPOP provisionalHenning ThielemannQRQRQRS!Convert number of nanoseconds to  (Convert fractional number of seconds to  !Convert number of nanoseconds to  (Convert fractional number of seconds to       provisionalHenning Thielemann The type of queue identifiers. TUV  TUV  TTUV  provisionalHenning Thielemann& Port types. WXPort capabilities. YZ[\] !"#$%&'()*+,&WXYZ[\] !"#$%&'()*+,&WXWXYZYZ[[\] !"#$%&'()*+, provisionalHenning Thielemann - The different types of clients. ./0 The type of client identifiers. ^1234_`a -./0^1234_`a -/../0^^1234_`a provisionalHenning Thielemannbc-Copy the content of one object into another. def9Copy the content of an object to a newly created object. ghi9Copy the content of an object to a newly created object. jklm-Copy the content of one object into another. no-Copy the content of one object into another. pqrstuv1Allocate an uninitialized object. (Not exported) wxyz{|}~9Copy the content of an object to a newly created object. -Copy the content of one object into another. 9Copy the content of an object to a newly created object. 1Allocate an uninitialized object. (Not exported) -Copy the content of one object into another. 1Allocate an uninitialized object. (Not exported) -Copy the content of one object into another.  Destination Source  Destination Source  Destination Source 9Copy the content of an object to a newly created object. 1Allocate an uninitialized object. (Not exported)  Destination Source 1Allocate an uninitialized object. (Not exported) 1Allocate an uninitialized object. (Not exported)  Destination Source       Destination Source 9Copy the content of an object to a newly created object. bcdefghijklmnopqrstuvwxyz{|}~     bcdefghijklmnopqrstuvwxyz{|}~     56789%The address of all subscribed ports. 5678956786789 provisionalHenning Thielemann:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~These are all 14 bit values.  !"#$%&'()*+,-:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ !"#$%&'()*+,-:@?>=<;;<=>?@ACBBCDJIHGFEEFGHIJK WVUTSRQPONMLLMNOPQRSTUVWX]\[ZYYZ[\]^ hgfedcba`__`abcdefghi utsrqponmlkjjklmnopqrstuvzyxwwxyz{|}~|}~ !"#$%&'()*+,- provisionalHenning Thielemann.The type of sequencer handles. /+Blocking behavior of the sequencer device. &Throw exceptions instead of blocking. Operations may block. Read/,Write permissions for the sequencer device. + This way we prevent the ALSA exception 22 Invalid argument  when calling  event_output on an input-only sequencer. 01./01.//001&23456789:;<=>?@ABCDCreates a new handle and opens a connection to the kernel sequencer 4 interface. After a client is created successfully,  a  ClientStart* event is broadcast to the announce port.  May throw an exception.  See also:  open_lconf, ,  get_seq_type,   get_seq_name,  set_blocking,  get_client_id.  The sequencer's "name". This is not a name that you < make up for your own purposes; it has special significance / to the ALSA library. Usually you need to pass  default_name  here. DBClose the sequencer. Closes the sequencer client and releases its 4 resources. After a client is closed, an event with  ClientExit is F broadcast to announce port. The connection between other clients are ; disconnected. Call this just before exiting your program. 8 NOTE: we could put this in a finalizer for the handle? handle to the sequencer  The sequencer's "name". This is not a name that you < make up for your own purposes; it has special significance / to the ALSA library. Usually you need to pass  default_name  here. &Get identifier of a sequencer handle. 4 It is the same identifier specified in the call to . sequencer handle ALSA identifier for the handel .Change the blocking mode of the given client. E In block mode, the client falls into sleep when it fills the output G pool with events, or when it demands events from an empty input pool. @ memory pool with full events. Clients that are sleeping due to < loack of space in the output pool are woken when a certain - amount of free space becomes available (see set_output_room). sequencer handle blocking mode +Return the byte size of the output buffer. Sequencer handle.  Size of output buffer in bytes. Resize of the output buffer. - This function clears all output events (see  drop_output). Sequencer handle. New buffer size in bytes. &Return the byte size of input buffer. Sequencer handle. Size of input buffer in bytes. Resize the input buffer. , This function clears all input events (see  drop_input). Sequencer handle. New byffer size in bytes. Resize the output memory pool. Sequencer handle. New size in bytes. @Specify how much space should become free before waking clients = that are blocked due to a lack of space in the output pool. Sequencer handle. !Number of bytes need to wake up. Reset the output pool. Sequencer handle. Resize the input memory pool. Sequencer handle. New size in bytes. Reset the input pool. Sequencer handle. Simple subscription (w/ o exclusive & time conversion). Simple subscription (w/ o exclusive & time conversion). Simple disconnection. Simple disconnection. E/Parse the given string into sequencer address. J The client and port are separated by either colon or period, e.g. 128:1. ) The function also accepts client names. Sequencer handle. String to be parsed. The parsed address. &23456789:;<=>?@ABCDE&23456789:;<=>?@ABCDE/Parse the given string into sequencer address. IThe client and port are separated by either colon or period, e.g. 128:1. (The function also accepts client names. Sequencer handle. String to be parsed. The parsed address. 5678956789  provisionalHenning ThielemannFGHIJKCreate a new information area filled with data about the sequencer client. JCreate a new information area filled with data about an arbitrary client. CGet information about the client with the next biggest identifier. Was there a next client? ?Set the information for the sequencer client based on the data  in the given information area.  provisionalHenning Thielemann-Get the client identifier for the sequencer.  A convinience function. 'Set the name for the sequencer client.  A convinience function. -./01234 04123-/. provisionalHenning Thielemann KLMN Create a port - simple version. Delete the port. 7Create a new port, as described by the info structure. Delete the port. $ !"#$%&'()*+,$ !"#$%&'()*+,  provisionalHenning Thielemann)OPQRSTU@Create a new information area filled with data about a specific  port on our client. >Create a new information area filled with data about an given  port on a given client. 4Get information about the first port on our client. AGet information about the port with the next biggest identifier. D If a matching port is found, then its information is stored in the * given area, otherwise we throw an error. =Set the information for the sequencer port based on the data  in the given information area. )Get the address of the information area. Set the port address.  " " "  provisionalIavor S. DiatchkiVWXYZ[\]^_`ab 3Wait until all events of the client are processed.  $Get an event from the input buffer. D If the input buffer is empty, then it is filled with data from the ? sequencer queue. If there is no data in the sequencer queue, H then the process is either put to sleep (if the sequencer is operating  in blocking mode), or we throw EAGAIN (if the sequence is operating  in non-blocking mode). We may also throw ENOSPC', which means that the sequencer queue D over-run and some events were lost (this clears the input buffer). c 2Returns the number of events in the input buffer. @ If the input buffer is empty and the boolean argument is true, G then try to fill the input buffer with data from the sequencer queue.  See also:  . refill if empty? number of events in buffer  9Output an event and drain the buffer, if it became full.  Throws exceptions.  See also: , ,  , , ,  ,  removeEvents +the number of remaining events (or bytes?) -Output an event without draining the buffer.  Throws -EAGAIN if the buffer becomes full.  See also  . "the byte size of remaining events JOutput an event directly to the sequencer, NOT through the output buffer. 1 If an error occurs, then we throw an exception.  See also  . &number of bytes sent to the sequencer ?Return the size (in bytes) of pending events on output buffer.  See also  . "size of pending events (in bytes) *Extract the first event in output buffer.  Throws an exception on error.  See also  . 3the first event in the buffer (if one was present) )Remove the first event in output buffer.  Throws an exception on error.  See also  . "Drain output buffer to sequencer. ? This function drains all pending events on the output buffer. J The function returns immediately after the events are sent to the queues 5 regardless whether the events are processed or not. 6 To get synchronization with the all event processes,  use   after calling this function.  Throws an exception on error.  See also:  ,  . -byte size of events remaining in the buffer. 6Remove events from both the user-space output buffer, ' and the kernel-space sequencer queue.  See also: , ,  removeEvents. 1Remove events from the user-space output buffer.  See also: . 5Remove events from both the user-space input buffer, ' and the kernel-space sequencer queue.  See also: ,  removeEvents. 0Remove events from the user-space input buffer.  See also: . 0Make a note whose unspecified fields contain 0.  Channel. Note.  Velocity. 9Used for volume control: means do not change the volume. :;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~        {|}~:@?>=<;vzyxwiutsrqponmlkjKWVUTSRQPONML^hgfedcba`_DJIHGFEACBX]\[ZY     provisionalHenning Thielemann defgQueue.T identifier. Delete the specified queue. Sequencer handle. Queue.T identifier. Queue.T controls - startstop continue Sequencer handle. Queue.T identifier.     provisionalHenning Thielemannhij !"#$%&'()*+,- !"#$%&'()*+,- !"#$%&'()*+,- !"#$%&'()*+,-  provisionalHenning Thielemannklmnopq./012345r./012345./012345./012345  provisionalHenning Thielemannstu6789:;<=>?@ABC6789:;<=>?@ABC6789:;<=>?@ABC6789:;<=>?@ABC provisionalHenning Thielemann vwxDEFGHIJKLMDEFGHIJKLMDEFGHIJKLM DEFGHIJKLM provisionalHenning ThielemannN*This is the name that should be passed to  in most cases. N NNy !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFG)HIFJKLMNOPMQRNSTUVWXKYZ[\]^_`abcdLefghijklmnopqrstOuvwxyz{|}~P                                !"#$%&'()*&+)()(&,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxxyooz{{|}}~)               !"# $ %  & ' ( ) * +  , - . /01 alsa-seq-0.5 Sound.ALSA.Sequencer.Queue.TimerSound.ALSA.Sequencer.RealTimeSound.ALSA.Sequencer.QueueSound.ALSA.Sequencer.PortSound.ALSA.Sequencer.ClientSound.ALSA.Sequencer.AddressSound.ALSA.Sequencer.EventSound.ALSA.Sequencer Sound.ALSA.Sequencer.Client.InfoSound.ALSA.Sequencer.Port.InfoSound.ALSA.Sequencer.Queue.Info!Sound.ALSA.Sequencer.Queue.Status Sound.ALSA.Sequencer.Queue.TempoSound.ALSA.Sequencer.Utility'Sound.ALSA.Sequencer.Marshal.QueueTimer%Sound.ALSA.Sequencer.Marshal.RealTime"Sound.ALSA.Sequencer.Marshal.Queue!Sound.ALSA.Sequencer.Marshal.Port#Sound.ALSA.Sequencer.Marshal.ClientSound.ALSA.Sequencer.Area$Sound.ALSA.Sequencer.Marshal.Address"Sound.ALSA.Sequencer.Marshal.Event&Sound.ALSA.Sequencer.Marshal.SequencerSound.ALSA.Sequencer.SequencerTypeMidiTick MidiClockAlsaTConssecsnano fromInteger fromDouble toIntegertoDoubledirectCap systemTimersystemAnnounceunknowncapReadcapWrite capSyncRead capSyncWrite capDuplex capSubsRead capSubsWrite capNoExportcaps typeSpecifictypeMidiGeneric typeMidiGM typeMidiGS typeMidiXG typeMidiMT32 typeMidiGM2 typeSynthtypeDirectSample typeSample typeHardware typeSoftwaretypeSynthesizertypePorttypeApplicationtypesKernelUsersystem subscribers broadcastclientportDataCustomEvEmptyEvConnEvAddrEvCtrlEvNoteEvPortUnsubscribedPortSubscribed PortChangePortExit PortStart ClientChange ClientExit ClientStartUser9User8User7User6User5User4User3User2User1User0OSSEchoUnknownNoneSensingReset TuneRequestQueueEv QueueSyncPos QueueSkew QueueTick QueueClock QueueTempoQueueSetPosTimeQueueSetPosTick QueueStop QueueContinue QueueStartKeySignTimeSignQFrameSongSelSongPosRegParam NonRegParam Control14 PitchBend ChanPress PgmChange ControllerKeyPressNoteOffNoteOnANote highPrioritytagqueue timestampsourcedestbodyCustomcustom0custom1custom2Volume volumeVolumevolumeLRvolumeFRvolumeDUClusterclusterClusterSample sampleStd sampleBank samplePrgCtrl ctrlChannel ctrlParam ctrlValueNote noteChannelnoteNote noteVelocitynoteOffVelocity noteDurationInstr instrClusterinstrStd instrBankinstrPrg InstrCluster TimeStampRealTimeTickTimeConnect BlockModeNonblockBlock DuplexMode InputMode OutputMode AllowOutput AllowInputOpenModeopenclosewithgetName setBlockinggetOutputBufferSizesetOutputBufferSizegetInputBufferSizesetInputBufferSize setPoolOutputsetPoolOutputRoomresetPoolOutput setPoolInputresetPoolInput connectFrom connectTodisconnectFrom disconnectToparsegetgetAny queryFirst queryNextsetcopyclone getClientgetTypegetBroadcastFiltergetErrorBounce getNumPorts getEventLost setClientsetNamesetBroadcastFiltersetErrorBouncegetId createSimple deleteSimple withSimplecreatedeletegetAddrsetAddrgetPort getCapabilitygetMidiChannels getMidiVoicesgetSynthVoicesgetPortSpecifiedgetTimestampinggetTimestampRealgetTimestampQueue getReadUse getWriteUsesetPort setCapabilitysetMidiChannelssetSynthVoices setMidiVoicessetPortSpecifiedsetTimestampingsetTimestampRealsetTimestampQueuesyncOutputQueueinput inputPendingoutput outputBuffer outputDirect outputPending extractOutput removeOutput drainOutput dropOutputdropOutputBuffer dropInputdropInputBuffer simpleNote volumeSamealloc allocNamed withNamedfreecontrolgetQueue getLockedgetOwnergetFlags setLockedsetOwnersetFlags getEvents getTickTime getRealTimegetTempogetPPQgetSkew getSkewBasesetTemposetPPQsetSkew setSkewBase getResolutionsetType setResolution defaultName showsField showsRecordexpTypeimpType nanoPerSecondimpexpunTypeunCap"snd_seq_queue_timer_set_resolution"snd_seq_queue_timer_get_resolutionsnd_seq_queue_timer_set_typesnd_seq_queue_timer_get_typesnd_seq_queue_timer_get_queuesnd_seq_queue_timer_copysnd_seq_queue_timer_freesnd_seq_queue_timer_malloc!snd_seq_queue_tempo_set_skew_base!snd_seq_queue_tempo_get_skew_basesnd_seq_queue_tempo_set_skewsnd_seq_queue_tempo_get_skewsnd_seq_queue_tempo_set_ppqsnd_seq_queue_tempo_get_ppqsnd_seq_queue_tempo_set_temposnd_seq_queue_tempo_get_temposnd_seq_queue_tempo_get_queuesnd_seq_queue_tempo_copysnd_seq_queue_tempo_freesnd_seq_queue_tempo_mallocsnd_seq_queue_status_copysnd_seq_queue_status_freesnd_seq_queue_status_mallocsnd_seq_queue_info_get_queuesnd_seq_queue_info_set_flagssnd_seq_queue_info_get_flagssnd_seq_queue_info_set_ownersnd_seq_queue_info_get_ownersnd_seq_queue_info_set_lockedsnd_seq_queue_info_get_lockedsnd_seq_queue_info_set_namesnd_seq_queue_info_get_namesnd_seq_queue_info_copysnd_seq_queue_info_freesnd_seq_queue_info_mallocsnd_seq_port_info_get_write_usesnd_seq_port_info_get_read_use%snd_seq_port_info_set_timestamp_queue%snd_seq_port_info_get_timestamp_queue"snd_seq_port_info_set_synth_voices"snd_seq_port_info_get_synth_voices!snd_seq_port_info_set_midi_voices!snd_seq_port_info_get_midi_voices#snd_seq_port_info_set_midi_channels#snd_seq_port_info_get_midi_channels snd_seq_port_info_set_capability snd_seq_port_info_get_capabilitysnd_seq_port_info_set_clientsnd_seq_port_info_get_clientsnd_seq_port_info_set_portsnd_seq_port_info_get_port$snd_seq_port_info_set_timestamp_real$snd_seq_port_info_get_timestamp_real"snd_seq_port_info_set_timestamping"snd_seq_port_info_get_timestamping$snd_seq_port_info_set_port_specified$snd_seq_port_info_get_port_specifiedsnd_seq_port_info_set_namesnd_seq_port_info_get_namesnd_seq_port_info_copysnd_seq_port_info_freesnd_seq_port_info_malloc"snd_seq_client_info_get_event_lost!snd_seq_client_info_get_num_portssnd_seq_client_info_get_typesnd_seq_client_info_set_clientsnd_seq_client_info_get_client$snd_seq_client_info_set_error_bounce$snd_seq_client_info_get_error_bounce(snd_seq_client_info_set_broadcast_filter(snd_seq_client_info_get_broadcast_filtersnd_seq_client_info_set_namesnd_seq_client_info_get_namesnd_seq_client_info_copysnd_seq_client_info_freesnd_seq_client_info_malloc QueueTimer QueueTimer_ QueueTempo_ QueueStatus QueueStatus_ QueueInfo QueueInfo_PortInfo PortInfo_ ClientInfo ClientInfo_Cmallocwith_client_infoclient_info_mallocclient_info_copyclient_info_cloneclient_info_get_nameclient_info_set_name client_info_get_broadcast_filter client_info_set_broadcast_filterclient_info_get_error_bounceclient_info_set_error_bounceclient_info_get_clientclient_info_set_clientclient_info_get_typeclient_info_get_num_portsclient_info_get_event_lostwith_port_infoport_info_mallocport_info_copyport_info_cloneport_info_get_nameport_info_set_nameport_info_get_port_specifiedport_info_set_port_specifiedport_info_get_timestampingport_info_set_timestampingport_info_get_timestamp_realport_info_set_timestamp_realport_info_get_portport_info_set_portport_info_get_clientport_info_set_clientport_info_get_capabilityport_info_set_capabilityport_info_get_midi_channelsport_info_set_midi_channelsport_info_get_midi_voicesport_info_set_midi_voicesport_info_get_synth_voicesport_info_set_synth_voicesport_info_get_timestamp_queueport_info_set_timestamp_queueport_info_get_read_useport_info_get_write_usewith_queue_infoqueue_info_mallocqueue_info_copyqueue_info_clonequeue_info_get_namequeue_info_set_namequeue_info_get_lockedqueue_info_set_lockedqueue_info_get_ownerqueue_info_set_ownerqueue_info_get_flagsqueue_info_set_flagsqueue_info_get_queuewith_queue_statusqueue_status_mallocqueue_status_copyqueue_status_clonewith_queue_tempoqueue_tempo_mallocqueue_tempo_copyqueue_tempo_clonequeue_tempo_get_queuequeue_tempo_get_tempoqueue_tempo_set_tempoqueue_tempo_get_ppqqueue_tempo_set_ppqqueue_tempo_get_skewqueue_tempo_set_skewqueue_tempo_get_skew_basequeue_tempo_set_skew_basewith_queue_timerqueue_timer_mallocqueue_timer_copyqueue_timer_clonequeue_timer_get_queuequeue_timer_get_typequeue_timer_set_typequeue_timer_get_resolutionqueue_timer_set_resolution connSourceconnDest peekTimestamp pokeTimestampallocaEv allocaMaybeEvpokeDatapeekData expNoteEv expCtrlEv expQueueEv expEmptyEv expCustomEv expAddrEv expConnEv peekNoteEv peekCtrlEv peekAddrEv peekConnEv peekEmptyEv peekCustomEvCore expOpenMode expBlockModesnd_seq_parse_addresssnd_seq_disconnect_tosnd_seq_disconnect_fromsnd_seq_connect_tosnd_seq_connect_fromsnd_seq_reset_pool_inputsnd_seq_set_client_pool_inputsnd_seq_reset_pool_output#snd_seq_set_client_pool_output_roomsnd_seq_set_client_pool_outputsnd_seq_set_input_buffer_sizesnd_seq_get_input_buffer_sizesnd_seq_set_output_buffer_sizesnd_seq_get_output_buffer_sizesnd_seq_nonblock snd_seq_name snd_seq_close snd_seq_open withOpenMode parseAddresssnd_seq_set_client_infosnd_seq_query_next_clientsnd_seq_get_any_client_infosnd_seq_get_client_infoT_snd_seq_delete_portsnd_seq_create_portsnd_seq_delete_simple_portsnd_seq_create_simple_portsnd_seq_port_info_set_addrsnd_seq_port_info_get_addrsnd_seq_set_port_infosnd_seq_query_next_portsnd_seq_get_any_port_infosnd_seq_get_port_infosnd_seq_drop_input_buffersnd_seq_drop_inputsnd_seq_drop_output_buffersnd_seq_drop_outputsnd_seq_drain_outputsnd_seq_extract_outputsnd_seq_event_output_pendingsnd_seq_event_output_directsnd_seq_event_output_buffersnd_seq_event_outputsnd_seq_event_input_pendingsnd_seq_event_inputsnd_seq_sync_output_queue checkResultsnd_seq_control_queuesnd_seq_free_queuesnd_seq_alloc_named_queuesnd_seq_alloc_queuesnd_seq_set_queue_infosnd_seq_get_queue_infosnd_seq_queue_status_get_status"snd_seq_queue_status_get_real_time"snd_seq_queue_status_get_tick_timesnd_seq_queue_status_get_eventssnd_seq_queue_status_get_queuesnd_seq_get_queue_status _getStatussnd_seq_set_queue_temposnd_seq_get_queue_temposnd_seq_set_queue_timersnd_seq_get_queue_timer