代碼如下:
成都創(chuàng)新互聯(lián)公司堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的旌德網(wǎng)站設(shè)計(jì)、移動媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
#include windows.h
#include mmsystem.h
#pragma comment(lib, "WINMM.LIB")
/*播放音樂*/
void playMusic()
{
//aiyo.wav是放在代碼文件中
PlaySound(TEXT("aiyo.wav"),0,SND_FILENAME | SND_ASYNC);
}
/**
* 主? 函? 數(shù)(音樂放第一排)
*/
void main()
{
playMusic();
title();? ? ? ? ? ? //歡迎界面上的標(biāo)題
flower();? ? ? ? ? ?//打印字符畫
welcome();? ? ? ? ? //歡迎界面上的選項(xiàng)菜單
}
擴(kuò)展資料
C語言解析WAV音頻文件:
C語言基本的二進(jìn)制文件操作函數(shù)有fopen,fread等等。(注意是二進(jìn)制文件操作函數(shù),所以我們不討論fgets,這是普通的文本文件操作函數(shù))
fread是一個(gè)函數(shù)。從一個(gè)文件流中讀數(shù)據(jù),最多讀取count個(gè)項(xiàng),每個(gè)項(xiàng)size個(gè)字節(jié),如果調(diào)用成功返回實(shí)際讀取到的項(xiàng)個(gè)數(shù)(小于或等于count),如果不成功或讀到文件末尾返回 0。
它的函數(shù)原型為
size_t fread ( void *buffer, size_t size, size_t count, FILE *stream) ;
而且C語言還有一種類型叫做結(jié)構(gòu)體,它在內(nèi)存中是順序存儲的。剛好我們也已經(jīng)得知了WAV文件在文件中的順序以及該順序中每個(gè)部分對應(yīng)的含義。
那么我們可以事先根據(jù)前面所說的WAV文件結(jié)構(gòu)來定義好一個(gè)struct,然后在main主函數(shù)中初始化這個(gè)struct,并且通過fread的第一個(gè)參數(shù)帶入初始化好的這個(gè)struct,那么執(zhí)行之后就會自動讀取該文件,并且按照順序自動把這些元數(shù)據(jù)填充進(jìn)了我們初始化好的struct中。
#include windows.h
#include stdio.h
#include stdlib.h
#include string.h
#include conio.h
unsigned frequency[100];
char hight[100];
unsigned time[100];
unsigned rate;
void main()
{
void set(unsigned f[],char h[],unsigned t[],int r,int num);
void music(unsigned f[],unsigned t[],int num);
int flag=0;
FILE *f1;
int i,n,menu;
char FileName[30];
while(1)
{ f1=NULL;
i=n=0;
printf("本程序采用編碼的形式播放音樂。\n");
printf("\n用記事本編輯樂譜,然后通過輸入文件名播放音樂\n");
printf("樂譜文件可以自創(chuàng),也可以抄別人的\n");
printf("\n現(xiàn)在可以先輸入數(shù)字再按回車播放音樂:\n");
printf("1 播放指定音樂music1\n");
printf("2 播放指定音樂music2\n");
printf("3 通過程序文件名播放音樂\n");
printf("4 退出\n");
while(1)
{
printf("menu=");scanf("%d",menu);
if(menu==1)
{
strcpy(FileName,"music1.txt");
break;
}
if(menu==2)
{
strcpy(FileName,"music2.txt");
break;
}
if(menu==3)
{
scanf("%s",FileName);
break;
}
if(menu==4)
exit(0);
}
printf("\n該文件的音樂編碼如下:\n");
if((f1=fopen(FileName,"r"))==NULL)
{
printf("不能打開文件!\n");
exit(1);
}
fscanf(f1,"%d",rate);
while(!feof(f1)flag!=1)
{
fscanf(f1," %d%c%d",frequency[i],hight[i],time[i]);
printf(" %d%c%d",frequency[i],hight[i],time[i]);
if(time[i]!=-1)
{
i++;n++;
}
else
flag=1;
}
printf("\n");
set(frequency,hight,time,rate,n);
music(frequency,time,n);
fclose(f1);
}
getch();
}
void set(unsigned f[],char h[],unsigned t[],int r,int num)
{
int i,k;
for(i=0;inum;i++)
{
t[i]=t[i]*r;
switch(h[i])
{
case 'H':k=4;break;
case 'M':k=2;break;
case 'L':k=1;
}
switch(f[i])
{
case 1: f[i]=262*k; break;
case 2: f[i]=296*k; break;
case 3: f[i]=330*k; break;
case 4: f[i]=349*k; break;
case 5: f[i]=392*k; break;
case 6: f[i]=440*k; break;
case 7: f[i]=494*k; break;
}
}
}
void music(unsigned f[],unsigned t[],int num)
{
int i;
for(i=0;inum;i++)
{
Beep(f[i],t[i]);
}
}
用PlaySound 函數(shù)可以播放 .wav 格式音樂。\x0d\x0a例如 下面 播放 紫竹調(diào).wav 格式音樂,它存放在 D:\\zzz\\zzd.wav \x0d\x0a其它音樂格式能不能播放,要試驗(yàn)一下才知道,也許不行,也許可以。\x0d\x0a#include \x0d\x0a#include \x0d\x0a#include \x0d\x0a#pragma comment(lib, "winmm.lib")\x0d\x0a\x0d\x0avoid main(){\x0d\x0aPlaySound (TEXT("D:\\zzz\\zzd.wav"), NULL, SND_ASYNC | SND_NODEFAULT);\x0d\x0a \x0d\x0awhile (1) \x0d\x0a{\x0d\x0a printf("program is running... here\n"); //這里跑你的程序,按 Ctrl-C 組合鍵,結(jié)束程序。\x0d\x0a Sleep(1000); //休息1秒\x0d\x0a}\x0d\x0a\x0d\x0aexit(0);\x0d\x0a}