- 5
- 0
- 约3.62千字
- 约 5页
- 2017-06-07 发布于重庆
- 举报
c语言编音乐发生器
c语言编音乐发生器,
用c语言编一个音乐发生器,
要求:
可以按自己的方法格式输入乐谱,
能保存乐谱,
能用自己的程序打开乐谱,发出声音,
我的思路是这样的:
输入部分:
1,输入数具:连续音高,音长(音高用abc表示,音长用123表示)。
2,把输入变量处理成音高单位为hz音长单位为ms的数字,
3,保存在数组中,
4,保存数组文件,
打开部分:
1,打开文件,
2,使用sound()来实现发出声音,
哪位大侠来帮完成一下吧,,,
如果有好的方法也可以,,
小弟c语言不精,,
实在学不会保存数组了,
问题补充:
不是像一楼的那个那样的,,
我不会把数组写到文件里面里了,,
另外还有一个问题是:
编辑音乐是要随时可以退出,,
这样数组的大小还要有控制变量,,
其他回答 共5条
保存数组我知道就试用俩个for循环 可我没学过sound()
#include stdio.h
void main()
{
int a[4][5];
int b,c;
for(b=0;b4;b++)
{
for(c=0;c5;c++)
{
scanf(%d,a[b][c]);
}
}
}
保存数组这样就可以了
回答者: shelley1792 | 一级 | 2007-8-12 21:48
en……
回答者:| 一级 | 2007-8-13 00:05
不对啊
回答者: nongwenhua | 三级 | 2007-8-15 18:22
你的思路基本上是正确的。
其实这个程序编起来不是很烦的,加点耐心和毅力,就可以了。
首先,你要定制一个音阶数组,分别对应几个音阶的频率,形如:
int Notes[5][7]
={频率};
其中数组第一个下标是音阶,这里我假设你定义五个,后面的“8”指七个音色(1234567)
具体的频率数值我就不帮你查了,如果是老师给你的作业,他应该给你这方面你资料。
然后你应该定义各个音色的符号,在这里我介绍一个规范给你参考:
1:c,2:d,3:e,4:f,5:g,6:a,7:b.
至于定义音阶:使用o;
音乐的停顿:使用r;
如果你还要实现升调,使用#,例如#1,你就用#c代替。
这个规范何来?玩过以前的小霸王学习机可能会知道,里面有种basic语言,可以让电视的喇叭发声,其脚本语言就是这种了。
至于音长,其实是sleep的时间,这个根据你的喜爱可以定义数组,或者定义一个基本拍子的宏,如
#define PULSE_LEN 1000/*1000ms,一秒,具体值你可以自己定义,我不是学音乐的,还不知道一拍到底有多长呢*/
然后四拍就是4*PULSE_LEN;
有了上面的准备后就可以动手编了;
主要的难点有两个,一个是乐谱的编辑,这个可能需要几百行的代码才能实现你说的功能了,偷偷懒就使用系统的记事本来帮你吧:^_^
比如你要编辑、新建一个乐谱,先用scanf取得文件的路径,然后用记事本打开它(如果文件不存在,记事本会提示你是否需要新建的了):
char file_path[256],cmd_line[300];
printf(input file path and name to edit or create:);
scanf(%s,file_path);
sprintf(cmd_line,notepad %s,file_path);
system(cmd_line);
之后就是打开文件及播放了:
char *notes_in_file=NULL;
long size_notes=0;
FILE *fp = fopen(file_path,r);
if(fp == NULL)
{错误处理,return;}
fseek(fp,0,SEEK_END);
size_notes=ftell(fp);
if(size_notes=0)
{error;}
fseek(fp,0,SEEK_SET);
notes_in_file = (char*)malloc(size_notes*sizeof(char));
fread(notes_in_file,size_notes,1,fp);
好了,现在乐谱都读进数组notes_in_file中了,之后就是逐一读取、播放了:
如果不处理#的话就比较简单:乐谱为一个字母跟一个延时(不考虑延时超过9个节拍的情况)
for(int i=0;isize_notes;i+=2)
{
switch(notes_in_file[i])
{
case o:改变音阶;break;
case r:延时;break;
defualt:play_note(notes_in_file[i],notes_in_file[i+1]);break;
}
}
其中的play
您可能关注的文档
- 黑木耳做法大全.doc
- C语言常用十种典型自编函数汇集.doc
- C语言小程序100例.docx
- 黑木耳15种吃法和做法.doc
- 黑白画教案.doc
- 黑盒测试方法课程练习题及答案.doc
- 黑盒测试用例设计方法例子.doc
- 黑莓的营养价值.docx
- 黑营养的秘密.docx
- 黑龙江垦区国有及国有控股企业重大事项管理暂行办法.doc
- 2026年及未来5年内中国液体氩气行业投资前景及策略咨询研究报告.docx
- 2026年及未来5年内中国黄铜合页行业投资前景及策略咨询研究报告.docx
- 2026年及未来5年内中国竹工艺家具行业投资前景及策略咨询研究报告.docx
- 2025年中国微机数显自动分析仪市场调查研究报告.docx
- 2026年及未来5年内中国微尘白色粉笔行业投资前景及策略咨询研究报告.docx
- 2025年中国微电脑型压胶机市场调查研究报告.docx
- 2026年及未来5年内中国数字化等功游泳训练测试系统行业投资前景及策略咨询研究报告.docx
- 2025年中国圆形花瓶市场调查研究报告.docx
- 2026年及未来5年内中国植物纤维静淀过滤器行业投资前景及策略咨询研究报告.docx
- 2025年中国超音波手套机市场调查研究报告.docx
最近下载
- 农村电商(农产品电商)运营全套教学课件.pptx
- 四川省成都市第七中学2025-2026学年高一上学期11月半期考试英语(含答案).pdf
- (最新)ISO31073-2022风险管理术语(译2022-04)(推荐下载).pdf VIP
- (最新)村干部考试试题(含答案).docx VIP
- zippo图册年度机系列整合(更新至C25).docx VIP
- 多轴车铣复合加工运动转换方法:原理、实践与创新.docx
- 商务礼仪商务礼仪培训专用.ppt VIP
- 《铁路劳动安全》第04章预防机动车辆伤害.pptx VIP
- 化工制图第1章 制图基础.ppt VIP
- 化工制图AutoCAD应用基础-03章.pptx VIP
原创力文档

文档评论(0)