<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Dear list,<br>
    </p>
    <p>here's a new pre-release for the AoO multichannel audio streaming
      library. In the last two months, the library has been seen many
      improvements and has been used successfully in our Virtual
      Rehearsal Room project (see <a moz-do-not-send="true"
        href="https://vrr.iem.at/">vrr.iem.at</a>).</p>
    <p>Binaries for all common platforms (Windows, macOS, Linux, ARM
      boards) are available on Deken (search for "aoo"). The source code
      can be found here: <a class="moz-txt-link-freetext" href="https://git.iem.at/cm/aoo">https://git.iem.at/cm/aoo</a><br>
    </p>
    <p>See the help patches (aoo_send~-help.pd, aoo_receive~-help.pd,
      aoo_server.pd) for usage instructions.<br>
    </p>
    <p>If you want to stream between different home networks (without
      port forwarding), you can use [aoo_client] and connect to our
      public AoO server at the IEM (hostname: vrr.iem.at, port: 7077).
      You can easily set up your own AoO server by running a Pd patch
      containing [aoo_server <port>] on your web server.<br>
    </p>
    <p>---<br>
    </p>
    <p>Selected features:<br>
    </p>
    <p>
    </p>
    <p>
      <li>create audio networks of any topology with arbitrary ad-hoc
        connections</li>
      <li>[aoo_send~] / [aoo_receive~] take a port number and ID, so
        multiple objects (within a single Pd instance) can operate on
        the same port. Additionally, you can have multiple objects
        across different Pd instances (using different port numbers).<br>
      </li>
      <li>[aoo_send~] can stream to several destinations simultaneously;<br>
      </li>
      <li>[aoo_receive~] can receive several AoO streams simultaneously,
        summing the signals</li>
      <li>AoO is connectionless: streams can start/stop at any time,
        enabling a "message-based audio" approach.</li>
      <li>AoO sinks can "invite" sources, i.e. ask them to send audio.
        The source may follow the invitation or decline it.</li>
      <li>AoO sinks and sources can operate at different blocksizes and
        samplerates</li>
      <li>the streaming format can be set independently for each source;
        currently only PCM (uncompressed) and Opus (compressed) are
        implemented, but this can be easily extended with the AoO codec
        plugin API.</li>
      <li>audio encoding/decoding is multithreaded</li>
      <li>adjustable resending mechanism for dropped packets</li>
      <li>adjustable jitter buffer size.</li>
      <li>[aoo_server] / [aoo_client] implement the UDP hole punching
        technique to establish peer2peer connections between different
        home networks.</li>
      <li>AoO is actually a C++ library with a C interface, so it can be
        used in apps or embedded devices (like the ESP32). An
        implementation for Supercollider is already planned.<br>
      </li>
    </p>
    <p>---</p>
    <p>For questions, bug reports or feature requests, please open an
      issue at <a class="moz-txt-link-freetext" href="https://git.iem.at/cm/aoo/-/issues">https://git.iem.at/cm/aoo/-/issues</a>. We're very happy
      about any kind of feedback!<br>
    </p>
    <p>Christof<br>
    </p>
  </body>
</html>