应用核心结构介绍应用技术栈服务器:Node+Express+ejs前端接口:HTML+CSS(CSS3)+JS音频操作:webAudio音频数据可视化:Canvas工程构建express全局安装:npminstall-gexpress-generator使用ejs模板引擎,新建项目music:express--view=ejsmusic进入项目目录安装依赖:cdmusic&&npminstall安装项目变化实时监控工具:npminstall-gsupervisor启动服务,查看项目是否正常创建成功:supervisorbin/www&&观察默认的3000端口127.0.0.1:3000,分析重要的APIAudioContext对象:可以理解为音频上下文对象,包括AudioNode对象及其相关对象。一般一个文档中只有一个AudioContext对象,主要用到其中两个一个属性,四个方法:destination属性:AudioDestinationNode对象,所有的音频输出聚集地,相当于音频硬件,所有的AudioNode都直接或间接连接到这里currentTime属性:AudioContext从创建到当前时间(秒)decodeAudioData(arrayBuffer,succ(buffer),err)方法:异步解码arrayBuffer中包含的音频数据createBufferSource()方法:创建AudioBufferSourceNode对象createAnalyser()方法:创建AnalyserNode对象createGain()/createGainNode()方法:创建GainNode对象AudioBufferSourceNode对象,表示内存中的一段音频资源,其音频数据存放在AudioBuffer的buffer属性中,它有三个属性:buffer属性,AudioBuffer对象,表示音频资源待播放的数据,子属性:duration,表示音频资源循环属性的时长,是否循环播放,默认为falseonenload属性,绑??定start/noteOn(when=ac.curre)后调用的事件处理函数播放音频ntTime,offset=0;duration=buffer.duration-offset),开始播放音频stop/noteOff(when=ac.currentTime),结束播放音频GainNode改变音频音量的对象会改变所有经过其音频的采样帧data信号强度,其属性:gain,是一个AudioParam对象,通过改变它的值,可以改变音频信号的信号强度,最小值为0,最大值为1,默认为1AnalyserNode音频分析对象,它可以实时分析音频资源的时域和频域信息,但不对音频流做任何处理。属性:fftSize:设置FFT值的大小,用于分析获取频域。32-2048之间的2的整数倍,默认为2048。实时获取的音频数据域个数为fftSize的一半frequencyBinCount:实时获取的音频域数据个数为FFT的一半valuegetByteFrequencyData(Uint8Array)复制当前音频的频域数据到Uint8Array
