#include windows.h
成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比鞏義網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式鞏義網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋鞏義地區(qū)。費(fèi)用合理售后完善,十多年實(shí)體公司更值得信賴。
#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]);
}
}
在mingw安裝目錄下引用
引用
代碼為你那個(gè)。
音樂文件已wav格式放到bin ,dubug下,也就是exe在的地方。
試試!
用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}
代碼如下:
#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)存中是順序存儲(chǔ)的。剛好我們也已經(jīng)得知了WAV文件在文件中的順序以及該順序中每個(gè)部分對應(yīng)的含義。
那么我們可以事先根據(jù)前面所說的WAV文件結(jié)構(gòu)來定義好一個(gè)struct,然后在main主函數(shù)中初始化這個(gè)struct,并且通過fread的第一個(gè)參數(shù)帶入初始化好的這個(gè)struct,那么執(zhí)行之后就會(huì)自動(dòng)讀取該文件,并且按照順序自動(dòng)把這些元數(shù)據(jù)填充進(jìn)了我們初始化好的struct中。
網(wǎng)站欄目:c語言程序背景音樂函數(shù) c語言程序背景音樂函數(shù)有哪些
本文來源:http://jinyejixie.com/article48/hehiep.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計(jì)公司、網(wǎng)站導(dǎo)航、品牌網(wǎng)站設(shè)計(jì)、外貿(mào)建站、網(wǎng)站維護(hù)、品牌網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)