anchor.diff:      MusicIndex:integer; //Points to the index in TrackOrder of the current track
       MusicTracks:array[1..256]of string;
       TrackOrder:array[1..256]of byte; //Each index points to an index of MusicTracks
  -    SpiritIndex:byte;                //Index of the track "Spirit" (or Track 1)
       //MIDICount,MIDIIndex:integer;
       //MIDITracks:array[1..256]of string;
       IsMusicInitialized:boolean;
  
positive.code: 
  {Music Lib}
  constructor TMusicLib.Create(aVolume:single);
  begin
    Inherited Create;
    SpiritIndex := 1;
    IsMusicInitialized := true;
    ScanMusicTracks(ExeDir + 'Music\');
  
  
negative.code: end;
  
  procedure TMusicLib.ShuffleSongs;
  var i, r, NewIndex: Byte;
  begin
    if MusicIndex = 0 then exit; // Music is disabled
    NewIndex := MusicIndex;
    for i := MusicCount downto 2 do
    begin
      r := RandomRange(2, i);
      //Remember the track number of the current track
      if TrackOrder[r] = MusicIndex then
        NewIndex := i;
      KromUtils.SwapInt(TrackOrder[r], TrackOrder[i]);
    end;
    MusicIndex := NewIndex;
  end;
  
  procedure TMusicLib.UnshuffleSongs;
  var i: Byte;
  begin
    if MusicIndex = 0 then exit; // Music is disabled
    MusicIndex := TrackOrder[MusicIndex];
    //Reset every index of the TrackOrder array
    for i := 1 to MusicCount do
    begin
      TrackOrder[i] := i;
    end;
  end;
  
  function TMusicLib.GetTrackTitle:string;
  