90 lines
1.4 KiB
Text
90 lines
1.4 KiB
Text
|
#lang scribble/manual
|
||
|
@(require (for-label racket))
|
||
|
|
||
|
@title{Ball}
|
||
|
physical model of bouncing object@section{categories}
|
||
|
UGens>Filters>Nonlinear, UGens>Generators>PhysicalModels
|
||
|
@section{related}
|
||
|
Classes/TBall, Classes/Spring
|
||
|
|
||
|
@section{description}
|
||
|
|
||
|
Ball models the path of a bouncing object that is reflected by a vibrating surface.
|
||
|
|
||
|
@section{classmethods}
|
||
|
|
||
|
@section{private}
|
||
|
categories
|
||
|
|
||
|
@section{method}
|
||
|
ar, kr
|
||
|
|
||
|
@section{argument}
|
||
|
in
|
||
|
modulated surface level
|
||
|
|
||
|
@section{argument}
|
||
|
g
|
||
|
gravity
|
||
|
|
||
|
@section{argument}
|
||
|
damp
|
||
|
damping on impact
|
||
|
|
||
|
@section{argument}
|
||
|
friction
|
||
|
proximity from which on attraction to surface starts
|
||
|
|
||
|
@section{examples}
|
||
|
|
||
|
mouse x controls switch of level:
|
||
|
|
||
|
@racketblock[
|
||
|
(
|
||
|
{
|
||
|
var f, sf;
|
||
|
sf = K2A.ar(MouseX.kr > 0.5) > 0;
|
||
|
f = Ball.ar(sf, MouseY.kr(0.01, 20, 1), 0.01);
|
||
|
f = f * 10 + 500;
|
||
|
SinOsc.ar(f, 0, 0.2)
|
||
|
}.play;
|
||
|
)
|
||
|
::
|
||
|
|
||
|
mouse x controls modulation rate, mouse y controls gravity:
|
||
|
]
|
||
|
|
||
|
@racketblock[
|
||
|
(
|
||
|
{
|
||
|
var f, sf, g;
|
||
|
sf = LFNoise0.ar(MouseX.kr(1, 100, 1));
|
||
|
g = MouseY.kr(0.1, 10, 1);
|
||
|
f = Ball.ar(sf, g, 0.01, 0.01);
|
||
|
f = f * 140 + 500;
|
||
|
SinOsc.ar(f, 0, 0.2)
|
||
|
}.play;
|
||
|
)
|
||
|
::
|
||
|
|
||
|
the general german police choir. mouse x controls damping, mouse y controls gravity:
|
||
|
]
|
||
|
|
||
|
@racketblock[
|
||
|
(
|
||
|
{
|
||
|
var f, sf, g;
|
||
|
sf = LFPulse.ar(0.6, 0.2, 0.5);
|
||
|
g = MouseY.kr(0.1, 10, 1);
|
||
|
d = MouseX.kr(0.0001, 1, 1);
|
||
|
f = Ball.ar(sf, g, d);
|
||
|
f = f * 140 + 400;
|
||
|
SinOsc.ar(f, 0, 0.2)
|
||
|
}.play;
|
||
|
)
|
||
|
::
|
||
|
|
||
|
]
|
||
|
|
||
|
|