c语言写音乐,我要一个准确的源代码,谢谢

c语言写音乐,我要一个准确的源代码,谢谢,第1张

#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=0i<numi++)

{

t[i]=t[i]*r

switch(h[i])

{

case 'H':k=4break

case 'M':k=2break

case 'L':k=1

}

switch(f[i])

{

case 1: f[i]=262*kbreak

case 2: f[i]=296*kbreak

case 3: f[i]=330*kbreak

case 4: f[i]=349*kbreak

case 5: f[i]=392*kbreak

case 6: f[i]=440*kbreak

case 7: f[i]=494*kbreak

}

}

}

void music(unsigned f[],unsigned t[],int num)

{

int i

for(i=0i<numi++)

{

Beep(f[i],t[i])

}

}

建议看下高级编程技术这本书

目录如下:

1 文本的屏幕输出和键盘输入

1.1 文本的屏幕输出

1.2 键盘输入

1.3 问题实现

1.4 高级应用——菜单实现

实验一

2 图形显示方式和鼠标输入

2.1 图形显示

2.2 鼠标的使用

2.3 问题实现

实验二

3 屏雀弯幕图象与动画技术

3.1 一个简单的实现方法

3.2 利用动态开辟图视口的方法

3.3 利用屏幕图象存储再放的方法

3.4 利用页交替的方法

3.5 问题实现

实验三

4 中断技术

4.1 编写自己的中断程序

4.2 问题实现

4.3 其它应用——蠢岁弯硬中断演示秒表程序

实验四

5 发声技术

5.1 声音函数

5.2 计算机乐谱

5.3 问题实现

实验五

6 汉字显示技术

6.1 汉字编码

6.2 问题带闷实现

实验六

我对音乐基本一窍不通,但是我知道,在用C编写的程序中如果不考虑使用坦塌D/A转换的话,能改变的只有发声的频率和发声的时间,给你个蜂鸣器的例子看看while(unsigned int L){ a = ~a delay(P)}void delay(unsigned int P){ while(P--);}这个是控简信运制蜂鸣器发声的一般原理 参数L决定声音时间的长短 P决定声音的频率 这样一来通过控制L和P酒可以发出不同声拦梁调,不同长度的声音了 拉长L就能实现长音 其他的关于音乐的我不清楚你可以自己摸索


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/8181015.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-14
下一篇2023-04-14

发表评论

登录后才能评论

评论列表(0条)

    保存