❶ 用c語言怎麼編寫音樂播放器
一.在程序中直接播放聲音文件
在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文件,第一種格式將播放系統默認的聲音,第二種格式不會播放系統默認的聲音。
二.將聲音文件加入到程序中
在VC++的程序設計中,可以利用各種標準的資源,如點陣圖,菜單,對話框等。同時VC++也允許用戶自定義資源,因此我們可以將聲音文件作為用戶自定義資源加入程序資源文件中,經過編譯連接生成EXE文件,實現無.W***文件的聲音播放。要實現作為資源的聲音文件的播放,首先要在資源管理器中加入待播放的聲音文件。
具體步驟入下:
1.獲得包含資源的模塊句柄:
HMODULE hmod=AfxGetResourceHandle();
2.檢索資源塊信息:
HRSRC hSndResource=FindResource(hmod,MAKEINTRESOURCE(IDR_W***E1),_T("W***E"));
3. 裝載資源數據並加鎖:
HGLOBAL hGlobalMem=LoadResource(hmod,hSndResource);
LPCTSTR lpMemSound=(LPCSTR)LockResource(hGlobalMem);
4.播放聲音文件:
sndPlaySound(lpMemSound,SND_MEMORY));
5.釋放資源句柄:
FreeResource(hGlobalMem);
❷ 怎樣用標准C語言播放音樂
用C語言播放音樂,一般需要額外的庫或者調用系統的API函數。
以Windows為例,可以通過PlaySound函數播放wav格式的音樂。示例如下:
#include<stdio.h>
#include<windows.h>
#include<mmsystem.h>
#pragmacomment(lib,"WINMM.LIB")
intmain()
{
PlaySound(TEXT("1.wav"),0,SND_FILENAME);//1.wav是要播放的音樂文件
return0;
}
如果想播放mp3音樂可以使用如下代碼。
注意:生成程序後,請在cmd中執行此程序,不要在vc/vs的IDE中運行。
#include<windows.h>
#include<mmsystem.h>
#include<stdio.h>
#pragmacomment(lib,"Winmm.lib")
intmain(intargc,char*argv[])
{
//絕對地址形式
TCHARfileName[]="ganlusi.mp3";
TCHARshortName[MAX_PATH];
GetShortPathName(fileName,shortName,sizeof(shortName)/sizeof(TCHAR));
TCHARcmd[MAX_PATH+10];
wsprintf(cmd,"play%s",shortName);
mciSendString(cmd,NULL,0,NULL);
Sleep(5*60*1000);//這里是防止一播放就結束做的延遲
return0;
}
❸ 用C語言實現ktv卡拉ok點歌系統
你的那登陸怎麼不用任何輸入,也能登陸!!!
*************************完成第三部分*****************************
************人員管理是不是人員的增加也刪除等操作******************
有關說明:
1.首次運行時,由於沒有建立用戶信息數據文件,系統會自動創建,會出現登陸面致慢的現象!
2.2和3許可權的人,可以進入修改用戶信息,但只能修改自己的密碼,不能進行其他任何操作,如:不能修改許可權.
3.其他的自己運行就知道了!!!!!!!!!!!!!!!!!!
#include <stdio.h>
#include <stdlib.h>
#include <conio.h>
#include <string.h>
#include <time.h>
#include <ctype.h>
#include <string.h>
#include <windows.h>
//結構3:用戶檔案
struct user{
int p_id;//人員序號
char usr[20];//用戶名
char psd[10];//密碼
int level;//許可權級別(1-全部許可權2-只能新增和查詢3-只能查詢)
}us[10]={{1,"admin","admin",1},{2,"kinglin","kinglin",2}},Online_User={0,"","",3};
//Oneline為在線用戶,可用於許可權級別等限制!!!
//第三部分:人員管理
void user_menu(struct user *show_user);
void user_add(struct user *show_user);
void user_find(struct user *show_user);
void user_update(struct user up_user);
void user_del(struct user *show_user);
//第四部分:休閑小游戲及登錄程序和界面設計
void main_menu();
void game_play();
void user_login();
//另外:文件操作
void data_user_read_file(struct user *show_user);
void data_user_write_file(struct user *show_user);
void main()
{
data_user_read_file(us);
user_login();
main_menu();
}
void main_menu()
{
int select;
system("cls");
system("color f1");
printf("\n\n\t\t\t+==============================+\n");
printf("\t\t\t| |\n");
printf("\t\t\t| 1->歌曲基本數據管理 |\n");
printf("\t\t\t| 2->歌曲點取播放 |\n");
printf("\t\t\t| 3->人員許可權管理 |\n");
printf("\t\t\t| 4->休閑小游戲 |\n");
printf("\t\t\t| 5->退出系統 |\n");
printf("\t\t\t| |\n");
printf("\t\t\t+==============================+\n");
scanf("%d",&select);
switch(select)
{
// case 1: music_menu()break;
// case 2: play_menu()break;
case 3: user_menu(us);break;
//case 4: game_play();break;
case 5: data_user_write_file(us);exit(1);break; //退出前保存數據。
default:printf("選項輸入錯誤!請選擇(1-5):");
}
}
void user_login()
{
int i,count=0;
char u_name[10];
char u_psd[10];
do{
system("cls");
system("color f1");
printf("\n");
printf("\t\t ");
for(i=1;i<=60000000;i++)
{
if (i%3000000==0)
printf("☆");
}
printf("\n\n\t\t\t 歡迎進入KTV點歌系統! \n");
printf("\t\t\t \n");
printf("\t\t\t 風花雪月 \n");
printf("\t\t\t 研發小組 \n");
printf("\t\t\t 組長:王林 \n");
printf("\n\t\t\t 艾生芳 羅澤宇 鄧豐波\n");
printf("\n\t\t\t 2007/08/15\n");
printf("\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t\t ");
for(i=1;i<=60000000;i++)
{
if (i%3000000==0)
printf("★\b\b");
}
printf("\n");
printf("\n\t\t\t用戶名:");
fflush(stdin);
gets(u_name);
printf("\n\t\t\t密 碼:");
for(i=0;i<10;i++)
{
fflush(stdin);
u_psd[i]=getch();
if (int (u_psd[i])==13)
{
u_psd[i]='\0';
break;
}
else if (int (u_psd[i])==8)
{
i=i-2;
printf("\b \b");
}
else
printf("*");
}
u_psd[i]='\0';
for(i=0;i<10;i++)
{
if(strcmp(u_name,us[i].usr)==0&&us[i].p_id>0)
break;
}
if (strcmp(u_psd,us[i].psd)==0)
{
printf("\n\t\t\t\t登陸成功!\n");
Sleep(1500);
for(i=0;i<sizeof(us)/sizeof(us[0]);i++)
{
if(stricmp(us[i].usr,u_name)==0)
{//登陸成功,記錄用戶信息
Online_User.p_id=us[i].p_id;
sprintf(Online_User.usr,"%s",us[i].usr);
sprintf(Online_User.psd,"%s",us[i].psd);
Online_User.level=us[i].level;
break;
}
}
break;
}
else
{
count++;
if(count>=3)
printf("三次密碼不正確,請稍後再試!");
else
printf("\n\t\t\t用戶名或密碼不正確,請重新輸入!\n");
}
}while(count<3);
}
void user_menu(struct user *show_user)
{
int sign=1,select;
while(sign)
{
system("cls");
system("color b1");
printf("\n\n\t\t\t+==============================+\n");
printf("\t\t\t| |\n");
printf("\t\t\t| 1->增加用戶信息 |\n");
printf("\t\t\t| 2->刪除用戶信息 |\n");
printf("\t\t\t| 3->查詢用戶許可權 |\n");
printf("\t\t\t| 4->修改用戶信息 |\n");
printf("\t\t\t| 5->退出管理 |\n");
printf("\t\t\t| |\n");
printf("\t\t\t+==============================+\n");
printf("選擇操作數:");
fflush(stdin);
scanf("%d",&select);
if((Online_User.level==2&&select==2)||(Online_User.level==3&&select!=3&&select!=4&&select!=5))
select=6;
switch(select)
{
case 1: user_add(show_user);break;
case 2: user_del(show_user);break;
case 3: user_find(show_user);break;
case 4: user_update(Online_User);break;
case 5: sign=0;break;
case 6: printf("\t\t\t警告:你的許可權不足,3 秒後自動返回!");Sleep(3000);break;
default:printf("選項輸入錯誤!請選擇(1-5):");
}
}
}
void user_update(struct user up_user)
{
int sign=1,select,level=1,i;;
char usr[20]="",psd[10]="";//密碼
char psd_1[10]=" ";//重復密碼
while(sign==1)
{
system("cls");
printf("\t\t\t===================================\n");
printf("\t\t\t++ KTV點歌系統--更新用戶信息 ++\n");
printf("\t\t\t++ 1.修改密碼 ++\n");
printf("\t\t\t++ 2.設置許可權 ++\n");
printf("\t\t\t++ 3.更新用戶庫 ++\n");
printf("\t\t\t++ 4.返回上一菜單 ++\n");
printf("\t\t\t===================================\n");
fflush(stdin);
scanf("%d",&select);
if((Online_User.level==2||Online_User.level==3)&&select!=1&&select!=4)
select=5;
switch(select)
{
case 1: printf("\t\t\t 新 密 碼:");
fflush(stdin);
scanf("%s",psd);
printf("\t\t\t 重復密碼:");
fflush(stdin);
scanf("%s",psd_1);
if(stricmp(psd,psd_1)!=0)
{ printf("\t\t兩次輸入密碼不一致!3秒後返回自動!\n");Sleep(3000);break;}
sprintf(up_user.psd,"%s",psd);
for(i=0;i<sizeof(us)/sizeof(us[0]);i++)
if(stricmp(us[i].usr,up_user.usr)==0&&us[i].p_id>0)
{ sprintf(us[i].psd,"%s",psd); break;}
data_user_write_file(us);
break;
case 2: printf("\t\t\t 用 戶 名:");
fflush(stdin);
scanf("%s",usr);
printf("\t\t\t 設置許可權:");
fflush(stdin);
scanf("%d",&level);
for(i=0;i<sizeof(us)/sizeof(us[0]);i++)
if(stricmp(us[i].usr,usr)==0&&us[i].p_id>0)
{ us[i].level=level; break;}
data_user_write_file(us);
break;
case 3: data_user_write_file(us); break;
case 4: sign=0;break;
case 5: printf("\t\t\t警告:你的許可權不足,3 秒後自動返回!");Sleep(3000);break;
default:printf("選項輸入錯誤!請選擇(1-3):");
}
}
}
void user_add(struct user *show_user)
{
int i,sign=1;
char usr_cp[20],usr[20]="";//用戶名 ;
char psd[10]="";//密碼
char psd_1[10]=" ";//重復密碼
int level;
while(sign)
{
sign=0;
system("cls");
printf("\t\t\t===================================\n");
printf("\t\t\t++ KTV點歌系統--添加用戶 ++\n");
printf("\t\t\t===================================\n");
printf(" 注意: 1.根據提示,輸入用戶名、密碼、並設置用戶許可權!\n");
printf(" 2.許可權級別(1-全部許可權2-只能新增和查詢3-只能查詢.\n\n");
printf("\t\t\t 用 戶 名:");
fflush(stdin);
scanf("%s",usr);
printf("\t\t\t 密 碼:");
fflush(stdin);
scanf("%s",psd);
printf("\t\t\t 重復密碼:");
fflush(stdin);
scanf("%s",psd_1);
printf("\t\t\t 設置許可權:");
fflush(stdin);
scanf("%d",&level);
for(i=0;i<sizeof(show_user[0])/sizeof(show_user);i++)
{
sprintf(usr_cp,"%s",show_user[i].usr);
if(stricmp(usr_cp,usr)==0||stricmp(usr,"*")==0)
{ sign=1; printf("\t\t輸入的用戶名已經存在或者為空!1 秒後自動返回!\n");Sleep(1500);break;}
}
if(stricmp(psd,psd_1)!=0&&sign==0)
{ sign=1; printf("\t\t兩次輸入密碼不一致!3 秒後自動返回!\n");Sleep(1500);break;}
for(i=0;i<sizeof(show_user[0])/sizeof(show_user) && sign==0;i++)
{
if(show_user[i].p_id==0)
{
show_user[i].p_id=i+1;
sprintf(show_user[i].usr,"%s",usr);
sprintf(show_user[i].psd,"%s",psd);
show_user[i].level=level;
data_user_write_file(show_user);
break;
}
if(i-1==sizeof(show_user[0])/sizeof(show_user)) {printf("已達到最大用戶數!");}
}
}
}
void user_find(struct user *show_user)
{
int i,sign=1;
char usr_cp[20],usr[20],ctnu='Y';
while(ctnu=='Y'||ctnu=='y')
{
system("cls");
printf("\t\t\t===================================\n");
printf("\t\t\t++ KTV點歌系統--用戶信息查詢 ++\n");
printf("\t\t\t===================================\n");
printf("\t\t 提示:輸入*號,可查詢所有用戶信息!\n");
printf("\t 用 戶 名:");
fflush(stdin);
scanf("%s",usr);
printf("%d",stricmp(usr,"*"));
if(stricmp(usr,"*")==0)
{
printf("\t\t\t 編號 用戶名 用戶許可權\n");
for(i=0;i<sizeof(show_user[0])/sizeof(show_user);i++)
if(show_user[i].p_id>0)
printf("\t\t\t\t %d %s %d\n",show_user[i].p_id,show_user[i].usr,show_user[i].level);
}
for(i=0;i<sizeof(show_user[0])/sizeof(show_user) && stricmp(usr,"*")!=0;i++)
{
sprintf(usr_cp,"%s",show_user[i].usr);
if(stricmp(usr_cp,usr)==0&&show_user[i].p_id>0)
{
printf("\t\t\t 編號 用戶名 用戶許可權\n");
printf("\t\t\t\t %d %s %d\n",show_user[i].p_id,show_user[i].usr,show_user[i].level);
break;
}
}
if(i==sizeof(show_user[0])/sizeof(show_user)&&stricmp(usr,"*")!=0)
printf("\t\t 用戶不存在。\n");
printf("\n\t\t\t 繼續-查詢操作?(Y||N):");
fflush(stdin);
scanf("%c",&ctnu);
}
}
void user_del(struct user *show_user)
{
int i;
char usr_cp[20],usr[20],ctnu='Y';
while(ctnu=='Y'||ctnu=='y')
{
system("cls");
printf("\t\t\t===================================\n");
printf("\t\t\t++ KTV點歌系統--刪除用戶 ++\n");
printf("\t\t\t===================================\n");
printf("\t\t\t 用 戶 名:");
fflush(stdin);
scanf("%s",usr);
for(i=0;i<sizeof(show_user[0])/sizeof(show_user);i++)
{
sprintf(usr_cp,"%s",show_user[i].usr);
if(stricmp(usr_cp,usr)==0&&stricmp(usr_cp,"admin")!=0&&show_user[i].p_id>0)
{
printf("\t\t已刪除: 編號 %d 用戶名 %s 用戶許可權 %d 的用戶。\n",show_user[i].p_id,show_user[i].usr,show_user[i].level);
show_user[i].p_id=0;
sprintf(show_user[i].usr,"%s","");
data_user_write_file(show_user);
break;
}
}
if(i==sizeof(show_user[0])/sizeof(show_user)) printf("\t\t\t 用戶不存在,刪除失敗。\n");
printf("\n\t\t 繼續下一個-刪除操作?(Y||N):");
fflush(stdin);
scanf("%c",&ctnu);
}
}
void data_user_read_file(struct user *show_user)
{
FILE *fp;
int i;
if((fp=fopen("user_data.dat","rb"))==NULL)
{
fp=fopen("user_data.dat","wb+");
printf("Can not open the oid_data_file,It's a new_data_file!\n");
Sleep(3000);
}
for(i=0;i<sizeof(show_user[0])/sizeof(show_user);i++)
{
fseek(fp,i*sizeof(struct user),0);
fread(&show_user[i],sizeof(struct user),1,fp);
}
fclose(fp);
}
void data_user_write_file(struct user *show_user)
{
FILE *fp;
int i;
if((fp=fopen("user_data.dat","wb"))==NULL)
{
printf("Can not open the file\n");
exit(0);
}
for(i=0;i<sizeof(show_user[0])/sizeof(show_user);i++)
{
fseek(fp,i*sizeof(struct user),0);
if(fwrite(&show_user[i],sizeof(struct user),1,fp)!=1)
printf("File write error\n");
}
fclose(fp);
}
!!!!!!!!!!!!!!!!!!!!!!!!!自己去稍微做修改!!!!!!!!!!!!!!!!!!!!!!!!!
********************************結束******************************
❹ 如何用c語言編寫8051單片機音樂程序
#define uchar unsigned char //定義一下方便使用
#define uint unsigned int
#define ulong unsigned long
#include <reg52.h> //包括一個52標准內核的頭文件
char code dx516[3] _at_ 0x003b;//這是為了模擬設置的
sbit BEEP=P1^7; //喇叭輸出腳
sbit P10=P1^0;
sbit K1= P3^2;
sbit K2= P3^5;
sbit K3= P2^4;
sbit K4= P2^5;
uchar th0_f; //在中斷中裝載的T0的值高8位
uchar tl0_f; //在中斷中裝載的T0的值低8位
//T0的值,及輸出頻率對照表
uchar code freq[36*2]={
0xA9,0xEF,//00220HZ ,1 //0
0x93,0xF0,//00233HZ ,1#
0x73,0xF1,//00247HZ ,2
0x49,0xF2,//00262HZ ,2#
0x07,0xF3,//00277HZ ,3
0xC8,0xF3,//00294HZ ,4
0x73,0xF4,//00311HZ ,4#
0x1E,0xF5,//00330HZ ,5
0xB6,0xF5,//00349HZ ,5#
0x4C,0xF6,//00370HZ ,6
0xD7,0xF6,//00392HZ ,6#
0x5A,0xF7,//00415HZ ,7
0xD8,0xF7,//00440HZ 1 //12
0x4D,0xF8,//00466HZ 1# //13
0xBD,0xF8,//00494HZ 2 //14
0x24,0xF9,//00523HZ 2# //15
0x87,0xF9,//00554HZ 3 //16
0xE4,0xF9,//00587HZ 4 //17
0x3D,0xFA,//00622HZ 4# //18
0x90,0xFA,//00659HZ 5 //19
0xDE,0xFA,//00698HZ 5# //20
0x29,0xFB,//00740HZ 6 //21
0x6F,0xFB,//00784HZ 6# //22
0xB1,0xFB,//00831HZ 7 //23
0xEF,0xFB,//00880HZ `1
0x2A,0xFC,//00932HZ `1#
0x62,0xFC,//00988HZ `2
0x95,0xFC,//01046HZ `2#
0xC7,0xFC,//01109HZ `3
0xF6,0xFC,//01175HZ `4
0x22,0xFD,//01244HZ `4#
0x4B,0xFD,//01318HZ `5
0x73,0xFD,//01397HZ `5#
0x98,0xFD,//01480HZ `6
0xBB,0xFD,//01568HZ `6#
0xDC,0xFD,//01661HZ `7 //35
};
//定時中斷0,用於產生唱歌頻率
timer0() interrupt 1
{
TL0=tl0_f;TH0=th0_f; //調入預定時值
BEEP=~BEEP; //取反音樂輸出IO
}
//******************************
//音樂符號串解釋函數
//入口:要解釋的音樂符號串,輸出的音調串,輸出的時長串
changedata(uchar *song,uchar *diao,uchar *jie)
{
uchar i,i1,j;
char gaodi; //高低+/-12音階
uchar banyin;//有沒有半個升音階
uchar yinchang;//音長
uchar code jie7[8]={0,12,14,16,17,19,21,23}; //C調的7個值
*diao=*song;
for(i=0,i1=0;;)
{
gaodi=0; //高低=0
banyin=0;//半音=0
yinchang=4;//音長1拍
if((*(song+i)=='|') || (*(song+i)==' ')) i++;
//拍子間隔和一個空格過濾
switch(*(song+i))
{
case ',': gaodi=-12;i++;//低音
break;
case '`': gaodi=12;i++; //高音
break;
}
if(*(song+i)==0) //遇到0結束
{
*(diao+i1)=0; //加入結束標志0
*(jie+i1)=0;
return;
}
j=*(song+i)-0x30; i++; //取出基準音
j=jie7[j]+gaodi; //加上高低音
yinc: switch(*(song+i))
{
case '#': //有半音j加一個音階
i++;j++;
goto yinc;
case '-': //有一個音節加長
yinchang+=4;
i++;
goto yinc;
case '_': //有一個音節縮短
yinchang/=2;
i++;
goto yinc;
case '.': //有一個加半拍
yinchang=yinchang+yinchang/2;
i++;
goto yinc;
}
*(diao+i1)=j; //記錄音符
*(jie+i1)=yinchang; //記錄音長
i1++;
}
}
//******************************************
//奏樂函數
//入口:要演奏的音樂符號串
void play(uchar *songdata)
{
uchar i,c,j=0;
uint n;
uchar xdata diaodata[112]; //音調緩沖
uchar xdata jiedata[112]; //音長緩沖
changedata(songdata,diaodata,jiedata); //解釋音樂符號串
TR0=1;
for(i=0;diaodata[i]!=0;i++) //逐個符號演奏
{
tl0_f=freq[diaodata[i]*2]; //取出對應的定時值送給T0
th0_f=freq[diaodata[i]*2+1];
for(c=0;c<jiedata[i];c++) //按照音長延時
{
for(n=0;n<32000;n++);
if((!K1)||(!K2)||(!K3)||(!K4))//發現按鍵,立即退出播放
{
TR0=0;
return;
}
}
TR0=0;
for(n=0;n<500;n++); //音符間延時
TR0=1;
}
TR0=0;
}
//仙劍
uchar code xianjian[]={
"|3_3_3_2_3-|2_3_2_2_,6,6_,7_|12_1_,7,6_,5_|,6---|"
"3_3_3_2_3.6_|5_6_5_5_22_3_|45_4_32_1_|3.--3_|"
"67_6_55_3_|5--3_5_|26_5_32_3_|3---|"
"26_6_6-|16_6_66_7_|`17_6_76_7_|3.--3_|"
"67_6_55_3_|5--3_5_|67_6_76_7_|3---|"
"26_6_6-|16_6_66_7_|`17_6_7.5_|6---|"
};
uchar code song3[]={
"5-5_3_2_1_|3---|6-6_4_2_1_"
",7--,5_|1.3_5.1_|,7.3_5 5_|"
"6.7_`1.6_|6_5_5-3_2_|1.1_13_2_|"
"1.1_12_3_|2.1_,62_3_|2-- ,5_|"
"1.3_5.1_|,7.3_55_|6.7_`1.6_|"
"6_5_5-3_2_|1.1_13_2_|1.1_12_3_"
"2.,6_,71_2_|1--"
};
//世上只有媽媽好
uchar code mamahao[]={
"6.5_35|`16_5_6-|35_6_53_2_|1_,6_5_3_2-|"
"2.3_55_6_|321-|5.3_2_1_,6_1_|,5--"
};
//三個按鍵選擇三首不同的音樂播放,一個鍵停止播放
void main(void) // 主程序
{
TMOD = 0x01; //使用定時器0的16位工作模式
TR0 = 0;
ET0 = 1; //定時器0中斷
EA = 1; //打開總中斷
while(1)
{
if(!K1)
{
while(!K1);
play(xianjian); //播放音樂
}
if(!K2)
{
while(!K2);
play(song3); //播放音樂
}
if(!K3)
{
while(!K3);
play(mamahao); //播放音樂
}
}
}
❺ 求一個c語言代碼,能實現播放音樂功能
用C語言播放音樂,一般需要額外的庫或者調用系統的API函數。
以Windows為例,可以通過PlaySound函數播放wav格式的音樂。示例如下:
#include<stdio.h>
#include<windows.h>
#include<mmsystem.h>
#pragma comment(lib, "WINMM.LIB")
int main()
{
PlaySound(TEXT("1.wav"),0,SND_FILENAME); //1.wav是要播放的音樂文件
return 0;
}
如果想播放mp3音樂可以使用如下代碼。
注意:生成程序後,請在cmd中執行此程序,不要在vc/vs的IDE中運行。
#include <windows.h>
#include <mmsystem.h>
#include <stdio.h>
#pragma comment(lib, "Winmm.lib")
int main(int argc, char *argv[])
{
//絕對地址形式
TCHAR fileName[]="ganlusi.mp3";
TCHAR shortName[MAX_PATH];
GetShortPathName(fileName,shortName,sizeof(shortName)/sizeof(TCHAR));
TCHAR cmd[MAX_PATH+10];
wsprintf(cmd,"play %s",shortName);
mciSendString(cmd,NULL, 0, NULL);
Sleep(5 * 60 * 1000); //這里是防止一播放就結束做的延遲
return 0;
}
❻ 如何用c語言編寫歌曲
很簡單的。
計算機發聲原理:
聲音有三個特性:響度、音調、音色。
響度,這個非常好理解。就是我們感覺到的聲音的大小。具體點說就是由「振幅」決定,振幅越大響度越大。一般計量響度的單位是分貝,dB。
音調,這個就是聲音的高低,由「頻率」決定,頻率越高音調越高。頻率單位是赫茲,符號Hz。
音色,在生活當中,我們會發現各種物品發出的聲音的特點是不一樣的,如二胡和笛子。聲音的特性就是音色。而決定聲音的音色是由於物體本身的材料、結構。
對於我們的計算機而言。發聲的設置都是固定了的。要麼要計算機上的那個喇叭,那麼是外接的音響等。
現在這里對計算機上的那個喇叭用TurboC2.0進行編程,使之發出動聽的音樂《梁祝》。
第一步:定義《梁祝》的每一個音符的頻率和時間,將定義好的頻率和時間寫入文件或者保存在數組裡面。如果僅僅是寫一兩個程序自己玩玩的話,那直接保存在數組裡面就可以了。如果你想自己寫個播放器的話,那你先自己定義一種音樂格式文件(類似.mp3、.wav這種文件,這里暫時把這個文件定為.mymusic),將《梁祝》每個音符的頻率、時間寫入這個自定義的音樂格式文件liangzhu.mymusic。
第二步:完成了liangzhu.mymusic文件的定義後,我們要做的事情就是讀文件,控制喇叭發聲。這個具體可以參照現有的資料。這里需要事先寫幾個函數,讀文件的函數,暫停函數,頻率對照函數等等。
第三步,將上面的程序鏈接起來,就OK了。
將上面的步驟優化下,一個DIY的音樂播放器就成功了。
我上面說的只是控制了聲音的頻率和時間,其實還可以控制響度。對於一些特殊的設備,控制音色也不是不可能。
這種程序我在大一的時候寫過。現在想起來不難的。
主要是對C語言是否熟練,當然,你想要實現一個播放器,那你途中會遇到很多困難的。
祝你好運!
❼ 如何寫一個可以播放音樂的程序(用簡單C語言編寫,可以給出音頻文件,只需要播放即可)
用VC++編譯通過,代碼如下(其中a.wav為自己給出):
#include<windows.h>
#pragma comment(lib,"winmm.lib")
void main()
{
PlaySound("C:\\a.wav",0,SND_FILENAME|SND_SYNC);
}
❽ 卡拉OK點歌台 C語言源程序
點歌台!!
用switch一定行!!
試一試吧!
❾ C語言程序設計一個點歌系統求幫忙
如果 您有不懂的地方可以免費幫您解決 如果您直接要開源系統 帶源碼 我可以幫您製作 我們團隊
5個月幫您完成 價格 50萬 可以當面交易 可以擔保交易