Re: [PD] can [bp~] be obtained with biquad coefficients?

2014-04-08 Thread Bill Gribble
The quick and dirty way is just to feed the filter white noise and plot the 
output signal's spectrum.   Guaranteed to show the actual performance of 
the filter, and not somebody's idea of how it ought to be working.


If you need a theoretical curve, I'd start with a look at the [bp~] source 
to see if you can extract some hints about how the filter is implemented.  
It may be quite easy to figure out the poles and zeros if the code is clear 
and/or documented.


Good luck!
Bill Gribble
___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] GUI toolkits and custom GUIs WAS: Integra Live 1.5 released

2013-01-27 Thread Bill Gribble
[This is getting pretty OT for pd-list, let's take further discussion to
private email or linux-audio-dev] 

Thanks for the Nova link, that thesis looks very interesting.  I hadn't
heard of Nova before.  Is it still active?  Looks like at least parts of
it merged into SuperCollider but I can't see that the main project is
still going. 

I am definitely still designing as I iterate... get a bit of
functionality working, try to use it to do something different than it
could do before, see what irritates me, repeat.  Both you and HC have
made good points that make me think I still have some work to do on
scoping and on layers/subpatches/abstractions. 

Your comments about dotted namespaces stump me a bit.  I see what you
mean about DNS address resolution, but very many programming languages
share a common notation and meaning for dotted access to
objects/subobjects.  I'm trying to make things look as much like visual
python as I can, so I would tend to use a similar syntax, but then
again accessing scopes is not exactly like accessing object attributes.
I will have to chew on it a while. 

Thanks,
Bill Gribble 

On Sat, 2013-01-26 at 15:55 -0800, Jonathan Wilkes wrote:
 - Original Message -
 
  From: Bill Gribble g...@billgribble.com
  To: Jonathan Wilkes jancs...@yahoo.com
  Cc: Lorenzo Sutton lorenzofsut...@gmail.com; pd-list@iem.at 
  pd-list@iem.at
  Sent: Saturday, January 26, 2013 11:01 AM
  Subject: Re: [PD] GUI toolkits and custom GUIs WAS: Integra Live 1.5 
  released
  
  On Fri, 2013-01-25 at 19:30 -0800, Jonathan Wilkes wrote:
   So inside [blah] let's say I have this:
  
   [r foo]
   |
   [print I_don_t_want_bob_to_trigger_this]
  
   I share my [blah] abstraction with Bob, who creates a [blah] instance in 
  the same
   patch where he has
  
   [Click here to start my thing(
   |
   [s foo]
  
   I suppose I don't know what lexical hygiene means.  But I 
  think you have to have
   a way to explicitly state that binding symbol foo applies to 
  this canvas and all
   of its children, but not to any parents.  Do you have a way to do 
  that without using
   the $0 kludge?
  
  PD's behavior and the $0 kludge falls out of the design where there is a
  single namespace for s/r targets.  It's a programming language where
  there are only global variables.  This makes some things easy
  (communicating with other patches) and some things hard (keeping things
  private, duplicating code blocks without copies stomping on each
  other). 
 
 The best solution I've seen is Tim Blechmann's use of [declare] in
 Nova (though one could use a different class rather than overloading
 a current one):
 
 http://tim.klingt.org/publications/tim_blechmann_nova.pdf
 
 I can't remember what his default behavior was when the binding-symbol
 isn't [declare]'d, but if it defaulted to global in that case then the
 system would be backwards compatible with Pd.  It's also trivial to learn,
 as the declaration is basically a stamp on a canvas that says this name
 doesn't communicate with my parents, but it can communicate with all my
 children-- unless of course they declare the name for themselves.  He
 also has a mechanism to explicitly declare something global.
 
 The benefit is that when a name is declared on a canvas, the meaning is
 trivial to understand: IF stamped THEN local to me and my unstamped children.
 The drawback is that on a canvas that doesn't have a declaration on it, the
 user doesn't immediately know how far up the tree the scope goes simply
 by looking at the patch (though a mechanism could easily be added to reveal
 that).
 
 Your system has the benefit of sane defaults-- if I understand correctly, 
 names
 in your system will default to the behavior one currently gets in Pd by 
 prepending
 a $0 to the name.  That probably covers most of the common patching cases.
 The drawback is that for uncommon cases your namespace notation is
 non-trivial to learn, even though it makes the scope of uncommon cases 
 explicit.
 
 (To get a sense of how difficult it is for a user to _truly_ grasp scope 
 levels using the
 . separator, look at the history of scams based on shuffling the levels of
 domain names, changing the tld, and even putting the company name as
 a subdirectory of some nondescript domain name like acctmngr.com/microsoft.)
 
 Anyway, I suppose that's enough commentary until I can actually play around
 with your system and see how it works.  (The png showing the IDE-style
 interface looks nice, though.)
 
  
  My design started from the presumption that all variables (names) are
  local to a scope.  Each patch has its own global scope (which is the
  default for new names), and can have named scopes within it.  This
  sort-of follows a model of lexical scoping that you see in languages
  like Lisp and Scheme where you can explicitly wrap a block of code in an
  environment where variables just local to that scope are declared.  In
  MFP, a layer (subpatch) or group of layers can share

Re: [PD] GUI toolkits and custom GUIs WAS: Integra Live 1.5 released

2013-01-26 Thread Bill Gribble
On Fri, 2013-01-25 at 19:30 -0800, Jonathan Wilkes wrote:
 So inside [blah] let's say I have this:
 
 [r foo]
 |
 [print I_don_t_want_bob_to_trigger_this]
 
 I share my [blah] abstraction with Bob, who creates a [blah] instance in the 
 same
 patch where he has
 
 [Click here to start my thing(
 |
 [s foo]
 
 I suppose I don't know what lexical hygiene means.  But I think you have to 
 have
 a way to explicitly state that binding symbol foo applies to this canvas 
 and all
 of its children, but not to any parents.  Do you have a way to do that 
 without using
 the $0 kludge?

PD's behavior and the $0 kludge falls out of the design where there is a
single namespace for s/r targets.  It's a programming language where
there are only global variables.  This makes some things easy
(communicating with other patches) and some things hard (keeping things
private, duplicating code blocks without copies stomping on each
other). 

My design started from the presumption that all variables (names) are
local to a scope.  Each patch has its own global scope (which is the
default for new names), and can have named scopes within it.  This
sort-of follows a model of lexical scoping that you see in languages
like Lisp and Scheme where you can explicitly wrap a block of code in an
environment where variables just local to that scope are declared.  In
MFP, a layer (subpatch) or group of layers can share a scope just among
themselves, or can use the patch's global scope. 

Again, this makes some things easy (cut and paste of subpatches without
stepping on each other, management of names without $0-prefixes, knowing
that your abstraction won't interfere with someone else's) and some
things hard (broadcasting to every instance of a patch/abstraction,
listening in on message traffic internal to somebody else's
abstraction).

Back to your example: it wouldn't work as-is in MFP.  The [s] would have
to qualify the foo name, since it doesn't exist in the scope of the
[s].  Let's say I make a [blah] in the patch with the [s] and I name it
blah_1.  The [s foo] would need to be [s blah_1.foo] for it to get
where you intend it to go.  If you made 2 [blah] instances, blah_1 and
blah_2, you would have to send to the one that you wanted the message
to go to. 

 There are also use cases for binding symbol foo applies to all instances of
 this abstraction, and possibly all instances of abstractions from this
 libdir (though the latter may be overkill).

Yes, these are real use cases.  I'm still trying to work out which ones
are highest-value; you can't do either of these things in MFP right
now. 

Thanks,
Bill Gribble 

 
 
 -Jonathan
 
  
  At the same time, references to names that can't be resolved in the local 
  scope do bubble up, so you can have more global names if you need them.
  
  Thanks,
  Bill Gribble
  
  On Jan 25, 2013, at 21:27, Jonathan Wilkes jancs...@yahoo.com wrote:
  
  
  
  
  
   - Original Message -
   From: Bill Gribble g...@billgribble.com
   To: Jonathan Wilkes jancs...@yahoo.com
   Cc: Lorenzo Sutton lorenzofsut...@gmail.com; 
  pd-list@iem.at pd-list@iem.at
   Sent: Friday, January 25, 2013 7:55 PM
   Subject: Re: [PD] GUI toolkits and custom GUIs WAS: Integra Live 1.5 
  released
  
   On Fri, 2013-01-25 at 15:21 -0800, Jonathan Wilkes wrote:
   From: Bill Gribble g...@billgribble.com
   I am working on a pd-clone intended to explore a lot of the 
  topics in
   this 
   thread.  It's not fully baked yet -- the biggest working 
  patch is
   a biquad 
   filter designer with pole-zero and freq response plotting -- 
  but
   I'm 
   particularly excited about the approach to namespacing and 
  scope
   management, 
   which works a lot like hc describes.  Patches have a set of 
  scopes
   which can be 
   mapped onto subpatches (represented as layers, not separate 
  windows). 
   Name 
   resolution in send/receive elements works like you would want 
  it to.
  
   How does scope work for abstractions?
  
   Well, every object in a patch has a name.  To find that object, the 
  tree
   of patches and scopes is crawled upward from the site of the lookup. 
  For
   example, the (equivalent of) [s foo] first looks in the 
  scope of the
   [s], then the patch-global scope of the containing patch, then in the
   application global scope for the name foo. 
  
   Dotted notation can drill down, so [s foo.bar] would try to 
  find an
   object named foo, then find bar in its 
  patch-global 
   scope (or an
   object named bar within a scope named foo in 
  the current 
   patch). 
  
   Does that make sense?
  
   I don't think I understand it.
  
   Let's say I have abstraction [blah].  I want [s foo] and [r foo] inside 
  [blah] and
   all of [blah]'s children to talk to each other.  Then I want to share 
  my abstraction
   with Bob who needn't worry about the send/receive names I used inside 
  [blah]
   because they are guaranteed not to conflict with anything he does outside 
  the
   scope

Re: [PD] GUI toolkits and custom GUIs WAS: Integra Live 1.5 released

2013-01-25 Thread Bill Gribble
On Fri, 2013-01-25 at 15:21 -0800, Jonathan Wilkes wrote:
  From: Bill Gribble g...@billgribble.com
  I am working on a pd-clone intended to explore a lot of the topics in this 
  thread.  It's not fully baked yet -- the biggest working patch is a biquad 
  filter designer with pole-zero and freq response plotting -- but I'm 
  particularly excited about the approach to namespacing and scope 
  management, 
  which works a lot like hc describes.  Patches have a set of scopes which 
  can be 
  mapped onto subpatches (represented as layers, not separate windows).  Name 
  resolution in send/receive elements works like you would want it to. 
 
 How does scope work for abstractions?

Well, every object in a patch has a name.  To find that object, the tree
of patches and scopes is crawled upward from the site of the lookup. For
example, the (equivalent of) [s foo] first looks in the scope of the
[s], then the patch-global scope of the containing patch, then in the
application global scope for the name foo. 

Dotted notation can drill down, so [s foo.bar] would try to find an
object named foo, then find bar in its patch-global scope (or an
object named bar within a scope named foo in the current patch). 

Does that make sense? 

Thanks,
Bill Gribble   


___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] GUI toolkits and custom GUIs WAS: Integra Live 1.5 released

2013-01-25 Thread Bill Gribble
The case you describe is the easy one, once you introduce any kind of lexical 
hygiene.  Names in use in a patch bind closely to the patch or scope in which 
they are used, so there's no danger of escapes from a patch just because its 
being used within another patch. 

At the same time, references to names that can't be resolved in the local scope 
do bubble up, so you can have more global names if you need them.

Thanks,
Bill Gribble

On Jan 25, 2013, at 21:27, Jonathan Wilkes jancs...@yahoo.com wrote:

 
 
 
 
 - Original Message -
 From: Bill Gribble g...@billgribble.com
 To: Jonathan Wilkes jancs...@yahoo.com
 Cc: Lorenzo Sutton lorenzofsut...@gmail.com; pd-list@iem.at 
 pd-list@iem.at
 Sent: Friday, January 25, 2013 7:55 PM
 Subject: Re: [PD] GUI toolkits and custom GUIs WAS: Integra Live 1.5 released
 
 On Fri, 2013-01-25 at 15:21 -0800, Jonathan Wilkes wrote:
 From: Bill Gribble g...@billgribble.com
 I am working on a pd-clone intended to explore a lot of the topics in
 this 
 thread.  It's not fully baked yet -- the biggest working patch is
 a biquad 
 filter designer with pole-zero and freq response plotting -- but
 I'm 
 particularly excited about the approach to namespacing and scope
 management, 
 which works a lot like hc describes.  Patches have a set of scopes
 which can be 
 mapped onto subpatches (represented as layers, not separate windows). 
 Name 
 resolution in send/receive elements works like you would want it to.
 
 How does scope work for abstractions?
 
 Well, every object in a patch has a name.  To find that object, the tree
 of patches and scopes is crawled upward from the site of the lookup. For
 example, the (equivalent of) [s foo] first looks in the scope of the
 [s], then the patch-global scope of the containing patch, then in the
 application global scope for the name foo. 
 
 Dotted notation can drill down, so [s foo.bar] would try to find an
 object named foo, then find bar in its patch-global 
 scope (or an
 object named bar within a scope named foo in the current 
 patch). 
 
 Does that make sense?
 
 I don't think I understand it.
 
 Let's say I have abstraction [blah].  I want [s foo] and [r foo] inside 
 [blah] and
 all of [blah]'s children to talk to each other.  Then I want to share my 
 abstraction
 with Bob who needn't worry about the send/receive names I used inside [blah]
 because they are guaranteed not to conflict with anything he does outside the
 scope of the [blah] abstraction (e.g., creating a [s foo] on the same canvas 
 where
 a [blah] object sits).
 
 Can I specify the scope of the s/r symbol in this way?
 
 Jonathan
 
 
 Thanks,
 Bill Gribble  
 

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] GUI toolkits and custom GUIs WAS: Integra Live 1.5 released

2013-01-21 Thread Bill Gribble
I am working on a pd-clone intended to explore a lot of the topics in this 
thread.  It's not fully baked yet but I'm particularly excited about the 
approach to namespacing and scope management, which works a lot like 

Thanks,
Bill Gribble

On Jan 21, 2013, at 6:13, Lorenzo Sutton lorenzofsut...@gmail.com wrote:

 On 19/01/13 20:20, Hans-Christoph Steiner wrote:
 On 01/19/2013 01:56 PM, IOhannes m zmölnig wrote:
 On 01/18/2013 22:31, Hans-Christoph Steiner wrote:
 I would love it if someone started this since it would greatly help with 
 the
 goal of splitting the GUI from Pd itself.  And of course I'd help where I 
 can.
 i keep starting that project every now and then: moving all the drawing code
 to pd-gui and only use FUDI (that is: not tcl code) to communicate between
 pd-gui.
 
 unfortunately i always get distracted after a short time and i never get to 
 a
 really working prototype.
 
 gmsdr
 IOhannes
 It can be done incrementally, which is likely the only way its going to get
 done.  It turns out that FUDI and tcl proc calls are very similar: space
 separated list of elements where the first one is the functionality.
 
 If the basics were done first, like object drawing, then someone could build 
 a
 rough GUI with another toolkit to test out.
 When you say 'FUDI' what exctly do you mean... what I mean is for me FUDI is 
 actually [netsend] and/or [netreceive] interacting with 'something else'... 
 would this be something more clever? Is it still relying on sockets (have no 
 strong feeling about that nor pro nor con just to have a clearer picture)
 
 Would it make sense within this to think of some kind of 'patching' 
 conventions, for example the fact that parameters are always set/modified by 
 messages (and thus easily routable)? maybe some sort of 'namespacing' lingo 
 e.g. mypatch.freq mypatch.amplitude etc...
 
 Or even some sort of semantics related to the GUI... mypatch.hslider.freq .. 
 but this is probably going to far.
 
 As you can see this topic is very thought provoking over here :)
 
 Lorenzo.
 
 ___
 Pd-list@iem.at mailing list
 UNSUBSCRIBE and account-management - 
 http://lists.puredata.info/listinfo/pd-list

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] GUI toolkits and custom GUIs WAS: Integra Live 1.5 released

2013-01-21 Thread Bill Gribble
[sorry about partial message send, thumb slip]

I am working on a pd-clone intended to explore a lot of the topics in this 
thread.  It's not fully baked yet -- the biggest working patch is a biquad 
filter designer with pole-zero and freq response plotting -- but I'm 
particularly excited about the approach to namespacing and scope management, 
which works a lot like hc describes.  Patches have a set of scopes which can be 
mapped onto subpatches (represented as layers, not separate windows).  Name 
resolution in send/receive elements works like you would want it to. 

The GUI is implemented in Clutter, which is a pretty nice toolkit and gives you 
things like zooming for free.  With the pd-style graphics the GUI isn't that 
huge a load. 

I'm submitting a paper to LAC in a week or so, and the code (Linux only ATM, 
and not for the faint of heart) is on github: http://www.github.com/bgribble/mfp

It's a bit premature to announce this code, but the discussion is hitting 
really close to a lot of the topics of my interest so I couldn't resist :)

Thanks,
Bill Gribble

On Jan 21, 2013, at 6:13, Lorenzo Sutton lorenzofsut...@gmail.com wrote:

 On 19/01/13 20:20, Hans-Christoph Steiner wrote:
 On 01/19/2013 01:56 PM, IOhannes m zmölnig wrote:
 On 01/18/2013 22:31, Hans-Christoph Steiner wrote:
 I would love it if someone started this since it would greatly help with 
 the
 goal of splitting the GUI from Pd itself.  And of course I'd help where I 
 can.
 i keep starting that project every now and then: moving all the drawing code
 to pd-gui and only use FUDI (that is: not tcl code) to communicate between
 pd-gui.
 
 unfortunately i always get distracted after a short time and i never get to 
 a
 really working prototype.
 
 gmsdr
 IOhannes
 It can be done incrementally, which is likely the only way its going to get
 done.  It turns out that FUDI and tcl proc calls are very similar: space
 separated list of elements where the first one is the functionality.
 
 If the basics were done first, like object drawing, then someone could build 
 a
 rough GUI with another toolkit to test out.
 When you say 'FUDI' what exctly do you mean... what I mean is for me FUDI is 
 actually [netsend] and/or [netreceive] interacting with 'something else'... 
 would this be something more clever? Is it still relying on sockets (have no 
 strong feeling about that nor pro nor con just to have a clearer picture)
 
 Would it make sense within this to think of some kind of 'patching' 
 conventions, for example the fact that parameters are always set/modified by 
 messages (and thus easily routable)? maybe some sort of 'namespacing' lingo 
 e.g. mypatch.freq mypatch.amplitude etc...
 
 Or even some sort of semantics related to the GUI... mypatch.hslider.freq .. 
 but this is probably going to far.
 
 As you can see this topic is very thought provoking over here :)
 
 Lorenzo.
 
 ___
 Pd-list@iem.at mailing list
 UNSUBSCRIBE and account-management - 
 http://lists.puredata.info/listinfo/pd-list

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] IBM PureData

2012-11-08 Thread Bill Gribble
On Thu, 2012-11-08 at 12:54 +, Julian Brooks wrote:
 the obvious next step is for someone to code up an [IBM~] external
 for pd
  
 I like this idea a lot but what should it consist of?

Cassette data storage modulation sounds, obviously! 

http://www.youtube.com/watch?v=GIPPcPzbOcI

Thanks,
Bill Gribble 


 ___
 Pd-list@iem.at mailing list
 UNSUBSCRIBE and account-management - 
 http://lists.puredata.info/listinfo/pd-list



___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Analog square wave?

2012-02-06 Thread Bill Gribble
On Mon, 2012-02-06 at 17:56 +0100, Frank Barknecht wrote:
 However when using this as a LOW frequency oscillator, I would 
 simply ignore the literature on bandlimiting and go with a pure digital
 aliased wave full force! :)

Good practical advice... if you really start thinking about what is
going to happen when you take a digital square wave and use it as a
modulator on some other signal, probably by something evil and nonlinear
like multiplying the signals together, you can give yourself a headache
quite quickly!  

Just remember, one person's aliasing artifacts all over the spectrum
is another person's gritty, trashy, beautiful dirt. 

Thanks,
Bill Gribble 




___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] expr alternative

2011-10-24 Thread Bill Gribble
On Mon, 2011-10-24 at 15:26 +0100, Andy Farnell wrote:
 The thing about a nice email, no matter how politely and tactfully
 you pen it, is that such a request can feel quite uncomfortable.
 First it makes the assumption that the programmers choice of licence
 was somehow shallow, maybe even arbitrary. Let's give all programmers
 the benefit of the doubt and assume their intelligence extends to
 proper reflection.

The thing is, a lot of license choices ARE shallow and/or arbitrary.
Some people don't really care that much about license details and just
stick something free on there, without really considering if it does
exactly what they want.  I'm sorry that you had trouble handling a
license-exception request, but I have a hard time seeing how a simple
inquiry could be reasonably considered to be imposition on the
developer.  

Someone who is looking at the alternative of (1) reimplementing
something because of their license needs vs (2) being able to use (and
possibly contribute back to) an existing piece of code is really being
dumb if they DON'T ask.  If you are choosing to use a license that
retains some control over the use of your program, you have to expect to
be called on to say No every so often... 

Thanks,
Bill Gribble 


  The alternative is that they inherited a licence
 which they have no power or choice to amend.
 
 Secondly, when someone from your own community appeals to you to help
 them with a cool project, maybe even to help them make a buck or
 two, I expect you are like me and rarely hesitate if its no great
 cost or time commitment. And if your needs and values clearly
 conflict, then its easy to say no and properly communicate why. But
 now familiar tensions between business and morality have come to the
 fore in the last few years, and make demands of bad faith on you.
 You're basically saying, I want to do this, but I am being bullied by
 corporation X to do it this way, and since you are the weaker of two
 conflicting moral opponents I choose to question your values and ask
 you if you will move in order to suit me (and by proxy the
 corporation).
 
 To put it in plain talk, its like getting a message from an old
 friend who got himself mixed up with with some bad drug dealers and
 needs you to bail him out or something nasty is going to happen. It's
 a dilemma where helping or not helping feels equally wrong. Where was
 that friend last week, before he needed the money so bad? Giving them
 money will just get them more enmeshed with a bad scene.
 
 
 I don't mean that to reflect on you personally, it's just something
 that needs to be put out there in the context change the licence
 being an option. It should be a last resort after many other options
 have been considered. Perfectly good choices consistent with proper
 moral and free market principles are; if you are a businessmen or
 lawyer for whom it might be an option why not start your own app
 store. Or if you're a coder able to pull off writing a non GPL
 version of the object from scratch, do that. For the rest of the
 artists, choosing another platform for your application would be the
 logical, rational choice. So would not using [expr], which is easily
 replaced by discrete objects and a little thought.
 
 
 



___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


[PD] [OT] SSE/MMX tips?

2011-09-07 Thread Bill Gribble
I am trying to code a simple operation using SSE2 instructions where possible.  
I have a feeling that what I want to do is just a matter of a couple of shufps 
and haddps instructions but I can't get it. Lazyweb please help!

The operation is integration. I have a vector of 4 single floats (v4sf) and a 
carry-in float to start.  

For example

CI F0 F1 F2 F3 
5  1  0  10 -5

Yields

F0 F1 F2 F3
6  6  16  11

So far iteration on plain floats seems to be the best I can come up with, but 
HADDPS is tantalizingly close to what I want to do.  Any hints?

Thanks,
Bill Gribble
___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] [OT] SSE/MMX tips?

2011-09-07 Thread Bill Gribble
Ah!  Thanks.  Apparently also called prefix sum.  

Thanks,
Bill Gribble 

On Wed, 2011-09-07 at 16:21 +0100, Claude Heiland-Allen wrote:
 On 07/09/11 12:17, Bill Gribble wrote:
  The operation is integration.
 
 Try calling it 'scan' and you might end up with more productive 
 searches, at least to my mind integration is more about summing over 
 continuous regions than something discrete like this.
 
 Searching for data parallel algorithm scan leads to pages like:
 
 http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.85.1876rep=rep1type=pdf
 http://http.developer.nvidia.com/GPUGems3/gpugems3_ch39.html
 
 
 Claude
 
 ___
 Pd-list@iem.at mailing list
 UNSUBSCRIBE and account-management - 
 http://lists.puredata.info/listinfo/pd-list



___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] [OT] SSE/MMX tips?

2011-09-07 Thread Bill Gribble
I noticed that your suggestion did not apply, but assumed it was a subtle 
riddle taunting me for an offtopic post!

I think the best I can do is 2 vector adds and 2 shifts in place of 4 float 
adds per 4 floats. Not much of a savings, but with the loop and fetch overhead 
it may be worth it. I'll benchmark and see!  

It's really just for fun anyway. 

Thanks,
Bill Gribble

On Sep 7, 2011, at 20:59, Mathieu Bouchard ma...@artengine.ca wrote:

 On Wed, 7 Sep 2011, Mathieu Bouchard wrote:
 
 On Wed, 7 Sep 2011, Bill Gribble wrote:
 
 So far iteration on plain floats seems to be the best I can come up with, 
 but HADDPS is tantalizingly close to what I want to do.  Any hints?
 
 Once I thought that with some commutativity you could speed things up like 
 this :
 
 (f0+f1+f2+f3)+(f4+f5+f6+f7)+...
 
 can be rearranged as :
 
 (f0+f4+...)+(f1+f5+...)+(f2+f6+...)+(f3+f7+...)
 
 But what I said does not apply to your case, because you want a scan, whether 
 I didn't really read and assumed a fold.
 
 I don't know how to optimise a scan.
 
 ___
 | Mathieu Bouchard  tél: +1.514.383.3801  Villeray, Montréal, QC

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


[PD] Work in progress

2010-06-15 Thread Bill Gribble
Hi all, I have been working on an experimental pd workalike for a
little while with just the intention of exploring some ideas about
visual programming, getting familiar with all the current audio APIs for
Linux, and generally having fun with a spare time programming project.  

I am really excited that I have some basic functionality now working and
I wanted to share with the only community that would understand these
screenshots :)  These patches actually work as you would expect,
producing audio and all; the only cheating in the screenshots is that
you can't save patches, only create them on the fly.  Still quite early
in the development process! 

As you can guess from the things that look surprising to pd users, the
program is implemented in Python with C extensions.  Objects that get
passed between control processors are just Python objects, and literals
in creation args are passed to the Python evaluator.  

The signal-processing part is a thin wrapper on Jack, with (at this
point) no separate blocking other than the Jack block, so latencies
between the control-rate side and the signal-rate side are pretty high
unless you have a very low-latency audio system... but the complexity of
a separate blocking system were too high to address right away. 

It uses a multiple-process model to separate the garbage-collected
python stuff (control-rate processing) from real-time audio stuff (in
the C extension).  The UI is done in Clutter (in a third process), and
is heavy on keyboard shortcuts.  Everything can be done without a mouse.

When this gets a little more baked there will be public git, wiki, etc
but it's just a toy yet... I just wanted to throw these screenshots out
there. 

Thanks,
Bill Gribble
attachment: route-test.pngattachment: sequence.png___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] pd-linux/irritating dialog box location

2008-12-02 Thread Bill Gribble
On Tue, 2008-12-02 at 00:29 +0100, Damian Stewart wrote:
 raise your hand if
 a) you run Linux, and
 b) you are really really really irritated by the fact that the 
 confirm-close, confirm-quit, file-open and file-save dialog boxes are 
 parented to the main Pd window, rather than the patch window you are 
 currently looking at.

Hand raised, gnome/metacity.  I am, in fact, irritated with confirmation
dialogs of any kind, and for me losing the confirm-close dialog alone
was worth the trouble of installing pd-extended. 

Bill Gribble



___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


[PD] Peak envelope follower?

2008-11-30 Thread Bill Gribble
Is there a way within pd-extended to do the equivalent of [env~], but
following peak value rather than RMS? 

I have pulled my hair out trying to implement this with patching but I
have had no luck. 

Thanks,
Bill Gribble




___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


[PD] Hunting denormals?

2008-10-31 Thread Bill Gribble
I have a patch of medium complexity, with a handful of instruments~ and
a bunch of sequencing and arranging-type message handling.  On my speedy
Intel laptop it has no problem and barely notches the CPU usage.
However, when I run this patch on my teeny Geode-based UMPC it pegs CPU
at 100%. 

I'm pretty sure this is a denormal issue.  There are a grand total of
maybe 5 noise~, 5 osc~, 10 vline~, 5 lop~, and 1 delay line in the whole
patch and not much else besides message processing... I wouldn't guess
this to run me out of compute power. 

Any hints on how to isolate where the denormals might be popping up?  I
have looked for signal processing loops, and the only ones I create are
around the delayline (feedback) and I suppose in the iir implementation
of the lop~.  

Any help appreciated, 
Bill Gribble








___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


[PD] Testing for empty creation args?

2008-10-14 Thread Bill Gribble
I am doing something like this:

|loadbang|
|
|symbol $1|
|
|readfile $1 cr, rewind(
|
|textfile|

There's also an interface to set the filename later.

Because of the later message processing, it would be nice not to send  
the read message if there is no creation arg. Is there a  
straightforward way to do that?

Thanks,
Bill Gribble


___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


[PD] Interrupting a message loop?

2008-10-11 Thread Bill Gribble
Is there a way to stop an non-terminating message loop?  The only way I
know is to Ctrl-C Pd (under Linux), which is not very satisfactory.  

Thanks,
Bill Gribble




___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list