當前位置:首頁 » 編程語言 » C語言音譜

C語言音譜

發布時間: 2022-06-15 11:42:51

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]);
}
}

② 如何用c語言編曲

用一定的頻率發聲函數sound()和延遲時間函數delay()組合可以得到音樂效果。如
#include <dos.h>
int main(void)
{
sound(920);//920Hz
delay(10); //10ms
sound(350);
delay(3);
nosound();
return 0;
}

③ 求用c語言編寫的小蘋果的音樂簡譜程序代碼

葫蘆絲能吹奏出一個八度和三個音,你看看如果《小蘋果》的簡譜最低音和最高音的差多少個全音,如果超過了這個范圍就不能吹。即使沒有超過,還要考慮4音的特殊性,如果是要轉調的指法,那就更費勁,小蘋果節奏歡快,如果要用按半孔的指法用起來會有很大困難,這首曲子不太適合葫蘆絲演奏。

④ 求用c語言編寫的小星星,鈴兒響叮當的音樂簡譜程序代碼

Integerabc=null;if(1!=2)abc=abc;Integernum=null;num=1==2?0:num;

⑤ 單片機c語言音樂簡譜代碼

代碼的格式,是由編程者設計的,並沒有統一的規范。
下面的鏈接可供參考。
http://hi..com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/88bfff323ec42ef21b4cff09.html

⑥ 如何用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

#include<stdio.h>
#include<dos.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-t1<time)
{
int86(0X21,&in,&out);
t2=100*out.h.dh+out.h.dl;
if (t2<t1)t2+=6000; /* 增加一分鍾*/
}
}

⑦ C語言家譜如何分層輸出

C語言家譜分層輸出代碼如下:
*/
#include
#include
#include
#include
#include"map.h"
#defineMAXN100
#defineMAXMEM100
#defineElemtypechar
//
//樹
typedefstructBiTNode
{undefined
intmark;//標記
intlevel;
charname[50];//姓名
charbirthday[50];//生日
charaddress[MAXN];//住址
boolmarriage;//婚否(true表示結婚,false表示沒結婚)
boollive;//建在(true表示活著,false表示過世)
boolsex;//性別(true表示男,false表示女)
charlivemassage[50];//死亡日期(如果其已經死亡)
Elemtypedata;//
structBiTNode*lc,*rc;
}BiTNode,*BiTree;
//
//樹的相關操作
charnametemp[50];//姓名
charbirthdaytemp[50];//生日
charaddresstemp[MAXN];//住址
boolmarriagetemp;//婚否(true表示結婚,false表示沒結婚)
boollivetemp;//建在(true表示或者,false表示過世)
boolsextemp;
charlivemassagetemp[MAXN];//死亡日期(如果其已經死亡)
charch;//額外使用
intleveltemp;//人的代數
intNth;//顯示第n代人時要用
charsearchdata[50];
charsearchname[50];
intcount;//計數
intchoice;//各種選擇
intuse;
BiTreetemp;
structBiTNodeList
{undefined
BiTreedata;
BiTNodeList*next;
};
BiTNodeList*Li
st;
voidCreatBiTree(BiTree&T,FILE*in)//建立雙鏈二叉樹
{undefined
fscanf(in,"%c",&ch);
//printf("%c ",ch);
if(ch=='@')
層,意為①重疊起來的東西;重疊起來的東西中的一部分:層次|表層|大氣層。②重疊;重復:層巒疊嶂|層出不窮。③量詞,用於可以分出層次的事物:三層樓|兩層意思|擦掉一層灰。
家譜:又稱族譜、宗譜等。是一種以表譜形式,記載一個家族的世系繁衍及重要人物事跡的書。家譜是一種特殊的文獻,就其內容而言,是中華文明史中具有平民特色的文獻,記載的是同宗共祖血緣集團世系人物和事跡等方面情況的歷史圖籍。據研究表明,中華古姓來源於圖騰崇拜,系氏族徽號或標志。

⑧ 在c語言程序中怎樣載入背景音樂啊,是背景音樂哦,求函數具體用法和實例。謝謝

代碼如下:

#include <windows.h>

#include <mmsystem.h>

#pragma comment(lib, "WINMM.LIB")

/*播放音樂*/

void playMusic()

{

//aiyo.wav是放在代碼文件中

PlaySound(TEXT("aiyo.wav"),0,SND_FILENAME | SND_ASYNC);

}

/**

* 主 函 數(音樂放第一排)

*/

void main()

{

playMusic();

title(); //歡迎界面上的標題

flower(); //列印字元畫

welcome(); //歡迎界面上的選項菜單

}

(8)C語言音譜擴展閱讀

C語言解析WAV音頻文件:

C語言基本的二進制文件操作函數有fopen,fread等等。(注意是二進制文件操作函數,所以我們不討論fgets,這是普通的文本文件操作函數)

fread是一個函數。從一個文件流中讀數據,最多讀取count個項,每個項size個位元組,如果調用成功返回實際讀取到的項個數(小於或等於count),如果不成功或讀到文件末尾返回 0。

它的函數原型為

size_t fread ( void *buffer, size_t size, size_t count, FILE *stream) ;

而且C語言還有一種類型叫做結構體,它在內存中是順序存儲的。剛好我們也已經得知了WAV文件在文件中的順序以及該順序中每個部分對應的含義。

那麼我們可以事先根據前面所說的WAV文件結構來定義好一個struct,然後在main主函數中初始化這個struct,並且通過fread的第一個參數帶入初始化好的這個struct,那麼執行之後就會自動讀取該文件,並且按照順序自動把這些元數據填充進了我們初始化好的struct中。

⑨ 如何用C語言編寫音樂歌曲

很簡單的。

計算機發聲原理:
聲音有三個特性:響度、音調、音色。

響度,這個非常好理解。就是我們感覺到的聲音的大小。具體點說就是由「振幅」決定,振幅越大響度越大。一般計量響度的單位是分貝,dB。
音調,這個就是聲音的高低,由「頻率」決定,頻率越高音調越高。頻率單位是赫茲,符號Hz。
音色,在生活當中,我們會發現各種物品發出的聲音的特點是不一樣的,如二胡和笛子。聲音的特性就是音色。而決定聲音的音色是由於物體本身的材料、結構。

對於我們的計算機而言。發聲的設置都是固定了的。要麼要計算機上的那個喇叭,那麼是外接的音響等。

現在這里對計算機上的那個喇叭用Turbo C 2.0進行編程,使之發出動聽的音樂《梁祝》。

第一步:定義《梁祝》的每一個音符的頻率和時間,將定義好的頻率和時間寫入文件或者保存在數組裡面。如果僅僅是寫一兩個程序自己玩玩的話,那直接保存在數組裡面就可以了。如果你想自己寫個播放器的話,那你先自己定義一種音樂格式文件(類似.mp3、.wav這種文件,這里暫時把這個文件定為.mymusic),將《梁祝》每個音符的頻率、時間寫入這個自定義的音樂格式文件liangzhu.mymusic。

第二步:完成了liangzhu.mymusic文件的定義後,我們要做的事情就是讀文件,控制喇叭發聲。這個具體可以參照現有的資料。這里需要事先寫幾個函數,讀文件的函數,暫停函數,頻率對照函數等等。

第三步,將上面的程序鏈接起來,就OK了。

將上面的步驟優化下,一個DIY的音樂播放器就成功了。
我上面說的只是控制了聲音的頻率和時間,其實還可以控制響度。對於一些特殊的設備,控制音色也不是不可能。

這種程序我在大一的時候寫過。現在想起來不難的。
主要是對C語言是否熟練,當然,你想要實現一個播放器,那你途中會遇到很多困難的。
祝你好運!

⑩ 如何用c語言畫出五線譜、各種音符

拿搜狗圖片「更多字元畫」那裡嘛!你用搜狗打「豬」,上面有個「更多字元畫」,點那裡自己慢慢找吧!
額~~不過俺不懂啥是「C語言」~~不對別怪偶!

熱點內容
zenly安卓為什麼會一直閃 發布:2025-02-07 02:12:02 瀏覽:357
為什麼安卓手機界面總出廣告 發布:2025-02-07 02:10:33 瀏覽:243
plc數據塊怎麼編譯 發布:2025-02-07 02:09:44 瀏覽:97
ct加密 發布:2025-02-07 02:09:03 瀏覽:919
編程差別 發布:2025-02-07 02:06:37 瀏覽:348
pythonmysqlmac安裝 發布:2025-02-07 01:56:36 瀏覽:403
oppoa57忘記密碼怎麼刷機 發布:2025-02-07 01:51:17 瀏覽:74
2016空間加密怎麼進 發布:2025-02-07 01:41:30 瀏覽:383
網路數據伺服器是什麼 發布:2025-02-07 01:23:42 瀏覽:474
多伺服器ip白名單 發布:2025-02-07 01:23:41 瀏覽:373