MQL заметки

13 апреля 2017, 14:11
GT788
[Удален]
0
139

typename() возвращает тип переменной

int a=0;
Alert(typename(a)); //вернет int

----------------------------------------------------------------------------------------------------

CopyTicks флаги

TICK_FLAG_BID = 2

TICK_FLAG_ASK = 4

TICK_FLAG_LAST = 8

TICK_FLAG_VOLUME = 16

TICK_FLAG_BUY = 32

TICK_FLAG_SELL = 64

------------------------------------------------------------------------------------------------------

Создание синусоиды 440Гц в wav файле

struct WAVheader // 44 байта
  {uchar  chunkId[4];// Содержит символы "RIFF" (0x52494646 в big-endian)
   uint   chunkSize; // Это размер файла - 8 (исключены поля chunkId и chunkSize)
   uchar  format[4]; // Содержит символы "WAVE" (0x57415645 в big-endian)
   uchar  subchunk1Id[4];// Содержит символы "fmt " (0x666d7420 в big-endian)
   uint   subchunk1Size; // 16 для формата PCM.
   ushort audioFormat;// Для PCM = 1 (Windows PCM, без сжатия)
   ushort numChannels;// Количество каналов. Моно = 1, Стерео = 2 и т.д.
   uint   sampleRate; // Частота дискретизации. 8000 Гц, 44100 Гц и т.д.
   uint   byteRate;   // sampleRate * numChannels * bitsPerSample/8
   ushort blockAlign; // numChannels * bitsPerSample/8
   ushort bitsPerSample;// Так называемая "глубина" или точность звучания. 8 бит, 16 бит и т.д.
   uchar  subchunk2Id[4];// Содержит символы "data" (0x64617461 в big-endian)
   uint   subchunk2Size; // numSamples * numChannels * bitsPerSample/8
  };
   
WAVheader w;
int h=FileOpen("1.wav",FILE_WRITE|FILE_BIN);
uint numSamples=11025;// 250ms
StringToCharArray("RIFF",w.chunkId);
StringToCharArray("WAVE",w.format);
StringToCharArray("fmt ",w.subchunk1Id);
StringToCharArray("data",w.subchunk2Id);
w.subchunk1Size=16;
w.audioFormat=1;
w.numChannels=1;
w.sampleRate=44100;
w.bitsPerSample=16;
w.blockAlign=w.numChannels*w.bitsPerSample/8;
w.byteRate     =w.blockAlign*w.sampleRate;
w.subchunk2Size=w.blockAlign*numSamples;
w.chunkSize=w.subchunk2Size+36;
FileWriteStruct(h,w);
short d[];// short т.к. bitsPerSample 16 бит (2 байта)
ArrayResize(d,numSamples);
for(uint i=0;i<numSamples;i++)
  {double f=440;
   d[i]=short(32767.*sin(2.*M_PI*f*i/w.sampleRate));
  }
FileWriteArray(h,d);
FileClose(h);
Alert("Ok");
PlaySound("\\Files\\1.wav");