[linux-audio-dev] looped samples .. Was: extending LADSPA, it's not that easy ......

New Message Reply About this list Date view Thread view Subject view Author view Other groups

Subject: [linux-audio-dev] looped samples .. Was: extending LADSPA, it's not that easy ......
From: Benno Senoner (sbenno_AT_gardena.net)
Date: Sat Oct 28 2000 - 13:20:36 EEST


On Sat, 28 Oct 2000, Tom Pincince wrote:
>
> This is not what I am talking about. (Slightly off topic - these fades
> are the same as the cross fades that EVO will need to allow sustain
> based on looping.)
>

With "sustain based on looping" do you mean regular looping or some
kind of special one ?
Why should microfades be needed ?

Speaking of sample looping I've read a part of the Soundfont PDF, and they
require that looped samples replicate a few samples (8 I believe) preceding the
loop start point past the loop end point.

This to provide click-free looping when using interpolation. (which is almost
always the case since we are talking about pitched sample-playback).

The addidional samples beyond the loop-end point are needed because the
interpolator (in most cases) to calculate a sample value, acesses the samples at
pos , pos+1 , pos+2 etc (depends on the order).

So I was wondering how other samplers handle this issue.
How many samplers does allow you to move loop end points and/or
turn on/off looping in realtime ?
Any experts out here ?

The problem arises when we want to turn on and off looping.

On a pure RAM based sampler , when turning on looping we would need to replicate
the samples beyond the loop end, and when turning it off, we would need to
restore back the original data, otherwise the sample would click where the
(deactivated) loop end point lies.

When implementing a varispeed HDR or a disk based sampler , it becomes easier to
handle this issue, since you supply a continuous stream of samples to the audio
thread, thus the interpolator automatically has data "beyond" the loop end
point.
(because if there is a loop, you simply queue up the samples within the loop in
the stream buffer over and over again).

To note that a disksampler (EVO) , needs to perform somewhat more complex:
- check if the loop end point lies within the preloaded RAM area, if yes then
paste N loops within the RAM area until it is completely filled
(and the last section (in some cases) will contain only a part of a loop)
- for the disk part , just act like a HDR app

If the loop end point lies outside the RAM part, then simply act like a HDR app.

Benno.


New Message Reply About this list Date view Thread view Subject view Author view Other groups

This archive was generated by hypermail 2b28 : Sat Oct 28 2000 - 12:10:58 EEST