Mira cómo descargar robots gratis
¡Búscanos en Twitter!
Pon "Me gusta" y sigue las noticias
¿Es interesante este script?
Deje un enlace a él, ¡qué los demás también lo valoren!
¿Le ha gustado el script?
Evalúe su trabajo en el terminal MetaTrader 5
Visualizaciones:
1088
Ranking:
(35)
Publicado:
2014.01.14 14:58
Actualizado:
2014.02.28 14:05
\MQL5\Include\
incmidi.mqh (5.03 KB) ver
\MQL5\Experts\
emidi.mq5 (4.68 KB) ver
MQL5 Freelance ¿Necesita un robot o indicador basado en este código? Solicítelo en la bolsa freelance Pasar a la bolsa

El archivo IncMIDI.mqh contiene una clase para controlar el dispositivo MIDI. En el archivo eMIDI.mq5 hay disponible un ejemplo de uso.

Instrucciones de uso de la clase CMIDI

  1. Incluye la clase en un archivo:
    #include <IncMIDI.mqh>
  2. Declara la clase:
    CMIDI m;
  3. Transfiere el programa de música mediante el método SetMusic(string & aMusic[]).

  4. Habilita el playback con el método Play(bool aSynch=true). Si aSynch vale true, la reproducción se realiza en modo síncrono en el ciclo con pausas usando la función Sleep(). Si aSynch vale false, la reproducción se realiza en modo síncrono, y se puede detener con el método Stop(). Para poder trabajar en modo síncrono en la función OnChartEvent() del Asesor Experto, hay que llamar al método ChartEvent().

  5. Haz una llamada al método Stop() tras finalizar tu trabajo. Esto es necesario para cerrar el dispositivo MIDI; de lo contrario, hay que reiniciar el terminal para volver a ejecutarlo.

Programa de música

El programa de música se almacena en un array de strings. En cada elemento del array se escribe una lista de acciones, terminadas con una coma. Al principio de un comando se escribe un signo igual y el valor del comando. Se encuentran disponibles los siguientes comandos:

  • Tick - tiempo en milisegundos a través del cual se reproducen todos los comandos de un elemento del array. Define el tiempo en que la reproducción se lleva a cabo.
  • Volume - nivel de volumen, de 0 a 100.
  • VolumeL - nivel de volumen del canal izquierdo, de 0 a 100.
  • VolumeR - nivel de volumen del canal derecho, de 0 a 100.
  • Instrument - selección del instrumento musical, de 0 a 127.
  • NoteDN - pulsar una tecla. El número 60 se corresponde con la nota do de la primera octava, el 61 con el do sostenido, el 62 con el re, etc.
  • NoteUP - soltar una tecla. En algunos instrumentos no se puede soltar la tecla porque el sonido se desvanece solo; por otro lado, en otras ocasiones es obligatorio mantener pulsadas algunas teclas.

Se pueden ejecutar acordes, por ejemplo, "NoteDN=57, NoteDN=60, NoteDN=64". Una reproducción paralela de varios instrumentos musicales puede ser, por ejemplo, "Instrument=1, NoteDN=60, Instrument=123, NoteDN=60". No se puede cambiar el volumen de los distintos instrumentos (todo se reproduce con el mismo volumen), pero sí se puede cambiar el volumen de las diferentes partes de la reproducción, por ejemplo:

"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"

Métodos de la clase CMIDI 

  • void ChartEvent(const int id,const long &lparam,const double &dparam,const string &sparam) - llamada de la función cuando se reproduce en modo asíncrono.
  • void Play(bool aSynch=true) - activar la reproducción. Si aSynch vale false, se tiene que llamar al método ChartEvent() desde la función OnChartEvent.  
  • void Stop() - detener la reproducción asíncrona. Detener la reproducción y cerrar el dispositivo.
  • void SetMusic(string & aMusic[]) - envío de un array con un programa de música.
  • void SetEventID(ushort aID) - establecimiento de un número de un evento personalizado. Esto es necesario en la reproducción en modo asíncrono. No hace falta llamar, el valor predeterminado es 1.

Traducción del ruso realizada por MetaQuotes Ltd
Artículo original: https://www.mql5.com/ru/code/1555

iMAFan iMAFan

Un colorido abanico de medias móviles.

iUniMA iUniMA

Media Móvil Universal, permite seleccionar cualquier tipo de media móvil, incluido en el terminal cliente de MetaTrader 5.

iHeikenAshiSm iHeikenAshiSm

Indicador Heiken Ashi con suavizado.

Un Asesor Experto, basado en la Estrategia de Forex "método Puria" Un Asesor Experto, basado en la Estrategia de Forex "método Puria"

Un Asesor Experto, basado en la Estrategia de Forex "método Puria"