-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathspectre.frag
46 lines (35 loc) · 997 Bytes
/
spectre.frag
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
/*
in vec2 UV;
out vec3 color;
*/
uniform float logarithmic;
uniform float volume;
uniform sampler2D spectrogram;
const float grid = 0.0;
void main()
{
vec2 tcoord;
/*
* max = 22100.0
* upper = 11050
* lower = 30Hz -> log(30) / log(upper)
* lower_min = 1 - lower
*/
if (logarithmic > 0.0) {
tcoord.s = gl_TexCoord[0].s;
/* t_new = pow(upper, t * lower + lower_min) / max */
tcoord.t = pow(22100.0, gl_TexCoord[0].t * 0.59 + 0.41) / 22100.0;
} else
tcoord.st = gl_TexCoord[0].st;
if (grid > 0.0) {
if (tcoord.t > 0.00452 && mod(log2(tcoord.t * 22100.0), 1.00) < .4)
gl_FragColor = vec4(0.2, 0.4, 0.8, 1.0);
else
gl_FragColor = texture2D(spectrogram, tcoord);
} else
if (volume > 0.0)
gl_FragColor = log2(texture2D(spectrogram, tcoord) * 32.0 + 1.0) / 5.0;
else
gl_FragColor = texture2D(spectrogram, tcoord);
return;
}