當前位置:首頁 » 編程語言 » 如何將音樂轉為c語言代碼
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

如何將音樂轉為c語言代碼

發布時間: 2022-11-06 13:07:12

㈠ 求一個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語言怎麼編寫音樂程序

0x18, 0x30, 0x1C , 0x10,//格式為: 頻率常數, 節拍常數, 頻率常數, 節拍常數。
我猜測可能是單片機編程。

以0x開頭的為16進制數字,它對應聲音的頻率或節拍。
那麼0x18到底代表高音1還是中音3,這取決於單片機生產廠商,一般它會在說明書上說明。

PS:如果你想搞音樂編程,可以使用高級的音樂庫文件。

㈢ c語言寫音樂,我要一個准確的源代碼,謝謝

能不能具體點呢?是像寫五線譜那種寫mid呢,還是??

#include<dos.h>
void main(void)
{
unsigned FREQUENCY[]={392,392,440,392,523,494,
392,392,440,392,587,523,
392,392,784,659,523,494,
440,698,698,659,523,587,523};
/*此處的FREQUENCY為樂譜每一個音符的頻率,替換成你的譜子即可*/
unsigned DELAY[]={375,125,500,500,500,1000,
375,125,500,500,500,1000,
375,125,500,500,500,1000,
375,125,500,500,500,1000};
/*此處DELAY為每個音符播放的時間,專業術語貌似是拍子速度吧!*/
int CIRCLE;/*譜子共有幾個音符*/
for(CIRCLE=0;CIRCLE<25;CIRCLE++)
{
sound(FREQUENCY[CIRCLE]);
delay(DELAY[CIRCLE]);
nosound();
}

}

TC 3.0編譯通過!

㈣ 怎樣把一首歌曲編寫成單片機C語言程序啊

網上去下個樂普編輯器。輸入音符自動生成16 進制

㈤ 如何將音樂轉換成代碼

應264Hz左右。
然後把這些頻率通過公式轉換成初值再換算成十六進制。
比如你用的是定時的工作方式1,則可以這位算:(假設晶振是12MHz)
X=2^16-10^6/(264*2)=63642因為要計算的是半周期對應的初值,所以頻率就是2倍。
十六進制就是:F89A
好像沒有什麼軟體吧,有的話告訴我一聲哦。

㈥ 如何用c語言編寫歌曲

很簡單的。
計算機發聲原理:
聲音有三個特性:響度、音調、音色。
響度,這個非常好理解。就是我們感覺到的聲音的大小。具體點說就是由「振幅」決定,振幅越大響度越大。一般計量響度的單位是分貝,dB。
音調,這個就是聲音的高低,由「頻率」決定,頻率越高音調越高。頻率單位是赫茲,符號Hz。
音色,在生活當中,我們會發現各種物品發出的聲音的特點是不一樣的,如二胡和笛子。聲音的特性就是音色。而決定聲音的音色是由於物體本身的材料、結構。
對於我們的計算機而言。發聲的設置都是固定了的。要麼要計算機上的那個喇叭,那麼是外接的音響等。
現在這里對計算機上的那個喇叭用TurboC2.0進行編程,使之發出動聽的音樂《梁祝》。
第一步:定義《梁祝》的每一個音符的頻率和時間,將定義好的頻率和時間寫入文件或者保存在數組裡面。如果僅僅是寫一兩個程序自己玩玩的話,那直接保存在數組裡面就可以了。如果你想自己寫個播放器的話,那你先自己定義一種音樂格式文件(類似.mp3、.wav這種文件,這里暫時把這個文件定為.mymusic),將《梁祝》每個音符的頻率、時間寫入這個自定義的音樂格式文件liangzhu.mymusic。
第二步:完成了liangzhu.mymusic文件的定義後,我們要做的事情就是讀文件,控制喇叭發聲。這個具體可以參照現有的資料。這里需要事先寫幾個函數,讀文件的函數,暫停函數,頻率對照函數等等。
第三步,將上面的程序鏈接起來,就OK了。
將上面的步驟優化下,一個DIY的音樂播放器就成功了。
我上面說的只是控制了聲音的頻率和時間,其實還可以控制響度。對於一些特殊的設備,控制音色也不是不可能。
這種程序我在大一的時候寫過。現在想起來不難的。
主要是對C語言是否熟練,當然,你想要實現一個播放器,那你途中會遇到很多困難的。
祝你好運!

㈦ 單片機做的音樂盒有沒有可以修改音樂的C語言程序啊

#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar Count;

sbit Speak =P1^2; //蜂鳴器器控制腳
/*以下數組是音符編碼*/
unsigned char code SONG[] ={ //祝你平安
0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,
0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,
0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,
0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,
0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,
0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,
0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,
0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,
0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,
0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,
0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,
0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,
0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,
0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00,
//路邊的野華不要采
0x30,0x1C,0x10,0x20,0x40,0x1C,0x10,0x18,0x10,0x20,0x10,0x1C,0x10,0x18,0x40,0x1C,
0x20,0x20,0x20,0x1C,0x20,0x18,0x20,0x20,0x80,0xFF,0x20,0x30,0x1C,0x10,0x18,0x20,
0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,
0x30,0x80,0xFF,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,
0x20,0x2B,0x40,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,
0x20,0x2B,0x40,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,
0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0x20,0x30,0x1C,0x10,0x20,
0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x15,0x1F,
0x05,0x20,0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,
0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,
0x20,0x26,0x20,0x20,0x20,0x30,0x30,0x20,0x30,0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,
0x20,0x26,0x40,0x13,0x60,0x18,0x20,0x15,0x40,0x13,0x40,0x18,0x80,0x00,

};

/********************************************************************
* 名稱 : Time0_Init()
* 功能 : 定時器的初始化,定時時間可用光碟中軟體計算,11.0592MZ晶振,10ms
* 輸入 : 無
* 輸出 : 無
***********************************************************************/
void Time0_Init()
{
TMOD = 0x01;
IE = 0x82;
TH0 = 0xDC;
TL0 = 0x00;
}

/********************************************************************
* 名稱 : Time0_Int()
* 功能 : 定時器中斷,中斷中實現 Count 加一
* 輸入 : 無
* 輸出 : 無
***********************************************************************/
void Time0_Int() interrupt 1
{
TH0 = 0xDC;
TL0 = 0x00;
Count++; //長度加1
}

/********************************************************************
* 名稱 : Delay_xMs()
* 功能 : 延時子程序,經過軟體調試,測得延時程序大概為55us.
* 輸入 : x
* 輸出 : 無
***********************************************************************/
void Delay_xMs(uint x)
{
uint i,j;
for(i=0; i<x; i++)
{
for(j=0; j<3; j++);
}
}

/********************************************************************
* 名稱 : Play_Song()
* 功能 : 播放蜂鳴器控製程序
* 輸入 : i (選擇播放哪首歌曲,0為「祝你平安」,1為「路邊的野花你不要采」
* 輸出 : 無
***********************************************************************/
void Play_Song(uchar i)
{
uchar Temp1,Temp2;
uint Addr;
Count = 0; //中斷計數器清0
Addr = i * 217;
while(1)
{
Temp1 = SONG[Addr++];
if (Temp1 == 0xFF) //休止符
{
TR0 = 0;
Delay_xMs(100);
}
else if (Temp1 == 0x00) //歌曲結束符
{
return;
}
else
{
Temp2 = SONG[Addr++];
TR0 = 1;
while(1)
{
Speak = ~Speak;
Delay_xMs(Temp1);
if(Temp2 == Count)
{
Count = 0;
break;
}
}
}
}
}
/********************************************************************
* 名稱 : Main()
* 功能 : 主函數
* 輸入 : 無
* 輸出 : 無
***********************************************************************/
void Main()
{
Time0_Init(); //定時器0中斷初始化
while(1)
{
Play_Song(0); //Play_Song(0)為祝你平安 Play_Song(1)為路邊的野花你不要裁
}
}
看看

㈧ 有什麼軟體能把音樂轉換成.c格式嗎

沒有軟體一般所說的.c為c程序文件、是編程文件。是程序。音樂是單純的數據文件。不一樣的東西。
編程為基礎。只要你學的好,只要你願意,你可以用編程實現任何你想好的結果。當然也包括播放聲音了。

㈨ 求用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語言程序中怎樣載入背景音樂啊,是背景音樂哦,求函數具體用法和實例。謝謝

代碼如下:

#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(); //歡迎界面上的選項菜單

}

(10)如何將音樂轉為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中。