您好,欢迎来到尚车旅游网。
搜索
您的当前位置:首页频谱分析仪之声音的记录与回放

频谱分析仪之声音的记录与回放

来源:尚车旅游网
燕 山 大 学 课 程 设 计 报 告

频谱分析仪之声音的记录与回放

由于声卡的基本知识及声卡相关声音函数节点、相关文件函数节点的介绍已在整体综述中介绍过,故这里只详细介绍频谱分析仪中声音的记录、回放、存储三个功能是如何实现的。

一、前面板

前面板如图1所示:

图1 前面板示图

共8 页 第 1 页

燕 山 大 学 课 程 设 计 报 告

前面板控件介绍:

1、枚举常量:input device、output device用来选择硬件中的声音输入/输

出设备;buffer size、rate 分别用于缓冲区大小和采样率的设置;sound quality用于选择声音是mono单声道还是stereo立体声;bits per sample则用来选择每次采样时是8位还是16位。

2、布尔量: 前面板中的布尔量有record记录、play播放、stop停止、

pause暂停、save保存、quit退出。

3、波形显示: 图中前面板中有四个显示声音波形的控件,分别为8位

单声道、16位单声道、8位立体声、16位立体声。

二、程序框图

1、总程序框图 如图2所示:

图2 总程序框图

共8 页 第 2 页

燕 山 大 学 课 程 设 计 报 告

2、总框图介绍:

框图最外层为一个层叠式顺序结构,顺序选择标示符中的帧号码有0和1两种顺序,子程序框图如图3图4所示:

图3中,上部分为5个布尔量,下部分为9个属性节点,内容如其标签所示,Disabled的连线值决定前面板相应控件的状态:0表示启用,1表示禁用,2表示禁用并变灰。图中只有record启用。

图3 帧号码0时的子程序框图

图4中,当帧号码为1时程序将执行该顺序结构的内层--while循环里的内容,具体内容将在后面介绍。

图4 帧号码1时的子程序框图

3、各状态框图介绍

当最外层顺序结构为1时,将执行while循环中的内容。由于在前面板人为通过按键输入record、play、save、quit四个布尔量的值,经过创建数组函数产生0000、0001、0010、0100、1000五个状态,再经布尔数组至数值函数将上述五个状态转化为0、1、2、4、8五个数值,所以

共8 页 第 3 页

燕 山 大 学 课 程 设 计 报 告

在while循环下层的条件结构里会有0、1、2、4、8五个条件来控制声音处于record等四状态中的哪个状态。 3.1 待工作状态

如图4所示,待工作状态时四个布尔量为0000,在条件结构为0时不执行操作。

3.2 record --声音记录

record状态时布尔数组为0001,在外层条件结构为1时,内部开始执行。此时,外层条件结构下又套了一个顺序结构,该顺序结构有0、1、2三个帧号码,各框图如下所示。

图5 声音记录状态程序框图a

图a为帧号码0时的程序框图,此时,前面板控件record禁用,控件play、save及quit禁用并变灰,控件stop、pause启用。

图5 声音记录状态程序框图b

共8 页 第 4 页

燕 山 大 学 课 程 设 计 报 告

图b为帧号码1时的程序框图。该状态下,顺序结构下层有嵌套两个while循环,循环条件为stop的非为TRUE,即stop未按下时执行循环。 当stop未按下时,外界输入的声波的各项信息通过配置声音输出函数配置声音输出设备并创建一个声音输出任务ID并将数据发送到缓存,随下方的四个移位寄存器值一起进入while循环,且底层while循环条件选择器处在0,声音输入采集函数变对声音信号进行采集并将其输给读取声音输入函数,读取声音输入函数将声音信号(两个8位信号,两个16位信号)输出,四输出与四移位寄存器的值分别组成了四数组,这四个数组通过移位寄存器进入下一次循环,因此保证了声音采集的连续性。

图5 声音记录状态程序框图c

当stop被按下时,图中所示的外层while循环的循环条件不存在,pause、stop创建数组并转化后变成1,中间层条件结构条件选择器变为默认状态并出现底层条件结构,且其条件选择器值转到“假”,此时,因为停止声音输入采集函数的存在,将停止对声音信号的采集,并将上一次寄存器保存的的声音信号作为全局变量输出。 当pause被按下时,底层条件结构为“真”,执行程序在上次的声音信号保存在寄存器中后,暂时停止对声音的采集。 3.3 play—声音播放

图6 声音播放状态程序框图a

共8 页 第 5 页

燕 山 大 学 课 程 设 计 报 告

play状态时布尔数组为0010,在外层条件结构为2时,内部开始执行。内部是一个有0、1、2三个帧号码的顺序结构。如图6a,为帧号码0时程序图。此时,控件play禁用,控件record、save及quit禁用并变灰,控件stop、pause启用。

图6 声音播放状态程序框图b

图6b是帧号码1时的程序框图,声音信号由写入函数写入并输出进入while循环,循环条件同样为控件stop未被按下时。图6b所示框图为pause键被按下,暂停声音输出函数暂停了声音的输出。而内层条件结构为0时,将左图所示开始声音输出。

图6声音播放状态程序框图c

共8 页 第 6 页

燕 山 大 学 课 程 设 计 报 告

图6c为帧号码为2时的程序图。此时,前面板布尔控件中,record、play、save、quit处于启用状态,stop、pause处于禁用并变灰状态。

3.3 save—声音存储

save状态时布尔数组为0100,在外部条件结构为4时,内部开始执行。

图7 声音存储状态程序框图

如图7a所示,全局变量路径fpath为空时,返回为真,反之为假。返回真时有一个默认路径,返回假时则使用设置的路径。文件对话框函数的三个输入分别为路径、提示“save wave file as”和文件类型“*.wav”,输出为路径和取消。当取消为假时,底层条件结构执行内部程序:波形写入文件函数将要存储的声音的相关信心写入,并将路径拆分。取消为真时,条件结构内无任何程序,故不执行任何操作。

3.4 quit—退出

图8 取消状态程序框图

共8 页 第 7 页

燕 山 大 学 课 程 设 计 报 告

Quit状态时布尔数组为1000,外部条件结构为8。该状态执行时的操作是,退出整个VI。

三、全局变量

本文所介绍的程序中,用到了六个全局变量。如图9所示:

图9 全局变量VI前面板

共8 页 第 8 页

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- sceh.cn 版权所有 湘ICP备2023017654号-4

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务