[PD-dev] [ pure-data-Bugs-3380575 ] [makefilename] patch reliably segfaults

2011-07-27 Thread SourceForge.net
Bugs item #3380575, was opened at 2011-07-28 11:17
Message generated for change (Tracker Item Submitted) made by chr15m
You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=478070&aid=3380575&group_id=55736

Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: puredata
Group: v0.43
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: Chris McCormick (chr15m)
Assigned to: Nobody/Anonymous (nobody)
Summary: [makefilename] patch reliably segfaults

Initial Comment:
Attached is a patch that reliably segfaults Pd.

--

You can respond by visiting: 
https://sourceforge.net/tracker/?func=detail&atid=478070&aid=3380575&group_id=55736

___
Pd-dev mailing list
Pd-dev@iem.at
http://lists.puredata.info/listinfo/pd-dev


Re: [PD-dev] preparing phasor~&Co. for double precision Pd

2011-07-27 Thread katja
On Wed, Jul 27, 2011 at 11:11 PM, Hans-Christoph Steiner wrote:

>> I think the big question that needs to be answered before this gets
included is:
>> can this be done without majoring impacting 32-bit operation?

The intention is:
- Pd source code with unaltered functionality
- compilable with pd floattype 'float' or 'double'
- as little conditional compilation as possible
- no performance loss respective to current Pd

Based on test results I think it's possible to rewrite the code in such a
way that single precision Pd will not be affected in any way. I still have
to rewrite tabosc~ which also uses Hoeldrich's method, this will be easy.

>> As for 64-bit floats to output, a quick hack to get things working is
>> to just hammer samples down to 32-bits...

I was looking for a suitable spot in the code to do this. First looked at
dac~, but since there may be many dac~s instantiated this is not most
efficient. Then I found sys_send_dacs(), where the integrated sample values
are checked for max absolute value. It is however not possible to do a
simple typecast here because samples are just stored back into *sys_soundin
and *sys_soundout which are type t_sample. Maybe dac~ should integrate
samplevalues in an intermediate vector of type t_sample. And then, in
sys_send_dacs(),
integrated samples could be checked, cast to float and stored into
*sys_soundout
vector of type float. And something similar for the input. That's what I'll
try.

Katja
___
Pd-dev mailing list
Pd-dev@iem.at
http://lists.puredata.info/listinfo/pd-dev


Re: [PD-dev] preparing phasor~&Co. for double precision Pd

2011-07-27 Thread Miller Puckette
Hi all --

I'm not sure it's done right, but my intention in s_audio_pa.c is to
use 'float' when talking to the portaudio API and t_sample to talk to
the rest of Pd -- so t_sample could be made double without affecting
portaudio.   

The only situation I can imagine in which t_sample might want to differ
from t_float is to do ficed-point audio... but I think nowadays that's
almost never needed.

cheers
Miller

On Wed, Jul 27, 2011 at 05:56:01PM -0400, Hans-Christoph Steiner wrote:
> 
> On Jul 27, 2011, at 5:47 PM, IOhannes m zmölnig wrote:
> 
> >-BEGIN PGP SIGNED MESSAGE-
> >Hash: SHA1
> >
> >On 07/27/2011 11:11 PM, Hans-Christoph Steiner wrote:
> >>
> >>like you've covered that already.  As for 64-bit floats to output, a
> >>quick hack to get things working is to just hammer samples down to
> >>32-bits...
> >>
> >
> >i don't think that's such a great idea.
> >loads of problems (mainly with granular synthesis or other
> >applications
> >where you want to access large tables sample accurately in the
> >signal(!)
> >flow) can simply be fixed by making signals be 64bit too.
> >
> >and then, quite some infrastructure code makes no clear separations
> >between t_float and t_sample, so it might be simpler to make Pd use
> >doubles throughout and not just for one type of numbers.
> 
> 
> I'm saying only as the final output stage to portaudio as a
> temporary hack to get things working.  Its not a good idea
> otherwise.
> 
> .hc
> 
> 
> 
> 
> “We must become the change we want to see. - Mahatma Gandhi
> 
> 
> ___
> Pd-dev mailing list
> Pd-dev@iem.at
> http://lists.puredata.info/listinfo/pd-dev

___
Pd-dev mailing list
Pd-dev@iem.at
http://lists.puredata.info/listinfo/pd-dev


Re: [PD-dev] preparing phasor~&Co. for double precision Pd

2011-07-27 Thread Hans-Christoph Steiner


On Jul 27, 2011, at 5:47 PM, IOhannes m zmölnig wrote:


-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 07/27/2011 11:11 PM, Hans-Christoph Steiner wrote:


like you've covered that already.  As for 64-bit floats to output, a
quick hack to get things working is to just hammer samples down to
32-bits...



i don't think that's such a great idea.
loads of problems (mainly with granular synthesis or other  
applications
where you want to access large tables sample accurately in the  
signal(!)

flow) can simply be fixed by making signals be 64bit too.

and then, quite some infrastructure code makes no clear separations
between t_float and t_sample, so it might be simpler to make Pd use
doubles throughout and not just for one type of numbers.



I'm saying only as the final output stage to portaudio as a temporary  
hack to get things working.  Its not a good idea otherwise.


.hc




“We must become the change we want to see. - Mahatma Gandhi


___
Pd-dev mailing list
Pd-dev@iem.at
http://lists.puredata.info/listinfo/pd-dev


Re: [PD-dev] preparing phasor~&Co. for double precision Pd

2011-07-27 Thread IOhannes m zmölnig
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 07/27/2011 11:11 PM, Hans-Christoph Steiner wrote:
> 
> like you've covered that already.  As for 64-bit floats to output, a
> quick hack to get things working is to just hammer samples down to
> 32-bits...
> 

i don't think that's such a great idea.
loads of problems (mainly with granular synthesis or other applications
where you want to access large tables sample accurately in the signal(!)
flow) can simply be fixed by making signals be 64bit too.

and then, quite some infrastructure code makes no clear separations
between t_float and t_sample, so it might be simpler to make Pd use
doubles throughout and not just for one type of numbers.

gfasdrm
IOhannes
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.11 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk4wh34ACgkQkX2Xpv6ydvQAnwCeNee8gJz1xUgo5IorIB9JPLXg
fD0AnidU8L4v1WB1VZpQADshUZ5BlUko
=RzYs
-END PGP SIGNATURE-

___
Pd-dev mailing list
Pd-dev@iem.at
http://lists.puredata.info/listinfo/pd-dev


Re: [PD-dev] preparing phasor~&Co. for double precision Pd

2011-07-27 Thread Hans-Christoph Steiner


Hey Katya,

I'm very happy you're working on this, I think its a big and very  
valuable step for Pd for many reasons.  For me, things like accessing  
large arrays and also working with UNIX timestamps and other large  
integers directly, make Pd a lot easier in cases that touch on those  
limitations.   It brings Pd 99% to the goal of having a generic  
"number" type that handles all the floats and ints that are used with  
any frequency.


Sounds like you've done a fair amount of testing.  I think the big  
question that needs to be answered before this gets included is: can  
this be done without majoring impacting 32-bit operation?  It sounds  
like you've covered that already.  As for 64-bit floats to output, a  
quick hack to get things working is to just hammer samples down to 32- 
bits...


.hc

On Jul 27, 2011, at 3:39 AM, katja wrote:


Hello,

Triggered by a recent thread (http://lists.puredata.info/pipermail/pd-dev/2011-07/017022.html 
) I've written alternative code for Pd classes like phasor~, osc~,  
and vcf~, in preparation for double precision builds of Pd. These  
classes currently employ Hoeldrich's method, a fascinating type  
punning trick for optimization of phase-wrapping jobs. Considering  
available data types in C, this method can not be translated to  
double precision input/output format.


Phasor~ and osc~ are typically used by the dozens in Pd setups, and  
even a modest performance loss could be a show stopper for setups  
which are on the limit of acceptable CPU load. Fortunately it was  
possible to define double-ready versions without performance loss,  
by tedious elimination of redundancy instead of fancy bit hacking.  
How often must a phase be wrapped? Even at high frequencies like  
half the Nyquist rate, only one in four iterations goes out of  
bounds. On average it proves efficient to do the phase wrapping  
conditionally. Phasor~ profits most, being up to three times faster  
than before, at moderate frequencies. The others did not speed up so  
much, but at least none of them is slower than the original version,  
when both are compared within the same Pd build. Also, the  
alternative versions do not suffer from phase drift, like the  
Hoeldrich versions do. I have tested this on OSX / IntelMac for  
single and double precision builds. Performance may be different on  
other platforms / architectures. Macro PD_BIGORSMALL was redefined  
to work with arbitrary precision.


A Pd running with PD_FLOATTYPE double immediately shouted at me that  
there's a lot more work to do. The audio API (PortAudio in this  
case) couldn't handle 64 bit output samples from dac~. Vectors are  
apparently read as type float, and maximum level digital noise is  
the useless output. I've not delved into this yet. Internally things  
seems to work well, for what I've seen so far.


Ah, almost forgot to mention the pro's of a double precision Pd, if  
it will ever work:


- indexing of large audio buffers with ample resolution for  
interpolation
- accurate sine and sinc of small angles, useful for things like  
fractional delay

- FFT with frames larger than 2^17, I hope
- long sine sweeps without artifacts
- probably many more of such meticulous dsp jobs, you name them

If you're interested in double precision Pd, please find the  
attached pd_doubletest.zip with C code and test-patches. Let me know  
if you have test results on different platforms, or if you find  
stupid bugs in my code. Is anyone working on other aspects of double  
precision Pd? I'd like to join forces.


Katja Vetter
___
Pd-dev mailing list
Pd-dev@iem.at
http://lists.puredata.info/listinfo/pd-dev










"It is convenient to imagine a power beyond us because that means we  
don't have to examine our own lives.", from "The Idols of  
Environmentalism", by Curtis White





___
Pd-dev mailing list
Pd-dev@iem.at
http://lists.puredata.info/listinfo/pd-dev