Hello list!!!
I have this little problem with [tabread4~ ]. When I use it to read from a relative short Array it works just fine. But now I need an array of 2.646e+007 elements(10 min with sample rate 44100). When I try it with such a long array I hear distortion from 1min 30 and it becomes worse as the time goes.
At about 5 min it is very clear that there's something wrong...
So I made a patch with the simplest way to use [tabread4~ ] to make sure that the problem is not something that I did in my more complicated patches with transposition and so on.
Use it to load a file 5-10 min long and see what happens.
Did i do something wrong even in this simple one?
I would very much appreciate any help!
---------- Forwarded message ---------- From: Ypatios Grigoriadis ypatios@gmail.com Date: Aug 5, 2006 12:23 PM Subject: tabread4~ problem or is it just me? To: pd-list@iem.at
Hello list!!!
I have this little problem with [tabread4~ ]. When I use it to read from a relative short Array it works just fine. But now I need an array of 2.646e+007 elements(10 min with sample rate 44100). When I try it with such a long array I hear distortion from 1min 30 and it becomes worse as the time goes.
At about 5 min it is very clear that there's something wrong...
So I made a patch with the simplest way to use [tabread4~ ] to make sure that the problem is not something that I did in my more complicated patches with transposition and so on.
Use it to load a file 5-10 min long and see what happens.
Did i do something wrong even in this simple one?
I would very much appreciate any help!
---------- Forwarded message ---------- From: Ypatios Grigoriadis ypatios@gmail.com Date: Aug 5, 2006 4:58 PM Subject: Fwd: tabread4~ problem or is it just me? To: pd-list@iem.at
---------- Forwarded message ---------- From: Ypatios Grigoriadis ypatios@gmail.com Date: Aug 5, 2006 12:23 PM Subject: tabread4~ problem or is it just me? To: pd-list@iem.at
Hello list!!!
I have this little problem with [tabread4~ ]. When I use it to read from a relative short Array it works just fine. But now I need an array of 2.646e+007 elements(10 min with sample rate 44100). When I try it with such a long array I hear distortion from 1min 30 and it becomes worse as the time goes.
At about 5 min it is very clear that there's something wrong...
So I made a patch with the simplest way to use [tabread4~ ] to make sure that the problem is not something that I did in my more complicated patches with transposition and so on.
Use it to load a file 5-10 min long and see what happens.
Did i do something wrong even in this simple one?
I would very much appreciate any help!
Okay, very briefly, I found some things.
This post here discusses the limits to tables based on the 24 bit(?) value used to store http://elists.resynthesize.com/pd-list/2006/05/1602049/
it is automatically truncated to 4000000 samples, which is about 1 min 30 secs at standard SR. There is a maxlimit value for resize, but imho this 4000000 default is not a coincidence, there must be a reason for someobody setting it there and I bet you a pint it's something to do with your problem.
an interesting result. When I play it back, regardless of how much data is written to the table the playback continues beyond the point of the recording, as if it is looping. But it isn't. In fact I modified the test tone to a slow sweep to try and detect a jump, but there isn't one. I think this is quite weird. Taking a snapshot of the index shows that it keeps increasing linearly.
the problems you experience?
Included is the sweep test for you to play with.
My advice is to use disk storage, if your problem allows that.
On Sat, 5 Aug 2006 17:00:08 +0300 "Ypatios Grigoriadis" ypatios@gmail.com wrote:
---------- Forwarded message ---------- From: Ypatios Grigoriadis ypatios@gmail.com Date: Aug 5, 2006 4:58 PM Subject: Fwd: tabread4~ problem or is it just me? To: pd-list@iem.at
---------- Forwarded message ---------- From: Ypatios Grigoriadis ypatios@gmail.com Date: Aug 5, 2006 12:23 PM Subject: tabread4~ problem or is it just me? To: pd-list@iem.at
Hello list!!!
I have this little problem with [tabread4~ ]. When I use it to read from a relative short Array it works just fine. But now I need an array of 2.646e+007 elements(10 min with sample rate 44100). When I try it with such a long array I hear distortion from 1min 30 and it becomes worse as the time goes.
At about 5 min it is very clear that there's something wrong...
So I made a patch with the simplest way to use [tabread4~ ] to make sure that the problem is not something that I did in my more complicated patches with transposition and so on.
Use it to load a file 5-10 min long and see what happens.
Did i do something wrong even in this simple one?
I would very much appreciate any help!
-- Ypatios.
And now......
The patch!!!!
(Sorry, I forgot..)
-- Ypatios.
And now...
The patch!!!!
(Sorry, I forgot again..)
-- Ypatios.
On Sat, 5 Aug 2006, Ypatios Grigoriadis wrote:
I have this little problem with [tabread4~ ]. When I use it to read from a relative short Array it works just fine. But now I need an array of 2.646e+007 elements(10 min with sample rate 44100). When I try it with such a long array I hear distortion from 1min 30 and it becomes worse as the time goes.
Distorsion would "start" at 1min35, the next distorsion level at 3min10 (double), and so on. But really it starts before, just softly, e.g. 0min47 is another threshold. The reason is that you are hitting the maximum precision of float numbers, which is 24 binary significant digits. Said thresholds are always at position 2*2*2*...*2 in the array. Starting with each threshold you have twice less timewise precision. This makes [tabread4~] go nuts after a while.
The easiest fix around this is to create a [tabread4~] external which uses another float for large-scale index, so that the small-scale index can stay precise. In the long term it would be better if Pd had an option for higher-precision floats (double-floats have much more precision than you need).
_ _ __ ___ _____ ________ _____________ _____________________ ... | Mathieu Bouchard - tél:+1.514.383.3801 - http://artengine.ca/matju | Freelance Digital Arts Engineer, Montréal QC Canada
On 8/5/06, Mathieu Bouchard matju@artengine.ca wrote:
On Sat, 5 Aug 2006, Ypatios Grigoriadis wrote:
I have this little problem with [tabread4~ ]. When I use it to read from a relative short Array it works just fine. But now I need an array of 2.646e+007 elements(10 min with sample rate 44100). When I try it with such a long array I hear distortion from 1min 30 and it becomes worse as the time goes.
Distorsion would "start" at 1min35, the next distorsion level at 3min10 (double), and so on. But really it starts before, just softly, e.g. 0min47 is another threshold. The reason is that you are hitting the maximum precision of float numbers, which is 24 binary significant digits. Said thresholds are always at position 2*2*2*...*2 in the array. Starting with each threshold you have twice less timewise precision. This makes [tabread4~] go nuts after a while.
The easiest fix around this is to create a [tabread4~] external which uses another float for large-scale index, so that the small-scale index can stay precise. In the long term it would be better if Pd had an option for higher-precision floats (double-floats have much more precision than you need).
_ _ __ ___ _____ ________ _____________ _____________________ ... | Mathieu Bouchard - tél:+1.514.383.3801 - http://artengine.ca/matju | Freelance Digital Arts Engineer, Montréal QC Canada
Thank you guys, I now have the picture of the problem.
However, I am not a programmer which means that it is impossible for me to create an external... So if any one has free time next weekend...
Or if anyone can figure out another solution, i would be grateful.
Thank you anyway!!!
On Wed, 9 Aug 2006, Ypatios Grigoriadis wrote:
Or if anyone can figure out another solution, i would be grateful.
Arrays are not meant to load long soundfiles, which doesn't mean that the problem is less serious, but its some sort of excuse... (BTW PDa only plays back samples up to 8 seconds with tabread4~)
Use tabplay~ or a soundfile player object, like readsf~ (which has its usability issues, but thats another topic) or sfplay~ or readanysf~. If you need varispeed, i have an external for linux lying around that does that (I am using it for PDa mainly).
Other solutions might include splitting your long soundfile into shorter ones.
Günter
Thank you anyway!!!
-- Ypatios.