schroeder reverb matlab实现
原理参考:Natural sounding artificial reverberation

combFilter.m:
function output = combFilter(delay, gain, input)
fs = 48000;
delaySample = int32(delayTime * fs / 1000);
B = [1 zeros(1, delaySample - 1)];
A=[1 zeros(1, delaySample - 2) -gain];
output = filter(B, A, input);
end
calcCombGain.m:
function gain = calcCombGain(reverbTime, delayTime)
gain = power(10, -3 * delayTime / reverbTime)
end
allPassFilter.m:
function output = allPassFilter(delay, gain, input)
fs = 48000;
delaySample = int32(delayTime * fs / 1000);
B = [-gain zeros(1, delaySample - 2) 1];
A=[1 zeros(1, delaySample - 2) -gain];
output = filter(B, A, input);
end
reverb.m:
function output = reverb(combDelayTime, combGain, allPassDelayTime, allPassGain, input)
y = zeros(length(input), 4);
combOut = zeros(length(input), 1);
for i = 1:1:4
y(:, i) = combFilter(combDelayTime(i), combGain(i), input);
combOut = combOut + y(:, i);
end
allPassOut1 = allPassFilter(allPassDelayTime(1), allPassGain(1), combOut);
output = allPassFilter(allPassDelayTime(2), allPassGain(2), allPassOut1);
output = output * 0.25 + input;
end
main.m:
clc
clear
T60 = 2000;
combDelayTime = [29.23 37.67 41.49 44.31];
combGain = calcCombGain(T60, combDelayTime);
allPassDelayTime = [5 1.7];
allPassGain = [0.7 0.7];
%input = [1, zeros(48000-1, 1)];
[input fs] = wavread('test.wav');
y = reverb(combDelayTime, combGain, allPassDelayTime, allPassGain, input);
wavwrite(y, fs, 'reverb.wav');
figure(1)
plot(y)
schroeder reverb matlab实现的更多相关文章
- 转载:reverb
https://blog.csdn.net/qiumingjian/article/details/43938687 https://blog.csdn.net/jsjwangmingmin/arti ...
- Matlab 绘制三维立体图(以地质异常体为例)
前言:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有十分重要的意义. 1. 三维立体图的基本要件: 全空间网格化 网格节 ...
- Matlab slice方法和包络法绘制三维立体图
前言:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有十分重要的意义. 1. 三维立体图的基本要件: 全空间网格化 网格节 ...
- Matlab 高斯_拉普拉斯滤波器处理医学图像
前言:本程序是我去年实现论文算法时所做.主要功能为标记切割肝脏区域.时间有点久,很多细节已经模糊加上代码做了很多注释,因此在博客中不再详述. NOTE: 程序分几大段功能模块,仔细阅读,对解决医学图像 ...
- MATLAB中绘制质点轨迹动图并保存成GIF
工作需要在MATLAB中绘制质点轨迹并保存成GIF以便展示. 绘制质点轨迹动图可用comet和comet3命令,使用例子如下: t = 0:.01:2*pi;x = cos(2*t).*(cos(t) ...
- linux下配置matlab运行环境(MCR)
在安装好的matlab下有MCR(MatlabCompilerRuntime)在matlab2011/toolbox/compiler/deploy/glnxa64下找到MCRInstaller.zi ...
- EMD分析 Matlab 精华总结 附开源工具箱(全)
前言: 本贴写于2016年12与15日,UK.最近在学习EMD(Empirical Mode Decomposition)和HHT(Hilbert-Huang Transform)多分辨信号处理,FQ ...
- Atitit MATLAB 图像处理 经典书籍attilax总结
Atitit MATLAB 图像处理 经典书籍attilax总结 1.1. MATLAB数字图像处理1 1.2. <MATLAB实用教程(第二版)>((美)穆尔 著)[简介_书评_在线阅读 ...
- Atitit MATLAB 图像处理attilax总结
Atitit MATLAB 图像处理attilax总结 1.1. 下载 Matlab7.0官方下载_Matlab2012 v7.0 官方简体中文版-办公软件-系统大全.html1 1.2. Matla ...
随机推荐
- xctf-i-got-id-200(perl网页文件+ARGV上传造成任意文件读取)
打开url发现有三个链接,点进去都是.pl文件,且只有files可以上传文件. .pl文件都是用perl编写的网页文件 这里上传了又将文件的内容全部打印出来,那么猜想后台应该用了param()函数. ...
- HTML+PHP+MySQL 制作最基础的登录页面及验证
第一步 进入mysql操作终端 新建一个数据库web1:create database web1; 然后在这个数据库里面新建一张表test:create table test(user varchar ...
- 牛客寒假6-F十字阵列
链接:https://ac.nowcoder.com/acm/problem/201986来源:牛客网 题目描述 小 Q 新学会了一种魔法,可以对一个 N行M列 的网格上的敌人造成伤害 第 i 次使用 ...
- Django 上下文管理器,为父模板添加动态数据
1.摘要:模板继承可以减少页面内容的重复定义,实现页面内容的重用. 但是当父模板中有动态数据的话,这些动态数据在子模版中是不会显示的.我们可以通过自定义上下文处理器来解决 2.Django上下文处理器 ...
- GYCTF ezupload
上传一句话,没有任何过滤 菜刀连接后,读取flag文件 bash -c/readflag >tmp cat tmp 上面是非预期的解法.应该是题出问题了.看了一个师傅的blog,看源码,发现预期 ...
- Codeforces 764C Timofey and a tree
Each New Year Timofey and his friends cut down a tree of n vertices and bring it home. After that th ...
- .net Core 安装在linux上
1.安装 .net Core 参考官方网站 https://dotnet.microsoft.com/learn/dotnet/hello-world-tutorial/install 2.发布应用程 ...
- PP: Learning representations for time series clustering
Problem: time series clustering TSC - unsupervised learning/ category information is not available. ...
- asm相关内容想下载(包括 jar 包)
网址:http://download.forge.ow2.org/asm/
- 【Linux】解决Linux服务器内存不足问题
在Linux服务器上使用Jmeter进行压测的时候,遇到了一个错误: 根据这里的提示: Java HotSpot(TM) -Bit Server VM warning: INFO: os::commi ...