在上一篇博客中,我已经介绍了怎么去解析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的音乐可视化(二):波形的绘制相关推荐

  1. 【C++】基于OpenGL的音乐可视化(六): 最终版本

    经过一个多月的努力,插件的开发终于完成,等待以后测试上线,激动٩(๑>◡<๑)۶.这里,写一下利用OpenGL进行音乐可视化即音乐频谱图的绘制大致流程. (1)音频解析 对音频解析前,一定 ...

  2. 【C++】基于OpenGL的音乐可视化(一):PCM音频数据的解析

    PCM的数据解析出音量信息首先要知道的一些基础常识: 采样频率,指每秒钟取得声音样本的次数,采样频率越高,包含的声音信息自然就越多,声音也就越好,频率越高,保存需要的空间也会高. 采样位宽,即采样值, ...

  3. java音频频谱_H5录音音频可视化-实时波形频谱绘制、频率直方图

    这段时间给GitHub Recorder开源库添加了两个新的音频可视化功能,比以前单一的动态波形显示丰富了好多(下图后两行是不是比第一行看起来丰满些):趁热打铁写了一个音频可视化相关扩展测试代码,下面 ...

  4. 傅里叶变换音频可视化_H5录音音频可视化-实时波形频谱绘制、频率直方图

    这段时间给GitHub Recorder开源库添加了两个新的音频可视化功能,比以前单一的动态波形显示丰富了好多(下图后两行是不是比第一行看起来丰满些):趁热打铁写了一个音频可视化相关扩展测试代码,下面 ...

  5. [原]OpenGL基础教程(二)多边形绘制

    上篇介绍了最基本的三角形绘制,本篇介绍如何使用索引的方式绘制多边行. 为什么要使用索引方式,总体来说提高性能.如何提高:使用顶点数组的好处是避免大量的函数调用.即避免每画一个顶点就调用1次glVert ...

  6. (音乐可视化项目)Light-Dancer为音乐而生

    序言: 这是以我为项目组长所做的一个训练项目,项目结题之后笔者决定拿出来跟诸位分享,希望对你对我都有所帮助 一.成果简单介绍: (1)Reading-LED(作品) (2)Listening-LED( ...

  7. 计算机可视化仿真技术opengl,基于OpenGL的三维场景可视化仿真

    摘要: 随着计算机可视化技术的发展,计算机可视化应用的领域不断地拓宽,广泛地应用在科学计算.人工智能仿真.三维图形的制作方面等领域.可视化是计算机技术应用的热门领域,而这个热门领域的核心都集中在三维真 ...

  8. 音频频谱显示-基于fmod设计音乐播放器并动态显示频谱图(二)

    音频频谱显示-显示音频文件静态频谱图(一) https://blog.csdn.net/xiaolong1126626497/article/details/126971535 音频频谱显示-基于fm ...

  9. 【Python深度学习】基于Tensorflow2.0构建CNN模型尝试分类音乐类型(二)

    前情提要 基于上文所说 基于Tensorflow2.0构建CNN模型尝试分类音乐类型(一) 我用tf2.0和Python3.7复现了一个基于CNN做音乐分类器.用余弦相似度评估距离的一个音乐推荐模型. ...

最新文章

  1. arduino nano 蓝牙_探索 Golang 云原生游戏服务器开发,5 分钟上手 Nano 游戏服务器框架...
  2. 判断一个数为多少位 比如 3 是 1位 102 是3位。
  3. bitset优化+滚动优化dp ----- 2021牛客多校第8场 F Robot
  4. c mssql mysql_mssql与mysql 数据迁移
  5. 一开机就提示脱机工作_「华为手机维修自学教程」华为手机的开机触发电路 华为维修技巧...
  6. 阐述简称PO,VO,TO,BO,DAO,POJO
  7. 【腾讯云的1001种玩法】 Laravel 整合微视频上传管理能力,轻松打造视频App后台...
  8. AI2XAML's Bug
  9. redis bitmap存储入门
  10. Lotus notes 通讯录的导入导出
  11. ZigBee协议栈的串口实验
  12. Postman 发包工具详解
  13. 双硬盘安装ubuntu18.04踩坑及解决全过程
  14. 基于FPGA的光纤数据传输
  15. 折叠屏,vivo的高端打手?
  16. 《三体》与Taylor展开式的无限遐想
  17. 跨域问题,以及nginx应对403 ACAO的处理办法
  18. 宁波银行成长的AB面:增长与合规不可兼得?管理漏洞不容忽视
  19. 小丑改造计划之复习一
  20. 轻量级网络 - PVANet SuffleNet

热门文章

  1. html是否包含字符串,javascript字符串是否包含某字符?
  2. 数据库函数依赖——完全函数依赖、部分函数依赖、传递函数依赖【通俗易懂,博主会讲人话】
  3. c语言程序设计扫雷游戏实验报告,C语言程序设计扫雷游戏实验报告-20210415215509.pdf-原创力文档...
  4. list control原理及成员函数简要整理
  5. 压缩:gzip压缩原理
  6. KubeSphere 团队(青云QingCloud) 全职开源职位等你加入!
  7. 怎么把视频里的声音转换成文字?3个方法轻松解决!
  8. 《FFmpeg Basics》中文版-10-为视频添加文字
  9. 【input】输入框事件总结
  10. Vue中使用v-viewer,显示缩略图点击打开原图