一年前写了一个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. 1242 Rescue BFS
  2. apache服务出现Forbidden 403问题的解决方法总结
  3. 解析几何:第三章 平面上的直线
  4. 《大话数据结构》样章试读
  5. 计算机2级access,计算机二级-Access-窗体的设计视图
  6. 嵌入式烤箱能不能放台面上_2021年开放式厨房怎么设计?先来做做嵌入式家电的功课吧!...
  7. python网站框架下载_Python搭建网站框架
  8. 对PostgreSQL中后台进程内存挂载的初步学习
  9. Asp.Net中using的使用的方法(转)
  10. CSS3: 常用动画特效及4个最流行的动画库
  11. 360软件管家独立版_【软件】360全家桶独立版
  12. LeetCode 240. Search a 2D Matrix II
  13. 【软件工程作业3】DFD数据流图和SC结构图
  14. 如何制作SDTM Define- 1. 指导原则
  15. python判断身份证是否合法的函数_oracle中验证身份证是否合法的函数脚本
  16. 猫狗图像识别(卷积神经网络算法,TensorFlow安装)
  17. Quartus II SDC文件建立流程
  18. FFMPEG将视频切片成ts文件并对ts文件进行ASE加密,并合并成M3U8操作方法
  19. 面对电磁辐射干扰,如何轻松进行电子线路设计布局?
  20. Python 计算思维训练——输入和错误处理练习(一)

热门文章

  1. hdmi tv 的edid_HDTV 之-HDMI EDID
  2. 读《如果蜗牛有爱情》上下册
  3. freeswitch获取手机号码状态
  4. 计算机是怎样跑起来在线看,第三章 计算机是怎样跑起来的
  5. 分布式中间件之消息中间件
  6. bash 详解 [转]
  7. 新浪微博百万用户分布式压测实践手记
  8. 如何购买赛门铁克的代码数字签名?
  9. 逻辑回归实战--美国挑战者号飞船事故_同盾分数与多头借贷Python建模
  10. 一个完整决策树的构建案例