标准pcm数据(正弦波、方波、三角波)解读
一年前写了一个demo,用于生成几种标准的波形,如正弦波、方波、三角波。之前写的只有这几个功能:波形/通道/时长/频率的控制选择,这几天抽了些时间又加了增益控制功能。为了避免东西丢失或意外删除,特上传到github,有需要的可以自己下载验证。
在测量板子信号时,我们根据需要生成波形(wav封装),将得到的文件放到板子存储设备中进行播放。记得以前调试时都是找一个同事(一个好耍的憨厚朴实纯真的兄弟,名字叫jiawei)临时要的,然而数量毕竟有限,因为我可能需要不同采样率/通道/增益/频率组合的信号。。。
下面结合git仓库中的CStandardWaveGenerator和Adobe Audition来介绍声音的一些概念。像声道、采样率、增益、频率、时长等概念。以后有时间了再另起博文补充傅里叶变换,利用这个demo生成所需要的信号源。
示例介绍
生成信号:正弦波 + 时长100ms + 周期10ms(频率100Hz) + 单声道 + 8k采样率 + 单声道 + 6dB
执行命令:./StandardWaveGenerator.exe 0 100 10 8000 1 -6
附带信息:get sin.wav with sample_rate=8000, channle=1, duration=100 ms, period=10 ms, gain=-6 dB, pcmLen:1600
得到文件sin.wav,用Audition解读:
信号解读
1.单双声道(channel)
这个通俗讲,你用几个mic去采集信号。如果是双声道,则上图有两个波形。双声道每次采样数据量为:2chn * 16bit(s16le) = 4Bytes
2.采样频率(sample_rate)
这个要与信号频率(周期信号的频率)做下区别。这个是指:每秒钟的采样次数。
就如上面示例图示,采样频率是8k,代表着1s内进行了8000次采样,而只保留了100ms的信号,因此数据量大小:8000 * 2Bytes * (100/1000) = 1600Bytes,从命令输出信息也可看到。
3.时长(duration)
这个文件的时间长度,示例中是100ms
4.信号频率/信号周期(frequence/period)
这个值代表信号多长时间后又开始重复,上面示例中使用了这个“period=10 ms”来控制,即T=10ms,那么f=1/T=100Hz,从图示下半部分可以看出信号的频率是100(明显的一条黄带)。
5.增益(gain)
这个可以表示声音的响度,其具体含义是信号与某一个值对比:20lg(V1/V2),在音频里则与最大值V2=215=32768进行对比,那么-6dB的信号可以算出来其值为:214=16384
例如,如果我们从文件中去找出最大值是多少来确认是否属实,可以按以下这么操作:
step1. 半波最大pcm值采样序号:10ms * (1/4) / 1000ms * 8000 = 20
step2. 在文件中的offset:44 + 20*2 = 84 = 0x54,其中44为wav_header,20*2中的2代表每次采样的2Bytes
step3. 用winhex进行查找(alt+g):得到 25 40
step4. 25 40代表值多少呢?由于存储格式为S16LE,S(signed)代表有符号,LE(little endian)为小端存储(先存低字节,再存高字节),那么这个采样值为0x4025 = 16421,大体上接近理论值16384。
转载于:https://www.cnblogs.com/Dreaming-in-Gottingen/p/11441842.html
标准pcm数据(正弦波、方波、三角波)解读相关推荐
- ICL8038信号发生器 正弦波 方波 三角波 低频信号发生 波形发生 原理图和PCB
ICL8038信号发生器 正弦波 方波 三角波 低频信号发生 波形发生 原理图和PCB 目录 ICL8038信号发生器 正弦波 方波 三角波 低频信号发生 波形发生 原理图和PCB 基本原理 芯片选型 ...
- Verilog实现正弦波、三角波、方波、锯齿波的输出
1.理论知识 实现方法:将数字量转换为模拟量,根据输出数字量的大小转换为模拟量以实现信号幅值的变化. 具体思路:提前声明一个ROM IP核,将正弦波.三角板.方波和锯齿波的数字量写入进去,或者也可以自 ...
- MATLAB输出四种常用波形(方波、正弦波、三角波、锯齿波)
1.我们在处理数学以及信号的时候经常会用到MATLAB,因为它可以使我们直观地观察到我们需要的信号的模型.因此掌握基本的MATLAB还是有必要的.这里我们来讲解一下如何用MATLAB产生四种常用波形( ...
- 模电课设 方波—三角波—正弦波信号发生器
文章目录 一.课程设计目的 二.设计内容 三.设计思路 一.课程设计目的 掌握电子电路的分析与综合设计方法,能够理论联系实践,设计电路模型 掌握电子技术现代工具的使用,能熟练运用电路仿真软件对电路进行 ...
- 电赛练习1《基础版》— 利用Multisim设计并制作一个简易的方波-三角波-正弦波信号发生器,要求输出频率可调,矩形波占空比可调等
首先呢, 感慨一下,我记得去年这个时候,也是放寒假,我在CSDN上写了第一篇原创,使用python画了一个蜡笔小新的头像,并且我在文末说明了自己会陆续更新很多文章,结果- 到了今天放寒假,我的文章还是 ...
- java用数组显示周期性波形,常见的周期性变化波形有正弦波、三角波和矩形波。...
常见的周期性变化波形有正弦波.三角波和矩形波. 答:对 美好的爱情是命中注定的,你们如果是"对的那个人",那么就能够美满地相处,而无需努力维护 答:× ________ can s ...
- (绝对有效)Proteus7.5_DA0832五个按键输出正弦波,三角波,矩形波,锯齿波,梯形波。
(绝对有效)Proteus7.5_DA0832五个按键输出正弦波,三角波,矩形波,锯齿.@Twinkle Galaxy Proteus7.5_DA0832五个按键输出正弦波,三角波,矩形波,锯齿 (一 ...
- 002_89C52_Proteus_DAC0832_输出50HZ,正弦波,三角波,矩形波,锯齿波
(一)非常感谢:89C51与ad0832 输出正弦波,三角波,矩形波,锯齿波 (二)在上面的情况下进行程序的修改,实现50HZ的输出 (三)电路图 (三)输出方波 (四)输出锯齿波 (五)输出三角波 ...
- 如何用FPGA输出正弦波、三角波等
如何用FPGA输出正弦波.三角波等 一.开发工具 二.步骤 1.设置ROM IP核 2.程序编写 一.开发工具 1. 软件平台:Quartus ll 2.芯片:不重要 二.步骤 1.设置ROM IP核 ...
最新文章
- 【TX2】安装NVIDIA SDK Manager(JetPack 4.6)后,下载kernel和u-boot源码
- C# Null 赋值
- ui设计中的版式设计_设计中的版式-第3部分
- [资源]181个Python开源项目分享!
- 【SPOJ - DQUERY】D-query(权值树状数组 或 主席树 或 莫队)
- %3c php $str1=,ThinkPHP5.0.215.1.* 代码执行和命令执行漏洞利用
- 经过一晚上的浓缩之后
- express+mysqle
- R语言模拟:Bias Variance Decomposition
- Php clearstatcache() 函数详解
- 数学建模之微分方程模型详解
- 电路串联和并联图解_如何识别串联电路和并联电路
- 程序 卡塔_卡塔斯码
- [FIPS 197] AES 测试向量
- 我的大一C++学习笔记
- 使用gtest做单元测试
- 关于sicp练习2.73的前置程序
- Adolescent Architecture
- UE4 更改工程文件名字的方法
- 文字图片转成点阵的小工具
热门文章
- python数据写入表格生成图片_python在word文档里插入图片和表格实例代码演示
- linux蓝屏修复工具,linux双系统修复grub
- HTML5中多页面实现背景音乐的连续播放
- C语言实验过程化记录-1
- 计算机二级如何准备(附资料和题库)
- 计算机玩什么游戏都闪退,为什么游戏会闪退_电脑玩游戏老是闪退怎么办-win7之家...
- python脚本自动化盲注_python dvwa布尔盲注自动化脚本(level=low)
- 最新版珊瑚虫QQ带的流氓软件yok搜索引擎清除手记
- 处理海量数据的磁盘外排序算法
- 关于CCNA的培训课程(1)-- 网络基础部分