global { srate 48000; // DAT-quality krate 2400; // 417 us } opcode fseq() { xsig init; xsig stk[303], n; if(init == 0) { n = 0; while(n<303){ stk[n] = 0; n = n+1;} n = 16; init = 1; } while ( n < 303) { if( n == 0) { stk[0] = 1; n = n+1; return(0); } else { if( stk[n-1] == 1) { if (stk[n] == 1) { stk[n-1] = 0; n = n+1; } else { stk[n-1] = 0; stk[n] = 1; n = n-1; return(n+1); } } else { if(stk[n] == 1) { stk[n-1] = 1; n = n-1; } else { n = n-1; } } } } } instr pinknoise () { asig row, rows[303], value; ksig init; if (init == 0) { init = 1; value = krand(0.02); row = 0; while(row<303){ rows[row] = arand(0.02); row = row+1;} } row = fseq(); value = value - rows[row]; rows[row] = arand(0.02); value = value + rows[row]; output(value); } instr whitenoise () { output(arand(0.1)); }