"I feel Max produce a smoother audio than Pd. Didit"
So, did anybody get to this and finished up the discussion (I didn't see it, sorry)?
Anyway, it doesn't make sense to me. For starters, the sound is made by your sound card (and whatever you feed it) and your speakers actually. It's al numbers inside! And they're computed by your CPU... as far as the software goes, it doesn't generate randomly noisely distorted signals. Or does it? :)
Well, actually, in this software, most of what you get is not provided by the software. You get a blank canvas when you start it, in other words: "What you did is what you get".
Sometimes the clicking can be some silly detail like using a 5ms [line~] in switching the the gain... or some other bug, we'd have to see what you're doing.
So, I think this is an important myth to get over... I hope this thread gets to it.
Cheers Alex
2010/3/24 Alexandre Porres porres@gmail.com
"i can't remember exactly where i read this, sorry. but i'd really like to be able to use the vst object to run it in ableton. Jeff"
Hey, why don't you just create a bridge between Live + Pd with Jack?
Alex
On Wed, Mar 24, 2010 at 8:20 PM, Alexandre Porres porres@gmail.com wrote:
"I feel Max produce a smoother audio than Pd. Didit"
So, did anybody get to this and finished up the discussion (I didn't see it, sorry)? Anyway, it doesn't make sense to me.
yeah, this an interesting discussion that pops up on various mailing lists relating to DSP or some variant of electro[nic][acoustic] music. From what I gather (off the top of my head) CSound sounds the best :)
But I didn't keep any statistics. Feel free to prove me wrong :)
./MiS
Alexandre Porres wrote:
"I feel Max produce a smoother audio than Pd. Didit"
Well, if you use [tabread4~] or any of the many other Pd objects that use the same broken interpolation algorithm (copy/paste programming), you get horrible noise. If you use [tabread4] to interpolate graphical parameters for animations, the discontinuities in the derivatives are really obvious.
See attached patch - it would be interesting to see if a Max/MSP port of this patch exhibits the same problem.
nusmuk audio tabread4c~ uses the correct interpolation algorithm, correct me if I'm wrong.
See also this long discussion: http://lists.puredata.info/pipermail/pd-list/2008-06/062878.html
http://claudiusmaximus.goto10.org
#N canvas 0 0 699 665 10; #X obj 163 97 cos~; #X obj 197 123 expr~ cos($v1*3.14159265359*2.0); #X obj 163 147 -~; #N canvas 0 0 450 300 (subpatch) 0; #X array $0-brokenness 4096 float 2; #X coords 0 1 4096 -1 600 128 1; #X restore 44 333 graph; #X obj 77 195 tabwrite~ $0-brokenness; #X obj 77 74 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 46 145 metro 1000; #X obj 46 74 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1 ; #X obj 162 171 *~ 25000; #X text 405 122 <--- pure sine wave; #X text 209 97 <--- cos~ uses [tabread4~ costab] internally , impure ; #X text 298 61 <--- same phase source for comparison; #X obj 196 60 phasor~ 100.01; #X text 259 187 [tabread4~] uses a broken 4-point interpolation algorithm , different to the standard 2-point/2-slope cubic algorithm known to be correct for centuries ; it is nonsensical to have a piece-wise cubic that goes through all 4 points , when that piece is only used between the innermost 2 points ; continuity of slope at the switching points between the pieces of cubics is broken in [tabread4~] , leading to lack of smoothness ; if [tabread4~] was good enough , the array would flatline; #X text 209 150 <--- spot the difference , horrible distortion (-48dB) ; #X text 39 18 [tabread4~] interpolation is wrong; #N canvas 0 0 450 300 (subpatch) 0; #X array $0-spectrum 2048 float 2; #X coords 0 1 2048 0 600 128 1; #X restore 44 486 graph; #N canvas 270 88 565 387 $0-fft 0; #X obj 15 25 block~ 4096 4 1; #X obj 130 60 inlet~; #X obj 131 150 rfft~; #X obj 124 184 *~; #X obj 150 185 *~; #X obj 128 212 +~; #X obj 126 293 tabwrite~ $0-spectrum; #X obj 43 62 inlet; #X obj 130 106 *~; #X obj 156 25 table $0-window 4096; #X obj 146 83 tabreceive~ $0-window; #X obj 317 28 loadbang; #X obj 317 55 f 4096; #X obj 317 81 until; #X obj 317 116 f 0; #X obj 352 106 + 1; #X obj 352 129 mod 4096; #X obj 295 28 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1 -1; #X obj 236 214 tabwrite $0-window; #X obj 236 162 expr 0.5*(1.0-cos($f1*3.14159265359*2.0/4096.0)) ; $f1; #X obj 128 238 expr~ sqrt($v1); #X obj 127 267 /~ 256; #X connect 1 0 8 0; #X connect 2 0 3 0; #X connect 2 0 3 1; #X connect 2 1 4 0; #X connect 2 1 4 1; #X connect 3 0 5 0; #X connect 4 0 5 1; #X connect 5 0 20 0; #X connect 7 0 6 0; #X connect 8 0 2 0; #X connect 10 0 8 1; #X connect 11 0 12 0; #X connect 12 0 13 0; #X connect 13 0 14 0; #X connect 14 0 15 0; #X connect 14 0 19 0; #X connect 15 0 16 0; #X connect 16 0 14 1; #X connect 17 0 12 0; #X connect 19 0 18 0; #X connect 19 1 18 1; #X connect 20 0 21 0; #X connect 21 0 6 0; #X restore 46 229 pd $0-fft; #X obj 149 232 dac~; #X msg 586 52 ; pd dsp 1; #X connect 0 0 2 0; #X connect 1 0 2 1; #X connect 2 0 8 0; #X connect 5 0 4 0; #X connect 5 0 17 0; #X connect 6 0 4 0; #X connect 6 0 17 0; #X connect 7 0 6 0; #X connect 8 0 4 0; #X connect 8 0 17 1; #X connect 8 0 18 0; #X connect 8 0 18 1; #X connect 12 0 1 0; #X connect 12 0 0 0;
Claude Heiland-Allen a écrit :
Alexandre Porres wrote:
"I feel Max produce a smoother audio than Pd. Didit"
Well, if you use [tabread4~] or any of the many other Pd objects that use the same broken interpolation algorithm (copy/paste programming), you get horrible noise. If you use [tabread4] to interpolate graphical parameters for animations, the discontinuities in the derivatives are really obvious.
See attached patch - it would be interesting to see if a Max/MSP port of this patch exhibits the same problem.
well, the cos~ object does not internally use a 4 points interpolation. see code : *out++ = f1 + frac * (f2 - f1); it's a 2 points linear interpolation.
nusmuk audio tabread4c~ uses the correct interpolation algorithm, correct me if I'm wrong.
i don't think there is a correct interpolation algorythm. I heard that software like reaktor use very diferent algorythm, with lot's more points, in order to have a band limited interpolation.
cyrille
See also this long discussion: http://lists.puredata.info/pipermail/pd-list/2008-06/062878.html
Claude
Pd-list@iem.at mailing list UNSUBSCRIBE and account-management -> http://lists.puredata.info/listinfo/pd-list
cyrille henry wrote:
Claude Heiland-Allen a écrit :
Alexandre Porres wrote:
"I feel Max produce a smoother audio than Pd. Didit"
Well, if you use [tabread4~] or any of the many other Pd objects that use the same broken interpolation algorithm (copy/paste programming), you get horrible noise. If you use [tabread4] to interpolate graphical parameters for animations, the discontinuities in the derivatives are really obvious.
See attached patch - it would be interesting to see if a Max/MSP port of this patch exhibits the same problem.
well, the cos~ object does not internally use a 4 points interpolation. see code : *out++ = f1 + frac * (f2 - f1); it's a 2 points linear interpolation.
Oops! Sorry for making assumptions and not checking the source :-/
nusmuk audio tabread4c~ uses the correct interpolation algorithm, correct me if I'm wrong.
i don't think there is a correct interpolation algorythm.
True - it depends on the purpose.
But IMHO if you're doing piecewise cubic interpolation, it's a bit of a nonsense to have a cubic that goes through all 4 points when it's only being used between the inner-most 2 points (a new cubic equation is calculated each time you go past another sample in the table).
I heard that software like reaktor use very diferent algorythm, with lot's more points, in order to have a band limited interpolation.
Interesting. Maybe some kind of FFT-based interpolation could be used?
Claude Heiland-Allen a écrit :
cyrille henry wrote:
Claude Heiland-Allen a écrit :
Alexandre Porres wrote:
"I feel Max produce a smoother audio than Pd. Didit"
Well, if you use [tabread4~] or any of the many other Pd objects that use the same broken interpolation algorithm (copy/paste programming), you get horrible noise. If you use [tabread4] to interpolate graphical parameters for animations, the discontinuities in the derivatives are really obvious.
See attached patch - it would be interesting to see if a Max/MSP port of this patch exhibits the same problem.
well, the cos~ object does not internally use a 4 points interpolation. see code : *out++ = f1 + frac * (f2 - f1); it's a 2 points linear interpolation.
Oops! Sorry for making assumptions and not checking the source :-/
nusmuk audio tabread4c~ uses the correct interpolation algorithm, correct me if I'm wrong.
i don't think there is a correct interpolation algorythm.
True - it depends on the purpose.
But IMHO if you're doing piecewise cubic interpolation, it's a bit of a nonsense to have a cubic that goes through all 4 points when it's only being used between the inner-most 2 points (a new cubic equation is calculated each time you go past another sample in the table).
i think the interpolation used by miller is the one that minimise the error. other interpolating methods could have more error, but sound better.
I heard that software like reaktor use very diferent algorythm, with lot's more points, in order to have a band limited interpolation.
Interesting. Maybe some kind of FFT-based interpolation could be used?
it's more something using sinc to instead of dirac to reconstruct the signal.
http://en.wikipedia.org/wiki/Sinc Cyrille
Claude
Well I must give a +1 to all the members of this list for being so civil, constructive, polite and friendly. The answers one usually get to that kind of subject are much less friendly.
Who wants smooth, curvy, creamy, glossy, mild, silky audio anyway? Happy - rough - Pd to all :)
PS: I guess no one has done any blind tests using only ear right? There's a nice episode reported in Michelangelo's life shown in one of the films about him - not sure exactly how it went but here goes: the master is working at one of his masterpieces (probably the David or something) and some dude comes along, well actually he's on the side of the patrons an so although he's pretty daft, he's also paying for the thing and wants to put his word into it. He says "Hey Michelangelo, you idiot, that nose is too big!" Michelangelo counts up to ten then smiles and answers humbly: "Oh yes Sir, thank you. I guess I should make it smaller" so he takes his hammer and bangs hard on the wall two or three times and lets some powder drop down, without actually touching the nose, then pulls back. "What do you think now Sir?" "Ah" says the guy full of himself "perfect, /now/ it is perfect".