最強のJavaデジタルオーディオチュートリアルのStereo Width Algorithm (Sound Field Algorithm)

数年間オーディオアルゴリズムを研究した後、今日、java でステレオ幅アルゴリズム (音場アルゴリズム) を実装する方法を発表します. Width はステレオ幅係数です width < 1: 幅が減少します width = 1: 幅は変更されませ

width
>
1 : 幅が増加する幅
= 0:
モノ値の基本的な範囲は 0 ~ 2 です。

ステレオ幅の計算はどのように実装されていますか (変換行列を介して取得)

言うことはあまりありません。アルゴリズムに直接アクセスしてください

  1. 倍率を計算する
// scale coefficient
float coef_S = width * 0.5f;
  1. 次に、各サンプルに基づいて計算を行います
// 然后根据每个样本再做计算
float m = (left  + right) * 0.5f;
float s = (right - left ) * coef_S;
  1. 幅変換後の値を取得する
//left
sam[0] = m - s;
//right
sam[1] = m + s;

コード全体は次のとおりです

	public static float[] stereoWidthProcess(float left, float right) {
    
    
		float[] sam = new float[2];
		
		// 计算缩放比例系数
		float coef_S = width * 0.5f;

		// 然后根据每个样本再做计算
		float m = (left  + right) * 0.5f;
		float s = (right - left ) * coef_S;

		sam[0] = m - s;
		sam[1] = m + s;
		return sam;
	}

別の不完全なアルゴリズムを以下に示します

最初は次のアルゴリズムを使用しました.補正なしでは6デシベルの増加があり、音が壊れてしまいます.上記のアルゴリズムを使用してください.

// calc coefs
tmp = 1/max(1 + width,2);
coef_M = 1 * tmp;
coef_S = width * tmp;

// then do this per sample
m = (in_left + in_right)*coef_M;
s = (in_right - in_left )*coef_S;

out_left = m - s;
out_right = m + s;

//做增益/失真补偿
out_left  /= 0.5 + coef_S;
out_right /= 0.5 + coef_S;

これはステレオ幅の実装です。質問がある場合は、私に相談してください

おすすめ

転載: blog.csdn.net/Janix520/article/details/124525043