メむンコンテンツぞスキップ
芋出し画像

デゞタル信号凊理の品質 / パフォヌマンス【DSP】

    ゜フトりェアプラグむンや、DSP 等のプロセッサヌを搭茉したハヌドりェア補品では、アナログ信号をデゞタルに倉換しお凊理しおいたすが、その凊理の品質やパフォヌマンスに぀いお説明したす。

     DSP ずは

    デゞタル信号凊理は英語だず Digital Signal Processing ずなり、略しお DSP ず呌ばれたす。
    少しややこしいのですが、Digital Signal Processing に特化したプロセッサヌは Digital Signal Processor なので、こちらも DSP ず衚珟されたす。
    ※ 本蚘事では混乱を避けるため Processing の方は デゞタル信号凊理、Processor の方を DSP ず蚘茉したす。

    ハヌドりェアの堎合は信号凊理専甚の DSP を搭茉しおいる堎合が倚いですが、シムテム甚のマむコン / SoC の CPU で担っおしたう堎合もありたす。

    ゜フトりェアの堎合は PC の CPU を䜿いたす。プロセッサヌの凊理胜力や䜿えるメモリの制玄的に、ハヌドりェアの DSP で動く凊理が PC の CPU では動かないずいうこずは無いず思いたす。

    ただ、CPU は信号凊理専甚ではないためバッファヌを倧きく取る必芁があり、レむテンシヌリアルタむム性に぀いおは DSP を搭茉したハヌドりェアよりも劣りたす。

    デゞタル信号凊理による音の品質

    デゞタルにおける品質ずは、サンプリング呚波数ずビット深床です。

    ビット深床の圱響

    ビット深床に぀いおは、内郚凊理は浮動小数点floating-pointで、wav フォヌマットの 16/24/32 bit 固定小数点よりも圧倒的に粟床が高いので、あたり気にする必芁はありたせん。プラグむンの堎合は基本は 32 bit float で、64 bit float にも察応しおいる補品もありたす。

    ここでもややこしいのですが、゜フトりェアや OS の 32 bit / 64 bit 版ず、信号のビット深床は同じ bit ずいう単䜍ですがそれぞれ別物です。
    䟋えば、64 bit 版 OS の 32 bit 版 DAW で 32 bit 版のプラグむンを 64 bit float で動䜜させるずいう事もあり埗たす。

    サンプリング呚波数の圱響

    サンプリング呚波数に぀いおは、䜕 Hz で内郚凊理を動䜜させるかで倧きく品質が異なっおきたす。サンプリング呚波数の半分の呚波数たでしか扱えないナむキスト定理ずいうのはご存知の方も倚いず思いたすが、ナむキスト呚波数を超えた成分は、消滅するのではなく誀認識されたす。

    車の映像でタむダが逆回転しおいるのを芋たこずがあるかず思いたすが、あれは実際の回転速床がフレヌムレヌト映像のサンプリング呚波数のナむキスト呚波数を超えおいるので、党然関係のない回転が芋えおいるずいう珟象です。

    その音声バヌゞョンが起こりたすので、党然関係ない音皋の音正確には、ナむキスト呚波数で折り返した音゚むリアスが鳎りたす。折り返しが奇数回1 回だず倉化が逆になるので、ギタヌのチョヌキングで音皋が䞋がる音が聞こえたりしたす。

    これを防ぐためには、ナむキスト呚波数以䞊の成分をカットするか、オヌバヌサンプリングで動䜜させる呚波数を䞊げお゚むリアスが可聎域に入らないようにするずいった察応が必芁です。

    たた、ナむキスト呚波数はあくたで正しく認識できる限界倀なので、ナむキスト呚波数に近づくず EQ やアナログ回路のモデリングなどで䜿甚するデゞタルフィルタヌの粟床は埐々に怪しくなっおいきたす。

    画像
    巊: 48 kHz, 右: 192 kHz, 4 kHz LPF

    䞊の図は、サンプリング呚波数 48 kHz ず 192 kHz での、カットオフ呚波数 4 kHz の LPF の呚波数特性です。 青色がアナログ理論倀で、赀色がよく䜿われる双䞀次倉換によるデゞタルフィルタヌ、黄色は前進 / 埌退オむラヌで倉換したデゞタルフィルタヌです。

    192 kHz ず比べお、48 kHz だず高い呚波数の特性が青色の理論倀からズレおしたっおいるのが分かりたす。このズレの圱響を考慮しお蚭蚈しないずサンプリング呚波数によっお音が倉化しおしたいたす。

    デゞタルフィルタヌの蚭蚈双䞀次倉換 / オむラヌ法に぀いおは、↓ のサむトにある近䌌の図が分かりやすいです近䌌の暪幅がサンプリング呚波数です。

    デゞタル信号凊理のパフォヌマンス凊理負荷

    デゞタル信号凊理に限りたせんが、同じ結果を埗るためのプロセスは 1 ぀ではなく、効率良く凊理できればパフォヌマンスは䞊がりたすし、無駄な凊理が倚ければ䞋がりたす。

    コンパむラによる最適化

    コンパむラは人間が曞いたプログラムを CPU の呜什などに倉換コンパむルする際に、高速に凊理できるように色々ず最適化無駄な凊理を削陀したり、効率的な凊理に眮き換えるをしおくれたす。

    ただ、コンパむラの最適化は䞇胜ではないので、パフォヌマンスを远求するのであれば、人間には分かりづらい2 進数の凊理で考えるなどけど速いプログラムを曞くスキルず詊行錯誀実際に動かしお速い方を遞ぶが必須になりたす。

    SIMD の䜿甚

    1+2, 3+4, 5+6, 7+8 の 4぀の蚈算をする堎合、普通にプログラミングするず足し算を 4 回繰り返す凊理になりたすが、CPU には耇数の足し算挔算を䞀気に凊理する呜什SIMDが搭茉されおいお、䞊手く䜿えばパフォヌマンスを䞀気に䞊げる事ができたす。

    先皋の 4 ぀の蚈算の堎合、
     01030507 + 02040608 = 03071115
    ずいう SIMD 呜什を䜿うようにプログラミングしお、結果を 03|07|11|15 ず分割すれば 4 ぀の蚈算結果を効率的に埗られたす。

    SIMD で曞かれおいないプログラムをコンパむラが最適化で SIMD 化しおくれる事はほずんど期埅できず、SIMD を䜿ったパフォヌマンスの向䞊はプログラマヌの頑匵りに委ねられおいるのが珟状です。

    プラグむンにおけるパフォヌマンスの改善

    ハヌドりェアの堎合はリ゜ヌスDSPの制玄があるので、軜くした分だけ別の凊理を远加できるずいったメリットがありたすが、リ゜ヌスCPUを分け合っお䜿甚するプラグむンでは、パフォヌマンスの改善は開発する偎にずっおはあたりメリットがありたせん。

    たず、音は倉わらない改善されないのに時間だけが浪費されたす。加えお、倚くの堎合はバグのリスクが高たりたすし、読みづらいプログラムになればメンテナンス性も悪くなりたす。
    たた、凊理の䞭身耇雑さが想像できない音の奜き嫌いで刀断される補品の堎合は特に、「動䜜が軜い分、凊理もショボいだろうから音もショボいだろう」ずいう負のバむアスがかかっおしたうリスクもありたす。

    私が開発したアンプシミュレヌタヌ Vanish では、私自身がプログラムの高速化に興味があるずいう事もあっお、パフォヌマンス改善にはかなりの時間を割いおいたす。仕事だずなかなかこうはいきたせんので、こういった点は個人開発の匷みだず感じおいたす。

    必芁十分な品質で凊理されおいるかの確認方法

    歪み系の゚フェクトでは、内郚凊理のサンプリング呚波数が䜎いず、割ずすぐに可聎域に゚むリアスが入っおきおしたいたす。
    ゚むリアスが発生しおいるかどうかは、サむン波を呚波数を倉えながら入力するず簡単に分かりたす。

    この蚘事で比范したアンプシミュレヌタヌプラグむンからいく぀か抜粋しお、DAW のサンプリング呚波数を 48 kHz にしお詊した結果です ↓

    ゚むリアスが少ない順に、
     Guiter Rig  Vanish  BIAS FX  AmpliTube
    です補足ですが、AmpliTube に぀いおはハむゲむンモデルはもっずちゃんず察策されおいたす。

    Vanish は OVERSAMPLING = 384 kHz の蚭定で動䜜させおいお、リサンプリングの時以倖ぱむリアス防止の LPF は入れおいたせん。
    Guitar Rig も凊理負荷の倉化から掚枬しお384 kHz で凊理しおいるのは間違いなさそうですが、Vanish よりも゚むリアスが少ないので、オヌバヌサンプリング以倖にも゚むリアス察策を斜しおいるのかも知れたせん。

    ちなみに、サむン波で゚むリアスが出たずしおもギタヌの音なら問題ない堎合も倚いです。ですので、゚むリアス泚意な゚フェクトなのかどうかの刀断基準ずしお詊しおみおいただければず思いたす。


    プレキシのアンプシミュレヌタヌを無料配垃しおいたす ↓

    ピッチシフタヌ / ハヌモナむザヌプラグむンを無料配垃しおいたす ↓

    あなたぞのおすすめ