Ставь лайки и следи за новостями
Поставь на него ссылку - пусть другие тоже оценят
Оцени его работу в терминале MetaTrader 5
- Просмотров:
- 2521
- Рейтинг:
- Опубликован:
- 2013.02.25 09:20
-
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу
В файле IncMIDI.mqh находится класс для управления устройством MIDI. В файле eMIDI.mq5 пример его применения.
Порядок использования класса CMIDI
- Подключить файл с классом:
#include <IncMIDI.mqh>
- Объявить класс:
CMIDI m;
- Методом SetMusic(string & aMusic[]) передать музыкальную программу.
- Методом Play(bool aSynch=true) включить воспроизведение. При aSynch=true воспроизведение выполняется в синхронному режиме, в цикле с паузами выполняемыми использованием функции Sleep(). При aSynch=false воспроизведение выполняется в синхронном режиме, при этом можно останавливать воспроизведение методом Stop(). Для работы в синхронном режиме из функции OnChartEvent() эксперта должен вызываться метод ChartEvent().
- По завершению работы вызвать метод 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.

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

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

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

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