Microsoft DirectX 8.0 (C++)

フォース フィードバックの基本概念

フォース フィードバックのうち特殊なインスタンスを "エフェクト" と言い、プッシュや抵抗を "フォース" と言う。多くのエフェクトは、以下のカテゴリのいずれかに属する。

フォースの強さを "マグニチュード" という。マグニチュードは、0 (フォースなし) から 10,000 (デバイスの最大フォースで、C/C++ および Visual Basic の場合、DI_FFNOMINALMAX として定義されている) の範囲の単位で測定される。負の値は、反対の方向にあるフォースを示す。マグニチュードは比例的な単位である。たとえば、フォース 10,000 はフォース 5,000 の 2 倍の大きさである。

傾斜フォースには、初期マグニチュードと終期マグニチュードがある。周期的エフェクトでは、基本的マグニチュードは波の頂点でのフォースとなる。

フォースの "方向" はフォースが来る方向である。ある軸上の正のフォースは正から負のほうへ押す力である。

また、エフェクトには "継続時間" がある。これは、マイクロ秒単位で測定される。周期的エフェクトには、"周期" または 1 サイクルの継続時間があり、これらもマイクロ秒単位で測定される。周期的エフェクトの "フェーズ" とは、再生開始箇所の波にそって存在するポイントのことである。

次の図は、マグニチュード 5,000、つまりデバイスの最大フォースの半分での鋸歯周期的エフェクトを表す。水平軸はエフェクトの継続時間を、垂直軸はマグニチュードをそれぞれ表す。中央線よりも上のポイントは、エフェクトに定義された方向における正のフォースを、下のポイントは負のフォース、すなわち反対方向のフォースを表す。

さらにフォースは、"エンベロープ" によって形成される。エンベロープは、"アタック値" と "フェード値" を定義する。アタック値とフェード値により、始点と終点間のエフェクトのマグニチュードが変化する。アタックとフェードには継続時間がある。継続時間は、マグニチュードが "保持値" に到達するのに必要な時間、または保持値から外れるのに要する時間を決定する。保持値とは、エフェクトの中間部のマグニチュードのことである。

次の図は、エンベロープを示している。アタック レベルは 8,000、フェード レベルは 1,000 に設定されている。保持レベルは、このエンベロープを適用したフォースの基本的マグニチュードによって定義される。この例では保持レベルは 5,000 である。このケースでは、アタックの方が保持よりも大きいことに注意すること。これは、エフェクトの初期に強いキックを与えることになる。アタック レベルとフェード レベルの両方が保持レベルより大きいことも小さいこともある。

次の図は、最初の図の周期的エフェクトにエンベロープを適用した結果を示す。マグニチュードの負側では、エンベロープが鏡写しになっている。アタック値 8,000 が意味するのは、一方の方向のフォースの初期マグニチュードが、最大フォースの 80% になるということである。

周期的エフェクトと条件は、すべて、"オフセット" の追加によっても変更することができる。オフセットとは、波形を基本レベルよりも上または下にシフトする量を定義するものである。鋸歯の例に正のオフセットを適用した実際のエフェクトでは、正のフォースを強め、負のフォースを弱めることになる。すなわち、フォースの波形では、一方向への波の頂点が、他方向への波の頂点よりも高くなる。

また、エフェクトの全体的マグニチュードは、"ゲイン" によって増減可能である。ゲインとは、オーディオにおける音量コントロールに類似している。単一のゲイン値を 1 つのデバイスのすべてのエフェクトに適用できるので、これを使って、いろいろなハードウェアに対してフォースを強めたり、弱めたりする補正を加えることができる。また、ユーザーの好みに対応することもできる。