68 lines
1.1 KiB
Racket
68 lines
1.1 KiB
Racket
#lang scribble/manual
|
|
@(require (for-label racket))
|
|
|
|
@title{Hasher}
|
|
Scrambled value with a hash function.@section{categories}
|
|
UGens>Filters>Nonlinear, UGens>Random
|
|
|
|
@section{description}
|
|
|
|
|
|
Returns a unique output value from -1 to +1 for each input value
|
|
according to a hash function. The same input value will always produce
|
|
the same output value. The input need not be in the range -1 to +1.
|
|
|
|
@section{classmethods}
|
|
|
|
|
|
@section{method}
|
|
ar, kr
|
|
|
|
@section{argument}
|
|
in
|
|
The input signal.
|
|
|
|
@section{argument}
|
|
mul
|
|
Output will be multiplied by this value.
|
|
|
|
@section{argument}
|
|
add
|
|
This value will be added to the output.
|
|
|
|
@section{Examples}
|
|
|
|
|
|
|
|
@racketblock[
|
|
{ Hasher.ar(Line.ar(0,1,1), 0.2) }.play;
|
|
|
|
// Even adding a small amount to the input can result in a very different output. Compare these two examples:
|
|
(
|
|
{
|
|
SinOsc.ar(
|
|
Hasher.kr(MouseX.kr(0,10).round(1), 300, 500)
|
|
) * 0.1
|
|
}.play;
|
|
)
|
|
|
|
(
|
|
{
|
|
SinOsc.ar(
|
|
Hasher.kr(MouseX.kr(0,10).round(1) + 0.0001, 300, 500)
|
|
) * 0.1
|
|
}.play;
|
|
)
|
|
|
|
// Output stays constant while not moving the mouse.
|
|
(
|
|
{
|
|
SinOsc.ar(
|
|
Hasher.kr(MouseX.kr(0,10), 300, 500)
|
|
) * 0.1
|
|
}.play;
|
|
)
|
|
::
|
|
]
|
|
|
|
|