Do you think Pd has a characteristic sound to it? Or whether discussion board threads claiming Pd (and Max) have a distinct (and not good) sound just have people who haven’t listened to good patches?
-Matti
yes it does have a sound, quite similar to Max, but rather distinct from SuperCollider (this one much "smoother" and "cleaner" or less "harsh" than the previous ones).
I'm not sure why. Some say about the way SC works internally, with interpolation or wahtever, but I suspect the objects are coded differently.
cheers
2016-02-14 20:27 GMT-02:00 Matti Viljamaa mviljamaa@kapsi.fi:
Do you think Pd has a characteristic sound to it? Or whether discussion board threads claiming Pd (and Max) have a distinct (and not good) sound just have people who haven’t listened to good patches?
-Matti
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
On 15/02/16 06:34, Alexandre Torres Porres wrote:
yes it does have a sound, quite similar to Max, but rather distinct from SuperCollider (this one much "smoother" and "cleaner" or less "harsh" than the previous ones).
I'm not sure why. Some say about the way SC works internally, with interpolation or wahtever, but I suspect the objects are coded differently.
Yep, and it is probably also to do with "defaults".
If a particular piece of software or instrument makes it easy to make e.g. an aliased square wave, you are probably going to end up with a lot of music with aliased square waves, even if it is possible to create anti-aliased square waves in the software.
If a particular piece of software makes it easy to generate thousands of oscillators, and provides examples for doing so, you are probably going to end up with a lot of music with layered oscillators.
If a particular piece of software has cryptography "on" by default, then more people are going to encrypt when using it.
Software influences and is influenced by culture. Pd (and other software) lends itself to a particular [compositional] culture and the code of Pd is in turn influenced by the culture of the people using it. I think there probably is a "Pd sound" and if there is then the software/culture interface is where it mostly comes from.
Then there are low level things like the treatment of interpolation, whether events occur on block boundaries, etc. that give a characteristic audio quality, as others described in this thread.
One example just struck me: in Pd it is easier to write patches that you can noodle with in a live setting than it is to write patches that strongly represent and reify concepts of structured time. As a result a lot of Pd work might be best described as "raw" and "live".
Cheers,
Chris.
And this is why many of us prefer it … :)
Dan Wilcox @danomatika https://twitter.com/danomatika danomatika.com http://danomatika.com/ robotcowboy.com http://robotcowboy.com/
On Feb 14, 2016, at 8:24 PM, Chris McCormick chris@mccormick.cx wrote:
As a result a lot of Pd work might be best described as "raw" and "live".
On 14/02/16 22:27, Matti Viljamaa wrote:
Do you think Pd has a characteristic sound to it? Or whether discussion board threads claiming Pd (and Max) have a distinct (and not good) sound just have people who haven’t listened to good patches?
Some issues with Pd that affect sound character:
means there is quite a lot of interpolation noise - I wrote about it here: http://mathr.co.uk/blog/2015-04-21_approximating_cosine.html
floating point in the feedback loop (pd-double might be different) which causes weird rounding artifacts - I wrote about it here: http://lists.puredata.info/pipermail/pd-list/2010-08/082104.html
algorithm - it makes a curve that goes through 4 points instead of matching the derivatives at the nearest 2 points, which leads to sharp corners at the original sample points with associated aliasing artifacts
example here: http://lists.puredata.info/pipermail/pd-list/2008-06/062864.html and: http://lists.puredata.info/pipermail/pd-list/2010-03/077278.html
steppy and only takes effect at block boundaries - compare with .kr in SC3 which is (afaik) linearly interpolated between each block boundary
point values when round-tripping through files, so (eg) biquad~ coefficients can become imprecise if you don't write them outside Pd in a text editor
bandlimited oscillators etc, with Pd you tend to have to find externals yourself (deken should make that easier now)
Yes it does and it make awesome drum machines, nice samplers and gorgeous reverbs and delays. A lot of dopes are into modular and feel the need to decry the last thing they were into because they are really just fanboys for DSP now like they were for baseball cards or other things the collected. I like both and pd still is the best computer program ever. Followed by Max then SC3. ❤️
Sent from my iPhone
On Feb 15, 2016, at 9:57 AM, Claude Heiland-Allen claude@mathr.co.uk wrote:
On 14/02/16 22:27, Matti Viljamaa wrote: Do you think Pd has a characteristic sound to it? Or whether discussion board threads claiming Pd (and Max) have a distinct (and not good) sound just have people who haven’t listened to good patches?
Some issues with Pd that affect sound character:
cos~ (and osc~) use a small table with linear interpolation, which means there is quite a lot of interpolation noise - I wrote about it here: http://mathr.co.uk/blog/2015-04-21_approximating_cosine.html
vcf~ (and probably other recursive filters) use single precision floating point in the feedback loop (pd-double might be different) which causes weird rounding artifacts - I wrote about it here: http://lists.puredata.info/pipermail/pd-list/2010-08/082104.html
cubic interpolation (tabread4~ etc) in Pd uses an (imho) incorrect algorithm - it makes a curve that goes through 4 points instead of matching the derivatives at the nearest 2 points, which leads to sharp corners at the original sample points with associated aliasing artifacts - this has been discussed on the lists many times in the past, for example here: http://lists.puredata.info/pipermail/pd-list/2008-06/062864.html and: http://lists.puredata.info/pipermail/pd-list/2010-03/077278.html
sig~ (and implicit sig~ from float messages to signal inlets) is steppy and only takes effect at block boundaries - compare with .kr in SC3 which is (afaik) linearly interpolated between each block boundary
Pd doesn't print enough digits to perfectly reconstruct floating point values when round-tripping through files, so (eg) biquad~ coefficients can become imprecise if you don't write them outside Pd in a text editor
other systems tend to come bundled with more nice-sounding stuff like bandlimited oscillators etc, with Pd you tend to have to find externals yourself (deken should make that easier now)
Claude
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Good list of technical peculiarities Claude. For me, the "sound" is those quirks combined with how Chris describes a "cultural" or "contextual" use. I used to be great at knowing the sound of software or hardware sources and could spot Reaktor, or a Roland analogue in moments. But emulations got better and my ears got older, and maybe I began to care less about implementation and more about artistic intent. As Chris says, different tools tend to make you think and work in certain patterns, and I think it is this more than anything that constitutes a "sound".
cheers Andy
I still believe differences between Pd and SC depend on other technical details than the ones presented, because similar objects like triangle~ and VarSaw will just sound quite differently, hence it may rely on subtleties inside the objects themselves. And I'm not talking about the "cultural" use which is something I believe makes quite a difference even in the Pd x Max world (when they both sound quite similar).
cheers
2016-02-15 13:54 GMT-02:00 Andy Farnell padawan12@obiwannabe.co.uk:
Good list of technical peculiarities Claude. For me, the "sound" is those quirks combined with how Chris describes a "cultural" or "contextual" use. I used to be great at knowing the sound of software or hardware sources and could spot Reaktor, or a Roland analogue in moments. But emulations got better and my ears got older, and maybe I began to care less about implementation and more about artistic intent. As Chris says, different tools tend to make you think and work in certain patterns, and I think it is this more than anything that constitutes a "sound".
cheers Andy
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Well, one could write a book about how to make a triangle wave. I've decided it's impossible.
On 2/15/16 8:24 AM, Alexandre Torres Porres wrote:
I still believe differences between Pd and SC depend on other technical details than the ones presented, because similar objects like triangle~ and VarSaw will just sound quite differently, hence it may rely on subtleties inside the objects themselves. And I'm not talking about the "cultural" use which is something I believe makes quite a difference even in the Pd x Max world (when they both sound quite similar).
cheers
2016-02-15 13:54 GMT-02:00 Andy Farnell <padawan12@obiwannabe.co.uk mailto:padawan12@obiwannabe.co.uk>:
Good list of technical peculiarities Claude. For me, the "sound" is those quirks combined with how Chris describes a "cultural" or "contextual" use. I used to be great at knowing the sound of software or hardware sources and could spot Reaktor, or a Roland analogue in moments. But emulations got better and my ears got older, and maybe I began to care less about implementation and more about artistic intent. As Chris says, different tools tend to make you think and work in certain patterns, and I think it is this more than anything that constitutes a "sound". cheers Andy _______________________________________________ Pd-list@lists.iem.at <mailto:Pd-list@lists.iem.at> mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
lol Le 15 févr. 2016 à 18:37, david medine dmedine@ucsd.edu a écrit :
Well, one could write a book about how to make a triangle wave. I've decided it's impossible.
On 2/15/16 8:24 AM, Alexandre Torres Porres wrote:
I still believe differences between Pd and SC depend on other technical details than the ones presented, because similar objects like triangle~ and VarSaw will just sound quite differently, hence it may rely on subtleties inside the objects themselves. And I'm not talking about the "cultural" use which is something I believe makes quite a difference even in the Pd x Max world (when they both sound quite similar).
cheers
2016-02-15 13:54 GMT-02:00 Andy Farnell padawan12@obiwannabe.co.uk:
Good list of technical peculiarities Claude. For me, the "sound" is those quirks combined with how Chris describes a "cultural" or "contextual" use. I used to be great at knowing the sound of software or hardware sources and could spot Reaktor, or a Roland analogue in moments. But emulations got better and my ears got older, and maybe I began to care less about implementation and more about artistic intent. As Chris says, different tools tend to make you think and work in certain patterns, and I think it is this more than anything that constitutes a "sound".
cheers Andy
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
If there is difference between the sound of [triangle~] and VarSaw, it might actually be in the way phase is generated. The algorithms themselves are pretty much the same, but while VarSaw makes its own single-precision phase by simply subtracting 1 when an increment takes it past 1.0 (using a conditional on each sample), [triangle~] is a waveshaper that is fed phase. Pd's phasor is a little idiosyncratic, using a kind of bit-hacking to unwrap phase (the Höldrich method), which is supposed to perform a bit faster than a conditional, and it's inside not just [phasor~] but all the oscillator objects. If I remember correctly it can be prone to phase drift over time, but don't quote me on that.
On Mon, Feb 15, 2016 at 11:24 AM, Alexandre Torres Porres porres@gmail.com wrote:
I still believe differences between Pd and SC depend on other technical details than the ones presented, because similar objects like triangle~ and VarSaw will just sound quite differently, hence it may rely on subtleties inside the objects themselves. And I'm not talking about the "cultural" use which is something I believe makes quite a difference even in the Pd x Max world (when they both sound quite similar).
cheers
2016-02-15 13:54 GMT-02:00 Andy Farnell padawan12@obiwannabe.co.uk:
Good list of technical peculiarities Claude. For me, the "sound" is those quirks combined with how Chris describes a "cultural" or "contextual" use. I used to be great at knowing the sound of software or hardware sources and could spot Reaktor, or a Roland analogue in moments. But emulations got better and my ears got older, and maybe I began to care less about implementation and more about artistic intent. As Chris says, different tools tend to make you think and work in certain patterns, and I think it is this more than anything that constitutes a "sound".
cheers Andy
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
well, while we're at it, here's the patches for you to check and speculate :)
SuperCollider Code; VarSaw.ar(LFPulse.kr(1, 0, 0.3, 50, 50), 0, LFTri.ar(1, 0, 0.5, 0.5))!2.play
2016-02-16 2:45 GMT-02:00 Matt Barber brbrofsvl@gmail.com:
If there is difference between the sound of [triangle~] and VarSaw, it might actually be in the way phase is generated. The algorithms themselves are pretty much the same, but while VarSaw makes its own single-precision phase by simply subtracting 1 when an increment takes it past 1.0 (using a conditional on each sample), [triangle~] is a waveshaper that is fed phase. Pd's phasor is a little idiosyncratic, using a kind of bit-hacking to unwrap phase (the Höldrich method), which is supposed to perform a bit faster than a conditional, and it's inside not just [phasor~] but all the oscillator objects. If I remember correctly it can be prone to phase drift over time, but don't quote me on that.
On Mon, Feb 15, 2016 at 11:24 AM, Alexandre Torres Porres < porres@gmail.com> wrote:
I still believe differences between Pd and SC depend on other technical details than the ones presented, because similar objects like triangle~ and VarSaw will just sound quite differently, hence it may rely on subtleties inside the objects themselves. And I'm not talking about the "cultural" use which is something I believe makes quite a difference even in the Pd x Max world (when they both sound quite similar).
cheers
2016-02-15 13:54 GMT-02:00 Andy Farnell padawan12@obiwannabe.co.uk:
Good list of technical peculiarities Claude. For me, the "sound" is those quirks combined with how Chris describes a "cultural" or "contextual" use. I used to be great at knowing the sound of software or hardware sources and could spot Reaktor, or a Roland analogue in moments. But emulations got better and my ears got older, and maybe I began to care less about implementation and more about artistic intent. As Chris says, different tools tend to make you think and work in certain patterns, and I think it is this more than anything that constitutes a "sound".
cheers Andy
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
correct code
{VarSaw.ar(LFPulse.kr(1, 0, 0.3, 50, 50), 0, LFTri.ar(1, 0, 0.5, 0.5))!2}.play
2016-02-16 2:54 GMT-02:00 Alexandre Torres Porres porres@gmail.com:
well, while we're at it, here's the patches for you to check and speculate :)
SuperCollider Code; VarSaw.ar(LFPulse.kr(1, 0, 0.3, 50, 50), 0, LFTri.ar(1, 0, 0.5, 0.5))!2.play
2016-02-16 2:45 GMT-02:00 Matt Barber brbrofsvl@gmail.com:
If there is difference between the sound of [triangle~] and VarSaw, it might actually be in the way phase is generated. The algorithms themselves are pretty much the same, but while VarSaw makes its own single-precision phase by simply subtracting 1 when an increment takes it past 1.0 (using a conditional on each sample), [triangle~] is a waveshaper that is fed phase. Pd's phasor is a little idiosyncratic, using a kind of bit-hacking to unwrap phase (the Höldrich method), which is supposed to perform a bit faster than a conditional, and it's inside not just [phasor~] but all the oscillator objects. If I remember correctly it can be prone to phase drift over time, but don't quote me on that.
On Mon, Feb 15, 2016 at 11:24 AM, Alexandre Torres Porres < porres@gmail.com> wrote:
I still believe differences between Pd and SC depend on other technical details than the ones presented, because similar objects like triangle~ and VarSaw will just sound quite differently, hence it may rely on subtleties inside the objects themselves. And I'm not talking about the "cultural" use which is something I believe makes quite a difference even in the Pd x Max world (when they both sound quite similar).
cheers
2016-02-15 13:54 GMT-02:00 Andy Farnell padawan12@obiwannabe.co.uk:
Good list of technical peculiarities Claude. For me, the "sound" is those quirks combined with how Chris describes a "cultural" or "contextual" use. I used to be great at knowing the sound of software or hardware sources and could spot Reaktor, or a Roland analogue in moments. But emulations got better and my ears got older, and maybe I began to care less about implementation and more about artistic intent. As Chris says, different tools tend to make you think and work in certain patterns, and I think it is this more than anything that constitutes a "sound".
cheers Andy
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
hello Alexandre,
this patch is a perfect example of why one should use the declare object.
I don't know where the train~ object came from, and don't know where to look at. if you "declare" the lib it came from, then there are more chances that this patch would load on my computer. If not, at least i would know what lib to download.
the triangle~ is also a problem : i've got one on my computer, that came from nusmuk-audio. you use an other one, with a different sound. Mine did not accept the "lo 0" message.
So, this patch works on your computer and only on computer with the same configuration. but there is no information on the configuration needed. chances are that even you, in few years will not remember where does triangle~ came from.
This is why i think loading lib should be made per patch (like in most of other programming language) using the declare object, better than per computer.
cheers c
Le 16/02/2016 05:54, Alexandre Torres Porres a écrit :
well, while we're at it, here's the patches for you to check and speculate :)
SuperCollider Code; VarSaw.ar(LFPulse.kr(1, 0, 0.3, 50, 50), 0, LFTri.ar(1, 0, 0.5, 0.5))!2.play
2016-02-16 2:45 GMT-02:00 Matt Barber <brbrofsvl@gmail.com mailto:brbrofsvl@gmail.com>:
If there is difference between the sound of [triangle~] and VarSaw, it might actually be in the way phase is generated. The algorithms themselves are pretty much the same, but while VarSaw makes its own single-precision phase by simply subtracting 1 when an increment takes it past 1.0 (using a conditional on each sample), [triangle~] is a waveshaper that is fed phase. Pd's phasor is a little idiosyncratic, using a kind of bit-hacking to unwrap phase (the Höldrich method), which is supposed to perform a bit faster than a conditional, and it's inside not just [phasor~] but all the oscillator objects. If I remember correctly it can be prone to phase drift over time, but don't quote me on that. On Mon, Feb 15, 2016 at 11:24 AM, Alexandre Torres Porres <porres@gmail.com <mailto:porres@gmail.com>> wrote: I still believe differences between Pd and SC depend on other technical details than the ones presented, because similar objects like triangle~ and VarSaw will just sound quite differently, hence it may rely on subtleties inside the objects themselves. And I'm not talking about the "cultural" use which is something I believe makes quite a difference even in the Pd x Max world (when they both sound quite similar). cheers 2016-02-15 13:54 GMT-02:00 Andy Farnell <padawan12@obiwannabe.co.uk <mailto:padawan12@obiwannabe.co.uk>>: Good list of technical peculiarities Claude. For me, the "sound" is those quirks combined with how Chris describes a "cultural" or "contextual" use. I used to be great at knowing the sound of software or hardware sources and could spot Reaktor, or a Roland analogue in moments. But emulations got better and my ears got older, and maybe I began to care less about implementation and more about artistic intent. As Chris says, different tools tend to make you think and work in certain patterns, and I think it is this more than anything that constitutes a "sound". cheers Andy _______________________________________________ Pd-list@lists.iem.at <mailto:Pd-list@lists.iem.at> mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list _______________________________________________ Pd-list@lists.iem.at <mailto:Pd-list@lists.iem.at> mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
2016-02-16 6:47 GMT-02:00 cyrille henry ch@chnry.net:
hello Alexandre,
I don't know where the train~ object came from
howdy, it's from cyclone
the triangle~ is also a problem : i've got one on my computer, that came
from nusmuk-audio. you use an other one, with a different sound. Mine did not accept the "lo 0" message.
yep, from cyclone too
if you "declare" the lib it came from, then there are more chances that
this patch would load on my computer. If not, at least i would know what lib to download.
Well, I know about the need and purpose of a [declare] object, and I'm not against it or people who want to use it. When I wanna make it explicit I also go like [cyclone/triangle~], works fine as well.
I don't really share that much patches and worry about it, but in the patches I make available for my classes, I do specify the Pd version I'm using, so if you have it, they'll all load.
chances are that even you, in few years will not remember where does triangle~ came from.
I can personally guarantee there's no chance of that happening :) specially because of my involvement with cyclone now, but I also usually remember about other externals from other pd extended libraries as I try to memorize and rely on not too many.
cheers
On another note about declare, I think it's not a pain in the ass if you're just using it to make it easier when you're sharing with others.
But it's quite a pain to being forced to use it and then every time you want to use a particular external you must do it, save the patch, close it, then re open so you can finally have that external, no matter if you had the library installed. Specially if that is actually unnecessary. I had never seen that in my Pd years, I think it's really weird.
2016-02-16 12:35 GMT-02:00 Alexandre Torres Porres porres@gmail.com:
2016-02-16 6:47 GMT-02:00 cyrille henry ch@chnry.net:
hello Alexandre,
I don't know where the train~ object came from
howdy, it's from cyclone
the triangle~ is also a problem : i've got one on my computer, that came
from nusmuk-audio. you use an other one, with a different sound. Mine did not accept the "lo 0" message.
yep, from cyclone too
if you "declare" the lib it came from, then there are more chances that
this patch would load on my computer. If not, at least i would know what lib to download.
Well, I know about the need and purpose of a [declare] object, and I'm not against it or people who want to use it. When I wanna make it explicit I also go like [cyclone/triangle~], works fine as well.
I don't really share that much patches and worry about it, but in the patches I make available for my classes, I do specify the Pd version I'm using, so if you have it, they'll all load.
chances are that even you, in few years will not remember where does triangle~ came from.
I can personally guarantee there's no chance of that happening :) specially because of my involvement with cyclone now, but I also usually remember about other externals from other pd extended libraries as I try to memorize and rely on not too many.
cheers
On 2016-02-16 15:39, Alexandre Torres Porres wrote:
But it's quite a pain to being forced to use it and then every time you want to use a particular external you must do it, save the patch, close it, then re open so you can finally have that external, no matter if you had the library installed. Specially if that is actually unnecessary. I had never seen that in my Pd years, I think it's really weird.
as you are certainly aware (i think it has been mentioned a few times), this has been fixed in git (and will be available for the public audience starting with Pd-0.47)
gasmdr IOhannes
Kinda weird onservation, but i seriously think pd would 'sound' different if the standard UI came with a dark background and light objects. As a few people have pointed out, the interface does have a noticable influence on the user.
Also, the default 64 sample blocksize, and the relatively expensive cpu cost of upsampling or decreasing the blocksize do have noticable impact on the fidelity.
The filters are also very rudimentary (although, the new bob~ one looks more promising). Of course it is possible to write your own with the filter primitives, but it's hard work.
Something else: being open source, means that the info and resources are put together by the community with nobody really comitted full time to the job of keeping it all together. The big commercial alternatives all have staff employed just to herd the users together and make sure their resources get shared as well as possible. Pd community is a bit stuck together with paper clips in that regard.
But on the flip side, pd's community of users is probably the single most awesome single group of people i have ever had the fortune of being a part of. Whenever you get stuck with something, there's always someone to lend a hand, and whenever you help someone else, they generally are very grateful. And the limitations of not having a huge library of readymade techno tools, is actually a real blessing. In many ways, pd inspires out of the box thinking. In many ways it's easier to set up weird interactive interfaces and algorithmic compositions than writing boring house music. Personally i would call that a plus.
Sorry, know this has gone pretty far off topic.
Le 16/02/2016 16:33, i go bananas a écrit :
The filters are also very rudimentary (although, the new bob~ one looks more promising). Of course it is possible to write your own with the filter primitives, but it's hard work.
it's however easy to try one of the many filter provide by the community.
cheers c
On 16/02/2016 16:33, i go bananas wrote: ...
But on the flip side, pd's community of users is probably the single most awesome single group of people i have ever had the fortune of being a part of.
+1
And the limitations of not having a huge library of readymade techno tools, is actually a real blessing. In many ways, pd inspires out of the box thinking.
+1
re: I-go-bananas said "The filters are also very rudimentary (although, the new bob~ one looks more promising). Of course it is possible to write your own with the filter primitives, but it's hard work."
bob~ is great, you do know about the 2nd outlet to vcf~ don't you? I find myself time and time again choosing vcf~ to get a certain sound over bob~ and my own ~fexpr cookbook filters.
Re: cubic interpolation. Yes and no. Pd and csound both use the same Lagrange interpolator, which gives discontinuities at segment boundaries, but the segments it generates are actually a bit closer to what you would expect from sinc interpolation. SC3's Hermite interpolator, which matches two points and first derivatives at the boundaries gets rid of the discontinuities but at the price of some waveform distortion. The Hermite interpolator is also not continuous at the 2nd derivative on boundaries and is prone to sudden changes in concavity, while the Lagrange's 2nd derivative discontinuities are removable; there are no sudden changes.
You can see this in the screenshot I attached, which demonstrates five interpolators in action.
At the very top is the SR/4 cosine wave which serves as the source for the interpolators. At the bottom left is what we'd expect from a sinc interpolator (I haven't implemented it yet, but it should be very close to a cosine wave).
In red are 1) Pd's [tabread4] cubic Lagrange interpolator using an array-reading abstraction [array-read4], and 2) The 4-point cubic Hermite interpolator [array-read4h]. You can clearly see the 1st-derivative discontinuities at the peaks in the former, and the 2nd-derivative discontinuities at zero crossings of the latter.
In purple are 1) A 6-point quintic Lagrange interpolator [array-read6], 2) A 6-point quintic interpolator [array-read6h] which matches four points and first derivatives, and 3) A 6-point quintic interpolator [array-read6h2] which matches two points, first derivatives, and second derivatives.
One important thing to notice is how the Lagrange interpolations are much closer in overall shape to the cosine wave at bottom left. The cost of matching derivatives is a compromise in the shape of the waveform between breakpoints.
On Mon, Feb 15, 2016 at 9:57 AM, Claude Heiland-Allen claude@mathr.co.uk wrote:
On 14/02/16 22:27, Matti Viljamaa wrote:
Do you think Pd has a characteristic sound to it? Or whether discussion board threads claiming Pd (and Max) have a distinct (and not good) sound just have people who haven’t listened to good patches?
Some issues with Pd that affect sound character:
- cos~ (and osc~) use a small table with linear interpolation, which
means there is quite a lot of interpolation noise - I wrote about it here: http://mathr.co.uk/blog/2015-04-21_approximating_cosine.html
- vcf~ (and probably other recursive filters) use single precision
floating point in the feedback loop (pd-double might be different) which causes weird rounding artifacts - I wrote about it here: http://lists.puredata.info/pipermail/pd-list/2010-08/082104.html
- cubic interpolation (tabread4~ etc) in Pd uses an (imho) incorrect
algorithm - it makes a curve that goes through 4 points instead of matching the derivatives at the nearest 2 points, which leads to sharp corners at the original sample points with associated aliasing artifacts - this has been discussed on the lists many times in the past, for example here: http://lists.puredata.info/pipermail/pd-list/2008-06/062864.html and: http://lists.puredata.info/pipermail/pd-list/2010-03/077278.html
- sig~ (and implicit sig~ from float messages to signal inlets) is steppy
and only takes effect at block boundaries - compare with .kr in SC3 which is (afaik) linearly interpolated between each block boundary
- Pd doesn't print enough digits to perfectly reconstruct floating point
values when round-tripping through files, so (eg) biquad~ coefficients can become imprecise if you don't write them outside Pd in a text editor
- other systems tend to come bundled with more nice-sounding stuff like
bandlimited oscillators etc, with Pd you tend to have to find externals yourself (deken should make that easier now)
Claude
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
can you share the patches? I'd like to see how the interpolation was implemented
thanks
2016-02-15 13:53 GMT-02:00 Matt Barber brbrofsvl@gmail.com:
Re: cubic interpolation. Yes and no. Pd and csound both use the same Lagrange interpolator, which gives discontinuities at segment boundaries, but the segments it generates are actually a bit closer to what you would expect from sinc interpolation. SC3's Hermite interpolator, which matches two points and first derivatives at the boundaries gets rid of the discontinuities but at the price of some waveform distortion. The Hermite interpolator is also not continuous at the 2nd derivative on boundaries and is prone to sudden changes in concavity, while the Lagrange's 2nd derivative discontinuities are removable; there are no sudden changes.
You can see this in the screenshot I attached, which demonstrates five interpolators in action.
At the very top is the SR/4 cosine wave which serves as the source for the interpolators. At the bottom left is what we'd expect from a sinc interpolator (I haven't implemented it yet, but it should be very close to a cosine wave).
In red are 1) Pd's [tabread4] cubic Lagrange interpolator using an array-reading abstraction [array-read4], and 2) The 4-point cubic Hermite interpolator [array-read4h]. You can clearly see the 1st-derivative discontinuities at the peaks in the former, and the 2nd-derivative discontinuities at zero crossings of the latter.
In purple are 1) A 6-point quintic Lagrange interpolator [array-read6], 2) A 6-point quintic interpolator [array-read6h] which matches four points and first derivatives, and 3) A 6-point quintic interpolator [array-read6h2] which matches two points, first derivatives, and second derivatives.
One important thing to notice is how the Lagrange interpolations are much closer in overall shape to the cosine wave at bottom left. The cost of matching derivatives is a compromise in the shape of the waveform between breakpoints.
On Mon, Feb 15, 2016 at 9:57 AM, Claude Heiland-Allen claude@mathr.co.uk wrote:
On 14/02/16 22:27, Matti Viljamaa wrote:
Do you think Pd has a characteristic sound to it? Or whether discussion board threads claiming Pd (and Max) have a distinct (and not good) sound just have people who haven’t listened to good patches?
Some issues with Pd that affect sound character:
- cos~ (and osc~) use a small table with linear interpolation, which
means there is quite a lot of interpolation noise - I wrote about it here: http://mathr.co.uk/blog/2015-04-21_approximating_cosine.html
- vcf~ (and probably other recursive filters) use single precision
floating point in the feedback loop (pd-double might be different) which causes weird rounding artifacts - I wrote about it here: http://lists.puredata.info/pipermail/pd-list/2010-08/082104.html
- cubic interpolation (tabread4~ etc) in Pd uses an (imho) incorrect
algorithm - it makes a curve that goes through 4 points instead of matching the derivatives at the nearest 2 points, which leads to sharp corners at the original sample points with associated aliasing artifacts - this has been discussed on the lists many times in the past, for example here: http://lists.puredata.info/pipermail/pd-list/2008-06/062864.html and: http://lists.puredata.info/pipermail/pd-list/2010-03/077278.html
- sig~ (and implicit sig~ from float messages to signal inlets) is
steppy and only takes effect at block boundaries - compare with .kr in SC3 which is (afaik) linearly interpolated between each block boundary
- Pd doesn't print enough digits to perfectly reconstruct floating point
values when round-tripping through files, so (eg) biquad~ coefficients can become imprecise if you don't write them outside Pd in a text editor
- other systems tend to come bundled with more nice-sounding stuff like
bandlimited oscillators etc, with Pd you tend to have to find externals yourself (deken should make that easier now)
Claude
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
This is a huge work in progress so what I'm going to do is just attach a zip of the whole damn thing in its current state. The file you want is called array-read-comparison.pd, which is currently incomplete and a total mess, but it does enough to show you how the interpolators work, and you can get to the interpolator abstractions themselves from there. array-abs-intro.pd gives you an idea of the scope of the project, what I've finished, and what I haven't. I had to set the whole thing down for a few months to finish a composition and be a dad to my twin babies; there are contributions from others I haven't incorporated yet. I do have a github page for it but I haven't touched it in some time.
Matt
On Mon, Feb 15, 2016 at 11:01 AM, Alexandre Torres Porres porres@gmail.com wrote:
can you share the patches? I'd like to see how the interpolation was implemented
thanks
2016-02-15 13:53 GMT-02:00 Matt Barber brbrofsvl@gmail.com:
Re: cubic interpolation. Yes and no. Pd and csound both use the same Lagrange interpolator, which gives discontinuities at segment boundaries, but the segments it generates are actually a bit closer to what you would expect from sinc interpolation. SC3's Hermite interpolator, which matches two points and first derivatives at the boundaries gets rid of the discontinuities but at the price of some waveform distortion. The Hermite interpolator is also not continuous at the 2nd derivative on boundaries and is prone to sudden changes in concavity, while the Lagrange's 2nd derivative discontinuities are removable; there are no sudden changes.
You can see this in the screenshot I attached, which demonstrates five interpolators in action.
At the very top is the SR/4 cosine wave which serves as the source for the interpolators. At the bottom left is what we'd expect from a sinc interpolator (I haven't implemented it yet, but it should be very close to a cosine wave).
In red are 1) Pd's [tabread4] cubic Lagrange interpolator using an array-reading abstraction [array-read4], and 2) The 4-point cubic Hermite interpolator [array-read4h]. You can clearly see the 1st-derivative discontinuities at the peaks in the former, and the 2nd-derivative discontinuities at zero crossings of the latter.
In purple are 1) A 6-point quintic Lagrange interpolator [array-read6], 2) A 6-point quintic interpolator [array-read6h] which matches four points and first derivatives, and 3) A 6-point quintic interpolator [array-read6h2] which matches two points, first derivatives, and second derivatives.
One important thing to notice is how the Lagrange interpolations are much closer in overall shape to the cosine wave at bottom left. The cost of matching derivatives is a compromise in the shape of the waveform between breakpoints.
On Mon, Feb 15, 2016 at 9:57 AM, Claude Heiland-Allen <claude@mathr.co.uk
wrote:
On 14/02/16 22:27, Matti Viljamaa wrote:
Do you think Pd has a characteristic sound to it? Or whether discussion board threads claiming Pd (and Max) have a distinct (and not good) sound just have people who haven’t listened to good patches?
Some issues with Pd that affect sound character:
- cos~ (and osc~) use a small table with linear interpolation, which
means there is quite a lot of interpolation noise - I wrote about it here: http://mathr.co.uk/blog/2015-04-21_approximating_cosine.html
- vcf~ (and probably other recursive filters) use single precision
floating point in the feedback loop (pd-double might be different) which causes weird rounding artifacts - I wrote about it here: http://lists.puredata.info/pipermail/pd-list/2010-08/082104.html
- cubic interpolation (tabread4~ etc) in Pd uses an (imho) incorrect
algorithm - it makes a curve that goes through 4 points instead of matching the derivatives at the nearest 2 points, which leads to sharp corners at the original sample points with associated aliasing artifacts - this has been discussed on the lists many times in the past, for example here: http://lists.puredata.info/pipermail/pd-list/2008-06/062864.html and: http://lists.puredata.info/pipermail/pd-list/2010-03/077278.html
- sig~ (and implicit sig~ from float messages to signal inlets) is
steppy and only takes effect at block boundaries - compare with .kr in SC3 which is (afaik) linearly interpolated between each block boundary
- Pd doesn't print enough digits to perfectly reconstruct floating
point values when round-tripping through files, so (eg) biquad~ coefficients can become imprecise if you don't write them outside Pd in a text editor
- other systems tend to come bundled with more nice-sounding stuff like
bandlimited oscillators etc, with Pd you tend to have to find externals yourself (deken should make that easier now)
Claude
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
On 14/02/2016 23:27, Matti Viljamaa wrote:
Do you think Pd has a characteristic sound to it? Or whether discussion board threads claiming Pd (and Max) have a distinct (and not good) sound just have people who haven’t listened to good patches?
What do *you* think? What is a (not good) sound? ... ...
:)
hello,
I think that pd did not really have a distinctive sound. But all objects have a "sound". Many in this thread point out objects that can be improve. But you don't have to use an object if you don't like how it sound : most of the time, there are lot's of alternatives.
So, it's up to you to make anything sound "good".
cheers c
Le 14/02/2016 23:27, Matti Viljamaa a écrit :
Do you think Pd has a characteristic sound to it? Or whether discussion board threads claiming Pd (and Max) have a distinct (and not good) sound just have people who haven’t listened to good patches?
-Matti
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
hmm well if you talk about sound you’ll maybe have at some point to discuss about speakers, vibration, space, body, empathy, (love ?) … and maybe broaden the scope away from digital signals a bit :) no ? (i like this topic :) jm
Le 15 févr. 2016 à 17:38, cyrille henry ch@chnry.net a écrit :
hello,
I think that pd did not really have a distinctive sound. But all objects have a "sound". Many in this thread point out objects that can be improve. But you don't have to use an object if you don't like how it sound : most of the time, there are lot's of alternatives.
So, it's up to you to make anything sound "good".
cheers c
Le 14/02/2016 23:27, Matti Viljamaa a écrit :
Do you think Pd has a characteristic sound to it? Or whether discussion board threads claiming Pd (and Max) have a distinct (and not good) sound just have people who haven’t listened to good patches?
-Matti
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
Pd-list@lists.iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list