File: ModDif.schelp

package info (click to toggle)
supercollider 1%3A3.13.0%2Brepack-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 80,292 kB
  • sloc: cpp: 476,363; lisp: 84,680; ansic: 77,685; sh: 25,509; python: 7,909; makefile: 3,440; perl: 1,964; javascript: 974; xml: 826; java: 677; yacc: 314; lex: 175; objc: 152; ruby: 136
file content (54 lines) | stat: -rw-r--r-- 1,135 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
class:: ModDif
summary:: Minimum difference of two values in modulo arithmetics
related:: Classes/Clip, Classes/Wrap
categories::  UGens>Maths


Description::
Returns the minimum difference of two values in modulo arithmetics. On a circle, there are two distances between two points. This UGen returns the smaller value of the two.

code::
{ var a = Line.ar(0, 4, 0.01), d = ModDif.ar(a); [a, d] }.plot;
{ var a = Line.ar(0, 4, 0.01); ModDif.ar(a, 0, (1..4)) }.plot;
{ var a = Line.ar(0, 4, 0.01); ModDif.ar(a, (0, 0.25 .. 1), 1) }.plot;

::


classmethods::

method::ar, kr, ir

argument::x
First input value

argument::y
Second input value

argument::mod
Modulo (maximum value, double of the maximal difference).

code::

// different moduli
(
{
	var sig = LFSaw.ar(10);
	var dist = ModDif.kr(sig, 0, (0..8) * MouseX.kr(0, 1/5));
	Splay.ar(SinOsc.ar(dist * 4000 + 400)) * 0.1
}.play;
)

// wrapping amplitude crossfade
(
{
	var numChan = 12;
	var x = SinOsc.ar({ rrand(300.0, 800.0) } ! numChan);
	var dist = ModDif.kr(MouseX.kr(0, numChan * 2), (0..numChan-1), numChan);
	x = x * max(0, 1 - dist);
	Splay.ar(x) * 0.1
}.play;
)
::