/// <summary>
        /// Метод воспроизводит указанную ноту
        /// </summary>
        /// <param name="Note">Нота</param>
        /// <param name="Octave">Октава</param>
        /// <param name="Volume">Громкость (0 – 127)</param>
        /// <param name="Duration">Длительность в миллисекундах</param>
        /// <param name="Channel">Канал воспроизведения (0 – 15)</param>
        /// <param name="WaitForNextNote">Время ожидания до начала следующей ноты в миллисекундах</param>
        /// <returns>Возвращает true в случае успеха</returns>
        public bool PlayNote(uint Channel, MIDINotes Note, MIDIOctaves Octave, uint Volume, uint Duration, uint WaitForNextNote)
        {
            // Контроль
            if (!isInited || ((Channel & 0xFu) == beatsChannel))
            {
                return(false);
            }

            if (Volume * Duration == 0)
            {
                return(true);
            }

            // Запуск
            HardWorkExecutor hwe = new HardWorkExecutor(PlayNoteStub, new uint[] { NoteAndOctaveToCommand(Note, Octave),
                                                                                   Volume, Duration, Channel });

            if (WaitForNextNote > 0)
            {
                Thread.Sleep((int)WaitForNextNote);
            }

            return(true);
        }
        // Параметры

        // Метод собирает ноту и октаву в команду
        private uint NoteAndOctaveToCommand(MIDINotes Note, MIDIOctaves Octave)
        {
            return(AlignNote((uint)Octave * 12 + (uint)Note));
        }