[PD] [tabwrite4~], is it possible at all?
geekery at jamesfenn.com
Tue Jan 10 18:18:13 CET 2012
On 9 January 2012 12:05, katja <katjavetter at gmail.com> wrote:
> On Sun, Jan 8, 2012 at 9:01 PM, Miller Puckette <msp at ucsd.edu> wrote:
>> Hi all --
>> Peter Brinkmann and Michael Goggins did some related work recently:
>> but back in the dark ages Barry Vercoe made a Music 11 ugen called 'pipadv'
>> that added a signal into a delay line assuming the write location was
>> continuous and could be stably differentiated (so that for each point of the
>> delay line you could associate a fractional pposition in the incoming signal.
>> He then interpolated to get fractional-indexed values of the incoming signal
>> to correspond with successive sample locations in the delay line, turning
>> the problem around backward.)
> Yes, PIPADV seems to be the process I'm looking for, so let me say
> [pipadv~] instead of [tabwrite4~]. Barry Vercoe describes a 'community
> of pipelines', forming a delay network for room acoustics simulation,
> to which PIPADV can add a signal 'whose distance is time-varying'.
> But the article has no technical details, and Peter Brinkmann and
> Michael Goggins solve another problem, related to this topic of
> doppler shifts caused by moving positions of listeners and/or or
> If it is true that PIPADV could write to fractional indexes on a
> PDP-11 (though not quite in realtime yet), then it must be possible to
> make such a thing for Pd. Here's another brainstorm:
> Writing at double speed would be done after upsampling/filtering.
> Writing at half speed would be done after filtering/downsampling.
> Writing at speeds ratio's not some power of two could be done via
> chirp z-transform: resample the spectrum in forward chirp z-transform,
> and go back to time domain with regular IFFT. Illustrated here:
> However this would still require an integer number of output samples
> every time, if the output blocks are to be neatly stitched together.
> The speed ratio would be forced to blocksize/n or n/blocksize, and the
> larger blocksize, the more options.
> If this is not flexible enough for the purpose, it must be done
> different still. I am now thinking how it could be done as
> 'fractional-phase convolution'. A non-linear convolution where the
> filter kernel changes for every input sample. The change in the kernel
> is a phase rotation, such that the filter kernel's identity point
> coincides with the fractional index where the output sample should be
> located. This dynamic filter kernel would regulate the resampling
> amplitude filtering, plus a fractional delay needed to get the signal
> energy at the right position. Seen over time, the filter kernel would
> kind of undulate, like a snake moving forward.
> To recalculate a filter kernel for every input sample is a CPU
> intensive matter, specially for substantial upsampling factors where
> the filter kernel must be long. So this is not a very practical
> concept yet. But there may be ways to make this idea more efficient.
> If it makes sense at all.
Have you looked at: https://ccrma.stanford.edu/~jos/resample/ ? The
algorithm he describes sounds like what you are talking about, if I
understand correctly. He uses a massively oversampled filter kernel
and linearly interpolates into it at different scales to get the
More information about the Pd-list