Смотри, как бесплатно скачать роботов
Ищи нас в Telegram!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Библиотеки

CMIDI - библиотека для MetaTrader 5

Просмотров:
2383
Рейтинг:
(35)
Опубликован:
2013.02.25 09:20
\MQL5\Include\ \MQL5\Experts\
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

В файле IncMIDI.mqh находится класс для управления устройством MIDI. В файле eMIDI.mq5 пример его применения.

Порядок использования класса CMIDI

  1. Подключить файл с классом:
    #include <IncMIDI.mqh>
  2. Объявить класс:
    CMIDI m;
  3. Методом SetMusic(string & aMusic[]) передать музыкальную программу.

  4. Методом Play(bool aSynch=true) включить воспроизведение. При aSynch=true воспроизведение выполняется в синхронному режиме, в цикле с паузами выполняемыми использованием функции Sleep(). При aSynch=false воспроизведение выполняется в синхронном режиме, при этом можно останавливать воспроизведение методом Stop(). Для работы в синхронном режиме из функции OnChartEvent() эксперта должен вызываться метод ChartEvent().

  5. По завершению работы вызвать метод Stop(). Необходимо для закрытия устройства MIDI, иначе, для повторного запуска, потребуется перезапускать терминал.

Музыкальная программа

Музыкальная программа записывается в строковом массиве. В одном элементе массива записывается список действий. Действия записываются через запятую. Сначала записывается команда, знак равно и значение команды. Возможны следующие команды:

  • Tick - время в миллисекундах через которое выполняются все команды одного элемента массива. Определяет темп с которым выполняется воспроизведение.
  • Volume - уровень громкости, от 0 до 100.
  • VolumeL - уровень громкости левого канала, от 0 до 100.
  • VolumeR - уровень громкости правого канала, от 0 до 100.
  • Instrument - выбор музыкального инструмента, от 0 до 127.
  • NoteDN - нажатие клавиши. Номер 60 соответствует ноте "до" основной октавы, 61 - "до диез", 62 - "ре" и т.д.
  • NoteUP - отпускание клавиши. Для некоторых инструментов можно не использовать отпускание клавиши, звук сам затихает, а для некоторых обязательно отжимать.

Возможно взятие аккордов, например: "NoteDN=57, NoteDN=60, NoteDN=64". Возможна параллельная игра на нескольких инструментах, например: "Instrument=1, NoteDN=60, Instrument=123, NoteDN=60". Громкость звучания различных инструментов невозможно менять, все играют на одной громкости, но можно менять громкость звучания различных участков произведения, например:

"Tick=1500, Instrument=123, Volume=100, NoteDN=60",
"VolumeL=0, VolumeR=100, NoteDN=64",
"VolumeL=100, VolumeR=0, NoteDN=57",
"Volume=50, NoteDN=67, NoneDN=57",
"Volume=25, NoteDN=64, NoneDN=67"

Методы класса CMIDI 

  • void ChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam) - вызывается из функции при использовании воспроизведения в асинхронном режиме.
  • void Play(bool aSynch=true) - включение воспроизведения. При aSynch=false из функции OnChartEvent должен вызываться метод ChartEvent().  
  • void Stop() - остановка воспроизведения при асинхронном воспроизведении. Остановка воспроизведения и закрытие устройства.
  • void SetMusic(string & aMusic[]) - передача массива с музыкальной программой.
  • void SetEventID(ushort aID) - установка номера пользовательского события. Необходимо при использовании воспроизведения в асинхронном режиме. Не обязательно вызывать, по умолчанию используется 1.
MD5 Hash MD5 Hash

Вычисление 32-символьной строки MD5-хеша от переданного байтового массива

EMAPredictive3 EMAPredictive3

Мувинг с использованием алгоритма EMA. Используется линейная интерполяция двух разнопериодных EMA.

b-clock b-clock

Индикатор отображает сколько времени в минутах и секундах осталось до появления новой свечи.

i-Friday_Sig i-Friday_Sig

Сигналы входов и выходов по системе "Эффект пятницы"