扩展器简介与实现

一、简介:
扩展器(Expander)是一种动态范围控制技术,与压缩器相反,它通过降低动态范围来增加信号的可听性。扩展器通常用于减少噪声、增加信号的清晰度和可听性,以及增加信号的感知音量。

二、原理:
扩展器的工作原理与压缩器相反。当信号的幅度低于阈值时,扩展器降低信号的幅度,从而扩大信号的动态范围。当信号的幅度高于阈值时,扩展器不执行任何处理,从而保持信号的原始幅度。
扩展器通常与压缩器一起使用,以实现更广泛的动态范围控制。例如,在音乐录制和混音中,压缩器可以用于压缩高音和低音的动态范围,扩展器可以用于在保持中音动态范围不变的情况下增加其可听性。在语音处理中,扩展器可以用于减少背景噪声,以提高语音的清晰度和可听性。
扩展器在音频处理中非常有用,可以提高信号的可听性和清晰度,减少噪声,并增加音频信号的感知音量

三、示例:以下代码实现了一个基于包络跟踪的扩展器,其工作原理是在信号低于阈值时降低信号的幅度,以扩大信号的动态范围。在该代码中,我们使用阈值、压缩比率和软折线宽度等参数来控制扩展器的工作方式。我们使用攻击时间和释放时间来计算包络,并使用包络来计算适当的增益。最后,我们将输出信号打印到控制台上。
需要注意的是,该示例代码中的扩展器实现仅适用于单声道信号。对于立体声信号,需要对左右声道分别进行处理,并使用相应的包络跟踪、增益计算公式。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define THRESHOLD -30.0 // 阈值
#define RATIO 2.0 // 压缩比率
#define KNEE_WIDTH 5.0 // 软折线宽度
#define SAMPLE_RATE 44100.0
#define PI 3.1415926535

int main() {
float input = 0.0; // 输入信号
float output = 0.0; // 输出信号
float gain = 0.0; // 增益
float attack_time = 0.002; // 攻击时间
float release_time = 0.1; // 释放时间
float samples = SAMPLE_RATE * 2.0; // 2秒钟的采样数
float dt = 1.0 / SAMPLE_RATE;
float envelope = 0.0; // 包络
float alpha_attack = exp(-1.0 / (attack_time * SAMPLE_RATE)); // 攻击系数
float alpha_release = exp(-1.0 / (release_time * SAMPLE_RATE)); // 释放系数
float threshold = pow(10.0, THRESHOLD / 20.0); // 将阈值转换为幅度值
float knee_threshold = threshold - KNEE_WIDTH / 2.0; // 软折线开始的阈值
float knee_slope = RATIO - 1.0; // 软折线斜率
float knee_gain = 1.0 / RATIO; // 软折线增益
for (int i = 0; i < samples; i++) {
// 计算包络
float amplitude = fabs(input);
if (amplitude > envelope) {
envelope = alpha_attack * envelope + (1.0 - alpha_attack) * amplitude;
} else {
envelope = alpha_release * envelope + (1.0 - alpha_release) * amplitude;
}
// 计算增益
if (envelope < knee_threshold) {
gain = 1.0;
} else if (envelope < threshold) {
gain = (knee_slope * (envelope - knee_threshold) / KNEE_WIDTH + 1.0) * knee_gain;
} else {
gain = 1.0 / RATIO;
}
// 应用扩展器
output = input * gain;
// 更新输入信号
input += sin(2.0 * PI * 1000.0 * i / SAMPLE_RATE);
// 打印输出信号
printf(“%!f(MISSING)\n”, output);
}
return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
课程设计任务书 "一、设计题目 " "基于微程序控制器的简单计算机系统设计与实现 " "二、设计内容 " "设计模型机系统的总体结构、指令系统和时序信号。充分利用FPGA以及相关外围" "器件,设计实现模型机的整机系统。要求所设计的整机系统能支持自动和单步运" "行方式,能正确地执行存放在主存中的程序的功能,对主要的数据流和控制流通" "过LED适时显示信息。尽可能利用EDA软件对模型机系统中各部件进行仿真分析和" "功能验证。在学有余力的前提下,可为模型机增加更多的扩展功能。 " "三、设计要求 " "支持算术运算、逻辑运算、存储器读写、寄存器间数据传送等几类指令; " "支持立即数寻址、直接寻址、隐含寻址、寄存器寻址等几种基本数据寻址方式和" "顺序寻址、跳跃寻址方式; " "支持10条以上的指令; " "能运行由自己设计的指令系统构成的一段程序,程序执行功能正确。 " "四、设计流程 " "根据课程设计指导书的要求,制定出设计方案; " "画出模型计算机系统的原理框图和器件连接图,分析器件连接图中各器件不同引" "脚的功能,哪些可以固定连接,哪些需要通过微程序来控制,以及这些控制信号" "的有效形式; " "画出各指令的指令周期流程图和所需要的控制信号; " "设计出实现指令功能的微程序控制器或硬布线控制器; " "布线、调试、验收; " "课程设计报告和总结。 " "五、成绩评定 " " " "成绩评定根据考勤、课程设计的过程、课程设计的效果、课程设计报告质量等进" "行综合评定;其中设计过程和结果占70%,课程设计报告占30%;课程设计的成绩" "评定等级为不及格、及格、中、良好、优秀五级;对基本功能进行扩展或设计具" "有非常鲜明的特征和一定程度的创新,可根据实际情况加分。 " "六、设计报告要求 " " " "课程设计报告主要内容包括:设计题目、设计目的、设备器材、设计原理及内容" "、设计步骤、遇到的问题及解决方法、设计总结、参考文献等。要求在适当位置" "配合相应的实验原理图、数据通路图、微程序流程图、实验接线图、微指令代码" "表等图表进行说明。总结部分主要写设计工作简介以及设计体会。应做到文理通" "顺,内容正确完整,书写工整,装订整齐。课程设计报告采用《计算机组成原理》" "专用设计报告模板,A4纸双面打印,除框图外需附下载的设计图以及微指令控制" "点图。 " "七、时间安排 " " 课程设计的总体时间为2周,具体安排如下: " "第1天:到实验室布置任务和集中讲解。 " "第2天:学生自己设计,选择并熟悉自己所要的芯片。 " "第3天:领导线和芯片,进行芯片功能测试,在此基础上修改完善原设计方案。 " "第4天到第10天:实验室调试、验收。 " "八、主要参考文献 " "秦磊华,王小兰. 计算机组成原理实验指导及课程设计指导书(基于EDA平台). " "武汉:华中科技大学出版社,2010年. " "秦磊华,吴非,莫正坤.计算机组成原理. 北京:清华大学出版社,2011年. " "DAVID A.PATTERSON(美).计算机组成与设计硬件/软件接口(原书第3版).北京: " "机械工业出版社. 2007年. " "袁春风编著. 计算机组成与系统结构. 北京:清华大学出版社,2011年. " " " " " 目 录 1 课程设计概述 3 1.1 课设目的 3 1.2 设计任务 3 1.3 设计要求 3 2 实验原理与环境 4 2.1 实验原理 4 2.2 实验环境 4 3 总体方案设计 5 3.1 需求分析 5 3.2 硬件设计 5 3.3 软件设计 8 4 详细设计与实现 10 4.1 选用芯片 10 4.2 硬件实现 11 4.3 软件实现 14 5 实验过程与调试 19 5.1 仿真XXX 19 5.2 可自行安排章节 19 5.3 主要故障与调试 19 5.4 功能测试 19 5.5 实验流程图 20 6 设计总结与心得 21 6.1 课设总结 21 6.2 课设心得 21 参考文献 22 课程设计概述 请仔细阅读所有的批注,阅读理解后删除批注 模板各个标题下面的内容仅是举例,作者应依照自己思想重写该部分内容 1、格式不要轻易改动,严格按照模板来,不要自创格式。 2、所以批注阅读后一定要删除 3、模板中的图示意图,不能照搬,要根据自己的设计来画 4、参考文献只是格式和引用方式参考,列出自己实际参考文献 5、图中的文字一定要清晰。 6、所有的表和图都必须有名字和编号。 1 课设目的 计算机组成原理是计算机专业的核心专业基础课。课程设计属于设计型实验,不仅锻 炼学生简单计算机系统的设计能力,而且通过进行设计及实现,进一步提高分析和解决 问题的能力。(自己写) ……(其它内容) 2 设计任务 计算

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值