コード例 #1
0
 public override void RevertChanges()
 {
     Filter.RevertChanges();
     Phaser.RevertChanges();
     Flanger.RevertChanges();
     Synth.RevertChanges();
     LoFi.RevertChanges();
     RingModulator.RevertChanges();
     GuitarToBass.RevertChanges();
     SlowGear.RevertChanges();
     Transpose.RevertChanges();
     PitchBend.RevertChanges();
     Robot.RevertChanges();
     VocalDist.RevertChanges();
     Dynamics.RevertChanges();
     Eq.RevertChanges();
     Isolator.RevertChanges();
     Octave.RevertChanges();
     Pan.RevertChanges();
     Tremolo.RevertChanges();
     Slicer.RevertChanges();
     Delay.RevertChanges();
     PanningDelay.RevertChanges();
     TapeEcho.RevertChanges();
     GranularDelay.RevertChanges();
     Roll.RevertChanges();
     Chorus.RevertChanges();
     Reverb.RevertChanges();
 }
コード例 #2
0
 /// <inheritdoc />
 public void Reset()
 {
     Effect1.Reset();
     Effect2.Reset();
     Delay.Reset();
     Reverb.Reset();
 }
コード例 #3
0
        private void ReadFile(object sender, EventArgs e)
        {
            echo   = new Echo(keyboard);
            chorus = new Chorus(keyboard);
            gargle = new Gargle(keyboard);
            reverb = new Reverb(keyboard);

            OpenFileDialog fileDialog = new OpenFileDialog();

            fileDialog.Filter           = "WAV files (*.wav)|*.wav";
            fileDialog.FilterIndex      = 2;
            fileDialog.RestoreDirectory = true;

            if (fileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                for (int i = 0; i < keyboard.AllKeys.Length; ++i)
                {
                    keyboard.AllKeys[i].KeySound = new ASynt.Player.Sound(fileDialog.FileName, true);
                }

                keyboard.keys[0].SetFrequency = (44100 * 261) / 440;
                keyboard.keys[1].SetFrequency = (44100 * 293) / 440;
                keyboard.keys[2].SetFrequency = (44100 * 329) / 440;
                keyboard.keys[3].SetFrequency = (44100 * 349) / 440;
                keyboard.keys[4].SetFrequency = (44100 * 391) / 440;
                keyboard.keys[5].SetFrequency = (44100 * 440) / 440;
                keyboard.keys[6].SetFrequency = (44100 * 493) / 440;

                keyboard.smallKeys[0].SetFrequency = (44100 * 277) / 440;
                keyboard.smallKeys[1].SetFrequency = (44100 * 311) / 440;
                keyboard.smallKeys[2].SetFrequency = (44100 * 369) / 440;
                keyboard.smallKeys[3].SetFrequency = (44100 * 415) / 440;
                keyboard.smallKeys[4].SetFrequency = (44100 * 466) / 440;
            }
        }
コード例 #4
0
        private Reverb CreateReverbFrame(string id3v24FrameID, string id3v23FrameID, string id3v22FrameID, string property, Action validator)
        {
            Reverb reverb = new Reverb();

            Bind(id3v24FrameID, id3v23FrameID, id3v22FrameID, reverb, "TODO", property, validator);
            return(reverb);
        }
コード例 #5
0
ファイル: GameAudio.cs プロジェクト: BlenderCN-Org/Skirmish
        /// <summary>
        /// Enables the reverb effect
        /// </summary>
        private void EnableReverb()
        {
            if (this.ReverbVoice == null)
            {
#if DEBUG
                var reverbEffect = new Reverb(this.device, true);
#else
                var reverbEffect = new Reverb(this.device);
#endif
                using (reverbEffect)
                {
                    var masterDetails = this.MasteringVoice.VoiceDetails;
                    var sendFlags     = this.UseReverbFilter ? SubmixVoiceFlags.UseFilter : SubmixVoiceFlags.None;

                    this.ReverbVoice = new SubmixVoice(
                        this.device,
                        masterDetails.InputChannelCount,
                        masterDetails.InputSampleRate,
                        sendFlags,
                        0);

                    this.ReverbVoice.SetEffectChain(new EffectDescriptor(reverbEffect, masterDetails.InputChannelCount)
                    {
                        InitialState = true,
                    });
                }
            }

            this.ReverbVoice.EnableEffect(0);
        }
コード例 #6
0
ファイル: MyCueBank.cs プロジェクト: Pharap/GetOreMarkersInPB
        public MyCueBank(XAudio2 audioEngine, MyObjectBuilder_CueDefinitions cues)
        {
            m_audioEngine = audioEngine;
            if (cues.Cues.Length > 0)
            {
                InitTransitionCues();
                InitMusicCategories();

                m_cues = new Dictionary <int, MyObjectBuilder_CueDefinition>(cues.Cues.Length);
                InitCues(cues);
                InitCategories();

                InitWaveBank();
                InitVoicePools();

#if DEBUG
                ValidateCues();
#endif //DEBUG

                InitNonLoopableCuesLimitRemoveHelper();

                Reverb reverb = new Reverb();
                m_effectDescriptor = new EffectDescriptor(reverb);
            }
        }
コード例 #7
0
        public void Dispose()
        {
            //#if DEBUG
            //            if (m_voicePools != null)
            //            {
            //                foreach (MySourceVoicePool voicePool in m_voicePools.Values)
            //                {
            //                    MySandboxGame.Log.WriteLine(voicePool.ToString());
            //                }
            //            }
            //#endif //DEBUG

            if (m_waveBank != null)
            {
                m_waveBank.Dispose();
            }
            if (m_reverb != null)
            {
                m_reverb.Dispose();
            }
            m_reverb = null;
            foreach (var vp in m_voicePools)
            {
                // eventual stopping of playing
                vp.Value.StopAll();
            }
            foreach (var vp in m_voicePools)
            {
                vp.Value.Dispose();
            }
            m_voicePools.Clear();
            m_cues.Clear();
        }
コード例 #8
0
 private void AddReverb_Click(object sender, RoutedEventArgs e)
 {
     if (selectedLine?.Line != null)
     {
         var effect = new Reverb();
         selectedLine.Line.AddEffect(effect);
     }
 }
コード例 #9
0
        public ReverbUI(Reverb effect)
        {
            Effect = effect;
            InitializeComponent();

            Volume.Value   = effect.Volume;
            Delay.Value    = effect.Delay;
            Feedback.Value = effect.Feedback;
            Pan.Value      = effect.Pan;
        }
コード例 #10
0
        private void soundGenerator(object sender, EventArgs e)
        {
            echo   = new Echo(keyboard);
            chorus = new Chorus(keyboard);
            gargle = new Gargle(keyboard);
            reverb = new Reverb(keyboard);

            SoundGenerator sg = new SoundGenerator(keyboard);

            sg.ShowDialog();
        }
コード例 #11
0
        public void SfxSetReverb(Reverb reverb)
        {
            PRESET            preset = new PRESET();
            REVERB_PROPERTIES rp     = preset.OFF();

            switch (reverb)
            {
            case Reverb.Room:
                rp = preset.STONEROOM();
                break;

            case Reverb.Cave:
                rp = preset.CAVE();
                break;

            case Reverb.Arena:
                rp = preset.ARENA();
                break;

            case Reverb.Forest:
                rp = preset.FOREST();
                break;

            case Reverb.Mountains:
                rp = preset.MOUNTAINS();
                break;

            case Reverb.Underwater:
                rp = preset.UNDERWATER();
                break;

            case Reverb.Dungeon:
                rp = preset.STONECORRIDOR();
                break;

            case Reverb.CHall:
                rp = preset.CONCERTHALL();
                break;

            case Reverb.Quarry:
                rp = preset.QUARRY();
                break;

            case Reverb.Plain:
                rp = preset.PLAIN();
                break;
            }

            fSystem.setReverbAmbientProperties(ref rp);
            fSystem.setReverbProperties(ref rp);
        }
コード例 #12
0
 /// <inheritdoc />
 public void CopyFrom(IPatch patch)
 {
     if (patch is Patch p)
     {
         Effect1.CopyFrom(p.Effect1);
         Effect2.CopyFrom(p.Effect2);
         Delay.CopyFrom(p.Delay);
         Reverb.CopyFrom(p.Reverb);
     }
     else
     {
         throw new NotSupportedException("Copying from that type is not supported");
     }
 }
コード例 #13
0
        /// <summary>
        ///     Copy data from sysex dumps
        /// </summary>
        public void CopyFrom(Dictionary <Effect, SysExMessage> effects)
        {
            // Skipping 12 bytes from front because it's header and address offset
            // Skipping 2 bytes from end because it's checksum and sysex footer

            var effect1Bytes = effects[Effect.Effect1].GetBytes().Skip(12).ToArray();
            var effect2Bytes = effects[Effect.Effect2].GetBytes().Skip(12).ToArray();
            var delayBytes   = effects[Effect.Delay].GetBytes().Skip(12).ToArray();
            var reverbBytes  = effects[Effect.Reverb].GetBytes().Skip(12).ToArray();

            Effect1.CopyFrom(effect1Bytes.Take(effect1Bytes.Length - 2).ToArray());
            Effect2.CopyFrom(effect2Bytes.Take(effect2Bytes.Length - 2).ToArray());
            Delay.CopyFrom(delayBytes.Take(delayBytes.Length - 2).ToArray());
            Reverb.CopyFrom(reverbBytes.Take(reverbBytes.Length - 2).ToArray());
        }
コード例 #14
0
        public DeckViewModel()
        {
            _progressBarTimer          = new Timer(100);
            _progressBarTimer.Elapsed += (s, e) =>
            {
                if (!IsDragging)
                {
                    OnPropertyChanged(nameof(Position));
                }
            };

            Player.MediaEnded += (s, e) =>
            {
                Player.Stop();
                Position = Player.Reverse ? Player.Duration.TotalSeconds : 0;
                _progressBarTimer.Stop();
            };

            Reverb.ApplyOn(Player);
            Distortion.ApplyOn(Player);
            Echo.ApplyOn(Player);
            AutoWah.ApplyOn(Player);
            Rotate.ApplyOn(Player);

            #region Commands
            PlayCommand = new DelegateCommand(Play);
            StopCommand = new DelegateCommand(Stop);

            SoftDistortionCommand     = new DelegateCommand(Distortion.Soft);
            MediumDistortionCommand   = new DelegateCommand(Distortion.Medium);
            HardDistortionCommand     = new DelegateCommand(Distortion.Hard);
            VeryHardDistortionCommand = new DelegateCommand(Distortion.VeryHard);

            ManyEchoesCommand    = new DelegateCommand(Echo.ManyEchoes);
            ReverseEchoesCommand = new DelegateCommand(Echo.ReverseEchoes);
            RoboticEchoesCommand = new DelegateCommand(Echo.RoboticVoice);
            SmallEchoesCommand   = new DelegateCommand(Echo.Small);

            SlowAutoWahCommand   = new DelegateCommand(AutoWah.Slow);
            FastAutoWahCommand   = new DelegateCommand(AutoWah.Fast);
            HiFastAutoWahCommand = new DelegateCommand(AutoWah.HiFast);

            ResetPitchCommand     = new DelegateCommand(() => Player.Pitch = 0);
            ResetFrequencyCommand = new DelegateCommand(() => Player.Frequency = 44100);
            ResetPanCommand       = new DelegateCommand(() => Player.Balance = 0);
            ResetTempoCommand     = new DelegateCommand(() => Player.Tempo = 0);
            #endregion
        }
コード例 #15
0
        public MainForm()
        {
            InitializeComponent();
            keyboard = new Keyboard.Keyboard(this, new Point(20, 20));
            echo     = new Echo(keyboard);
            chorus   = new Chorus(keyboard);
            gargle   = new Gargle(keyboard);
            reverb   = new Reverb(keyboard);

            List <int> l = new List <int>();

            for (int i = 0; i < 360; ++i)
            {
                l.Add((int)(Math.Sin(Math.PI * i / 180.0) * 10000));
            }
        }
コード例 #16
0
        public PlayForm()
        {
            InitializeComponent();

            // Initalize XAudio2
            xaudio2        = new XAudio2(XAudio2Flags.None, ProcessorSpecifier.DefaultProcessor);
            masteringVoice = new MasteringVoice(xaudio2);

            var waveFormat = new WaveFormat(44100, 32, 2);

            sourceVoice = new SourceVoice(xaudio2, waveFormat);

            int        bufferSize = waveFormat.ConvertLatencyToByteSize(60000);
            DataStream dataStream = new DataStream(bufferSize, true, true);

            // Prepare the initial sound to modulate
            int numberOfSamples = bufferSize / waveFormat.BlockAlign;

            for (int i = 0; i < numberOfSamples; i++)
            {
                float value = (float)(Math.Cos(2 * Math.PI * 220.0 * i / waveFormat.SampleRate) * 0.5);
                dataStream.Write(value);
                dataStream.Write(value);
            }
            dataStream.Position = 0;

            audioBuffer = new AudioBuffer
            {
                Stream     = dataStream,
                Flags      = BufferFlags.EndOfStream,
                AudioBytes = bufferSize,
                LoopBegin  = 0,
                LoopLength = numberOfSamples,
                LoopCount  = AudioBuffer.LoopInfinite
            };

            // Set the effect on the source
            ModulatorEffect     = new ModulatorEffect();
            modulatorDescriptor = new EffectDescriptor(ModulatorEffect);
            reverb           = new Reverb();
            effectDescriptor = new EffectDescriptor(reverb);
            //sourceVoice.SetEffectChain(modulatorDescriptor, effectDescriptor);
            sourceVoice.SetEffectChain(modulatorDescriptor);
            //sourceVoice.EnableEffect(0);

            this.Closed += new EventHandler(PlayForm_Closed);
        }
コード例 #17
0
        public MyCueBank(XAudio2 audioEngine, ListReader <MySoundData> cues)
        {
            m_audioEngine = audioEngine;
            if (cues.Count > 0)
            {
                m_cues = new Dictionary <MyCueId, MySoundData>(cues.Count, MyCueId.Comparer);
                InitTransitionCues();
                InitCues(cues);
                InitCategories();

                InitWaveBank();
                InitVoicePools();

                m_reverb           = new Reverb();
                m_effectDescriptor = new EffectDescriptor(m_reverb);
            }
        }
コード例 #18
0
ファイル: PlayForm.cs プロジェクト: MaybeMars/SharpDX-Samples
        public PlayForm()
        {
            InitializeComponent();

            // Initalize XAudio2
            xaudio2 = new XAudio2(XAudio2Flags.None, ProcessorSpecifier.DefaultProcessor);
            masteringVoice = new MasteringVoice(xaudio2);

            var waveFormat = new WaveFormat(44100, 32, 2);
             sourceVoice = new SourceVoice(xaudio2, waveFormat);

            int bufferSize = waveFormat.ConvertLatencyToByteSize(60000);
            DataStream dataStream = new DataStream(bufferSize, true, true);

            // Prepare the initial sound to modulate
            int numberOfSamples = bufferSize / waveFormat.BlockAlign;
            for (int i = 0; i < numberOfSamples; i++)
            {
                float value = (float)(Math.Cos(2 * Math.PI * 220.0 * i / waveFormat.SampleRate) * 0.5);
                dataStream.Write(value);
                dataStream.Write(value);
            }
            dataStream.Position = 0;

            audioBuffer = new AudioBuffer
                              {
                                  Stream = dataStream,
                                  Flags = BufferFlags.EndOfStream,
                                  AudioBytes = bufferSize,
                                  LoopBegin = 0,
                                  LoopLength = numberOfSamples,
                                  LoopCount = AudioBuffer.LoopInfinite
                              };

            // Set the effect on the source
            ModulatorEffect = new ModulatorEffect();
            modulatorDescriptor = new EffectDescriptor(ModulatorEffect);
            reverb = new Reverb(xaudio2);
            effectDescriptor = new EffectDescriptor(reverb);
            //sourceVoice.SetEffectChain(modulatorDescriptor, effectDescriptor);
            sourceVoice.SetEffectChain(modulatorDescriptor);
            //sourceVoice.EnableEffect(0);

            this.Closed += new EventHandler(PlayForm_Closed);
        }
コード例 #19
0
ファイル: Program.cs プロジェクト: nernst/synth
        /// <summary>
        /// SharpDX XAudio2 sample. Plays a generated sound with some reverb.
        /// </summary>
        static void Main(string[] args)
        {
            var xaudio2        = new XAudio2();
            var masteringVoice = new MasteringVoice(xaudio2);

            var waveFormat  = new WaveFormat(44100, 32, 2);
            var sourceVoice = new SourceVoice(xaudio2, waveFormat);

            int bufferSize = waveFormat.ConvertLatencyToByteSize(60000);
            var dataStream = new DataStream(bufferSize, true, true);

            int numberOfSamples = bufferSize / waveFormat.BlockAlign;

            for (int i = 0; i < numberOfSamples; i++)
            {
                // cos(2 * PI * (220 + 4 * cos(2 * PI * 10 * t)) * t) * 0.5
                double vibrato = Math.Cos(2 * Math.PI * 10.0 * i / waveFormat.SampleRate);
                float  value   = (float)(Math.Cos(2 * Math.PI * (220.0 + 4.0 * vibrato) * i / waveFormat.SampleRate) * 0.5);
                dataStream.Write(value);
                dataStream.Write(value);
            }
            dataStream.Position = 0;

            var audioBuffer = new AudioBuffer {
                Stream = dataStream, Flags = BufferFlags.EndOfStream, AudioBytes = bufferSize
            };

            var reverb           = new Reverb(xaudio2);
            var effectDescriptor = new EffectDescriptor(reverb);

            sourceVoice.SetEffectChain(effectDescriptor);
            sourceVoice.EnableEffect(0);

            sourceVoice.SubmitSourceBuffer(audioBuffer, null);

            sourceVoice.Start();

            Console.WriteLine("Play sound");
            for (int i = 0; i < 60; i++)
            {
                Console.Write(".");
                Console.Out.Flush();
                Thread.Sleep(1000);
            }
        }
コード例 #20
0
ファイル: AudioManager.cs プロジェクト: loreggia/SharpDX
        private void DisposeCore()
        {
            if (x3DAudio != null)
            {
                x3DAudio = null;
            }

            if (ReverbVoice != null)
            {
                ReverbVoice.DestroyVoice();
                ReverbVoice.Dispose();
                ReverbVoice = null;
                reverb.Dispose();
                reverb = null;
            }

            IsReverbEffectEnabled = false;

            if (MasteringVoice != null)
            {
                MasteringVoice.DestroyVoice();
                MasteringVoice.Dispose();
                MasteringVoice = null;
            }

            if (masteringLimiter != null)
            {
                masteringLimiter.Dispose();
                masteringLimiter = null;
            }

            IsMasteringLimiterEnabled = false;

            if (Device != null)
            {
                Device.StopEngine();
                Device.Dispose();
                Device = null;
            }
        }
コード例 #21
0
ファイル: Program.cs プロジェクト: Kammikazy/SharpDX-Samples
        /// <summary>
        /// SharpDX XAudio2 sample. Plays a generated sound with some reverb.
        /// </summary>
        static void Main(string[] args)
        {
            var xaudio2 = new XAudio2();
            var masteringVoice = new MasteringVoice(xaudio2);

            var waveFormat = new WaveFormat(44100, 32, 2);
            var sourceVoice = new SourceVoice(xaudio2, waveFormat);

            int bufferSize = waveFormat.ConvertLatencyToByteSize(60000);
            var dataStream = new DataStream(bufferSize, true, true);

            int numberOfSamples = bufferSize/waveFormat.BlockAlign;
            for (int i = 0; i < numberOfSamples; i++)
            {
                double vibrato = Math.Cos(2 * Math.PI * 10.0 * i / waveFormat.SampleRate);
                float value = (float) (Math.Cos(2*Math.PI*(220.0 + 4.0*vibrato)*i/waveFormat.SampleRate)*0.5); 
                dataStream.Write(value);
                dataStream.Write(value);
            }
            dataStream.Position = 0;

            var audioBuffer = new AudioBuffer {Stream = dataStream, Flags = BufferFlags.EndOfStream, AudioBytes = bufferSize};

            var reverb = new Reverb();
            var effectDescriptor = new EffectDescriptor(reverb);
            sourceVoice.SetEffectChain(effectDescriptor);
            sourceVoice.EnableEffect(0);

            sourceVoice.SubmitSourceBuffer(audioBuffer, null);

            sourceVoice.Start();

            Console.WriteLine("Play sound");
            for(int i = 0; i < 60; i++)
            {
                Console.Write(".");
                Console.Out.Flush();
                Thread.Sleep(1000);
            }
        }
コード例 #22
0
        private void pianoSound(object sender, EventArgs e)
        {
            echo   = new Echo(keyboard);
            chorus = new Chorus(keyboard);
            gargle = new Gargle(keyboard);
            reverb = new Reverb(keyboard);

            for (int i = 0; i < keyboard.keys.Length; ++i)
            {
                int l = i; //dodawanie do literki
                if ('c' + l > 'g')
                {
                    l -= 7;
                }
                keyboard.keys[i].KeySound = new ASynt.Player.Sound(@"Piano\" + (char)('c' + l), false);
            }

            keyboard.smallKeys[0].KeySound = new ASynt.Player.Sound(@"Piano\c#", false);
            keyboard.smallKeys[1].KeySound = new ASynt.Player.Sound(@"Piano\d#", false);
            keyboard.smallKeys[2].KeySound = new ASynt.Player.Sound(@"Piano\f#", false);
            keyboard.smallKeys[3].KeySound = new ASynt.Player.Sound(@"Piano\g#", false);
            keyboard.smallKeys[4].KeySound = new ASynt.Player.Sound(@"Piano\a#", false);
        }
コード例 #23
0
 public override void ApplyChanges <T>(T model)
 {
     if (model is SettingsMemoryFxModel memoryFx)
     {
         Filter.ApplyChanges(memoryFx);
         Phaser.ApplyChanges(memoryFx);
         Flanger.ApplyChanges(memoryFx);
         Synth.ApplyChanges(memoryFx);
         LoFi.ApplyChanges(memoryFx);
         RingModulator.ApplyChanges(memoryFx);
         GuitarToBass.ApplyChanges(memoryFx);
         SlowGear.ApplyChanges(memoryFx);
         Transpose.ApplyChanges(memoryFx);
         PitchBend.ApplyChanges(memoryFx);
         Robot.ApplyChanges(memoryFx);
         VocalDist.ApplyChanges(memoryFx);
         Dynamics.ApplyChanges(memoryFx);
         Eq.ApplyChanges(memoryFx);
         Isolator.ApplyChanges(memoryFx);
         Octave.ApplyChanges(memoryFx);
         Pan.ApplyChanges(memoryFx);
         Tremolo.ApplyChanges(memoryFx);
         Slicer.ApplyChanges(memoryFx);
         Delay.ApplyChanges(memoryFx);
         PanningDelay.ApplyChanges(memoryFx);
         TapeEcho.ApplyChanges(memoryFx);
         GranularDelay.ApplyChanges(memoryFx);
         Roll.ApplyChanges(memoryFx);
         Chorus.ApplyChanges(memoryFx);
         Reverb.ApplyChanges(memoryFx);
     }
     else
     {
         throw new ArgumentException("Model must be of type SettingsMemoryFxModel.");
     }
 }
コード例 #24
0
ファイル: AudioManager.cs プロジェクト: loreggia/SharpDX
        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);
            }
        }
コード例 #25
0
        /// <summary>
        /// Initializes a new instance of the <see cref="FrameContainer"/> class.
        /// </summary>
        internal FrameContainer()
        {
            _frameBinder   = new FrameBinder(this);
            _unknownFrames = new List <UnknownFrame>();

            _id3v24SingleOccurrenceFrames   = new Dictionary <string, IFrame>();
            _id3v24MultipleOccurrenceFrames = new Dictionary <string, IBindingList>();
            _id3v23SingleOccurrenceFrames   = new Dictionary <string, IFrame>();
            _id3v23MultipleOccurrenceFrames = new Dictionary <string, IBindingList>();
            _id3v22SingleOccurrenceFrames   = new Dictionary <string, IFrame>();
            _id3v22MultipleOccurrenceFrames = new Dictionary <string, IBindingList>();

            _id3v24FrameAliases = new Dictionary <string, string>();
            _id3v23FrameAliases = new Dictionary <string, string>();

            // Binding lists
            m_AttachedPictureList           = new AttachedPictureBindingList();
            m_UserDefinedUrlList            = new UserDefinedUrlBindingList();
            m_CommentsList                  = new CommentsBindingList();
            m_iTunesCommentsList            = new CommentsBindingList();
            m_CommercialInfoUrlList         = new UrlBindingList("WCOM", "WCOM", "WCM");
            m_ArtistUrlList                 = new UrlBindingList("WOAR", "WOAR", "WAR");
            m_UserDefinedTextList           = new UserDefinedTextBindingList();
            m_RelativeVolumeAdjustmentList  = new RelativeVolumeAdjustmentBindingList();
            m_UnsynchronizedLyricsList      = new UnsynchronizedLyricsBindingList();
            m_GeneralEncapsulatedObjectList = new GeneralEncapsulatedObjectBindingList();
            m_UniqueFileIdentifierList      = new UniqueFileIdentifierBindingList();
            m_PrivateFrameList              = new PrivateFrameBindingList();
            m_PopularimeterList             = new PopularimeterBindingList();
            m_TermsOfUseList                = new TermsOfUseBindingList();
            m_LinkedInformationList         = new LinkedInformationBindingList();
            m_CommercialInfoList            = new CommercialBindingList();
            m_EncryptionMethodList          = new EncryptionMethodBindingList();
            m_GroupIdentificationList       = new GroupIdentificationBindingList();
            m_SignatureList                 = new SignatureBindingList();
            m_AudioEncryptionList           = new AudioEncryptionBindingList();
            m_EncryptedMetaFrameList        = new EncryptedMetaFrameBindingList();
            m_SynchronizedLyricsList        = new SynchronizedTextBindingList();
            m_EqualizationList              = new EqualizationListBindingList();
            m_AudioTextList                 = new AudioTextBindingList();

            // Add binding lists to multiple occurence frames dictionary
            AddMultipleOccurrenceFrame("APIC", "APIC", "PIC", m_AttachedPictureList);
            AddMultipleOccurrenceFrame("WXXX", "WXXX", "WXX", m_UserDefinedUrlList);
            AddMultipleOccurrenceFrame("COMM", "COMM", "COM", m_CommentsList);
            AddMultipleOccurrenceFrame(null, null, null, m_iTunesCommentsList);
            AddMultipleOccurrenceFrame("WCOM", "WCOM", "WCM", m_CommercialInfoUrlList);
            //"CommercialInfoUrl", new MethodInvoker(ValidateCommercialInfoUrl)); // TODO
            AddMultipleOccurrenceFrame("WOAR", "WOAR", "WAR", m_ArtistUrlList);
            AddMultipleOccurrenceFrame("TXXX", "TXXX", "TXX", m_UserDefinedTextList);
            AddMultipleOccurrenceFrame("RVA2", "RVAD", "RVA", m_RelativeVolumeAdjustmentList);
            AddMultipleOccurrenceFrame("USLT", "USLT", "ULT", m_UnsynchronizedLyricsList);
            AddMultipleOccurrenceFrame("GEOB", "GEOB", "GEO", m_GeneralEncapsulatedObjectList);
            AddMultipleOccurrenceFrame("UFID", "UFID", "UFI", m_UniqueFileIdentifierList);
            AddMultipleOccurrenceFrame("PRIV", "PRIV", null, m_PrivateFrameList);
            AddMultipleOccurrenceFrame("POPM", "POPM", "POP", m_PopularimeterList);
            AddMultipleOccurrenceFrame("USER", "USER", null, m_TermsOfUseList);
            AddMultipleOccurrenceFrame("LINK", "LINK", "LNK", m_LinkedInformationList);
            //"ArtistUrl", new MethodInvoker(ValidateArtistUrl)); // TODO
            AddMultipleOccurrenceFrame("AENC", "AENC", "CRA", m_AudioEncryptionList);
            AddMultipleOccurrenceFrame(null, null, "CRM", m_EncryptedMetaFrameList); // replaced in ID3v2.3 and ID3v2.4 with encryptable frames
            AddMultipleOccurrenceFrame("SYLT", "SYLT", "SLT", m_SynchronizedLyricsList);
            AddMultipleOccurrenceFrame("EQU2", "EQUA", "EQU", m_EqualizationList);   // todo: not a multi-occur frame in 2.2/2.3
            AddMultipleOccurrenceFrame("COMR", "COMR", null, m_CommercialInfoList);  // todo: not a multi-occur in 2.3
            AddMultipleOccurrenceFrame("ENCR", "ENCR", null, m_EncryptionMethodList);
            AddMultipleOccurrenceFrame("GRID", "GRID", null, m_GroupIdentificationList);
            AddMultipleOccurrenceFrame("SIGN", "SIGN", null, m_SignatureList); // todo: not in ID3v2.3
            AddMultipleOccurrenceFrame("ATXT", "ATXT", null, m_AudioTextList);

            // Text frames
            m_Title        = CreateTextFrame("TIT2", "TIT2", "TT2", "Title", null);
            m_Album        = CreateTextFrame("TALB", "TALB", "TAL", "Album", null);
            m_EncodedByWho = CreateTextFrame("TENC", "TENC", "TEN", "EncodedByWho", null);
            m_Artist       = CreateTextFrame("TPE1", "TPE1", "TP1", "Artist", null);
            m_AlbumArtist  = CreateTextFrame("TPE2", "TPE2", "TP2", "AlbumArtist", null);
            // Note: TYER is not a valid frame in ID3v2.4, but many ID3v2.4 tags contain this frame anyway.
            // It's here to allow reading, but should not be written back (use TDRL instead).
            m_Year = CreateTextFrame("TYER", "TYER", "TYE", "Year", ValidateYear);
            // Note: TDAT is not a valid frame in ID3v2.4, but many ID3v2.4 tags contain this frame anyway.
            // It's here to allow reading, but should not be written back (use TDRC instead).
            m_DateRecorded = CreateTextFrame("TDAT", "TDAT", "TDA", "DateRecorded", ValidateDateRecorded);
            // Note: TIME is not a valid frame in ID3v2.4, but many ID3v2.4 tags contain this frame anyway.
            // It's here to allow reading, but should not be written back (use TDRC instead).
            m_TimeRecorded              = CreateTextFrame("TIME", "TIME", "TIM", "TimeRecorded", ValidateTimeRecorded);
            m_Genre                     = CreateTextFrame("TCON", "TCON", "TCO", "Genre", null);
            m_Composer                  = CreateTextFrame("TCOM", "TCOM", "TCM", "Composer", null);
            m_OriginalArtist            = CreateTextFrame("TOPE", "TOPE", "TOA", "OriginalArtist", null);
            m_Copyright                 = CreateTextFrame("TCOP", "TCOP", "TCR", "Copyright", ValidateCopyright);
            m_RemixedBy                 = CreateTextFrame("TPE4", "TPE4", "TP4", "RemixedBy", null);
            m_Publisher                 = CreateTextFrame("TPUB", "TPUB", "TPB", "Publisher", null);
            m_InternetRadioStationName  = CreateTextFrame("TRSN", "TRSN", null, "InternetRadioStationName", null);
            m_InternetRadioStationOwner = CreateTextFrame("TRSO", "TRSO", null, "InternetRadioStationOwner", null);
            //m_Accompaniment = CreateTextFrame("TPE2", "TPE2", "TP2", "Accompaniment", null);
            m_Conductor        = CreateTextFrame("TPE3", "TPE3", "TP3", "Conductor", null);
            m_Lyricist         = CreateTextFrame("TEXT", "TEXT", "TXT", "Lyricist", null);
            m_OriginalLyricist = CreateTextFrame("TOLY", "TOLY", "TOL", "OriginalLyricist", null);
            m_TrackNumber      = CreateTextFrame("TRCK", "TRCK", "TRK", "TrackNumber", ValidateTrackNumber);
            m_BPM             = CreateTextFrame("TBPM", "TBPM", "TBP", "BPM", ValidateBPM);
            m_FileType        = CreateTextFrame("TFLT", "TFLT", "TFT", "FileType", null);
            m_DiscNumber      = CreateTextFrame("TPOS", "TPOS", "TPA", "DiscNumber", ValidateDiscNumber);
            m_EncoderSettings = CreateTextFrame("TSSE", "TSSE", "TSS", "EncoderSettings", null);
            m_ISRC            = CreateTextFrame("TSRC", "TSRC", "TRC", "ISRC", ValidateISRC);
            // Note: TCMP/TCP is an unofficial frame.  Used by iTunes and other taggers.
            m_IsPartOfCompilation = CreateTextFrame("TCMP", "TCMP", "TCP", "IsPartOfCompilation", null);
            // TDRL is not technically supported in ID3v2.3
            m_ReleaseTimestamp = CreateTextFrame("TDRL", "TDRL", null, "ReleaseTimestamp", ValidateReleaseTimestamp);
            // TDRC is not technically supported in ID3v2.3
            m_RecordingTimestamp = CreateTextFrame("TDRC", "TDRC", null, "RecordingTimestamp", ValidateRecordingTimestamp);
            // TDOR is not technically supported in ID3v2.3
            m_OriginalReleaseTimestamp  = CreateTextFrame("TDOR", "TDOR", null, "OriginalReleaseTimestamp", null /*todo:new MethodInvoker(ValidateOriginalReleaseTimestamp)*/);
            m_PlaylistDelayMilliseconds = CreateTextFrame("TDLY", "TDLY", "TDY", "PlaylistDelayMilliseconds", null);
            m_InitialKey = CreateTextFrame("TKEY", "TKEY", "TKE", "InitialKey", null /*TODO: new MethodInvoker(ValidateInitialKey)*/);
            // TDEN is not technically supported in ID3v2.3
            m_EncodingTimestamp = CreateTextFrame("TDEN", "TDEN", null, "EncodingTimestamp", null /*TODO*/);
            // TDTG is not technically supported in ID3v2.3
            m_TaggingTimestamp = CreateTextFrame("TDTG", "TDTG", null, "TaggingTimestamp", null /*TODO*/);
            m_ContentGroup     = CreateTextFrame("TIT1", "TIT1", "TT1", "ContentGroup", null);
            // TMOO is not technically supported in ID3v2.3
            m_Mood = CreateTextFrame("TMOO", "TMOO", null, "Mood", null);
            m_LengthMilliseconds = CreateTextFrame("TLEN", "TLEN", "TLE", "LengthMilliseconds", null);
            m_MediaType          = CreateTextFrame("TMED", "TMED", "TMT", "MediaType", null);
            // TODO: technically not supported in ID3v2.4, but probably written by some impl. anyway
            m_FileSizeExcludingTag = CreateTextFrame(null, "TSIZ", "TSI", "FileSizeExcludingTag", null);
            // Not technically in ID3v2.4
            m_OriginalReleaseYear = CreateTextFrame("TORY", "TORY", "TOR", "OriginalReleaseYear", null /*TODO*/);
            m_OriginalSourceTitle = CreateTextFrame("TOAL", "TOAL", "TOT", "OriginalSourceTitle", null);
            m_OriginalFileName    = CreateTextFrame("TOFN", "TOFN", "TOF", "OriginalFileName", null);
            m_FileOwnerName       = CreateTextFrame("TOWN", "TOWN", null, "FileOwnerName", null);
            // Not technically in ID3v2.4
            m_RecordingDates = CreateTextFrame("TRDA", "TRDA", "TRD", "RecordingDates", null /*TODO*/);
            m_Subtitle       = CreateTextFrame("TIT3", "TIT3", "TT3", "Subtitle", null);
            // Technically only supported in ID3v2.4, but some ID3v2.3 implementations use this frame
            m_AlbumSortOrder = CreateTextFrame("TSOA", "TSOA", null, "AlbumSortOrder", null);
            // Technically only supported in ID3v2.4, but some ID3v2.3 implementations use this frame
            m_ArtistSortOrder = CreateTextFrame("TSOP", "TSOP", null, "ArtistSortOrder", null);
            // Technically only supported in ID3v2.4, but some ID3v2.3 implementations use this frame
            m_TitleSortOrder = CreateTextFrame("TSOT", "TSOT", null, "TitleSortOrder", null);
            // Technically only supported in ID3v2.4, but some ID3v2.3 implementations use this frame
            m_ProducedNotice = CreateTextFrame("TPRO", "TPRO", null, "ProducedNotice", null /*todo - same as copyright validation*/);
            // Technically only supported in ID3v2.4, but some ID3v2.3 implementations use this frame
            m_SetSubtitle               = CreateTextFrame("TSST", "TSST", null, "SetSubtitle", null);
            m_PodcastSeriesCategory     = CreateTextFrame("TCAT", "TCAT", null, "SeriesCategory", null);
            m_PodcastEpisodeDescription = CreateTextFrame("TDES", "TDES", null, "EpisodeDescription", null);
            m_PodcastEpisodeUrl         = CreateTextFrame("TGID", "TGID", null, "EpisodeUrl", null);
            m_PodcastFeedUrl            = CreateTextFrame("WFED", "WFED", null, "PodcastFeedUrl", null);

            m_PositionSynchronization = CreatePositionSynchronizationFrame("POSS", "POSS", null, "PositionSynchronization", null);
            m_Ownership             = CreateOwnershipFrame("OWNE", "OWNE", null, "Ownership", null);
            m_RecommendedBufferSize = CreateRecommendedBufferSizeFrame("RBUF", "RBUF", "BUF", "RecommendedBufferSize", null /*todo*/);
            m_InvolvedPersonList    = CreateInvolvedPersonListFrame("TIPL", "IPLS", "IPL", "InvolvedPersonList", null /*TODO - needs validation?*/);
            m_Languages             = CreateLanguageFrame("TLAN", "TLAN", "TLA", "Languages", null);
            m_MusicCDIdentifier     = CreateMusicCDIdentifierFrame("MCDI", "MCDI", "MCI", "MusicCDIdentifier", null /*TODO?*/);
            m_EventTiming           = CreateEventTimingFrame("ETCO", "ETCO", "ETC", "EventTiming", null /*TODO - needs validation?*/);
            m_MpegLookupTable       = CreateMpegLookupTableFrame("MLLT", "MLLT", "MLL", "MpegLookupTable", null);
            m_Reverb = CreateReverbFrame("RVRB", "RVRB", "REV", "Reverb", null);
            m_SynchronizedTempoCodes = CreateSynchronizedTempoCodesFrame("SYTC", "SYTC", "STC", "SynchronizedTempoCodeList", null);
            m_SeekNextTag            = CreateSeekFrame("SEEK", "SEEK", null, "SeekNextTag", null);
            // Technically only supported in ID3v2.4, but some ID3v2.3 implementations use this frame
            m_MusicianCreditsList = CreateMusicianCreditsListFrame("TMCL", "TMCL", null, "MusicianCreditsList", null);
            m_AudioSeekPointIndex = CreateAudioSeekPointIndexFrame("ASPI", "ASPI", null, "AudioSeekPointIndex", null);
            m_PlayCount           = CreateFrame <PlayCount>("PCNT", "PCNT", "CNT", "PlayCount");
            m_IsPodcast           = CreateFrame <Podcast>("PCST", "PCST", "PCS", "Podcast");

            // TODO: TYER->TDRL, TDAT,TIME->TDRC (in setters, not here)

            // URL frames
            m_CopyrightUrl            = CreateUrlFrame("WCOP", "WCOP", "WCP", "CopyrightUrl", ValidateCopyrightUrl);
            m_AudioFileUrl            = CreateUrlFrame("WOAF", "WOAF", "WAF", "AudioFileUrl", ValidateAudioFileUrl);
            m_AudioSourceUrl          = CreateUrlFrame("WOAS", "WOAS", "WAS", "AudioSourceUrl", ValidateAudioSourceUrl);
            m_InternetRadioStationUrl = CreateUrlFrame("WORS", "WORS", null, "InternetRadioStationUrl", ValidateInternetRadioStationUrl);
            m_PaymentUrl   = CreateUrlFrame("WPAY", "WPAY", null, "PaymentUrl", ValidatePaymentUrl);
            m_PublisherUrl = CreateUrlFrame("WPUB", "WPUB", "WPB", "PublisherUrl", ValidatePublisherUrl);

            // Frame aliases - handles incorrectly named frames

            // ID3v2.4 (Bad frame, Good frame)
            _id3v24FrameAliases.Add("RVAD", "RVA2");
            _id3v24FrameAliases.Add("IPLS", "TIPL");
            _id3v24FrameAliases.Add("EQUA", "EQU2");
            // ID3v2.3 (Bad frame, Good frame)
            _id3v23FrameAliases.Add("RVA2", "RVAD");
            _id3v23FrameAliases.Add("TIPL", "IPLS");
            _id3v23FrameAliases.Add("EQU2", "EQUA");
        }
コード例 #26
0
ファイル: MyXAudio2.cs プロジェクト: rem02/SpaceEngineers
        private void StartEngine()
        {
            if (m_audioEngine != null)
            {
                DisposeVoices();
                m_audioEngine.CriticalError -= m_audioEngine_CriticalError;
                m_audioEngine.Dispose();
            }

            // Init/reinit engine
            m_audioEngine = new XAudio2(XAudio2Version.Version27);

            // A way to disable SharpDX callbacks
            //var meth = m_audioEngine.GetType().GetMethod("UnregisterForCallbacks_", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance);
            //var callbacks = m_audioEngine.GetType().GetField("engineShadowPtr", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
            //meth.Invoke((object)m_audioEngine, new object[] { callbacks.GetValue(m_audioEngine) });

            m_audioEngine.CriticalError += m_audioEngine_CriticalError;
            m_lastDeviceCount = m_audioEngine.DeviceCount;


            m_deviceNumber = 0;
            while (true) //find first non com device
            {
                try
                {
                    m_deviceDetails = m_audioEngine.GetDeviceDetails(m_deviceNumber);
                    if (m_deviceDetails.Role == DeviceRole.DefaultCommunicationsDevice)
                    {
                        m_deviceNumber++;
                        if (m_deviceNumber == m_audioEngine.DeviceCount)
                        {
                            m_deviceNumber--;
                            break;
                        }
                    }
                    else
                        break;
                }
                catch(Exception e)
                {
                    MyLog.Default.WriteLine(string.Format("Failed to get device details.\n\tdevice no.: {0}\n\tdevice count: {1}",m_deviceNumber, m_audioEngine.DeviceCount),LoggingOptions.AUDIO);
                    MyLog.Default.WriteLine(e.ToString());
                    m_deviceNumber = 0;
                    m_deviceDetails = m_audioEngine.GetDeviceDetails(m_deviceNumber);
                    break;
                }
            }

            m_masterVoice = new MasteringVoice(m_audioEngine, XAudio2.DefaultChannels, XAudio2.DefaultSampleRate, m_deviceNumber);
            
            if (m_useVolumeLimiter)
            {
                var limiter = new SharpDX.XAPO.Fx.MasteringLimiter(m_audioEngine);
                var param = limiter.Parameter;
                param.Loudness = 0;
                limiter.Parameter = param;
                //TODO: this throws exception in 3.0.1 version
                var effectDescriptor = new EffectDescriptor(limiter);
                m_masterVoice.SetEffectChain(effectDescriptor);
                m_soundLimiterReady = true;
                m_masterVoice.DisableEffect(0);
                //m_masterVoice.EnableEffect(0);
                //limiter.Dispose();
            }

            m_calculateFlags = CalculateFlags.Matrix | CalculateFlags.Doppler;
            if ((m_deviceDetails.OutputFormat.ChannelMask & Speakers.LowFrequency) != 0)
            {
                m_calculateFlags |= CalculateFlags.RedirectToLfe;
            }

			var masterDetails = m_masterVoice.VoiceDetails;
            m_gameAudioVoice = new SubmixVoice(m_audioEngine, masterDetails.InputChannelCount, masterDetails.InputSampleRate);
            m_musicAudioVoice = new SubmixVoice(m_audioEngine, masterDetails.InputChannelCount, masterDetails.InputSampleRate);
            m_hudAudioVoice = new SubmixVoice(m_audioEngine, masterDetails.InputChannelCount, masterDetails.InputSampleRate);
            m_gameAudioVoiceDesc = new VoiceSendDescriptor[] { new VoiceSendDescriptor(m_gameAudioVoice) };
            m_musicAudioVoiceDesc = new VoiceSendDescriptor[] { new VoiceSendDescriptor(m_musicAudioVoice) };
            m_hudAudioVoiceDesc = new VoiceSendDescriptor[] { new VoiceSendDescriptor(m_hudAudioVoice) };

            if (m_mute)
            { // keep sounds muted 
                m_gameAudioVoice.SetVolume(0);
                m_musicAudioVoice.SetVolume(0);
            }

            m_reverb = new Reverb(m_audioEngine);
            m_gameAudioVoice.SetEffectChain(new EffectDescriptor(m_reverb, masterDetails.InputChannelCount));
            m_gameAudioVoice.DisableEffect(0);
        }
コード例 #27
0
ファイル: System.cs プロジェクト: HaKDMoDz/InVision
		public RESULT createReverb           (ref Reverb reverb)
		{
			RESULT result = RESULT.OK;
			IntPtr reverbraw = new IntPtr();
			Reverb reverbnew = null;

			try
			{
				result = FMOD_System_CreateReverb(systemraw, ref reverbraw);
			}
			catch
			{
				result = RESULT.ERR_INVALID_PARAM;
			}
			if (result != RESULT.OK)
			{
				return result;
			}

			if (reverb == null)
			{
				reverbnew = new Reverb();
				reverbnew.setRaw(reverbraw);
				reverb = reverbnew;
			}
			else
			{
				reverb.setRaw(reverbraw);
			}

			return result;
		}
コード例 #28
0
        private static void ParseXml()
        {
            XElement xe = XElement.Load(@"C:\Users\perivar.nerseth\OneDrive\Audio\Presets\Izotope\Nectar 2\Presets\TEST.xml");

            // Compressors:
            // Dynamics 1 and Dynamics 2
            // Bypass
            // Attack
            // Gain
            // Mode
            // RMS Detection
            // Ratio
            // Release
            // Threshold
            var comp  = new Compressors();
            var xComp = (from a in xe.Element("Compressors").Elements("Param")
                         //where a.Attribute("ElementID").Value.Equals("Dynamics 1")
                         select new CompressorsParam
            {
                ElementID = a.Attribute("ElementID").Value,
                ParamID = a.Attribute("ParamID").Value,
                Value = NumberUtils.DecimalTryParseOrZero(a.Attribute("Value").Value)
            }).ToList();

            comp.CompressorsParam = xComp;

            // Delay
            var del  = new Delay();
            var xDel = (from a in xe.Element("Delay").Elements("Param")
                        select new DelayParam
            {
                ElementID = a.Attribute("ElementID").Value,
                ParamID = a.Attribute("ParamID").Value,
                Value = NumberUtils.DecimalTryParseOrZero(a.Attribute("Value").Value)
            }).ToList();

            del.DelayParam = xDel;

            // Reverb
            var rev     = new Reverb();
            var xReverb = (from a in xe.Element("Reverb").Elements("Param")
                           select new ReverbParam
            {
                ElementID = a.Attribute("ElementID").Value,
                ParamID = a.Attribute("ParamID").Value,
                Value = NumberUtils.DecimalTryParseOrZero(a.Attribute("Value").Value)
            }).ToList();

            rev.ReverbParam = xReverb;

            // EQ
            var eq = new EQ();
            // Band 2 Enable
            // Band 2 Frequency
            // Band 2 Gain
            // Band 2 Shape
            // Band 0 - 7
            var xEQ = (from a in xe.Element("EQ").Elements("Param")
                       where a.Attribute("ParamID").Value.StartsWith("Band 4")
                       select new EQParam
            {
                ElementID = a.Attribute("ElementID").Value,
                ParamID = a.Attribute("ParamID").Value,
                Value = NumberUtils.DecimalTryParseOrZero(a.Attribute("Value").Value)
            }).ToList();

            eq.EQParam = xEQ;
        }
コード例 #29
0
 private static extern Error.Code SetReverbAmbientProperties(IntPtr system, ref Reverb.Properties prop);