Animatroller.AudioTrigger.TrackPlayer.NextTrack C# (CSharp) Method

NextTrack() public method

public NextTrack ( ) : void
return void
        public void NextTrack()
        {
            if (!playing)
                return;

            lock (players)
            {
                var playersCopy = players.ToList();
                foreach (var player in playersCopy)
                    player.Player.Close();
            }
            PlayNextTrackInNewPlayer(true);
        }

Usage Example

Example #1
0
        public static void Main(string[] args)
        {
            xaudio2 = new XAudio2();
            xaudio2.StartEngine();
            var masteringVoice = new MasteringVoice(xaudio2);

            if (!string.IsNullOrEmpty(Properties.Settings.Default.BackgroundMusicPath) &&
                Directory.Exists(Properties.Settings.Default.BackgroundMusicPath))
            {
                var musicFiles = Directory.GetFiles(Properties.Settings.Default.BackgroundMusicPath, "*.wav");
                if (musicFiles.Length > 0)
                {
                    backgroundPlayer = new TrackPlayer(xaudio2, musicFiles);
                }
            }

            var listener = new UdpClient(10009);

            listener.BeginReceive(new AsyncCallback(ReceiveCallback), listener);

            effectManager = new EffectManager(xaudio2, 4, Properties.Settings.Default.FXPath);

            // Wait until its done
            int count = 1;

            while (true)
            {
                Thread.Sleep(10);

                if (Console.KeyAvailable)
                {
                    var key = Console.ReadKey();
                    if (key.Key == ConsoleKey.Escape)
                    {
                        break;
                    }

                    switch (key.Key)
                    {
                    case ConsoleKey.A:
                        effectManager.Play("Scream.wav");
                        break;

                    case ConsoleKey.B:
                        effectManager.Play("Violin screech.wav");
                        break;

                    case ConsoleKey.N:
                        if (backgroundPlayer != null)
                        {
                            backgroundPlayer.NextTrack();
                        }
                        break;

                    case ConsoleKey.V:
                        if (key.Modifiers.HasFlag(ConsoleModifiers.Shift))
                        {
                            backgroundVolume -= 0.1f;
                        }
                        else
                        {
                            backgroundVolume += 0.1f;
                        }

                        if (backgroundVolume < 0f)
                        {
                            backgroundVolume = 0f;
                        }
                        if (backgroundVolume > 1f)
                        {
                            backgroundVolume = 1f;
                        }
                        break;
                    }
                }

                var muteMusic = effectManager.AreAnyPlaying && autoMuteBackground ? 0.2f : 0f;
                if (backgroundPlayer != null)
                {
                    backgroundPlayer.Volume = backgroundVolume - muteMusic;
                }

                if (count % 50 == 0)
                {
                    Console.Write(".");
                    Console.Out.Flush();
                }

                Thread.Sleep(10);
                count++;
            }

            listener.Close();

            if (backgroundPlayer != null)
            {
                backgroundPlayer.Stop();
            }
            if (trackPlayer != null)
            {
                trackPlayer.Stop();
            }

            effectManager.Dispose();

            Thread.Sleep(500);

            masteringVoice.Dispose();
            xaudio2.StopEngine();
            xaudio2.Dispose();
        }