私は4チャンネルシステムの特定のスピーカーに特定のオーディオ信号を送る必要があるNAudioのC#プロジェクトに取り組んでいます。基本的には、フロント左のスピーカーには「環境音」、フロント右のスピーカーには「フロントパネルの表示音」、フロントの左スピーカーには「事前に録音された指示」を送る必要があります。 私のデスクトップコンピュータがサポートしている2チャンネルセットアップでは私の現在のデザインが動作しますが、テストハードウェア上で4チャンネルに拡張しようとすると、「値が期待値の範囲内に収まらない」というエラーが発生します。 WasapiOut.init()を呼び出すと私は問題がMultiplexingSampleProviderによって何らかの形で引き起こされたと思いますが、問題を解決する理由/方法を理解することはできません。私はそれをロードしようとする前に私が使用しているAudioDeviceが十分なチャンネルをサポートしていることを確認します。したがって、問題の原因となるチャンネルの不足ではありません。ここでMultiplexingSampleProviderとWasapiOutを持つNAudio
は、問題の原因となるコードです:
// Create mixer provider for each channel.
for(int Count = 0; Count < Channels; Count++)
{
_Mixers.Add(new MixingSampleProvider(_Format.AsStandardWaveFormat()));
_Mixers[Count].MixerInputEnded += SoundEndedEvent;
}
// Create and configure multiplexer provider.
_Multi = new MultiplexingSampleProvider(_Mixers, Channels);
for(int count = 0; count < Channels; count++)
{
_Multi.ConnectInputToOutput(count, 0);
}
// Add master volume control provider.
_Volume = new VolumeSampleProvider(_Multi);
_Volume.Volume = 1.0f;
// Initialize output device.
_OutputDev.Init(p_Volume);
_formatは設定44.1kHzで、32ビット、1つのチャネルとWAVEFORMATEXTENSIBLEクラスです。
私は_OutputDev.Init(p_Volume)を呼び出すまで動作しますが、これは '値が期待値の範囲内に収まらない'ということです。例外。
この例外が発生する理由とその解決方法を教えてください。
ありがとうございます。
編集
これは私が取得していますスタックトレースです。
System.ArgumentException: Value does not fall within the expected range. at System.Runtime.InteropServices.Marshal.ThrowExceptionForHRInternal(Int32 errorCode, IntPtr errorInfo) at NAudio.Wave.WasapiOut.Init(IWaveProvider waveProvider) at NAudio.Wave.WaveExtensionMethods.Init(IWavePlayer wavePlayer, ISampleProvider sampleProvider, Boolean convertTo16Bit) at GSound.Audio.Player..ctor(Int32 Channels, Int32 Device) in E:\Dev\GSound_Wasapi\Projects\GSound\Audio\Player.cs:line 220 at GSound.Audio.Handler..ctor(Config TheConfig) in E:\Dev\GSound_Wasapi\Projects\GSound\Audio\Handler.cs:line 78 at GSound.UIData..ctor() in E:\Dev\GSound_Wasapi\Projects\GSound\UIData.cs:line 63
私は問題がE_INVALIDARGエラーを生成しているAudioClient.Initializeコール、で起こっていると思います。これは、WasapiOutで生成されたフォーマット値の問題か、クライアントのプロパティに関する問題のいずれかを示します。私は両方の問題を調べるつもりですが、どんな指針が役に立つでしょう。
もう一度ありがとうございます。
私は1つのシステム上で動作する4チャンネルオーディオを得ている
WASAPIデバイスでは、必ずしもマルチチャンネル音声(2チャンネル以上)で開くことができません。私は確かに自分自身を達成するために管理していない。 ASIO –
興味深いので、選択したデバイスがMMDevice.Propertiesを介して示しても、PKEY_AudioEndPoint_PhysicalSpeakersは4つのスピーカーをマスクしており、実際にはアクセスできません.ASIOドライバを取得できるかどうかを確認する必要があります私たちが使用しているサウンドカード用です。 Wasapiに関してもっと知ろうとするだけでなく、それがちょっと変わったように思えます。 – JonDemers