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/n/142982.html

(0)
FOBNFOBN
上一篇 2024-10-14
下一篇 2024-10-14

相关推荐

  • 使用MySQL循环语句进行数据操作

    介绍 MySQL是一种常见的关系型数据库管理系统,它具有良好的性能和易用性,广泛应用于各行各业。在MySQL中,循环语句是一种非常有用的功能,它可以帮助我们简化编程过程,提高代码效…

    编程 2024-10-08
  • 使用 PHP 判断目录是否存在的方法

    一、使用 file_exists() 函数 PHP 中提供了一个方便的函数来判断一个文件或目录是否存在,该函数为 file_exists()。 其语法如下: <?php if…

    编程 2024-10-03
  • Java实现文件重命名

    一、概述 文件重命名指将文件的名称更改为其他名称,Java提供了重命名文件的API,主要使用File类中的renameTo()方法来实现。使用这个方法, 将修改指定文件的名称或路径…

    编程 2024-10-03
  • mysql数据库的连接与关闭,数据库使用完之后关闭连接

    本文目录一览: 1、php中MySQL怎样打开和关闭数据库表 2、怎么开启或关闭mysql数据库状态 3、mysql如何开启关闭外部连接 4、网页与mysql数据库怎么连接? ph…

    编程 2024-10-14
  • 包含如何在idea中找不到jsgraphql怎么办的词条

    本文目录一览: 1、如何在Idea中安装运行才能js文件 2、idea找不到存在的包 3、idea中修改了js网页不显示 4、IDEA找不到或无法加载主类Application 5…

    编程 2024-10-03
  • phpkafka集群链接,php kafaka

    本文目录一览: 1、给kafka配置外部连接 2、kafka集群测试正常,但是Java连接kafka出现异常,急求大神解答!!!!!!!!!!! 3、Kafka(四)集群之kafk…

    编程 2024-10-04
  • Java生成随机数方法

    一、Random类 Java中,生成随机数最直接的方式是使用Random类。Random类可以生成伪随机数,即看似随机但是实际上是根据某种算法计算而来的。以下是Random类的几个…

    编程 2024-10-04
  • setcurrentrow详解

    一、setcurrentrow(-1)设置当前行 setcurrentrow(-1)函数用于设置当前行为最后一行,该函数会改变当前行指针。在数据表上操作时,当前行指的是用户当前正在…

    编程 2024-10-03
  • 详解badinterpreter异常

    一、badinterpreter异常概述 在Python编程过程中,如果出现“badinterpreter”异常,通常意味着当前的Python解释器无法运行你所指定的Python代…

    编程 2024-10-03
  • 学习python应看的书籍(关于Python的书籍)

    本文目录一览: 1、学Python 应该看哪些书籍 2、求python书籍推荐 3、学习Python有什么好的书籍推荐 4、python书籍推荐 5、学python推荐的10本豆瓣…

    编程 2024-10-03

发表回复

登录后才能评论