核心 DPS API 功能

以下是 DPS SDK 中可用的功能。 它们在 DPS.h 头文件中被引用,并且在所有平台上都尽可能常见:

初始 化

int DPSInitialize(environment, context, string license_file);

这将"唤醒"算法并初始化所有表、变量等。启动时调用一次。这将返回许可值之一。 您必须收到 AUTH_SUCCESS(整数值 0),DPS 处理才能不受限制地工作。 如果返回任何其他值,DPS 将进入演示模式。 其他值在 DPS.h 文件中定义。

int DPSGetDPSEnabled();

获取 DPS 处理的状态。 如果为 1,则启用 DPS。 如果为 0,则绕过 DPS。

void DPSSetDPSEnabled(int enabled);

启用或绕过 DPS 处理。 使用启用的 = 1打开 DPS。 使用启用的 = 0关闭 DPS 处理。 DPS HEAR 和用户音量控制(见下文)在关闭 DPS 后保持不变。

参数加载

int DPSLoadPreset(char *fname);

"预设"是指DPS 配置文件。 它包含使 DPS 算法与特定播放设备一致的设置。 例如,这可能是 Bose 耳机、Klipsch 扬声器或许多设备通用的"城市"配置文件。

DPS 库现在对所有参数使用 .bgvx 格式。 .bgva 和 .bswt 格式已被取消。

此函数返回 0 = 成功,1 = 文件不存在,2 = 无效预设

int DPSLoadPresetBuf(char *c, int length);

此函数用于从内存加载配置文件。

返回 0 = 成功,1 = 文件不存在,2 = 无效预设

请注意,预设/配置文件的大小通常约为 4kB。

void DPSFlattenAll(void);

这将将所有 DPS 参数设置为平面状态。 DPS 算法仍在运行,但对音频没有影响。 这将保持音频延迟(由算法引起的总延迟)。

音频处理

void DPSProcessBuffer(short *buffer, int numOfFrames, numberOfChannels);

这就是我们将音频传递到 DPS 算法进行处理的方式。 此函数返回应用了 DPS 处理的缓冲区。

numOfFrame = 立体声样本的数量。 允许的最大值为 2048。

目前,DPS 算法仅支持立体声音频。  多渠道支持即将推出。

DPS 用户均衡器功能

DPS 均衡器是 DPS 处理后发生的控制质量参数均衡器。 此 EQ 可以简化为基本高音/低音音控制,或为用户提供高级控件。

i = 0 表示低频带,i = 1 表示高频段。

最新版本的核心 API 现在可以获取用户 EQ 的参数:

int DPSGetUserEqEnabled(int band); // 1 enabled, 0 bypass
void DPSSetUserEqEnabled(int band, int enabled); // enabled = 1 enable user eq, enabled = 0 bypass user eq
int DPSGetUserEqFreq(int band);
float DPSGetUserEqQfactor(int band);
float DPSGetUserEqGain(int band);
float DPSGetUserEqGain_dB(int band);
void DPSSetUserEqFreq(int band, int frequency);
void DPSSetUserEqQfactor(int band, float Q);
void DPSSetUserEqGain(int band, float magnitude);
void DPSSetUserEqGain_dB(int band, float dB);

对于低音音控制,我们建议频率值为 160Hz,Q 值为 0.7。

对于高音控制,我们建议频率值为 5000Hz,Q 值为 0.7。

旧格式使用索引来设置/获取 EQ 值:

void FcKnobMoved(int i, int Fc); //i = 0 for low band, 1 for high band
void QKnobMoved(int i, int Q); //i = 0 for low band, 1 for high band
void GKnobMoved(int i, int gain); //i = 0 for low band, 1 for high band
int GetFcKnob(int i); //i = 0 for low band, 1 for high band
int GetQKnob(int i); //i = 0 for low band, 1 for high band
int GetGKnob(int i); //i = 0 for low band, 1 for high band

单击此处查看索引和范围的简表

下面的整数值表示均衡器滑块的建议范围:

低频段:

增益从 4 到 32。 24 = 0dB = 增益没有变化。

频率中心 (FC) 从 0 到 29

Q(宽度值):从 0 到 15

对于低音音控制,我们建议频率值为 15 (160Hz),Q 值为 3 (0.7)。

高频段:

增益:从4到32。 24 = 0dB = 增益没有变化。

FC: 从 30 到 57

问:从 0 到 15

对于高音控制,我们建议频率值为 45 (5000Hz),Q 值为 3 (0.7)。

上面的整数值表示以下数组中的索引:

//public final static double[] GainArray = {0.251189, 0.266073, 0.281838, 0.298538, 0.316228, 0.334965, 0.354813, 0.375837, 0.398107, 0.421697, 0.446684, 0.473151, 0.501187, 0.530884, 0.562341, 0.595662, 0.630957, 0.668344, 0.707946, 0.749894, 0.794328, 0.841395, 0.891251, 0.944061, 1.000000, 1.059254, 1.122018, 1.188502, 1.258925, 1.333521, 1.412538, 1.496236, 1.584893, 1.678804, 1.778279, 1.883649, 1.995262, 2.113489, 2.238721, 2.371374, 2.511886, 2.660725, 2.818383, 2.985383, 3.162278, 3.349654, 3.548134, 3.758374, 3.981072, 4.216965, 4.466836, 4.731513, 5.011872, 5.308845, 5.623413, 5.956622, 6.309574, 6.683439, 7.079458, 7.498942, 7.943282};

使用(10_Math.log10(Math.pow(值,2))计算分贝

//public final static double[] FcArray = {28.0, 31.0, 35.0, 40.0, 45.0, 50.0, 56.0, 63.0, 70.0, 80.0, 90.0, 100.0, 112.0, 125.0, 141.0, 160.0, 180.0, 200.0, 225.0, 250.0, 280.0, 315.0, 350.0, 400.0, 450.0, 500.0, 560.0, 630.0, 700.0, 800.0, 900.0, 1000.0, 1120.0, 1250.0, 1400.0, 1600.0, 1800.0, 2000.0, 2250.0, 2500.0, 2800.0, 3150.0, 3500.0, 4000.0, 4500.0, 5000.0, 5600.0, 6300.0, 7000.0, 8000.0, 9000.0, 10000.0, 11200.0, 12500.0, 14100.0, 16000.0, 18000.0, 20000.0}; //value in HZ
//public final static double[] QArray = {0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1.0, 1.2, 1.4, 2.0, 2.5, 3.0, 4.0, 5.0, 6.5, 8.0}; //Q value

单击此处查看索引和范围的简表

动态立体声增强

(立体声宽德纳) - 这种独特的算法提供更宽,更身临其境的立体声场,而不牺牲录音的原始声音。 这仅适用于扬声器系统(不是耳机)。

int DPSGetStereoWidenEnabled()

• 获取立体声宽幅处理器处理 0 = 关闭的状态。 1 = 打开。

void DPSSetStereoWidenEnabled(int enabled)

• 打开或关闭立体声宽幅器。 0 = 关闭。 1 = 打开。

int DPSLoadStereoWidenProfile(char *fname)

• 加载bswt立体声宽幅轮廓。 0 = 成功,1 = 文件不存在,2 = 无效预设

int DPSLoadStereoWidenProfileBuf(char *c, int length)

• 从内存加载 bswt 配置文件。0 = 成功,1 = 文件不存在,2 = 无效预设,//注意配置文件的大小通常约为 0.5kB

int DPSGetStereoWidenGain()

|获取立体声加宽控制的位置。  使用与设置/获取 GKnob 相同的增益数组

void DPSSetStereoWidenGain(int gain)

|这是用户对立体声加宽效果的控制。 使用索引范围为 24 到 48 的用户EQ的 GainArray。

Bongiovi DPS V3D 虚拟扬声器耳机增强

此功能为耳机提供虚拟环绕声体验。 立体声内容映射到各种常用用例的预选 HRTF 参数。 自 DPS 核心版本 2.2.0 起,这些预设通过 bgvx 配置文件加载(推荐)。

void DPSGet/SetHeadphonesEnabled()

• 打开或关闭耳机效果。

int DPSGet/SetHeadphonesMode(int mode)

• 从七个预设中选择一个:

  • 0 =宽正常= 大多数耳机的整体立体声增强良好。
  • 1 =宽展开= 与上述相同,对音乐具有更大的 3D 效果。
  • 2 =中间清晰度= 提升和增强中心通道。
  • 3 =中间清晰度展开= 与上述相同,效果更大。
  • 4 =单声道= 将左声道和右声道总和到单声道。
  • 5 =立体声增强• 提升和增强游戏的立体图像
  • 6 =立体声增强最大值– 与上述相同,游戏和电影具有更大的 3D 效果。
int int DPSGet/SetHeadphonesDelaySamples(int delay)

• 这会影响耳机算法的立体声效果。 默认值为 4 个示例最适合大多数应用程序。 允许的范围是 3 到 13 个样本。 自 DPS 核心 2.2.0 起,此功能已弃用。

注: 此算法的效果在主 DPS 函数之前应用。

俯仰换档器

void DPS_PitchShifter_SetBypass(int bypass);
int DPS_PitchShifter_GetBypass();

• 启用或绕过螺距换档器

void DPS_PitchShifter_SetShift(float percent); //allowable range [.25,2.0]

• 这设置百分比格式间距

void DPS_PitchShifter_SetShift_Semitones(float semitones); //allowable range [-24,+12]

-这设置半色调格式间距

float DPS_PitchShifter_GetShift();
float DPS_PitchShifter_GetShift_Semitones();

-这得到当前间距百分比或半色调格式

void DPS_PitchShifter_SetQuality(int quality); //0, 1, or 2 allowed
int DPS_PitchShifter_GetQuality();

-设置或获取螺距换档器的质量。  0 = 质量低,虽然它相当不错。 1 和 2 是不同类型的源音频的更高质量。

用户音量控制

void DPSSetUserGain(float gain)

此函数通过单个精度浮点参数缩放音频的输出音量。 使用 (10_Math.log10(Math.pow(,2))计算分贝值。 通过传递浮点以缩放音频,您可以创建自己的音量曲线,以适应您的应用程序。

例如,用户低音/Treble 函数中使用的GainArray以 0.5dB 的增量创建一系列分贝值。 但是,适当的用户音量控制应替换设备的主音量控制。 这意味着音量控制的范围应为 -无穷大(静音)到 0dB。 虽然您可以将卷缩放到 0dB 以上,但不建议这样做,因为大多数配置文件都会产生失真。

float DPSGetUserGain()

返回当前用户卷设置。

DPS HEAR(儿童安全)

DPS HEAR(以前称为儿童安全)对 Bongiovi DPS 处理,为耳机提供清晰、清晰的音频,同时保持健康的收听音量。 单击此处了解详细信息。

int DPSGetKidSafe();

获取 DPS HEAR 的状态。1 = 开,0 = 关闭。

void DPSSetKidSafe(int enabled);

使用启用的 = 1 打开 DPS HEAR。 使用启用的 = 0 关闭 DPS HEAR。