{"id":167,"date":"2016-04-21T19:27:55","date_gmt":"2016-04-21T19:27:55","guid":{"rendered":"http:\/\/trevor.ucsd.edu\/a\/wp4\/?page_id=167"},"modified":"2016-05-25T15:27:10","modified_gmt":"2016-05-25T15:27:10","slug":"latency","status":"publish","type":"page","link":"https:\/\/trevor.ucsd.edu\/a\/wp4\/patches-and-projects\/latency\/","title":{"rendered":"Measuring Latency with Ableton and Max for Live"},"content":{"rendered":"<h2>Overview<\/h2>\n<p>Sometimes you need to measure latency and you also want to use Ableton Live. This &#8220;<em>TH Latency Measurement<\/em>&#8221; Max for Live patch allow you to measure the latency between 2 channels. Send audio out one channel, receive that audio into\u00a0another, then run it through the M4L patch to view the\u00a0delay in milliseconds and samples.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-195\" src=\"https:\/\/trevor.ucsd.edu\/a\/wp4\/wp-content\/uploads\/2016\/04\/M4L_Latency0.png\" alt=\"M4L_Latency0\" width=\"265\" height=\"197\" \/><\/p>\n<h2>Downloads<\/h2>\n<p>TH Latency Measurement (M4L Patch) &#8211;\u00a0<a href=\"https:\/\/trevor.ucsd.edu\/a\/wp4\/wp-content\/uploads\/2016\/04\/TH-Latency-Measure.amxd_.zip\">TH Latency Measure.amxd<\/a><\/p>\n<p>Ableton Set with MIDI Impulse (Ableton Project) &#8211;\u00a0<a href=\"https:\/\/trevor.ucsd.edu\/a\/wp4\/wp-content\/uploads\/2016\/04\/TH_Latency_Measurement-Project.zip\">TH_Latency_Measurement Project<\/a><\/p>\n<h2>Detail<\/h2>\n<p>Place &#8220;TH Latency Measurement&#8221;\u00a0\u00a0on a Return track to measure the delay between the Left and Right Channels. Setup an Ableton Live session to output\u00a0audio (preferably simple, such as a sine wave) out the left channel while also routing the audio to the return track. Receive audio from a channel, pan it right and send that to the return track.<\/p>\n<h2>Example #1<\/h2>\n<p>(<strong>One Computer<\/strong> &#8211; Live and Jack)<\/p>\n<p>Follows is an example of audio routed out of Ableton through Jack (with a &#8220;Frames\/Period&#8221;, i.e. buffer of 1024 samples). Stereo audio is routed out of Live and back into Live. The audio is also routed to the System so that we can hear it.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-196 size-full\" src=\"https:\/\/trevor.ucsd.edu\/a\/wp4\/wp-content\/uploads\/2016\/04\/M4L_Latency1.png\" alt=\"M4L_Latency1\" width=\"871\" height=\"602\" srcset=\"https:\/\/trevor.ucsd.edu\/a\/wp4\/wp-content\/uploads\/2016\/04\/M4L_Latency1.png 871w, https:\/\/trevor.ucsd.edu\/a\/wp4\/wp-content\/uploads\/2016\/04\/M4L_Latency1-500x346.png 500w, https:\/\/trevor.ucsd.edu\/a\/wp4\/wp-content\/uploads\/2016\/04\/M4L_Latency1-768x531.png 768w\" sizes=\"(max-width: 871px) 100vw, 871px\" \/><\/p>\n<h2>Example #2<\/h2>\n<p>(<strong>Two Computers<\/strong> &#8211; Live #1-&gt; Jack -&gt; Jacktrip -&gt; Jack -&gt; Jacktrip -&gt; Live #1)<\/p>\n<p>In this example audio is output from Live on Computer #1, sent to another Computer #2\u00a0via Jacktrip, then routed directly back via Jacktrip, back into Live and into the Return track for measurement.<\/p>\n<p><strong>Computer #1<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-199 size-full\" src=\"https:\/\/trevor.ucsd.edu\/a\/wp4\/wp-content\/uploads\/2016\/04\/M4L_Latency4.png\" alt=\"M4L_Latency4\" width=\"870\" height=\"606\" srcset=\"https:\/\/trevor.ucsd.edu\/a\/wp4\/wp-content\/uploads\/2016\/04\/M4L_Latency4.png 870w, https:\/\/trevor.ucsd.edu\/a\/wp4\/wp-content\/uploads\/2016\/04\/M4L_Latency4-500x348.png 500w, https:\/\/trevor.ucsd.edu\/a\/wp4\/wp-content\/uploads\/2016\/04\/M4L_Latency4-768x535.png 768w\" sizes=\"(max-width: 870px) 100vw, 870px\" \/><\/p>\n<p><strong>Computer #2<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-198\" src=\"https:\/\/trevor.ucsd.edu\/a\/wp4\/wp-content\/uploads\/2016\/04\/M4L_Latency3-500x203.png\" alt=\"M4L_Latency3\" width=\"500\" height=\"203\" srcset=\"https:\/\/trevor.ucsd.edu\/a\/wp4\/wp-content\/uploads\/2016\/04\/M4L_Latency3-500x203.png 500w, https:\/\/trevor.ucsd.edu\/a\/wp4\/wp-content\/uploads\/2016\/04\/M4L_Latency3.png 602w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/p>\n<h2>Example #3<\/h2>\n<p>(<strong>Two Computers<\/strong> &#8211; Live #1-&gt;Jack -&gt; Jacktrip -&gt; Live #2 -&gt; Jack -&gt; Jacktrip -&gt; Jack -&gt; Live #1)<\/p>\n<p><strong>Computer #1<\/strong> (same as the above example)<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-197\" src=\"https:\/\/trevor.ucsd.edu\/a\/wp4\/wp-content\/uploads\/2016\/04\/M4L_Latency2-500x141.png\" alt=\"M4L_Latency2\" width=\"500\" height=\"141\" srcset=\"https:\/\/trevor.ucsd.edu\/a\/wp4\/wp-content\/uploads\/2016\/04\/M4L_Latency2-500x141.png 500w, https:\/\/trevor.ucsd.edu\/a\/wp4\/wp-content\/uploads\/2016\/04\/M4L_Latency2-768x216.png 768w, https:\/\/trevor.ucsd.edu\/a\/wp4\/wp-content\/uploads\/2016\/04\/M4L_Latency2.png 867w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/p>\n<p><strong>Computer #2<\/strong> (Ableton Live routes audio in and directly out)<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-medium wp-image-200\" src=\"https:\/\/trevor.ucsd.edu\/a\/wp4\/wp-content\/uploads\/2016\/04\/M4L_Latency5-500x377.png\" alt=\"M4L_Latency5\" width=\"500\" height=\"377\" srcset=\"https:\/\/trevor.ucsd.edu\/a\/wp4\/wp-content\/uploads\/2016\/04\/M4L_Latency5-500x377.png 500w, https:\/\/trevor.ucsd.edu\/a\/wp4\/wp-content\/uploads\/2016\/04\/M4L_Latency5-768x579.png 768w, https:\/\/trevor.ucsd.edu\/a\/wp4\/wp-content\/uploads\/2016\/04\/M4L_Latency5.png 800w\" sizes=\"(max-width: 500px) 100vw, 500px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Overview Sometimes you need to measure latency and you also want to use Ableton Live. This &#8220;TH Latency Measurement&#8221; Max for Live patch allow you to measure the latency between 2 channels. Send audio out one channel, receive that audio into\u00a0another, then run it through the M4L patch to view the\u00a0delay in milliseconds and samples. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":33,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"_links":{"self":[{"href":"https:\/\/trevor.ucsd.edu\/a\/wp4\/wp-json\/wp\/v2\/pages\/167"}],"collection":[{"href":"https:\/\/trevor.ucsd.edu\/a\/wp4\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/trevor.ucsd.edu\/a\/wp4\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/trevor.ucsd.edu\/a\/wp4\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/trevor.ucsd.edu\/a\/wp4\/wp-json\/wp\/v2\/comments?post=167"}],"version-history":[{"count":12,"href":"https:\/\/trevor.ucsd.edu\/a\/wp4\/wp-json\/wp\/v2\/pages\/167\/revisions"}],"predecessor-version":[{"id":363,"href":"https:\/\/trevor.ucsd.edu\/a\/wp4\/wp-json\/wp\/v2\/pages\/167\/revisions\/363"}],"up":[{"embeddable":true,"href":"https:\/\/trevor.ucsd.edu\/a\/wp4\/wp-json\/wp\/v2\/pages\/33"}],"wp:attachment":[{"href":"https:\/\/trevor.ucsd.edu\/a\/wp4\/wp-json\/wp\/v2\/media?parent=167"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}