シンセフィルターサンプル
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
説明
シンセフィルタは、オーディオ波形を生成するソースフィルタです。
このフィルターは、動的なグラフ作成を示しています。 圧縮されていない PCM オーディオと圧縮MS_ADPCM (Microsoft Adaptive Delta Pulse Code Modulation) 形式を切り替えることができます。
このフィルターは、GraphEdit に "オーディオ シンセサイザー フィルター" として表示されます。
動的グラフの作成の詳細については、「動的グラフの 作成」を参照してください。
使用方法
シンセフィルタは、ユーザがプロパティページを介して波形、周波数、チャンネル数、およびその他のプロパティを設定することができます。 スイープ周波数範囲の上端または下限の端点を設定するには、Shift キーを押しながら周波数スライダーを調整します。 フィルターでは、これらのプロパティを設定するためのカスタム インターフェイス ISynth2 もサポートされています。
動的グラフ作成機能を示すには、次の操作を行います。
- フィルターをビルドし、Regsvr32 ユーティリティに登録します。
- GraphEdit を起動します。
- オーディオ シンセサイザー フィルターを挿入します。 DirectShow フィルター カテゴリに表示されます。
- フィルターの出力ピンをレンダリングします。
- [ 再生 ] ボタンをクリックします。
- フィルターのプロパティ ページを開きます。
- [出力形式] 領域で、[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 のパスの下にインストールされます。
関連トピック