private void UpdateInputToMoveAndStretchNotes(EKeyboardModifier modifier)
    {
        Vector2 arrowKeyDirection = InputUtils.GetArrowKeyDirection();

        if (arrowKeyDirection == Vector2.zero)
        {
            return;
        }

        List <Note> selectedNotes = selectionController.GetSelectedNotes();

        if (selectedNotes.IsNullOrEmpty())
        {
            return;
        }

        if (modifier == EKeyboardModifier.None)
        {
            return;
        }

        List <Note> followingNotes = GetFollowingNotesOrEmptyListIfDeactivated(selectedNotes);

        // Move with Shift
        if (modifier == EKeyboardModifier.Shift && arrowKeyDirection.x != 0)
        {
            moveNotesAction.MoveNotesHorizontalAndNotify((int)arrowKeyDirection.x, selectedNotes, followingNotes);
        }
        if (modifier == EKeyboardModifier.Shift && arrowKeyDirection.y != 0)
        {
            moveNotesAction.MoveNotesVerticalAndNotify((int)arrowKeyDirection.y, selectedNotes, followingNotes);
        }

        // Move notes one octave up / down via Ctrl+Shift
        if (modifier == EKeyboardModifier.CtrlShift)
        {
            moveNotesAction.MoveNotesVerticalAndNotify((int)arrowKeyDirection.y * 12, selectedNotes, followingNotes);
        }

        // Extend right side with Alt
        if (modifier == EKeyboardModifier.Alt)
        {
            extendNotesAction.ExtendNotesRightAndNotify((int)arrowKeyDirection.x, selectedNotes, followingNotes);
        }

        // Extend left side with Ctrl
        if (modifier == EKeyboardModifier.Ctrl)
        {
            extendNotesAction.ExtendNotesLeftAndNotify((int)arrowKeyDirection.x, selectedNotes);
        }
    }