Forwarded from mivik::channels::tech
#project #music #abeat
简单的音乐图形化,初学 OpenGL/信号处理 的试作品,部分参考 https://github.com/hannesha/GLMViz (目前仅支持在 PulseAudio 环境下运行):
https://github.com/Mivik/abeat
简单的音乐图形化,初学 OpenGL/信号处理 的试作品,部分参考 https://github.com/hannesha/GLMViz (目前仅支持在 PulseAudio 环境下运行):
https://github.com/Mivik/abeat
duangsuse::Echo
本来说可以移植 SDL 甚至支持 WebAudio 和 改写 sharder 渲染支持 stereo 的 (哪怕只是预求和一下 可大佬 size 计算变量貌似没弄全)。 但这个原版代码本身有一点冗余(其实有 sync locks 的一大堆尚无应用意义代码)、试用语言特性的意图, C++ 的简洁性很难(就连 flat 文件树都得拿自写预处理工具去保证),如果用 Py/JS 的话性能又不好,我觉得还是算了( 代码链接后 400k 也算小了 这个是 Mivik 版。 https://tttttt.me/dsuse/16598…
更实际的GLfw/FFTw示例看这里
https://tttttt.me/dsuse/16598
这里我们是要纯GL绘制一个柱状图,首先得按宽度比率切出vert,然后用geomerty(图形由顶点构成) 从points EmitVertex~EndPrimitive连出图形,最后frag只填平色就行
float y = mix(-1., 1., clamp(y_in, 0, 1)), x=mix(-1.,1., (float(gl_VertexID) + 0.5) / u_count);
gl_Pos = vec4(x, y, 0, 1)
//geom
layout (points) in;
layout (points, max_vertices = 1) out;
glPos=gl_in[0]; Emit //顶点0直接输出
layout (triangle_strip, max_vertices = 5) out;
P(l,-1) (r,-1) (l,y) (r,y)
就能生成一个□+\ 的几何
每个顶点都可以带颜色等附加信息,geom也能设置out fColor
bar vert的重力计算在这些之后每帧应用,绘制 y=texture(fftBuf,vertIdx),就能实现一个缓动的频谱图了。
glClear(00wh)
use(shader)
glBindVArray(vao)
glDrawArray(POINTS,0,N)
动苏第一次完全不知道 shader 除了着色贴图还能处理几何,后来觉得 geom 一定是先于 vert 运行(当成点和边了 😂),然后发现geometry shader 画矩形有四个点,vert 却只有2个,于是认为 vert 能决定宽高,或者有重复计算 🤣其实不懂绘图
https://blog.csdn.net/q1398284020/article/details/80181803 着色器变量
https://tttttt.me/dsuse/16598
这里我们是要纯GL绘制一个柱状图,首先得按宽度比率切出vert,然后用geomerty(图形由顶点构成) 从points EmitVertex~EndPrimitive连出图形,最后frag只填平色就行
float y = mix(-1., 1., clamp(y_in, 0, 1)), x=mix(-1.,1., (float(gl_VertexID) + 0.5) / u_count);
gl_Pos = vec4(x, y, 0, 1)
//geom
layout (points) in;
layout (points, max_vertices = 1) out;
glPos=gl_in[0]; Emit //顶点0直接输出
layout (triangle_strip, max_vertices = 5) out;
P(l,-1) (r,-1) (l,y) (r,y)
就能生成一个□+\ 的几何
每个顶点都可以带颜色等附加信息,geom也能设置out fColor
bar vert的重力计算在这些之后每帧应用,绘制 y=texture(fftBuf,vertIdx),就能实现一个缓动的频谱图了。
glClear(00wh)
use(shader)
glBindVArray(vao)
glDrawArray(POINTS,0,N)
动苏第一次完全不知道 shader 除了着色贴图还能处理几何,后来觉得 geom 一定是先于 vert 运行(当成点和边了 😂),然后发现geometry shader 画矩形有四个点,vert 却只有2个,于是认为 vert 能决定宽高,或者有重复计算 🤣其实不懂绘图
https://blog.csdn.net/q1398284020/article/details/80181803 着色器变量
Telegram
duangsuse::Echo
#project #music #abeat
简单的音乐图形化,初学 OpenGL/信号处理 的试作品,部分参考 https://github.com/hannesha/GLMViz (目前仅支持在 PulseAudio 环境下运行):
https://github.com/Mivik/abeat
简单的音乐图形化,初学 OpenGL/信号处理 的试作品,部分参考 https://github.com/hannesha/GLMViz (目前仅支持在 PulseAudio 环境下运行):
https://github.com/Mivik/abeat