Example #1
0
        public void OpenFile(string filename)
        {
            Stop();

            Vector3 center = new Vector3(0);

            _waveSource           = CodecFactory.Instance.GetCodec(filename).ToMono();
            _masteringVoice       = _xaudio2.CreateMasteringVoice(XAudio2.DefaultChannels, XAudio2.DefaultSampleRate);
            _streamingSourceVoice = StreamingSourceVoice.Create(_xaudio2, _waveSource, 150);

            object      defaultDevice = _xaudio2.DefaultDevice;
            ChannelMask channelMask;

            if (_xaudio2.Version == XAudio2Version.XAudio2_7)
            {
                var xaudio27      = (XAudio2_7)_xaudio2;
                var deviceDetails = xaudio27.GetDeviceDetails((int)defaultDevice);
                channelMask          = deviceDetails.OutputFormat.ChannelMask;
                _destinationChannels = deviceDetails.OutputFormat.Channels;
            }
            else
            {
                channelMask          = _masteringVoice.ChannelMask;
                _destinationChannels = _masteringVoice.VoiceDetails.InputChannels;
            }
            _sourceChannels = _waveSource.WaveFormat.Channels;

            _x3daudio = new X3DAudioCore(channelMask);

            _listener = new Listener()
            {
                Position    = center,
                OrientFront = new Vector3(0, 0, 1),
                OrientTop   = new Vector3(0, 1, 0),
                Velocity    = new Vector3(0, 0, 0)
            };


            _emitter = new Emitter()
            {
                ChannelCount        = _sourceChannels,
                CurveDistanceScaler = float.MinValue,
                OrientFront         = new Vector3(0, 0, 1),
                OrientTop           = new Vector3(0, 1, 0),
                Position            = new Vector3(0, 0, 0),
                Velocity            = new Vector3(0, 0, 0)
            };


            StreamingSourceVoiceListener.Default.Add(_streamingSourceVoice);
            _streamingSourceVoice.Start();

            _isPlaying = true;
        }
Example #2
0
 protected virtual void Dispose(bool disposing)
 {
     if (!_disposed)
     {
         Stop();
         _masteringVoice.Dispose();
         _masteringVoice = null;
         _xaudio2.Dispose();
         _xaudio2 = null;
     }
     _disposed = true;
 }
Example #3
0
        private void InitializeAudio()
        {
            audio          = XAudio2.Create();
            masteringVoice = audio.CreateMasteringVoice();

            WaveFormat fmt = new WaveFormat {
                ChannelCount = 1
            };

            voice = audio.CreateSourceVoice(fmt);

            voice.VoiceProcessingPassStart += voice_VoiceProcessingPassStart;
            voice.VoiceProcessingPassEnd   += voice_VoiceProcessingPassEnd;
            voice.BufferStart += voice_BufferStart;
            voice.BufferEnd   += voice_BufferEnd;

            Volume.Value = voice.Volume * 100;
        }
Example #4
0
 public XAudio2Out()
 {
     _xaudio2        = XAudio2.XAudio2.CreateXAudio2();
     _masteringVoice = _xaudio2.CreateMasteringVoice();
 }