void Start()
        {
            _particleStore = GetComponent <ParticleStore>();

            _handler.Commands.Subscribe(message =>
            {
                switch (message.Command)
                {
                case MessageCommandNames.SetKeyboardTypingEffectType:
                    SetParticleType(message.ToInt());
                    break;

                case MessageCommandNames.HidVisibility:
                    SetKeyboardVisibility(message.ToBoolean());
                    break;

                case MessageCommandNames.MidiControllerVisibility:
                    SetMidiVisibility(message.ToBoolean());
                    break;

                default:
                    break;
                }
            });
        }
        public void Initialize(
            IMessageReceiver receiver,
            KeyboardProvider keyboard,
            TouchPadProvider touchPad,
            MidiControllerProvider midiController,
            ParticleStore particleStore
            )
        {
            _keyboard                 = keyboard;
            _touchPad                 = touchPad;
            _midiController           = midiController;
            _particleStore            = particleStore;
            _keyboardVisibility       = keyboard.GetComponent <KeyboardVisibility>();
            _touchPadVisibility       = touchPad.GetComponent <TouchpadVisibility>();
            _midiControllerVisibility = midiController.GetComponent <MidiControllerVisibility>();

            receiver.AssignCommandHandler(
                VmmCommands.HidVisibility,
                message => SetHidVisibility(message.ToBoolean())
                );
            receiver.AssignCommandHandler(
                VmmCommands.MidiControllerVisibility,
                message => SetMidiVisibility(message.ToBoolean())
                );
        }