[PD] Scanned Synthesis in PD using webcams

Frank Barknecht fbar at footils.org
Wed Jul 18 19:08:13 CEST 2007


Hallo,
enrique franco hat gesagt: // enrique franco wrote:

> Hi Hans,
> >>
> >>
> >>     Check out this very nice example from chdh that combines physical
> >>     models, Gem graphics, and scanned synthesis.  You can find it in the
> >>     Help Browser of Pd-extended, Help->Browser->examples->pmpd-
> >>      > 50.scann_synth.pd
> >>
> >>     .hc
> Could you explain me how does the sound works in the >pmpd->
> 50.scann_synth.pd patch?

Basically you write the positions of the masses into a table, then
play back the table with [tabread4~] or [tabosc~].

The example patch does some more things to avoid clicks when changing
the table and also does a little playing with panning, but basically
it's just that.

Scanned synthesis actually is much easier to do with msd2D. Just
create a string of 32 connected masses inside msd, for example using
these settings made for a [textfile]

reset;
mass 0-m 0 100 -4.000000 0;
mass 0-m 1 100 -3.750000 0;
mass 0-m 1 100 -3.500000 0;
mass 0-m 1 100 -3.250000 0;
mass 0-m 1 100 -3.000000 0;
mass 0-m 1 100 -2.750000 0;
mass 0-m 1 100 -2.500000 0;
mass 0-m 1 100 -2.250000 0;
mass 0-m 1 100 -2.000000 0;
mass 0-m 1 100 -1.750000 0;
mass 0-m 1 100 -1.500000 0;
mass 0-m 1 100 -1.250000 0;
mass 0-m 1 100 -1.000000 0;
mass 0-m 1 100 -0.750000 0;
mass 0-m 1 100 -0.500000 0;
mass 0-m 1 100 -0.250000 0;
mass 0-m 1 100 0.000000 0;
mass 0-m 1 100 0.250000 0;
mass 0-m 1 100 0.500000 0;
mass 0-m 1 100 0.750000 0;
mass 0-m 1 100 1.000000 0;
mass 0-m 1 100 1.250000 0;
mass 0-m 1 100 1.500000 0;
mass 0-m 1 100 1.750000 0;
mass 0-m 1 100 2.000000 0;
mass 0-m 1 100 2.250000 0;
mass 0-m 1 100 2.500000 0;
mass 0-m 1 100 2.750000 0;
mass 0-m 1 100 3.000000 0;
mass 0-m 1 100 3.250000 0;
mass 0-m 1 100 3.500000 0;
mass 0-m 0 100 3.750000 0;
link 0-l 30 31 10 2.5 1 0 1e+10;
link 0-l 29 30 10 2.5 1 0 1e+10;
link 0-l 28 29 10 2.5 1 0 1e+10;
link 0-l 27 28 10 2.5 1 0 1e+10;
link 0-l 26 27 10 2.5 1 0 1e+10;
link 0-l 25 26 10 2.5 1 0 1e+10;
link 0-l 24 25 10 2.5 1 0 1e+10;
link 0-l 23 24 10 2.5 1 0 1e+10;
link 0-l 22 23 10 2.5 1 0 1e+10;
link 0-l 21 22 10 2.5 1 0 1e+10;
link 0-l 20 21 10 2.5 1 0 1e+10;
link 0-l 19 20 10 2.5 1 0 1e+10;
link 0-l 18 19 10 2.5 1 0 1e+10;
link 0-l 17 18 10 2.5 1 0 1e+10;
link 0-l 16 17 10 2.5 1 0 1e+10;
link 0-l 15 16 10 2.5 1 0 1e+10;
link 0-l 14 15 10 2.5 1 0 1e+10;
link 0-l 13 14 10 2.5 1 0 1e+10;
link 0-l 12 13 10 2.5 1 0 1e+10;
link 0-l 11 12 10 2.5 1 0 1e+10;
link 0-l 10 11 10 2.5 1 0 1e+10;
link 0-l 9 10 10 2.5 1 0 1e+10;
link 0-l 8 9 10 2.5 1 0 1e+10;
link 0-l 7 8 10 2.5 1 0 1e+10;
link 0-l 6 7 10 2.5 1 0 1e+10;
link 0-l 5 6 10 2.5 1 0 1e+10;
link 0-l 4 5 10 2.5 1 0 1e+10;
link 0-l 3 4 10 2.5 1 0 1e+10;
link 0-l 2 3 10 2.5 1 0 1e+10;
link 0-l 1 2 10 2.5 1 0 1e+10;
link 0-l 0 1 10 2.5 1 0 1e+10;
Xmin -4;
Xmax 4;
Ymin -2;
Ymax 2;
setL 0-l 0;

This is 32 masses, where first and last mass are fixed.

Then bang msd2D with a [metro 10] and also do a "get massesPos" on each
bang. In the end it should look like this:

 [x]
 |
 [metro 10]
 |
 [bang, get massesPos(
 |
 |  "pluck"
 | [posY 16 1.5(
 |/
 [msd2D]
 |
 [route massesPos] 
 |
 [$1 $3(
 |
 [s MYTABLE]
  
 [table MYTABLE]

 [200\
 |
 [tabosc4~ MYTABLE]
 |
 [dac~]

Don't forget to send some "posY" or force messages to msd2D to
activate the string.

Ciao
-- 
 Frank Barknecht                 _ ______footils.org_ __goto10.org__




More information about the Pd-list mailing list