一、简介
在MATLAB中编写的VST 2音频效果插件,使用遗传算法生成描述人工房间混响的随机脉冲响应,并使用脉冲响应对信号实时应用卷积混响。还提供了一个MATLAB脚本(main.m),接受WAV音频文件作为输入。通过卷积将输入与脉冲响应结合起来,将混响效果应用于预录制的音频。由于没有任何两个脉冲响应是相同的,所以脚本和插件也可以将生成的脉冲响应保存到新文件中。
二、源代码
%
% BSD 3-Clause License
%
%% Preamble
% Clear workspace and figures
clear; close all;
% Add paths to any external functions used
addpath ../components
%% Output Parameters
NORMALIZE_AUDIO = true; % Normalize audio after applying reverb
VERBOSE = true; % Display genetic algorithm status messages
SHOW_FIGURES = true; % Display figures plotting IR and output audio
%% Genetic Algorithm Parameters
% POPULATION_SIZE = Number of impulse responses in population
% SELECTION_SIZE = Number of impulse responses to keep in each generation
% NUM_GENERATIONS = Maximum number of generations to run in the algorithm
% PLATEAU_LENGTH = If there is no new best impulse response after some number
% of generations, stop early
% FITNESS_THRESHOLD = If fitness value is below threshold value, stop early
% MUTATION_RATE = Probability of each sample in impulse response randomly
% changing value in each generation
gaParams = struct( ...
'POPULATION_SIZE', 50, ...
'SELECTION_SIZE', 20, ...
'NUM_GENERATIONS', 250, ...
'PLATEAU_LENGTH', 50, ...
'FITNESS_THRESHOLD', 0.001, ...
'MUTATION_RATE', 0.001);
%% Impulse Response Parameters
% SAMPLE_RATE = Sample rate of impulse response (Hz)
% NUM_SAMPLES = Number of samples in IR to record / length of IR
% PREDELAY = Delay time before onset of first early reflection (samples)
% T60 = Total reverberation time (s)
% EDT = Early decay time (s)
% C80 = Clarity, or relative loudness of early reverberations over
% late reverberations (dB)
% BR = Warmth vs. brilliance, calculated as "bass ratio" (ratio of
% low frequency to high frequency content) (dB)
end
三、运行结果
四、备注
完整代码或者代写添加QQ912100926。
往期回顾>>>>>>
【信号处理】基于GUI界面之处理录音与音频【Matlab 123期】
【信号处理】CDR噪声和混响抑制【含Matlab源码 198期】
【信号处理】最小二乘法解决稀疏信号恢复问题【Matlab 199期】