Tz+      !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~                            !"#$ % & ' ( ) * + , - . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ? @ A B C D E FGHIJK L MNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~     (NoneNoneNone!Convert number of nanoseconds to  (Convert fractional number of seconds to  Time must be non-negative. !Convert number of nanoseconds to  (Convert fractional number of seconds to       provisionalHenning ThielemannNone !None"# $%&'()*+,-./"# $%&'()*+,-."#  $%&'()*+,-./None     provisionalHenning ThielemannNoneThe type of queue identifiers. 0123456789:; 01234567890123456789:; provisionalHenning ThielemannNone Port types. Port capabilities. <application (sequencer/ editor) ='This port may connect to other devices E (whose characteristics are not known). >2Messages sent to this port will generate sounds. ?'This port is implemented in software. @'This port is implemented in hardware. A8Sampling device (sample can be downloaded at any time) B+Sampling device (support sample download) CSynth device D"General MIDI 2 compatible device EMT-32 compatible device FXG compatible device GGS compatible device H General MIDI compatible device Igeneric MIDI device Jhardware specific K=a type that cannot be represented by the other constructors Lrouting not allowed Mallow write subscription Nallow read subscription O allow read/write duplex Pallow write subscriptions Qallow read subscriptions Rwritable to this port Sreadable from this port TCa capability that cannot be represented by the other constructors U-The Enum instance may not be very efficient, &but it should hardly be used, at all. Better use constants such as  and set manipulation. ;If the binary logarithm is computed by constant unfolding, Jperformance would be better, but direct set manipulation is still faster. We implement the V instance in this way, Cin order to stay independent from the particular ALSA definitions, #that may differ between platforms. DW<=>?@ABCDEFGHIJKXLMNOPQRSTYZ[\ !"#$%&'()*+,-./01234567]^_U`?W<=>?@ABCDEFGHIJKXLMNOPQRSTYZ[\ !"#$%&'()*+,-./01234567*WKJIHGFEDCBA@?>=<X TSRQPONMLYZ[\ !"#$%&'()*+,-./01234567]^_U` provisionalHenning ThielemannNone8 The different types of clients. ; The type of client identifiers. 89:;<=>?@abcd 89:;<=>?@abc 8:9;<=>?@abcd NoneF%The address of all subscribed ports. ABCDeEFGHIfg ABCDeEFGHI ABCDeEFGHIfg!NoneJKLMhJKLMJKLMh" provisionalHenning ThielemannNoneNOPQRSTUVWijklXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~mnopqrstuvwxyz{|}~NOPQRSTUVWijklXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~mnopqrstuvwxyz{|}~?NVUTSRQPOWijklXZY[a`_^]\bihgfedcj vutsrqponmlkw|{zyx} ~ mnopqrstuvwxyz{|}~# provisionalHenning ThielemannNoneThe 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. $NoneDCreates 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. BClose 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? *This is the name that should be passed to  in most cases. &Get identifier of a sequencer handle. 4 It is the same identifier specified in the call to . .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). +Return the byte size of the output buffer. Resize of the output buffer. - This function clears all output events (see  drop_output). &Return the byte size of input buffer. Resize the input buffer. , This function clears all input events (see  drop_input). Resize the output memory pool. @Specify how much space should become free before waking clients = that are blocked due to a lack of space in the output pool. Reset the output pool. Resize the input memory pool. Reset the input pool.  The sequencer's "name". C This is not a name that you make up for your own purposes; 9 it has special significance to the ALSA library. ! Usually you need to pass  here  or simply use . Blocking behavior Handle to the sequencer. Blocking behavior Handle to the sequencer. handle to the sequencer  The sequencer's "name". C This is not a name that you make up for your own purposes; 9 it has special significance to the ALSA library. ! Usually you need to pass  here  or simply use . Blocking behavior ?Action on the sequencer, the result must be computed strictly. sequencer handle ALSA identifier for the handle sequencer handle blocking mode Sequencer handle.  Size of output buffer in bytes. Sequencer handle. New buffer size in bytes. Sequencer handle. Size of input buffer in bytes. Sequencer handle. New byffer size in bytes. Sequencer handle. New size in bytes. Sequencer handle. !Number of bytes need to wake up. Sequencer handle. Sequencer handle. New size in bytes. Sequencer handle. None/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 or prefixes thereof. Throws  (Errno 2)& exception if no client name matches. Sequencer handle. String to be parsed. The parsed address. ABCDEFGHI ABCDEFGHI None% provisionalHenning ThielemannNone-Copy the content of one object into another. KCreate a new information area filled with data about the sequencer client. 1Allocate an uninitialized object. (Not exported) 9Copy the content of an object to a newly created object. JCreate a new information area filled with data about an arbitrary client. ?Set the information for the sequencer client based on the data  in the given information area. CGet information about the client with the next biggest identifier. + Destination Source Was there a next client? )* None                     provisionalHenning ThielemannNone-Get the client identifier for the sequencer.  A convinience function. 'Set the name for the sequencer client.  A convinience function.  89:;<=>?@ ;<@=>?8:9&None     provisionalHenning ThielemannNoneNoneSimple subscription (w/ o exclusive & time conversion). Simple subscription (w/ o exclusive & time conversion).  Simple disconnection. !Simple disconnection. "Temporary subscription. #Temporary subscription.  !"# JKLM !"# JKLM "!#  !"#' provisionalHenning ThielemannNone >Create a new information area filled with data about an given  port on a given client. )Get the address of the information area. /Create a new information area filled with data %about a specific port on our client. 1Allocate an uninitialized object. (Not exported) '+Set the information for the sequencer port 1based on the data in the given information area. --Copy the content of one object into another. ;9Copy the content of an object to a newly created object. >Set the port address. D4Get information about the first port on our client. EAGet 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 and  is returned. J$% Destination Source &'()*+,-./0123456789:;<=>?@ABCDEH$%&'()*+,-./0123456789:;<=>?@ABCDEI$%&'()*+,-./0123456789:;<=>?@ABCDE provisionalHenning ThielemannNoneF Create a port - simple version. GDelete the port. I7Create a new port, as described by the info structure. JDelete the port. FGHIJ% !"#$%&'()*+,-./01234567FGHIJ%IFJGH !"#$%&'()*+,-./01234567FGHIJ  provisionalHenning ThielemannNoneKL$$%&'()*+,-./0123456789:;<=>?@ABCDEKL$$'CDEKL(%&13?)579;+-/=AB24@*68<:,.0>KL provisionalHenning ThielemannNoneMNOPQRSTUVWXYZ[\]^_`abcdefghijMNOPQRSTUVWXYZ[\]^_`abcdefghijMNOPQRSTUVWXYZ[\]^_`abcdefghijMNOPQRSTUVWXYZ[\]^_`abcdefghij provisionalHenning ThielemannNoneoDelete the specified queue. pstartstopcontinue a queue ?In the prototype event you can provide additional information. ?The prototype event does not need to be a queue control event, this part is ignored anyway. 5In the prototype event you may also specify a queue. GThis is the queue that the timestamp of the prototype event refers to. KThis way you can control the target queue using timing from another queue. kQueue.T identifier. lmnoSequencer handle. Queue.T identifier. pSequencer handle. target Queue.T. 9prototype event that may provide timestamp, source queue klmnopkmolnpklmnop provisionalHenning ThielemannNoneq3Wait until all events of the client are processed. r$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). s2Returns 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: r. t9Output an event and drain the buffer, if it became full.  Throws exceptions.  See also: v, u,  w, z, {,  x, y u-Output an event without draining the buffer.  Throws -EAGAIN if the buffer becomes full.  See also t. vJOutput an event directly to the sequencer, NOT through the output buffer. 1 If an error occurs, then we throw an exception.  See also t. w?Return the size (in bytes) of pending events on output buffer.  See also t. x*Extract the first event in output buffer.  Throws  (Errno 2)& exception if output buffer is empty.  See also t. y)Remove the first event in output buffer.  Throws an exception on error.  See also t. z"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 q after calling this function.  Throws an exception on error.  See also: t, q. {6Remove events from both the user-space output buffer, ' and the kernel-space sequencer queue.  See also: z, |, y. |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: ~, y. ~0Remove events from the user-space input buffer.  See also: }. 0Make a note whose unspecified fields contain 0. =Construct an ALSA sequencer event from very few information. 4Most fields are initialized with sensible defaults. IYou may use this as a start and alter its fields for your special needs. z (Event.simple myAddr (Event.simpleNote (Event.Channel 0) (Event.Pitch 60) Event.normalVelocity)) {Event.dest = destAddr} qrsrefill if empty? number of events in buffer t+the number of remaining events (or bytes?) u"the byte size of remaining events v&number of bytes sent to the sequencer w"size of pending events (in bytes) x3the first event in the buffer (if one was present) yz-byte size of events remaining in the buffer. {|}~NOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~qrstuvwxyz{|}~tuvwxyz{|qrs}~NVUTSRQPOWjvutsrqponmlkbihgfedc}~[a`_^]\XZYw|{zyxqrstuvwxyz{|}~None    (None1Allocate an uninitialized object. (Not exported) 0Remove events according to the given conditions -Copy the content of one object into another.                None0Remove events according to the given conditions 2All events in the local input buffer are removed. 1The conditions are not checked for these events. This is equivalent to )*. =Matching events in the local output buffer are removed, too. >Matching events in the kernel buffer are removed in any case. $If there are no further conditions, then this is equivalent to )+. OALSA maintainers say, that destination address and queue are checked together, at least in the kernel buffer. JHowever up to ALSA-1.0.22 the check for the queue is missing in libasound for the local buffer. %NoteOff events are kept in any case.  provisionalHenning ThielemannNone9Copy the content of an object to a newly created object.  Destination Source  provisionalHenning ThielemannNone-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)  Destination Source   provisionalHenning ThielemannNone9Copy the content of an object to a newly created object. -Copy the content of one object into another.  Destination Source  provisionalHenning ThielemannNone9Copy the content of an object to a newly created object.  Destination Source  NoneNoneeWait for new input to be available from the sequencer (even if there is already input in the buffer) sWait until new output may be drained from the buffer to the sequencer (even if the output buffer is already empty) ?Wait until new input is available or new output may be drained A thread-compatible version of  Sound.ALSA.Sequencer.Event.input. K This call is always blocking (unless there are already event in the input L buffer) but will not block other threads. The sequencer, however, must be 5 set non-blocking or this will not work as expected. A thread-compatible version of !Sound.ALSA.Sequencer.Event.output. C This call is always blocking (unless there is space in the output L buffer) but will not block other threads. The sequencer, however, must be 5 set non-blocking or this will not work as expected. A thread-compatible version of &Sound.ALSA.Sequencer.Event.drainBuffer. E This call is always blocking but will not block other threads. The G sequencer, however, must be set non-blocking or this will not work as  expected.  provisionalNone9Copy the content of an object to a newly created object. 1Allocate an uninitialized object. (Not exported) Subscribe a port connection Subscribe a port connection: subscribeSimple5 sender dest exclusive (Just (updatequeue, realtime)) Unsubscribe a port connection: unsubscribeSimple sender dest  Destination Source  provisionalNone Set the client/port address of a query  JQueries a subscriber connected to (Write) or from (Read) a given address:   seq addr typ index  1Queries the list of subscribers accessing a port  Destination Source                       provisionalHenning ThielemannNone,-./0123456789:;,-<=>?,@AB,-CDEFGHIJKLMNOPQRSTUVWXYZ[\]^A_`,-abcE , - d e E b c C D!,!-!f!g"h"i"j"k"l"m"n"o"p"A"l"q"r"m"s"t"u"v"w"x"i"y"z"{"|"}"~""j"""""""""""""k""""""n""""""""""""""o"""""""""""""p""""","-"""""f"g"""""""""""""""""""""""""""""""""""""""#,############$$$$$$$$$$$$$$$$$  %,%%%%%%%%%%%%%%%%% ,              ',''''''''''''''''''''''' '!'"'#'$'%'&'''''()*+,  ,$ "&'%!#-./0123456789:;<+=*>?@ABCDEfgF,GHIJKLMNOPQRSTUVWXYZ[\],^_`abcd,efdg,dhijklmnoApqr,dstuvwxy35;,zd{|}~UV+A,zsd|~$z8-   !""""""""""""""""""""""""""""""""""""""""""""##-### # # # # ##$$$$$$$$$$$$$$%%-%% %!%"%#%$%%%&%'%(%)%*%+%,%-%.%0%/%%z%0%1%2&3&4&5&6&7&8&,&9&:';'<''z=>?'-'' '"'@'A'B'C'D'E'F'G'H'I'J'K'&'''L'M'N'O'P'Q'R'S','-'!'#'.'0'/'0'1'2(z((U(T(,(U(V(d({(M(N(W(P(R(S(V(f(X(e(Y(Z([(\(](^(_(`(a(b(c(1111111d alsa-seq-0.6Sound.ALSA.Sequencer.RealTimeSound.ALSA.Sequencer.TimeSound.ALSA.Sequencer.QueueSound.ALSA.Sequencer.PortSound.ALSA.Sequencer.ClientSound.ALSA.Sequencer.AddressSound.ALSA.Sequencer.ConnectSound.ALSA.Sequencer.EventSound.ALSA.SequencerSound.ALSA.Sequencer.Query Sound.ALSA.Sequencer.Client.Info%Sound.ALSA.Sequencer.Client.InfoMonadSound.ALSA.Sequencer.Port.Info#Sound.ALSA.Sequencer.Port.InfoMonad#Sound.ALSA.Sequencer.Event.Accessor&Sound.ALSA.Sequencer.Event.RemoveMonadSound.ALSA.Sequencer.Queue.Info!Sound.ALSA.Sequencer.Queue.Status Sound.ALSA.Sequencer.Queue.Tempo Sound.ALSA.Sequencer.Queue.TimerSound.ALSA.Sequencer.PollSound.ALSA.Sequencer.ConcurrentSound.ALSA.Sequencer.Subscribe$Sound.ALSA.Sequencer.Subscribe.QuerySound.ALSA.Sequencer.Utility%Sound.ALSA.Sequencer.Marshal.RealTimeSound.ALSA.Sequencer.Area!Sound.ALSA.Sequencer.Marshal.Time"Sound.ALSA.Sequencer.Marshal.Queue!Sound.ALSA.Sequencer.Marshal.Port#Sound.ALSA.Sequencer.Marshal.Client$Sound.ALSA.Sequencer.Marshal.Address$Sound.ALSA.Sequencer.Marshal.Connect"Sound.ALSA.Sequencer.Marshal.Event&Sound.ALSA.Sequencer.Marshal.SequencerSound.ALSA.Sequencer.Sequencer'Sound.ALSA.Sequencer.Marshal.ClientInfo,Sound.ALSA.Sequencer.Client.Info.EventFilter%Sound.ALSA.Sequencer.Marshal.PortInfo!Sound.ALSA.Sequencer.Event.RemoveEventdropInputBufferdropOutputBufferTConssecsnano fromInteger fromDoublefromFractional toIntegertoDouble toFractionalStampRealTickModeRelativeAbsolutemodestampconsAbsconsReldirectTypeCap systemTimersystemAnnounceunknowncapReadcapWrite capSyncRead capSyncWrite capDuplex capSubsRead capSubsWrite capNoExportcaps typeSpecifictypeMidiGeneric typeMidiGM typeMidiGS typeMidiXG typeMidiMT32 typeMidiGM2 typeSynthtypeDirectSample typeSample typeHardware typeSoftwaretypeSynthesizertypePorttypeApplicationtypesKernelUsersystem subscribers broadcastclientportsourcedestDataExtEvCustomEvEmptyEvConnEvAddrEvQueueEvCtrlEvNoteEvPortUnsubscribedPortSubscribed PortChangePortExit PortStart ClientChange ClientExit ClientStartUserVar4UserVar3UserVar2UserVar1UserVar0BounceSysExUser9User8User7User6User5User4User3User2User1User0OSSEchoUnknownNoneSensingReset TuneRequest QueueSyncPos QueueSkew QueueTick QueueClock QueueTempoQueueSetPosTimeQueueSetPosTick QueueStop QueueContinue QueueStartTempounTempoKeySignTimeSignQFrameSongSelSongPosRegParam NonRegParam Control14 PitchBend ChanPress PgmChange ControllerKeyPressNoteOffNoteOnANote highPrioritytagqueuetimebodyTagunTagCustomcustom0custom1custom2Ctrl ctrlChannel ctrlParam ctrlValueValueunValue Parameter unParameterNote noteChannelnoteNote noteVelocitynoteOffVelocity noteDurationDuration unDurationVelocity unVelocityPitchunPitchChannel unChannel BlockModeNonblockBlock DuplexMode InputMode OutputMode AllowOutput AllowInputOpenModeopen openDefaultclosewith withDefault defaultNamegetName setBlockinggetOutputBufferSizesetOutputBufferSizegetInputBufferSizesetInputBufferSize setPoolOutputsetPoolOutputRoomresetPoolOutput setPoolInputresetPoolInputparseCinitnextfirstloop_loopcopyclonesetNamegetBroadcastFiltersetBroadcastFiltergetErrorBouncesetErrorBounce getClient setClientgetType getNumPorts getEventLostgetgetAnyset queryNextrunmodifygetId queryFirst queryLoop_ queryLoop filterClear filterAdd filterDel filterCheckreverse toSubscribersfromSubscribers createFromcreateTo deleteFromdeleteTowithFromwithTogetPortSpecifiedsetPortSpecifiedgetTimestampingsetTimestampinggetTimestampRealsetTimestampRealgetPortsetPort getCapability setCapabilitygetMidiChannelssetMidiChannels getMidiVoices setMidiVoicesgetSynthVoicessetSynthVoicesgetTimestampQueuesetTimestampQueuegetAddrsetAddr getReadUse getWriteUse createSimple deleteSimple withSimplecreatedeletealloc allocNamed withNamedfreecontrolsyncOutputQueueinput inputPendingoutput outputBuffer outputDirect outputPending extractOutput removeOutput drainOutput dropOutput dropInput simpleNotenormalVelocity offVelocitysimple forSourcePort forConnection customZero timeStampconnectgetInputsetInputputInput getOutput setOutput putOutput getChannel setChannel putChannel setEventType putEventTypegetTagsetTagputTaggetDestsetDestputDest getIgnoreOff setIgnoreOff putIgnoreOffgetTimesetTimeputTime getLocked setLockedgetOwnersetOwnergetFlagssetFlagsgetQueue getTickTime getRealTime getEventsgetTemposetTempogetPPQsetPPQgetSkewsetSkew getSkewBase setSkewBaseMidiTick MidiClockAlsasetType getResolution setResolution descriptorsthreadWaitInputthreadWaitOutputthreadWaitDuplexmallocsetQueue getExclusive setExclusive getTimeUpdate setTimeUpdate getTimeReal setTimeReal getSender setSender subscribePortunsubscribePort subscribe unsubscribeWriteReadgetIndexsetIndex getNumSubsgetRootqueryqueryAll showsField showsRecordcheckResultQuery $fStorableT$fShowTbaseGHC.PtrPtrFunPtrGHC.ForeignPtr ForeignPtrForeign.C.String withCAString peekCStringCStringForeign.Marshal.UtilsForeign.Marshal.AllocallocaForeign.ForeignPtr.ImpwithForeignPtr newForeignPtrForeign.Storablepeek FlagContainerFlagmodeAccstampAcc stampTick stampRealmodeAbsmodeRelpoke peekStamp pokeStampPosition unPositionSkew skewValueskewBaseimpexp$fStorableSkewTypeApplicationTypePortTypeSynthesizer TypeSoftware TypeHardware TypeSampleTypeDirectSample TypeSynth TypeMIDIGM2 TypeMIDIMT32 TypeMIDIXG TypeMIDIGS TypeMIDIGMTypeMIDIGeneric TypeSpecific TypeOther CapNoExport CapSubsWrite CapSubsRead CapDuplex CapSyncWrite CapSyncReadCapWriteCapReadCapOther$fEnumCapabilityFlagGHC.EnumEnumTypeFlagCapabilityFlag capFlagSet typeFlagSet $fIxTypeFlag$fEnumTypeFlag$fIxCapabilityFlagimpTypeexpEvETypeunEType FlagValueFlagseventLengthFixedeventLengthVariableeventLengthVarUser priorityHighpriorityNormal pokeQueue withMaybepokeBodypokeData pokeHeaderpeekData expQueueEv maxEventTypepeekBody peekNoteEv peekCtrlEv peekQueueEv peekQueueExt peekAddrEv peekConnEv peekEmptyEv peekCustomEv peekExtEv $fTypeConnEv $fTypeAddrEv $fTypeExtEv$fTypeCustomEv $fTypeEmptyEv $fTypeQueueEv $fTypeCtrlEv $fTypeNoteEv$fStorableCustom$fStorableCtrl$fStorableNote $fFlagFlagCore expOpenMode expBlockMode$fAllowInputDuplexMode$fAllowInputInputMode$fAllowOutputDuplexMode$fAllowOutputOutputMode$fOpenModeDuplexMode$fOpenModeInputMode$fOpenModeOutputModesnd_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 getEventLost_T_ queryNext_set_getAny_get_ getNumPorts_getType_ setClient_ getClient_setErrorBounce_getErrorBounce_setBroadcastFilter_getBroadcastFilter_setName_getName_copy_malloc_ queryInit$fCT$fCT0check_del_add_clear_clearaddcheck unpackEType getWriteUse_getTimestampQueue_ghc-prim GHC.TypesTrue getReadUse_setAddr_getAddr_setTimestampQueue_setSynthVoices_getSynthVoices_setMidiVoices_getMidiVoices_setMidiChannels_getMidiChannels_setCapability_getCapability_setPort_getPort_setTimestampReal_getTimestampReal_setTimestamping_getTimestamping_setPortSpecified_getPortSpecified_ Condition getCondition setCondition getEventType setRealTime setTickTime condInput condOutputcondDestcondDestChannelcondTimeBefore condTimeAfter condTimeTick condEventType condIgnoreOff condTagMatch