{"id":953,"date":"2016-05-27T08:38:44","date_gmt":"2016-05-27T08:38:44","guid":{"rendered":"http:\/\/michael-edwards.org\/wp\/?p=953"},"modified":"2021-01-04T17:04:39","modified_gmt":"2021-01-04T17:04:39","slug":"953","status":"publish","type":"post","link":"https:\/\/michael-edwards.org\/wp\/?p=953","title":{"rendered":"timing accuracy in hyperboles 2"},"content":{"rendered":"<p>Those present at the St Giles Cathedral, Edinburgh performance by <a href=\"https:\/\/www.uniarts.fi\/en\/newsroom\/mieko-kanno-appointed-professor-artistic-doctoral-studies-sibelius-academy\" target=\"_blank\" rel=\"noopener\">Mieko Kanno<\/a> of my <em>hyperboles 2 (\u201cuntil the cherries burst in the orchard\u201d)\u00a0<\/em>on 20\/5\/16 were very patient. I told the audience that this violin plus computer piece\u00a0would last 52 minutes but after the performance\u00a0<a href=\"http:\/\/dariosanfilippo.tumblr.com\/\" target=\"_blank\" rel=\"noopener\">Dario Sanfilippo<\/a>, who did the lights, told me it was more like 62 minutes. That&#8217;s about 20% longer. I can&#8217;t say I noticed because all I see on the iPAD performance interface used to control the electronics is the current bar number. Perhaps because this was the first time we&#8217;ve performed the long version I didn&#8217;t quite yet have a feel for the &#8216;natural&#8217; duration&#8212;or maybe I was just spaced out: it is meditative by design, after all.<\/p>\n<p>The performance is driven by a MIDI file played using the [seq] object in <a href=\"https:\/\/cycling74.com\/products\/max\" target=\"_blank\" rel=\"noopener\">MaxMSP<\/a>. Knowing from experience and reputation the unreliability of the timing accuracy of the [metro] and [tempo] objects, I suspected them of being the cause of timing variance, though I never would have expected such extremes. A couple of days after the performance I ran the piece in demo mode and it lasted 58 minutes. The usual trick of putting the Max scheduler into overdrive and even into the audio interrupt thread made no difference.<\/p>\n<p>What did make a difference though is driving the sequencer with a phasor~ so that it runs at signal rate. You see, the problem with a control-rate metronome like [metro] or [tempo] is that any timing error is cumulative&#8212;you never get back what you&#8217;ve lost (or give back what you gained).<\/p>\n<p><a href=\"https:\/\/michael-edwards.org\/wp\/wp-content\/uploads\/phasormetro.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-963 size-full\" src=\"https:\/\/michael-edwards.org\/wp\/wp-content\/uploads\/phasormetro.png\" alt=\"phasor~metro\" width=\"171\" height=\"330\" srcset=\"https:\/\/michael-edwards.org\/wp\/wp-content\/uploads\/phasormetro.png 171w, https:\/\/michael-edwards.org\/wp\/wp-content\/uploads\/phasormetro-155x300.png 155w\" sizes=\"auto, (max-width: 171px) 100vw, 171px\" \/><\/a><\/p>\n<p>If you want control over the [seq] object once it&#8217;s started running you&#8217;ve got to start it with a -1 message then drive it with a\u00a0<em>tick<\/em> message. In order to play back at the MIDI file&#8217;s stored tempo you must send 48 ticks per second (not beat). Now that <em>has<\/em> to happen at control rate, which is why it seems logical to do it with\u00a0[metro] or [tempo]. But driving [seq]\u00a0with a phasor~ at signal rate&#8212;yet\u00a0converting to control rate via the [edge~] object just before sending the <em>tick&#8212;<\/em>means that even if the control rate scheduler starts to lag<em>, <\/em>then at least the signal sent by the phasor~ won&#8217;t, so any error is in the form of jitter rather than being cumulative.<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Those present at the St Giles Cathedral, Edinburgh performance by Mieko Kanno of my hyperboles 2 (\u201cuntil the cherries burst in the orchard\u201d)\u00a0on 20\/5\/16 were very patient. I told the audience that this violin plus computer piece\u00a0would last 52 minutes but after the performance\u00a0Dario Sanfilippo, who did the lights, told me it was more like [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":956,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[101,137],"tags":[39,84,46,142,141,40,140],"class_list":["post-953","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-hyperboles","category-performances","tag-hyperboles","tag-maxmsp","tag-meditation","tag-metronome","tag-metro","tag-musician-tweaked-algorithmic-composition","tag-signal-rate"],"_links":{"self":[{"href":"https:\/\/michael-edwards.org\/wp\/index.php?rest_route=\/wp\/v2\/posts\/953","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/michael-edwards.org\/wp\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/michael-edwards.org\/wp\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/michael-edwards.org\/wp\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/michael-edwards.org\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=953"}],"version-history":[{"count":15,"href":"https:\/\/michael-edwards.org\/wp\/index.php?rest_route=\/wp\/v2\/posts\/953\/revisions"}],"predecessor-version":[{"id":1113,"href":"https:\/\/michael-edwards.org\/wp\/index.php?rest_route=\/wp\/v2\/posts\/953\/revisions\/1113"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/michael-edwards.org\/wp\/index.php?rest_route=\/wp\/v2\/media\/956"}],"wp:attachment":[{"href":"https:\/\/michael-edwards.org\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=953"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/michael-edwards.org\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=953"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/michael-edwards.org\/wp\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=953"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}