原理参考: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实现的更多相关文章

  1. 转载:reverb

    https://blog.csdn.net/qiumingjian/article/details/43938687 https://blog.csdn.net/jsjwangmingmin/arti ...

  2. Matlab 绘制三维立体图(以地质异常体为例)

    前言:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有十分重要的意义. 1. 三维立体图的基本要件: 全空间网格化 网格节 ...

  3. Matlab slice方法和包络法绘制三维立体图

    前言:在地球物理勘探,流体空间分布等多种场景中,定位空间点P(x,y,x)的物理属性值Q,并绘制三维空间分布图,对我们洞察空间场景有十分重要的意义. 1. 三维立体图的基本要件: 全空间网格化 网格节 ...

  4. Matlab 高斯_拉普拉斯滤波器处理医学图像

    前言:本程序是我去年实现论文算法时所做.主要功能为标记切割肝脏区域.时间有点久,很多细节已经模糊加上代码做了很多注释,因此在博客中不再详述. NOTE: 程序分几大段功能模块,仔细阅读,对解决医学图像 ...

  5. MATLAB中绘制质点轨迹动图并保存成GIF

    工作需要在MATLAB中绘制质点轨迹并保存成GIF以便展示. 绘制质点轨迹动图可用comet和comet3命令,使用例子如下: t = 0:.01:2*pi;x = cos(2*t).*(cos(t) ...

  6. linux下配置matlab运行环境(MCR)

    在安装好的matlab下有MCR(MatlabCompilerRuntime)在matlab2011/toolbox/compiler/deploy/glnxa64下找到MCRInstaller.zi ...

  7. EMD分析 Matlab 精华总结 附开源工具箱(全)

    前言: 本贴写于2016年12与15日,UK.最近在学习EMD(Empirical Mode Decomposition)和HHT(Hilbert-Huang Transform)多分辨信号处理,FQ ...

  8. Atitit MATLAB 图像处理 经典书籍attilax总结

    Atitit MATLAB 图像处理 经典书籍attilax总结 1.1. MATLAB数字图像处理1 1.2. <MATLAB实用教程(第二版)>((美)穆尔 著)[简介_书评_在线阅读 ...

  9. Atitit MATLAB 图像处理attilax总结

    Atitit MATLAB 图像处理attilax总结 1.1. 下载 Matlab7.0官方下载_Matlab2012 v7.0 官方简体中文版-办公软件-系统大全.html1 1.2. Matla ...

随机推荐

  1. Python中BaseException和Exception的区别

    BaseException 是 Exception 的父类,作为子类的Exception无法截获父类BaseException类型的错误 BaseException: 包含所有built-in exc ...

  2. AI机器人最高等级

    AI机器人最高等级 题目描述 在小朱朱的游戏世界里,有n个AI机器人. 他们相互之间可以进行PK,胜方存活且升一级,负方直接淘汰. 高等级AI必定战胜低等级AI,同等级AI的PK结果必定一胜一负,且规 ...

  3. Oracle 12c 多租户家族(12c 18c 19c)如何在 PDB 中添加 HR 模式

    Oracle 12c 多租户家族(12c [12.2.0.1].18c [12.2.0.2].19c [12.2.0.3])如何在 PDB 中添加模式:19c (19.3) 手工添加示例 HR 用户 ...

  4. 使用Beautiful Soup爬取猫眼TOP100的电影信息

    使用Beautiful Soup爬取猫眼TOP100的电影信息,将排名.图片.电影名称.演员.时间.评分等信息,提取的结果以文件形式保存下来. import time import json impo ...

  5. vue常用插件之视频播放(rtmp m3u8)

    vue-video-player(5.0.2) 最近我的项目做了一个监控视屏的显示,后台提供的视屏格式是rtmp 后来又改为m3u8,没成功,原因是占用内存过大,所以取消了这种方式 一.安装 npm ...

  6. java性能分析 - CPU飙高分析工具

    背景         有处理过生产问题的同学基本都能遇到系统忽然缓慢,CPU突然飙升,甚至整个应用请求不可用.当出现这种情况下,在不影响数据准确性的前提下,我们应该尽快导出jstack和内存信息,然后 ...

  7. Win10安装1 —— 引言与目录

    本文内容皆为作者原创,如需转载,请注明出处:https://www.cnblogs.com/xuexianqi/p/12368107.html 一:引言 众所周知,电脑出现问题了后,重启 可以解决90 ...

  8. java中类的构造方法出错点

    大家请看下面的这个代码 package ppt_test; public class test1 { public static void main(String args[]) { Foo obj1 ...

  9. <input type="file">文件上传

    <input> type 类型为 file 时使得用户可以选择一个或多个元素以提交表单的方式上传到服务器上,或者通过 Javascript 的 File API 对文件进行操作 . 常用i ...

  10. 使用VSCode创建简单的Razor Webapp--2.添加模型

    1.新建Models文件夹,并新建Movie.cs文件 using System; using System.ComponentModel.DataAnnotations; namespace Raz ...