mirror of
https://github.com/hydra-synth/hydra.git
synced 2025-12-05 14:30:03 +01:00
187 lines
3.6 KiB
Markdown
187 lines
3.6 KiB
Markdown
## Sources
|
|
|
|
Sources are elementary generators that output different types of visual content.
|
|
|
|
- [gradient](#gradient)
|
|
- [noise](#noise)
|
|
- [osc](#osc)
|
|
- [out](#out)
|
|
- [render](#render)
|
|
- [shape](#shape)
|
|
- [solid](#solid)
|
|
- [src](#src)
|
|
- [voronoi](#voronoi)
|
|
|
|
### gradient
|
|
|
|
`gradient( speed )`
|
|
|
|
* `speed` :: float (default `x`)
|
|
|
|
#### Example
|
|
|
|
```javascript
|
|
// gradient sequence at speeds of 1, 2 & 4
|
|
gradient([1,2,4]).out(o0)
|
|
```
|
|
|
|
### noise
|
|
|
|
`noise( scale, offset )`
|
|
|
|
* `scale` :: int (default `10.0`)
|
|
* `offset` :: float (default `0.1`)
|
|
|
|
Generate [Perlin noise](https://en.wikipedia.org/wiki/Perlin_noise).
|
|
|
|
#### Example
|
|
|
|
```javascript
|
|
// noise interpolating between different scales and offsets
|
|
noise( ({time}) => Math.sin(time/10)*50 , ({time}) => Math.sin(time/2)/500 )
|
|
.out(o0)
|
|
```
|
|
|
|
### osc
|
|
|
|
`osc( frequency, sync, offset )`
|
|
|
|
* `frequency` :: float (default `60.0`)
|
|
* `sync` :: float (default `0.1`)
|
|
* `offset` :: float (default `0.0`)
|
|
|
|
#### Example
|
|
|
|
```javascript
|
|
// frequency
|
|
osc( [1,10,50,100,250,500].fast(2) ).out(o0)
|
|
|
|
// frequency 2
|
|
osc( ({time}) => Math.sin(time/10) * 100 ).out(o0)
|
|
|
|
// sync
|
|
osc( 10, [-10,-1,-0.1,0,0.1,1,10], 0 ).out(o0)
|
|
|
|
// offset
|
|
osc(10,0.1, ({time}) => Math.sin(time/10) * 100 ).out(o0)
|
|
```
|
|
|
|
### out
|
|
|
|
`.out( buffer )`
|
|
|
|
* `buffer`
|
|
* `osc`: `o0`, `o1`, `o2`, `o3`
|
|
* `src`: `s0`, `s1`, `s2`, `s3`
|
|
|
|
#### Example
|
|
|
|
```javascript
|
|
// output four oscillators to different buffers
|
|
// and then modulate them together
|
|
osc( [1,10,50,100,250,500].fast(2) ).out(o0) // frequency
|
|
osc( ({time}) => Math.sin(time/10) * 100 ).out(o1) // frequency 2
|
|
osc( 10, [-10,-1,-0.1,0,0.1,1,10], 0 ).out(o2) // sync
|
|
osc(10,0.1, ({time}) => Math.sin(time/10) * 100 ) // offset
|
|
.modulate(o1,0.05)
|
|
.modulate(o2,0.05)
|
|
.modulate(o3,0.05)
|
|
.out(o3)
|
|
render(o3)
|
|
```
|
|
|
|
### render
|
|
|
|
`render( buffer )`
|
|
|
|
* `buffer`: buffer (default `o0`)
|
|
|
|
#### Example
|
|
|
|
```javascript
|
|
osc( [1,10,50,100,250,500].fast(2) ).out(o0) // frequency
|
|
osc( ({time}) => Math.sin(time/10) * 100 ).out(o1) // frequency 2
|
|
osc( 10, [-10,-1,-0.1,0,0.1,1,10], 0 ).out(o2) // sync
|
|
osc(10,0.1, ({time}) => Math.sin(time/10) * 100 ).out(o3) // offset
|
|
|
|
render(o0) // change to o1, o2, or o3
|
|
```
|
|
|
|
```javascript
|
|
// see all four buffers at once
|
|
osc( [1,10,50,100,250,500].fast(2) ).out(o0) // frequency
|
|
osc( ({time}) => Math.sin(time/10) * 100 ).out(o1) // frequency 2
|
|
osc( 10, [-10,-1,-0.1,0,0.1,1,10], 0 ).out(o2) // sync
|
|
osc(10,0.1, ({time}) => Math.sin(time/10) * 100 ).out(o3) // offset
|
|
render()
|
|
```
|
|
|
|
### shape
|
|
|
|
`shape( sides, radius, smoothing)`
|
|
|
|
* `sides` :: int (default `3.0`)
|
|
* `radius` :: float (default `0.3`)
|
|
* `smoothing` :: float (default `0.01`)
|
|
|
|
#### Example
|
|
|
|
```javascript
|
|
// inverting blurry circle
|
|
shape(100,0.01,1).invert(({time})=>Math.sin(time)*2).out(o0)
|
|
|
|
// a... rainbow ball?
|
|
shape(5,0.5,0.1).repeat(19,19)
|
|
.mult(osc(10,1,2))
|
|
.rotate( ({time}) => time%360 )
|
|
.scrollX(1,-0.25)
|
|
.mult(shape(15,0.3,0.01)
|
|
.rotate( ({time}) => time%360 )
|
|
.scrollX(1,-0.25))
|
|
.out(o0)
|
|
```
|
|
|
|
### solid
|
|
|
|
`solid( r, g, b, a )`
|
|
|
|
* `r` :: float (default `0.0`)
|
|
* `g` :: float (default `0.0`)
|
|
* `b` :: float (default `0.0`)
|
|
* `a` :: float (default `1.0`)
|
|
|
|
#### Example
|
|
|
|
```javascript
|
|
// cycling through red, green and blue
|
|
solid([1,0,0],[0,1,0],[0,0,1],1).out(o0)
|
|
```
|
|
|
|
### src
|
|
|
|
`src( input )`
|
|
|
|
* `input` :: input (examples: `o0`, `s1`)
|
|
|
|
See `hydra-examples` repository
|
|
|
|
### voronoi
|
|
|
|
`voronoi( scale, speed, blending )`
|
|
|
|
* `scale` :: float (default `5`)
|
|
* `speed` :: float (default `0.3`)
|
|
* `blending` :: float (default `0.3`)
|
|
|
|
Generate [voronoi shapes](https://en.wikipedia.org/wiki/Voronoi_diagram).
|
|
|
|
#### Example
|
|
|
|
```javascript
|
|
// default
|
|
voronoi(5,0.3,0.3).out(o0)
|
|
|
|
// fireflies
|
|
voronoi(25,2,10).color(1,1,0).brightness(0.15).out(o0)
|
|
```
|