Skip to content

tableshuffle

Shuffles the content of a function table.

Each element of the source table is put into a different random position, without loosing any of them. Imagine shuffling a deck of cards. Each element of the table is copied to a different random position. If that position was already chosen before then the next free position is chosen. The length of the table remains the same.

Syntax

tableshuffle ktablenum
tableshufflei itablenum

Performance

ktablenum or itablenum -- the number of the table to shuffle.

Examples

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

Example of the tableshuffle opcode.
<CsoundSynthesizer>
<CsOptions>
; Select audio/midi flags here according to platform
-odac   ;;;realtime audio out
; For Non-realtime ouput leave only the line below:
; -o tableshuffle.wav -W ;;; for file output any platform

; By Stefano Cucchi 2020

</CsOptions>
<CsInstruments>

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

instr 1 
kIndex phasor 1/p3
kIndex = kIndex * 16

if kIndex >= 15.99 then 
tableshuffle 1; shuffle table 1
endif

kFreq table kIndex, 1, 0
asound oscili 0.3, kFreq
outch 1, asound
outch 2, asound

endin

</CsInstruments>
<CsScore>

f 1 0   16      -2      200 250 300 350 400 450 500 550 600 650 700 750 800 850 900 950

i1 0 4
i1 5 4
e

</CsScore>
</CsoundSynthesizer>

See also

Read/Write Operations

Credits

Author: Georg Boenn
University of Glamorgan, UK

New in Csound version 5.13