c语言汇编歌曲,C语言歌曲

本文目录一览:

单片机蜂鸣器c语言《兰花草》音乐代码

程序名: MCS51U实验板配套程序-歌曲:兰花草

;电路介绍:蜂鸣器接P2.0;实验前要连接J12

;***********************************************************************

OUT BIT P2.0

ORG 0

AJMP START

ORG 0BH

AJMP TIM0

START: MOV TMOD,#1

MOV IE,#10000010B

START0: MOV 30H,#0

NEXT: MOV A,30H

MOV DPTR,#TABLE

MOVC A,@A+DPTR

MOV R2,A

JZ END0

ANL A,#0FH

MOV R5,A

MOV A,R2

SWAP A

ANL A,#0FH

JNZ SING

CLR TR0

AJMP D1

SING: DEC A

MOV 22H,A

RL A

MOV DPTR,#TABLE1

MOVC A,@A+DPTR

MOV TH0,A

MOV 21H,A

MOV A,22H

RL A

INC A

MOVC A,@A+DPTR

MOV TL0,A

MOV 20H,A

SETB TR0

D1: CALL DELAY

INC 30H

AJMP NEXT

END0: CLR TR0

AJMP START0

TIM0: PUSH ACC

PUSH PSW

MOV TL0,20H

MOV TH0,21H

CPL OUT

POP PSW

POP ACC

RETI

DELAY: MOV R7,#2

D2: MOV R4,#125

D3: MOV R3,#248

DJNZ R3,$

DJNZ R4,D3

DJNZ R7,D2

DJNZ R5,DELAY

RET

;====================================

TABLE1: DW 64021,64103,64260,64400

DW 64524,64580,64684,64777

DW 64820,64898,64968,65030

DW 64934

TABLE: ;1

DB 42H,82H,82H,82H,84H,02H,72H

DB 62H,72H,62H,52H,48H

DB 0B2H,0B2H,0B2H,0B2H,0B4H,02H,0A2H

;2

DB 12H,0A2H,0D2H,92H,88H

DB 82H,0B2H,0B2H,0A2H,84H,02H,72H

DB 62H,72H,62H,52H,44H,02H,12H

;3

DB 12H,62H,62H,52H,44H,02H,82H

DB 72H,62H,52H,32H,48H

DB 00H

END

如何用C语言编写音乐歌曲?

很简单的。

计算机发声原理:

声音有三个特性:响度、音调、音色。

响度,这个非常好理解。就是我们感觉到的声音的大小。具体点说就是由“振幅”决定,振幅越大响度越大。一般计量响度的单位是分贝,dB。

音调,这个就是声音的高低,由“频率”决定,频率越高音调越高。频率单位是赫兹,符号Hz。

音色,在生活当中,我们会发现各种物品发出的声音的特点是不一样的,如二胡和笛子。声音的特性就是音色。而决定声音的音色是由于物体本身的材料、结构。

对于我们的计算机而言。发声的设置都是固定了的。要么要计算机上的那个喇叭,那么是外接的音响等。

现在这里对计算机上的那个喇叭用Turbo C 2.0进行编程,使之发出动听的音乐《梁祝》。

第一步:定义《梁祝》的每一个音符的频率和时间,将定义好的频率和时间写入文件或者保存在数组里面。如果仅仅是写一两个程序自己玩玩的话,那直接保存在数组里面就可以了。如果你想自己写个播放器的话,那你先自己定义一种音乐格式文件(类似.mp3、.wav这种文件,这里暂时把这个文件定为.mymusic),将《梁祝》每个音符的频率、时间写入这个自定义的音乐格式文件liangzhu.mymusic。

第二步:完成了liangzhu.mymusic文件的定义后,我们要做的事情就是读文件,控制喇叭发声。这个具体可以参照现有的资料。这里需要事先写几个函数,读文件的函数,暂停函数,频率对照函数等等。

第三步,将上面的程序链接起来,就OK了。

将上面的步骤优化下,一个DIY的音乐播放器就成功了。

我上面说的只是控制了声音的频率和时间,其实还可以控制响度。对于一些特殊的设备,控制音色也不是不可能。

这种程序我在大一的时候写过。现在想起来不难的。

主要是对C语言是否熟练,当然,你想要实现一个播放器,那你途中会遇到很多困难的。

祝你好运!

急求高手啊,怎么在c语言程序中写一段音乐啊!!!!

编译能通过———- 编译时把注释去掉

#includestdio.h

#includestdlib.h

#includestring.h

struct song{ //定义一个歌曲结构

int id; //歌曲号

char title[20]; //歌曲名

char singer[20]; //歌手名

};

typedef struct song SONG; //把结构命名为 SONG

int main( void )

{

SONG songlist[100]; //定义一个存储歌曲信息的列表,长100

int i=0,j;

int c;

clrscr();

while (i=100) {

printf( “please enter the song’s id, title and singer:\n” );

//输入歌曲号 然后空格 输入歌曲名 然后空格 输入歌手名 然后回车

scanf( “%d%s%s”, songlist[i].id, songlist[i].title, songlist[i].singer);

i++;

//每次输入完一条信息后,把列表中的歌曲信息全部打印出来看一下

printf(“the songlist is below:\n\n”);

for( j=0; j=i; j++){

printf( “%d %s %s\n”, songlist[j].id, songlist[j].title, songlist[j].singer );

}

printf(“\n”);

}

getch();

return 0;

}

或者是

#include “dos.h”

#include “stdio.h”

#define time 10000 /*预定义节拍长度 time(一拍)*/

#define time0 5000 /*预定义半节拍长度 time0*/

#define time1 15000 /*预定义1.5节拍长度 time1*/

#define time2 20000 /*预定义2节拍长度 time2*/

#define time3 30000 /*预定义3节拍长度 time3*/

#define _a 262 /*预定义低音音符1~7*/

#define _b 294

#define _c 330

#define _d 349

#define _e 392

#define _f 440

#define _g 494

#define a 523/*预定义中音音符1~7*/

#define b 587

#define c 659

#define d 698

#define e 784

#define f 880

#define g 988

#define a_ 1047/*预定义高音音符1~7*/

#define b_ 1175

#define c_ 1319

#define d_ 1397

#define e_ 2568

#define f_ 1760

#define g_ 1976

main()

{

int i=0,j;

unsigned milliseconds;

int music[1000]={

f,time,

f,time,

g,time0,

f,time,

f,time,

g,time0,

f,time,

g,time,

a_,time,

g,time,

f,time,

g,time0,

f,time0,

d,time,

c,time,

a,time,

c,time,

d,time,

c,time,

c,time0,

a,time0,

_g,time,

f,time,

g,time,

a_,time,

g,time,

f,time,

g,time0,

f,time0,

d,time1,

c,time,

a,time,

c,time,

d,time,

c,time,

c,time0,

a,time0,

g,time1,

f,time,

f,time,

g,time1,

f,time,

f,time,

g,time1,

c,time,

d,time,

g,time0,

f,time0,

c,time,

d,time,

g,time0,

f,time0,

d,time0,

d,time,

c,time3

}

;

while(music[i]!=’\0′)

{

if(music[i]=494) /*判断不是低音*/

{

milliseconds=music[i+1];

for(j=1;j8;j++)

{

switch(j)

{

case 1: sound(a);

delay(milliseconds);break;

case 2: sound(b);

delay(milliseconds);break;

case 3: sound(c);

delay(milliseconds);break;

case 4: sound(d);

delay(milliseconds);break;

case 5: sound(e);

delay(milliseconds);break;

case 6: sound(f);delay(milliseconds);break;

case 7: sound(g);

delay(milliseconds);break;

}

nosound();

}

}

if(music[i]494music[i]988) /*判断不是中音*/

{

milliseconds=music[i+1];

for(j=1;j8;j++)

{

switch(j)

{

case 1: sound(_a);

delay(milliseconds);break;

case 2: sound(_b);

delay(milliseconds);break;

case 3: sound(_c);

delay(milliseconds);break;

case 4: sound(_d);

delay(milliseconds);break;

case 5: sound(_e);

delay(milliseconds);break;

case 6: sound(_f);

delay(milliseconds);break;

case 7: sound(_g);

delay(milliseconds);break;

}

nosound();

}

}

if(music[i]988) /*判断不是高音*/

{

milliseconds=music[i+1];

for(j=1;j8;j++)

{

switch(j)

{

case 1: sound(a_);

delay(milliseconds);break;

case 2: sound(b_);

delay(milliseconds);break;

case 3: sound(c_);

delay(milliseconds);break;

case 4: sound(d_);

delay(milliseconds);break;

case 5: sound(e_);

delay(milliseconds);break;

case 6: sound(f_);

delay(milliseconds);break;

case 7: sound(g_);

delay(milliseconds);break;

}

nosound();

}

}

nosound();

i=i+2;

}

}

如何用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; /* 增加一分钟*/

}

}

原创文章,作者:IEOA,如若转载,请注明出处:https://www.506064.com/n/139396.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
IEOAIEOA
上一篇 2024-10-04 00:22
下一篇 2024-10-04 00:22

相关推荐

  • AES加密解密算法的C语言实现

    AES(Advanced Encryption Standard)是一种对称加密算法,可用于对数据进行加密和解密。在本篇文章中,我们将介绍C语言中如何实现AES算法,并对实现过程进…

    编程 2025-04-29
  • 学习Python对学习C语言有帮助吗?

    Python和C语言是两种非常受欢迎的编程语言,在程序开发中都扮演着非常重要的角色。那么,学习Python对学习C语言有帮助吗?答案是肯定的。在本文中,我们将从多个角度探讨Pyth…

    编程 2025-04-29
  • Python被称为胶水语言

    Python作为一种跨平台的解释性高级语言,最大的特点是被称为”胶水语言”。 一、简单易学 Python的语法简单易学,更加人性化,这使得它成为了初学者的入…

    编程 2025-04-29
  • OpenJudge答案1.6的C语言实现

    本文将从多个方面详细阐述OpenJudge答案1.6在C语言中的实现方法,帮助初学者更好地学习和理解。 一、需求概述 OpenJudge答案1.6的要求是,输入两个整数a和b,输出…

    编程 2025-04-29
  • Python按位运算符和C语言

    本文将从多个方面详细阐述Python按位运算符和C语言的相关内容,并给出相应的代码示例。 一、概述 Python是一种动态的、面向对象的编程语言,其按位运算符是用于按位操作的运算符…

    编程 2025-04-29
  • Python语言由荷兰人为中心的全能编程开发工程师

    Python语言是一种高级语言,很多编程开发工程师都喜欢使用Python语言进行开发。Python语言的创始人是荷兰人Guido van Rossum,他在1989年圣诞节期间开始…

    编程 2025-04-28
  • Python语言设计基础第2版PDF

    Python语言设计基础第2版PDF是一本介绍Python编程语言的经典教材。本篇文章将从多个方面对该教材进行详细的阐述和介绍。 一、基础知识 本教材中介绍了Python编程语言的…

    编程 2025-04-28
  • Python语言实现人名最多数统计

    本文将从几个方面详细介绍Python语言实现人名最多数统计的方法和应用。 一、Python实现人名最多数统计的基础 1、首先,我们需要了解Python语言的一些基础知识,如列表、字…

    编程 2025-04-28
  • Python作为中心语言,在编程中取代C语言的优势和挑战

    Python一直以其简单易懂的语法和高效的编码环境而著名。然而,它最近的发展趋势表明Python的使用范围已经从脚本语言扩展到了从Web应用到机器学习等广泛的开发领域。与此同时,C…

    编程 2025-04-28
  • Python基础语言

    Python作为一种高级编程语言拥有简洁优雅的语法。在本文中,我们将从多个方面探究Python基础语言的特点以及使用技巧。 一、数据类型 Python基础数据类型包括整数、浮点数、…

    编程 2025-04-28

发表回复

登录后才能评论