- •Предисловие.
- •1. Основные сведения, необходимые для создания программ на языке c.
- •1.1 Общая характеристика языка c.
- •1.2. Процесс создания исполняемого файла.
- •1.3. Распределение памяти программы.
- •1.4. Основные правила работы с программами.
- •2. Программная имитация электронных схем.
- •3. Описание программы образца.
- •3.1. Подпрограммы общего назначения.
- •3.2. Подпрограммы мехатронного объекта.
- •3.3. Подпрограммы графических примитивов.
- •3.4. Подпрограммы системных сообщений.
- •3.5. Подпрограммы звуковой сигнализации.
- •3.6. Глобальные константы и переменные.
- •4. Тексты исходных файлов программы образца.
- •4.1. Подпрограммы общего назначения.
- •4.2. Подпрограммы мeхатронного объекта.
- •4.3. Подпрограммы графических примитивов.
- •4.4. Подпрограммы системных сообщений.
- •4.5. Подпрограммы звуковой сигнализации.
- •4.6. Глобальные константы и переменные.
- •5. Методические указания к лабораторным работам.
- •6. Задания на выполнение лабораторных работ.
- •6.1. Лабораторная работа 1. Разработка графического отображения титульного листа программы.
- •6.2. Лабораторная работа 2. Разработка логической схемы мехатронного объекта.
- •6.3. Лабораторная работа 3. Разработка графического отображения логической схемы мехатронного объекта.
- •6.4. Лабораторная работа 4. Разработка графического отображения работы логической схемы мехатронного объекта.
- •6.5. Лабораторная работа 5. Разработка средств сигнализации (системные сообщения, звуковая сигнализация, дата, время).
- •7. Варианты лабораторных работ.
- •8. Описание dvd диска
- •Литература.
- •Содержание.
4.5. Подпрограммы звуковой сигнализации.
ФАЙЛ: SYS_MUS.H.
[1] /*#############################################*/
[2] /*
[3] Copyright (C) 2008 by A.E.Stefanovich tel. 236-2729, 268-3916.
[4] Moscow State University of Instrument-making and Computer Sciences.
[5] (MGUPI).
[6] Chair TI-1.
*/
[7] /*#############################################*/
[8] /*
[9] File: SYS_MUS.h
[10] MUSIC
[11] */
[12] /*############################################*/
[13] #ifndef SYS_MUS_
[14] #define SYS_MUS_
[15] /*================================== Includes */
[16] #include <c:\TURBOC.3_0\include\dos.h>
[17] /*========================== Global Constants */
[18] /*------------- First oct. */
[19] #define D_ 262
[20] #define DD_ 277
[21] #define RB_ 277
[22] #define R_ 294
[23] #define RD_ 311
[24] #define MB_ 311
[25] #define M_ 330
[26] #define F_ 349
[27] #define FD_ 370
[28] #define SB_ 370
[29] #define S_ 392
[30] #define SD_ 415
[31] #define LB_ 415
[32] #define L_ 440
[33] #define LD_ 466
[34] #define CB_ 466
[35] #define C_ 494
[36] /*------------- Coeficient Frequency (CF) */
[37] #define CO 0.125 /* Contr oct. */
[38] #define GO 0.25 /* Big oct. */
[39] #define LO 0.5 /* Little oct. */
[40] #define FIRST 1 /* First oct. */
[41] #define SO 2 /* Second oct. */
[42] #define TO 4 /* Third oct */
[43] #define FO 8 /* Fourth oct. */
[44] /*------------- Pause frequency */
[45] #define P_ 20000
[46] /*------------- Length of the Whole Note (LWN) [milliseconds] */
[47] #define ANDANTE 3375
[48] #define MODERATO 2250
[49] #define ALLEGRO 1700
[50] /*=============================== DECLARATION */
[51] void n(float f,float l);
[52] void sonata17(float W);
[53] void sonata17r(float W);
[54] void elise(float W);
[55] void siren_0(float W); /* --> <-- */
[56] void siren_1(float W); /* --> */
[57] void siren_2(float W); /* <-- */
[58] void scale_0(float W); /* --> <-- */
[59] void scale_1(float W); /* --> */
[60] void scale_2(float W); /* <-- */
[61] void arpeg_0(float W); /* --> <-- */
[62] void arpeg_1(float W); /* --> */
[63] void arpeg_2(float W); /* <-- */
[64] /*############################# SUB_PROGRAMMS */
[65] /*IIIIIIIIIIIIIIII НОТА */
[66] void n(float f,float l)
[67] {
[68] sound(f);
[69] delay(l);
[70] nosound();
[71] }
[72] /*IIIIIIIIIIIIIIII СОНАТА 17 (затакт и 4 такта) */
[73] void sonata17(float W)
[74] {
[75] n(L_,W/16); n(F_*SO,W/16); n(M_*SO,W/16);
[76] /*------------- 1 */
[77] n(R_*SO,W/8); n(P_,W/16); n(L_*SO,W/16); n(F_*SO,W/16); n(M_*SO,W/16);
[78] n(R_*SO,W/8); n(P_,W/16); n(L_*SO,W/16); n(F_*SO,W/16); n(M_*SO,W/16);
[79] n(R_*SO,W/8); n(P_,W/16); n(L_,W/16); n(F_*SO,W/16); n(R_*SO,W/16);
[80] n(M_*SO,W/8); n(P_,W/16); n(L_,W/16); n(S_*SO,W/16); n(F_*SO,W/16);
[81] /*------------- 2 */
[82] n(M_*SO,W/8); n(P_,W/16); n(L_,W/16); n(S_*SO,W/16); n(F_*SO,W/16);
[83] n(M_*SO,W/8); n(P_,W/16); n(L_,W/16); n(S_*SO,W/16); n(F_*SO,W/16);
[84] n(M_*SO,W/8); n(P_,W/16); n(L_,W/16); n(S_*SO,W/16); n(M_*SO,W/16);
[85] n(F_*SO,W/8); n(P_,W/16); n(R_*SO,W/16); n(L_*SO,W/16); n(R_*TO,W/16);
[86] /*------------- 3 */
[87] n(CB_*SO,W/8); n(P_,W/16); n(CB_,W/16); n(R_*SO,W/16); n(CB_,W/16);
[88] n(S_*SO,W/8); n(P_,W/16); n(S_,W/16); n(CB_ ,W/16); n(S_*SO,W/16);
[89] n(M_,W/8); n(P_,W/16); n(M_,W/16); n(L_ ,W/16); n(M_*SO,W/16);
[90] n(F_*SO,W/8); n(P_,W/16); n(F_,W/16); n(L_ ,W/16); n(F_*SO,W/16);
[91] /*------------- 4 */
[92] n(R_*SO,W/8); n(P_,W/16); n(R_,W/16); n(L_,W/16); n(R_*SO,W/16);
[93] n(DD_*SO,W/8); n(P_,W/16); n(DD_,W/16); n(L_,W/16); n(DD_*SO,W/16);
[94] n(R_ *SO,W/4);
[95] }
[96] /*IIIIIIIIIIIIIIII СОНАТА 17 (затакт и один такт) */
[97] void sonata17r(float W)
[98] {
[99] n(L_,W/16); n(F_*SO,W/16); n(M_*SO,W/16);
[100] /*------------- 1 */
[101] n(R_*SO,W/8); n(P_,W/16); n(L_*SO,W/16); n(F_*SO,W/16); n(M_*SO,W/16);
[102] n(R_*SO,W/8); n(P_,W/16); n(L_*SO,W/16); n(F_*SO,W/16); n(M_*SO,W/16);
[103] n(R_*SO,W/8); n(P_,W/16); n(L_, W/16); n(F_*SO,W/16); n(R_*SO,W/16);
[104] n(M_*SO,W/8); n(P_,W/16);
[105] }
[106] /*IIIIIIIIIIIIIIII ЭЛИЗЕ */
[107] void elise(float W)
[108] {
[109] n(M_*SO,W/16); n(RD_*SO,W/16); n(M_*SO,W/16);
[110] /*------------- 1 */
[111] n(RD_*SO,W/16); n(M_*SO,W/16); n(C_,W/16); n(R_*SO,W/16); n(D_*SO,W/16);
[112] n(L_,W/8); n(P_,W/16);
[113] }
[114] /*IIIIIIIIIIIII СИРЕНА ВОСХОДЯЩАЯ-НИСХОДЯЩАЯ */
[115] void siren_0(float W)
[116] {
[117] int note;
[118] int freq_max=3952;
[119] int freq_min=33;
[120] /*--------- D_*CO (262*0,125=32.75 Hz) --> C_*FO(494*8=3952 Hz) */
[121] for (note=freq_min;note<(freq_max+1);note++) n(note,W);
[122] /*--------- C_*FO(494*8=3952 Hz) --> D_*CO(262*0,125= 32.75Hz) */
[123] for (note=freq_max;note>(freq_min-1); note--) n(note,W);
[124] }
[125] /*IIIIIIIIIIIIIIIIIIIIIIII СИРЕНА ВОСХОДЯЩАЯ */
[126] void siren_1(float W)
[127] {
[128] int note;
[129] int freq_max=3952;
[130] int freq_min=33;
[131] /*--------- D_*CO(262*0,125=32.75 Hz) --> C_*FO(494*8=3952 Hz) */
[132] for (note=freq_min;note<(freq_max+1);note++) n(note,W);
[133] /**/
[134] }
[135] /*IIIIIIIIIIIIIIIIIIIIIIII СИРЕНА НИСХОДЯЩАЯ */
[136] void siren_2(float W)
[137] {
[138] int note;
[139] int freq_max=3952;
[140] int freq_min=33;
[141] /*--------- C_*FO(494*8=3952 Hz) --> D_*CO(262*0,125=32.75 Hz) */
[142] for (note=freq_max;note>(freq_min-1); note--) n(note,W);
[143] }
[144] /*IIIIIIIIIIIIII ГАММА ВОСХОДЯЩАЯ-НИСХОДЯЩАЯ */
[145] void scale_0(float W)
[146] {
[147] float note;
[148] int i;
[149] int k;
[150] /*--------- D_*CO(262*0,125=32.75 Hz) --> C_*FO(494*8=3952 Hz) */
[151] for(i=0;i<7;i++)
[152] {
[153] if(i==0) k=CO; if(i==1) k=GO; if(i==2) k=LO;
[154] if(i==3) k=FIRST;
[155] if(i==4) k=SO; if(i==5) k=TO; if(i==6) k=FO;
[156] /**/
[157] n(D_*k,W); n(R_*k,W); n(M_*k,W);
[158] n(F_*k,W); n(S_*k,W);n(L_*k,W);
[159] n(C_*k,W);
[160] }
[161] /*--------- C_*FO(494*8=3952 Hz) --> D_*CO(262*0,125=32.75 Hz) */
[162] for(i=0;i<7;i++)
[163] {
[164] if(i==6) k=CO; if(i==5) k=GO; if(i==4) k=LO;
[165] if(i==3) k=FIRST;
[166] if(i==2) k=SO; if(i==1) k=TO; if(i==0) k=FO;
[167] /**/
[168] n(C_*k,W); n(L_*k,W); n(S_*k,W);
[169] n(F_*k,W); n(M_*k,W);n(R_*k,W);
[170] n(D_*k,W);
[171] }
[172] }
[173] /*IIIIIIIIIIIIIIIIIIIIIIIII ГАММА ВОСХОДЯЩАЯ */
[174] void scale_1(float W)
[175] {
[176] float note;
[177] int i;
[178] int k;
[179] /*--------- D_*CO(262*0,125=32.75 Hz) --> C_*FO(494*8=3952 Hz) */
[180] for(i=0;i<7;i++)
[181] {
[182] if(i==0) k=CO; if(i==1) k=GO; if(i==2) k=LO;
[183] if(i==3) k=FIRST;
[184] if(i==4) k=SO; if(i==5) k=TO; if(i==6) k=FO;
[185] /**/
[186] n(D_*k,W); n(R_*k,W); n(M_*k,W);
[187] n(F_*k,W); n(S_*k,W);n(L_*k,W);
[188] n(C_*k,W);
[189] }
[190] }
[191] /*IIIIIIIIIIIIIIIIIIIIIIIII ГАММА НИСХОДЯЩАЯ */
[192] void scale_2(float W)
[193] {
[194] float note;
[195] int i;
[196] int k;
[197] /*--------- C_*FO(494*8=3952 Hz) --> D_*CO(262*0,125=32.75 Hz) */
[198] for(i=0;i<7;i++)
[199] {
[200] if(i==6) k=CO; if(i==5) k=GO; if(i==4) k=LO;
[201] if(i==3) k=FIRST;
[202] if(i==2) k=SO; if(i==1) k=TO; if(i==0) k=FO;
[203] /**/
[204] n(C_*k,W); n(L_*k,W); n(S_*k,W);
[205] n(F_*k,W); n(M_*k,W);n(R_*k,W);
[206] n(D_*k,W);
[207] }
[208] }
[209] /*IIIIIIIIII АРПЕДЖИО ВОСХОДЯЩЕЕ-НИСХОДЯЩЕЕ */
[210] void arpeg_0(float W)
[211] {
[212] float note;
[213] int i;
[214] int k;
[215] /*--------- D_*CO(262*0,125=32.75 Hz) --> S_*FO(392*8= Hz) */
[216] for(i=0;i<7;i++)
[217] {
[218] if(i==0) k=CO; if(i==1) k=GO; if(i==2) k=LO;
[219] if(i==3) k=FIRST;
[220] if(i==4) k=SO; if(i==5) k=TO; if(i==6) k=FO;
[221] /**/
[222] n(D_*k,W); n(M_*k,W); n(S_*k,W);
[223] }
[224] /*--------- S_*FO(392*8= Hz) --> D_*CO(262*0,125=32.75 Hz) */
[225] for(i=0;i<7;i++)
[226] {
[227] if(i==6) k=CO; if(i==5) k=GO; if(i==4) k=LO;
[228] if(i==3) k=FIRST;
[229] if(i==2) k=SO; if(i==1) k=TO; if(i==0) k=FO;
[230] /**/
[231] n(S_*k,W); n(M_*k,W); n(D_*k,W);
[232] }
[233] }
[234] /*IIIIIIIIIIIIIIIIIIIIII АРПЕДЖИО ВОСХОДЯЩЕЕ */
[235] void arpeg_1(float W)
[236] {
[237] float note;
[238] int i;
[239] int k;
[240] /*--------- D_*CO(262*0,125=32.75 Hz) --> S_*FO(392*8= Hz) */
[241] for(i=0;i<7;i++)
[242] {
[243] if(i==0) k=CO; if(i==1) k=GO; if(i==2) k=LO;
[244] if(i==3) k=FIRST;
[245] if(i==4) k=SO; if(i==5) k=TO; if(i==6) k=FO;
[246] /**/
[247] n(D_*k,W); n(M_*k,W); n(S_*k,W);
[248] }
[249] }
[250] /*IIIIIIIIIIIIIIIIIIIII АРПЕДЖИО НИСХОДЯЩЕЕ */
[251] void arpeg_2(float W)
[252] {
[253] float note;
[254] int i;
[255] int k;
[256] /*--------- S_*FO(392*8= Hz) --> D_*CO(262*0,125=32.75 Hz) */
[257] for(i=0;i<7;i++)
[258] {
[259] if(i==6) k=CO; if(i==5) k=GO; if(i==4) k=LO;
[260] if(i==3) k=FIRST;
[261] if(i==2) k=SO; if(i==1) k=TO; if(i==0) k=FO;
[262] /**/
[263] n(S_*k,W); n(M_*k,W); n(D_*k,W);
[264] }
[265] }
[266] /*IIIIIIIIIIIIIIIIIIIIIIIIIIIII*/
[267] #endif /* SYS_MUS_ */
[268] /*###########################################*/