scanmap

scanmap — Allows the position and velocity of a node in a scanned process to be read.

Description

Plugin opcode in scansyn.

Allows the position and velocity of a node in a scanned process to be read.

Syntax

kpos, kvel scanmap iscan, kamp, kvamp [, iwhich]

Initialization

iscan -- which scan process to read

iwhich (optional) -- which node to sense. The default is 0.

Performance

kamp -- amount to amplify the kpos value.

kvamp -- amount to amplify the kvel value.

The internal state of a node is read. This includes its position and velocity. They are amplified by the kamp and kvamp values.

Examples

Here is an example of the scanmap opcode. It uses the file scanmap.csd.

Example 939. Example of the scanmap opcode.

See the sections Real-time Audio and Command Line Flags for more information on using command line flags.

<CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
-odac     ;;;RT audio out
;-iadc    ;;;uncomment -iadc for RT audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o scanmap.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

sr = 44100
ksmps = 32
nchnls = 2
0dbfs  = 1

instr scannode

a0 init 0
irate = .001
; scanu2 init, irate, ifndisplace, ifnmass, ifnmatrix, ifncentr, ifndamp, kmass,
;       kmtrxstiff, kcentr, kdamp, ileft, iright, kpos, kdisplace, ain, idisp, id
scanu2 1, irate, 6, 2, 3, p5, 5, 2, 9, .01, .01, .1, .9, 0, 0, a0, 0, 2
kpos,kvel scanmap 2, 100,1, p4     ; amplify the kpos value 100 times
display  kpos, .25                  ; display is updated every .25 of a second
asig poscil .5+kvel, 150+kpos       ; use moving velocity and position of the node 
outs asig, asig
endin

</CsInstruments>
<CsScore>
f1 0 128 10 1                       ; Initial displacement condition: sine
f2 0 128 -7 1 128 1                 ; Masses
f3 0 16384 -23 "string-128.matrxB"  ; Spring matrices

;-------------------------------------
; 2 different Centering forces
f44 0 128 -7 1 128 1                ; uniform initial centering
f4 0 128 -7 .001 128 1              ; ramped centering
;-------------------------------------
f5 0 128 -7 1 128 1                 ; uniform damping
f6 0 128 -7 .01 128 .01             ; uniform initial velocity
f7 0 128 -5 .001 128 128            ; Trajectory

s;                node
i"scannode" 0 10   0    4           ; uniform initial centering ramped centering
i"scannode" 11 10  64   4           ; reading 3 nodes
i"scannode" 22 10 127   4           ; 0 - 64 - 127
s;                node
i"scannode" 0 10   0    44          ; uniform initial centering          
i"scannode" 11 10  64   44          ; reading 3 nodes
i"scannode" 22 10 127   44          ; 0 - 64 - 127

e
</CsScore>
</CsoundSynthesizer>


Here is another example of the scanmap opcode. It uses the file scanmap_matrxT.csd.

Example 940. Second example of the scanma opcode.

<CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
; Audio out   Audio in
-odac         ;  -iadc    ;;;RT audio I/O
; For Non-realtime ouput leave only the line below:
; -o scanmap_matrxT.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>

sr = 44100
ksmps = 32
nchnls = 2
0dbfs  = 1

instr scanmap_Additive

a0 init 0
kp[] init 16
kv[] init 16
giTableKP ftgen 100, 0, -16, 2, 0
giTableKV ftgen 101, 0, -16, 2, 0
scanu2 -1, .1, 6, 2, 3, 4, 5, 2, 10, .001, .01, .1, .9, 0, 0, a0, 1, 2
kp,kv scanmap 2, 1000, 2
copya2ftab kp, giTableKP
copya2ftab kv, giTableKV
a1 poscil ampdbfs(p4)*kv[8], cpsmidinn(p5)+kp[8]
a2 poscil ampdbfs(p4)*kv[13], cpsmidinn(p5)+kp[13]
a3 poscil ampdbfs(p4)*kv[5], cpsmidinn(p5)+kp[5]
a4 poscil ampdbfs(p4)*kv[1], cpsmidinn(p5)+kp[1]
kamp    line    3, p3, 0.01
outs (a1+a4)*kamp, (a2+a3) * kamp
endin

</CsInstruments>
<CsScore>
f1 0 16 10 1 ; initial displacement condition (sine shape)
f2 0 16 -7 1 16 1 ; uniform masses
f3 0 0 -44 "string_with_extras-16.matrxT"
f4 0 16 -7 .001 16 1 ; ramped centering
f5 0 16 -7 .1 16 1 ; ramped damping
f6 0 16 -7 .01 16 .01 ; uniform initial velocity

i "scanmap_Additive" 0 15 -1 72
e
</CsScore>
</CsoundSynthesizer>


See also

Scanned Synthesis

More information on the Scanned Synthesis opcodes: Working with Scanned Synthesis, written by Steven Yi, and some tutorials by Richard Boulanger.

Credits

Author: John ffitch

New in version 6.17