The equivalent of [tabread4~]?

Apr 27, 2010 at 7:32pm

The equivalent of [tabread4~]?

[tabread4~] is a 4-point interp. polynomial buffer player object for PD. Is there an equivalent external for MSP?

#50039
Apr 28, 2010 at 5:47pm

I used ‘search’ on ‘tabread4′ and this was the next thread after yours:

http://cycling74.com/forums/topic.php?id=10122

#179621
May 1, 2010 at 1:17am

Hey cheers, I did check this thread before posting, but it does not explicitly say if play~ uses 4p interpolation. This is why I ask if there is an external, and not even bother to ask about equivalent “vanilla” msp object.

Panos

#179622
May 1, 2010 at 7:28am

beni federer, one of our students here at ESB, has done a version of [index~] with four-point interpolation, and i think he based it on the explanations in miller puckette’s book.

http://www.intraversal.de/en/index.html#coding-iindex

#179623
May 1, 2010 at 9:08am

Thanks volker, I will check it out! Seems promising.

Cheers
Panos

#179624
May 1, 2010 at 11:19pm

[play~] uses 4 point cubic interpolation as far as I know (and from information from c74), although I can’t claim to have seen the source code. What exact type I’m not sure. It certainly does NOT use linear interpolation.

[groove~] also uses cubic interpolation – it’ll sound better than [play~] for longer files (the internal phasor~ is 64 bit). What are you trying to do exactly? It doesn’t sound like you necessarily need an external, although perhaps you have specific requirements to do with the interpolation you need, in which case it’d be helpful to know what they are….

Alex

#179625
May 2, 2010 at 9:40am

Hey Alex, what you say is not stated explicitly in the reference or in the help file ( play~ ), but maybe you are right. I just want something like play~ (in terms of functionality) that provides the best possible “fidelity” when I slow it down et cetera…

Cheers,
Panos

p.s. @volker: Thanks, I tested it, sounds great!

#179626
May 2, 2010 at 11:38am

No – it isn’t stated in the help file, but that doesn’t mean it isn’t the case. If you really want to bother you can perform various tests on [play~] to see how the interpolation works, but I can tell you that you’ll come out with the answer that it uses cubic interpolation of some sort. Same is true of [groove~] which I would advise over [play~] most of the time anyway.

I’ve spent a bit of time messing around with this stuff, and written externals using various kinds of interpolation (linear, several forms of cubic, windowed sinc) and have often tested against vanilla max-msp objects.

I could never get an exact sample for sample match with the cubic interpolation types I was using, but it was very very close (to the point of possibly being just to do with floating point error). Linear interpolation is VERY VERY obvious at low speeds and there is no chance of confusing it with cubic interpolation.

In addition, various forum posts and/or private emails from c74 employees (I forget which exactly) have confirmed the use of cubic interpolation in relation to [groove~] and [play~]. If you want you can search the forum and try ot churn something up.

I had specific and somewhat esoteric needs in terms of re-writing basic buffer playback objects, but for normal usage I wouldn’t bother using an external. I’m guessing the point of having an [index~] with interpolation is to be able to reference by sample, rather than in terms of milliseconds. You could obtain a similar functionality with [play~], but it is a bit of a hassle, there is a small chance that float error will be greater, and you cannot determine the exact form of interpolation (which you may or may not need to do).

Alex

#179627
May 2, 2010 at 1:28pm

Hey Alex, thank for all the input. I am testing right now! On my RME, with really good sennheiser headphones.

When considerably detuning a rich instrument sound (basoon attack), the waveforms are pretty similar. Mind you, I am testing [play~], [iindex~] and [groove~]. BUT, there are “spectral” differences:

With a ratio 1/3 (~0.3) of the speed (again on a RICH sound, not a sinewave, a real instrument) I start to “hear” the “frequency response” of the interpolation filters (not the whole range of course, since there is no content in the ultra high frequencies). This is really audible at the attack point. Well, iindex~ spectrum sounds kinda brighter, while play~ sounds bassier, more “damped” groove pretty much the same.

No artifacts from downsampling in
any case. I guess I should opt for the more “musical” of them.

Again, thanks.

Cheers,
Panos

#179628
May 2, 2010 at 1:49pm

do you mean the MaxMSP standard [index~] or the one from volkers student? The standard one does no interpolation and sounds terrible for anything other than normal, or integer multiple speed playback.

I’d expect [play~] and [groove~] to sound more or less identical anyway, as they almost certainly use the same interpolation – just different methods to drive them….

A.

#179629
May 2, 2010 at 2:02pm

From volker’s student.

P.

#179630

You must be logged in to reply to this topic.