录音/制作/创作 吉他 扩声技术 视频技术 作品展示 生活 信息 更多... | 音频应用专卖店
REAPER

[请教/求助] 请听听两款声场扩展器:K-Stereo v.s JSE

( 8 )
 
[收藏]

5431
#1 21-2-5 15:22

请听听两款声场扩展器:K-Stereo v.s JSE

前段时间<充满希望的混音人俱乐部>微信群组织了一次分轨练习活动,活动是Puremix的分轨片段<I'm Yours>.
恰巧某QQ群内有朋友在讨论K-Stereo的效果,这里委托一些哥们做了一些操作,分别是带JSE的、不带JSE的、带K-STEREO的三个音频文件,因为本论坛不少会员已经在群里了,对这个分轨和原曲也比较熟悉,所以以这首歌来做一个比较。

JSE是Jonas Spatial Enhancer based on the Open Ambience Project

也就是由Jonas编写的一款Reaper脚本,基于了Open Ambience Project,这个项目其实很早之前就已经出现了,但是因为各种各样的原因没有再继续推出VST x64版本,Jonas便根据这个项目的原理图编写了这个脚本,基于JavaFX(不是Java的GUI编成用到的JavaFX,而是音频效果器)。

为什么要与K-Stereo做比较呢?因为Open Ambience Project正是参考了K-Stereo的专利设计,并且融入了自己的算法。

恰巧K-Stereo在Native平台下仅有Algorithmix提供,这家公司大家都懂,K-Stereo的欧元售价是664欧,还不含税。折合美金约990美金(十年前的价格......)..
而如果你不想支付这么昂贵的价格,又想用K-Stereo怎么办呢?没办法,只能通过UAD-2加速卡来运行Universal基于Bob Katz设计的K-Stereo算法插件....
这么算来....好像UAD更划算诶..

废话这么多,其实就是想证明一点,我穷我有理,没有路就修一条路。


下面是三段音频,请大家对比:


原始音频:
下载mp3
使用JSE的音频:
下载mp3
使用K-Stereo效果器(UAD)的音频:
下载mp3

原始音频是我混的,在K-Stereo和JSE的衬托下会比较窄,不过本身混的也比较窄,出发点就是来做对比。
不管使用K-Stereo还是JSE,其实相位相关度都有所下降,说明对声场还是有一定影响的,结果就是,都可能会牺牲单声道兼容性。

请大家来听听JSE和K-Stereo哪个更自然?(我肯定不会说我把JSE跟K-Stereo的顺序颠倒了)

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
观众反应
Tee

5431
#2 21-2-5 15:24
以下是JSFX的代码,直接新建就好。我给原来的代码加入了两个功能一个是输入增益一个是输出增益,如果放到master的话出现电平变化容易爆,加入这个滑块之后处理起来就比较容易了。

  1. desc: Jonas Spatial Enhancer based on the Open Ambience Project
  2. slider1:0<-60,12,.1>Dry (incl Mid/Side)
  3. slider2:0<-20,12,.1>Wet (enhancer)
  4. slider3:0<0,1,1{On,Off}>Wide
  5. slider4:0<0,1,1{On,Off}>Feedback
  6. slider5:0<-60,24,.1>Mid gain (pre-enhancer)
  7. slider6:0<-60,24,.1>Side gain (pre-enhancer)

  8. slider7:1<0,1,1{On,Off}>Wet High-pass
  9. slider8:500<20,20000,1>HP Frequency
  10. slider9:1<0,1,1{On,Off}>Wet Low-pass
  11. slider10:5000<20,20000,1>LP Frequency

  12. slider11:30<0,50,1>Wet delay (ms)
  13. slider12:0<-60,24,.1>Input gain (dB,pre-ehancer)
  14. slider13:0<-60,24,.1>Output gain (dB)

  15. @init
  16. scale = log( 10.0 ) * 0.05;

  17. pos = 0;
  18. feedback_damp = exp( -16.95 * scale ) / exp( -2 * scale ) ;  //utrŠknat frŒn impulsen som Dallas skickade

  19. //memory management
  20. max_delay_ms = 50;
  21. max_buf_size = ceil( max_delay_ms * srate * 0.001 );
  22. l_buf = 1000;
  23. r_buf = l_buf + max_buf_size + 1;
  24. memset( l_buf, 0 , max_buf_size * 2 );


  25. //filters
  26. pi = 3.1415926535897932384626433832795;
  27. e = 2.718281828459045;
  28. ln_2 = 0.693147180559945;


  29. @slider
  30. dry = exp( slider1 * scale );
  31. slider1 == -60 ? dry = 0;
  32. wet = exp( slider2 * scale );

  33. slider3 == 0 ? wide = -1 : wide = 1;
  34. slider4 == 0 ? deep = 1 : deep = 0;
  35. M_gain = exp( slider5 * scale );
  36. S_gain = exp( slider6 * scale );

  37. //filters
  38. slider7 == 0 ? hp = 1 : hp = 0;
  39. slider9 == 0 ? lp = 1 : lp = 0;

  40. //variable delay
  41. delay_ms = slider11;
  42. buf_size = ceil( delay_ms * srate * 0.001 );

  43. //gain stage
  44. input_gain =  exp( slider12 * scale );
  45. output_gain = exp( slider13 * scale );

  46. //-----------------------------------------------------------
  47. //High-pass
  48. f0 = slider8;
  49. w0 = 2 * pi * f0 / srate;
  50. cos_w0 = cos(w0);
  51. sin_w0 = sin(w0);

  52. //ny alpha
  53. q = sqrt(2);
  54. alpha = sin_w0 / ( 2 * q );

  55. b0 =  (1 + cos_w0)/2;
  56. b1 = -(1 + cos_w0);
  57. b2 =  (1 + cos_w0)/2;
  58. a0 =   1 + alpha;
  59. a1 =  -2 * cos_w0;
  60. a2 =   1 - alpha;

  61. //Pre-calculate b0,b1 and b2 divided by a0
  62. //High-pass
  63. b0_a0 = b0/a0;
  64. b1_a0 = b1/a0;
  65. b2_a0 = b2/a0;
  66. a1_a0 = a1/a0;
  67. a2_a0 = a2/a0;

  68. //-----------------------------------------------------------
  69. //Low_pass
  70. f0 = slider10;
  71. w0 = 2 * pi * f0 / srate;
  72. cos_w0 = cos(w0);
  73. sin_w0 = sin(w0);

  74. //ny alpha
  75. q = sqrt(2);
  76. alpha = sin_w0 / ( 2 * q );

  77. lp_b0 = (1 - cos_w0)/2;
  78. lp_b1 = 1 - cos_w0;
  79. lp_b2 = (1 - cos_w0)/2;
  80. lp_a0 =   1 + alpha;
  81. lp_a1 =  -2 * cos_w0;
  82. lp_a2 =   1 - alpha;

  83. //Pre-calculate b0,b1 and b2 divided by a0
  84. //Low_pass
  85. lp_b0_a0 = lp_b0 / lp_a0;
  86. lp_b1_a0 = lp_b1 / lp_a0;
  87. lp_b2_a0 = lp_b2 / lp_a0;
  88. lp_a1_a0 = lp_a1 / lp_a0;
  89. lp_a2_a0 = lp_a2 / lp_a0;


  90. @sample
  91. spl0 =spl0*input_gain;
  92. spl1=spl1*input_gain;
  93. M = ( spl0 + spl1 ) * 0.5;
  94. S = ( spl0 + spl1 * -1 ) * 0.5;

  95. spl0 = S * S_gain  + M * M_gain;
  96. spl1 = -S * S_gain + M * M_gain;

  97. del_l = l_buf[ pos ];
  98. del_r = r_buf[ pos ] * wide;

  99. l_buf[ pos ] = ( spl0 + del_r * deep ) * feedback_damp ;
  100. r_buf[ pos ] = ( spl1 + del_l * deep ) * feedback_damp ;
  101. pos += 1;
  102. pos > buf_size ? pos = 0;

  103. //filters

  104. //High-pass

  105. hp ?
  106. (

  107. l = del_l;
  108. del_l = b0_a0*del_l + b1_a0*l_prev_bf_eq + b2_a0*l_prev2_bf_eq - a1_a0*l_prev_af_eq - a2_a0*l_prev2_af_eq ;
  109. l_prev2_bf_eq = l_prev_bf_eq;
  110. l_prev_bf_eq = l;
  111. l_prev2_af_eq = l_prev_af_eq;
  112. l_prev_af_eq = del_l;

  113. r = del_r;
  114. del_r = b0_a0*del_r + b1_a0*r_prev_bf_eq + b2_a0*r_prev2_bf_eq - a1_a0*r_prev_af_eq - a2_a0*r_prev2_af_eq ;
  115. r_prev2_bf_eq = r_prev_bf_eq;
  116. r_prev_bf_eq = r;
  117. r_prev2_af_eq = r_prev_af_eq;
  118. r_prev_af_eq = del_r;

  119. );

  120. //Low_pass

  121. lp ?
  122. (

  123. lp_l = del_l;
  124. del_l = lp_b0_a0*del_l + lp_b1_a0*lp_l_prev_bf_eq + lp_b2_a0*lp_l_prev2_bf_eq - lp_a1_a0*lp_l_prev_af_eq - lp_a2_a0*lp_l_prev2_af_eq;
  125. lp_l_prev2_bf_eq = lp_l_prev_bf_eq;
  126. lp_l_prev_bf_eq = lp_l;
  127. lp_l_prev2_af_eq = lp_l_prev_af_eq;
  128. lp_l_prev_af_eq = del_l;

  129. lp_r = del_r;
  130. del_r = lp_b0_a0*del_r + lp_b1_a0*lp_r_prev_bf_eq + lp_b2_a0*lp_r_prev2_bf_eq - lp_a1_a0*lp_r_prev_af_eq - lp_a2_a0*lp_r_prev2_af_eq ;
  131. lp_r_prev2_bf_eq = lp_r_prev_bf_eq;
  132. lp_r_prev_bf_eq = lp_r;
  133. lp_r_prev2_af_eq = lp_r_prev_af_eq;
  134. lp_r_prev_af_eq = del_r;

  135. );


  136. //output

  137. spl0 = (spl0 * dry + del_r * wet)*output_gain;
  138. spl1 =(spl1 * dry + del_l * wet)*output_gain;
复制代码



1581
#3 21-2-5 16:08
感谢分享!

代码的话新手可能无从入手,我把打包好的jsfx文件传上来。只需要放进安装路径下的 Effects文件夹里,然后在reaper效果器加载窗口里按F5刷新一下,搜索 jonas,就能加载了


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
观众反应
Tee

361
#4 21-2-5 17:20
我喜欢k-stereo  第二个有点空
观众反应

13857
#5 21-2-5 18:34
JSE更自然?

5431
#6 21-2-5 19:30

我个人感觉都差不多。。。

2624
#7 21-2-6 00:01
感觉K-Strreo清晰度步入JSE

139
#8 21-2-12 20:17
感觉第二个低频较第三个虚了很多,没有第三个结实清晰

2079
#9 21-3-10 02:16
留个记号,改天听听。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

搜索