<html>
  <head>
    <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <br class="">
    <blockquote
      cite="mid:2047ED9B-6D8D-429D-82D5-0A4090F7650D@gmail.com"
      type="cite">
      <div>
        <blockquote type="cite" class="">
          <div class=""><br style="font-family: Helvetica; font-size:
              12px; font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; orphans:
              auto; text-align: start; text-indent: 0px; text-transform:
              none; white-space: normal; widows: auto; word-spacing:
              0px; -webkit-text-stroke-width: 0px;" class="">
            <blockquote type="cite" style="font-family: Helvetica;
              font-size: 12px; font-style: normal; font-variant-caps:
              normal; font-weight: normal; letter-spacing: normal;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;"
              class="">why don't  you patch a little tester app that
              sends some generated<br class="">
              sounds, preferably with very clear attack, out and record
              this back<br class="">
              in. that way you can measure the (roundtrip) latency of
              the whole<br class="">
              system.<br class="">
            </blockquote>
            <br style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; orphans:
              auto; text-align: start; text-indent: 0px; text-transform:
              none; white-space: normal; widows: auto; word-spacing:
              0px; -webkit-text-stroke-width: 0px;" class="">
            <span style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; orphans:
              auto; text-align: start; text-indent: 0px; text-transform:
              none; white-space: normal; widows: auto; word-spacing:
              0px; -webkit-text-stroke-width: 0px; float: none; display:
              inline !important;" class="">Of course, that is a way.
              "Knowing" the latency instead of "measuring"</span><br
              style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; orphans:
              auto; text-align: start; text-indent: 0px; text-transform:
              none; white-space: normal; widows: auto; word-spacing:
              0px; -webkit-text-stroke-width: 0px;" class="">
            <span style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; orphans:
              auto; text-align: start; text-indent: 0px; text-transform:
              none; white-space: normal; widows: auto; word-spacing:
              0px; -webkit-text-stroke-width: 0px; float: none; display:
              inline !important;" class="">it would be so nice, though.</span><br
              style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; orphans:
              auto; text-align: start; text-indent: 0px; text-transform:
              none; white-space: normal; widows: auto; word-spacing:
              0px; -webkit-text-stroke-width: 0px;" class="">
          </div>
        </blockquote>
        of course knowing is better than measuring :)</div>
      <div><br class="">
      </div>
      <div>i think it is easy enough to measure roundtrip latency, it is
        harder to measure just “output” latency.</div>
    </blockquote>
    A good way to do this is to make this patch: [adc~]-[dac~]. Then,
    attach one channel of your scope to an old (cut-able) audio cable
    connected to the input and another channel to another old cable on
    the output. Then just send pulses or snap your fingers or whatever
    and look at the lag on the scope. <br>
    <br>
    Whatever the latency is that results from DtoA will be nearly
    identical on the AtoD side because any pro audio device is going to
    have exactly the same filter on both ends. The sampling part of the
    conversion is nearly instantaneous. It depends on your audio backend
    how (when) the samples get pushed and pulled onto the CPU but that
    will be short too, especially if you set the latency value in Pd's
    to as low as it will go. So the RTT is the only thing you can
    measure, but it will probably be very, very close to 2x the output
    latency (unless you use Windows, in which case all bets are off!). <br>
    <br>
    <blockquote
      cite="mid:2047ED9B-6D8D-429D-82D5-0A4090F7650D@gmail.com"
      type="cite">
      <div><br class="">
      </div>
      <div><br class="">
        <blockquote type="cite" class="">
          <div class=""><br style="font-family: Helvetica; font-size:
              12px; font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; orphans:
              auto; text-align: start; text-indent: 0px; text-transform:
              none; white-space: normal; widows: auto; word-spacing:
              0px; -webkit-text-stroke-width: 0px;" class="">
            <blockquote type="cite" style="font-family: Helvetica;
              font-size: 12px; font-style: normal; font-variant-caps:
              normal; font-weight: normal; letter-spacing: normal;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;"
              class="">with a click track and a good musician that plays
              with it (that you<br class="">
              record) you should be able to align generated sounds and
              live<br class="">
              recorded material. this is how we do it in the studio if
              necessary :)<br class="">
              but it is far from an automated process...<br class="">
            </blockquote>
            <br style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; orphans:
              auto; text-align: start; text-indent: 0px; text-transform:
              none; white-space: normal; widows: auto; word-spacing:
              0px; -webkit-text-stroke-width: 0px;" class="">
            <span style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; orphans:
              auto; text-align: start; text-indent: 0px; text-transform:
              none; white-space: normal; widows: auto; word-spacing:
              0px; -webkit-text-stroke-width: 0px; float: none; display:
              inline !important;" class="">To make things at least a bit
              more feasible, I make the measured or</span><br
              style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; orphans:
              auto; text-align: start; text-indent: 0px; text-transform:
              none; white-space: normal; widows: auto; word-spacing:
              0px; -webkit-text-stroke-width: 0px;" class="">
            <span style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; orphans:
              auto; text-align: start; text-indent: 0px; text-transform:
              none; white-space: normal; widows: auto; word-spacing:
              0px; -webkit-text-stroke-width: 0px; float: none; display:
              inline !important;" class="">calculated latency a
              configuration parameter, so that when you fire Pd</span><br
              style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; orphans:
              auto; text-align: start; text-indent: 0px; text-transform:
              none; white-space: normal; widows: auto; word-spacing:
              0px; -webkit-text-stroke-width: 0px;" class="">
            <span style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; orphans:
              auto; text-align: start; text-indent: 0px; text-transform:
              none; white-space: normal; widows: auto; word-spacing:
              0px; -webkit-text-stroke-width: 0px; float: none; display:
              inline !important;" class="">up the next time with the
              same setup, the patch remembers the latency.</span><br
              style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; orphans:
              auto; text-align: start; text-indent: 0px; text-transform:
              none; white-space: normal; widows: auto; word-spacing:
              0px; -webkit-text-stroke-width: 0px;" class="">
          </div>
        </blockquote>
        that sounds reasonable.<br class="">
        <blockquote type="cite" class="">
          <div class=""><br style="font-family: Helvetica; font-size:
              12px; font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; orphans:
              auto; text-align: start; text-indent: 0px; text-transform:
              none; white-space: normal; widows: auto; word-spacing:
              0px; -webkit-text-stroke-width: 0px;" class="">
            <span style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; orphans:
              auto; text-align: start; text-indent: 0px; text-transform:
              none; white-space: normal; widows: auto; word-spacing:
              0px; -webkit-text-stroke-width: 0px; float: none; display:
              inline !important;" class="">Roman</span><br
              style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; orphans:
              auto; text-align: start; text-indent: 0px; text-transform:
              none; white-space: normal; widows: auto; word-spacing:
              0px; -webkit-text-stroke-width: 0px;" class="">
            <br style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; orphans:
              auto; text-align: start; text-indent: 0px; text-transform:
              none; white-space: normal; widows: auto; word-spacing:
              0px; -webkit-text-stroke-width: 0px;" class="">
            <br style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; orphans:
              auto; text-align: start; text-indent: 0px; text-transform:
              none; white-space: normal; widows: auto; word-spacing:
              0px; -webkit-text-stroke-width: 0px;" class="">
            <blockquote type="cite" style="font-family: Helvetica;
              font-size: 12px; font-style: normal; font-variant-caps:
              normal; font-weight: normal; letter-spacing: normal;
              orphans: auto; text-align: start; text-indent: 0px;
              text-transform: none; white-space: normal; widows: auto;
              word-spacing: 0px; -webkit-text-stroke-width: 0px;"
              class="">Am Sonntag, 9. Oktober 2016 schrieb Roman Haefeli
              :<br class="">
              <blockquote type="cite" class="">Hi all, <br class="">
                <br class="">
                I'm currently investigating audio latency compensation
                in Pd. The<br class="">
                goal<br class="">
                is for recorded audio to align well with generated
                sounds timing-<br class="">
                wise.<br class="">
                I'm wondering now what methods people already have
                employed in<br class="">
                order to<br class="">
                achieve that goal.<br class="">
                <br class="">
                So far, I was able to find the formulas to calculate the
                correct<br class="">
                latency when using ALSA and JACK audio back-ends as long
                as the<br class="">
                paramaters 'Delay(msec)' and 'Block size' for ALSA,
                respectively<br class="">
                'Frames/period' and 'Periods/buffer' for JACK are known.
                Currently,<br class="">
                this approach works, but requires me to tell the latency<br
                  class="">
                compensation<br class="">
                calculator what driver I'm using and what the current
                settings are.<br class="">
                Also, it yet only works on Linux, but not with any other
                drivers<br class="">
                like<br class="">
                CoreAudio, ASIO, etc.<br class="">
                <br class="">
                How can I achieve correct latency compensation reliably
                on any<br class="">
                platform? Is there some more generic way?<br class="">
                <br class="">
                I'm also looking at IEM's mediasettings library, hoping
                it would<br class="">
                deliver the required information to calculate latency.
                The<br class="">
                README.txt<br class="">
                says 'get/set Audio and MIDI settings within Pd', but I
                wasn't able<br class="">
                to<br class="">
                find a way to _get_ current settings other than 'advance
                100',<br class="">
                which<br class="">
                probably refers to 'Delay(msec)' set to '100'. But
                still, if it<br class="">
                would<br class="">
                give all Pd audio settings, how would it know about
                current jackd<br class="">
                settings?<br class="">
                <br class="">
                Roman</blockquote>
            </blockquote>
            <span style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; orphans:
              auto; text-align: start; text-indent: 0px; text-transform:
              none; white-space: normal; widows: auto; word-spacing:
              0px; -webkit-text-stroke-width: 0px; float: none; display:
              inline !important;" class="">_______________________________________________</span><br
              style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; orphans:
              auto; text-align: start; text-indent: 0px; text-transform:
              none; white-space: normal; widows: auto; word-spacing:
              0px; -webkit-text-stroke-width: 0px;" class="">
            <a moz-do-not-send="true" href="mailto:Pd-list@lists.iem.at"
              style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; orphans:
              auto; text-align: start; text-indent: 0px; text-transform:
              none; white-space: normal; widows: auto; word-spacing:
              0px; -webkit-text-stroke-width: 0px;" class="">Pd-list@lists.iem.at</a><span
              style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; orphans:
              auto; text-align: start; text-indent: 0px; text-transform:
              none; white-space: normal; widows: auto; word-spacing:
              0px; -webkit-text-stroke-width: 0px; float: none; display:
              inline !important;" class=""><span
                class="Apple-converted-space"> </span>mailing list</span><br
              style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; orphans:
              auto; text-align: start; text-indent: 0px; text-transform:
              none; white-space: normal; widows: auto; word-spacing:
              0px; -webkit-text-stroke-width: 0px;" class="">
            <span style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; orphans:
              auto; text-align: start; text-indent: 0px; text-transform:
              none; white-space: normal; widows: auto; word-spacing:
              0px; -webkit-text-stroke-width: 0px; float: none; display:
              inline !important;" class="">UNSUBSCRIBE and
              account-management -><span
                class="Apple-converted-space"> </span></span><a
              moz-do-not-send="true"
              href="https://lists.puredata.info/listinfo/pd-list"
              style="font-family: Helvetica; font-size: 12px;
              font-style: normal; font-variant-caps: normal;
              font-weight: normal; letter-spacing: normal; orphans:
              auto; text-align: start; text-indent: 0px; text-transform:
              none; white-space: normal; widows: auto; word-spacing:
              0px; -webkit-text-stroke-width: 0px;" class="">https://lists.puredata.info/listinfo/pd-list</a></div>
        </blockquote>
      </div>
      <br class="">
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
<a class="moz-txt-link-abbreviated" href="mailto:Pd-list@lists.iem.at">Pd-list@lists.iem.at</a> mailing list
UNSUBSCRIBE and account-management -> <a class="moz-txt-link-freetext" href="https://lists.puredata.info/listinfo/pd-list">https://lists.puredata.info/listinfo/pd-list</a>
</pre>
    </blockquote>
    <p><br>
    </p>
  </body>
</html>