Difficult! You can try using zeroxpos~ to find out where the zero-crossings are relative to the pd dsp block start, but you need to know where it is in relation to the start of the array. Perhaps I need to write another external to give a sample accurate "where in the block is the initial bang" reading. Perhaps someone has done it already?
Then you could use bang~ to count the blocks, zeroxpos~ to measure the offset within a block, and another external to find the inital offset from the start of the block when the recording began.
But, although zero-crossings will take away non-zero-crossing based clicks, the instantaneous burst of energy caused by a discontinuity in the energy of the sound will still give you an audible "jump" in the sound. Some windowing is your best option,
probably...
By the way, adjust your computer clock! Apparently the PD list received your email on the 4th of September 2008! Already...unless you have developed a ~~ object...Jules Verne? Truly Quantum!
Best,
Ed
Lone Shark "Aviation" out now on http://www.pyramidtransmissions.com
http://www.myspace.com/sharktracks
----- Original Message ----
From: David Schaffer <schafferdavid@hotmail.com>
To: pd list <pd-list@iem.at>
Sent: Thursday, 4 September, 2008 9:47:11 AM
Subject: [PD] How do I do this (clean looping)?!
Hi,
I'm building a little time
domain abstraction that captures audio from an input and writes it on the
fly to an array, this array is then beeing red continuously as a loop (as a
result, the incoming sound seems to "freeze", see what I mean?). my problem is
avoiding clicks at both ends of the loop; right now, I'm trying to use time
based triggers to create a "windowing" function so that the amplitude of the
loop is zero at both ends, butI was wondering if there was a way to tell pd to
start and stop it's recording process at zero crossing points, or to truncate
its reading points a bit so that the beginnig and the end of the loop are zero.
Can anyone help me in this?!
Thanks a lot!!
D.S