c語言音樂編寫,c語言音樂函數

本文目錄一覽:

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

#includestdio.h

#includedos.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-t1time)

{

int86(0X21,in,out);

t2=100*out.h.dh+out.h.dl;

if (t2t1)t2+=6000; /* 增加一分鐘*/

}

}

用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語言編輯音樂

編輯音樂的都是彙編之類的低級語言

高級語言沒有和音樂有關的指令

[其中VB能播放音樂完全是因為用了彙編做出來的控制項起的作用]

用c語言編寫音樂播放器

我想樓主實際上是想編寫一個我們平常所看到的app,應用軟體之類的程序。最開始學編程,我想每個人都有這樣的疑問,為什麼我寫的只是,一個黑框框。實際上,一般情況下,一般情況下,沒有人用C語言編寫那種圖形化界面的軟體。因為實在是開發效率太低了,也就是要寫的代碼太多了,也沒有多大意義。C語言是面向過程的語言。所以一般只是用於編寫底層之類的程序。而我們實際應用於編寫那種圖形化界面的軟體,一般用的都是使用的面向對象的語言,就是Java,c#,這之類的語言。如果樓主,是想要快速能夠寫那種軟體的話,樓主應該學C#,學c一般都只是為了入門,一般除了特殊的領域之外,基本上都是用的C#這之類的面向對象語言。

原創文章,作者:FOBN,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/142982.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
FOBN的頭像FOBN
上一篇 2024-10-14 18:48
下一篇 2024-10-14 18:48

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python中capitalize函數的使用

    在Python的字元串操作中,capitalize函數常常被用到,這個函數可以使字元串中的第一個單詞首字母大寫,其餘字母小寫。在本文中,我們將從以下幾個方面對capitalize函…

    編程 2025-04-29
  • Python中set函數的作用

    Python中set函數是一個有用的數據類型,可以被用於許多編程場景中。在這篇文章中,我們將學習Python中set函數的多個方面,從而深入了解這個函數在Python中的用途。 一…

    編程 2025-04-29
  • 三角函數用英語怎麼說

    三角函數,即三角比函數,是指在一個銳角三角形中某一角的對邊、鄰邊之比。在數學中,三角函數包括正弦、餘弦、正切等,它們在數學、物理、工程和計算機等領域都得到了廣泛的應用。 一、正弦函…

    編程 2025-04-29
  • 單片機列印函數

    單片機列印是指通過串口或並口將一些數據列印到終端設備上。在單片機應用中,列印非常重要。正確的列印數據可以讓我們知道單片機運行的狀態,方便我們進行調試;錯誤的列印數據可以幫助我們快速…

    編程 2025-04-29
  • Python3定義函數參數類型

    Python是一門動態類型語言,不需要在定義變數時顯示的指定變數類型,但是Python3中提供了函數參數類型的聲明功能,在函數定義時明確定義參數類型。在函數的形參後面加上冒號(:)…

    編程 2025-04-29
  • AES加密解密演算法的C語言實現

    AES(Advanced Encryption Standard)是一種對稱加密演算法,可用於對數據進行加密和解密。在本篇文章中,我們將介紹C語言中如何實現AES演算法,並對實現過程進…

    編程 2025-04-29
  • 學習Python對學習C語言有幫助嗎?

    Python和C語言是兩種非常受歡迎的編程語言,在程序開發中都扮演著非常重要的角色。那麼,學習Python對學習C語言有幫助嗎?答案是肯定的。在本文中,我們將從多個角度探討Pyth…

    編程 2025-04-29
  • Python定義函數判斷奇偶數

    本文將從多個方面詳細闡述Python定義函數判斷奇偶數的方法,並提供完整的代碼示例。 一、初步了解Python函數 在介紹Python如何定義函數判斷奇偶數之前,我們先來了解一下P…

    編程 2025-04-29
  • Python實現計算階乘的函數

    本文將介紹如何使用Python定義函數fact(n),計算n的階乘。 一、什麼是階乘 階乘指從1乘到指定數之間所有整數的乘積。如:5! = 5 * 4 * 3 * 2 * 1 = …

    編程 2025-04-29

發表回復

登錄後才能評論