This should play if your Web browser has WebAssembly enabled (most do). Most examples will play unless they need to load files. The first time you click Play, Csound will spend a few seconds loading, then play. You can edit this code and replay it.
; Select audio/midi flags here according to platform -odac ;;;realtime audio ;-iadc ;;;uncomment -iadc if realtime audio input is needed too ; For Non-realtime ouput leave only the line below: ; -o polynomial.wav -W ;;; for file output any platform ; Required settings for WebAudio: sr = 48000 ksmps = 128 nchnls = 2 nchnls_i = 1 ; sr = 44100 ; ksmps = 32 ; nchnls = 2 0dbfs = 1 ; The polynomial y=x^n where n is odd always produces a curve ; that traverses the range [-1, 1] when the input is within ; the same range. Therefore, we can use one of these curves ; to make a nonlinear phasor that repeatedly reads a table ; from beginning to end like a linear phasor (maintaining ; continuity) but that distorts the waveform in the table. instr 4 ; This instrument demonstrates phase distortion with x^3 idur = p3 iamp = p4 ifreq = p5 itable = p6 aenv linseg 0, .001, 1.0, idur - .051, 1.0, .05, 0 ; declicking envelope aosc phasor ifreq ; create a linear phasor apd polynomial aosc, 0, 0, 0, 1 ; distort the phasor with x^3 aout tablei apd, itable, 1 ; read a sine table with the nonlinear phasor outs aenv*aout*iamp, aenv*aout*iamp endin instr 5 ; This instrument demonstrates phase distortion with x^11 idur = p3 iamp = p4 ifreq = p5 itable = p6 aenv linseg 0, .001, 1.0, idur - .051, 1.0, .05, 0 ; declicking envelope aosc phasor ifreq ; create a linear phasor apd polynomial aosc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 ; distort the phasor with x^11 aout tablei apd, itable, 1 ; read a sine table with the nonlinear phasor outs aenv*aout*iamp, aenv*aout*iamp endin instr 6 ; This instrument crossfades between a pure sine and one distorted with x^11 idur = p3 iamp = p4 ifreq = p5 itable = p6 aenv linseg 0, .001, 1.0, idur - .051, 1.0, .05, 0 ; declicking envelope aosc phasor ifreq ; create a linear phasor aout3 tablei aosc, itable, 1 ; read a sine table without the linear phasor apd11 polynomial aosc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 ; distort the phasor with x^11 aout11 tablei apd11, itable, 1 ; read a sine table with the nonlinear phasor kamount linseg 1.0, 0.05, 0.9, 1.0, 0.0 ; crossfade between two outputs aout = aout3*kamount + aout11*(1.0 - kamount) outs aenv*aout*iamp, aenv*aout*iamp endin f1 0 16385 10 1 ; sine wave ; descending "just blues" scale t 0 100 i4 0 .333 .7 512 1 i. + . . 448 i. + . . 384 i. + . . 360 i. + . . 341.33 i. + . . 298.67 i. + 2 . 256 s t 0 100 i5 0 .333 .7 512 1 i. + . . 448 i. + . . 384 i. + . . 360 i. + . . 341.33 i. + . . 298.67 i. + 2 . 256 s t 0 100 i6 0 .333 .7 512 1 i. + . . 448 i. + . . 384 i. + . . 360 i. + . . 341.33 i. + . . 298.67 i. + 2 . 256 e