Advertisement
leafbarrett

music loop stuff

Apr 26th, 2017
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.61 KB | None | 0 0
  1. //Please give credit if you use this code
  2. //This code allows for music with a non-looping intro to be looped correctly
  3. //To use, you need to split the song into 2 audio files containing the intro and the loop
  4.  
  5. //using
  6. using Microsoft.Xna.Framework.Audio;
  7.  
  8. //before SetDefaults
  9.         public int startMusic;
  10.         public int loopMusic;
  11.         public int loopCountMax = x; //the duration of the introduction in frames
  12.         public int loopCountdown = x+16; //the countdown leading up to the switch from intro to loop - fadeout takes 16 frames
  13.         public bool isLooping = false;
  14.         public bool switchMusic = false; //use this to implement a phase 2 if desired
  15.         public int startMusic2;
  16.         public int loopMusic2;
  17.         public int loopCountMax2 = y;
  18.         public int loopCountdown2 = y+60; //fadeout takes 60 frames
  19.         public bool isLooping2 = false;
  20.        
  21. //in SetDefaults
  22.             startMusic = mod.GetSoundSlot(SoundType.Music, "Sounds/Music/Song1Intro");
  23.             loopMusic = mod.GetSoundSlot(SoundType.Music, "Sounds/Music/Song1Loop");
  24.             startMusic2 = mod.GetSoundSlot(SoundType.Music, "Sounds/Music/Song2Intro");
  25.             loopMusic2 = mod.GetSoundSlot(SoundType.Music, "Sounds/Music/Song2Loop");
  26.             music = startMusic;
  27.            
  28. //in AI
  29.             if(!switchMusic)
  30.             {
  31.                 if(loopCountdown >= loopCountMax)
  32.                 {
  33.                     for (int m = 1; m < Main.music.Length; m++)
  34.                     {
  35.                         if (Main.music[m] != null && Main.music[m] != Main.music[startMusic] && Main.music[m].IsPlaying)
  36.                         {
  37.                             if(Main.musicFade[m] > 0f)
  38.                             {
  39.                                 Main.musicFade[m] -= 0.0625f;
  40.                             }
  41.                             else if(Main.musicFade[m] <= 0f)
  42.                             {
  43.                                 Main.music[m].Stop(AudioStopOptions.Immediate);
  44.                                 music = startMusic;
  45.                                 if(loopCountdown > loopCountMax) loopCountdown = loopCountMax;
  46.                             }
  47.                         }
  48.                         else if (Main.music[m] == Main.music[startMusic]) Main.musicFade[m] = 1f;
  49.                     }
  50.                 }
  51.                
  52.                 if(loopCountdown == 0 && !isLooping)
  53.                 {
  54.                     music = loopMusic;
  55.                     for (int m = 1; m < Main.music.Length; m++)
  56.                     {
  57.                         if (Main.music[m] != null && Main.music[m] != Main.music[loopMusic] && Main.music[m].IsPlaying)
  58.                         {
  59.                             Main.music[m].Stop(AudioStopOptions.Immediate);
  60.                         }
  61.                         else if (Main.music[m] == Main.music[loopMusic]) Main.musicFade[m] = 1f;
  62.                     }
  63.                     isLooping = true;
  64.                 }
  65.            
  66.                 if(loopCountdown > 0) loopCountdown--;
  67.             }
  68.             else
  69.             {
  70.                 if(loopCountdown2 >= loopCountMax2)
  71.                 {
  72.                     for (int m = 1; m < Main.music.Length; m++)
  73.                     {
  74.                         if (Main.music[m] != null && Main.music[m] != Main.music[startMusic2] && Main.music[m].IsPlaying)
  75.                         {
  76.                             if(Main.musicFade[m] > 0f)
  77.                             {
  78.                                 Main.musicFade[m] -= 0.125f;
  79.                                 // Main.NewText("fading " + Main.musicFade[m], Color.Cyan.R, Color.Cyan.G, Color.Cyan.B);
  80.                             }
  81.                             else if(Main.musicFade[m] <= 0f)
  82.                             {
  83.                                 Main.music[m].Stop(AudioStopOptions.Immediate);
  84.                                 music = startMusic2;
  85.                                 if(loopCountdown2 > loopCountMax2) loopCountdown2 = loopCountMax2;
  86.                                 // Main.NewText("startmusic2", Color.Cyan.R, Color.Cyan.G, Color.Cyan.B);
  87.                             }
  88.                         }
  89.                         else if (Main.music[m] == Main.music[startMusic2]) Main.musicFade[m] = 1f;
  90.                     }
  91.                 }
  92.                
  93.                 if(loopCountdown2 == 0 && !isLooping2)
  94.                 {
  95.                     music = loopMusic2;
  96.                     for (int m = 1; m < Main.music.Length; m++)
  97.                     {
  98.                         if (Main.music[m] != null && Main.music[m] != Main.music[loopMusic2] && Main.music[m].IsPlaying)
  99.                         {
  100.                             Main.music[m].Stop(AudioStopOptions.Immediate);
  101.                         }
  102.                         else if (Main.music[m] == Main.music[loopMusic2]) Main.musicFade[m] = 1f;
  103.                     }
  104.                     isLooping2 = true;
  105.                 }
  106.            
  107.                 if(loopCountdown2 > 0) loopCountdown2--;
  108.             }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement