public void TriggerMusicSequence(LoopSequenceTrigger aTrigger)
    {
        LoopSequence loopSequence = loopSequences.Find(x => x.sequences.Exists(y => y.trigger == aTrigger));

        if (loopSequences == null)
        {
            return;
        }

        List <MusicLooper.PlayingTrack> playingTracks = musicLooper.activeTracks;

        currentTracksForSequence.Clear();
        currentTracksToRemove.Clear();

        AddSequenceTracks(loopSequence, aTrigger);
        musicLooper.SetBaseTrack(loopSequence.baseLoop);
        currentLoopSequence = loopSequence;

        for (int i = playingTracks.Count - 1; i >= 0; --i)
        {
            MusicLooper.PlayingTrack playingTrack = playingTracks[i];
            if (!currentTracksForSequence.Exists(x => x == playingTrack.loopTrack))
            {
                if (playingTrack.isPlaying && !playingTrack.isChanging)
                {
                    currentTracksToRemove.Add(playingTrack.loopTrack);
                    musicLooper.StopTrack(playingTrack.loopTrack);
                }
                else
                {
                    musicLooper.RemoveTrack(playingTrack.loopTrack);
                }
            }
        }

        if (currentTracksToRemove.Count == 0)
        {
            PlaySequenceTracks();
        }
        else
        {
            musicLooper.onLoopStopped += OnLoopStopped;
        }
    }
    void AddSequenceTracks(LoopSequence aSequence, LoopSequenceTrigger aTrigger)
    {
        List <MusicLooper.PlayingTrack> playingTracks = musicLooper.activeTracks;

        foreach (LoopSequence.Sequence sequence in aSequence.sequences)
        {
            foreach (LoopTrack track in sequence.loops)
            {
                if (!playingTracks.Exists(x => x.loopTrack == track))
                {
                    musicLooper.AddTrack(track);
                }
                currentTracksForSequence.Add(track);
            }

            if (sequence.trigger == aTrigger)
            {
                break;
            }
        }
    }
 public void TriggerLoopSequence(LoopSequenceTrigger aTrigger)
 {
     sequenceMusicPlayer.TriggerMusicSequence(aTrigger);
     sequencedMusic = true;
 }