一年前写了一个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数据(正弦波、方波、三角波)解读相关推荐

  1. ICL8038信号发生器 正弦波 方波 三角波 低频信号发生 波形发生 原理图和PCB

    ICL8038信号发生器 正弦波 方波 三角波 低频信号发生 波形发生 原理图和PCB 目录 ICL8038信号发生器 正弦波 方波 三角波 低频信号发生 波形发生 原理图和PCB 基本原理 芯片选型 ...

  2. Verilog实现正弦波、三角波、方波、锯齿波的输出

    1.理论知识 实现方法:将数字量转换为模拟量,根据输出数字量的大小转换为模拟量以实现信号幅值的变化. 具体思路:提前声明一个ROM IP核,将正弦波.三角板.方波和锯齿波的数字量写入进去,或者也可以自 ...

  3. MATLAB输出四种常用波形(方波、正弦波、三角波、锯齿波)

    1.我们在处理数学以及信号的时候经常会用到MATLAB,因为它可以使我们直观地观察到我们需要的信号的模型.因此掌握基本的MATLAB还是有必要的.这里我们来讲解一下如何用MATLAB产生四种常用波形( ...

  4. 模电课设 方波—三角波—正弦波信号发生器

    文章目录 一.课程设计目的 二.设计内容 三.设计思路 一.课程设计目的 掌握电子电路的分析与综合设计方法,能够理论联系实践,设计电路模型 掌握电子技术现代工具的使用,能熟练运用电路仿真软件对电路进行 ...

  5. 电赛练习1《基础版》— 利用Multisim设计并制作一个简易的方波-三角波-正弦波信号发生器,要求输出频率可调,矩形波占空比可调等

    首先呢, 感慨一下,我记得去年这个时候,也是放寒假,我在CSDN上写了第一篇原创,使用python画了一个蜡笔小新的头像,并且我在文末说明了自己会陆续更新很多文章,结果- 到了今天放寒假,我的文章还是 ...

  6. java用数组显示周期性波形,常见的周期性变化波形有正弦波、三角波和矩形波。...

    常见的周期性变化波形有正弦波.三角波和矩形波. 答:对 美好的爱情是命中注定的,你们如果是"对的那个人",那么就能够美满地相处,而无需努力维护 答:× ________ can s ...

  7. (绝对有效)Proteus7.5_DA0832五个按键输出正弦波,三角波,矩形波,锯齿波,梯形波。

    (绝对有效)Proteus7.5_DA0832五个按键输出正弦波,三角波,矩形波,锯齿.@Twinkle Galaxy Proteus7.5_DA0832五个按键输出正弦波,三角波,矩形波,锯齿 (一 ...

  8. 002_89C52_Proteus_DAC0832_输出50HZ,正弦波,三角波,矩形波,锯齿波

    (一)非常感谢:89C51与ad0832 输出正弦波,三角波,矩形波,锯齿波 (二)在上面的情况下进行程序的修改,实现50HZ的输出 (三)电路图 (三)输出方波 (四)输出锯齿波 (五)输出三角波 ...

  9. 如何用FPGA输出正弦波、三角波等

    如何用FPGA输出正弦波.三角波等 一.开发工具 二.步骤 1.设置ROM IP核 2.程序编写 一.开发工具 1. 软件平台:Quartus ll 2.芯片:不重要 二.步骤 1.设置ROM IP核 ...

最新文章

  1. 【TX2】安装NVIDIA SDK Manager(JetPack 4.6)后,下载kernel和u-boot源码
  2. C# Null 赋值
  3. ui设计中的版式设计_设计中的版式-第3部分
  4. [资源]181个Python开源项目分享!
  5. 【SPOJ - DQUERY】D-query(权值树状数组 或 主席树 或 莫队)
  6. %3c php $str1=,ThinkPHP5.0.215.1.* 代码执行和命令执行漏洞利用
  7. 经过一晚上的浓缩之后
  8. express+mysqle
  9. R语言模拟:Bias Variance Decomposition
  10. Php clearstatcache() 函数详解
  11. 数学建模之微分方程模型详解
  12. 电路串联和并联图解_如何识别串联电路和并联电路
  13. 程序 卡塔_卡塔斯码
  14. [FIPS 197] AES 测试向量
  15. 我的大一C++学习笔记
  16. 使用gtest做单元测试
  17. 关于sicp练习2.73的前置程序
  18. Adolescent Architecture
  19. UE4 更改工程文件名字的方法
  20. 文字图片转成点阵的小工具

热门文章

  1. python数据写入表格生成图片_python在word文档里插入图片和表格实例代码演示
  2. linux蓝屏修复工具,linux双系统修复grub
  3. HTML5中多页面实现背景音乐的连续播放
  4. C语言实验过程化记录-1
  5. 计算机二级如何准备(附资料和题库)
  6. 计算机玩什么游戏都闪退,为什么游戏会闪退_电脑玩游戏老是闪退怎么办-win7之家...
  7. python脚本自动化盲注_python dvwa布尔盲注自动化脚本(level=low)
  8. 最新版珊瑚虫QQ带的流氓软件yok搜索引擎清除手记
  9. 处理海量数据的磁盘外排序算法
  10. 关于CCNA的培训课程(1)-- 网络基础部分