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 ...
随机推荐
- python复习基础题目
第一部分 必答题(每题2分) 简述列举了解的编程语言及语言间的区别? 编译型语言:一次性全部编译成二进制码,再去执行 解释性语言:编译一句,运行一句 python 解释型,简洁高效,容易上手 Java ...
- JVM的小理解
1.开发人员编写Java代码(.java文件),然后将之编译成字节码(.class文件),再然后字节码被装入内存,一旦字节码进入虚拟机,它就会被解释器解释执行,或者是被即时代码发生器有选择的转换成机器 ...
- 学Python必须背的42个常见单词,看看你都会吗?
这42个单词是学习Python必须背会的单词,也是代码中常见的单词.希望你能都背下来! ! 1. adult [ˈædʌlt] 成年人 2. authentication [ɔːˌθentɪˈke ...
- JS 获取验证码 倒计时
setInterval 一个定时器搞定 <style> button{ background: #45BCF9; color: #fff; padding: 4px 10px; borde ...
- Python编码小技巧分享【新手必学】
本次分享了python编程小技巧总结如下,希望对大家有帮助,非常实用哦注意:很多人学Python过程中会遇到各种烦恼问题,没有人帮答疑.为此小编建了个Python全栈免费答疑交流.裙 :一久武其 ...
- Oracle 中的 Incarnation 到底是个什么?概念理解篇
高中时候,我深深“爱”上了一位女孩子.那个年纪确实不懂什么是真正的“爱”,反正每天满脑子都是她,只要见到她就会紧张和激动,确切的说是深深的喜欢.你告诉我这叫初恋?不,我的初恋应该是小学3年级,三六班. ...
- javaScript(Date与Math的API)
目录 Math Math的两个属性值 E PI abs(); ceil(); floor(); round(); max(); min (); pow(); random sin(); cos(); ...
- mybatis(五):源码分析 - mapper文件解析流程
- CSS的字体样式
CSS的字体样式 1. span标签(约定俗成:重要的东西用它括起来) 首选介绍一个约定俗成的东西:span标签.一般将想要突出的东西,比较重要的东西,用span标签括起来. 比如,”学习Java“这 ...
- Selenium(Webdriver)自动化测试常问问题
http://blog.sina.com.cn/s/blog_c189e2590102w3bv.html Selenium(Webdriver)自动化测试常问问题 (1)selenium中如何保证操作 ...