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

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

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

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

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

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

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


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

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

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

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


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/thinkport/archive/2008/04/05/2253363.aspx

相关文章
|
人工智能 搜索推荐 数据挖掘
AI教育的评估方法有哪些?
【6月更文挑战第2天】AI教育的评估方法有哪些?
601 2
|
11月前
|
前端开发 Android开发 开发者
探索Android与iOS的跨平台开发策略
在当今多元化的移动设备市场中,开发者面临着为不同操作系统设计应用的挑战。本文深入探讨了Android和iOS两大主流平台的跨平台开发策略。我们将分析使用Flutter、React Native等框架进行跨平台开发的优劣,并讨论如何克服各平台间的差异性,以实现高效、一致的用户体验。此外,文章还将提供一些实用的技巧和最佳实践,帮助开发者优化跨平台应用的性能和兼容性。
215 4
|
12月前
|
数据可视化 数据挖掘 数据建模
Power BI:商业智能的利器
【10月更文挑战第7天】Power BI 是微软推出的一款商业智能(BI)工具,旨在帮助企业和用户通过数据分析和可视化来做出数据驱动的决策。
313 3
|
11月前
|
前端开发 JavaScript
React Hooks 深入解析
React Hooks 深入解析
146 0
|
Java Maven Windows
SpringBoot工程打包与运行(Windows版)
SpringBoot工程打包与运行(Windows版)
SpringBoot工程打包与运行(Windows版)
|
应用服务中间件 nginx
项目node_modules开发环境变大问题处理
项目node_modules开发环境变大问题处理
355 0
西门子S7-200 SMART整数运算指令概述及应用举例
本篇文章我们来学习西门子S7-200 SMART整数运算指令。S7-200 SMART的整数运算指令主要包括加、减、乘、除运算指令和递增、递减运算指令。
西门子S7-200 SMART整数运算指令概述及应用举例
|
编译器 异构计算
xilinx小实验——chipscope指导
xilinx小实验——chipscope指导
555 0
xilinx小实验——chipscope指导
|
存储 缓存 运维
高并发,你真的理解透彻了吗?
高并发,几乎是每个程序员都想拥有的经验。原因很简单:随着流量变大,会遇到各种各样的技术问题,比如接口响应超时、CPU load升高、GC频繁、死锁、大数据量存储等等,这些问题能推动我们在...
378 0
|
安全 Oracle Java
阿里开源自用 OpenJDK 版本,Java 社区迎来中国力量
阿里开源自用 OpenJDK 版本,Java 社区迎来中国力量 3 月 21 日,阿里巴巴将宣布开源 Alibaba Dragonwell。届时,开发者可通过阿里云开发者中心及 Github 社区下载使用。
13292 0