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.
Frank Barknecht _ ______footils.org_ __goto10.org__