本文目錄一覽:
如何用c語言編寫歌曲
我們知道,音樂是音高和音長的有序組合,設計微機音樂最重要的就是如何定義音高和音長,以及如何讓揚聲器發出指定的音符。下面給出音符與頻率的關係表。C語言提供的三個函數sound( )、nosound( )和clock( )可以很方便地解決上述的問題。sound( )函數可以用指定頻率打開PC機揚聲器直到用nosound( )函數來關閉它; clock( )函數正好用來控制發聲時間,而且它不受PC機主頻高低的影響。下面這段程序可使微機發出c調1的聲音。
音符與頻率關係表
音符 c d e f g a b
1 2 3 4 5 6 7
頻率 262 294 330 349 392 440 494
音符 c d e f g a b
1 2 3 4 5 6 7
頻率 523 587 659 698 784 880 988
音符 c d e f g a b
1 2 3 4 5 6 7
頻率 1047 1175 1319 1397 2568 1760 1976
#includestdio.h
#includedos.h
void pause(int);
void sound1(int,int);
void main(void)
{
int i,freq,speed=5;
int time=4*speed;
char *qm=”iddgwwwQQgfff dddfghhhggg ddgwwwqqgfff\
ddffhjqqqqq wpggjhgddgqq hhqwwqjjjggg\
ddgwwwqqqgfff ddffhjqqqqqq”;/*定義歌曲*/
while (*qm++ !=’\0′){
i=1;
switch(*qm){
case ‘k’:
time=1*speed; i=0;
break;
case ‘i’:
time=6*speed; i=0;
break;
case ‘o’:
time=10*speed; i=0;
break;
case ‘p’:
pause(time); i=0;
break;
case ‘a’:
freq=523;
break;
case ‘s’:
freq=587;
break;
case ‘d’:
freq=659;
break;
case ‘f’:
freq=698;
break;
case ‘g’:
freq=784;
break;
case ‘h’:
freq=880;
break;
case ‘j’:
freq=988;
break;
case ‘z’:
freq=262;
break;
case ‘X’:
freq=294;
break;
case ‘c’:
freq=330;
break;
case ‘v’:
freq=349;
break;
case ‘b’:
freq=392;
break;
case ‘n’:
freq=440;
break;
case ‘m’:
freq=494;
break;
case ‘q’:
freq=1047;
break;
case ‘w’:
freq=1175;
break;
case ‘e’:
freq=1319;
break;
case ‘r’:
freq=1397;
break;
case ‘t’:
freq=2568;
break;
case ‘y’:
freq=1760;
break;
case ‘u’:
freq=1976;
break;
default:
i=0;
break;
}
if(i)
sound1(freq,time);
}
}
void sound1(int freq,int time) /*freq為頻率,time為持續時間*/
{
union{
long divisor;
unsigned char c[2];
}count;
unsigned char ch;
count.divisor=1193280/freq; /* 1193280 是系統時鐘速率*/
outp(67,182);
outp(66,count.c[0]);
outp(66,count.c[1]);
ch=inp(97);
outp(97,ch|3);
pause(time);
outp(97,ch);
}
void pause(int time)
{
int t1,t2;
union REGS in,out;
in.h.ah=0X2c;
int86(0X21,in,out); /* 取當前時間*/
t1=t2=100*out.h.dh+out.h.dl; /*out.h.dh 為秒值,out.h.dl 為1/100 秒值*/
while(t2-t1time)
{
int86(0X21,in,out);
t2=100*out.h.dh+out.h.dl;
if (t2t1)t2+=6000; /* 增加一分鐘*/
}
}
有什麼關於C語言的歌曲呢?
1、告訴你最快的方法就是百度下個單片機音樂代碼生成器,然後按照《最近好嗎》《不開心與沒煩惱》《我們結婚吧》的樂譜將每一個音符輸入一遍,自動生成代碼,下載進去就可以了。
2、另外就是手動編寫了,根據對應頻率每個音符每個調對應的編碼,編好的碼放到一個數組,然後定時器產生不同的pwm驅動蜂鳴器發聲。高中低音有不同的頻率1-7個音節
如何在C語言的編程中插入音樂?
一.在程序中直接播放聲音文件\x0d\x0a在VC++ 中的多媒體動態連接庫中提供了一組與音頻設備有關的函數。利用這些函數可以方便地播放聲音。最簡單的播放聲音方法就是直接調用VC++中提供的聲音播放函數BOOL sndPlaySound ( LPCSTR lpszSound,UINT fuSound ); 或BOOL PlaySound( LPCSTR lpszSound, HMODULE hmod, DWORD fuSound );其中參數lpszSound是需要播放聲音的.W***文件的路徑和文件名, hmod在這裡為NULL,fuSound是播放聲音的標誌,詳細說明請參考VC++中的幫助。 例如播放C:soundmusic.wav可以用sndPlaySound (“c:\sound\music.wav”,SND_ASYNC);或PlaySound(“c:\sound\music.wav”,NULL, SND_ASYNC|SND_NODEFAULT );如果沒有找到music.wav文件,第一種格式將播放系統默認的聲音,第二種格式不會播放系統默認的聲音。\x0d\x0a\x0d\x0a二.將聲音文件加入到程序中\x0d\x0a在VC++的程序設計中,可以利用各種標準的資源,如點陣圖,菜單,對話框等。同時VC++也允許用戶自定義資源,因此我們可以將聲音文件作為用戶自定義資源加入程序資源文件中,經過編譯連接生成EXE文件,實現無.W***文件的聲音播放。要實現作為資源的聲音文件的播放,首先要在資源管理器中加入待播放的聲音文件。\x0d\x0a具體步驟入下:\x0d\x0a1.獲得包含資源的模塊句柄:\x0d\x0aHMODULE hmod=AfxGetResourceHandle();\x0d\x0a2.檢索資源塊信息:\x0d\x0aHRSRC hSndResource=FindResource(hmod,MAKEINTRESOURCE(IDR_W***E1),_T(“W***E”));\x0d\x0a3. 裝載資源數據並加鎖:\x0d\x0aHGLOBAL hGlobalMem=LoadResource(hmod,hSndResource);\x0d\x0aLPCTSTR lpMemSound=(LPCSTR)LockResource(hGlobalMem);\x0d\x0a4.播放聲音文件:\x0d\x0asndPlaySound(lpMemSound,SND_MEMORY));\x0d\x0a5.釋放資源句柄:\x0d\x0aFreeResource(hGlobalMem);
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/253159.html