On 9 January 2012 12:05, katja <katjavet...@gmail.com> wrote: > On Sun, Jan 8, 2012 at 9:01 PM, Miller Puckette <m...@ucsd.edu> wrote: >> Hi all -- >> >> Peter Brinkmann and Michael Goggins did some related work recently: >> >> http://nettoyeur.noisepages.com/2010/10/doppler-effects-without-equations/ >> >> 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'. > > http://web.media.mit.edu/~bv/papers/compsys%20&%20langs.pdf > > 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 > sources. > > 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: > > http://www.katjaas.nl/chirpZsampling/chirpZsampling.html > > 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. >
Hi Katja, 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 filter coefficients. James _______________________________________________ Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list