Signal ordering / PhISEM

red's icon
Max Patch
Copy patch and select New From Clipboard in Max.

I'm having a little issue with a quick version of Perry Cook's PhISEM algorithm. It seems that there's a problem with usage of the "value" buffer~. Any suggestions?

red's icon

Any thoughts? This is basically a port of a Reaktor version that I did several years ago. My guess is that the problem is due to how MSP handles signals, and I'm hoping someone may be able to suggest a solution. Thanks.

red's icon

I'll try to make this easier by explaining the algorithm so that you don't have open the patch.

A Poisson process is used to determine when there are collisions. When collisions occur, the measure of energy in the system is added to a stored value. This value is multiplied by a decay amount (0.99 for example) and then stored. The new stored value is multiplied by noise and sent to a bank of parallel bandpass filters.

As this is done on a per-sample basis in MSP, it's not immediately clear how to retrieve and store the value. Any suggestions?

Brad Garton's icon

As you note, the collision-detection and energy decay happens during each sample-computation loop, so I don't know how you could do this in plain-ole vectorized Max/MSP. Three possible solutions:

1. Use the new gen~ stuff in Max6. You have to sort-of 'think backwards' from the procedural code, but it works!
2. Write your own external.
3. Use rtcmix~ :-) [nearly all of the phisem and other STK physical models are included).

Peter Williams's icon

Hi,

This thread came up in a search for background on a master's project I'm doing.

Did you have any luck with this patch?

I'm making a shaker DMI. An accelerometer in a shaker housing sends data to max, the resulting sound is sent back to moving coil exciters in the housing, so that you can hear and feel the sound coming from the instrument.

I was thinking of using the force magnitude from the accelerator as the energy generator for a PHISEM patch.

Also, you refer to Cook's work.... was this a paper or just coding?