Esempio n. 1
0
        private int GetFrequency()
        {
            CheckForInitialize();
            int frequency;

            DirectSoundException.Try(_secondaryBuffer.GetFrequency(out frequency), "IDirectSoundBuffer", "GetFrequency");
            return(frequency);
        }
Esempio n. 2
0
        private float GetPan()
        {
            CheckForInitialize();
            float pan;

            DirectSoundException.Try(_secondaryBuffer.GetPan(out pan), "IDirectSoundBuffer", "GetPan");
            return(pan);
        }
Esempio n. 3
0
        private void InitializeInternal()
        {
            //Use Desktophandle as default handle
            IntPtr handle = DSUtils.GetDesktopWindow();

            IntPtr pdsound;

            DirectSoundException.Try(NativeMethods.DirectSoundCreate8(ref _device, out pdsound, IntPtr.Zero),
                                     "DSInterop", "DirectSoundCreate8");

            _directSound = new DirectSound8(pdsound);
            _directSound.SetCooperativeLevel(handle, DSCooperativeLevelType.Normal); //use normal as default
            if (!_directSound.SupportsFormat(_source.WaveFormat))
            {
                if (_source.WaveFormat.WaveFormatTag == AudioEncoding.IeeeFloat) //directsound does not support ieeefloat
                {
                    _source = _source.ToSampleSource().ToWaveSource(16);
                }

                WaveFormat format16Bit = (WaveFormat)_source.WaveFormat.Clone();
                format16Bit.BitsPerSample = 16;
                WaveFormat format8Bit = (WaveFormat)_source.WaveFormat.Clone();
                format8Bit.BitsPerSample = 8;

                if (_directSound.SupportsFormat(format16Bit))
                {
                    _source = _source.ToSampleSource().ToWaveSource(16);
                }
                else if (_directSound.SupportsFormat(format8Bit))
                {
                    _source = _source.ToSampleSource().ToWaveSource(8);
                }
                else
                {
                    throw new NotSupportedException(
                              "WaveFormat of the source is not supported.");
                }

                if (!_directSound.SupportsFormat(_source.WaveFormat))
                {
                    throw new NotSupportedException(
                              "WaveFormat of the source is not supported.");
                }
            }

            WaveFormat waveFormat = _source.WaveFormat;
            var        bufferSize = (int)waveFormat.MillisecondsToBytes(_latency);

            _primaryBuffer   = new DirectSoundPrimaryBuffer(_directSound);
            _secondaryBuffer = new DirectSoundSecondaryBuffer(_directSound, waveFormat, bufferSize * 2);
        }
Esempio n. 4
0
        private void InitializeInternal()
        {
            //Use Desktophandle as default handle
            IntPtr handle = DSUtils.GetDesktopWindow();

            IntPtr pdsound;

            DirectSoundException.Try(NativeMethods.DirectSoundCreate8(ref _device, out pdsound, IntPtr.Zero), "DSInterop", "DirectSoundCreate8");

            _directSound = new DirectSound8(pdsound);
            _directSound.SetCooperativeLevel(handle, DSCooperativeLevelType.DSSCL_NORMAL); //use normal as default
            if (!_directSound.SupportsFormat(_source.WaveFormat))
            {
                if (_source.WaveFormat.WaveFormatTag == AudioEncoding.IeeeFloat)
                {
                    _source = _source.ToSampleSource().ToWaveSource(16);
                }
                if (_directSound.SupportsFormat(new WaveFormat(_source.WaveFormat.SampleRate, 16, _source.WaveFormat.Channels, _source.WaveFormat.WaveFormatTag)))
                {
                    _source = _source.ToSampleSource().ToWaveSource(16);
                }
                else if (_directSound.SupportsFormat(new WaveFormat(_source.WaveFormat.SampleRate, 8, _source.WaveFormat.Channels, _source.WaveFormat.WaveFormatTag)))
                {
                    _source = _source.ToSampleSource().ToWaveSource(8);
                }
                else
                {
                    throw new InvalidOperationException("Invalid WaveFormat. WaveFormat specified by parameter {_source} is not supported by this DirectSound-Device.");
                }

                if (!_directSound.SupportsFormat(_source.WaveFormat))
                {
                    throw new InvalidOperationException("Invalid WaveFormat. WaveFormat specified by parameter {_source} is not supported by this DirectSound-Device.");
                }
            }

            WaveFormat waveFormat = _source.WaveFormat;
            int        bufferSize = (int)waveFormat.MillisecondsToBytes(_latency);

            _primaryBuffer   = new DirectSoundPrimaryBuffer(_directSound);
            _secondaryBuffer = new DirectSoundSecondaryBuffer(_directSound, waveFormat, bufferSize);
        }
Esempio n. 5
0
 private void SetFrequency(int frequency)
 {
     CheckForInitialize();
     DirectSoundException.Try(_secondaryBuffer.SetFrequency(frequency), "IDirectSoundBuffer", "SetFrequency");
 }
Esempio n. 6
0
 private void SetPan(float pan)
 {
     CheckForInitialize();
     DirectSoundException.Try(_secondaryBuffer.SetPan(pan), "IDirectSoundBuffer", "GetPan");
 }