perlin3
Abstract
gradient noise sound generator
Description
Perlin noise is a type of gradient noise devised by Ken Perlin, and commonly used to add texture to objects rendered in computer graphics. It is deterministic: for a given input co-ordinate it always returns the same output value. To make audible noise you will typically need to define some trajectory through the co-ordinate space.
perlin3
is a csound port of Supercollider's Perlin3
Syntax
aout perlin3 ax, ay, az
kout perlin3 kx, ky, kz
Arguments
kx
,ky
,kz
: the coordinates of a point in 3D space. In the current implementation the space wraps at 255 so any value is actually possible.
Output
aout
/kout
: the perlin noise corresponding to the given coordinates
Execution Time
- Performance
Examples
<CsoundSynthesizer>
<CsInstruments>
/* to be run in csoundqt >= 0.9.8 */
sr = 44100
ksmps = 64
nchnls = 2
0dbfs = 1
; an empty table to plot
giplot1 ftgen 0, 0, 2000, 2, 0
giplot2 ftgen 0, 0, 2000, 2, 0
opcode tabplot, 0, Sik
Schan, itab, kvalue xin
; init
outvalue Schan, itab
tablew kvalue, accum:k(1), itab, 0, 0, 1
; update the plot
if metro(30) == 1 then
outvalue Schan, k(-1)
endif
endop
instr perlin3
kspeed = line:k(0.1, 10, 2)
ax = accum:a(kspeed/sr)
az = ax*0.5
aper1 = perlin3(ax, a(0), az)
aper2 = perlin3(a(0), ax, az)
asig = pinker() * 0.4
; remap to 0-1
aper1 = (aper1 + 1) * 0.5
aper2 = (aper2 + 1) * 0.5
ilagtime = 0.1
a1 = asig*lag(aper1, ilagtime)
a2 = asig*lag(aper2, ilagtime)
a1, a2 reverbsc a1, a2, 0.92, 12000
outch 1, a1, 2, a2
; plot the trajectory in csoundqt
tabplot "plot1", giplot1, aper1[0]
tabplot "plot2", giplot2, aper2[0]
endin
</CsInstruments>
<CsScore>
i "perlin3" 0 300
</CsScore>
</CsoundSynthesizer>
<bsbPanel>
<label>Widgets</label>
<objectName/>
<x>0</x>
<y>0</y>
<width>0</width>
<height>0</height>
<visible>true</visible>
<uuid/>
<bgcolor mode="nobackground">
<r>255</r>
<g>255</g>
<b>255</b>
</bgcolor>
<bsbObject version="2" type="BSBTableDisplay">
<objectName>plot1</objectName>
<x>6</x>
<y>11</y>
<width>500</width>
<height>150</height>
<uuid>{b75d16b1-05b3-4358-974e-f2dfa85d3d34}</uuid>
<visible>true</visible>
<midichan>0</midichan>
<midicc>-3</midicc>
<description/>
<color>
<r>255</r>
<g>193</g>
<b>3</b>
</color>
<range>0.00</range>
</bsbObject>
<bsbObject version="2" type="BSBTableDisplay">
<objectName>plot2</objectName>
<x>5</x>
<y>170</y>
<width>500</width>
<height>150</height>
<uuid>{9a8bac1d-2234-450c-8807-37f9902bfb74}</uuid>
<visible>true</visible>
<midichan>0</midichan>
<midicc>-3</midicc>
<description/>
<color>
<r>255</r>
<g>193</g>
<b>3</b>
</color>
<range>0.00</range>
</bsbObject>
</bsbPanel>
<bsbPresets>
</bsbPresets>
See also
Credits
Eduardo Moguillansky, 2020