3 * @brief コーデックから受け取ったデータに対して、実際の信号処理を施す。
5 * @author: Takemasa Nakamura (Modified: Shinichiro Nakamura)
8 #include "i2s_subsystem.h"
9 #include "audio_effect.h"
11 void audio_effect_through(
12 const effect_param_t *param,
13 const AUDIOSAMPLE *in_left,
14 const AUDIOSAMPLE *in_right,
15 AUDIOSAMPLE *out_left,
16 AUDIOSAMPLE *out_right)
18 const int var0 = param->var0;
19 const int var1 = param->var1;
20 *out_left = ((*in_left) >> 10) * var0;
21 *out_right = ((*in_right) >> 10) * var1;
25 * オーディオエフェクト(ボーカルキャンセル)を実行する。
27 * @param param エフェクトパラメータ。
28 * @param in_left 入力データ。(L)
29 * @param in_right 入力データ。(R)
30 * @param out_left 出力データ。(L)
31 * @param out_right 出力データ。(R)
33 void audio_effect_vocal_cancel(
34 const effect_param_t *param,
35 const AUDIOSAMPLE *in_left,
36 const AUDIOSAMPLE *in_right,
37 AUDIOSAMPLE *out_left,
38 AUDIOSAMPLE *out_right)
40 const int var0 = param->var0;
41 const int var1 = param->var1;
42 const AUDIOSAMPLE mix = ((*in_left) - (*in_right)) >> 1;
43 *out_left = (mix >> 10) * var0;
44 *out_right = (mix >> 10) * var1;
48 * オーディオエフェクト(FIR: Finite Impulse Response)を実行する。
50 * @param param エフェクトパラメータ。
51 * @param in_left 入力データ。(L)
52 * @param in_right 入力データ。(R)
53 * @param out_left 出力データ。(L)
54 * @param out_right 出力データ。(R)
56 void audio_effect_fir(
57 const effect_param_t *param,
58 const AUDIOSAMPLE *in_left,
59 const AUDIOSAMPLE *in_right,
60 AUDIOSAMPLE *out_left,
61 AUDIOSAMPLE *out_right)
63 /** @todo FIRフィルタを挿入する。 */
67 * オーディオエフェクト(IIR: Infinite Impulse Response)を実行する。
69 * @param param エフェクトパラメータ。
70 * @param in_left 入力データ。(L)
71 * @param in_right 入力データ。(R)
72 * @param out_left 出力データ。(L)
73 * @param out_right 出力データ。(R)
75 void audio_effect_iir(
76 const effect_param_t *param,
77 const AUDIOSAMPLE *in_left,
78 const AUDIOSAMPLE *in_right,
79 AUDIOSAMPLE *out_left,
80 AUDIOSAMPLE *out_right)
82 /** @todo IIRフィルタを挿入する。 */