次の方法で共有


シンセフィルターサンプル

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayerIMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]

説明

シンセフィルタは、オーディオ波形を生成するソースフィルタです。

このフィルターは、動的なグラフ作成を示しています。 圧縮されていない PCM オーディオと圧縮MS_ADPCM (Microsoft Adaptive Delta Pulse Code Modulation) 形式を切り替えることができます。

このフィルターは、GraphEdit に "オーディオ シンセサイザー フィルター" として表示されます。

動的グラフの作成の詳細については、「動的グラフの 作成」を参照してください。

使用方法

シンセフィルタは、ユーザがプロパティページを介して波形、周波数、チャンネル数、およびその他のプロパティを設定することができます。 スイープ周波数範囲の上端または下限の端点を設定するには、Shift キーを押しながら周波数スライダーを調整します。 フィルターでは、これらのプロパティを設定するためのカスタム インターフェイス ISynth2 もサポートされています。

動的グラフ作成機能を示すには、次の操作を行います。

  1. フィルターをビルドし、Regsvr32 ユーティリティに登録します。
  2. GraphEdit を起動します。
  3. オーディオ シンセサイザー フィルターを挿入します。 DirectShow フィルター カテゴリに表示されます。
  4. フィルターの出力ピンをレンダリングします。
  5. [ 再生 ] ボタンをクリックします。
  6. フィルターのプロパティ ページを開きます。
  7. [出力形式] 領域で、[PCM] または [Microsoft ADPCM] を選択します。

プログラミング に関するメモ

このサンプルには、次のファイルが含まれています。

  • Dynsrc.h、Dynsrc.cpp: 動的グラフの構築をサポートするソース フィルター用の 2 つの基本クラス CDynamicSource と CDynamicSourceStream が含まれています。
  • ISynth.h: フィルターのプロパティを設定するためのカスタム ISynth2 インターフェイスを宣言します。
  • Resource.h: リソース定数が含まれています。
  • Synth.def: COM ライブラリに必要な DLL 関数をエクスポートします。
  • Synth.h、Synth.cpp: オーディオ データを生成する CAudioSynth クラスと、フィルターを実装する CSynthFilter クラスが含まれます。
  • Synth.rc: フィルターによって使用されるリソースが含まれます。
  • Synthprp.h、Synthprp.cpp: フィルターのプロパティ ページを実装します。

CDynamicSource クラスは、 CSource 基本クラスから調整されます。 CDynamicSourceStream クラスから派生した 1 つ以上の出力ピンが使用されます。 CDynamicSourceStream クラスは CSourceStream クラスから調整されますが、CBaseOutputPin クラスではなく CDynamicOutputPin クラスから派生します

CDynamicSource クラスには、 CSource で見つからない次のメソッドがあります。

  • Stop: stop イベント (CDynamicOutputPin::m_hStopEvent) を通知し、接続されていないすべてのピンのワーカー スレッドをシャットダウンします。 接続されたピンでは、ピンの非アクティブメソッドによってワーカー スレッドがシャットダウンされます。
  • 一時停止: 停止イベントをリセットします。
  • JoinFilterGraph: 各ピンで CDynamicOutputPin::SetConfigInfo メソッドを呼び出します。

CDynamicSourceStream クラスには、 CSourceStream に次のメソッドが見つかりません。

  • DestroySourceThread: ワーカー スレッドをシャットダウンします。
  • FatalError: フィルター グラフ マネージャーにエラーを通知します。
  • OutputPinNeedsToBeReconnected: 出力ピンを再接続する必要があることを通知します。 このメソッドが呼び出されると、ワーカー スレッドは CDynamicOutputPin::D ynamicReconnect メソッドを呼び出してピンを再接続します。

サンプルのダウンロード

DirectShow SDK サンプルをダウンロードするには、最新バージョンの Windows SDK をインストールします。

このサンプルは、[ SDK Root]\Samples\Multimedia\DirectShow\Filters\Synth のパスの下にインストールされます。

DirectShow のサンプル