/// <summary>
        /// Selects which implementation of the Audio subsystem to use.
        /// </summary>
        /// <param name="impl">A <see cref="AudioImplementation"/> value corresponding to one of
        /// the Ultraviolet Framework's Audio subsystem implementations.</param>
        public void SelectAudioImplementation(AudioImplementation impl)
        {
            var version = Assembly.GetExecutingAssembly().GetName().Version;
            var asmname = String.Empty;

            switch (impl)
            {
            case AudioImplementation.BASS:
                asmname = "Ultraviolet.BASS";
                break;

            case AudioImplementation.FMOD:
                asmname = "Ultraviolet.FMOD";
                break;

            default:
                throw new ArgumentException(nameof(impl));
            }

#if SIGNED
            AudioSubsystemAssembly = $"{asmname}, Version={version}, Culture=neutral, PublicKeyToken=78da2f4877323311, processorArchitecture=MSIL";
#else
            AudioSubsystemAssembly = $"{asmname}, Version={version}, Culture=neutral, processorArchitecture=MSIL";
#endif
        }
        public void SongPlayer_SlidesVolumeCorrectly(AudioImplementation audioImplementation)
        {
            var songPlayer = default(SongPlayer);
            var song       = default(Song);

            GivenAnUltravioletApplicationWithNoWindow()
            .WithAudioImplementation(audioImplementation)
            .WithInitialization(uv => uv.GetAudio().AudioMuted = true)
            .WithContent(content =>
            {
                songPlayer = SongPlayer.Create();
                song       = content.Load <Song>("Songs/Deep Haze");

                songPlayer.Play(song, false);

                TheResultingValue(songPlayer.Volume).ShouldBe(1f);

                songPlayer.SlideVolume(0f, TimeSpan.FromSeconds(1));
            })
            .OnUpdate((app, time) =>
            {
                songPlayer.Update(time);
            })
            .RunFor(TimeSpan.FromSeconds(2));

            TheResultingValue(songPlayer.Volume).ShouldBe(0f);
        }
        public void SongPlayer_PlayResetsVolumePitchAndPanWhenNotSpecified(AudioImplementation audioImplementation)
        {
            var songPlayer = default(SongPlayer);
            var song       = default(Song);

            GivenAnUltravioletApplicationWithNoWindow()
            .WithAudioImplementation(audioImplementation)
            .WithInitialization(uv => uv.GetAudio().AudioMuted = true)
            .WithContent(content =>
            {
                songPlayer = SongPlayer.Create();
                song       = content.Load <Song>("Songs/Deep Haze");

                songPlayer.Play(song, 0.25f, 0.50f, 0.75f, false);
                songPlayer.Stop();
                songPlayer.Play(song, false);

                TheResultingValue(songPlayer.Volume).ShouldBe(1f);
                TheResultingValue(songPlayer.Pitch).ShouldBe(0f);
                TheResultingValue(songPlayer.Pan).ShouldBe(0f);
            })
            .OnUpdate((app, time) =>
            {
                songPlayer.Update(time);
            })
            .RunForOneFrame();
        }
Exemplo n.º 4
0
        public void SoundEffectPlayer_SlidesPanCorrectly(AudioImplementation audioImplementation)
        {
            var sfxPlayer = default(SoundEffectPlayer);
            var sfx       = default(SoundEffect);

            GivenAnUltravioletApplicationWithNoWindow()
            .WithAudioImplementation(audioImplementation)
            .WithInitialization(uv => uv.GetAudio().AudioMuted = true)
            .WithContent(content =>
            {
                sfxPlayer = SoundEffectPlayer.Create();
                sfx       = content.Load <SoundEffect>("SoundEffects/grenade");

                sfxPlayer.Play(sfx, false);

                TheResultingValue(sfxPlayer.Pan).ShouldBe(0f);

                sfxPlayer.SlidePan(-1f, TimeSpan.FromSeconds(1));
            })
            .OnUpdate((app, time) =>
            {
                sfxPlayer.Update(time);
            })
            .RunFor(TimeSpan.FromSeconds(2));

            TheResultingValue(sfxPlayer.Pan).ShouldBe(-1f);
        }
Exemplo n.º 5
0
        public void SoundEffectPlayer_PlaySetsVolumePitchAndPan(AudioImplementation audioImplementation)
        {
            var sfxPlayer = default(SoundEffectPlayer);
            var sfx       = default(SoundEffect);

            GivenAnUltravioletApplicationWithNoWindow()
            .WithAudioImplementation(audioImplementation)
            .WithInitialization(uv => uv.GetAudio().AudioMuted = true)
            .WithContent(content =>
            {
                sfxPlayer = SoundEffectPlayer.Create();
                sfx       = content.Load <SoundEffect>("SoundEffects/grenade");

                sfxPlayer.Play(sfx, 0.25f, 0.50f, 0.75f, false);

                TheResultingValue(sfxPlayer.Volume).ShouldBe(0.25f);
                TheResultingValue(sfxPlayer.Pitch).ShouldBe(0.50f);
                TheResultingValue(sfxPlayer.Pan).ShouldBe(0.75f);
            })
            .OnUpdate((app, time) =>
            {
                sfxPlayer.Update(time);
            })
            .RunForOneFrame();
        }
Exemplo n.º 6
0
        /// <inheritdoc/>
        public IUltravioletTestApplication WithAudioImplementation(AudioImplementation audioImplementation)
        {
            switch (audioImplementation)
            {
            case AudioImplementation.BASS:
                return(WithPlugin(new BASSAudioPlugin()));

            case AudioImplementation.FMOD:
                return(WithPlugin(new FMODAudioPlugin()));

            default:
                throw new ArgumentOutOfRangeException(nameof(audioImplementation));
            }
        }
Exemplo n.º 7
0
        public void Song_LoadsTags_FromOggVorbisFile(AudioImplementation audioImplementation)
        {
            var song = default(Song);

            GivenAnUltravioletApplicationWithNoWindow()
            .WithAudioImplementation(audioImplementation)
            .WithInitialization(uv => uv.GetAudio().AudioMuted = true)
            .WithContent(content =>
            {
                song = content.Load <Song>("Songs/Tone");

                TheResultingString(song.Tags["CUSTOM_TAG1"].Value)
                .ShouldBe("Hello, world!");

                TheResultingString(song.Tags["CUSTOM_TAG2"].Value)
                .ShouldBe("1234");

                TheResultingValue(song.Tags["CUSTOM_TAG2"].As <Int32>())
                .ShouldBe(1234);
            })
            .RunForOneFrame();
        }
        public void SongPlayer_ThrowsExceptionIfPanSetWhileNotPlaying(AudioImplementation audioImplementation)
        {
            var songPlayer = default(SongPlayer);

            Assert.That(() =>
            {
                GivenAnUltravioletApplicationWithNoWindow()
                .WithAudioImplementation(audioImplementation)
                .WithInitialization(uv => uv.GetAudio().AudioMuted = true)
                .WithContent(content =>
                {
                    songPlayer     = SongPlayer.Create();
                    songPlayer.Pan = 0f;
                })
                .OnUpdate((app, time) =>
                {
                    songPlayer.Update(time);
                })
                .RunFor(TimeSpan.FromSeconds(1));
            },
                        Throws.TypeOf <InvalidOperationException>());
        }
Exemplo n.º 9
0
 /// <inheritdoc/>
 public IUltravioletTestApplication WithAudioImplementation(AudioImplementation audioImplementation)
 {
     this.audioImplementation = audioImplementation;
     return(this);
 }