This is an implementation of a circular string scanned using external tables. This opcode will allow direct modification and reading of values with the table opcodes.
<CsoundSynthesizer><CsOptions>; Select audio/midi flags here according to platform-odac --limiter=0.95 ;;;realtime audio out & limiter;-iadc ;;;uncomment -iadc if realtime audio input is needed too; For Non-realtime ouput leave only the line below:; -o scantable.wav -W ;;; for file output any platform</CsOptions><CsInstruments>sr=44100ksmps=32nchnls=20dbfs=1; by Menno Knevel 2021instr1initialftgen1,0,p5,10,1; initial position = sine waveimassftgen2,0,p5,-7,.1,p5,1; massesistiffftgen3,0,p5,-7,0,p5*.3,0.8*p5,p5*.7,0; stiffnessidampftgen4,0,p5,-7,1,p5,1; dampingiveloftgen5,0,p5,-7,0,p5,0.5; initial velocityiamp=.15ipch=cpsmidinn(p4)asigscantableiamp,ipch,1,2,3,4,5asigdcblockasigasigbutlpasig,5000; lowpass filteroutsasig,asig;endin</CsInstruments><CsScore>si102050128i1101070.i115340.si1020504096; f-tables now bigger tablesi1101070.; sounds different i115340.si1020501000; still big tablesi1101070.; but non-power of 2i115340.si10205020; small tablesi1101070.; & non-power of 2i115340.e</CsScore></CsoundSynthesizer>