1<CsoundSynthesizer> 2<CsOptions> 3--env:SSDIR+=../SourceMaterials -dnm0 4</CsOptions> 5<CsInstruments> 6ksmps = 32 7 8giArrLen = 5 9gSArr[] init giArrLen 10 11 opcode StrAgrm, S, Sj 12 ;changes the elements in Sin randomly, like in an anagram 13Sin, iLen xin 14 if iLen == -1 then 15iLen strlen Sin 16 endif 17Sout = "" 18;for all elements in Sin 19iCnt = 0 20iRange = iLen 21loop: 22;get one randomly 23iRnd rnd31 iRange-.0001, 0 24iRnd = int(abs(iRnd)) 25Sel strsub Sin, iRnd, iRnd+1 26Sout strcat Sout, Sel 27;take it out from Sin 28Ssub1 strsub Sin, 0, iRnd 29Ssub2 strsub Sin, iRnd+1 30Sin strcat Ssub1, Ssub2 31;adapt range (new length) 32iRange = iRange-1 33 loop_lt iCnt, 1, iLen, loop 34 xout Sout 35 endop 36 37 38instr 1 39 prints "Filling gSArr[] in instr %d at init-time!\n", p1 40iCounter = 0 41 until (iCounter == giArrLen) do 42S_new StrAgrm "csound" 43gSArr[iCounter] = S_new 44iCounter += 1 45 od 46endin 47 48instr 2 49 prints "Printing gSArr[] in instr %d at init-time:\n [", p1 50iCounter = 0 51 until (iCounter == giArrLen) do 52 printf_i "%s ", iCounter+1, gSArr[iCounter] 53iCounter += 1 54 od 55 prints "]\n" 56endin 57 58instr 3 59 printks "Printing gSArr[] in instr %d at perf-time:\n [", 0, p1 60kcounter = 0 61 until (kcounter == giArrLen) do 62 printf "%s ", kcounter+1, gSArr[kcounter] 63kcounter += 1 64 od 65 printks "]\n", 0 66 turnoff 67endin 68 69instr 4 70 prints "Modifying gSArr[] in instr %d at init-time!\n", p1 71iCounter = 0 72 until (iCounter == giArrLen) do 73S_new StrAgrm "csound" 74gSArr[iCounter] = S_new 75iCounter += 1 76 od 77endin 78 79instr 5 80 prints "Printing gSArr[] in instr %d at init-time:\n [", p1 81iCounter = 0 82 until (iCounter == giArrLen) do 83 printf_i "%s ", iCounter+1, gSArr[iCounter] 84iCounter += 1 85 od 86 prints "]\n" 87endin 88 89instr 6 90kCycle timeinstk 91 printks "Modifying gSArr[] in instr %d at k-cycle %d!\n", 0, 92 p1, kCycle 93kCounter = 0 94 until (kCounter == giArrLen) do 95kChar random 33, 127 96S_new sprintfk "%c ", int(kChar) 97gSArr[kCounter] strcpyk S_new ;'=' should work but does not 98kCounter += 1 99 od 100 if kCycle == 3 then 101 turnoff 102 endif 103endin 104 105instr 7 106kCycle timeinstk 107 printks "Printing gSArr[] in instr %d at k-cycle %d:\n [", 108 0, p1, kCycle 109kCounter = 0 110 until (kCounter == giArrLen) do 111 printf "%s ", kCounter+1, gSArr[kCounter] 112kCounter += 1 113 od 114 printks "]\n", 0 115 if kCycle == 3 then 116 turnoff 117 endif 118endin 119 120</CsInstruments> 121<CsScore> 122i 1 0 1 123i 2 0 1 124i 3 0 1 125i 4 1 1 126i 5 1 1 127i 6 1 1 128i 7 1 1 129</CsScore> 130</CsoundSynthesizer> 131;example by joachim heintz 132