/// <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)); }