博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
合成简单的声音波形(一)
阅读量:4082 次
发布时间:2019-05-25

本文共 990 字,大约阅读时间需要 3 分钟。

合成简单的声音波形(一) 收藏

      半年前刚开始研究音频文件时,为了对音频文件有个感性的认识,做了一个合成简单波形的小程序。今天回顾一下这个程序,也算是为后面写音频分析的总结开个头吧。本文将简单的介绍一下Wave文件,并合成三个简单的波形,试图通过这种方式,对音频有个初步的感性认识。

      在此之前,你是否想过老式的黑白电视机在收不到信号的时候,为什么会发出那么难听的声音呢?又是为什么要用那种刺耳的声音做为老式电话的铃声呢?下文将会让你对此有近一步的认识。

      我们第一个要合成的是正弦信号的声音。根据傅叶变换的原理,绝大多数的信号都可以表示成正弦信号叠加的形式。首先就来听听组成其它丰富多采的声音的基本元素是什么样的吧。点击下面的播放按钮播放音频文件。

感觉如何,单调,刺耳,并不好听是吗?

      第二个要合成的是矩形波。在这里合成的波形不是相同的矩形单调的重复,这样做为的是合成有意思的声音。因为如果只是简单的重复,我们就只能得到单调的声音。这段波形由两个矩形合成,其中一个矩形波的周期是另外一个的两倍,每隔600个采样切换一次  。点击下面的播放按钮播放音频文件。

是不是感觉很熟悉呢?对了,就是电话铃声。也就是说老式的电话铃声就是矩形波。至于为什么要用矩形波呢?我个人觉得是因为容易实现。电话中发出铃声的部分是电子元件,而它处理的是连续信号,只要简单的改变这个元件电平的持继时间,就可以很容易的合成我们所听到电话铃声。

      上面两个波形都是有规律的,那么随机生成的信号又会是什么样子的呢?实现生成随机信号的代码很简单,就是往音频数据中随机的填充震幅。点击下面的播放按钮播放音频文件。

是不是感觉很熟悉?在电视机收不到信号时会发这样的声音,确切的说不是收不到信号,而是没收到电台发出的信号,收到了随机的信号。不过现在的彩电就好了,会判断一下接收到的是否是随机信号,如果是就不播放声音,你也就不会听到这么刺耳的声音了。

      点击这里下载本文中合成Wave文件的代码,代码使用C语言编写,在win xp+vs.net 2003环境下编译通过。编译并运行后,会在当前目录下生成四个Wave文件,分别是rand.wav、ring.wav、sine.wav和triangle.wav。

本文来自CSDN博客,转载请标明出处:

posted on 2009-10-09 10:24 阅读(...) 评论(...)

你可能感兴趣的文章
树莓派利用串口进行通信(这个是用c写的树莓派的串口)
查看>>
树莓派3 B+ 的串口(USART)使用问题 (也是用C写的)
查看>>
ROS下树莓派USB串口通信(具体为接收到某个ROS的topic数据后,向串口下发数据。)
查看>>
ROS系统的串口数据读取和解析
查看>>
ROS串口编程学习笔记
查看>>
ROS环境下串口通信
查看>>
ros中使用serial包实现串口通信
查看>>
做机械臂导航时遇到的问题5:如何使用ROS内嵌serial功能包实现串口通信
查看>>
ROS为上位机与STM32为下位机串口通讯(一)
查看>>
github上搜了下有ROS uart方面的
查看>>
STM32和ROS的串口通信(这篇是公众号文章写得比较正规详细)
查看>>
全网最实用的STM32和ROS机器人的串口通信方案
查看>>
我觉得还是把ACfly的传感器的逻辑弄清楚,这样再去二次开发好一些。(折腾半天发现有很关键一部分没有开源,怪不得找不到,这让我很失望)
查看>>
freertos工程似乎都是先创建一个任务,再在这个任务里面创建其他任务,似乎就像任务树
查看>>
无人机的高度自适应
查看>>
别人对ACfly的评价
查看>>
还有你怎么判断ACfly是正常接收到了数据,怎么从ACfly端能看到实时的T265传给ACfly的位置数据。
查看>>
我觉得对双目VIO+无人机,单单靠VIO这边输出很好的位置信息还是不够的,无人机这边还是需要做做滤波,比如防止跳变什么的,保证无人机的稳定。
查看>>
英特尔RealSense激光雷达摄像头L515拆解分析
查看>>
优象光流使用的一些注意事项(转载)(光流数据要融合其他传感器使用比较好)
查看>>