一个例子讲解wav头文件 stm32声音程序 录音和播放 wav
下面我们一wav头文件来分析一下:
下面是双声道的,16位,48000采样录的wav文件:
打开属性,能看到的有用信息只有比特率了:

上图的比特率就是
wav头文件里的bitrate:
1536kbps=量化采样点*位深*声道数
这个比特率是按照 '位' 来算的,,, * 2 :每秒内消耗多少位
用GoldWave软件打开,滑动滚轮进行放大:

200us总共输出了20个数据,,但是每个数据是16位(因为消耗两个8位得到的数据)
这20个数据是由40个8位的音频数据组成的.
200us消耗了40个数据
20us消耗4个数据
消耗4个数据就是完成一个 '音' 单元的播放 一个音,也就是图中的一个阶梯
所以产生一个 '音' 需要20us [也就是 一个音对应一个中断,当产生一个中断的时候,让两个DAC分别播放出去一个阶梯]
1秒产生500 000 个约等于480 000个 '音' :频率是根据 '音' 的设置,,一个 '音' 可能等于好几个音频数据
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
实际上这个音频的定时器是这样设置的

通过仿真得到:
转换成十进制 48000
bitrate=0x00177000 ------转换成十进制就是1536000
得到:

samplerate=48000 #在我们编写程序的时候,这个是中断设定的参数
这个是WAV头文件里得到的
按照程序里计算,48000就相当于20.833us
取整就相当于20us
20us播放两个声道,每个声道是由两个数据得到的,,
也就是20us消耗4个数据
这个结果,和我们用软件打开的查看一样的.
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
用 UltraEdit软件打开
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
这是百度文库的一篇文章,讲解的很清楚
https://wenku.baidu.com/view/45960348551810a6f424863f.html

上面的例子属于16位立体声道,,,
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
下面是摘自网上的:可以不用看,有些事不对的:

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
推荐文档:http://www.sohu.com/a/115830046_119709
通过调整计时器,,每25us控制ADC进行一次采集,,,,采集的数据交给DMA,,,,然后DMA给一个数组缓存,,,之后存入SD卡
如果25us采集一个
采样率就是SampleRate=40000; 其值为通道数×每秒样本数×每样本的数据位数/8
怎么得到的呢?
采样率实际上意义是每秒采集的位数:
那么就是 25us采1个8位数,,,那么100us采集4个8位数,,,,1000 000us 就是1s采集 40 000个8位数
所以就是采样率为40000
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
一个例子讲解wav头文件 stm32声音程序 录音和播放 wav的更多相关文章
- 一个包含所有C++头文件的头函数
#include<bits/stdc++.h> using namespace std; 使用方法和平常的头文件一样,#include<bits/stdc++.h>包含以下头文 ...
- 从一个例子讲解拷贝构造函数与return
#include "iostream" using namespace std; class Location { public: Location(, ) { X = xx; Y ...
- C语言解析WAV音频文件
C语言解析WAV音频文件 代码地址: Github : https://github.com/CasterWx/c-wave-master 目录 前言 了解WAV音频文件 什么是二进制文件 WAV的二 ...
- c++中头文件include规则浅析[译]
英文原文地址 在开发大型的软件项目时,头文件需要得到恰当的管理,甚至在c中也会面临这种问题,当我们用c++开发时,头文件的管理会变得更复杂,更加耗费我们的时间去管理,下面我将讲一些包含规则来简化这个苦 ...
- Windows Phone 8初学者开发—第21部分:永久保存Wav音频文件
原文 Windows Phone 8初学者开发—第21部分:永久保存Wav音频文件 第21部分:永久保存Wav音频文件 原文地址:http://channel9.msdn.com/Series/Win ...
- S3C2416裸机开发系列19_Fatfs播放录像wav音频文件
S3C2416裸机开发系列19 Fatfs播放录像wav音频文件 国际象棋男孩 1048272975 多媒体资源,一般都是以文件的形式存储在固化存储器中.Fatfs所支持的fat32为windo ...
- wav格式文件、pcm数据
wav格式文件是常见的录音文件,是声音波形文件格式之一,wav 文件由文件头和数据体两部分组成. 文件头是我们在做录音保存到文件的时候,要存储的文件的说明信息,播放器要通过文件头的相关信息去读取数据播 ...
- gsoap 学习 1-由wsdl文件生成h头文件
开始前先看一下用户向导吧 http://www.cs.fsu.edu/~engelen/soap.html 中左侧点击Documentation 英语水平确实有限,有些内容可能说的不准确,敬请参考向导 ...
- 头文件与cpp文件为什么要分开写
最表面的机制是: 头文件是程序的界面(是代码界面),提供给程序员以 类.模版.函数等一系列的声明,让程序员知道应该怎么调用里面的"东西". 从动态链接库的角度看: 头文件提供界面 ...
随机推荐
- OpenCV —— 图像变换
将一副图像转变成另一种表现形式 ,比如,傅里叶变换将图像转换成频谱分量 卷积 —— 变换的基础 cvFilter2D 源图像 src 和目标图像 dst 大小应该相同 注意:卷积核的系数应该是浮点类 ...
- Block Manager
在Spark中,将数据抽象为Block(不论是shuffle数据,还是节点本身存储的数据),而每个driver/executor中的block都是由`BlockManager`这个类来负责管理的.对于 ...
- 在物理 Data Guard 中对异构主备系统的支持 (文档 ID 1602437.1)
Data Guard中主数据库与物理备用数据库(Redo Apply)之间可以有什么差别?本说明针对重做应用和 Oracle Data Guard 12 发行版 1 进行了更新.它适用于 Oracle ...
- Android5.0L退出APP横竖屏切换导致的触摸屏输入(Touch Event)无效(冻屏)问题分析(Key Event仍然有效)
.Nexus4和Nexus5在相同的简单測试下没有重现此问题,因没有源代码所以无法Debug和打印log.兴许会尝试获取nexus的源代码以了解它的改动方案. 二.解决方案 通过初步分析.深入分析.对 ...
- [TypeScript] Shallow copy object by using spread opreator
For example we have an object: const todo = { text: "Water the flowers", completed: false, ...
- 【UML】UML在软件开发各个阶段的应用
一.UML5个互联视图 UML中经常使用5个互联的视图来描写叙述系统的体系结构. 如图 (1)用例视图(Use-case View) 由专门描写叙述可被终于用户.分析人员.測试人员看到的系统行为的用例 ...
- Cannot use isset() on the result of an expression (you can use "null !== expression" instead)
if (isset($array[2])){ 抛出错误 Cannot use isset() on the result of an expression (you can use "nu ...
- [NOI.AC#34]palinedrome 字符串hash+贪心
容易看出,只要从两边往中间扫描,碰到相等的就直接分割然后加入答案即可,判断相等用字符串hash #include<bits/stdc++.h> #define REP(i,a,b) for ...
- android图片特效处理之光照效果
这篇将讲到图片特效处理的光照效果.跟前面一样是对像素点进行处理,算法是通用的. 算法原理:图片上面的像素点按照给定圆心,按照圆半径的变化,像素点的RGB值分别加上相应的值作为当前点的RGB值. 例: ...
- ASP.NET MVC 4 (十一) Bundles和显示模式--asp.net mvc中 @Scripts.Render("~/bundles/jquery")是什么意思? 在布局文件中使用Scripts.Render()输出脚本包,Styles.Render()输出风格包:
ASP.NET MVC 4 (十一) Bundles和显示模式 ASP.NET MVC 4 引入的js打包压缩功能.打包压缩jquery目录下的文件,在布局文件中使用Scripts.Render()输 ...