1. 求用c語言編寫的小蘋果的音樂簡譜程序代碼
葫蘆絲能吹奏出一個八度和三個音,你看看如果《小蘋果》的簡譜最低音和最高音的差多少個全音,如果超過了這個范圍就不能吹。即使沒有超過,還要考慮4音的特殊性,如果是要轉調的指法,那就更費勁,小蘋果節奏歡快,如果要用按半孔的指法用起來會有很大困難,這首曲子不太適合葫蘆絲演奏。
2. C語言中播放音樂的文件里裝的東西叫什麼
用C語言播放音樂,一般需要額外的庫或者調用系統的API函數。
以Windows為例,可以通過PlaySound函數播放wav格式的音樂。示例如下:
123456789
#include<<a href="https://www..com/s?wd=stdio.h&tn=44039180_cpr&fenlei=-y-bIi4WUvYETgN-" target="_blank" class="-highlight">stdio.h</a>>#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音樂可以使用如下代碼。
3. c語言怎麼寫插入音樂的程序
http://..com/question/231143472.html?push=core
http://..com/question/24018920.html
實訓項目三 樂譜播放程序設計
2009-03-19 21:25
一、實訓目的
1、用C語言開發音樂程序,寫自己喜歡或創作的音樂,使在沒有樂器的情況下聽到自己創作的音樂。
2、鞏固文件讀取和數組的有關知識。
3、學習使用PC機揚聲器的兩個控制函數。
二、功能要求
自己創作樂曲,將其轉換為計算機程序能夠識別的電子文本格式,利用PC機揚聲器的功能播放該樂曲。
三、編程參考
1、發聲原理
編寫音樂程序時,首先需要製作被演奏音樂的樂譜文件。製作樂譜文件可用不同的符號標記,只要所編制的程序易於識別即可。
下面是編制樂譜文件的一種規則:最高音在每個音的前面加「*」:高音,在每個音的前面加「h」;中音,在每個音的前面加「m」;低音,在每個音的前面加「l」。
「*」,「h」,「m」,「l」 與其控制的音符構成音高,決定發聲頻率。音高的後面是音長,可用整數或小數輸入,以控制延時,但中間必須用空格分開。樂譜文件的最前端是一個整數,表示音長基數,一般為300的倍數。樂譜文件的最末端是樂譜文件結束符「##」,以表示樂譜文件結束。
每個音的音長=音長基數*節拍數,其中,音長基數是樂譜文件的第一個字元,如上面樂譜文件為3600,每個音的音頻可用一模擬頻率值輸入。下面是中央C及其前後4個8度中各個音符的頻率值
低8度 1 2 3 4 5 6 7
131 147 165 176 196 220 247
中央C 1 2 3 4 5 6 7
262 296 329.7 349.2 392 440 493.9
高8度 1 2 3 4 5 6 7
523.3 587.3 659.3 698.5 784.0 880 987.8
2、PC機揚聲器的兩個控制函數
sound() 以指定頻率打開PC機的揚聲器,頻率以赫茲為單位。
nosound() 關閉揚聲器。
3、樂譜實例
巴赫的《小步舞曲》:
600 h2 4 m5 1 m6 1 m7 1 h1 1 h2 4 m5 4 m5 4 h3 4 h1 1 h2 1 h3 1 h4 1 h5 4 m5 4 m5 4 h1 4 h2 1 h1 1 m7 1 m6 1 m7 4 h1 1 m7 1 m6 1 m5 1 m4 4 m5 1 m6 1 m7 1 m5 1 m6 6 l2 1 m1 1 l7 1 l6 1 h2 4 m5 1 m6 1 m7 1 h1 1 h2 4 m5 4 m5 4 h3 4 h1 1 h2 1 h3 1 h4 1 h5 4 m5 4 m5 4 h1 4 h2 1 h1 1 m7 1 m6 1 m7 4 h1 1 m7 1 m6 1 m5 1 m6 4 m7 1 m6 1 m5 1 m4 1 m5 10 ##
四、拓展訓練
1、製作選曲菜單,使其可以播放多首樂曲;
2、修改某些參數,改變樂曲播放速度。
源程序
#include<stdio.h>
#include<stdlib.h>
#include<dos.h>
void main(int argc,char *argv[])
{ FILE *fp;
int rate;
char sound_high[3];
int sound_long;
register int i=0,j;
int sign=0;
float str[200][2];
if(argc!=2) /*命令行參數個數不正確*/
{ printf("Parameters Errors!\n");
exit(1);
} if((fp=fopen(argv[1],"r"))==NULL) /*文件打開失敗*/
{ printf("Open file music.doc Errors!\n");
exit(1);
} fscanf(fp,"%d",&rate);/*讀取音長基數的值*/
while(!feof(fp)&&!sign) /*文件沒有結束並且數據還是樂譜*/
{ fscanf(fp,"%s%d",sound_high,&sound_long); /*得到音頻,音長的數值*/
str[i][1]=rate*sound_long; /*音長=音長基數*節拍數*/
switch(sound_high[0])
{ case'*': /*最高音*/
switch(sound_high[1]) /*確定發聲頻率*/
{ case'1':
str[i++][0]=1046.5;
break;
case'2':
str[i++][0]=1174.7;
break;
case'3':
str[i++][0]=1318.5;
break;
case'4':
str[i++][0]=1396.9;
break;
case'5':
str[i++][0]=1568;
break;
case'6':
str[i++][0]=1760;
break;
case'7':
str[i++][0]=1975.5;
break;
default:
printf("\nErrors in music.doc\n");
exit(1);
}
break;
case'h': /*高音*/
switch(sound_high[1])
{ case'1':
str[i++][0]=523.3;
break;
case'2':
str[i++][0]=587.3;
break;
case'3':
str[i++][0]=659.3;
break;
case'4':
str[i++][0]=698.5;
break;
case'5':
str[i++][0]=784.0;
break;
case'6':
str[i++][0]=880;
break;
case'7':
str[i++][0]=987.8;
break;
default:
printf("\nErrors in music.doc\n");
exit(1);
}
break;
case'm': /*中音*/
switch(sound_high[1])
{ case'1':
str[i++][0]=262;
break;
case'2':
str[i++][0]=296;
break;
case'3':
str[i++][0]=329.6;
break;
case'4':
str[i++][0]=349.2;
break;
case'5':
str[i++][0]=392;
break;
case'6':
str[i++][0]=440;
break;
case'7':
str[i++][0]=493.9;
break;
default:
printf("\nErrors in music.doc\n");
exit(1);
}
break;
case'l': /*低音*/
switch(sound_high[1])
{ case'1':
str[i++][0]=131;
break;
case'2':
str[i++][0]=147;
break;
case'3':
str[i++][0]=165;
break;
case'4':
str[i++][0]=176;
break;
case'5':
str[i++][0]=196;
break;
case'6':
str[i++][0]=220;
break;
case'7':
str[i++][0]=247;
break;
default:
printf("\nErrors in music.doc\n");
exit(1);
}
break;
case'#':
if(sound_high[1]=='#')sign=1;
break;
default:
printf("\nErrors in music.doc\n");
exit(1);
} }
for(j=0;j<=i-1;j++)
{ sound(str[j][0]); /*按頻率發出歌曲的音調*/
delay(str[j][1]);
} nosound(); /*關閉揚聲器*/
}
4. 怎麼用C語言讀寫音樂文件
這個程序可能是最簡單的mp3播放器了。當然也談不上什麼功能。但是確實能播放。
鏈接時要指定庫文件。VC++是vfw32.lib, GCC是libvfw32.a.
我在VC6.0和GCC/MinGW 3.3.1下都通過了。
假設程序名是MyPlay, 目錄下還有一個aaa.mp3, 運行MyPlay aaa.mp3即可。
注意Sleep(50000)是讓他最多播放50秒。沒有Sleep()的話,窗口一閃就退出了。
具體的MCI函數請查有關資料。
#include <windows.h>
#include <vfw.h>
int main(int argc, char* argv[])
{
if (argc>1) {
HWND MyPlayer = MCIWndCreate(NULL,GetMoleHandle(NULL), 0, argv[1]);
MCIWndPlay(MyPlayer);
Sleep(50000);
}
return 0;
}
這個程序還可以播放MIDI, AVI, WMV, MPG等影音文件。
如果只是後台播放MIDI或MP3,不想顯示那個沒有用的窗口,把MCIWndCreate()第三個參數0改成WS_POPUP即可。
如果想精確控制Sleep()至MP3播放結束,可以改成 Sleep(MCIWndGetLength(MyPlayer));
對於mp3, MCIWndGetLength()返回值的單位是毫秒,可以直接用於Sleep()延時。
對於mpg, MCIWndGetLength()返回值的單位是幀數,還要轉換成毫秒才能用於Sleep().
具體MCIWndGetLength()返回值的單位是什麼,可以調用MCIWndGetTimeFormat()來查詢。
>是C,不是C++ 更不是Vc++
你誤解了。VC6.0不只是支持C++, 也支持C. GCC更是C編譯器,不是C++編譯器。
這個程序是地地道道的C程序,沒有一丁點兒 C++ 的成分。但是他調用了Windows API函數,所以必須用支持Windows編程的32位C編譯器,不一定用VC或GCC。
很多人認為,剛學C語言最好用GCC或VC的命令行方式,但遺憾的大多教學用的C環境仍然選用20多年前的TC。如果堅持用16位的TC可以做一些事情,但在現在絕大多數事情是他做不到的。
5. 求用c語言編寫的播放背景音樂的代碼
#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("樂譜文件可以自創,也可以抄別人的\n");
printf("\n現在可以先輸入數字再按回車播放音樂:\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;i<num;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;i<num;i++)
{
Beep(f[i],t[i]);
}
}
6. 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;
}
7. 求用c語言編寫的小星星,鈴兒響叮當的音樂簡譜程序代碼
Integerabc=null;if(1!=2)abc=abc;Integernum=null;num=1==2?0:num;
8. 在C語言中怎麼調用音樂文件
最好使用WINDOWS API來寫,因為不使用API可能還要自己寫個類似於播放器的功能~
舉個例子:
#pragma comment(lib,"Winmm.lib")
#include <stdio.h>
void playLyric()
{
;
}
#include <windows.h>
void main(){
PlaySound("C:\\WINDOWS\\Media\\recycle.wav",NULL,SND_ASYNC);
playLyric();
}
9. 如何用c語言打開一個音樂文件,求詳細代碼和解釋,非常感謝。
這個必須使用系統的API,在Windows下,API可以直接打開AVI視頻文件,WAV聲音文件和BMP圖片文件。這些可以直接使用C語言實現。
打開AVI文件可以使用VFW的API
(系統自帶的)(還可以直接控制攝像頭)
WAV就很簡單了,只要包含了windows.h,就可以直接使用PlaySound
函數播放
BMP圖片,也可以使用VFW來顯示。使用VFW的時候,要包含vfw.h
這些你網路一下VFW就能找到圖片和視頻的例子,
網路PlaySound就能找到播放聲音的例子。