strindexk
Return the position of the first occurence of S2 in S1, or -1 if not
found. If S2 is empty, 0 is returned.
strindexk runs both at init and performance time.
Syntax
Examples
Here is an example of the strindexk opcode. It uses the file strindexk.csd.
Example of the strindexk opcode. |
---|
| <CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
-odac ;;;realtime audio out
;-iadc ;;;uncomment -iadc if realtime audio input is needed too
; For Non-realtime ouput leave only the line below:
; -o strindexk.wav -W ;;; for file output any platform
</CsOptions>
<CsInstruments>
sr = 44100
ksmps = 32
nchnls = 2
0dbfs = 1
seed 0
instr 1
;get one element of the input string whenever the metro
;triggers, and call a subinstrument to play the file
Smember strget p4
istrlen strlen Smember
kprint init 0
ktrig metro .6
if ktrig == 1 then ;whenever the trigger gives signal
kel random 0, 3.9999 ;choose a random element (0, 1 or 2)
kel = int(kel)
Scopy strcpyk Smember ;make a copy for leaving Smember intact
kndx = 0 ;set the initial index for reading substrings
kcount = 0 ;set counter for searching the element
loop: ;start looping over the elements in Smember
kdelim strindexk Scopy, ":"
if kdelim > 0 then ;as long as ":" occurs in Scopy, do:
if kel == kcount then ;if this is the element to get
Sfile strsubk Scopy, kndx, kdelim ;read it as substring
kprint = kprint+1
kgoto call ;and jump out
else ;if not
Scopy strsubk Scopy, kdelim+1, istrlen ;cut off this element from Scopy
endif
kcount = kcount+1 ;if no element has been found,go back to loop
kgoto loop ;and look for the next element
else ;if there is no delimiter left, the rest is the searched element
Sfile strcpyk Scopy
endif
call: ;print the result, call the subinstrument and play the file
printf "kel = %d, file = '%s'\n", ktrig+kprint, kel, Sfile
S_call sprintfk {{i 2 0 1 "%s"}}, Sfile
scoreline S_call, ktrig
endif
endin
instr 2 ;play
Sfile strget p4
ilen filelen Sfile
p3 = ilen
asig soundin Sfile
outs asig, asig
endin
</CsInstruments>
<CsScore>
i 1 0 30 "marimba.aif:fox.wav:drumsMlp.wav:flute.aiff"
e
</CsScore>
</CsoundSynthesizer>
|
See Also
String Manipulation Opcodes
Credits
Author: Istvan Varga
2006
New in version 5.02