• 混响(Reverb)/空间音效(Panning)


    Panning

     可以理解为声音从右边喇叭经过n time step 移动到  左边的扬声器。

    我们假定LR 扬声器的夹角为2*{\color{Blue} \theta _{l}},我们通过控制L R 扬声器的增益(\begin{bmatrix} g_{L} \\ g_{R} \end{bmatrix})进行具体的声像控制

    \theta 对应扫描角度

     X 为单声道的声音片段

    单声道转立体声音方法

    1. % matpan.m
    2. % script based on DAFZ p 140 to
    3. % perform matrix based panning of mono sound to stereo
    4. close all;
    5. clear all;
    6. % read the sample waveform
    7. filename='acoustic.wav';
    8. [monox,Fs] = audioread(filename);
    9. initial_angle = -40; %in degrees
    10. final_angle = 40; %in degrees
    11. segments = 32;
    12. angle_increment = (initial_angle - final_angle)/segments * pi / 180;
    13. % in radians
    14. lenseg = floor(length(monox)/segments) - 1;
    15. pointer = 1;
    16. angle = initial_angle * pi / 180; %in radians
    17. y=[[];[]];
    18. for i=1:segments
    19. A =[cos(angle), sin(angle); -sin(angle), cos(angle)];
    20. stereox = [monox(pointer:pointer+lenseg)'; monox(pointer:pointer+lenseg)'];
    21. y = [y, A * stereox];
    22. angle = angle + angle_increment; pointer = pointer + lenseg;
    23. end;
    24. % write output
    25. audiowrite('out_stereopan.wav',y',Fs);
    26. figure(1);
    27. hold on
    28. subplot(2,1,1);
    29. plot(y(1,:));
    30. title('Stereo Panned Signal Channel 1 (L)');
    31. subplot(2,1,2);
    32. plot(y(2,:));
    33. title('Stereo Panned Signal Channel 2 (R)');

    混响Reverb

     在一个空间内经过多次反射,到达人耳。通常反射声会比直达声稍微晚一些(S=V*t),声速基本相同,反射路径决定具体的反射延迟;同时经过多次反射,反射声能量得到衰减。

    Delay和Reverb的区别

    Delay              Reverb
    到达发射的速率一致紧跟随直达声,房间的大小、尺寸决定混响的形状。发射速率随机且不固定
    无反射                漫反射

    混响的模拟通常有两种方法:

    1.段滤波 或者 延迟方法---Schroeder's Reverberator 

    Moorer'sReverberator 的改进

     a是抽头延迟线用于模拟早期反射声

    b.是梳状滤波器

    1. 使用不同延迟长度的并行梳状滤波来模拟房间不同的反射声。

    2.使用全通滤波器改善群延迟,增加回声密度

    3.加入低通滤波器使高频衰减。频有更短的混响时间

    2.卷积或者冲击响应方法

     

    通常混响是房间的混响与输入信号的卷积,由于目标响应的要求,通常数百个抽头的滤波器参数

    所以通常 做时域卷积比较麻烦,所以一般做输入信号 与房间混响 分别做FFT ,然后相乘,等价于时域的卷积。

    如何获得房间的混响呢?最简单的方法如下:

    1.在房间里录制一段短时间的声音(拍手、击鼓等)

    2.也可以通过软件模拟的方法

    3.通常冲击响应图如下所示:

     

  • 相关阅读:
    【python】py文件全自动打包成spec文件
    uniapp微信小程序 ios端部分机型屏幕可左右滑动原因即处理
    LZ4压缩算法简介
    什么是hive的静态分区和动态分区,它们又有什么区别呢?hive动态分区详解
    太空射击第17课: Game Over (結束)
    分水果(冬季每日一题 21)
    Vue3学习——pinia
    深入理解 python 虚拟机:花里胡哨的魔术方法
    【MySQL】在项目中操作MySQL---简单的增删改查
    向量检索/向量相似性计算方法(持续更新ing...)
  • 原文地址:https://blog.csdn.net/xinshuwei/article/details/127698889