Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
LAB_WORKS.doc
Скачиваний:
2
Добавлен:
06.11.2018
Размер:
710.66 Кб
Скачать

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] /*###########################################*/

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]