private void CreateReverbSubmixVoice() { try { VoiceDetails masterDetails = MasteringVoice.VoiceDetails; SubmixVoiceFlags sendFlags = IsReverbFilterEnabled ? SubmixVoiceFlags.UseFilter : SubmixVoiceFlags.None; ReverbVoice = new SubmixVoice(Device, 1, masterDetails.InputSampleRate, sendFlags, 0); } catch (SharpDXException ex) { throw new AudioException("Error creating reverb submix voice.", ex); } try { reverb = new Reverb(); ReverbVoice.SetEffectChain(new EffectDescriptor(reverb, 1)); ReverbVoice.SetEffectParameters(0, reverbParameters); } catch (SharpDXException ex) { throw new AudioException("Error setting reverb effect.", ex); } }
public Track(XAudio2 xAudio2, Z2Sound baa, Dictionary <Tuple <byte, byte>, Instrument> instrumentTable, Dictionary <int, Sample> sampleTable) { engine = xAudio2; soundData = baa; this.instrumentTable = instrumentTable; this.sampleTable = sampleTable; voiceTable = new Dictionary <byte, NoteData>(); submix = new SubmixVoice(engine); Echo effect = new Echo(); EffectDescriptor effectDescriptor = new EffectDescriptor(effect) { InitialState = true, OutputChannelCount = 2 }; submix.SetEffectChain(effectDescriptor); EchoParameters effectParameter = new EchoParameters { Delay = 160f, Feedback = 0f, WetDryMix = 0f }; submix.SetEffectParameters(0, effectParameter); submix.EnableEffect(0); outputMatrix = new float[2]; Volume = 127; Pitch = 0; Pan = 63; panChanged = false; Bank = 0; Echo = 0; echoChanged = false; Instrument = 0; outputMatrix[0] = (outputMatrix[1] = 0.5f); }