0

しばらくの間、C++ で VST インストゥルメントに取り組んできましたが、ノートが別のノートの開始位置で終了すると大きなクリック音が発生するという問題が発生しています。

実は音符が終わったときにも問題がありますが、その部分を取り除く「フェードアウト」アルゴリズムを追加しました。しかし、別のノートが終了したところで別のノートが始まるとすぐに、私のフェードアウト アルゴリズムの余地はありません。

私は出力バッファをスキャンして、短期間に発生する急激な大きな値を見つけて、その部分を無音にすることでクリックアウトを見つけようとしました。

シーケンサーからの画像を含むファイルがここにアップロードされ、Soundcloud の短い mp3 ファイルでクリック音を聞くことができます。Sound Cloud のクリック音

これらのことについて詳しく知っている人で、クリックフィルターがどのように機能するかは知っていますが、このような VST インストゥルメントに実装する方法はわかりません。これに取り組む良い方法は何ですか?

4

1 に答える 1

1

ソースを見ずにこれらのタイプの問題を診断することは非常に困難であり、それでも VST の品質問題を解決するための「特効薬」はありません。ただし、いくつかのアドバイスを提供できます。

  • ウェーブ エディタを使用して、バウンスされた出力ファイルを実際に近くで確認します。つまり、サンプルレベルまで。Ocenaudioは、波形を 1 つのサンプルまで表示できるフリーウェア エディタの 1 つです。これをいくつかのログと共に使用すると、クリックが生成された場所を正確に知ることができるはずです。MrsWatson (免責事項: 私は MrsWatson を書きました)のようなツールと組み合わせると、特定のprocess()コールバック中にプラグインが行っていることに関する非常に正確なデータを取得できます。
  • クリックを「フィルタリング」することはできません。そうすると、クリックの存在が減少するだけで、一般的にくだらないサウンドになります。問題の根本的な原因を突き止めることをお勧めします。
  • 健全性チェック:すべての変数を適切なデフォルト値に初期化していることを確認してください。多くの場合、初期化されていない値が原因で単一のサンプルの値が悪くなり、その結果、一時的なスパイクが発生します (したがって、クリック音として聞こえる)。
  • 最悪の場合、線形補間を適用して、サンプル間の差が非常に大きい領域を「滑らかにする」ことができます。ただし、これは厄介なクリックを減らすだけですが、楽器の全体的な音質が低下する可能性があります.
于 2013-11-06T14:03:54.413 に答える