0

マネージ コードを使用して音楽プレーヤーを開発しており、Microsoft.DirectX.DirectSound を使用しています。play メソッドを呼び出すと、「値が期待される範囲内にありません」というエラーが表示されます。したがって、問題は 24 ビットの WAV ファイルのみです。それが例外の理由でした。16ビットファイルの場合は正常に動作しています。24ビットファイルでも機能させる方法はありますか?

ありがとうございました!

    using Microsoft.DirectX.DirectSound;
    using DS = Microsoft.DirectX.DirectSound;
    .......
    private DS.Device sounddevice;
    private DevicesCollection AuioDevList;
    //Create buffer
    private SecondaryBuffer secondaryBuffer;
    private BufferDescription d = new BufferDescription();

    private void initializeSound()
    {
        // List all Audio Cards
        AuioDevList = new DevicesCollection();
        // Populate cmbAudioCards
        cmbAudioCards.Items.Clear();
        for (int i = 0; i < AuioDevList.Count; i++)
        {
            cmbAudioCards.Items.Add(AuioDevList[i].Description);
        }
        cmbAudioCards.SelectedIndex = 0;
        sounddevice = new DS.Device(AuioDevList[0].DriverGuid);
        sounddevice.SetCooperativeLevel(this.Handle, CooperativeLevel.Normal);

        // Set descriptor’s flags
        d.ControlPan = true;
        d.ControlVolume = true;
        d.ControlFrequency = true;
        d.ControlEffects = true;
    }

    private void prepareSound(string file)
    {

            playing = false;
        //secondaryBuffer.Stop();            
        secondaryBuffer = new SecondaryBuffer(file, d, sounddevice);
        secondaryBuffer.Volume = trkVolume.Value;
    }

    private void btnPlay_Click(object sender, EventArgs e)
    {    
         //Here is throwing exception 
        secondaryBuffer.Play(0, BufferPlayFlags.Default);//
    }
4

0 に答える 0