Working with Scanned Synthesis

January 3rd, 2003

steven yi

email:stevenyi@csounds.com

web:http://www.csounds.com/stevenyi

copyright (c) 2003 steven yi - all rights reserved



INTRODUCTION

When Scanned Synthesis (1) was initially introduced into the Csound world by Paris Smaragadis in 2000, I was excited to hear about a new synthesis technique.  However, my initial foray was unfruitful as I had a hard time understanding the model and how to go about working with it.  

Recently, though, I was again curious to spend time with and understand what Scanned Synthesis is and how to work with it.  As it had been a couple of years since my initial exploration, I was able to look at Scanned Synthesis with some fresh eyes, and with absolute delight, I've found it to be a truly beautiful sound synthesis technique.

I wanted to share some of my thoughts and experiences in regards to working with Scanned Synthesis. These are initial thoughts and impressions that I experienced in my venture through the technique.  This initial text has some of the instruments I have been using for fixed-pitch sounds. I've had pretty good success at making interesting non-fixed-pitch noise/sound patches which I'd like to share at a later time when I have the Csound/blue files reworked for easier reading.

As I continue to work with Scanned Synthesis I hope to be able to share more information and Csound instruments in the future.  

thanks,
steven

NOTE: It is recommended that before proceeding that you read Dr. Boulanger's "Scanned Synthesis TOOT", available at http://www.csounds.com/scanned.


THOUGHTS ABOUT STRING INSTRUMENTS

-Scanned Synthesis is a physical model developed with a string in mind.  Thinking in terms of acoustic stringed instruments helped me progress in understanding and also designing Scanned Synthesis instruments.  Often when editing these instruments I found that what I thought might influence the sound in one way ended up doing so in another way, and that what I initially thought in regards to a stringed instrument often didn't map to what I heard.  However, thinking in terms of the string instrument model really did give me a starting point from which to work with Scanned Synthesis.

-Most stringed instruments are not a string alone but also have a resonant body.  Using Scanned Synthesis alone is like using a string alone.  By itself, I've found the spectral content of the synthesis to be somewhat "tinny", but that's not unlike a string alone.  Think of it this way: a violinist with a Stradivarius and a violinist with a cheap student instrument can have the same exact strings but have wildly different sound qualities.  The quality of the string alone is the same in both cases, but the perceived sound to a listener is different due to the alterations to the sound from the resonant body.

-When coupled with a filter and bit of reverb, i found that the sounds I could get really deepened quite a bit, becoming extremely warm and rich.  The liveliness of that original Scanned Synthesis sound remains to animate the spectrum in a way that I find "natural", for lack of a better term.

-The string is "always-on" though requires an excitation to create sound.  In a resting state, the string does not produce sound.  When there is an excitation to the string, sound is produced.  The sound produced has a direct relationship to the excitation.

-There are many ways to play a string.  You can hammer it, pluck it, bow it with a stringed bow, use it as a resonant body (i.e. singing into a piano with pedal down), use an e-bow with it, scrape it, etc.  Each form of excitation moves the string system: some excitations are a single input into the string system and others are a continuous input into the string system.  A single motion (hammer, pluck) will displace the string and then allow it to settle according to its properties (tension, mass weight, etc. in the Scanned Synthesis model).  A continuous motion (bow, e-bow, string as resonant body) will add a constant displacement to the string per unit time, while the string will also settle somewhat in that unit time.  The interaction of the excitation force and the settling force will generally keep the string's energy in a somewhat constant state.



EXPERIMENTING

-Matrices used for Scanned Synthesis determine the connection between the individual masses.  The more connections a single mass has, the more complex the animation of the surface will be.  What I've found is that as the complexity of connections increases, the sound tends to die away more quickly, and the quality of sound is more complex/noisy.  A random matrix will yield interesting sounds but it needs to be driven pretty hard to keep the interesting surface going or it will die away quickly.

-When using the scanu/scans opcode pair, two ways to influence the surface are by setting an initial position (the init parameter to scanu) or by exciting the model (the ain parameter).  If you don't use the ain parameter and set the initial position to something other than zero's, then it's like you're plucking the model.  From here, you can influence the surface by changing the properties of the surface at k-rate (kmass, kstiff, kcenter, kdamp).  This would be like tightening a string while it is resonating or maybe muting a string.  If you use ain with an audio signal with very low values, it can be used as a constant excitation to the model, similar to bowing or other performance methods.  In i1 of the example instruments, ain is generated with the linseg opcode. The scans audio output is lowpass filtered and run through a short .1 second reverb to model a resonant body.  The output is then sent to a global reverb, which is there to model the room the instrument is played in.  

instr 1

kpch = cpspch(p4)
iforce = p6 * .0004

ain linseg 0, 1, iforce, p3 - .1, 0

kenv linseg 0, 1, 1, p3 -.7, 0

ifnmatrix = p5
iscantable = p7

; PARAMETERS FOR SCANU
iInit = 1
irate = .02

ifnvel = 6
ifnmass = 2
ifncenter = 4
ifndamp = 5

kmass = 2
kstiff = .05
kcenter = .1
kdamp = -.4

ileft = .1
iright = .3
kpos = .2
kstrength = 0

idisp = 0
id = 2


scanu iInit,irate,ifnvel,ifnmass,ifnmatrix,ifncenter,ifndamp,kmass,kstiff,kcenter,kdamp,ileft,iright,kpos,kstrength,ain,idisp,id

aout scans 15000, kpch, iscantable, 2
aout = aout * kenv
aout dcblock aout

aout butterlp aout, kpch * 8 * kenv
aout butterlp aout, kpch * 8 * kenv

aout nreverb aout, .1, .2


ga1 = ga1 + aout
ga2 = ga1 + aout

endin

-Thinking of work with other synthesis methods, what could I try with Scanned Synthesis?  How does it map to physical properties of an instrument?  In i2 of the example instruments, I tried to feedback the aout signal into the ain parameter of the scanu opcode.  

instr 2

ain init 0

kpch = cpspch(p4)
iforce = p6 * .0004

aforce linseg 0, 1, iforce, p3 - .1, 0

ain = ain + aforce

kenv line 1, p3, 0
kpch = cpspch(p4)

ifnmatrix = p5
iscantable = p7

; PARAMETERS FOR SCANU
iInit = 1
irate = .02

ifnvel = 6
ifnmass = 2
ifncenter = 4
ifndamp = 5

kmass = 2
kstiff = .05
kcenter = .1
kdamp = -.4

ileft = .1
iright = .3
kpos = .2
kstrength = 0

idisp = 0
id = 2


scanu iInit,irate,ifnvel,ifnmass,ifnmatrix,ifncenter,ifndamp,kmass,kstiff,kcenter,kdamp,ileft,iright,kpos,kstrength,ain,idisp,id

aout scans 30000, kpch, iscantable, 2

ain = (aout / 30000) * .0002 ; feeding back the out signal into scanu

aout = aout * kenv
aout dcblock aout

aout butterlp aout, kpch * 8 * kenv
aout butterlp aout, kpch * 8 * kenv

aout nreverb aout, 1, .2


ga1 = ga1 + aout
ga2 = ga1 + aout

endin


-With a string instrument like a violin there are usually two strings involved in the instrument's sound: the string on the instrument and the string on the bow.  They both have equal excitation force to their string systems as they are exerting pressure on each other.  The strings differ in their physical qualities: mass, stiffness, etc.  The vibrations of each string system, then, are not completely self-determined as each string also excites the other.  In i3 of the example instruments, I tried to use two different sets of scanu/scans opcodes to model the two string systems' interactions with each other.  

instr 3

ain init 0

kpch = cpspch(p4)
iforce = p6 * .0004

aforce linseg 0, 1, iforce, p3 - .1, 0

ain = aforce - ain



kenv line 1, p3, 0
kpch = cpspch(p4)

ifnmatrix = p5
iscantable = p7

; PARAMETERS FOR SCANU
iInit = 1
irate = .02

ifnvel = 6
ifnmass = 2
ifncenter = 4
ifndamp = 5

kmass = 2
kstiff = .05
kcenter = .1
kdamp = -.4

ileft = .1
iright = .3
kpos = .2
kstrength = 0

idisp = 0
id = 2


scanu iInit,irate,ifnvel,ifnmass,ifnmatrix,ifncenter,ifndamp,kmass,kstiff,kcenter,kdamp,ileft,iright,kpos,kstrength,ain,idisp,id

scanu iInit,irate,ifnvel,ifnmass,ifnmatrix,ifncenter,ifndamp,1,.04,kcenter,kdamp,ileft,iright,kpos,kstrength,aforce,idisp,3

aout scans 30000, kpch, iscantable, 2
aout2 scans 30000, kpch, iscantable, 3

ain = (aout2 / 30000) * .02

aout = aout * kenv
aout dcblock aout

aout butterlp aout, kpch * 8 * kenv
aout butterlp aout, kpch * 8 * kenv

aout nreverb aout, 1, .2


ga1 = ga1 + aout
ga2 = ga1 + aout

endin


FINAL NOTES

-I'm still experimenting with the parameters to the scanu opcode to find the set of parameters that will provide a surface animation that acts more like a string, having a relatively quick decay to silence.  (This is using the string-128 matrix.)

-How I'm going about working with Scanned Synthesis may very well be not what was intended, but already I'm getting sounds which are musically satisfying to my taste.  It's encouraging to know such a quality of sound is attainable with a minimal understanding of the method.


FOOTNOTES

1. Scanned Synthesis is a synthesis method developed by Bill Verplank, Max Mathews and Rob Shaw at Interval Research.  More information can be found at http://www.csounds.com/scanned .