<node name="/com/complecwaft/Looper">
 <interface name='org.freedesktop.Application'>
    <method name='Activate'>
      <arg type='a{sv}' name='platform_data' direction='in'/>
    </method>
    <method name='Open'>
      <arg type='as' name='uris' direction='in'/>
      <arg type='a{sv}' name='platform_data' direction='in'/>
    </method>
    <method name='ActivateAction'>
      <arg type='s' name='action_name' direction='in'/>
      <arg type='av' name='parameter' direction='in'/>
      <arg type='a{sv}' name='platform_data' direction='in'/>
    </method>
  </interface>
  <interface name="com.complecwaft.looper">
    <method name="CreateHandle">
      <arg type='s' name='new_handle' direction='out' />
    </method>
    <method name="ClearHandle">
      <arg type='s' name='handle' direction='in' />
    </method>
    <method name="Start">
      <arg type='s' name='path' direction='in' />
      <arg type='b' name='isUri' direction='in' />
    </method>

    <method name="StartWithStreamIndex">
      <arg type='s' name='path' direction='in' />
      <arg type='b' name='isUri' direction='in' />
      <arg type='u' name='streamIndex' direction='in' />
    </method>
    <method name='Load'>
      <arg type='s' name='path' direction='in' />
      <arg type='b' name='isUri' direction='in' />
    </method>
    <method name="Quit" />
    <method name="Stop" />
    <method name="TogglePause" />
    <method name="GetStreams">
      <arg name="streams" type="a(dsi)" direction="out" />
    </method>
    <method name="PlayStream">
      <arg name="idx" type="u" direction="in" />
    </method>
    <signal name="PlaybackEngineStarted" />
    <signal name="SpeedChanged">
        <arg name="new_speed" type="d" />
    </signal>
    <signal name="TempoChanged">
        <arg name="new_tempo" type="d" />
    </signal>
    <signal name="PitchChanged">
        <arg name="new_pitch" type="d" />
    </signal>
    <signal name="PauseChanged">
        <arg name="now_paused" type="b" />
    </signal>
    <signal name="Stopped" />
    <signal name="ErrorOccurred">
        <arg name="error_desc" type="s" />
        <arg name="error_type" type="s" />
    </signal>
    <signal name="Seeked">
        <arg name="to_position" type="d" />
    </signal>
    <signal name="FileChanged">
        <arg name="path" type="s" />
        <arg name="title" type="s" />
    </signal>
    <property name="FilePath" type="s" access="read" />
    <property name="FileTitle" type="s" access="read" />
    <property name="Position" type="d" access="readwrite" />
    <property name="Length" type="d" access="read" />
    <property name="Speed" type="d" access="readwrite" />
    <property name="Tempo" type="d" access="readwrite" />
    <property name="Pitch" type="d" access="readwrite" />
    <property name="Volume" type="d" access="readwrite" />
    <property name="Paused" type="b" access="readwrite" />
    <property name="IsStopped" type="b" access="read" />
    <property name="IsDaemon" type="b" access="read" />
    <property name="StreamIdx" type="u" access="read" />
  </interface>
  <interface name="com.complecwaft.looper.Errors" >
    <method name="PopFront">
      <arg name="handle" direction="in" type="s" />
      <arg name="error" direction="out" type="s" />
    </method>
    <method name="PopBack">
      <arg name="handle" direction="in" type="s" />
      <arg name="error" direction="out" type="s" />
    </method>
    <method name="PeekFront">
      <arg name="handle" direction="in" type="s" />
      <arg name="error" direction="out" type="s" />
    </method>
    <method name="PeekBack">
      <arg name="handle" direction="in" type="s" />
      <arg name="error" direction="out" type="s" />
    </method>
    <method name="GetCount">
      <arg name="handle" direction="in" type="s" />
      <arg name="count" direction="out" type="u" />
    </method>
    <method name="IsEmpty">
      <arg name="handle" direction="in" type="s" />
      <arg name="empty" direction="out" type="b" />
    </method>
    <method name="Clear">
      <arg name="handle" direction="in" type="s" />
    </method>
    <method name="PeekAll">
      <arg name="handle" direction="in" type="s" />
      <arg name="errors" direction="out" type="as" />
    </method>
    <method name="GetAllAndClear">
      <arg name="handle" direction="in" type="s" />
      <arg name="errors" direction="out" type="as" />
    </method>
  </interface>
</node>