【C++】基于OpenGL的音乐可视化(二):波形的绘制
在上一篇博客中,我已经介绍了怎么去解析PCM文件获取音量数据,这次我们根据获取的音量数据绘制出我们的波形图,即简单的实现了音乐的初步可视化。
我们利用GLFW这个库来实现OpenGL绘图,相关环境的配置可以参考我们博客前两篇的环境配置:
https://blog.csdn.net/qq_38130710
代码也不多,直接贴出:
void drawLint()
{glClearColor (0.8, 0.8, 0.8, 0.8);glClear (GL_COLOR_BUFFER_BIT);glLineWidth(2);//设置线段宽度glBegin(GL_LINES);glColor3f(1.0,0.0,0.0);short pcm_In = 0;int size = 0;float xstart=-1.0;float ystart=0.0;float xend=0.0;float yend=0.0;float temp = 0.0;FILE *fp = fopen(OLD_FILE_PATH, "rb+"); //为读写打开一个二进制文件 即pcm文件while(!feof(fp)){size = fread(&pcm_In, 2, 1, fp); //pcm中每个数据大小为2字节,每次读取1个数据if(size>0){//确定绘制波形的折线两点坐标xstart=xstart+0.00003;ystart=temp;xend=xstart+0.00003;//-------------------------------------------------------------------------------------------------------------------------yend=(float)pcm_In/10000; //short类型除以一个数要么是0要么是大于一的整数,所以坐标变换要注意先转为float//绘制折线glVertex2f(xstart,ystart);glVertex2f(xend,yend);temp=yend; //终点作为下一次的起点}}fclose(fp);glEnd();
}
运行效果图:Succeed!!!可以看到和我们之前贴出的软件显示的波形图是一样的!
【C++】基于OpenGL的音乐可视化(二):波形的绘制相关推荐
- 【C++】基于OpenGL的音乐可视化(六): 最终版本
经过一个多月的努力,插件的开发终于完成,等待以后测试上线,激动٩(๑>◡<๑)۶.这里,写一下利用OpenGL进行音乐可视化即音乐频谱图的绘制大致流程. (1)音频解析 对音频解析前,一定 ...
- 【C++】基于OpenGL的音乐可视化(一):PCM音频数据的解析
PCM的数据解析出音量信息首先要知道的一些基础常识: 采样频率,指每秒钟取得声音样本的次数,采样频率越高,包含的声音信息自然就越多,声音也就越好,频率越高,保存需要的空间也会高. 采样位宽,即采样值, ...
- java音频频谱_H5录音音频可视化-实时波形频谱绘制、频率直方图
这段时间给GitHub Recorder开源库添加了两个新的音频可视化功能,比以前单一的动态波形显示丰富了好多(下图后两行是不是比第一行看起来丰满些):趁热打铁写了一个音频可视化相关扩展测试代码,下面 ...
- 傅里叶变换音频可视化_H5录音音频可视化-实时波形频谱绘制、频率直方图
这段时间给GitHub Recorder开源库添加了两个新的音频可视化功能,比以前单一的动态波形显示丰富了好多(下图后两行是不是比第一行看起来丰满些):趁热打铁写了一个音频可视化相关扩展测试代码,下面 ...
- [原]OpenGL基础教程(二)多边形绘制
上篇介绍了最基本的三角形绘制,本篇介绍如何使用索引的方式绘制多边行. 为什么要使用索引方式,总体来说提高性能.如何提高:使用顶点数组的好处是避免大量的函数调用.即避免每画一个顶点就调用1次glVert ...
- (音乐可视化项目)Light-Dancer为音乐而生
序言: 这是以我为项目组长所做的一个训练项目,项目结题之后笔者决定拿出来跟诸位分享,希望对你对我都有所帮助 一.成果简单介绍: (1)Reading-LED(作品) (2)Listening-LED( ...
- 计算机可视化仿真技术opengl,基于OpenGL的三维场景可视化仿真
摘要: 随着计算机可视化技术的发展,计算机可视化应用的领域不断地拓宽,广泛地应用在科学计算.人工智能仿真.三维图形的制作方面等领域.可视化是计算机技术应用的热门领域,而这个热门领域的核心都集中在三维真 ...
- 音频频谱显示-基于fmod设计音乐播放器并动态显示频谱图(二)
音频频谱显示-显示音频文件静态频谱图(一) https://blog.csdn.net/xiaolong1126626497/article/details/126971535 音频频谱显示-基于fm ...
- 【Python深度学习】基于Tensorflow2.0构建CNN模型尝试分类音乐类型(二)
前情提要 基于上文所说 基于Tensorflow2.0构建CNN模型尝试分类音乐类型(一) 我用tf2.0和Python3.7复现了一个基于CNN做音乐分类器.用余弦相似度评估距离的一个音乐推荐模型. ...
最新文章
- arduino nano 蓝牙_探索 Golang 云原生游戏服务器开发,5 分钟上手 Nano 游戏服务器框架...
- 判断一个数为多少位 比如 3 是 1位 102 是3位。
- bitset优化+滚动优化dp ----- 2021牛客多校第8场 F Robot
- c mssql mysql_mssql与mysql 数据迁移
- 一开机就提示脱机工作_「华为手机维修自学教程」华为手机的开机触发电路 华为维修技巧...
- 阐述简称PO,VO,TO,BO,DAO,POJO
- 【腾讯云的1001种玩法】 Laravel 整合微视频上传管理能力,轻松打造视频App后台...
- AI2XAML's Bug
- redis bitmap存储入门
- Lotus notes 通讯录的导入导出
- ZigBee协议栈的串口实验
- Postman 发包工具详解
- 双硬盘安装ubuntu18.04踩坑及解决全过程
- 基于FPGA的光纤数据传输
- 折叠屏,vivo的高端打手?
- 《三体》与Taylor展开式的无限遐想
- 跨域问题,以及nginx应对403 ACAO的处理办法
- 宁波银行成长的AB面:增长与合规不可兼得?管理漏洞不容忽视
- 小丑改造计划之复习一
- 轻量级网络 - PVANet SuffleNet
热门文章
- html是否包含字符串,javascript字符串是否包含某字符?
- 数据库函数依赖——完全函数依赖、部分函数依赖、传递函数依赖【通俗易懂,博主会讲人话】
- c语言程序设计扫雷游戏实验报告,C语言程序设计扫雷游戏实验报告-20210415215509.pdf-原创力文档...
- list control原理及成员函数简要整理
- 压缩:gzip压缩原理
- KubeSphere 团队(青云QingCloud) 全职开源职位等你加入!
- 怎么把视频里的声音转换成文字?3个方法轻松解决!
- 《FFmpeg Basics》中文版-10-为视频添加文字
- 【input】输入框事件总结
- Vue中使用v-viewer,显示缩略图点击打开原图