摘要

音乐干听多没劲,来点可视化效果让音乐“动”起来!底部源码分享!

正文

说明

在浏览器端 AudioContext 是一个专门用于音频处理的接口,工作原理是将 AudioContext 创建出来的各种节点相互连接,音频数据流经这些节点,我们对其控制。

如何播放

先初始化环境。

let AudioContext = window.AudioContext;
let audioContext = new AudioContext();

通过 audioContext 我们可以创建资源节点,资源节点接受音频数据后,连接至扬声器完成播放,如下示意图与代码。

let audioBufferSourceNode = audioContext.createBufferSource();
audioBufferSourceNode.buffer = 音频数据AudioBuffer;
audioBufferSourceNode.connect(audioContext.destination);
audioBufferSourceNode.start(0);

AudioBuffer的获取

流程我们了解到了,如何取到 AudioBuffer 呢?一般的做法是通过 FileReader 来读取到 File 类型,转为 ArrayBuffer 类型,最后再转 AudioBuffer 类型。有没有更方便的做法呢?当然有了!白嫖啊!我们打印引擎封装好的 cc.AudioClip 资源,可以清晰的看到 _audio 就是我们想要的 AudioBuffer 类型,完美!

数据处理

好了,万事俱备,就差如何分析音频数据了。我们知道现在资源节点是直接连接到扬声器的,那么我们只要在两者之间插入一个分析器就好了!上图,上代码!(底部有完整项目的开源地址)

let AudioContext = window.AudioContext;
// audioContext 只相当于一个容器。
let audioContext = new AudioContext();
// 要让 audioContext 真正丰富起来需要将实际的音乐信息传递给它的。
// 也就是将 AudioBuffer 数据传递进去。
// 以下就是创建音频资源节点管理者。
this.audioBufferSourceNode = audioContext.createBufferSource();
// 将 AudioBuffer 传递进去。
this.audioBufferSourceNode.buffer = this.music._audio;
// 创建分析器。
this.analyser = audioContext.createAnalyser();
// 精度设置
this.analyser.fftSize = 256;
// 在传到扬声器之前,连接到分析器。
this.audioBufferSourceNode.connect(this.analyser);
// 连接到扬声器。
this.analyser.connect(audioContext.destination);
// 开始播放
this.audioBufferSourceNode.start(0);

如何显示

分析器已经连接完毕,那么我们其实想取数据的时候去取一下就行了。

// 建立数据准备接受数据
this.dataArray = new Uint8Array(this.analyser.frequencyBinCount);
// 分析结果存入数组。
this.analyser.getByteFrequencyData(this.dataArray);
// 自定义方法处理数据
this.draw(this.dataArray);

结语

是不是有收获呢!!!O(∩_∩)O~~

源码已经开源,你们的Star就是我分享的最大动力!

开源地址:https://github.com/KuoKuo666/CocosCreator-MusicView

微信公众号

CocosCreator之KUOKUO带你做音乐可视化相关推荐

  1. CocosCreator之KUOKUO带你做疯狂木板-变长(1)

    本次引擎2.0.5 编辑工具VSCode 目标: 第一部分,手指点击变长的木板. 这种类型的微信小游戏还是很多滴,今天KUOKUO带大家做一做. 我们新建一个工程: 加个bk背景,保存为game场景. ...

  2. CocosCreator之KUOKUO带你做个加速带!起飞!

    摘要 有趣的物理小游戏总能让小伙伴们爱不释手,而 CocosCreator 的内置物理引擎让其开发变得更加简单.今天 KUOKUO 就为大家带来物理的加速带,让主角小恐龙起飞! 正文 使用版本 Coc ...

  3. CocosCreator之KUOKUO带你做双摄像机-单独渲染UI

    引擎版本 CocosCreator v2.1.2 引言 相信小伙伴们在做摄像机跟随主角的游戏时会遇到 UI 节点不动的问题,眼睁睁的看着按钮远去.如何解决呢?建立两个摄像机分开渲染即可. 问题演示 首 ...

  4. CocosCreator之KUOKUO带你做喵喵的跳跃

    本次引擎2.0.5 编辑工具VSCode 如遇不会某个步骤可以先过一遍之前教程,或者下方评论,感谢支持! 目标:喵喵的跳跃 今天教大家CocosCreator的动作函数: 它可以实现平滑的每秒60帧左 ...

  5. CocosCreator之KUOKUO带你做个基于物理的跑酷游戏第二部分-做个动画加点炸弹

    本次引擎2.0.5 编辑工具VSCode 目标:第二部分,做个主角动画,加入炸弹. 把帧动画资源导入,然后把zhujue大小改了,图片改为我们序列帧动画第一个. 素材结尾给出. 打开动画编辑器,弄一个 ...

  6. CocosCreator之KUOKUO带你做自己的艺术数字字体

    实现效果 教程链接 https://www.bilibili.com/video/av55801008 O(∩_∩)O~~

  7. CocosCreator之KUOKUO带你做个电玩叠乌龟游戏

    引擎版本: 2.0.10 编程语言: TypeScript 视频链接: https://www.bilibili.com/video/av57323107 开源地址在视频简介中. 欢迎大家去哔哩哔哩关 ...

  8. CocosCreator之KUOKUO带你做个基于物理引擎的绳子关节的duang~

    本次引擎2.0.5 编辑工具VSCode 目标:基于物理引擎的绳子关节的duang~ 来吧,让我们走进物理世界! 新建工程: 单色精灵背景,单色精灵地面. 然后给ground加刚体,加个物理碰撞盒子. ...

  9. CocosCreator之KUOKUO带你做个基于物理引擎的轮子小车的duang~

    本次引擎2.0.5 编辑工具VSCode 目标:基于物理引擎的轮子小车的duang~ 来吧,让我们走进物理世界! 新建工程: 单色精灵背景,单色精灵地面. 然后给ground加刚体,加个物理碰撞盒子. ...

最新文章

  1. java jdk 环境变量配置(window 10 系统)
  2. 使用mac pro电脑当tomcat端口被占用怎么解决?
  3. 并发编程-19AQS同步组件之重入锁ReentrantLock、 读写锁ReentrantReadWriteLock、Condition
  4. iOS QQ分享图片无反应问题
  5. 历届试题 打印十字图
  6. 需求分析与建模最佳实践_社交媒体和主题建模:如何在实践中分析帖子
  7. 转-SpringBoot——使用外置的Tomcat服务器
  8. mysql-mmm 集群高可用软件介绍
  9. 前端人职场发展的 6 个方向
  10. SYN攻击原理以及检测防范技术
  11. android语音识别
  12. iOS中处理时间的类
  13. 计算机组成第五章课后答案,计算机组成原理第5章部分习题参考答案
  14. Qt 5 下载与安装详解
  15. 2022年一级建造师《公路工程》模拟考试卷带答案
  16. 2019-08-27-Seo基础知识
  17. 论找对客服妹子对修改邓白氏码的公司信息的重要性
  18. 狂神说笔记之ElasticSearch
  19. mysql学习笔记 51_mysql学习笔记
  20. 用 8550 和 ULN2003 驱动小型直流电机正反转

热门文章

  1. [VB.NET]如何向数据库字段中写入文件?
  2. Android初学------系统设置之设置输入法
  3. Android之无限轮播图源代码
  4. 红米6A 9.93开发版 刷 magisk面具 方法
  5. 美观实用!吹爆这个中文排版开源项目
  6. Marvell 88W8686/88W8782/88W8801 WiFi模块驱动程序的编写
  7. 最全python爬虫面试笔试题及答案汇总,三万多字,持续更新,适合新手,应届生
  8. 【SAP Abap】SAP增强开发总结
  9. 自媒体游戏领域视频素材在哪找?这几种找素材方法你可以收藏
  10. mapreduce软件框架中作业与任务的含义