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; }
protected virtual void Dispose(bool disposing) { if (!_disposed) { Stop(); _masteringVoice.Dispose(); _masteringVoice = null; _xaudio2.Dispose(); _xaudio2 = null; } _disposed = true; }
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; }
public XAudio2Out() { _xaudio2 = XAudio2.XAudio2.CreateXAudio2(); _masteringVoice = _xaudio2.CreateMasteringVoice(); }