[PD] Loop point : a way to make it smooth?

Pierre Massat pimassat at gmail.com
Thu Oct 21 16:33:26 CEST 2010


Hi,

Just in case this could be useful to someone, here's what i've ended up
doing in order to reduce the click at the looping point :
- I decide of the length and the starting point of the loop in a table.
- Then i play the "sample" plus an extra X ms at the end using another
phasor object (at a frequency adjusted for the extra X ms).
- This gets written into another table, about twice as long, and the sound
is directly envelopped before the tabwrite~ object. The enveloppe is made
using an expr~ object and a cos shape for the fade-in / fade-out.
- The actual, definitive loop is play from this last table, using a phasor
that runs at half the speed of the original phasor, and which reads two
phase-inversed "copies" of the same loop in the table, plus the silent rest
of the table. This means that the loop is played once, and when it is X ms
far from the end the second, phase-inversed loop starts playing. While the
phase-inversed loop plays the second half of the table (which has to be
"const 0" 'ed beforehand) plays with no effect on the output. This is really
just cross-fading between two tables, only there only one table and there is
not need to program an actual cross-fader. This works backwards just fine.


My goal was to reduce the clicks in order to get nice drones using a voice
as a source. This technique work fine with fairly long cross-fade times
(above 20 or 30 ms). I'm quite happy with the result.
Then again, you're perfectly right about the difficulty of making a nice
loop. The fact that the click is removed doesn't garantee that the loop will
be percieved as smooth.

Cheers!

Pierre

2010/10/11 Lorenzo <lsutton at libero.it>

> -------- Original Message --------
> Subject: Re: [PD] Loop point : a way to make it smooth?
> From: Andy Farnell <padawan12 at obiwannabe.co.uk>
> To: Pierre Massat <pimassat at gmail.com>
> CC: pd-list at iem.at
> Date: 10/10/2010 09:48 PM
>
>> Ah yes, I see the constraint,
>> well, what kind of source material is it?
>>
>> There's the zigzag (forward and back) method that
>> always seems to work well with textures and pad
>> like sounds. Have you tried that?
>>
>> Andy
>>
>> On Sun, 10 Oct 2010 21:32:21 +0200
>> Pierre Massat<pimassat at gmail.com>  wrote:
>>
>>
>>
>>> I think i know what you mean. The problem here is that it has to be live
>>> somehow. I don't how they do it in live loopers like the ones some
>>> singers
>>> use on stage.
>>> Thanks for your reply anway!
>>>
>>> 2010/10/10 Andy Farnell<padawan12 at obiwannabe.co.uk>
>>>
>>>
>>>
>>>>
>>>> There's a simple way to put this.
>>>>
>>>> There is an art to looping.
>>>>
>>>>
>>> Some hints which can be useful both with the source material and the
> looping algorithm (but as Andy says much depends on the source):
> - zeros: the start and end of the loop should ideally be a zero (or be
> exactly the same number). Some sound editors (like mhwaveedit on linux) will
> find zero-crossings for you. Another way to go might be "cross-fade" at the
> start and end of the loop: that is have a small fade-in at the beginning and
> a short fade out at the end, but results vary a lot.
> - Finding the right "period" for the loop, on some sounds you'll want
> something very short on some pretty long
> - Avoid looping "attacks" part, for example of a piano sample avoid all the
> part at the beginning and loop only when the sound "stabilises"
>
>
> Lorenzo
>
>  It should be possible in a simple sound editor.
>>>>
>>>> You might find the best way (to save time)
>>>> rather than spending dozens of hours to
>>>> improve the technicalities of your looping code,
>>>> is to give it to someone who is great
>>>> at making loops who will do it in 20 seconds.
>>>>
>>>> It's also worth saying that it's very much about
>>>> the source material. Some things are just not
>>>> loopable in the way you think they might/should
>>>> be. It takes a lot of practice to find out
>>>> and hear immediately what needs doing.
>>>>
>>>> Andy
>>>>
>>>>
>>>>
>>>> On Sun, 10 Oct 2010 20:55:00 +0200
>>>> Pierre Massat<pimassat at gmail.com>  wrote:
>>>>
>>>>
>>>>
>>>>> Hi all!
>>>>>
>>>>> I've made a looping patch for a friend who needs to create a musical
>>>>>
>>>>>
>>>> piece
>>>>
>>>>
>>>>> for her school. She's complaining about the fact that she hears when
>>>>> the
>>>>> sample loops back to it's beginning. I tried to envelop it using a
>>>>> table
>>>>>
>>>>>
>>>> to
>>>>
>>>>
>>>>> control the volume which just ramps up from 0 to 1 during X ms (X being
>>>>> adjustable), outputs 1 during most of the sample except for the last X
>>>>> ms
>>>>> where it ramps back down. The ramps are not linear, they have sort of
>>>>> an
>>>>> inverse square shape. This doesn't really do the trick.
>>>>> I've been thinking of writing the sample to 2 tables, one delayed by
>>>>> the
>>>>> length of the sample minus X ms, so that i can play both tables and
>>>>>
>>>>>
>>>> switch
>>>>
>>>>
>>>>> between the two to avoid having to bring the volume to 0 at one point.
>>>>>
>>>>>
>>>> The
>>>>
>>>>
>>>>> sample needs to be X ms longer.
>>>>> Is there another way to go? I've been doing some research on the web,
>>>>> but
>>>>> i've found no satisfying answer.
>>>>> Thanks!
>>>>>
>>>>> Pierre
>>>>>
>>>>>
>>>>
>>>> --
>>>> Andy Farnell<padawan12 at obiwannabe.co.uk>
>>>>
>>>> _______________________________________________
>>>> Pd-list at iem.at mailing list
>>>> UNSUBSCRIBE and account-management ->
>>>> http://lists.puredata.info/listinfo/pd-list
>>>>
>>>>
>>>>
>>>
>>
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20101021/b5065139/attachment-0001.htm>


More information about the Pd-list mailing list