mirror of
https://github.com/hydra-synth/hydra.git
synced 2025-12-05 22:40:15 +01:00
274 lines
5.5 KiB
Markdown
274 lines
5.5 KiB
Markdown
## Modulators
|
|
|
|
Functions for describing modulations of sources.
|
|
|
|
- [modulate](#modulate)
|
|
- [modulateHue](#modulateHue)
|
|
- [modulateKaleid](#modulateKaleid)
|
|
- [modulatePixelate](#modulatePixelate)
|
|
- [modulateRepeat](#modulateRepeat)
|
|
- [modulateRepeatX](#modulateRepeatX)
|
|
- [modulateRepeatY](#modulateRepeatY)
|
|
- [modulateRotate](#modulateRotate)
|
|
- [modulateScale](#modulateScale)
|
|
- [modulateScrollX](#modulateScrollX)
|
|
- [modulateScrollY](#modulateScrollY)
|
|
|
|
### modulate
|
|
|
|
`.modulate( texture, amount )`
|
|
|
|
* `texture`
|
|
* `color` :: see [color `vec4`](#color-vec4)
|
|
* `src` :: see [`src`](#src)
|
|
* `shape` :: see [`shape`](#shape)
|
|
* `amount` :: float (default `0.1`)
|
|
|
|
Modulate texture.
|
|
More about modulation at: https://lumen-app.com/guide/modulation/
|
|
|
|
#### Example
|
|
|
|
```javascript
|
|
// chocolate whirlpool
|
|
voronoi()
|
|
.color(0.9,0.25,0.15)
|
|
.rotate(({time})=>(time%360)/2)
|
|
.modulate(osc(25,0.1,0.5)
|
|
.kaleid(50)
|
|
.scale(({time})=>Math.sin(time*1)*0.5+1)
|
|
.modulate(noise(0.6,0.5)),
|
|
0.5)
|
|
.out(o0)
|
|
```
|
|
|
|
### modulateHue
|
|
|
|
`.modulateHue( color, amount )`
|
|
|
|
* `texture`
|
|
* `color` :: see [color `vec4`](#color-vec4)
|
|
* `src` :: see [`src`](#src)
|
|
* `shape` :: see [`shape`](#shape)
|
|
* `amount` :: float (default `1.0`)
|
|
|
|
Changes coordinates based on hue of second input.
|
|
Based on:https://www.shadertoy.com/view/XtcSWM
|
|
|
|
#### Example
|
|
|
|
```javascript
|
|
|
|
```
|
|
|
|
### modulateKaleid
|
|
|
|
`.modulateKaleid( nSides )`
|
|
|
|
* `texture`
|
|
* `color` :: see [color `vec4`](#color-vec4)
|
|
* `src` :: see [`src`](#src)
|
|
* `shape` :: see [`shape`](#shape)
|
|
* `nSides` :: float (default `4.0`)
|
|
|
|
See also: [`kaleid`](#kaleid).
|
|
|
|
#### Example
|
|
|
|
```javascript
|
|
osc(9,-0.1,0.1)
|
|
.modulateKaleid(osc(11,0.5,0),50)
|
|
.scale(0.1,0.3)
|
|
.modulate(noise(5,0.1))
|
|
.mult(solid(1,1,0.3))
|
|
.out(o0)
|
|
```
|
|
|
|
### modulatePixelate
|
|
|
|
`.modulatePixelate( multiple, offset )`
|
|
|
|
* `texture`
|
|
* `color` :: see [color `vec4`](#color-vec4)
|
|
* `src` :: see [`src`](#src)
|
|
* `shape` :: see [`shape`](#shape)
|
|
* `multiple` :: float (default `10.0`)
|
|
* `offset` :: float (default `3.0`)
|
|
|
|
See also: [`pixelate`](#pixelate)
|
|
|
|
#### Example
|
|
|
|
```javascript
|
|
// what lies beneath
|
|
voronoi(10,1,5).brightness(()=>Math.random()*0.15)
|
|
.modulatePixelate(noise(25,0.5),100)
|
|
.out(o0)
|
|
```
|
|
|
|
### modulateRepeat
|
|
|
|
`.modulateRepeat( texture, repeatX, repeatY, offsetX, offsetY )`
|
|
|
|
* `texture`
|
|
* `color` :: see [color `vec4`](#color-vec4)
|
|
* `src` :: see [`src`](#src)
|
|
* `shape` :: see [`shape`](#shape)
|
|
* `repeatX` :: float (default `3.0`)
|
|
* `repeatY` :: float (default `3.0`)
|
|
* `offsetX` :: float (default `0.5`)
|
|
* `offsetY` :: float (default `0.5`)
|
|
|
|
#### Example
|
|
|
|
```javascript
|
|
// default
|
|
shape(4,0.9)
|
|
.mult(osc(3,0.5,1))
|
|
.modulateRepeat(osc(10), 3.0, 3.0, 0.5, 0.5)
|
|
.out(o0)
|
|
```
|
|
|
|
### modulateRepeatX
|
|
|
|
`.modulateRepeatX( texture, reps, offset )`
|
|
|
|
* `texture`
|
|
* `color` :: see [color `vec4`](#color-vec4)
|
|
* `src` :: see [`src`](#src)
|
|
* `shape` :: see [`shape`](#shape)
|
|
* `reps` :: float (default `3.0`)
|
|
* `offset` :: float (default `0.5`)
|
|
|
|
#### Example
|
|
|
|
```javascript
|
|
// straight lines illusion
|
|
shape(4,0.9)
|
|
.mult(osc(4,0.25,1))
|
|
.modulateRepeatX(osc(10), 5.0, ({time}) => Math.sin(time) * 5)
|
|
.scale(1,0.5,0.05)
|
|
.out(o0)
|
|
```
|
|
|
|
### modulateRepeatY
|
|
|
|
`.modulateRepeatY( texture, reps, offset )`
|
|
|
|
* `texture`
|
|
* `color` :: see [color `vec4`](#color-vec4)
|
|
* `src` :: see [`src`](#src)
|
|
* `shape` :: see [`shape`](#shape)
|
|
* `reps` :: float (default `3.0`)
|
|
* `offset` :: float (default `0.5`)
|
|
|
|
#### Example
|
|
|
|
```javascript
|
|
// morphing grid
|
|
shape(4,0.9)
|
|
.mult(osc(4,0.25,1))
|
|
.modulateRepeatY(osc(10), 5.0, ({time}) => Math.sin(time) * 5)
|
|
.scale(1,0.5,0.05)
|
|
.out(o0)
|
|
```
|
|
|
|
### modulateRotate
|
|
|
|
`.modulateRotate( texture, multiple, offset )`
|
|
|
|
* `texture`
|
|
* `color` :: see [color `vec4`](#color-vec4)
|
|
* `src` :: see [`src`](#src)
|
|
* `shape` :: see [`shape`](#shape)
|
|
* `multiple` :: float (default `1.0`)
|
|
* `offset` :: float (default `0.0`)
|
|
|
|
See also: [`rotate`](#rotate)
|
|
|
|
#### Example
|
|
|
|
```javascript
|
|
// wormhole
|
|
voronoi(100,3,5)
|
|
.modulateRotate(osc(1,0.5,0).kaleid(50).scale(0.5),15,0)
|
|
.mult(osc(50,-0.1,8).kaleid(9))
|
|
.out(o0)
|
|
```
|
|
|
|
### modulateScale
|
|
|
|
`.modulateScale( multiple, offset )`
|
|
|
|
* `texture`
|
|
* `color` :: see [color `vec4`](#color-vec4)
|
|
* `src` :: see [`src`](#src)
|
|
* `shape` :: see [`shape`](#shape)
|
|
* `multiple` :: float (default `1.0`)
|
|
* `offset` :: float (default `1.0`)
|
|
|
|
See also: [`scale`](#scale)
|
|
|
|
#### Example
|
|
|
|
```javascript
|
|
// cosmic radiation
|
|
gradient(5).repeat(50,50).kaleid([3,5,7,9].fast(0.5))
|
|
.modulateScale(osc(4,-0.5,0).kaleid(50).scale(0.5),15,0)
|
|
.out(o0)
|
|
```
|
|
|
|
### modulateScrollX
|
|
|
|
`.modulateScrollX( multiple, scrollX, speed )`
|
|
|
|
* `texture`
|
|
* `color` :: see [color `vec4`](#color-vec4)
|
|
* `src` :: see [`src`](#src)
|
|
* `shape` :: see [`shape`](#shape)
|
|
* `scrollX` :: float (default `0.5`)
|
|
* `speed` :: float (default `0.0`)
|
|
|
|
See also: [`scrollX`](#scrollx)
|
|
|
|
#### Example
|
|
|
|
```javascript
|
|
// default
|
|
voronoi(25,0,0)
|
|
.modulateScrollX(osc(10),0.5,0)
|
|
.out(o0)
|
|
|
|
// different scroll and speed
|
|
voronoi(25,0,0)
|
|
.modulateScrollX(osc(10),0.5,0.25)
|
|
.out(o0)
|
|
```
|
|
|
|
### modulateScrollY
|
|
|
|
`.modulateScrollY( multiple, scrollX, speed )`
|
|
|
|
* `texture`
|
|
* `color` :: see [color `vec4`](#color-vec4)
|
|
* `src` :: see [`src`](#src)
|
|
* `shape` :: see [`shape`](#shape)
|
|
* `scrollY` :: float (default `0.5`)
|
|
* `speed` :: float (default `0.0`)
|
|
|
|
See also: [`scrollY`](#scrollY)
|
|
|
|
#### Example
|
|
|
|
```javascript
|
|
// default
|
|
voronoi(25,0,0)
|
|
.modulateScrollY(osc(10),0.5,0)
|
|
.out(o0)
|
|
|
|
// different scroll and speed
|
|
voronoi(25,0,0)
|
|
.modulateScrollY(osc(10),0.5,0.25)
|
|
.out(o0)
|
|
```
|