diff options
Diffstat (limited to 'examples/strcpyk.csd')
-rw-r--r-- | examples/strcpyk.csd | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/examples/strcpyk.csd b/examples/strcpyk.csd new file mode 100644 index 0000000..f6ec1bd --- /dev/null +++ b/examples/strcpyk.csd @@ -0,0 +1,85 @@ +<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 strcpyk.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 + + ;whenever the trigger gives signal + if ktrig == 1 then + ;choose a random element (0, 1 or 2) +kel random 0, 3.9999 +kel = int(kel) + ;make a copy for leaving Smember intact +Scopy strcpyk Smember + ;set the initial index for reading substrings +kndx = 0 + ;set counter for searching the element +kcount = 0 + ;start looping over the elements in Smember +loop: +kdelim strindexk Scopy, ":" + ;as long as ":" occurs in Scopy, do: + if kdelim > 0 then + ;if this is the element to get + if kel == kcount then + ;read it as substring +Sfile strsubk Scopy, kndx, kdelim +kprint = kprint+1 + ;and jump out + kgoto call + ;if not + else + ;cut off this element from Scopy +Scopy strsubk Scopy, kdelim+1, istrlen + endif + ;if no element has been found,go back to loop + ;and look for the next element +kcount = kcount+1 + kgoto loop + ;if there is no delimiter left, the rest is the searched element + else +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 "mary.wav:fox.wav:beats.wav:flute.aiff" +e +</CsScore> +</CsoundSynthesizer> |