How to hold button/key at a right timing

Hi !
Got a rythm game I try to make, and got a problem with duration’s note.
I would like my note to be hit at the right time, and for a precised duration.
For now and for example even though i know this code is wrong, this is my code :

public void SetCountBarsText()
	{
        Count4_4 += Time.deltaTime;

        if (Count4_4 >= 5) // 4/4 Bars
        {
            Count4_4 = 1;
            Bars++;
        }

        TempoText.text = "Tempo : " + Count4_4.ToString("0.0") + " | Bars : " + Bars.ToString("0");
	}

void Update()
{

SetCountBarsText();

if (Input.GetKeyDown(KeyCode.Y) && Count4_4 >= 4.8 && ButtonHeld == false || Input.GetKeyDown(KeyCode.Y) && Count4_4 <= 1.2 && ButtonHeld == false) 
                {
                    ButtonHeld = true;
                }

if (Input.GetKeyUp(KeyCode.Y) && Count4_4 >= 4.00 && ButtonHeld == true || Input.GetKeyUp(KeyCode.Y) && Count4_4 <= 4.90 && ButtonHeld == true)
                    {
                        ButtonHeld = false;

                        if (NotesList[0].transform.position.y == -0.306f)
                        {
                            Destroy (NotesList[0].gameObject);
                            NotesList.RemoveAt(0);
                            Score += 10;
                            SetScoreText ();
                        }
                        else if (NotesList[0].transform.position.y != -0.306f)
                        {
                            Score -= 20;
                            SetScoreText ();
                        }
                    }

}

But for now, and as logical, the note is destroyed just between 4.8 & 4.9.
I tried many things, but didnt find how to deal with it :frowning:

I finally managed to do it like this :

void Update()
    {

        DownTimeButton += Time.deltaTime;

        if (DownTimeButton >= 5)
        {
            DownTimeButton = 1;
        }

        UpTimeButton += Time.deltaTime;

        if (UpTimeButton >= 5)
        {
            UpTimeButton = 1;
        }

if (NotesList[0] == WholeNotes)
            {
                if (Input.GetKeyDown(KeyCode.Y) && DownTimeButton <= 1.2 || Input.GetKeyDown(KeyCode.Y) && DownTimeButton >= 4.8) //A Note
                {
                    Debug.Log("Key Is Down");
                    /* if (Input.GetKey (KeyCode.Y))
                    {
                        ButtonHeld = true;
                    } */
                }
                else if (Input.GetKeyDown(KeyCode.Y) && DownTimeButton >= 1.21 && DownTimeButton <= 4.79) //A Note
                {
                    Debug.Log("Wrong Down Timing");
                    //Debug.Break();
                    Score -= 20;
                    SetScoreText ();
                }

                if (Input.GetKeyUp(KeyCode.Y) && UpTimeButton <= 1.2 || Input.GetKeyUp(KeyCode.Y) && UpTimeButton >= 4.7)
                {
                    Debug.Log("Key Is Up");
                    if (NotesList[0].transform.position.y == -0.306f)
                    {
                        Destroy (NotesList[0].gameObject);
                        NotesList.RemoveAt(0);
                        Score += 10;
                        SetScoreText ();
                        Debug.Log ("note killed");
                    }
                    else if (NotesList[0].transform.position.y != -0.306f)
                    {
                        Score -= 20;
                        SetScoreText ();
                    }
                }
                else if (Input.GetKeyUp(KeyCode.Y) && UpTimeButton >= 1.21 || Input.GetKeyUp(KeyCode.Y) && UpTimeButton <= 4.69)
                {
                    Debug.Log("Wrong Up Timing");
                }
            }
}