Okay, still deep in the weeds here, trying to build out a granular engine.
I came across something peculiar. When I run the following block of code, it runs fine. But if I copy & paste it more than once, it hangs, or throws an error that it got too far behind the beat.
But if I wrap it in “8.times do … end”, it runs fine.
What’s going on here? What’s the culprit? Is it the repeated invocations of with_synth that’s causing the snarlup?
Any insight would be most welcome here. I can kludge around this, but I’d love to understand the true nature of the problem.
with_synth "pluck" do handle = play 60, sustain: 0.06026268005371094, release: 0.0625, amp: 0.8432861328125, sustain: 0.08319664001464844, amp: 1.0 end
sleep 0.06026268005371094
with_synth "pluck" do handle = play 60, sustain: 0.08263206481933594, release: 0.0625, amp: 1.084130859375, sustain: 0.05765533447265625, amp: 1.0 end
sleep 0.08263206481933594
with_synth "pluck" do handle = play 60, sustain: 0.07434463500976562, release: 0.0625, amp: 1.0756103515625, sustain: 0.05439567565917969, amp: 1.0 end
sleep 0.07434463500976562
with_synth "pluck" do handle = play 60, sustain: 0.06367301940917969, release: 0.0625, amp: 0.86427001953125, sustain: 0.053226470947265625, amp: 1.0 end
sleep 0.06367301940917969
with_synth "pluck" do handle = play 60, sustain: 0.07426643371582031, release: 0.0625, amp: 1.10843505859375, sustain: 0.08402824401855469, amp: 1.0 end
sleep 0.07426643371582031
with_synth "pluck" do handle = play 60, sustain: 0.050006866455078125, release: 0.0625, amp: 1.08216552734375, sustain: 0.036624908447265625, amp: 1.0 end
sleep 0.050006866455078125
with_synth "pluck" do handle = play 60, sustain: 0.06869125366210938, release: 0.0625, amp: 1.1485595703125, sustain: 0.07889366149902344, amp: 1.0 end
sleep 0.06869125366210938
with_synth "pluck" do handle = play 60, sustain: 0.08797645568847656, release: 0.0625, amp: 1.03450927734375, sustain: 0.04629707336425781, amp: 1.0 end
sleep 0.08797645568847656
with_synth "pluck" do handle = play 60, sustain: 0.0537261962890625, release: 0.0625, amp: 0.98590087890625, sustain: 0.0475311279296875, amp: 1.0 end
sleep 0.0537261962890625
with_synth "pluck" do handle = play 60, sustain: 0.08492469787597656, release: 0.0625, amp: 0.89697265625, sustain: 0.055492401123046875, amp: 1.0 end
sleep 0.08492469787597656
with_synth "pluck" do handle = play 60, sustain: 0.08938789367675781, release: 0.0625, amp: 1.07298583984375, sustain: 0.05688285827636719, amp: 1.0 end
sleep 0.08938789367675781
with_synth "pluck" do handle = play 60, sustain: 0.08383750915527344, release: 0.0625, amp: 0.8431884765625, sustain: 0.09367179870605469, amp: 1.0 end
sleep 0.08383750915527344
with_synth "pluck" do handle = play 60, sustain: 0.06284523010253906, release: 0.0625, amp: 0.81248779296875, sustain: 0.06134605407714844, amp: 1.0 end
sleep 0.06284523010253906
with_synth "pluck" do handle = play 60, sustain: 0.07091522216796875, release: 0.0625, amp: 0.8350341796875, sustain: 0.08015060424804688, amp: 1.0 end
sleep 0.07091522216796875
with_synth "pluck" do handle = play 60, sustain: 0.08056259155273438, release: 0.0625, amp: 0.89381103515625, sustain: 0.04084587097167969, amp: 1.0 end
sleep 0.08056259155273438
with_synth "pluck" do handle = play 60, sustain: 0.03868675231933594, release: 0.0625, amp: 0.81578369140625, sustain: 0.038738250732421875, amp: 1.0 end
sleep 0.03868675231933594
with_synth "pluck" do handle = play 60, sustain: 0.07019805908203125, release: 0.0625, amp: 0.9301025390625, sustain: 0.051372528076171875, amp: 1.0 end
sleep 0.07019805908203125
with_synth "pluck" do handle = play 60, sustain: 0.08568954467773438, release: 0.0625, amp: 1.08433837890625, sustain: 0.04088401794433594, amp: 1.0 end
sleep 0.08568954467773438
with_synth "pluck" do handle = play 60, sustain: 0.060817718505859375, release: 0.0625, amp: 0.83536376953125, sustain: 0.03476142883300781, amp: 1.0 end
sleep 0.060817718505859375
with_synth "pluck" do handle = play 60, sustain: 0.03661918640136719, release: 0.0625, amp: 1.17220458984375, sustain: 0.06467628479003906, amp: 1.0 end
sleep 0.03661918640136719
with_synth "pluck" do handle = play 60, sustain: 0.0577545166015625, release: 0.0625, amp: 1.05198974609375, sustain: 0.09169578552246094, amp: 1.0 end
sleep 0.0577545166015625
with_synth "pluck" do handle = play 60, sustain: 0.07649993896484375, release: 0.0625, amp: 0.83013916015625, sustain: 0.05410194396972656, amp: 1.0 end
sleep 0.07649993896484375
with_synth "pluck" do handle = play 60, sustain: 0.04179954528808594, release: 0.0625, amp: 0.8355224609375, sustain: 0.07030868530273438, amp: 1.0 end
sleep 0.04179954528808594
with_synth "pluck" do handle = play 60, sustain: 0.045101165771484375, release: 0.0625, amp: 0.90838623046875, sustain: 0.07711982727050781, amp: 1.0 end
sleep 0.045101165771484375
with_synth "pluck" do handle = play 60, sustain: 0.0614776611328125, release: 0.0625, amp: 1.0471435546875, sustain: 0.06303024291992188, amp: 1.0 end
sleep 0.0614776611328125
with_synth "pluck" do handle = play 60, sustain: 0.08508491516113281, release: 0.0625, amp: 1.01766357421875, sustain: 0.07901191711425781, amp: 1.0 end
sleep 0.08508491516113281
with_synth "pluck" do handle = play 60, sustain: 0.09365272521972656, release: 0.0625, amp: 1.02667236328125, sustain: 0.04465675354003906, amp: 1.0 end
sleep 0.09365272521972656
with_synth "pluck" do handle = play 60, sustain: 0.036296844482421875, release: 0.0625, amp: 1.1825927734375, sustain: 0.03869056701660156, amp: 1.0 end
sleep 0.036296844482421875
with_synth "pluck" do handle = play 60, sustain: 0.046123504638671875, release: 0.0625, amp: 1.077978515625, sustain: 0.04871559143066406, amp: 1.0 end
sleep 0.046123504638671875
with_synth "pluck" do handle = play 60, sustain: 0.08482742309570312, release: 0.0625, amp: 0.96077880859375, sustain: 0.07078933715820312, amp: 1.0 end
sleep 0.08482742309570312
with_synth "pluck" do handle = play 60, sustain: 0.09298515319824219, release: 0.0625, amp: 1.0392578125, sustain: 0.03914451599121094, amp: 1.0 end
sleep 0.09298515319824219
with_synth "pluck" do handle = play 60, sustain: 0.07536506652832031, release: 0.0625, amp: 0.83284912109375, sustain: 0.09348487854003906, amp: 1.0 end
sleep 0.07536506652832031
with_synth "pluck" do handle = play 60, sustain: 0.04640007019042969, release: 0.0625, amp: 1.11568603515625, sustain: 0.03496742248535156, amp: 1.0 end
sleep 0.04640007019042969
with_synth "pluck" do handle = play 60, sustain: 0.04658317565917969, release: 0.0625, amp: 1.16405029296875, sustain: 0.06352806091308594, amp: 1.0 end
sleep 0.04658317565917969
with_synth "pluck" do handle = play 60, sustain: 0.03460693359375, release: 0.0625, amp: 0.98980712890625, sustain: 0.06156349182128906, amp: 1.0 end
sleep 0.03460693359375
with_synth "pluck" do handle = play 60, sustain: 0.08666229248046875, release: 0.0625, amp: 1.1000244140625, sustain: 0.06500625610351562, amp: 1.0 end
sleep 0.08666229248046875
with_synth "pluck" do handle = play 60, sustain: 0.06756210327148438, release: 0.0625, amp: 1.064404296875, sustain: 0.03638267517089844, amp: 1.0 end
sleep 0.06756210327148438
with_synth "pluck" do handle = play 60, sustain: 0.07045745849609375, release: 0.0625, amp: 0.81878662109375, sustain: 0.08577537536621094, amp: 1.0 end
sleep 0.07045745849609375
with_synth "pluck" do handle = play 60, sustain: 0.08010292053222656, release: 0.0625, amp: 0.84188232421875, sustain: 0.07211112976074219, amp: 1.0 end
sleep 0.08010292053222656
with_synth "pluck" do handle = play 60, sustain: 0.06608390808105469, release: 0.0625, amp: 0.9298095703125, sustain: 0.051727294921875, amp: 1.0 end
sleep 0.06608390808105469
with_synth "pluck" do handle = play 60, sustain: 0.041534423828125, release: 0.0625, amp: 0.98504638671875, sustain: 0.04373931884765625, amp: 1.0 end
sleep 0.041534423828125
with_synth "pluck" do handle = play 60, sustain: 0.04973411560058594, release: 0.0625, amp: 0.91280517578125, sustain: 0.047576904296875, amp: 1.0 end
sleep 0.04973411560058594
with_synth "pluck" do handle = play 60, sustain: 0.082183837890625, release: 0.0625, amp: 0.83084716796875, sustain: 0.04133796691894531, amp: 1.0 end
sleep 0.082183837890625
with_synth "pluck" do handle = play 60, sustain: 0.03250694274902344, release: 0.0625, amp: 0.87841796875, sustain: 0.037059783935546875, amp: 1.0 end
sleep 0.03250694274902344
with_synth "pluck" do handle = play 60, sustain: 0.07406806945800781, release: 0.0625, amp: 1.0959228515625, sustain: 0.06015777587890625, amp: 1.0 end
sleep 0.07406806945800781
with_synth "pluck" do handle = play 60, sustain: 0.03933525085449219, release: 0.0625, amp: 0.96051025390625, sustain: 0.09314537048339844, amp: 1.0 end
sleep 0.03933525085449219
with_synth "pluck" do handle = play 60, sustain: 0.09092521667480469, release: 0.0625, amp: 1.1903076171875, sustain: 0.09341621398925781, amp: 1.0 end
sleep 0.09092521667480469