void Update()
    {
        curTimer += Time.deltaTime;

        speakingNear.Clear();
        foreach (var speaker in shutUpWhenOtherSpeaking)
        {
            if (speaker.currentNotePattern != null &&
                Vector3.Distance(speaker.transform.position, transform.position) < shutUpWhenOtherSpeakingRadius)
            {
                speakingNear.Add(speaker);
            }
        }

        if (speakingNear.Count > 0)
        {
            curState = IdlePatternState.ShuttingUp;
            playNotes.StopPlaying();
            curTimer = 0f;
        }


        switch (curState)
        {
        case IdlePatternState.PlayingNotes:
            if (playNotes.currentPattern == null)
            {
                curState = IdlePatternState.PausedBetween;
                curTimer = 0f;
            }
            break;

        case IdlePatternState.PausedBetween:
            if (curTimer > pauseBetweenRepeats)
            {
                if (playNotes.currentPattern == null)
                {
                    playNotes.PlayPattern(pattern, volume);
                    curState = IdlePatternState.PlayingNotes;
                }
            }
            break;

        case IdlePatternState.ShuttingUp:
            if (speakingNear.Count == 0 && curTimer > pauseBeforeResume)
            {
                if (playNotes.currentPattern == null)
                {
                    playNotes.PlayPattern(pattern, volume);
                    curState = IdlePatternState.PlayingNotes;
                }
            }
            break;

        default:
            break;
        }
    }
    void Awake()
    {
        speakingNear = new List <PlayerNoteCreator>();
        curState     = IdlePatternState.PausedBetween;

        try
        {
            string json = File.ReadAllText(NotePattern.patternFilePath + patternFile + ".json");
            pattern = JsonUtility.FromJson <NotePattern>(json);
        }
        catch (Exception e)
        {
            Debug.Log("Failed to open " + NotePattern.patternFilePath + patternFile + ".json" + ", error: " + e.Message);
        }
    }