Re: [PD] Live phase modulation

2012-11-29 Thread Charles Henry
Multiply the left outlet of hilbert~ with a cos(theta), multiply the right
outlet with sin(theta) and add them together.  That should approximate
shifting the phase by theta radians.  Sorry I can't provide a patch or
anything.


On Thu, Nov 29, 2012 at 2:38 AM, Alexandros Drymonitis adr...@gmail.comwrote:

 Yes, I thought about windowing and overlapping after I posted. But I don't
 know the simpler solution you're mentioning...some example how to set it up?



 On Wed, Nov 28, 2012 at 10:31 PM, Charles Henry czhe...@gmail.com wrote:

 It's a good start, I'd guess.  You'll get discontinuities on the block
 boundaries.  You probably want to insert that part of your patch into a
 overlapping block scheme with windowing, to reduce clicks/noise.

 However, I bet there's a simpler solution that works almost as well with
 an all-pass filter (or the hilbert~ abstraction) and a mixer.

 Chuck


 On Wed, Nov 28, 2012 at 2:04 PM, Alexandros Drymonitis 
 adr...@gmail.comwrote:

 Is this right for phase modulation of live input?

 [adc~]  [0\
 |   |
 [rfft~]   [osc~]
 |   \   |
 | \ |[0\
 |   \   ||
 [cartopol~]   [*~]
 |  ||
 |  [+~]
 |  |
 [poltocar~]
 | /
 |   /
 | /
 [rifft~]
 |
 [dac~]
 --


 ___
 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] Live phase modulation

2012-11-28 Thread Charles Henry
It's a good start, I'd guess.  You'll get discontinuities on the block
boundaries.  You probably want to insert that part of your patch into a
overlapping block scheme with windowing, to reduce clicks/noise.

However, I bet there's a simpler solution that works almost as well with an
all-pass filter (or the hilbert~ abstraction) and a mixer.

Chuck


On Wed, Nov 28, 2012 at 2:04 PM, Alexandros Drymonitis adr...@gmail.comwrote:

 Is this right for phase modulation of live input?

 [adc~]  [0\
 |   |
 [rfft~]   [osc~]
 |   \   |
 | \ |[0\
 |   \   ||
 [cartopol~]   [*~]
 |  ||
 |  [+~]
 |  |
 [poltocar~]
 | /
 |   /
 | /
 [rifft~]
 |
 [dac~]
 --


 ___
 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] is there a kalman filter for pd? (if not I could probably provide one, if I make it :) )

2012-11-24 Thread Charles Henry
I think that's a good idea.  I've wanted to do this (another one of those
projects that I couldn't accomplish right now).
I had in mind, noise reduction for recording--given that it only removes
stationary correlated noise, it would be good for scrubbing the noise floor.
Or--did you have in mind something much slower, to clean up the noise in
measurements from a different kind of sensor?
Also, do you want to program it as an external in C, or as an abstraction
in Pd?


On Fri, Nov 23, 2012 at 12:31 PM, Pedro Lopes pedro.lo...@ist.utl.ptwrote:



 --
 Pedro Lopes (HCI Researcher / MSc)
 contact: pedro.lo...@ist.utl.pt
 website: http://web.ist.utl.pt/pedro.lopes /
 http://pedrolopesresearch.wordpress.com/ |
 http://twitter.com/plopesresearch

 ___
 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-07 Thread Charles Henry
I'm sad.  They will ruin the good name of Pure Data.
umm... let's hope there's no looming copyright issues over the name.  IBM
is not *famously* litigious, but they are a computer/software company.
Watch out for lawyers


On Wed, Nov 7, 2012 at 4:30 PM, Max abonneme...@revolwear.com wrote:

 http://www-01.ibm.com/software/data/puredata/
 this new IBM Software will make searching the web for pure data even
 harder.

 ___
 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] Stream phone call to pd?

2012-10-29 Thread Charles Henry
On Mon, Oct 29, 2012 at 10:05 AM, Simon Iten itensi...@gmail.com wrote:
 I think the obvious way to do this is to hack a Bluetooth headset. You could
 attach the headset with cables to an existing audiointerface...
 The user just connects to a regular headset.

That's slightly less obvious than plugging in a stereo output cable
from phone to sound card.

There are also bluetooth audio devices (headset omitted) that have
stereo outputs (here's one example:
http://www.newegg.com/Product/Product.aspx?Item=N82E16875981014nm_mc=KNC-GoogleAdwordscm_mmc=KNC-GoogleAdwords-_-pla-_-NA-_-NA
)

A software only solution is more interesting though--good luck, I have
no clue how you might do it, but I'll be reading to know if/how you
do.

Chuck


 On Oct 29, 2012 12:56 PM, katja katjavet...@gmail.com wrote:

 Hello Sebastian,

 Couple of years ago I tried to use a bluetooth stereo device for
 wireless monitoring in Pd. Nice thing about OSX is you can create an
 'Aggregated Device' in 'Audio MIDI Setup' to include the bluetooth
 stereo to the regular sound card and use the extra channels in Pd.
 However, I soon found that bluetooth stereo had over half a second
 latency, so it was not useful for my purpose of monitoring. Besides
 that, bluetooth audio pairing was really a pain in OSX (back then at
 least).

 Another thing, when connecting a phone as bluetooth device to MacBook,
 I see the following services: Dial-up Networking, Human interface
 device, OBEX File Transfer, OBEX Object Push. None of these makes the
 phone available as an extra audio interface. No way to capture it's
 audio in Pd, like it can be done with bluetooth headsets.

 With WIFI-enabled cell phones there may be better possibilities, using
 Skype or similar, and route audio to Pd with Jack or Soundflower.

 Katja



 On Mon, Oct 29, 2012 at 4:21 AM, Sebastian Valenzuela
 svalenzuelamu...@gmail.com wrote:
 
  Hey everyone,
 
  I know this is a longshot, and most likely not the best place to ask
  this sort of question, but maybe you can point me in the right direction.
  I'm working on an art installation which requires the interception of phone
  conversations to be sent to my macbook and manipulated in Pd. Willing
  participants would connect their phones (via bluetooth?) to my computer and
  all audio would be streamed to my laptop in real time and routed into Pd. I
  realize one could just connect their phones to their laptops via an 8th 
  inch
  TRS cable and an audio interface... but the idea is to make this connection
  wirelessly.
 
  Any ideas? Anything would be helpful.
 
  Thank you for your time,
  Sebastian
 
  --
  Sebastian Ignacio Valenzuela Rojas
  Composer - Performer
  svalenzuelamusic.wix.com/home
  youtube.com/svalenzuelamusic
 
 
  ___
  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


 ___
 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] put the argument of an abstraction in a message

2012-10-15 Thread Charles Henry
The arguments start from $1.  $0 is a unique identifier per instance
of an abstraction.
The $1,...,$N strings work differently in messages and objects.  $0
does nothing inside messages.

Just create an object [$1], send it a bang, and it dumps out the 1st
argument of the abstraction it's in.  I use it this way for floats.  I
think you need to declare it differently for strings/symbols.  How
about [symbol $1]?

Chuck

On Mon, Oct 15, 2012 at 10:19 AM, Charles Goyard c...@fsck.fr wrote:
 Hi list,

 I have an abstraction named overlap. It takes an argument, such as
 first or second.

 This abstraction outputs a list. I would like this list to contain the
 argument. I tried with $0 from inside the abstraction to no avail. It
 looks like $0 is available only to send and receive ?

 Maybe this sounds obvious, but I can't find the answer.

 Thanks,

 --
 Charlot

 ___
 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] normalizing hann window

2012-10-12 Thread Charles Henry
On Fri, Oct 12, 2012 at 4:59 PM, Alexandre Torres Porres
por...@gmail.com wrote:
 hi there, in pd's examples, we need to divide by (3/2 * window size) in a 4
 overlap on a hann window.

 what about other overlaps, what is the normalizing factor?

 and how about other windows?

 I looked for this info on books and google and stuff, found nothing.

 Engineers, please help.

 thanks
 Alex

I'm not exactly sure why it's used either.  If you were using a
overlap of 2 and used hann windows that cover each block, you would
get back the exact signal after applying overlap-and-add with no
additional normalization.

So, for the same scheme and overlap 4, it stands to reason that you'd
only divide by 2 and recover the original signal as well.

What's the window size like relative to the block size?  same/different?

Some other engineer--please help.

Chuck

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


Re: [PD] counting how many times an audio file is looped

2012-10-05 Thread Charles Henry
On Fri, Oct 5, 2012 at 4:25 PM, Rick T ratull...@gmail.com wrote:
 Greetings All

 I'm trying to count how may times an audio file is looped then cause it to
 stop after say 6 loops.

 1) I plan on using the select object to compare the sample size (22050) to
 where the playing wav file is located
 2) create a bang into cup object from the select object, this will count
 the number of loops.
 3) Use another select object to stop when it reaches 6

 The problem I'm having is trying to compare the sample size to where the
 playing wav file is currently located.
 I can get the sample size using the wavinfo object but how do I get the
 current location of the playing wav file.
 (I tried using the metro 50 object with the snapshot~ object) but the
 numbers don't seem be matching up

 Is there another way I should be doing this

 Thanks

Hi Rick

I think you should use [vline~] to feed [tabread4~].  As long as you
get the number of samples up front with wavinfo, like you mentioned,
you can just schedule those 6 loops to play with vline~ (no need to
count and stop the loop), and you always know what sample is playing,
because it's the value of the vline~ output.

You may also want another vline~ to fade-in and fade-out.

Chuck

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


Re: [PD] counting how many times an audio file is looped

2012-10-05 Thread Charles Henry
On Fri, Oct 5, 2012 at 5:24 PM, Rick T ratull...@gmail.com wrote:
 Yes I am using tabread4~

 I looked up vline~ in the help but it seems to be missing some info on the
 second and third inlets.  Is there some more information about this object.
 I'm using PD .42.5 extended on ubuntu 10.04 64bit

To be honest, I'm not very good at using vline~ myself (the offset
value always confuses me).  I'm still at work for a little while
longer, so no pd here.

Basically, what it will look like is you feed [vline~] a series of
messages that stands for each reset to 0 and ramp.  Comma-separated
messages inside a single message will be treated like separate
messages.

So, it may make a pretty long message, but the idea I was getting at
here is like the difference between coding a while() loop and a for()
loop.  You can avoid the tricky logic and figure out all the timing up
front, then just let it run.

Chuck


 I tried doing this but I get an error error: can't connect signal outlet to
 control inlet
 phasor~
 |
 *~
 |
 vline~  (error: can't connect signal outlet to control inlet)
 |
 tabread4~

 Thanks




 On Fri, Oct 5, 2012 at 11:42 AM, Charles Henry czhe...@gmail.com wrote:

 On Fri, Oct 5, 2012 at 4:25 PM, Rick T ratull...@gmail.com wrote:
  Greetings All
 
  I'm trying to count how may times an audio file is looped then cause it
  to
  stop after say 6 loops.
 
  1) I plan on using the select object to compare the sample size
  (22050) to
  where the playing wav file is located
  2) create a bang into cup object from the select object, this will
  count
  the number of loops.
  3) Use another select object to stop when it reaches 6
 
  The problem I'm having is trying to compare the sample size to where the
  playing wav file is currently located.
  I can get the sample size using the wavinfo object but how do I get
  the
  current location of the playing wav file.
  (I tried using the metro 50 object with the snapshot~ object) but
  the
  numbers don't seem be matching up
 
  Is there another way I should be doing this
 
  Thanks

 Hi Rick

 I think you should use [vline~] to feed [tabread4~].  As long as you
 get the number of samples up front with wavinfo, like you mentioned,
 you can just schedule those 6 loops to play with vline~ (no need to
 count and stop the loop), and you always know what sample is playing,
 because it's the value of the vline~ output.

 You may also want another vline~ to fade-in and fade-out.

 Chuck

 ___
 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] Super computer made of legos and Raspberry Pi computers

2012-09-17 Thread Charles Henry
On Mon, Sep 17, 2012 at 4:11 AM, Andy Farnell
padawa...@obiwannabe.co.uk wrote:

 Hearing it from the front line is really interesting Chuck. I am
 a little envious at the excitement a project like that must
 produce.

 Do you know of Joe Deken and the suitcase supercomputer
 project? He is a big Pd proponent (and friend of Miller I believe)
 and they are also looking at R-Pi boards for their next
 portable cluster (I'm probably telling you stuff you already
 know)

 best
 Andy

Actually, I just read the post yesterday from Joe--I was sort of aware
of the San Diego Supercomputing Center before now.
The RPi boards are interesting, and since the best you can do is
100Mb/s, the switch gear should be relatively cheap (and old).

However, if you can consolidate your systems more, you need fewer
cables, smaller switches, etc...

So--look forward to the Kontron KTT30 board which hosts the Tegra 3
SoC.  There's no word yet on the price, but it's about 4x as powerful
as a Raspberry Pi.  So, if it comes in low enough (say $120-140, then
it just might beat the RPi for cost.





 On Sun, Sep 16, 2012 at 10:26:56PM -0500, Charles Henry wrote:
 On Sun, Sep 16, 2012 at 3:26 PM, Andy Farnell
 padawa...@obiwannabe.co.uk wrote:
  On Sun, Sep 16, 2012 at 10:24:45AM -0300, Alexandre Torres Porres wrote:
  now my question is;
 
  spending 4k to build a Pi supercomputer can give you more power and
  possibilities than with a top of the line MAC for example (which will cost
  just as much, and be a quad core 2.7 intel i7, 1.6GHz bus, 16GB Ram).
 
 
  We keep using the word 'supercomputer', and maybe a bit of
  perspective would help clarify matters of scale.
 ...

  A supercomputer is, by definition, that which is on the cutting edge of
  feasible research. Most supercomputers are in a single location and not
  distributed or opportunistic, they usually have a building dedicated to
  them and a power supply suitable for a small town of a thousand homes
  (a few MW). A team of full time staff are needed to run them. They cost a
  few hundred million to build and a few tens of millions per year to 
  operate.
  Current supercomputers are measured in tens of Peta FLOPS, ten to a hundred
  times more powerful than the equivalent mainframe, and are primarily
  used for scientific modelling.

 Yeah, but when I tell people what I do, do you think I say cluster
 computing or symmetric multiprocessing or CUDA applications engineer?
  No, I tell them I work with supercomputers--It's not a term for
 practitioners, since there's more specific things to say, ... and it
 keeps people from thinking I'm going to waste time talking about nerdy
 shit that I don't want to talk about anyway :)

  The current guise of the 'mainframe' is what we would now see as a
  Data Center, a floor of an industrial unit, probably much like
  your ISP or hosting company with many rows of racked indepenedent
  units that can be linked into various cluster configurations
  for virtual services, network presence and data storage.
  Aggregate CPU power in the region of 10 TFLOP to 0.5 PFLOP

 At the moment, I'm (the engineer) putting together the proposal for a
 grant for GPU computing resources (for the researchers and
 scientists).  We're looking to spend about $750,000 on hardware that
 will perform about 100 TFLOPS.  Mostly it will be made up of--whatever
 NVIDIA Tesla is most cost/power effective--in servers that will hold 4
 GPUs.  Altogether, we hope this fills up 5-10 racks (in our shiny new
 energy efficient data center with 32 racks, that the f'ing fire
 marshall won't let us into for another month, when we've been
 postponed since June anyway).

  Supercomputers are still supercomputers, by definition they are
  beyond wildest imagination and schoolboy fantasies unless
  you happen to be a scientist who gets to work with them.
  A bunch of lego bricks networked together does not give you 20PFLOP,
  so it does not a supercomputer make.
 
  However, there is a different point of view emerging since the mid
  1990s based on concentrated versus distributed models. Since the
  clustering of cheap and power efficient microcomputers is now
  possible because of operating system and networking advances,
  we often hear of amazing feats of collective CPU power obtained
  by hooking together old Xboxes with GPUs, (Beowulf - TFLOP range)
  or using opportunistic distributed networks to get amazing power
  out of unused cycles (eg SETI at home/BOINC and other volunteer
  arrays, or 'botnets' used by crackers) (tens to hundreds of TFLOPS).

 Clustering is currently the most scalable model for supercomputers.
 Many expensive options exist for systems with large numbers of cores
 and shared memory--but year after year, more circuits get put on a
 single die.  Generally when you think of supercomputers these days,
 it's a network of systems that each have a lot of x86_64 cores and a
 maybe nice co-processor (like the NVIDIA Tesla's).

 Some of the IBM machines (and Cray

Re: [PD] Super computer made of legos and Raspberry Pi computers

2012-09-16 Thread Charles Henry
On Sun, Sep 16, 2012 at 8:24 AM, Alexandre Torres Porres
por...@gmail.com wrote:
 now my question is;

 spending 4k to build a Pi supercomputer can give you more power and
 possibilities than with a top of the line MAC for example (which will cost
 just as much, and be a quad core 2.7 intel i7, 1.6GHz bus, 16GB Ram).

I think what you'll want to spend 4k on is a Xeon Phi co-processor for
a desktop instead.  It has 50 cores and a 512-bit instruction word
length on each core.

 I'm guessing that CPU wize it would be more powerful indeed; even thought
 it's a modest one, that's 64 cores against 4...

 what I'm not familiar to is how supercomputing works and optimizes the work
 by splitting it into all CPU units. Maybe it does work like getting hard
 drives into RAID 0 mode, right? Where the speed of file transfer does double
 up.

You have to write software with MPI (for clustering) or OpenMP
(massively multi-threaded) to take advantage of those extra cores.
You always lose some efficiency when using multiple cores, but you may
speedup the program.  The highest possible speedup is achieved when
all processes are independent.



 cheers
 Alex

 2012/9/16 i go bananas hard@gmail.com

 yeah, separating individual instruments / voices from a mix does seem like
 a 'just over the horizon' application.  I'd love to be able to have a stereo
 microphone in the room i'm in now, and separate the sound of the rain, the
 wind, the TV in the background, my typing at this keyboard



 ___
 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] Super computer made of legos and Raspberry Pi computers

2012-09-16 Thread Charles Henry
On Sun, Sep 16, 2012 at 3:26 PM, Andy Farnell
padawa...@obiwannabe.co.uk wrote:
 On Sun, Sep 16, 2012 at 10:24:45AM -0300, Alexandre Torres Porres wrote:
 now my question is;

 spending 4k to build a Pi supercomputer can give you more power and
 possibilities than with a top of the line MAC for example (which will cost
 just as much, and be a quad core 2.7 intel i7, 1.6GHz bus, 16GB Ram).


 We keep using the word 'supercomputer', and maybe a bit of
 perspective would help clarify matters of scale.
...

 A supercomputer is, by definition, that which is on the cutting edge of
 feasible research. Most supercomputers are in a single location and not
 distributed or opportunistic, they usually have a building dedicated to
 them and a power supply suitable for a small town of a thousand homes
 (a few MW). A team of full time staff are needed to run them. They cost a
 few hundred million to build and a few tens of millions per year to operate.
 Current supercomputers are measured in tens of Peta FLOPS, ten to a hundred
 times more powerful than the equivalent mainframe, and are primarily
 used for scientific modelling.

Yeah, but when I tell people what I do, do you think I say cluster
computing or symmetric multiprocessing or CUDA applications engineer?
 No, I tell them I work with supercomputers--It's not a term for
practitioners, since there's more specific things to say, ... and it
keeps people from thinking I'm going to waste time talking about nerdy
shit that I don't want to talk about anyway :)

 The current guise of the 'mainframe' is what we would now see as a
 Data Center, a floor of an industrial unit, probably much like
 your ISP or hosting company with many rows of racked indepenedent
 units that can be linked into various cluster configurations
 for virtual services, network presence and data storage.
 Aggregate CPU power in the region of 10 TFLOP to 0.5 PFLOP

At the moment, I'm (the engineer) putting together the proposal for a
grant for GPU computing resources (for the researchers and
scientists).  We're looking to spend about $750,000 on hardware that
will perform about 100 TFLOPS.  Mostly it will be made up of--whatever
NVIDIA Tesla is most cost/power effective--in servers that will hold 4
GPUs.  Altogether, we hope this fills up 5-10 racks (in our shiny new
energy efficient data center with 32 racks, that the f'ing fire
marshall won't let us into for another month, when we've been
postponed since June anyway).

 Supercomputers are still supercomputers, by definition they are
 beyond wildest imagination and schoolboy fantasies unless
 you happen to be a scientist who gets to work with them.
 A bunch of lego bricks networked together does not give you 20PFLOP,
 so it does not a supercomputer make.

 However, there is a different point of view emerging since the mid
 1990s based on concentrated versus distributed models. Since the
 clustering of cheap and power efficient microcomputers is now
 possible because of operating system and networking advances,
 we often hear of amazing feats of collective CPU power obtained
 by hooking together old Xboxes with GPUs, (Beowulf - TFLOP range)
 or using opportunistic distributed networks to get amazing power
 out of unused cycles (eg SETI at home/BOINC and other volunteer
 arrays, or 'botnets' used by crackers) (tens to hundreds of TFLOPS).

Clustering is currently the most scalable model for supercomputers.
Many expensive options exist for systems with large numbers of cores
and shared memory--but year after year, more circuits get put on a
single die.  Generally when you think of supercomputers these days,
it's a network of systems that each have a lot of x86_64 cores and a
maybe nice co-processor (like the NVIDIA Tesla's).

Some of the IBM machines (and Cray, still?) use pipelined multi-core
processors of a different architecture and 1000s of cores on a single
system, but I don't see that as a trend that will survive.

Chuck

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


Re: [PD] [OT] Portable webserver with static IP

2012-09-10 Thread Charles Henry
On Mon, Sep 10, 2012 at 2:32 PM, Pierre Massat pimas...@gmail.com wrote:
 Ok, so the static IP is the way to go.

Actually, Mr Goyard's suggestion is more like what you described.  A
static IP won't let you just set it up and go.

 Can I choose x and y arbitrarily ? How do I know what value of x will match
 my subnet ? As for the value of y, I guess any value high enough (say, 50)
 in a small home network will do, right?

You have to get this information about the network by being connected
to it.  Choosing the right value for a static IP means that you have
to know the DHCP range on the router, and that no IP is already
assigned to the address you picked.  You can get this information from
the configuration of the router--my guess is that you won't have
access to it, when you go somewhere else.

The static IP option is going to be the most labor/time intensive.  It
would generally be better to be ~lazy, and just get the IP once you've
connected via DHCP,  or follow through the steps to setup zeroconf so
you just use the same name every time (and disregard the network/IP).


 Thank you all for your help!

 Cheers,

 Pierre.


 2012/9/10 Andy Farnell padawa...@obiwannabe.co.uk


 The simplest and most direct way is to go into

 /etc/network/interfaces

 and change the first entry for the interface you
 want to use (presumably wired ethernet eth0) to

 iface eth0 inet static 192.168.x.y
 netmask 255.255.255.0
 broadcast 192.168.x.255
 gateway  192.168.x.z

 Your choice of x and y shoud match your subnet and a free
 IP address. The value for z will be the router. BTW don't end your
 address with 255 as you suggested :) that is reserved for
 broadcast address, see the third line.

 The router should see this via gratuitous ARP quite quickly,
 no need for any other fancy announcements unless you are in
 a big and complicated network.

 Check it after reboot using

 ifconfig eth0

 best
 Andy




 On Mon, Sep 10, 2012 at 04:41:33PM +0200, Pierre Massat wrote:
  Dear Pd-Listers,
 
  Sorry this obviously OT question.
 
  I'm trying to use my Raspberry Pi (yes I know, i'm also beginning to get
  fed up with its apparent ubiquity...) as by portable webserver. By
  portable
  I mean that i could carry it with me and plug it into any home router
  and
  make it accessible to every machine in the local network.
 
  The obvious problem i'm currently faced with is that of the IP given by
  the
  router to the RPi. I think it's possible to configure the RPi to have a
  static IP, but I have no idea how portable this solution is. Say, if I
  configured my RPi to alsways show up as 192.168.0.255, would this
  address
  work with every home router?
  Another option, perhaps : use the unique MAC address of my RPi ? I have
  no
  clue whether it is possible at all to connect to a local webserver using
  the MAC of its host.
 
  Any clue is more than welcome, i know practically nothing about
  networks.
 
  Cheers,
 
  Pierre.

  ___
  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


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


Re: [PD] beamforming, mic array and audio source localization

2012-08-20 Thread Charles Henry
I have not worked on it, but I think it's really interesting.
Studying microphone arrays for source localization is on my list...
once I get through everything else I started and didn't finish yet.

I was really wondering about microphone arrays arranged in a circle,
semi-circle, or around the perimeter of a room to pick up sounds
selectively by location.  I think that could be used to good effect
for performance/recording.

What are you up to now?

Chuck

On Sun, Aug 19, 2012 at 5:27 AM, Cyrille Henry c...@chnry.net wrote:
 Hello,
 did anyone ever worked on beamforming using microphone array for audio
 source localisation and noise reduction?

 thx
 Cyrille

 ___
 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] 2009-2010 Macbook Pro 2.2GHz Latency?

2012-07-27 Thread Charles Henry
On Thu, Jul 26, 2012 at 8:50 PM, Tyler Leavitt thecryofl...@gmail.com wrote:
 10ms is around the human-ear latency, so anything at that level or below
 should be good enough for guitar/drumming (this is anectodtal... Iḿ not sure
 the exact science behind it). Ive never had a problem with my friends older
 13 MacBook Pro used as a guitar FX box.

 Tyler

I believe the phenomenon you're describing is called loudness
integration.  However, I can't find any good citations available on
the internet to back it up--here's something that *might* be
applicable:
Plack, C. J.,  Moore, B. C. J. (1990). Temporal window shape as a
function of frequency and level. Journal of the Acoustical Society of
America, 87, 2178–2187.

The basic idea is that the cochlea is fed a series of waves and a
particular place on the basilar membrane resonates most for a given
frequency.  The instantaneous power delivered is low, so the power
needs to accumulate before the stimulus is strong enough to be
perceived.

As I recall, it takes about 20 ms to reach a steady state, but it's
been a while since I've read anything about it.

Chuck

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


Re: [PD] is there a way to send a bang precisely when a sample is looped using tabread4~?

2012-07-16 Thread Charles Henry
On Mon, Jul 16, 2012 at 2:26 AM, Roman Haefeli reduz...@gmail.com wrote:
 Hi Jim

 On Sun, 2012-07-15 at 16:25 -0400, Jim Kremens wrote:
 Here’s my setup: I’m using a phasor~ to read data out of an array
 using tabread4~. And I’m using snapshot and metro to let me know
 current position in that file. Basically, metro pings the snapshot
 object on an interval and gives me a reading of where we are. I’m
 trying to fire a bang exactly when the sample is looped.

 Don't measure something when that something can be known beforehand.
 Instead of a [phasor~] I'd use a [vline~] to control the play head. Then
 you only need to tell [vline~] in what time it should play your table.
 You can use the exact same value to control a [metro]. Example:

 [metro 2000] - 2s interval
 |
 [0, 88200 2000(  - play the 88200 samples of your table in 2s
 |
 [vline~]
 |
 [tabread4~ yourtable]

I agree with you Roman--the solution is to use metro+vline or
delay+vline.  In either case, you get the bangs exactly when the new
loop starts.

Where it's different:  when changing the delay value, your loop will
no longer reach the end of the table when it starts over.  This could
introduce clicks.  That's where phasor~ has the advantage.

I think you could compensate for that with a line object that counts
down the interval.  When you provide it another message telling it to
change the rate, you'd know exactly how much time is left in the
current loop and provide another message to vline~ to make sure it
speeds up to compensate.

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


Re: [PD] ipoke~ ?

2012-06-25 Thread Charles Henry
On Thu, Jun 21, 2012 at 9:28 AM, Matt Barber brbrof...@gmail.com wrote:
 I'm not sure how [ipoke~]
 does what it does, but I'd want to leave the idea of several
 approaches open (maybe along the lines outlined in this thread) to see
 what will work best for Pd.

 Matt

One thing to consider is the possibility of a one-sided
(non-symmetric) function instead of a strict interpolator.  Using a
symmetric interpolator adds some latency--to band-limit the incoming
signal with a symmetric interpolator, your samples need to extend into
the future.

Now, if you take a non-symmetric function, what's the worst that
happens?  You get up to pi/4 radians of phase shift in the passband
and up to pi/2 radians in the stopband.  It jworks more like a
band-limited estimator than an interpolator.

If you condition the input signal well, then filling the table
consecutively might work and be fast.

Chuck

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


Re: [PD] creation parameters to inlets/outlets for documentation?

2012-06-19 Thread Charles Henry
Hi Jörn

Neat idea.  And why not?  The restricted words are hold, lin, and
linear.  The code in g_io.c has the creation methods for voutlet and
vinlet.  The creation argument is for deciding what type of
interpolation method to use during upsampling.  In the code below, you
can see some if/then/else statements that cover what to do with the
creation argument.  It defaults to the same thing as no argument when
the symbol does not match.

I'm curious to know what happens (in code) when you provide extra
arguments to objects--because from experience this does nothing.  I
think that's a safe practice, but I don't know for sure.

Chuck

http://pure-data.svn.sourceforge.net/viewvc/pure-data/trunk/pd/src/g_io.c?revision=9589view=markup

248 static void *vinlet_newsig(t_symbol *s)
249 {
250 t_vinlet *x = (t_vinlet *)pd_new(vinlet_class);
251 x-x_canvas = canvas_getcurrent();
252 x-x_inlet = canvas_addinlet(x-x_canvas, x-x_obj.ob_pd, s_signal);
253 x-x_endbuf = x-x_buf = (t_float *)getbytes(0);
254 x-x_bufsize = 0;
255 x-x_directsignal = 0;
256 outlet_new(x-x_obj, s_signal);
257 
258 resample_init(x-x_updown);
259 
260 /* this should be though over:
261 * it might prove hard to provide consistency between labeled up-
 downsampling methods
262 * maybe indeces would be better...
263 *
264 * up till now we provide several upsampling methods and 1 single
downsampling method (no filtering !)
265 */
266 if (s == gensym(hold))x-x_updown.method=1; /* up: sample and hold */
267 else if (s == gensym(lin))x-x_updown.method=2; /* up: linear
interpolation */
268 else x-x_updown.method=0; /* up: zero-padding */
269 
270 return (x);
271 }
272 
273 static void vinlet_setup(void)
274 {
275 vinlet_class = class_new(gensym(inlet), (t_newmethod)vinlet_new,
276 (t_method)vinlet_free, sizeof(t_vinlet), CLASS_NOINLET, A_DEFSYM, 0);
277 class_addcreator((t_newmethod)vinlet_newsig, gensym(inlet~),
A_DEFSYM, 0);
278 class_addbang(vinlet_class, vinlet_bang);
279 class_addpointer(vinlet_class, vinlet_pointer);
280 class_addfloat(vinlet_class, vinlet_float);
281 class_addsymbol(vinlet_class, vinlet_symbol);
282 class_addlist(vinlet_class, vinlet_list);
283 class_addanything(vinlet_class, vinlet_anything);
284 class_addmethod(vinlet_class, (t_method)vinlet_dsp, gensym(dsp), 0);
285 class_sethelpsymbol(vinlet_class, gensym(pd));
286 }
...
558 static void *voutlet_newsig(t_symbol *s)
559 {
560 t_voutlet *x = (t_voutlet *)pd_new(voutlet_class);
561 x-x_canvas = canvas_getcurrent();
562 x-x_parentoutlet = canvas_addoutlet(x-x_canvas,
563 x-x_obj.ob_pd, s_signal);
564 inlet_new(x-x_obj, x-x_obj.ob_pd, s_signal, s_signal);
565 x-x_endbuf = x-x_buf = (t_sample *)getbytes(0);
566 x-x_bufsize = 0;
567 
568 resample_init(x-x_updown);
569 
570 /* this should be though over:
571 * it might prove hard to provide consistency between labeled up-
 downsampling methods
572 * maybe indeces would be better...
573 *
574 * up till now we provide several upsampling methods and 1 single
downsampling method (no filtering !)
575 */
576 if (s == gensym(hold))x-x_updown.method=1; /* up: sample and hold */
577 else if (s == gensym(lin))x-x_updown.method=2; /* up: linear
interpolation */
578 else if (s == gensym(linear))x-x_updown.method=2; /* up:
linear interpolation */
579 else x-x_updown.method=0; /* up: zero-padding; down: ignore
samples inbetween */
580 
581 return (x);
582 }
583 
584 
585 static void voutlet_setup(void)
586 {
587 voutlet_class = class_new(gensym(outlet), (t_newmethod)voutlet_new,
588 (t_method)voutlet_free, sizeof(t_voutlet), CLASS_NOINLET, A_DEFSYM, 0);
589 class_addcreator((t_newmethod)voutlet_newsig, gensym(outlet~),
A_DEFSYM, 0);
590 class_addbang(voutlet_class, voutlet_bang);
591 class_addpointer(voutlet_class, voutlet_pointer);
592 class_addfloat(voutlet_class, (t_method)voutlet_float);
593 class_addsymbol(voutlet_class, voutlet_symbol);
594 class_addlist(voutlet_class, voutlet_list);
595 class_addanything(voutlet_class, voutlet_anything);
596 class_addmethod(voutlet_class, (t_method)voutlet_dsp, gensym(dsp), 0);
597 class_sethelpsymbol(voutlet_class, gensym(pd));
598 }


On Tue, Jun 19, 2012 at 2:41 PM, Jörn Nettingsmeier
netti...@stackingdwarves.net wrote:
 hi *!


 first of all, thanks for all your helpful replies to my earlier question
 about messages and abstraction - i'm still trying to understand some of the
 comments, but i'm going with claude's suggestion for now to keep the ID
 knowledge outside of all related objects and not use $0. so far, that seems
 to do the job, and the code is a lot cleaner now. will post asap.

 quick question: is it legal to (ab)use creation parameters to inlets and
 outlets for documentation, 

Re: [PD] ipoke~ ?

2012-06-14 Thread Charles Henry
On Wed, Jun 13, 2012 at 6:14 PM, katja katjavet...@gmail.com wrote:

 There should be an (optional) amplitude compensation for up- and
 downsampling, as an amplitude effect would be inconvenient in the case
 of a variable-speed sound-on-sound looper.

 Katja

I think that a consideration here to justify a scaling effect is to
deliver the same rate of power.

I like looking at this problem with sinc functions, because the
spectrum becomes easy to see, and the energy is easy to calculate.

The function with sampling rate f_s and unit spectrum from -f_s/2 to
f_s/2 is f_s*sinc(t*f_s).  This function when it's convolved with
itself, equals itself.

and if you have f1  f2,  f1*sinc(t*f1) convolved by f2*sinc(t*f2) =
f1*sinc(t*f1)   which is important for comparing interpolators at
different frequencies.

The L2 norm of f_s*sinc(t*f_s) = f_s.
Here's the term that grows larger when we increase f_s.

In a given block, you're always writing N samples.  Your goal is to
write N orthogonal functions that fills all the values in some
interval and keep normalized the power during that interval.

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


Re: [PD] ipoke~ ?

2012-06-14 Thread Charles Henry
I'm not sure I understood the whole thread so far... let me back up:

I'm not sure that you want to write samples of a function to the table
for each sample you want to write.

You start with two signals (blocks of N), one is the data you want to
write, the other is the indexes where you want the variables written.

The data you want to write is an evenly spaced signal with spectrum on
-1/2  f  1/2.

Depending on how closely spaced the indexes are, you get aliasing on
side, and on the other you have more spectrum than you need.

Close together (data written to buffer slower than normal speed):
aliasing.  The signal that we're writing to the table has fewer points
than what's needed to cover the spectrum of the input signal.

If all you did was write 4 points from a constant interpolator, you'd
still have the aliasing.

Far apart (writing faster):  There's evidently a possibility of a
perfect reconstruction because you've got more points than you need.
I think that can be done with sinc functions, and then you can choose
finite-length interpolator functions as approximations.  This is the
easy part of the problem, if you just ignore how potentially expensive
it is :)

What I see happening is that you when you write-then-read with
tabwrite4~ / tabread4~, you get back a sampling of convolving each of
the interpolation functions and the input data. The effect of each
sample spreads out to cover 8 samples on the output.

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


Re: [PD] ipoke~ ?

2012-06-13 Thread Charles Henry
On Wed, Jun 13, 2012 at 3:27 PM, Matt Barber brbrof...@gmail.com wrote:
 I'm not sure I understand this - I assume you mean very small
 increments in the written table. So lets say you're going to try to
 write a whole 64-sample input block to between indices 10 and 11 of
 the table. If you're writing 4 samples each time, what you end up with
 is not cpu overload, but just four samples with possibly a very high
 amplitude, depending upon the nature of the signal. And actually, if
 you think about this with regard to the delay line, this would be what
 would happen if the sound source were moving toward a microphone at or
 near the speed of sound, so the very high amplitude would in effect
 be a digital sonic boom.

 Matt

I think you'll need to apply a scaling factor so that samples that
accumulate values over a short interval will not blow up.  I've been
reading your discussion, and it looks like a really fun math problem.

I'm stuck wrangling servers and cultivating my ulcer for now... but I
hope I can find some time to study it with you soon.

Chuck

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


Re: [PD] an BUG on [expr] ???

2012-05-30 Thread Charles Henry
On Wed, May 30, 2012 at 10:17 AM, Jonghyun Kim agitato...@gmail.com wrote:
 dear list,

 Ver:
 0.42.5-extended
 0.43.1-extended-20120510
 on MacOS X 10.6.8

 I think it is a bug...

Could be... since when does Pd use integer arithmetic by default? for anything?

Workaround:
[expr (1000.0 / 60 ) * $f1]

Try making sure that one or both of your numbers are parsed as
floating point numbers and see what happens.


 60
 |
 [expr (1000 / 60 ) * $f1]
 |
 960

 It must be 1000, but it isn't...

 Am I wrong? Why I get 960??

 Best,
 Jong



 ___
 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] cheapest production-scale pd-anywhere platform?

2012-05-18 Thread Charles Henry
On Thu, May 17, 2012 at 9:43 PM, Hans-Christoph Steiner h...@at.or.at wrote:

 Its going to be hard to beat the price of the Raspbery π.  Why not use it?

 .hc

The biggest problem for the near future is availability.  One vendor
sent an email to say the R-Pi would be shipping soon!  and by soon!
it meant 2 months away.

At this point, if you want 100 of them, that's about 1% of their
supply, and I'd expect they're swamped with orders for months to come.
 It's going to be hard to get very many of them.

My guess: It should work well for the price and specs as long as you
can wait 6 or so months.

Chuck

 On May 15, 2012, at 8:19 PM, Tedb0t wrote:

 Hi all,

 I'm researching a possible project that would embed a pd patch into a 
 product.  It would basically be a couple of knobs and a 16-bit audio output.

 Anyone have any idea what's the cheapest way to do this that's 
 production-scale?  i.e. for hundreds of units, not hacked ipods, etc..  I'm 
 looking for something on the order of $25, and ironically, Raspberry π is 
 way, WAY overkill.

 Thanks in advance for any clues :)
 --t3db0t

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


Re: [PD] change base of log

2012-05-04 Thread Charles Henry
Divide the result by ln(10)=2.30258509
I'd put this into an abstraction named log10.pd for example:
[inlet]
|
[log]
|
[/ 2.302585]
|
[outlet]

Chuck

On Fri, May 4, 2012 at 2:30 PM, Roberto Aramburu aramburum...@gmail.com wrote:
 Hello list, ive noticed that the object [log] only outputs the natural
 logarithm and im wondering if there is an object in Pd that can give
 me log base 10.
 Thanks in advance.

 ___
 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] [Pd] Compile external with C++ compiler?

2012-04-26 Thread Charles Henry
Hi guys

The part that I don't get is how to call C functions from C++? I don't
think I've even tried that before.  Have you?
Joe: I've built externals that just call C++ functions that I declared
with extern C or wrote wrapper functions to export a C-callable
public interface to C++ functions.  Best suggestion I've got is to
identify which functions you've got are going to be public and which
ones are private and plan out how you're going to declare them.

Chuck

On 4/26/12, Ed Kelly morph_2...@yahoo.co.uk wrote:
 Hi Joe,

 Have you thought of using ofxPd?

 I'm involved in the creation of an app for the iPhone right now, and we're
 using ofxPd from Dan Wilcox:
 https://github.com/danomatika/ofxPd
 Since Openframeworks is a bunch of C++ wrappers for various libraries, ofxPd
 adds Pd to the libraries that you can work with in C++.
 Then you can call the setup function within the xcode build, and your object
 will work in libpd (i.e. ofxPd) in the app environment.
 Bear in mind that Apple do not like GnuGPL licensed stuff, so I've created
 BSD licensed versions of some of my own Pd externals for this project.


 And the app works. We're in the final stages now, so I'll post to the list
 when it's complete!
 Best,
 Ed


 Gemnotes-0.1alpha: Live music notation for Pure Data
 http://sharktracks.co.uk/


 
  From: Joe White white.j...@gmail.com
 To: pd-list pd-list@iem.at
 Sent: Thursday, 26 April 2012, 16:51
 Subject: [PD] [Pd] Compile external with C++ compiler?


 Hi all,

 Thought I might as well ask this here because you guys know everything :)

 I'm writing an external to be built into an iOS app that's running Pd. The
 catch is I need to interface with a C++ library within the external.

 The external builds and runs fine if I'm using the C compiler (in Xcode) but
 I can't access the C++ library functions. If I switch it to compile in C++
 (by changing the objective-c file from .m to .mm) then I can use the C++
 library functions but it complains that it can't find 'class_addmethod'

   'No matching function for call to
 'class_addmethod'

 I've tried declaring the setup function as C code like Katja explains on her
 site:
   extern C void external_tilde_setup(void) { }
 But that still didn't seem to work. I was also going through the list and
 found this thread but I'm not sure if it's the right approach. Plus I'm more
 of an audio guy than programmer :)

 Any ideas would be much appreciated.

 Thanks,
 Joe
 --
 Follow me on Twitter @diplojocus

 ___
 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] why does PD round numbers? (in tables, in messageboxes, etc)

2012-04-10 Thread Charles Henry
On Tue, Apr 10, 2012 at 7:32 AM, IOhannes m zmölnig zmoel...@iem.at wrote:
 On 04/10/12 10:33, katja wrote:

 I mean to say that switching to any format other than decimal ASCII
 would make it impossible for Pd to interpret patch files using the
 current format.


 why?

I think that using any non-decimal ascii format would be bad for
backwards compatibility.  You'd need to have a function that would be
able to distinguish the decimal numbers from old patches from the
newer format.  For example, 9000 is both a decimal and hexadecimal
number--so then, you'd need identifiers to know which method to use.

It's not a very clear-cut tradeoff, to adopt anything other than
longer decimal ascii numbers.  Things could get very complicated
trying to keep multiple formats alive--or they could be simple and
just use a lot more characters.

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


Re: [PD] [OT] sf/bay area anyone?

2012-04-08 Thread Charles Henry
I will be out to see the conference also.  I noticed you and Peter
will be the first presenters--I will look forward to it.

Chuck

On 4/8/12, IOhannes m zmölnig zmoel...@iem.at wrote:
 since i spend a few days in san francisco (for visiting the linux audio
 conference [1] in stanford) i wanted to ask whether there are some Pders
 round here who would like to go for a beer...

 fgmasdr
 IOhannes



 [1] http://lac.linuxaudio.org/2012/

 ___
 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] [PD-announce] Pd 0.43-2 released (windows startup bug fix)

2012-03-26 Thread Charles Henry
On 3/25/12, Jonathan Wilkes jancs...@yahoo.com wrote:
 - Original Message -

 From: Miller Puckette m...@ucsd.edu
 To: pd-annou...@iem.at
 Cc:
 Sent: Sunday, March 25, 2012 1:52 PM
 Subject: [PD] [PD-announce] Pd 0.43-2 released (windows startup bug fix)

 Hi all -

 Only Microsoft Windows users should care... but 0.43-2 is now finalized
 (essentialy the same as the test1 version), which fixes the missing
 TK
 library problem on Microsoft Windows.

 I think things are reasonably stable now and I can turn to some
 long-put-off
 projects.  Foremost is a unification of message boxes with textfile
 functionality, and making a matching message type fr data structures
 (which will join float, symbol and array.)

 I'm afraid whatever message type you come up with for data structures will
 be
 severely limited unless you solve the problem of locality wrt data
 structures.
 Currently, one can choose either a) a modular approach with [struct $0-name]
 which can be used inside abstractions, or b) state-savable [struct name]
 which
 is global and thus requires part of the user's brain power to remember _not_
 to load more than one instance of the patch that contains the template.

An idea for workaround:  create your abstraction with one of each--a
local $0-struct and a global-struct.  When loading the patch, write
the data from global-struct into $0-struct, and if you intend to save
the data, write the data back into global-struct before saving the
patch.

or maybe you'd need to make two abstractions--one global with one
instance for saved data, and many instances of your local version.
This starts to sound bad...

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


Re: [PD] Some more float weirdness/fun

2012-03-10 Thread Charles Henry
On 3/10/12, Lorenzo Sutton lorenzofsut...@gmail.com wrote:
 On 09/03/12 19:18, Quim Llimona wrote:
 It's well-known that floats can't be treated the same way as integers...
 but since PD is aimed at non-engineers and non-scientists I think it
 would be a good idea to implement the good comparison algorithms (i.e.
 checking against a threshold, etc) inside [==] and so, just to make
 patching easier. Maybe it's already supposed to behave this way...

 No, no...I don't agree (and hope initiating the thread didn't suggest
 this idea). [==] should be what it says exact comparison. Actually in
 the patch I was making it would have been simple to put in a [=]
 instead which basically *is* a threshold... I just thought it would be
 nice to point out some float fun given all the discussions :)

 Lorenzo.

How about an abstraction that uses = against 2xepsilon*|input|?  That
would be a reliable automatic way to ignore single-bit rounding
errors.  I'm just using this page as a reference:
http://en.wikipedia.org/wiki/Machine_epsilon
There's two inputs, so I'd choose the largest of them and use that in
calculating the threshold.  The test patch below just takes a vertical
slider from -1e-7 to 1e-7 and adds the value to 0.999 to be compared
against.  This patch needs a little improvement--it seems to be
obeying a threshold which is a little closer to 8.9e-8 (which is
greater than the 32-bit machine epsilon so it still does what is
wanted with a little extra room)

nearly_equal.pd

#N canvas 86 491 682 612 10;
#X obj 91 39 inlet;
#X obj 137 39 inlet;
#X obj 182 39 \$1;
#X obj 216 39 loadbang;
#X obj 94 140 abs;
#X obj 98 345 =;
#X obj 139 110 abs;
#X obj 185 110 abs;
#X obj 93 74 t f f;
#X obj 138 74 t f f;
#X obj 140 212 =;
#X obj 189 209 ;
#X obj 139 145 f;
#X obj 186 144 t b f;
#X obj 202 244 *;
#X obj 140 172 t f f;
#X obj 140 244 *;
#X obj 94 108 -;
#X obj 140 276 +;
#X obj 140 308 * 1.192e-07;
#X obj 97 391 outlet;
#X connect 0 0 8 0;
#X connect 1 0 9 0;
#X connect 2 0 17 1;
#X connect 3 0 2 0;
#X connect 4 0 5 0;
#X connect 5 0 20 0;
#X connect 6 0 12 0;
#X connect 7 0 13 0;
#X connect 8 0 17 0;
#X connect 8 1 6 0;
#X connect 9 0 17 1;
#X connect 9 1 7 0;
#X connect 10 0 16 0;
#X connect 11 0 14 0;
#X connect 12 0 15 0;
#X connect 13 0 12 0;
#X connect 13 1 10 1;
#X connect 13 1 11 1;
#X connect 13 1 14 1;
#X connect 14 0 18 1;
#X connect 15 0 10 0;
#X connect 15 1 11 0;
#X connect 15 1 16 1;
#X connect 16 0 18 0;
#X connect 17 0 4 0;
#X connect 18 0 19 0;
#X connect 19 0 5 1;


nearly_equal_test.pd

#N canvas 0 25 264 184 10;
#X obj 118 79 nearly_equal 0.999;
#X obj 38 27 vsl 15 128 -1e-07 1e-07 0 0 empty empty empty 0 -9 0 10
-262144 -1 -1 0 1;
#X floatatom 115 135 5 0 0 0 - - -;
#X obj 116 18 + 0.999;
#X connect 0 0 2 0;
#X connect 1 0 3 0;
#X connect 3 0 0 0;

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


Re: [PD] list etiquette

2012-03-10 Thread Charles Henry
On 3/10/12, Dafydd Hughes dafyd...@gmail.com wrote:
 And there are pretty widely accepted norms about language (I'm talking
 about agressive langage and expletives here) on the list, too, even if
 they're not written down, correct?

fuck no!

Pd expands boundaries of what is music and art.  Why expect any
boundaries on the list?  The same norm you're expecting might not be
shared by other people who use the list too.

I don't care for some things said on the list, but all you can really
do is try to convince other people to see things your way.  People
just use etiquette on the list because they want to.

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


Re: [PD] Some more float weirdness/fun

2012-03-09 Thread Charles Henry
 But 0.1 still cannot be represented exactly by float64, can it?


 For any floatX unless X is infinity the number of floats that are not
 exactly represented is always infinite.

 Martin

There is a countably infinite number of rational numbers and a
uncountably infinite number of irrational numbers that cannot be
represented.

We could also debate over whether infinity is exactly represented.
When some math operation overflows (exceeds the range of floats), the
result assigned is inf.

That's not the definition of infinity either: Take the set of real
numbers R and the ordering operation , then add an additional point
infinity such that for any x belonging to R, x  infinity.

So, the inf in the float definition only represents infinity defined
relative to the finitely countable set of numbers that can be
represented as floats, not the actual infinity as represented in your
head :)

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


Re: [PD] Is there a way to block/filter Mathieu ?

2012-03-09 Thread Charles Henry
On 3/9/12, mahatGma rabintrah mahat...@gmail.com wrote:
 I would love to receive daily digest without Mathieu's unnecessary /
 arrogant  comments. Is there a way to filter his posts?

Now, if you'd just explain that you're quitting smoking, then that
comment would be disregarded based on recent posts.

The digest sucks anyhow--what you have is a technical problem

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


Re: [PD] six sound outputs with sound blaster X-Fi Surround 5.1

2012-03-05 Thread Charles Henry
Sorry--I have no good news for you... and perhaps this knowledge only
adds to your injury.  The ASIC in your sound card has many, many times
the potential that it actually gets used for--up to 10,000 MIPS on a
quad-core DSP and up to 128 channels.

http://www.creative.com/oem/products/chips/CA20K2.asp

So, should it surprise you that you can't use 6 separate channels with
your sound card now that you know what a colossal waste of hardware it
is to put the ca20k2 chip in a 5.1 sound card?

Chuck
(edited for public consumptionpublic)

On Mon, Mar 5, 2012 at 2:10 PM, altern alte...@gmail.com wrote:
 hi

 I am trying to get this sound blaster X-Fi Surround 5.1 sound card to
 work on windows with 6 outputs

 http://www.google.com/search?q=Creative+Soundblaster+X-Fi+Surround+5.1hl=euclient=ubuntuhs=Mvzchannel=fsprmd=imvnstbm=ischtbo=usource=univsa=Xei=NxxVT_XdNYXF0QXTwvnXCwved=0CB4QsAQbiw=1024bih=699

 The idea is to get a

 adc~ 1 2 3 4 5 6

 and route different sounds to each of the outputs that connects to
 self powered mono speakers.

 But I am going nuts. The card only works with 2 outputs under ASIO.
 And with the default configuration if I set 6 outputs it does some
 kind of 5.1 mixing. I have tried to disable all 5.1 stuff under
 control panel but no way...

 anyone? thanks

 enrike

 ___
 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] six sound outputs with sound blaster X-Fi Surround 5.1

2012-03-05 Thread Charles Henry
On Mon, Mar 5, 2012 at 3:42 PM, Mathieu Bouchard ma...@artengine.ca wrote:
 Le 2012-03-05 à 15:03:00, Charles Henry a écrit :


 Sorry--I have no good news for you... and perhaps this knowledge only
 adds to your injury.  The ASIC in your sound card has many, many times
 the potential that it actually gets used for--up to 10,000 MIPS on a
 quad-core DSP and up to 128 channels.


 It's just normal that increasingly more powerful technology becomes generic
 so that it can be used in many more products so that it can sell more so
 that it can pay for its own development and cut down on the production
 costs... eventually we put supercomputers inside chequebook-sized boxes and
 call them « telephones ».

I believe the 20k2 chip was rolled out in 2007.  By contrast, my 2009
HTC Hero had less power than that, but that's apples v. oranges.

The problem I see with this chip is just that:  it has so much
capability that it could be used for a wide range of products, but
then the designers program it and build salable hardware around just
one sort of surround sound product.  The free market has clearly
failed...

 The best you can do is write a distributed-computing virus that detects any
 such ASIC and hook it on some math problem such as trying to crack
 exterrestrial prime numbers and stuff... ;)

Yes, something USEFUL :)

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


Re: [PD] six sound outputs with sound blaster X-Fi Surround 5.1

2012-03-05 Thread Charles Henry
On Mon, Mar 5, 2012 at 4:35 PM, altern alte...@gmail.com wrote:

 I see. so basically I could use this sound card to seach for life
 across the universe but I cannot separate the ** output channels.
 great. not sure I have time to get another card on time. grrr...

 thanks!

I'm sorry if I discouraged you from looking further -- I suspect the
hardware is doing the mixing in a way that's not under software
control, but I don't know for sure that's the case.

I have a strong feeling about it, since Creative is restricting what
the card is capable of.  I suspect it's doing it's 5.1 mixing
operations using the DSP.

It could be that some obscure driver option will bypass the DSP and
take 6 channels from software.

Good luck!

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


Re: [PD] getting the first and last element of an array using tabread4

2012-03-02 Thread Charles Henry
On Fri, Mar 2, 2012 at 3:41 AM, Aykut Caglayan aykut_cagla...@yahoo.com wrote:
 What is the reason for not being able to get the accurate value of the first
 and last element of an array using tabread4?

The array used by tabread4~ expects to have 1 sample copied from the
last element of the array to the beginning, and 2 samples from the
beginning copied to the end of the array.  You get this automatically
when using the sinesum/cosinesum array creation methods for example.
Others?

For a given fractional index x on [n, n+1)  tabread4~ takes four
points f[n-1], f[n], f[n+1], f[n+2].

So, if you start with an N length array, you want to have it be N+3
long to hold the extra points and index it between 1 and N.

Chuck

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


Re: [PD] dsp graph question

2012-03-01 Thread Charles Henry
On Thu, Mar 1, 2012 at 2:02 PM, Jonathan Wilkes jancs...@yahoo.com wrote:
 Not sure if this makes sense, but here goes:

 Can a Pd dsp graph be nested inside a Pd dsp graph?

This occurs whenever you make a sub-canvas.  For each canvas, there is
a new dspcontext struct created.  The canvas-dsp graph process
creates a nested dsp graph, delimited from its parent by block
prolog/epilog (when re-blocked from parent) and inlet/outlet
prolog/epilog code.

It may be possible to think of just any sub-graph as being a nested
dsp graph, for that matter.  But yes, I think it's clear that nested
dsp graphs can be programmed and used.

 If this were the case, then would it be possible created/destroy any of
 these scalars
 at will and only have to rebuild this nested dsp graph that is associated
 with it's [struct]?

Not possible yet!  Every time you add/delete a connection (and some
other conditions I'm not sure of), the dsp stops, rebuilds its entire
graph, and re-starts.  Just set ugen_loud to 1 and re-compile--you
will be greeted with a representation of Pd building your dsp graph
every time you make changes to it.

Comments in d_ugen.c have said--for a long time--that this is not a
preferred way of doing things.  It's just the way things are done now.

 I'm obviously still very sketchy on signal graph compilation, so links to
 any documentation or
 resources are appreciated!

 -Jonathan

I wouldn't want you to have to learn all the hard lessons about how Pd
does it's internal management of dsp chains and the like, but--if it's
interesting to you and you might want to become a developer, I
recommend reading d_ugen.c, g_canvas.c, g_io.c, and d_resample.c.
It's all in there.

Feel free to ask any other questions.

Chuck

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


Re: [PD] Pd on ARM devices

2012-02-29 Thread Charles Henry
On Wed, Feb 29, 2012 at 10:06 AM, Pierre Massat pimas...@gmail.com wrote:
 Dear List,

 I'm planning to buy a Raspberry Pi sometime soon, and I'd like to know the
 implications of the ARM11 chip on the use of Pd.
 I know nothing about the differences in architectures, so i'd like to know :
 - why an ARM chip would be a problem for compiling, installing and running
 Pd,

It's not a problem--Pd compiles and runs on the arm architecture.
Android devices for example have arm processors.  Debian pure data
packages are available for arm.

compilation-wise... there's some gcc options that you use to specify
arm architectures.  I'd say nothing to it, but you'll most likely
have to play a bit to find the differences.

 - if there exists another option that's up to date (Pda seems a bit old),
 - if Libpd could be used instead (given that i only want to run Pd patches
 on the Raspberry Pi, I don't need to edit anything on it).

Don't you want to try the graphics processor on the R. Pi?  At the
very least, it should be good enough for tcl/tk.


 Thank you in advance!

 Cheers!

 Pierre.

 ___
 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] Pd on ARM devices

2012-02-29 Thread Charles Henry
On Wed, Feb 29, 2012 at 12:39 PM, Pierre Massat pimas...@gmail.com wrote:


 2012/2/29 Charles Henry czhe...@gmail.com

 On Wed, Feb 29, 2012 at 10:06 AM, Pierre Massat pimas...@gmail.com
 wrote:
  Dear List,
 
  I'm planning to buy a Raspberry Pi sometime soon, and I'd like to know
  the
  implications of the ARM11 chip on the use of Pd.
  I know nothing about the differences in architectures, so i'd like to
  know :
  - why an ARM chip would be a problem for compiling, installing and
  running
  Pd,

 It's not a problem--Pd compiles and runs on the arm architecture.
 Android devices for example have arm processors.  Debian pure data
 packages are available for arm.


 That's good news! I suppose Debian packages can't be installed in Fedora,
 can they?

No--planet CCRMA has some i386 pd packages, but not arm.  If you want
to run Fedora and Pd, you will need to compile it.If only you knew
the power of the dark side, and by dark side, I mean Debian.

If you didn't get your pre-order in time for this batch, you'll have
to wait a month, I bet.  By the time I got to work this morning, it
was too late.

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


Re: [PD] constants

2012-02-16 Thread Charles Henry
 On 2012-02-15 16:11, Jonathan Wilkes wrote:

 Let's go back:

 Instead of time units, let's take the incoming single-selector pi and
 replace it with
 the float value of pi for any object that doesn't have a pi method or an
 anything method (but does have a float method).  Furthermore, if a class
 defines a
 float argument but the argument provided isn't a float, then check first
 if what it received
 was A_SYMBOL 'pi' and if so replace with the float value of pi.

 Is what I wrote above possible to do without causing huge problems to
 performance or
 creating ambiguities?  Is it something people would look at as a feature,
 or a nuisance that
 makes it harder to learn Pd?  If the answer is that something like this
 constant expansion
 is a bad idea then there's no point discussing macro expansion for time
 units.

 -Jonathan

You could easily add a creator function for [pi] which becomes a float
with initial value 3.14--and add a method to [f] for the message [ pi
(

Still a little cumbersome to use because this doesn't get replacement
in messages, arguments or anywhere else--but consistent with patching
styles for symbols/floats.

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


Re: [PD] OT: faster than Fourier transform

2012-02-03 Thread Charles Henry
On Thu, Feb 2, 2012 at 3:07 PM, Mathieu Bouchard ma...@artengine.ca wrote:
 Le 2012-02-02 à 02:36:00, Ed Kelly a écrit :


 Still the problem with any window-based FFT is that we have to get enough
 points (e.g. 512, 1024) before we can do the analysis, so there is always a
 delay (44100/1024 = ~43ms) between live input and output (latency).


 Heisenberg's Uncertainty Principle (in its acoustic version) is a hard
 theoretical limit, meaning it can't possibly be violated.

As I understand it, it's just a sheer mathematical fact expressing the
trade-off between the std deviation of a distribution in the time
domain and the std deviation of the fourier transform of that
distribution.

But then you apply it to the Shrodinger equation (a differential
equation involving position and velocity) and you get the most famous
corollary in quantum.

I agree that it's a hard limit, but it's really just a math problem to
begin with :)

 All you can do is
 separate the analysis of frequencies so that you get frequent results for
 treble vs less frequent results for bass. This comes at the expense of
 having to customise, complicate and/or slow down FFT to make it do what you
 want.


 Much more interesting is the sliding phase vocoder (Russell Bradford,
 Richard Dobson, and John ffitch, 2005) where the FFT is adjusted in each
 sample rather than each frame, and the latency is significantly reduced.


 What's the speed of the sliding DFT ?

I can think of an O(n) algorithm for it (per sample).  I'd be
surprised if there's anything better.  You'd still have to do an FFT
to begin with, and after shifting by m samples, you'd be in O(m*n)
territory.

Assume you've got a signal s on [0,N-1] and you have already computed
its DFT plus this vector F1={e^(2*pi*i* k/N}, k=0,...,N-1

The next DFT to calculate is on [1,N].  First subtract out the
contribution of s(0)--this is easy because the DFT of {s(0),0,0,..} is
{s(0),s(0),s(0),...}

Next, the values in the resulting vector are multiplied by F1.  This
has the effect of shifting the time domain signal to the left by 1
sample.

Then, add in the effect of the new sample, F1*s(n).

I see some ways those steps could be made simpler.  Lump the 1st and
3rd steps together and just add s(n)-s(0) to all the DFT values, then
multiply once by F1 (performing a circular shift in the time domain).
On the next iteration, use s(n+1)-s(1).  So, the total cost is a
buffer of N samples, a complex vector of N DFT values (F1)---N+1
additions/subtractions, and N complex multiply operations (each is 4
multiply and 2 additions/subtractions), per sample.

There might be some constants to shake out depending which DFT formula
you decide to use.  The sign convention on the DFT is arbitrary, so I
often get mixed up (F1 could be e^(-2*pi*i*k/N){k=0,...,N-1} if I'm
wrong).


 Note that they call it «DFT», and not «FFT», and that's presumably because
 it doesn't have to do much with FFT... whereas DFT is a more generic term
 for whatever computes harmonics on blocks of discrete signals.

 The access to the sliding DFT article is reserved to IEEE members...

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


Re: [PD] Resonant filter using cpole~ czero~

2012-02-02 Thread Charles Henry
On 2/2/12, Patrice Colet colet.patr...@free.fr wrote:

 De: Ed Kelly morph_2...@yahoo.co.uk


 Hi all,

 Here is my first attempt at making a resonant lowpass filter using
 cpole~ and czero~ objects. It's the first version I've made which
 actually sounds halfway towards what I want to achieve, which is a
 decent diode-ladder or transistor-ladder filter emulation. I want to
 make this using only vanilla objects, particularly rpole~, cpole~
 etc. so that they can be ultra-portable and signal-controlled. Also,
 http://www.timstinchcombe.co.uk/index.php?pge=poles#diode


 Does anyone else have any ideas, or patches we can share?


 Ed

 Gemnotes-0.1alpha: Live music notation for Pure Data
 http://sharktracks.co.uk/


 hello,

  using biquad~ gives very nice results for resonant filtering, ggee audio
 filters show how it sounds. It should be possible to use vanilla's audio
 math objects only for the biquad mathematical functions instead of an
 external.


Hi Ed, Patrice

This patch ds~ (damped sines) uses the biquad.  It works as a resonant
filter--I like to feed it impulses.  The arguments to the patch are
frequency and the number of ms to decay 10 dB ( I think).  Copied
below.
Chuck

ds~.pd
-
#N canvas 0 0 337 561 10;
#X obj 12 384 biquad~;
#X obj 57 351 pack f f f f f;
#X obj 145 188 exp;
#X obj 156 98 * 44.1;
#X text 209 96 ms to samples;
#X obj 156 119 t b f;
#X obj 145 154 / 44100;
#X msg 91 118 -2.30259;
#X obj 145 219 t f f;
#X obj 17 148 * 6.28319;
#X obj 63 208 sin;
#X obj 26 210 cos;
#X obj 60 257 * 2;
#X obj 45 290 * 1;
#X obj 92 256 t f f;
#X obj 92 279 * 1;
#X obj 82 313 * -1;
#X msg 132 302 0;
#X obj 166 303 * 1;
#X msg 199 302 0;
#X obj 32 119 / 44100;
#X obj 34 180 t f f;
#X text 176 189 a;
#X text 13 229 cos and sin of b;
#X obj 32 78 unpack f f;
#X obj 56 460 outlet~;
#X obj 11 31 inlet~;
#X obj 73 32 inlet;
#X obj 158 8 loadbang;
#X obj 158 53 \$1;
#X obj 188 53 \$2;
#X obj 158 30 t b b;
#X obj 124 75 pack 100 10;
#X connect 0 0 25 0;
#X connect 1 0 0 0;
#X connect 2 0 8 0;
#X connect 3 0 5 0;
#X connect 5 0 7 0;
#X connect 5 1 6 1;
#X connect 6 0 2 0;
#X connect 7 0 6 0;
#X connect 8 0 12 0;
#X connect 8 1 14 0;
#X connect 8 1 17 0;
#X connect 8 1 19 0;
#X connect 8 1 18 1;
#X connect 9 0 21 0;
#X connect 10 0 18 0;
#X connect 11 0 13 0;
#X connect 12 0 13 1;
#X connect 13 0 1 0;
#X connect 14 0 15 0;
#X connect 14 1 15 1;
#X connect 15 0 16 0;
#X connect 16 0 1 1;
#X connect 17 0 1 2;
#X connect 18 0 1 3;
#X connect 19 0 1 4;
#X connect 20 0 9 0;
#X connect 21 0 11 0;
#X connect 21 1 10 0;
#X connect 24 0 20 0;
#X connect 24 1 3 0;
#X connect 26 0 0 0;
#X connect 27 0 24 0;
#X connect 28 0 31 0;
#X connect 29 0 32 0;
#X connect 30 0 32 1;
#X connect 31 0 29 0;
#X connect 31 1 30 0;
#X connect 32 0 24 0;

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


Re: [PD] OT: faster than Fourier transform

2012-01-25 Thread Charles Henry
On Wed, Jan 25, 2012 at 4:03 PM, Mathieu Bouchard ma...@artengine.ca wrote:
 Le 2012-01-20 à 23:55:00, Andy Farnell a écrit :


 Considering the paper is unpublished and sparse decomposition is a pretty
 heavy topic I thought that is a really nice bit of science journalism by
 Larry Hardesty. Since periodic music signals probably fit the bill quite
 well it's good news for our kind of work.


 Does it have better upper bounds ?

 If not, it doesn't change much for realtime.

 E.g. if I feed something somewhat like a white noise to this FFT, what
 exactly will it try skipping ? Every harmonic will be fairly nonzero.

I've wondered about that too-from a perceptual point of view.  There's
not much differentiation among noise signals.  They all mostly sound
the same

Even though there's a very large number of dimensions for variation,
they must have a sparse representation somewhere (in the brains...
brains...)

but the FFT?  no way...

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


Re: [PD] a phase vocoder pitch shifter harmonizer in real time

2012-01-10 Thread Charles Henry
On 1/10/12, Alexandre Torres Porres por...@gmail.com wrote:
 sorry, what dont you get?

I guess the shifter+mixer makes sense for the harmonizer--I just don't
see why it's running when I just want to hear the pitch shifting
effect by itself.  Is that just a mistake?

This is unrelated, but when I use [openpanel] under linux, it only
lets me select *.pd files.  I guess I'll mess with readsf~ by passing
messages so I can try it out with some sound files.


 you're supposed to first hear the beatings and then the shift up anyway.

 well, let me try with some oscilattors myself, that should be fun

 see ya


 2012/1/9 Charles Henry czhe...@gmail.com

 Hey Alex

 I'm just trying this out.  I didn't have a sound file I particularly
 wanted to try, so I just plugged in an osc~, and what I found on the
 output:  a mixture of the original tone with the shifted one.

 So, the shifted tone was clearly audible, but as I shifted the
 frequency, I could hear first the beating of the tones then two tones.

 And upon reading into the patch, that's clearly what you're doing in a
 subpatch, but I don't get why?

 Chuck

 On 1/9/12, Alexandre Torres Porres por...@gmail.com wrote:
  Hi Folks,
 
  working with these phase vocoder stuff, I thought I'd try and do a
  simple
  shifter/harmonizer with it once and for all. The phase vocoder shifter I
  found in pdmtl doesn't work as a harmonizer, and the latency was pretty
  high and not constant, so I did this. It's all as a Vanila abstraction!
 
  I have 2 short buffers (arrays) and do crossfade between them, I got
  some
  phase issues trying out and building it, but they now seem reasonably
 fine.
 
  I just did this, so I should work more on it to make it more stable and
  robust. I'm sure there are some bugs around, and it's still very dirty
 and
  needs code cleaning. Maybe I should try and implement it with delay
  lines
  as in pdmtl, hmmm, I guess it'd be better, right? Hmm... Later on when I
  have the time...
 
  Anyway, this goes back to the Pd Shifting thread I started here a while
  ago. I really like the quality of the phase vocoder. Somehow I don't get
  interested so much on other techniques and such. Yes, I assume there are
  some advantages out there, so what exactly would I be missing?
 
  Well, Check this thing I did out, see what you think, let's talk some
 more
  about pitch shifting
 
  get it here: http://sites.google.com/site/porres/pvoc-shifter.zip
 
  I wish to officially release it along with some other tools I'm building
  for my PhD, soon to be over...
 
  by the way, I see this object is finally available
  http://www.katjaas.nl/pitchshift/pitchshift.html need to try it out.
 
  cheers alex
 



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


Re: [PD] a phase vocoder pitch shifter harmonizer in real time

2012-01-09 Thread Charles Henry
Hey Alex

I'm just trying this out.  I didn't have a sound file I particularly
wanted to try, so I just plugged in an osc~, and what I found on the
output:  a mixture of the original tone with the shifted one.

So, the shifted tone was clearly audible, but as I shifted the
frequency, I could hear first the beating of the tones then two tones.

And upon reading into the patch, that's clearly what you're doing in a
subpatch, but I don't get why?

Chuck

On 1/9/12, Alexandre Torres Porres por...@gmail.com wrote:
 Hi Folks,

 working with these phase vocoder stuff, I thought I'd try and do a simple
 shifter/harmonizer with it once and for all. The phase vocoder shifter I
 found in pdmtl doesn't work as a harmonizer, and the latency was pretty
 high and not constant, so I did this. It's all as a Vanila abstraction!

 I have 2 short buffers (arrays) and do crossfade between them, I got some
 phase issues trying out and building it, but they now seem reasonably fine.

 I just did this, so I should work more on it to make it more stable and
 robust. I'm sure there are some bugs around, and it's still very dirty and
 needs code cleaning. Maybe I should try and implement it with delay lines
 as in pdmtl, hmmm, I guess it'd be better, right? Hmm... Later on when I
 have the time...

 Anyway, this goes back to the Pd Shifting thread I started here a while
 ago. I really like the quality of the phase vocoder. Somehow I don't get
 interested so much on other techniques and such. Yes, I assume there are
 some advantages out there, so what exactly would I be missing?

 Well, Check this thing I did out, see what you think, let's talk some more
 about pitch shifting

 get it here: http://sites.google.com/site/porres/pvoc-shifter.zip

 I wish to officially release it along with some other tools I'm building
 for my PhD, soon to be over...

 by the way, I see this object is finally available
 http://www.katjaas.nl/pitchshift/pitchshift.html need to try it out.

 cheers alex


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


Re: [PD] ring buffer with an array

2012-01-08 Thread Charles Henry
On 1/8/12, Alexandre Torres Porres por...@gmail.com wrote:
 Hi folks, I'm trying to implement a ring buffer with a table for a sampler
 patch based on an array.

 But I'm having the hardest time cause it always clicks when I start
 writing back on the beginning of the array.

 I made this simple test attached below using metro. But I'm figuring the
 flaw is because is not trivial at all to keep control data in sync with
 audio blocks

 any hints or ideas?

I think you might be better able to keep the data in sync with a
vline~/metro/tabread4~ construction, because it preserves the timing
information in the messages.  Instead of vline~/metro, you could also
use phasor~ which makes the looping implicit.

To work around clicks, crossfading is what I hear about the most on
list.  I'm not sure how it's implemented.

When I think about coding in C, I always want to have N contiguous
samples to avoid having to check against the end of the array.  To do
that, you make the buffer 2*N-1 in length.  Then, on each write, you
write to two locations (0,N), (1,N+1), (2,N+2)...  That ensures there
is always N samples in a row to read from, and you just move the read
pointer by 1 each time you get a vector of N samples long. (my
personal method...nothing more).

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


Re: [PD] [tabwrite4~], is it possible at all?

2012-01-08 Thread Charles Henry
On 1/8/12, Miller Puckette m...@ucsd.edu wrote:
 Hi all --

 Peter Brinkmann and Michael Goggins did some related work recently:

 http://nettoyeur.noisepages.com/2010/10/doppler-effects-without-equations/

 but back in the dark ages Barry Vercoe made a Music 11 ugen called 'pipadv'
 that added a signal into a delay line assuming the write location was
 continuous and could be stably differentiated (so that for each point of the
 delay line you could associate a fractional pposition in the incoming
 signal.
 He then interpolated to get fractional-indexed values of the incoming signal
 to correspond with successive sample locations in the delay line, turning
 the problem around backward.)

 I've thought about this for a few hours but so far my only conclusion is
 that
 it's very interesting :)

 Miller

The problems that I see are with orthogonality and reconstruction.  A
sample really just represents a sync that's centered on a point in
time (in the easy case).  Integer numbers of samples are orthogonal...
but the fractionally-centered sample is not orthogonal to samples at
all the integer indexes.

Then, the reconstruction problem follows from it.  When you want to
read a value from a table, does it exactly retrieve the value that was
recorded there?  It seems like the interpolator needs to be modified
continuously with the spacing of adjacent samples.

All I know right now is, I can't spend my whole vacation on a math
problem, even if it's good :)

Chuck

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


Re: [PD] no pd?? WTF ????

2012-01-06 Thread Charles Henry
2012/1/6 Jonathan Wilkes jancs...@yahoo.com:
 - Original Message -

 From: alex a...@lurk.org
 To: András Murányi muran...@gmail.com
 Cc: Pd - list pd-list@iem.at
 Sent: Tuesday, January 3, 2012 7:12 PM
 Subject: Re: [PD] no pd?? WTF 

 Ha, I got a different reply earlier:

 We decied to avoid the use of Pd and SuperCollider
 for internal and technical resons and unfortunately we cannot change our 
 policy.
 So please, if you are interested in the call, please send a more
 pertinent question.

 I wonder what software would be good for quickly prototyping a solution to 
 whatever technical problem prevents the use of Pd and Supercollider in a 
 realtime DSP performance...

lack of tech support phone numbers?

Maybe they think they won't be able to set up the patches for their
review process and so opted only to accept patches for performances
they think they are confidently able to.  Otherwise, the technical
issues are between their ears--or in IT support speak, between the
chair and keyboard (BTCK).

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


Re: [PD] no pd?? WTF ????

2012-01-06 Thread Charles Henry
On Fri, Jan 6, 2012 at 5:02 PM, Patrice Colet colet.patr...@free.fr wrote:

 De: alex a...@lurk.org
 Envoyé: Mercredi 4 Janvier 2012 01:12:14

 Ha, I got a different reply earlier:

 We decied to avoid the use of Pd and SuperCollider
 for internal and technical resons and unfortunately we cannot change
 our policy.
 So please, if you are interested in the call, please send a more
 pertinent question.

 So apparently there are reasons but they forgot what they were?


 They spent all the budget to get softwares, now there isn't enough to give 
 out free beer... ^^

Lousy excuse.  Please submit patches for music for suckers, and I
will gladly provide all the free beer I'm able to make XD

I'm only serious about the beer.  My next brew will be an ESB!

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


Re: [PD] no pd??

2012-01-04 Thread Charles Henry
On 1/4/12, Julian Brooks jbee...@gmail.com wrote:
 From Sanlist (sonic arts network)

 alex a...@slab.org
 18:42 (15 hours ago)

 to *coloursofnoise*, Sanlist
 So you want genuine, respectable composers to produce new pieces for a
 specific situation, for an open competition with apparently no
 extrinsic reward, using expensive software (with excellent free
 alternatives explicitly excluded with no explanation)?  Great satire!

I'm usually in favor of sarcasm in order to cope with the world.  You
don't like it, fine!  Make your own call for works:

Music for suckers

Because suckers pay for software or aren't talented enough to write
what they want to use.

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


Re: [PD] noise floor: median in audio signals, for peak extraction

2011-12-22 Thread Charles Henry
On Wed, Dec 21, 2011 at 11:15 AM, Charles Henry czhe...@gmail.com wrote:
 1.  How to handle the endpoints of the signal blocks?

I've thought this over, and concluded that it really doesn't matter,
for the case of the magnitude of power spectral density.

Any high or low values of the spectrum at DC and at the Nyquist
frequency will be rejected, because of the symmetry of the Fourier
transform about these points.

You'd probably treat the blocks as circular buffers for the purpose of
median filtering your spectrum.  It stays a little neater that way
anyhow, with no samples held over from the previous block.

 2.  The statistical properties of median and weighted median filters
 are tough to describe analytically.  If you've got to justify your
 choice of this one component... it may take some research.  Estimating
 threshold values with mean/variance calculations are much easier
 analytically.

I've also thought this over, and the median filter is the black magic
of non-linear filtering.  It rejects some bad points in the data no
matter how bad they are which makes it robust and really practical,
but quantifying the effects is some kind of arcane secret.

Another way to look at it is what it does for your spectrum's
continuity--it might be good to rid of some of the variability in the
noise floor estimation, just making the spectrum smoother, which the
median filter certainly does.  I wonder if there could be something
analogous for smoothing out phase in a spectrum?

 On Tue, Dec 20, 2011 at 5:29 PM, Alexandre Torres Porres
 por...@gmail.com wrote:
 Hi there, this is a technique for calculating the noise floor of a spectrum,
 and extracting the peaks.

 It'd be used pretty much like I04.Noie Gate Miller's example, that has the
 mask table with a constant multiplier. We'd have instead this
 noise-floor block of audio, also multiplied by a constant.

 To get the noise floor, we take the magnitude (or power) spectrum and get
 the median of small bits of it, like every 32 samples. So the values of
 every 32 samples would be the median of that section...

 this is where I got this from, check page 4 and
 5 http://homepages.cae.wisc.edu/~sethares/software/SpectralTools.pdf

 this would be kinda like using the [median] or [median_n] objects, but over
 audio blocks and not number lists.

 Since there's the need of calculating this in and using the result back in
 the same block round into the audio chain, I can't put the spectrum into a
 table, and then calculate the median over bits of it.

 But then, how to do it? Should I be able to pull this out only if I write a
 median~ or [noise_floor~] external?

 Or somehow there's another way to do this with some existing external, or a
 similar technique, or even some audio math trick using [fexpr~] or
 something?

 This has to do with the other post I did about a project that attempts to
 isolate notes into a chord in a spectrum, something like melodyne is does.

 thanks
 Alex

 ___
 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] noise floor: median in audio signals, for peak extraction

2011-12-21 Thread Charles Henry
Hi Alex

I've been reading all your posts lately.  Very interesting--I will
look forward to your new phase vocorder stuff, when I get free time
and enough rest.

Have you considered weighted median filtering?  It's a non-linear
filter structure that takes non-negative integers as arguments.  At
each sample, you create a list of samples, the adjacent values taken
according to the filter arguments.  Then, count through the list
finding the lowest value each time, and add up the filter weights
until you cross the median.

The purpose of weighting is to allow some more flexibility to shape
the spectrum and prefer values that are closer to the original signal.
 It still has the same ability to reject outliers if you select good
weights.

I had made a badly written external, and a cpu-hungry abstraction
(with fexpr~ and a fixed number of weights) a while back.  I'd be
happy to dig up the code and algorithm after work today.

There's just two things that sound difficult in this application:

1.  How to handle the endpoints of the signal blocks?

2.  The statistical properties of median and weighted median filters
are tough to describe analytically.  If you've got to justify your
choice of this one component... it may take some research.  Estimating
threshold values with mean/variance calculations are much easier
analytically.

Chuck

On Tue, Dec 20, 2011 at 5:29 PM, Alexandre Torres Porres
por...@gmail.com wrote:
 Hi there, this is a technique for calculating the noise floor of a spectrum,
 and extracting the peaks.

 It'd be used pretty much like I04.Noie Gate Miller's example, that has the
 mask table with a constant multiplier. We'd have instead this
 noise-floor block of audio, also multiplied by a constant.

 To get the noise floor, we take the magnitude (or power) spectrum and get
 the median of small bits of it, like every 32 samples. So the values of
 every 32 samples would be the median of that section...

 this is where I got this from, check page 4 and
 5 http://homepages.cae.wisc.edu/~sethares/software/SpectralTools.pdf

 this would be kinda like using the [median] or [median_n] objects, but over
 audio blocks and not number lists.

 Since there's the need of calculating this in and using the result back in
 the same block round into the audio chain, I can't put the spectrum into a
 table, and then calculate the median over bits of it.

 But then, how to do it? Should I be able to pull this out only if I write a
 median~ or [noise_floor~] external?

 Or somehow there's another way to do this with some existing external, or a
 similar technique, or even some audio math trick using [fexpr~] or
 something?

 This has to do with the other post I did about a project that attempts to
 isolate notes into a chord in a spectrum, something like melodyne is does.

 thanks
 Alex

 ___
 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] noise floor: median in audio signals, for peak extraction

2011-12-21 Thread Charles Henry
On Wed, Dec 21, 2011 at 11:15 AM, Charles Henry czhe...@gmail.com wrote:
 I had made a badly written external, and a cpu-hungry abstraction
 (with fexpr~ and a fixed number of weights) a while back.  I'd be
 happy to dig up the code and algorithm after work today.

Here's the abstraction: wmed5~.pd   Below is also a pasted test patch.
 How it works: it computes all branches!  Just for fun, because it's
not something that scales well with more taps, but works.

wmed5~.pd

#N canvas 0 0 765 642 10;
#X obj 150 132 t b b;
#X obj 189 132 loadbang;
#X obj 452 188 expr $f1+$f2+$f3+$f4+$f5;
#X obj 455 225 expr int(($f1+1)/2);
#X text 591 227 median index;
#X obj 11 33 inlet~;
#X obj 62 230 fexpr~ $f3*($x1$x1[-1]) + $f4*($x1$x1[-2]) + $f5*($x1$x1[-3])
+ $f6*($x1$x1[-4]) \; $f2*($x1=$x1[-1]) + $f4*($x1[-1]$x1[-2]) +
$f5*($x1[-1]$x1[-3]) + $f6*($x1[-1]$x1[-4]) \; $f2*($x1=$x1[-2])
+ $f3*($x1[-1]=$x1[-2]) + $f5*($x1[-2]$x1[-3]) + $f6*($x1[-2]$x1[-4])
\; $f2*($x1=$x1[-3]) + $f3*($x1[-1]=$x1[-3]) + $f4*($x1[-2]=$x1[-3])
+ $f6*($x1[-3]$x1[-4]) \; $f2*($x1=$x1[-4]) + $f3*($x1[-1]=$x1[-4])
+ $f4*($x1[-2]=$x1[-4]) + $f5*($x1[-3]=$x1[-4]);
#X obj 19 449 fexpr~ $x1*(($x2+$f3) = $f4)*($x2  $f4);
#X obj 62 475 fexpr~ $x1[-1]*(($x2+$f3) = $f4)*($x2  $f4);
#X obj 102 501 fexpr~ $x1[-2]*(($x2+$f3) = $f4)*($x2  $f4);
#X obj 143 527 fexpr~ $x1[-3]*(($x2+$f3) = $f4)*($x2  $f4);
#X obj 179 552 fexpr~ $x1[-4]*(($x2+$f3) = $f4)*($x2  $f4);
#X obj 27 594 expr~ $v1+$v2+$v3+$v4+$v5;
#X obj 27 625 outlet~;
#X obj 78 31 inlet;
#X obj 78 54 unpack f f f f f;
#X obj 85 163 \$2;
#X obj 125 165 \$3;
#X obj 152 165 \$4;
#X obj 181 165 \$5;
#X obj 210 165 \$6;
#X text 253 44 1-D weighted median filter using expr \, expr~ \, fexpr~
;
#X text 351 88 uses 5 integer arguments \, representing the weights
of choosing a median from a weighted set of samples as x[0] \, x[-1]
\, x[-2] \, x[-3] \, x[-4];
#X text 348 129 the weighted set includes a number of duplications
of x \, equal to the argument;
#X connect 0 0 16 0;
#X connect 0 1 17 0;
#X connect 0 1 18 0;
#X connect 0 1 19 0;
#X connect 0 1 20 0;
#X connect 1 0 0 0;
#X connect 2 0 3 0;
#X connect 3 0 7 3;
#X connect 3 0 8 3;
#X connect 3 0 9 3;
#X connect 3 0 10 3;
#X connect 3 0 11 3;
#X connect 5 0 6 0;
#X connect 5 0 7 0;
#X connect 5 0 8 0;
#X connect 5 0 9 0;
#X connect 5 0 10 0;
#X connect 5 0 11 0;
#X connect 6 0 7 1;
#X connect 6 1 8 1;
#X connect 6 2 9 1;
#X connect 6 3 10 1;
#X connect 6 4 11 1;
#X connect 7 0 12 0;
#X connect 8 0 12 1;
#X connect 9 0 12 2;
#X connect 10 0 12 3;
#X connect 11 0 12 4;
#X connect 12 0 13 0;
#X connect 14 0 15 0;
#X connect 15 0 16 0;
#X connect 15 1 17 0;
#X connect 15 2 18 0;
#X connect 15 3 19 0;
#X connect 15 4 20 0;
#X connect 16 0 2 0;
#X connect 16 0 6 1;
#X connect 16 0 7 2;
#X connect 17 0 2 1;
#X connect 17 0 6 2;
#X connect 17 0 8 2;
#X connect 18 0 2 2;
#X connect 18 0 6 3;
#X connect 18 0 9 2;
#X connect 19 0 2 3;
#X connect 19 0 6 4;
#X connect 19 0 10 2;
#X connect 20 0 2 4;
#X connect 20 0 6 5;
#X connect 20 0 11 2;



wmed5-test.pd

#N canvas 0 0 724 559 10;
#X obj 175 73 noise~;
#X obj 44 180 +~;
#N canvas 0 0 450 300 (subpatch) 0;
#X array array1 64 float 1;
#A 0 -0.989722 -0.998962 -0.998581 -0.988581 -0.969059 -0.940204 -0.902292
-0.85569 -0.800846 -0.738288 -0.668619 -0.59251 -0.510694 -0.423959
-0.33314 -0.239112 -0.142782 -0.0450761 0.0530638 0.150693 0.24687
0.34067 0.431188 0.517553 0.598933 0.674544 0.743658 0.805609 0.859801
0.905711 0.942897 0.971002 0.989753 0.998972 0.998569 0.988549 0.969007
0.940132 0.902201 0.855581 0.80072 0.738147 0.668464 0.592342 0.510515
0.42377 0.332944 0.238911 0.142576 0.0448686 -0.0532713 -0.150898 -0.247071
-0.340865 -0.431375 -0.517731 -0.599099 -0.674697 -0.743797 -0.805732
-0.859907 -0.905799 -0.942966 -0.971051;
#X coords 0 1 63 -1 200 140 1;
#X restore 364 56 graph;
#N canvas 0 0 450 300 (subpatch) 0;
#X array array2 64 float 1;
#A 0 -0.970948 -0.989722 -0.998581 -0.998581 -0.988581 -0.969059 -0.940204
-0.902292 -0.85569 -0.800846 -0.738288 -0.668619 -0.59251 -0.510694
-0.423959 -0.33314 -0.239112 -0.142782 -0.0450761 0.0530638 0.150693
0.24687 0.34067 0.431188 0.517553 0.598933 0.674544 0.743658 0.805609
0.859801 0.905711 0.942897 0.971002 0.989753 0.998569 0.998569 0.988549
0.969007 0.940132 0.902201 0.855581 0.80072 0.738147 0.668464 0.592342
0.510515 0.42377 0.332944 0.238911 0.142576 0.0448686 -0.0532713 -0.150898
-0.247071 -0.340865 -0.431375 -0.517731 -0.599099 -0.674697 -0.743797
-0.805732 -0.859907 -0.905799 -0.942966;
#X coords 0 1 63 -1 200 140 1;
#X restore 366 218 graph;
#X obj 135 214 tabwrite~ array1;
#X obj 196 273 tabwrite~ array2;
#X obj 224 147 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1
1;
#X floatatom 46 30 5 0 0 0 - - -;
#X obj 43 103 osc~ 689.11;
#X obj 173 174 metro 166;
#X obj 169 124 expr~ $v1*(abs($v1)  0.99);
#X obj 43 244 wmed5~ 2 3 4 3 2;
#X obj 255 151 loadbang;
#X connect 0 0 10 0;
#X connect 1 0 4 0;
#X connect 1 0 11 0;
#X connect 6 0 9 0;
#X connect

Re: [PD] Findings regarding performance

2011-12-02 Thread Charles Henry
On Thu, Dec 1, 2011 at 4:02 PM, Mathieu Bouchard ma...@artengine.ca wrote:
 Le 2011-12-01 à 10:39:00, Charles Henry a écrit :


 When using [*~ 0], the inlet and outlet are borrowed.  The scalar multiply
 operation is performed in place and no data transfer occurs.


 What do you call « data transfer » ? multiplying in place by a constant
 involves as many reads and writes as doing a (single) copy. This at least
 needs to stream data from the highest-speed RAM to the CPU and back. It's
 less noticeable than the copy time of very large buffers (e.g. [table] or
 [pix_separator]) because those really need big RAM (which is slower), but in
 any case, calling scalartimes_perf8 (or whatever) means an implicit copy in
 some kind of way, just like nearly anything else does.

You make a good point--I wasn't counting the data transfer that occurs
between registers or the way that the compiler breaks out the steps
involved, and of which I am mostly ignorant.

The part I was differentiating from: there's significant data transfer
operations that has to do with switch~.  The inlet~ inside a subpatch
and outlet on the parent from canvases using switch~ have signals that
aren't borrowed.  This means there's another data transfer (a copy)
between signals on the parent and the sub-canvas.

So, using switch~ as in Roman's example involves 2 copy operations on
the signals.  Is that what we're seeing?  I'm not sure how to count
the operations--and how to compare the scalartimes perform routines vs
inlet_doprolog/inlet_dsp and outlet_dsp/outlet_doepilog (which I'm
contending is the difference we're seeing in the performance numbers).

Chuck

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


Re: [PD] Findings regarding performance

2011-12-01 Thread Charles Henry
On Thu, Dec 1, 2011 at 10:09 AM, Mathieu Bouchard ma...@artengine.ca wrote:
 Le 2011-12-01 à 15:24:00, Roman Haefeli a écrit :


 reason, let's just use an invented arbitrary unit for expressing the CPU
 time (ct) consumed by an object. It turned out that [gate~] uses 0.52ct
 when it is on and 0.4ct when it is off. But how much does [*~ ] use? No
 matter whether turned on or off, [*~ ] uses a stable 0.39ct.


 Even though [switch~] does not use tight conditionals, instead checking only
 once per block, it still takes some time copying stuff and switching
 contexts. I suppose that this is the kind of thing that Pd could do more
 efficiently than it does now, if someone is brave enough to edit d_ugen.c...
 and knows how to do it.

For further explanation:  In an abstraction where the block sizes
match and there's no switch~, signals are borrowed from the parent
context.  When switch~ is used, inlet~ and outlet~ signals are not
borrowed, even when block sizes match.

block_prolog handles the switch~ behavior, returning a pointer to the
end of the block epilog when switched off.  This comes before data is
copied into buffers in inlet_doprolog.

On the outlet~, there is an un-borrowed signal allocated, and I think
it's also assigned to be zero when switched off.  This would be the
only major point where an assignment operation occurs.

When using [*~ 0], the inlet and outlet are borrowed.  The scalar
multiply operation is performed in place and no data transfer occurs.

It's all relatively fresh in my mind, but I need a good week's
vacation to re-focus and study d_ugen.c some more.  I've done enough
to understand what's in there, but I've rarely asked the question how
to make it work better.

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


Re: [PD] Findings regarding performance

2011-12-01 Thread Charles Henry
On Thu, Dec 1, 2011 at 11:34 AM, Roman Haefeli reduz...@gmail.com wrote:
 Hi João

 On Thu, 2011-12-01 at 16:04 +0100, João Pais wrote:
 would it make sense to do a general test patch, where these and more
 objects could be tested empirically? or, put your patches somewhere, so
 that other people can work on them, and have a test-repository?

 I attached my test setup. It's very naive and it doesn't serve much more
 than to compare different classes on a specific setup (Hardware/CPU,
 specific Pd version, probably it's even specific to certain compile time
 flags).

 main.pd loads many (actually 4096) instances of [gate~]. I simply edited
 an instance of [gate~] and compared what CPU meter displayed while
 main.pd was running. On different computers you probably need to add
 more or remove instances of [gate1024~] in order to get meaningful
 results.

Actually, I think you're looking at scalibility--to get a better
measurement, you'd need to compare across several numbers on a single
machine, e.g. 1024, 2048, 4096, etc... and do a linear regression to
separate out the fixed costs and marginal costs.

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


Re: [PD] Variable number of objects?

2011-09-28 Thread Charles Henry
I'd really hope to hear from Krzystof on this topic.  His
[more]/[less] objects presented at the PdCon were really interesting
for creating large numbers of voices.

The difference in approach embeds the new instances (without having a
graphical representation) into the same abstraction and sums their
outputs on the outlets provided.  It behaves a lot like MPI
programming where each program instance is an exact copy,
differentiated only by index.  Messages piped in can be sent to
specific embedded instances through [less] if I remember correctly.

Increasing or decreasing the number of voices sounds like a dynamic
patching application.  I don't know much about it, myself.

Chuck

On Wed, Sep 28, 2011 at 10:55 AM, Ludwig Maes ludwig.m...@gmail.com wrote:
 Im not sure what the best way is to instantiate variable number of objects,
 for example consider polysynth.pd:

 Theres a fixed number of manually placed voices, suppose I want to have the
 top patch to contain a counter through which one may increase or decrease
 the number of voices, how would I go about that (without manually placing a
 load of voices and disabling them...)?

 Whats the vanilla way to do this? Whats the pd-extended way to do this? ...

 ___
 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] Variable number of objects?

2011-09-28 Thread Charles Henry
On Wed, Sep 28, 2011 at 1:13 PM, Ludwig Maes ludwig.m...@gmail.com wrote:
 Where do I learn more about the more/less objects?

Here's the abstract:
http://www.uni-weimar.de/medien/wiki/PDCON:Conference/Self-replication:_how_to_do_more_using_less

The full conference proceedings are due to be published online any time soon.

 On 28 September 2011 20:02, Charles Henry czhe...@gmail.com wrote:

 I'd really hope to hear from Krzystof on this topic.  His
 [more]/[less] objects presented at the PdCon were really interesting
 for creating large numbers of voices.

 The difference in approach embeds the new instances (without having a
 graphical representation) into the same abstraction and sums their
 outputs on the outlets provided.  It behaves a lot like MPI
 programming where each program instance is an exact copy,
 differentiated only by index.  Messages piped in can be sent to
 specific embedded instances through [less] if I remember correctly.

 Increasing or decreasing the number of voices sounds like a dynamic
 patching application.  I don't know much about it, myself.

 Chuck

 On Wed, Sep 28, 2011 at 10:55 AM, Ludwig Maes ludwig.m...@gmail.com
 wrote:
  Im not sure what the best way is to instantiate variable number of
  objects,
  for example consider polysynth.pd:
 
  Theres a fixed number of manually placed voices, suppose I want to have
  the
  top patch to contain a counter through which one may increase or
  decrease
  the number of voices, how would I go about that (without manually
  placing a
  load of voices and disabling them...)?
 
  Whats the vanilla way to do this? Whats the pd-extended way to do this?
  ...
 
  ___
  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] [PD-announce] AntiDataMining project in ZKM (Karlsruhe) using Pd and Gem

2011-09-24 Thread Charles Henry
A very nice project.  What do you make of the robot and tts voices in
the video?

Chuck

On Sat, Sep 24, 2011 at 9:01 AM, Jack j...@rybn.org wrote:
 See the video of a trade bot in the panoramic room ;)
 http://www02.zkm.de/videocast/index.php?option=com_contentview=articleid=446:rybncatid=115
 http://www02.zkm.de/videocast/index.php?option=com_contentview=articleid=446:rybncatid=115
 ++

 Jack



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

 ___
 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] [PD-dev] removing path and libs from Pd-extended preferences GUI

2011-09-20 Thread Charles Henry
Sorry-I'm a bit confused as to the difference between libs and paths,
at the moment.

Here's a situation where I like to have the path dialog:
I download an archive of abstractions (like RJDJ), and I'd like to be
able to put them anywhere, so if there's a couple different versions,
I can just tell them apart from folders.

With the path dialog, I can just right away see what set of
abstractions are on the path, change it, apply, and get to work.

How would I accomplish the same thing without it?

Chuck

On Tue, Sep 20, 2011 at 10:58 AM, Hans-Christoph Steiner h...@at.or.at wrote:

 Please give an example of how this would make this more confusing. My
 experience is the exact opposite and it is exactly this problem that
 leads me to want to remove those preferences.  The are a big source of
 confusion and problems, and most Pd-extended users do not use them.  I
 am not proposing removing them from Pd-vanilla, only Pd-extended.  I
 think globally loading libraries is a broken idea.

 If you remember in the days before Pd-extended, patches that relied on
 external libraries were mostly unsharable.  It could take a long time to
 track down all the dependencies, etc. and you couldn't be sure which
 [wrap], [split], [prepend], [scale], etc. the patch needed.  Having the
 configuration in the patch means at worst you know what you need to get
 it running.

 At this point I've taught Pd to 10 year olds, high school kids, college
 kids, masters students, and all sorts of people in workshops, college
 courses, and patching circles.  I also answer a lot of questions on
 email, on forums, and on IRC.  It is from this experience that I am
 coming from on this issue.  I have no desire to control people, I do
 have a strong desire to make Pd-extended very user friendly to newbies
 and a excellent editing experience for advanced users.

 And those that like the Pd-vanilla way are welcome to use it,
 Pd-extended will remain compatible with patches from Pd-vanilla as long
 as I work on it.  Of course, it is not possible to maintain 100%
 compatibility when going from Pd-extended to Pd-vanilla since extended
 includes many more objects.  There is also pd-l2ork, desiredata, etc.
 for those who want different approaches.

 .hc

 On Tue, 2011-09-20 at 13:02 +0100, Andy Farnell wrote:

 Whenever I see the words this would _make_ people...
 alarm bells start ringing for me.

 Yes, the proposed behaviour is perfectly correct, logical,
 and consistent. And utterly the wrong thing to do IMHO.

 It would frighten off newcomers and disorientate students.

 It's why we create the cushion of fairy stories
 for kids, to soften the harsh realities of the
 _actual_ world. Later on you learn that there isn't
 a magic library fairy that loads everything, but it
 helps you cope with the first steps.

 If anybody made PD that broken out of the box it
 would require lots of work to fix in order to make
 it fit to teach with again.



  On 2011-09-19 19:32, Hans-Christoph Steiner wrote:
  
   Hey Miller,
  
   I actually think this would make switching between vanilla and extended
   easier because it would make people use [import] or [declare] to load
   libs, then when using vanilla, you'll know which libraries the patch
   needs.  Can you think of examples where it would make things more
   difficult?




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


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


Re: [PD] [PD-dev] removing path and libs from Pd-extended preferences GUI

2011-09-20 Thread Charles Henry
I don't actually *like* those solutions for the scenario I just described.

I think the path dialog has a distinct purpose of its own that is not
shared by those options.  (These aren't always advantages--just
differences)
--It's persistent across sessions.
--I can use my own organization of abstractions in some far flung
corner of my user directory.
--It's always the full path.

For some types of work, the path dialog really makes sense to me.  I
work on it sporadically, I crash Pd frequently, and when I start it
up, having those settings saved in the config will save me some time.

[declare] and [import] are really for sharing patches with other
people--but maybe I'm not sharing anything and I'm just cooking up
some buggy externals.  Then, I want to be able to work quickly--*not*
correctly.


Chuck

On Tue, Sep 20, 2011 at 1:44 PM, Hans-Christoph Steiner h...@at.or.at wrote:

 For this situation, I think there is no need for custom paths, you can
 use the built-in default paths, which are the default in pd-vanilla,
 pd-extended, and pd-l2ork.

 For the rjlib, merely drop the 'rj' folder into the standard default
 install location:
 http://puredata.info/docs/faq/how-do-i-install-externals-and-help-files

 Then use the object by doing [rj/s_fm4] or whatever.  Or you could you:

 [import rj]
 [s_fm4]

 or:

 [declare -lib rj]
 [s_fm4]

 The only use case for setting your own path that I know is like [declare
 -path lib/] where you set a folder within your project to load libs
 from.  That is accomplished much better with [declare -path] than
 setting a global pref because it means the patch has the whole config
 included with it.

 .hc

 On Tue, 2011-09-20 at 13:30 -0500, Charles Henry wrote:
 Sorry-I'm a bit confused as to the difference between libs and paths,
 at the moment.

 Here's a situation where I like to have the path dialog:
 I download an archive of abstractions (like RJDJ), and I'd like to be
 able to put them anywhere, so if there's a couple different versions,
 I can just tell them apart from folders.

 With the path dialog, I can just right away see what set of
 abstractions are on the path, change it, apply, and get to work.

 How would I accomplish the same thing without it?

 Chuck

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


Re: [PD] Multiplying signal by complex number to create and see phase shift

2011-09-12 Thread Charles Henry
On Sun, Sep 11, 2011 at 7:33 PM, Rick T ratull...@gmail.com wrote:
 Greetings All
 I plan on adding a phase shift to a signal/a wave file I import which is
 easy enough mathematically
 example: if the signal is x=sin(2*pi*1*t)
 to do a phase shift I would just multiply x*e(-i*pi) which would phase shift
 the signal by 90 degrees.
 But how does one multiple signals by complex numbers in PD like -i?
 note: there will be a several different phase shifts so a simple
 hibert transform won't work in this instance

I guess you already know what this is about then--as Patrice said,
you'll have to use fft~ on windows of your signal to accomplish
different frequency-specific phase shifts.

The Hilbert transform accomplishes one type of complex signal
decomposition that applies to phase shifts by complex number multiple:
the complex signal
c(t)=x(t) + i * Hx(t)

can be written as magnitude(t) and phase(t)

c(t)=magnitude(t) * e^( i * phase(t))

Then, applying multiple of e^( i * (phase shift) ) just adds the phase
shift into this decomposition of the signal.  As you said, it applies
to not just one frequency, and it also doesn't just shift every phase
by the same amount.

Now, notice the hilbert~.pd abstraction---This is a pair of all-pass
filters that shifts the signal by approximately 90 degrees at each
frequency.  You'll have to open it up and analyze it yourself to see
if it really does what you want--but it's been shown to be a very
practical and reliable way to accomplish phase shifts.

Chuck

___
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-08 Thread Charles Henry
On Thu, Sep 8, 2011 at 1:02 AM, Mathieu Bouchard ma...@artengine.ca wrote:
 On Wed, 7 Sep 2011, Charles Henry wrote:

 On Wed, Sep 7, 2011 at 7:59 PM, 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?

 Sorry, what's HADDPS?

 http://www.rz.uni-karlsruhe.de/rz/docs/VTune/reference/HADDPS--Packed_Single-FP_Horizontal_Add.htm

 This is really interesting.  Your compiler probably knows how to
 optimize this kind of information.

 How can you tell that ? I bet it doesn't...

Yeah, I thought it over.  I was wrong.
I was also wrong about SSE4.2--AVX is the new instruction set with
256-bit wide operations.

 What could it be doing about a scan like this, anyway ?
fft-multiply by 2*pi*i*f-ifft and fall over...

I dunno, but I'm working on it a bit.

___
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 Charles Henry
On Wed, Sep 7, 2011 at 7:59 PM, 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?

Sorry, what's HADDPS?


 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.

This is really interesting.  Your compiler probably knows how to
optimize this kind of information.  SSE3 is really about memory
allocation.  The instructions pack floats into a bigger section of
memory.  In SSE3, this means 4 floats in a 128-bit single operation.

SSE 4.2 has 256-bit wide (8 flops per clock)--the latest increase in
single-threaded computing power is in favor of single-precision float
(lucky for Pd-ers)

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


Re: [PD] Headphones question on pd list

2011-08-25 Thread Charles Henry
On Wed, Aug 24, 2011 at 5:40 PM, Jonathan Wilkes jancs...@yahoo.com wrote:

 Without knowing anything in advance about the speakers being used, is there a 
 way to construct some kind of [aural-faxbomb~] that outputs in the -1 to 1 
 range which could be used generally to at least get in the ballpark of what 
 you want the maximum level of perceived loudness to be when wearing 
 headphones?

You should be able to pick a suitable frequency band.  A reasonable
expectation is that headphones can produce sounds between 200Hz and
20kHz.  Loudness seems to fall off pretty quickly above 10kHZ, so
there's no point in including much of the higher frequencies, if
avoidable.

 Maybe another way to ask: can you construct an example patch with output that 
 is louder than [noise~]--[*~ max_float_value]--[clip~ -1 1]--[dac~]?

The spectrum distributes energy to frequencies that will not be
reproduced or perceived loudly (which should be the case for the
above, having a very flat spectrum).  If the sound gets focused into a
smaller band, which is more relevant for speakers/hearing, the
loudness will be greater.

I think one place to start looking is a non-bandlimited square wave
function.  It's known that this kind of function has odd-numbered
partials that fall off according to 1/n, or in other words, the power
spectral density falls off at -6dB/octave.

The only problem with this function is that again the sound could be
more focused into a narrower band.  One thing that comes to mind is
multiplying square waves together (since this keeps the values at
+1/-1), but that would only distribute more energy to higher
frequencies.  What about PWM?

I think we are designing the worst possible sound here.  Sound check.
 Play the horrible noise, so we know nothing that comes after that can
sound as horrible.

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


Re: [PD] Headphones question on pd list

2011-08-24 Thread Charles Henry
On Wed, Aug 24, 2011 at 2:15 PM, Mathieu Bouchard ma...@artengine.cawrote:

 On Wed, 24 Aug 2011, Jonathan Wilkes wrote (outside of pd-list):

  If I do this, can't I be fairly certain that I won't get a sound with
 greater perceived volume than the clipped [noise~]--[*~ 99] that I
 started with? [...] I'm just talking about things that could potentially
 cause ear damage.


 a harsh-clipped [noise~]-[*~ n] is probably close to the highest loudness
 you can get, even for not-so-high values of n.


 However, if you want to find the loudest, you'd have to start from the dBA
 loudness curve, and try to solve an equation involving a bunch of samples
 that can range from -1 to +1... at 44100 Hz over 1 second, that'd be 44100
 variables, for example, though a lot less variables could be enough to get
 an idea. It doesn't look like an easy problem to me, but I haven't tried.

 And then, the loudness curve, the pain curve and the damage curve are three
 different things. I don't even know whether the latter two have been
 computed. My only real experience with the loudness curve(s) is from writing
 Alexandre T Porres' externals (for what he presented in Weimar). I haven't
 studied the topic much more than that.


Maybe the equal loudness curves aren't as important as the peaks in the
loudspeaker transfer function.  Gotta add that to the analysis, too, but
you'll never know what those are like unless you actually have them and
measure it.

I think the math makes sense: if a sequence of samples has only -1,+1 as
values, then the intensity must be maximized--only the frequency spectrum
has to be known.  We have by isometric property of the Fourier tranform that
the total energy in the frequency domain matches the energy in the time
domain.  So, it's only a matter of distribution.

So, if we made a simple alternating sequence +1,-1,... then only the Nyquist
frequency has any energy, but because most speakers (and ears) will weakly
respond at this frequency, it's not very loud.

Same goes for a repeating sequence, +1,+1,... or -1,-1,... for which no
response is expected.

The next thing to notice is that you can't produce a single frequency with
some signal that is only distributed as -1 or +1 on each sample.  So, it's
no good just finding the peak of the loudspeaker + loudness curves either,
we need big bands of frequencies that respond loudly.

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


Re: [PD] RK4 for Pd

2011-08-17 Thread Charles Henry
Runge-Kutta is for integrating functions that you know a formula for.

So, at least in terms of signals in Pd, there's nothing better than
the simple recursion formula (x is input, y is output):
y[n] = y[n-1] + x[n]

Now, you may also want to scale by the sample rate  y=integral(0 to t, x*dt)
Then, it's just
y[n] = y[n-1] + x[n]/44100 (or whatever sample rate)

In z-transform terms we get:

Y(z) * (1 - z^-1) = X(z)
or
Y(z) = X(z) / (1 - z^-1)

which tells us we have a single real pole at z=1
So, the object I think you want is just
[rpole~ 1]

And you can apply the scaling by the samplerate as needed.

for messages, I don't know.  To integrate them over time, you would
have each value multiplied by the time in between messages.

Chuck


On Wed, Aug 17, 2011 at 4:10 PM, Jeppi Jeppi jepp...@hotmail.com wrote:
 Hi all!
 I would like to know whether there is any object or abstraction available to
 perform numerical integration (at control or audio rate, whatever) for Pd.
 Any examples around there?
 Thanks in advance!
 Josep M
 ___
 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] RK4 for Pd

2011-08-17 Thread Charles Henry
On Wed, Aug 17, 2011 at 4:48 PM, Charles Henry czhe...@gmail.com wrote:
 Runge-Kutta is for integrating functions that you know a formula for.

Afterthought--suppose you do have a formula that has some nasty
integral that you can only compute numerically.

Put it into expr--then we could implement the RK4 method with messages
and some patching.

Or maybe make some implementation with expr~, although it could be a
bit more difficult.  I guess it just depends on the application you
want to create.

Chuck

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


Re: [PD] [PD-announce] Pd Convention - Data structures workshop: Taking your requests

2011-08-01 Thread Charles Henry
Hi João

I'm mainly interested in using Pd for scientific and engineering
research.  I have a mixed level of experience--I'm deep into the DSP
routines, but I have no clue how data structures work.

About the only application I can think of right now is a data
logger--recording info about a particular trial/experiment and its
results.

I'd like to learn easy or more compact ways to accomplish things with
data structures.

I will look forward to your workshop!  Thanks much!

Chuck

On Mon, Aug 1, 2011 at 5:57 AM, João Pais jmmmp...@googlemail.com wrote:
 Hello everyone,

 in the first 2 days of the Pd Convention I will be giving a workshop about
 data structures -
 http://www.uni-weimar.de/medien/wiki/PDCON:Workshops/Data_Structures.

 My plan is to talk about the theory in the first session, and practical
 implementations + patch analysis in the second session. I have already a
 group of example patches ligned up, but I wanted to see if anyone has their
 own desires.

 So, if you are interested in coming to the data structures workshop, and
 already have a goal in mind on where/how to use them, you can send me your
 requests. If time is available, I might be able to do some work for you,
 which you can afterwards develop further.
 If you want to send me a patch, try to follow the following steps:

 - describe to me what the patch does, possibly leaving some comments inside
 near some important parts

 - describe what you wish to do


 And for everyone else: I would also like to know who will come to my
 workshop. In case you have time, just send me a small message privately
 with:

 - your name
 - your interests
 - your experience level


 Hope to see many of you next week,

 João Pais

 --
 Friedenstr. 58
 10249 Berlin (Deutschland)
 Tel +49 30 42020091 | Mob +49 162 6843570
 Studio +49 30 69509190
 jmmmp...@googlemail.com | skype: jmmmpjmmmp

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

 ___
 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


[PD] [OT] technological parody was: Pd performance at TED

2011-06-22 Thread Charles Henry
eheh, I'm glad the concept of technological parody is giving so much to
discuss :)
We should put up a twitter account with the #technologicalparody (kidding)

M

I caught on to it, just because I liked the phrase so much.  But there are
some real examples--Rube-Goldberg machines come right to mind, but you never
see them in real life as anything other than comedy.

There may be more real-life examples from hacker/builder communities--like,
say, a robotic fridge designed to fire a can of beer into the air.  Although
it may be an awesome novelty, it's not actually practical.  Hence, it's
nearly a mockery of robotics to build it.  No offense to the creators of
beer can canons--but you knew it was going to be a joke before you started.

So, there's a clear comparison between Pd and Guitar Hero that illustrates
the difference.  With Guitar Hero on your favorite console, you have a
specialized controller, useless for any other games, that only plays
canned guitar riffs from a CD.  Moreover, the software has to run on
particular hardware.  Then, a clever programmer with Pd can take that same
ridiculous controller and use it for whatever he/she wants.

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


Re: [PD] [OT] technological parody was: Pd performance at TED

2011-06-22 Thread Charles Henry
On Wed, Jun 22, 2011 at 2:43 PM, Jonathan Wilkes jancs...@yahoo.com wrote:


 The Rube Goldberg machines and the fridge are great examples of parodies--
 I suppose
 we can call them technological parodies if we want to be precise.  But for
 things that
 are not actually meant as parodies, it's a misnomer that just seems like an

 ideological term of derision.


Correct.  It's a kids game, I know... and it works as intended.  Yes--I am
deriding it even though I probably don't have to.

so, I guess you mean to say that a *real* parody has to be intentional?  I
doubt the creators of the robotic beer fridge thought they were creating a
parody--but the sheer impracticality and high-technology implementation
*makes* it one.

So, calling *anything* a technological parody is as you said, just an
ideological term of derision.  But after all, you can create anything you
want, it depends on how it's received by other people what labels they would
put on it.
___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] [OT] technological parody was: Pd performance at TED

2011-06-22 Thread Charles Henry
On Wed, Jun 22, 2011 at 2:43 PM, Jonathan Wilkes jancs...@yahoo.com wrote:

 How is the guitar hero example not just an example of locked down
 proprietary consoles
 vs. free software ideals?


I think you missed the contrast.  Pd is clearly not a technological
parody, even if it looks like just a software version of patching together
synthesizers/effects.  That was the point.  I think we're going to suck all
the fun out of this expression now... I do this often enough on the list.

Other than that--GH is stupid.  and I think that's a perfectly good reason
to trash it.  I selected it as the first real example of something that I
think is a joke of technology.
___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Pd performance at TED

2011-06-21 Thread Charles Henry
On Mon, Jun 20, 2011 at 8:39 PM, Mathieu Bouchard ma...@artengine.cawrote:

 On Sun, 19 Jun 2011, Jonathan Wilkes wrote:

 --- On Sun, 6/19/11, Mathieu Bouchard ma...@artengine.ca wrote:

 What's a « technological parody » ?


 It's where you take something like a modern digital computer and do DSP by
 using an interface modeled after 30 year-old analog audio equipment.


 Therefore Pd is a technological parody ?


Seems like this fits into the discussion of CV's in digital synthesizers,
however briefly on-topic it was :)

Pd is *not* a technological parody by being able to do everything that a
30-year-old analog interface could do, because it does it better.  Hardware
for running Pd to accomplish the same tasks can be smaller and less
specialized.  There's lower noise, less distortion--things that would take a
team of engineers several years to build with hardware would be programmable
in Pd in less time.

A technological parody ought to be defined by:
1.  usage of high-tech hardware to fulfill a low-tech purpose
2.  an unwarranted degree of specialization or wasteful usage of hardware
size/power

e.g. a wind controller shaped exactly like a clarinet, running off a DSP
board, and all it does is sound exactly like a clarinet.  Why don't I just
mic a clarinet?
Anybody else got one?

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


Re: [PD] Pd performance at TED

2011-06-21 Thread Charles Henry
On Tue, Jun 21, 2011 at 12:08 PM, Charles Henry czhe...@gmail.com wrote:

 On Mon, Jun 20, 2011 at 8:39 PM, Mathieu Bouchard ma...@artengine.cawrote:

 On Sun, 19 Jun 2011, Jonathan Wilkes wrote:

 --- On Sun, 6/19/11, Mathieu Bouchard ma...@artengine.ca wrote:

 What's a « technological parody » ?


 It's where you take something like a modern digital computer and do DSP
 by using an interface modeled after 30 year-old analog audio equipment.


 Therefore Pd is a technological parody ?


 A technological parody ought to be defined by:
 1.  usage of high-tech hardware to fulfill a low-tech purpose
 2.  an unwarranted degree of specialization or wasteful usage of hardware
 size/power


 Guitar Hero.  It's a mockery of music and almost certainly a technological
parody.
___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] writing dsp externals for variable number of inlets

2011-05-07 Thread Charles Henry
Hi, Ahmet

I don't know how to create a variable argument type of function definition
for this purpose, but it should be clear that your dsp function knows how
many inlets there will be.  You will be setting the number of inlets when
the object is created.

You could make a maximum number of inlets and add a data structure element
to store the number of inlets.  Then, in your dsp function, put a case
statement to look up the dsp_add call with the correct number of arguments.


I'm not sure that's the best way, since dsp_add has a variable number of
arguments in its definition.  It would make sense to me if function calls
had to have a fixed number of arguments, but I'm just not sure.

Chuck

On Sat, May 7, 2011 at 10:01 AM, Ahmet Kizilay ahmet.kizi...@gmail.comwrote:

 Hello,
 I want to write an external which creates the signal inlets dynamically
 depending on the number of arguments, just like the multiplex~ object from
 zexy.
 My question is about writing the dsp_add function. How do I set the
 arguments when I don't exactly know how many signals I will be handling?

 I hope my question is appropriate for the list (first post)?

 Thanks.

 --
 ahmet kizilay
 http://www.ahmetkizilay.com

 ___
 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] Making a Realtime Convolution External

2011-04-06 Thread Charles Henry
On Wed, Apr 6, 2011 at 2:08 PM, IOhannes m zmoelnig zmoel...@iem.at wrote:

 -BEGIN PGP SIGNED MESSAGE-
 Hash: SHA1

 On 2011-04-06 21:04, Seth Nickell wrote:
  I use a thread per core, it does parallelize nicely.
 

 that's what i thought.

 please don't let yourself turn down by all those misers :-)

 fgmasdr
 IOhannes


As a young curmudgeon myself, I might *grumble* seem discouraging.  But
really, I'd encourage you to take on convolution externals... but don't
create a monster.

In the context of threading/part. conv, I had an idea to compute ahead.
Most of the calculations for a given block can be computed ahead.  Only the
most recent block of samples needs to be actually convolved, right away.

Then, once you've summed the most recent block with the other partitions,
you'd start a thread to compute ahead the next cycle's partitions.  If the
load is low enough, it would complete by the next cycle--of course, you'd
need to wait/join the background thread to make sure that it completes.
___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Making a Realtime Convolution External

2011-04-05 Thread Charles Henry
On Tue, Apr 5, 2011 at 2:33 PM, Seth Nickell s...@meatscience.net wrote:

 Hi Mathieu,

 Thanks, I assumed (without checking :-P) that the dsp call happened
 every time, didn't realize it was a setup/patching call that registers
 my _perform function with a call graph. Exactly what I need.

 I think the difference in approach comes from the needs of the
 external. fiddle~ probably needs much larger blocks than typical to
 discriminate between low frequencies. In my case, I can run at 64
 sample sizes, but I'll take your whole CPU to do it. It might be smart
 to default to some internal buffering (say 512), and let people order
 the external to do really really low latency if they need it and are
 willing to pay in CPU.


Here's where your users' choice of block sizes comes in--if your user puts a
partitioned convolution external into a canvas with block size 64, it means
to be low-latency.  If the user puts it in with [block~ 1024], then the
buffering is defined.

Pd means to be ~user~programmable and modular.  The more you try to monolith
your externals, the worse they work (I've done this).  I know I'm not
expressing it well, but I hope the point comes through.



 That said, Peter reminded me of an optimization that I hadn't
 implemented yet. AudioUnits are rarely asked to run below 128 sample
 block sizes, so it didn't make sense for the AU, and I forgot that it
 was on the TODO list from 2 years ago. ;-) By convolving very small
 blocks in the time domain, and switching to frequency domain for
 larger blocks, I think we can get excellent CPU usage at very small
 block sizes too.


It sounds like you'd have a bit of a problem without first profiling the
system or having known profiles for different hardware.  Can you tell me
more about your partitioning method (just the math)?



 -Seth

 On Tue, Apr 5, 2011 at 8:49 AM, Mathieu Bouchard ma...@artengine.ca
 wrote:
  On Mon, 4 Apr 2011, Seth Nickell wrote:
 
  Are the DSP calls liable to vary t_signal-s_n (block size) without
  notification? 64 samples, apparently the default on pd-extended, is
  doable without buffering for partitioned convolution on a modern
  computer, but it exacts a pretty high CPU toll, and if I have to
  handle random blocksize changes, it gets more expensive.
 
  Also, since convolution is much more efficient around block sizes of 256
  or 512, perhaps I should default to one of these, buffer a little, and
 have
  a runatpdblocksize message or somesuch?
 
  There's always a notification. Any change of s_n will result in a new
 call
  to the dsp-function.
 
  Note that it's best to make sure that the dsp-function is fairly fast
 most
  of the times, because any patching may retrigger the dsp-function in
 order
  to recompile the graph.
 
  dsp objects working with some kind of blocks don't have to be using s_n
 as a
  setting. I mean that you can accumulate several dsp-blocks in order to
 make
  your own kind of bigger block. This is what [fiddle~] and [env~] do, for
  example.
 
  But some other object classes use s_n as a setting. For example, [fft~]
  does. I don't know why this is not consistent across all of pd. (I'm not
  saying either approach is better than the other.)
 
   ___
  | 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-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] Call for papers and workshops: Pure Data Convention 2011

2011-03-27 Thread Charles Henry
Yer gonna make me panic.  Seriously?

On Sun, Mar 27, 2011 at 3:42 PM, Marco Donnarumma de...@thesaddj.comwrote:

 2h 20' from now!
 :)



 yeah...

 How many hours left???




 --
 Marco Donnarumma
 Independent New Media and Sonic Arts Professional, Performer, Instructor
 ACE, Sound Design MSc by Research (ongoing)
 The University of Edinburgh, UK
 ~
 Portfolio: http://marcodonnarumma.com
 Lab: http://www.thesaddj.com | http://cntrl.sourceforge.net |
 http://www.flxer.net
 Event: http://www.liveperformersmeeting.net

 ___
 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] Call for papers and workshops: Pure Data Convention 2011

2011-03-27 Thread Charles Henry
Not really panicked. haha I'll post something and edit it again in a few
hours, kinda psyched about it



On Sun, Mar 27, 2011 at 3:50 PM, Charles Henry czhe...@gmail.com wrote:

 Yer gonna make me panic.  Seriously?

 On Sun, Mar 27, 2011 at 3:42 PM, Marco Donnarumma de...@thesaddj.comwrote:

 2h 20' from now!
 :)



 yeah...

 How many hours left???




 --
 Marco Donnarumma
 Independent New Media and Sonic Arts Professional, Performer, Instructor
 ACE, Sound Design MSc by Research (ongoing)
 The University of Edinburgh, UK
 ~
 Portfolio: http://marcodonnarumma.com
 Lab: http://www.thesaddj.com | http://cntrl.sourceforge.net |
 http://www.flxer.net
 Event: http://www.liveperformersmeeting.net

 ___
 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] Call for papers and workshops: Pure Data Convention 2011

2011-03-27 Thread Charles Henry
On Sun, Mar 27, 2011 at 4:33 PM, Marco Donnarumma de...@thesaddj.comwrote:

 mm, from the website:

 ~
 Calls
 for Papers and workshops

 Please submit papers to the openconf
 Deadline for abstracts: March 28, 2011


Yeah, I know that.  It's Mar 27th where I am. :D greetings from Central
Standard Time--f'n snow, I thought we were done with that til next year



 Please send an extended version of your abstract (1 page or 500 words)
 ~

 The call for music will be still open for some time.


 M




 On Sun, Mar 27, 2011 at 9:50 PM, Charles Henry czhe...@gmail.com wrote:

 Yer gonna make me panic.  Seriously?

 On Sun, Mar 27, 2011 at 3:42 PM, Marco Donnarumma de...@thesaddj.comwrote:

 2h 20' from now!
 :)



 yeah...

 How many hours left???




 --
 Marco Donnarumma
 Independent New Media and Sonic Arts Professional, Performer, Instructor
 ACE, Sound Design MSc by Research (ongoing)
 The University of Edinburgh, UK
 ~
 Portfolio: http://marcodonnarumma.com
 Lab: http://www.thesaddj.com | http://cntrl.sourceforge.net |
 http://www.flxer.net
 Event: http://www.liveperformersmeeting.net

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





 --
 Marco Donnarumma
 Independent New Media and Sonic Arts Professional, Performer, Instructor
 ACE, Sound Design MSc by Research (ongoing)
 The University of Edinburgh, UK
 ~
 Portfolio: http://marcodonnarumma.com
 Lab: http://www.thesaddj.com | http://cntrl.sourceforge.net |
 http://www.flxer.net
 Event: http://www.liveperformersmeeting.net

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


Re: [PD] The economics of Open source

2011-03-23 Thread Charles Henry
I thought I'd pose a question to you, for academic curiosity.  For example,
in my current line of work, cluster computing, there's a lot of possible
funding models for supporting maintenance, and they all have different
~unintended consequences.  (ex) You lose customers, waste cycles, delay
research schedules, and they all have some other costs associated.
Economics just works that way.

But in general, I wonder what produces the best outcomes for software
development.  It's an impossible question to answer without having much time
to waste, so don't try too hard :)

Could a open-source project with a funding model lead to better code than a
professional solution?

Could you just dangle some cash on the end of a string and the cats will
just herd themselves?

On Sat, Mar 19, 2011 at 2:34 PM, Mathieu Bouchard ma...@artengine.cawrote:

 On Sat, 19 Mar 2011, Bernardo Barros wrote:

  Hello , Mathieu! Well, I did not refer to implementation of new features,
 but the maintenance of that code that already works, fixing bugs.


 Ok, so, basically, buggy software gets rewarded for requests to fix bugs.
 Bugless software is not rewarded : it does not pay. Therefore we are
 encouraged to put enough bugs in there so that we get money. Nevermind the
 high-reliability ideals.

 (Of course, don't let my comments prevent you from contributing money. I'm
 just trying to say that some assumptions about funding may encourage the
 wrong things and cause strange compensations.)


  ___
 | 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-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] dissonance_curves_mod.pd

2011-01-23 Thread Charles Henry
Yeah, I wrote that one.

It can be used to approximate the graphs for dissonance between two complex
tones having up to 5 components.

Chuck

On Sat, Jan 22, 2011 at 6:33 AM, richard duckworth
richduckwo...@yahoo.comwrote:

 Hi all,
 does anyone know who authored this patch
 'dissonance_curves_mod.pd' ?

 It's a dissonance curve calculator

 Thanks, Rich

 Rich Duckworth
 Lecturer in Music Technology
 Department of Music
 House 5
 Trinity College
 Dublin 2
 Ireland

 Tel 353 1 896 1500

 It's the most devastating moment in a young mans life, when he quite
 reasonably says to himself, I shall never play The Dane!



 ___
 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] dissonance_curves_mod.pd

2011-01-23 Thread Charles Henry
On Sun, Jan 23, 2011 at 4:54 PM, Alexandre Porres por...@gmail.com wrote:

 Hey Chuck, nice to meet more people that work with this. I had a fast
 glimpse at it, is it done over Parncutt's implementation of Hutchinson and
 Knoppof's model?

 cheers
 Alex


No, it's not a technically accurate model--I was just using it as a tool to
look at some equal tempered scales for instruments with non-harmonic
spectra.  I was using the patch posted by Julian, here:
http://lists.puredata.info/pipermail/pd-list/2006-05/038620.html

I just made an assumption about the additivity of dissonance from pairs of
frequencies in complex tones.  Each pair of tones in the patch contributes
an amount of dissonance (which depends on the frequencies) that's multiplied
by the square root of the product of the amplitudes.

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


Re: [PD] HHT HilbertHuangTransform objects in Pd?

2010-11-15 Thread Charles Henry
On Mon, Nov 15, 2010 at 10:54 AM, Mathieu Bouchard ma...@artengine.cawrote:

 On Mon, 15 Nov 2010, Charles Henry wrote:

  However, there's an interesting and useful approximation given by the
 hilbert~.pd patch (provided in the extra directory perhaps?).  It uses two
 all-pass biquad filters that are ~90 degrees out of phase with each other to
 approximate the hilbert transform.


 Unfortunately, there are two different things called Hilbert Transform, and
 the one with the two biquads doesn't approximate Hilbert's decomposition,
 they approximate the other thing called after Hilbert.
 (is that right ?)


I don't know... The Hilbert transform on a function g(t) is this thing:
Hg = 1/pi * integral( s=-inf, inf ,   1/(t-s)*g(s) *ds)
or in other words, convolution by 1/(pi*t)

and there's a complex valued signal based on g(t)
h(t) = g(t) + i*Hg(t)

The Hilbert transform gives you just the imaginary part.  The hilbert~.pd
patch approximates this complex valued signal h(t).  I know there's a
reference to single-sideband modulation in the help patch if that's
related--is h(t) called the analytic signal?
___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] OT: Emotiv EPOC

2010-11-12 Thread Charles Henry
Hi,

The Open EEG list has been following the Emotiv EPOC hacks for quite a long
time now.  See this thread on the Emotiv Epoc for starters:
http://sourceforge.net/mailarchive/forum.php?thread_name=4CA4EA3C.5060206%40jetned.deforum_name=openeeg-list

On Thu, Nov 11, 2010 at 7:04 AM, cosmin O_O horiacos...@hotmail.com wrote:

  Take a look at:

 http://www.ghostlab.org/1_consurgens

 Open EEG  BrainBay  MidiYoke  Pd-extended

 Cosmin



  Date: Wed, 10 Nov 2010 19:06:02 -0500
  From: mgr...@syr.edu
  To: pd-list@iem.at
  Subject: [PD] OT: Emotiv EPOC

 
  Hello,
 
  Just wondering if anyone has seen this? Or used it with PD? Just read
  about it on the max/msp forums OR other ways to get brain waves
  into PD? Just curious what projects there might have been. I am trying
  to conceptualize my own.
 
  cheers
  mark
 
  --
 
  ___
  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


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


Re: [PD] [OT] how many [your favourite os here] users does it take to screw in a light bulb? [WAS]: Re: Pd-extended 0.42.5 release candidate 6 released!

2010-09-20 Thread Charles Henry
how many classic macintosh users does it take to screw in a light bulb?
One.  It does everything you want as long as all you want it to do is screw
in light bulbs.

On Sat, Sep 18, 2010 at 12:16 PM, Lorenzo lsut...@libero.it wrote:

 João Pais wrote:

 how many linux users does it take to screw in a light bulb?

 None: Someone hacked a Perl script in 1992 using vi to do it and it still
 works. :P

 Lorenzo


 3 full time people, plus the help of online pages in the internet, and
 lots of hours going around forums and chats. and in the end the bulb still
 doesn't work because it can't compile, or one of the libraries is too
 old/too new, or the software is allergic to the hardware, or something else
 that no one can explain.

 that sums up my experience with linux so far. windows works for me, I do
 all my performances with it and never regreted it.


  Windows7_Error: 001 Windows 7 loaded - Warning your computer is now in
 danger

 2010/9/17 Mathieu Bouchard ma...@artengine.ca:

 On Fri, 17 Sep 2010, patko wrote:

  (please don't read this serioulsy)


 Hahaha ! Hey, I have one :

 Q: how many Windows users does it take to screw a light bulb ?

 A: None : Windows can very well screw anything on its own !

 (intraduisible)

  ___

 | Mathieu Bouchard -- Villeray, Montréal, QC


 ___
 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

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


Re: [PD] [ot] sueing the mailing list...

2010-08-23 Thread Charles Henry
On Mon, Aug 23, 2010 at 5:49 AM, IEM - network operating center
(IOhannes m zmoelnig) n...@iem.at wrote:

 what do you think of all this?


 fgmasdr
 IOhannes

The best thing to do would not be to waste too much time on it.  Maybe
this is an unfair generalization, but an admin's work involves
unreasonable/stupid requests on a daily basis.  Maybe this one is
exemplary, but it belongs in the same file with the rest, and a token
reply:
Here ya go, jerk.  It's done.

Chuck

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


Re: [PD] Yet another post about cpu consumption... (for Linux users)

2010-08-05 Thread Charles Henry
On Thu, Aug 5, 2010 at 11:21 AM, Pierre Massat pimas...@gmail.com wrote:

 Can it be harmful to let the cpu run at full speed all the time? Or is it
 just a matter of energy consumption?

It's not particularly harmful, but your cpu may run hotter and consume
more power.  You can disable the cpu throttling and thermal protection
features in the bios usually.  That's what I do with my overclocked
core2 duo desktop machine.  The performance gets bad at above 60C and
you'll be in danger of damage.  I've stress tested this one and
haven't broken it yet.

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


Re: [PD] py/mysql

2010-06-09 Thread Charles Henry
I am just now debugging a completely different application at work
(CellProfiler Analyst), and trying to figure out this same error.

The application is pre-compiled, and the *.pyc files are put into
site-packages.zip.  It retrieves the correct files from the archive,
but then complains about not having the init_mysql function.  I also
am running a 32-bit application on a 64-bit capable machine.

Chuck

On Wed, Jun 9, 2010 at 12:45 PM, Dafydd Hughes dafyd...@gmail.com wrote:
 Hey everybody

 It's been a while - I hope everybody's good.

 Having a bit of an issue, and hoping somebody can help. I'm trying to use py 
 in pd-extended 0.41.4 to add to a mysql db table using MySQLdb. The python 
 script works fine on its own, but once I get it into py I get the following 
 errors:

 py - No namespace available
 Traceback (most recent call last):
  File /Users/dafydd/Documents/pd/Sound Sorter/db_add.py, line 1, in module
    import MySQLdb
  File build/bdist.macosx-10.6-universal/egg/MySQLdb/__init__.py, line 19, 
 in module
  File build/bdist.macosx-10.6-universal/egg/_mysql.py, line 7, in module
  File build/bdist.macosx-10.6-universal/egg/_mysql.py, line 6, in 
 __bootstrap__
 ImportError: dynamic module does not define init function (init_mysql)

 I've done some searching and it sounds like this might be an issue with 32bit 
 vs 64 bit builds, but I have no idea where to start. I'm on a macbook pro i7 
 (64 bit, right?). Would Pd have an effect here? Have I screwed something up?

 Sorry to be so vague - using the py/python/mysql combination is pretty new to 
 me.

 cheers
 dafydd
 ___
 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] py/mysql

2010-06-09 Thread Charles Henry
Okay, my situation has been somewhat different, after all.  I am
running into architecture related problems with libraries.  In
particular, I was able to diagnose the problem using the file and
dyldinfo commands.  The library you (probably) need to find is
_mysql.so and take a look at what the library does.

file _mysql.so
_mysql.so: Mach-O universal binary with 2 architectures
_mysql.so (for architecture i386):  Mach-O bundle i386
_mysql.so (for architecture ppc):   Mach-O bundle ppc

dyldinfo -arch i386 -export _mysql.so
which shows me a full table of exported symbols.

however,
dyldinfo -arch x86_64 -export _mysql.so is empty
and so is the table printed by:
dyldinfo -arch ppc -export _mysql.so

I hope that helps somewhat.
Chuck


On Wed, Jun 9, 2010 at 2:39 PM, Charles Henry czhe...@gmail.com wrote:
 I am just now debugging a completely different application at work
 (CellProfiler Analyst), and trying to figure out this same error.

 The application is pre-compiled, and the *.pyc files are put into
 site-packages.zip.  It retrieves the correct files from the archive,
 but then complains about not having the init_mysql function.  I also
 am running a 32-bit application on a 64-bit capable machine.

 Chuck

 On Wed, Jun 9, 2010 at 12:45 PM, Dafydd Hughes dafyd...@gmail.com wrote:
 Hey everybody

 It's been a while - I hope everybody's good.

 Having a bit of an issue, and hoping somebody can help. I'm trying to use py 
 in pd-extended 0.41.4 to add to a mysql db table using MySQLdb. The python 
 script works fine on its own, but once I get it into py I get the following 
 errors:

 py - No namespace available
 Traceback (most recent call last):
  File /Users/dafydd/Documents/pd/Sound Sorter/db_add.py, line 1, in 
 module
    import MySQLdb
  File build/bdist.macosx-10.6-universal/egg/MySQLdb/__init__.py, line 19, 
 in module
  File build/bdist.macosx-10.6-universal/egg/_mysql.py, line 7, in module
  File build/bdist.macosx-10.6-universal/egg/_mysql.py, line 6, in 
 __bootstrap__
 ImportError: dynamic module does not define init function (init_mysql)

 I've done some searching and it sounds like this might be an issue with 
 32bit vs 64 bit builds, but I have no idea where to start. I'm on a macbook 
 pro i7 (64 bit, right?). Would Pd have an effect here? Have I screwed 
 something up?

 Sorry to be so vague - using the py/python/mysql combination is pretty new 
 to me.

 cheers
 dafydd
 ___
 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] tabread4~ broken interpolation algorithm - was Re:, Max Smoother Audio than Pd?

2010-04-02 Thread Charles Henry
 You're trying to restrict the analysis to a convenient (but reasonable)
 class of signals, and to assume that the signal to be interpolated, x,
 belongs to that class. Right?

Well, sort of.  What works well as an interpolator for one signal may
not work well for another.  The point I started from was asking the
question, what would make a good measure of the error when we use a
given interpolator?

So, if I just wanted to average across all frequencies the squared
error, I thought the problem would be equivaled to this one:

 E=|f(x)-sinc(x)|^2 is minimized when

 f(x)={sinc(x) -2x2  ,0 elsewhere

And then it's the same as having an operator acting on a flat spectrum signal.

 It doesn't make any sense, as far as I can see, to assume that the signal
 being interpolated belongs to the class of function whose spectrum has a
 flat modulus (and any phase).
 Why not assuming then, for example, that x(t) is a constant?
 (please don't take my tone as sarchastic)

 What does make some sense (it is a strong hypothesis but discussing its
 plausibility would bring the discussion to a much higher level) is to treat
 the signal x as a stochastic process with a given power spectrum - such as
 flat, or pink.

So, I assumed the signal spectrum flat so that I could average over
all the frequencies.  True it doesn't fit the actual use cases and
give us the error in a signal we'd actually like to see--it's just
sort of a toy problem, but it goes back to the reason why we're
looking at it in the first place, to consider what happens when we
just choose one measure (L2 normed error in signal reconstruction
averaged across all frequencies) and then find the best result.

This class of functions to consider is useful if we're going for
rigourous math here... but maybe we've strayed too far outside the
topic and should just stick to calculus?

Suppose we choose our metric and work it out.  If the correct result
doesn't behave well or doesn't fit our criteria, then how should we
create a better measure?

 But that means that the quantity you're minimizing is no longer an integral
 of the signal minus some other signal all squared: it is the expectation of
 something.

 The power spectrum of a stochastic process x(t) is not the fourier transform
 of x(t), it is the fourier transform of tha autocorrelation function of x
 (or something like that).

The hardest class I ever had was stochastic analysis (as recent as 4
years ago), where we solved problems like this.  Fundamentally, it's
not too hard, but the details of the calculus are tricky.  I'd prefer
to stay away unless there's a real good reason to do so :)

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


Re: [PD] Spectral Shiffting

2010-04-02 Thread Charles Henry
There's a method of tuning partials that William Sethares uses in his
compositionss and he talks about it in his book Tuning Timbre Spectrum
Scale.

Specifically, he was also using inharmonic instruments which would be
arranged into consonant scales, and the similar problem of using
arbitrary scales with inharmonic spectra to fit with least dissonance.
 I know I read the spectral mapping technique he uses, but I didn't
really understand how it works.

On Fri, Apr 2, 2010 at 2:38 PM, Alexandre Porres por...@gmail.com wrote:
 Hi folks,
 I'd lke to distort a sound spectrum by transposing partials the way I want.
 Like making the spectrum more inharmonic or harmonic.
 Anyone done something similar?
 What kind of processing should I use?
 I was thinking that maybe a Phase Vocoder, where you could control the
 frequency separately, huh!?!? Anyone did this by the way?
 thanks a lot
 Alex
 ___
 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] tabread4~ broken interpolation algorithm - was Re:, Max Smoother Audio than Pd?

2010-04-01 Thread Charles Henry
On Wed, Mar 31, 2010 at 5:12 PM, Matteo Sisti Sette
matteosistise...@gmail.com wrote:
 It occurs to me that there exists one very obvious function for which
 the squared error is minimized for a 4-point interpolator.  4-point
 interpolator impulse functions have to be 0 outside the interval
 [-2,2].

 So,
 E=|f(x)-sinc(x)|^2 is minimized when

 f(x)={sinc(x) -2x2  ,    0 elsewhere

 I may be missing something but I'm afraid the E in your formula is not the
 error that is supposed to be minimized.

Sorry, I often go kind of fast-and-loose with the math, but I think
you'll see it's true within a certain context, which you may or may
not accept.

 The ideally interpolated signal (which is the one in reference to which the
 error has to be minimized) is not just a sinc: it is the sum of an infinite
 series of sinc's centered at the sampled points and scaled with the sampled
 values.

Let x be the series of samples, each multiplied by Dirac-delta
functions at the sample times.  Let S be the convolution operator
which convolves a function by sinc(t) and let F be our arbitrary
convolution operator which convolves by an interpolation function
f(t).

Then, the quantities we need to compare are Sx and Fx where we want to
minimize the L2 norm, the integral of the squared error (Sx - Fx)^2

|Sx-Fx|^2 = |(S-F)x|^2

The error depends on x the signal.  Here, I want to make the
*convenient* assumption that the spectrum of x is flat, since we want
some kind of generality and we want to minimize average error across
frequencies.  This would make the problem equivalent to using just
*one* dirac-delta in place of x and we would get the problem to reduce
back to just the difference of the impulse responses

|sinc(t)-f(t)|^2

For a little while, I was going in circles on how to minimize operator
norms, but it's not quite the right problem for that and I'd probably
spend all day on it, that way :)

 (I won't try to write it in a latex-like fashon, I would certainly get it
 wrong - not because of latex syntax, I mean I would get it wrong even if I
 tried to write it down manually)

I'm reluctant to try latex because it looks like too much work, but I
think lyx (a wysiwyg latex editor) is more my speed.

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


Re: [PD] Combat aliasing!

2010-04-01 Thread Charles Henry
 The interpolation, since it cannot be an ideal interpolation, may introduce
 other noises or artifacts, not aliasing as far as I can see.

There's two parts to it, aliasing (stopband) and non-flat frequency
response (passband).  Since interpolation of uniform samples is
linear, what we see in interpolation is the introduction of other
frequencies.

The intermediate stage between sampling and playback is a dirac-delta
comb which takes our original spectrum and copies it centered at n*fs
for all n.  It's an infinitely long spectrum.  The interpolation is a
linear convolution operator on the dirac-delta comb.  The distortion
we observe comes from non-flat frequency response in the passband (0
to Nyquist) and from the copied spectra above the Nyquist frequency.

Now, we hardly realize its there, because we don't represent the
intermediate stages.  We only need to get the output at a series of
discrete points, so we only need to evaluate the convolution at those
discrete points.

Chuck

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


Re: [PD] tabread4~ broken interpolation algorithm - was Re:, Max Smoother Audio than Pd?

2010-04-01 Thread Charles Henry
I get what you're saying too, and I'm at least a little skeptical
myself.  But as I think about it generally, my entire approach to
looking at these problems has been very similar.

I basically thought that when comparing interpolators, I could
disregard the signals involved and just look at the properties of the
impulse responses (or convolution kernels or spectra, etc...).  So, if
I can't do that, I really have to rethink what I know.

On Thu, Apr 1, 2010 at 10:44 AM, Matteo Sisti Sette
matteosistise...@gmail.com wrote:

 Here, I want to make the
 *convenient* assumption that the spectrum of x is flat

 Stated this way, it sounds reasonable, doesn't it. If it does, then it means
 that by flat spectrum you mean the _power spectrum_ of x considered as a
 _stochastic process_ rather than a deterministic signal.

When it comes to the general class of functions with flat spectra, the
only difference is in phase, right?
But the error is the same in time domain as in frequency domain thanks
to the isometric property of the Fourier transform.  Our interpolation
is the same as a convolution, so we're still just multiplying our
spectra and the phase comes out differently in each frequency.

So, when we integrate the error^2 in the frequency domain, the phase
makes no contribution, and then, it's really just the same thing as
the error in the time domain.  Then, all flat spectra are equivalent
for this problem.  I really am enjoying this math discussion, and I do
want to be corrected or shown something I don't see yet.  Please let
me know if there's something wrong with what I'm saying.


 Brought to the domain of time, assuming x has a flat power spectrum means
 assuming x is white noise. (btw a closer-to-reality assumption would be that
 it is pink noise - but that's not the point here) Not a dirac delta.

 So minimizing the error would be to minimize the power, or probably energy,
 of the error meant as a stochastic process.

 Though I should have the notions to go a bit further in at least
 _formulating_ (not solving) the problem, those notions are a bit oxidated,
 if not completely gone from my head :(

 But I'm sure it is not equivalent to minimizing the integral of the
 difference between the operators applied to a delta function.




 --
 Matteo Sisti Sette
 matteosistise...@gmail.com
 http://www.matteosistisette.com


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


Re: [PD] Combat aliasing!

2010-04-01 Thread Charles Henry
On Thu, Apr 1, 2010 at 11:11 AM, Matteo Sisti Sette
matteosistise...@gmail.com wrote:
 Matteo Sisti Sette escribió:

 Oh no, maybe not.
 I read your explanation more carefully and of course, the non-perfectness of
 the interpolation process (i.e. its non-zero frequency response in the stop
 band) is responsible for the persistence of attenuated copies of the
 original spectrum at multiples of the original sampling rate, which then
 appear aliased into the passband when the signal is sampled again at a
 different rate.


 This is what's going on when discontinuities in the interpolated signal
 cause noise at high frequencies, isn't it?

Yes, that's my interpretation and explanation of it.  It works out
nice and linear in the spectral domain *if* we can make that
intermediate step with the Dirac-delta comb which copies the spectrum.
 Then, *all* the deviations in the reconstructed signal come from the
places where the spectrum does not match the ideal response.

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


Re: [PD] tabread4~ broken interpolation algorithm - was Re: Max Smoother Audio than Pd?

2010-03-31 Thread Charles Henry
 I don't know either.  We have the formulas for each, so we can
 calculate squared error vs. sinc(x), but there also appears to be
 differences in which frequencies the distortion occurs and some could
 be more audible.

It occurs to me that there exists one very obvious function for which
the squared error is minimized for a 4-point interpolator.  4-point
interpolator impulse functions have to be 0 outside the interval
[-2,2].

So,
E=|f(x)-sinc(x)|^2 is minimized when

f(x)={sinc(x) -2x2  ,0 elsewhere

Note that since the Fourier transform is isometric and linear, we know
that a function which minimizes the error in the time domain also
minimizes error in the frequency domain.  This spectrum ought to have
a lot of ringing in the upper frequency range, and in the stopband.

So, if we only considered the squared error in the reconstruction and
not the smoothness of the result, this would be the clear choice.  How
would we factor in the smoothness as well?

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


Re: [PD] [PD-dev] CUDA discussion

2010-02-24 Thread Charles Henry
I'm still studying the Pd source code and trying to figure out the
best place to tie in CUDA functions.  I think, What I'd like to do is
create a special canvas that owns cuda pd objects, handles their
memory allocation and adds them to the dsp graph.  Is this on the
right track?

Chuck

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


Re: [PD] Echo cancellation, adaptative filtering

2010-01-07 Thread Charles Henry
On Thu, Jan 7, 2010 at 1:18 PM, Roman Haefeli reduzie...@yahoo.de wrote:

 Seriously, I think there is only little point in pointing to how others
 did it better. I haven't looked at your externals, though, but I pretty
 sure, that they are _very_ advanced (from my perspective. me, who
 doesn't have a clue about adaptive filtering at all, yet). It seems to
 be quite an interesting subject, when looking at your webpage.

Doing it better or worse is not the issue.  It's how well it fits your
application.  There's as many adaptive filters as you've got fingers
and toes, and there's quite a few different methods for the
adaptation.

Questions for the application are things like:
How long is the filter going to be?
Are you trying to solve a system modeling problem or a system inverse
problem?  Acoustic echo cancellation can mean either identifying the
system on the receiving end, or solving the inverse problem on the
output side.
Are you trying to filter a non-stationary system or make a calibrated system?
How fast does the convergence need to be?
How much latency is in the system?  You can't realistically expect to
make good adaptations if you're updating the system when the output
hasn't reached its way back since the previous adaptation.
Last one, and trickiest... are you trying to solve a problem that's
badly conditioned?

One class of methods is gradient descent.  These would be LMS, NLMS,
and RLS.  These typically have a burn-in period of about 10^2 to 10^4
and then a logarithmic rate of error decreases.  These are better for
system identification problems than inverses.

One issue here is that the gradient can be very small along certain
vectors.  So, your system acts as a unary operator on the signal you
feed through it.  It has eigenvectors and eigenvalues.  For linear
systems, the Riesz representation theorem applies, and we have an
integral equation with a kernel that can be decomposed into
eigenvector/eigenvalue pairs.  For systems good for filtering, we have
convolution operators whose eigenvectors are complex sines/cosines,
and your eigenvalues are the spectrum of the signal in convolution.

Gradient descent methods can only converge in the bad spots at the
rate of f_min/f_max (the spread of the magnitudes in the spectrum).
This is generally not a problem, since these spots also make small
contributions to the error.  But you will have some vectors in your
filter that just never converge to anything good, and depending where
you start from, you will get different solutions.

Then, there's the Gauss-Newton methods.  These are like magic for
certain problems.  Where the error function is linear-quadratic and
your operator is positive definite, the filter will converge to
something good in one shot.  An example of this method is the block
frequency domain method.  It's problematic where operators are
positive semi-definite--things can blow up easily and the system will
be prone to noise.  There are ways to regularize the 2nd derivative
operator so that it's inverse is stable, but it also reduces the
convergence rate.

I've got a method in the works (all except for implentation) for
minimizing the product of error and filter variance that will achieve
a trade-off between goodness of fit and computational expense at a
uniformly fast convergence rate, regardless of the ill-behavior of the
system.  It's sort of halfway between gradient descent and regularized
Gauss-Newton.  The idea of which is to solve the system closely where
the solution is good and be able to set the remaining parts of the
filter arbitrarily to make the filter look good, since they can't
affect the results much.

This is all much in how I just look at these problem and analyze
things to death, even when it's not warranted.  You might just grab an
implementation that exists, integrate it correctly on the first try,
and forget all about the analysis.  But the interesting problems
generally require a couple tries and a couple good guesses :)

Chuck

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


Re: [PD] Echo cancellation, adaptative filtering

2010-01-06 Thread Charles Henry
I tried to do it with wavelet subbands.  I failed miserably.  Mostly,
it was because I didn't get all the math the first time around.  I
also tried making some adaptive reverberation analysis routines, which
failed due to lack of computational power.  Now, I've got the math
nailed down and put together a solid development computer but have not
worked on the implementation lately.

Let me know if you need any help with this stuff.  Perhaps we can
collaborate to make something that actually works!

Chuck

On Wed, Jan 6, 2010 at 10:47 AM, Damien Henry d...@dh7.net wrote:
 Hi List,

 Does anyone implemented some echo cancellation or adaptative filtering with
 pd ?

 Cheers,
 Damien.



 ___
 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


  1   2   3   >