数字音乐
来源:互联网 发布:js获取手机软键盘高度 编辑:程序博客网 时间:2024/05/19 23:14
数字音乐
编写音乐程序时,首先需要制作被演奏音乐的乐谱文件,制作乐谱文件可用不同的符号标记,只要所编制的程序易于识别即可。MUSIC乐谱文件,程序如下:
#include<stdlib.h>
#include<stdio.h>
#include<dos.h>
#include<conio.h>
void main(int argc,char *argv[])
{
FILE *fp;
int rate;
char sound_high[3];
float sound_long;
register int i=0, j ;
int sign=0;
float str[100][2];
if(argc!=2) /* 命令行参数个数不正确 */ {
printf("Pararneters Errors! /n") ;
exit(1);
}
if((fp=fopen(argv[1],"r"))==NULL) /* 文件打开失败 */
{
printf("open file music, doc Errors! /n" );
exit (1);
}
fscanf(fp,"%d", &rate ); /* 读取音长基数的值 */
while(!feof(fp)&&!sign ) /* 文件没有结束并且数据还是乐谱 */
{
fscanf(fp,"%s %f",sound_high,&sound_long); /* 得到音频、音长的数值 */
str[i][1]=rate*sound_long; /* 音乐= 音长基数*节拍数*/
switch(sound_high[0]) {
case '*': /* 最高音 */
switch (sound_high[1]) { /* 确定发音的频率 */
case '1':
str[i++][0]=1046.5;
break;
case '2':
str[i++][0]=1174.7;
break;
case '3':
str[i++][0]=1318.5;
break;
case '4':
str[i++][0]=1396.9;
brcak:
case '5':
str[i++][0]=1568;
break;
case '6':
str[i++][0]=1760;
break;
case '7':
str[i++][0]=1975.5;
break;
default:
printf ( "/n Errors in music.doc /n" );
exit(1);
break;
}
break;
case 'h': /* 高音*/
switch(sound_high[1]) {
case '1':
str[i++][0]=523.3;
break;
case '2':
str[i++][0]=587.3;
break;
case '3':
str[i++][0]=659.3;
break;
case '4':
str[i++][0]=698.5;
break;
case '5':
str[i++][0]=784.0;
break;
case '6':
str[i++][0]=880;
break;
case '7':
str[i++][0]=987.8;
break;
default:
printf("/n Errors in music.doc /n " );
exit (1);
break;
}
break;
case 'm': /* 中音 */
switch(sound_high[1]) {
case '1':
str[i++][0]=262;
break;
case '2':
str[i++][0]=296;
break;
case '3':
str[i++][0]=329.6;
break;
case '4':
str[i++][0]=349.2;
break;
case '5':
str[i++][0]=392;
break;
case '6':
str[i++][0]=440;
break;
case '7':
str[i++][0]=493.9;
break;
default:
printf ( "/n Errors in music.doc /n" );
exit(1);
break;
}
break;
case 'l': /* 低音 */
switch(sound_high[1]) {
case '1':
str[i++][0]=131;
break;
case '2':
str[i++][0]=147;
break;
case '3':
str[i++][0]=165;
break;
case '4':
str[i++][0]=176;
break;
case '5':
str[i++][0]=196;
break;
case '6':
str[i++][0]=220;
break;
case '7':
str[i++][0]=247;
break;
default:
printf( "/n Errors in music.doc /n " );
exit(1);
break;
}
break;
case '#':
if(sound_high[1]=='#') sign=1;
break;
default:
printf ( "/n Errors in music.doc /n " );
exit (1);
}
}
for(j=0;j<i;j++)
{
sound(str[j][0]); /* 按频率值发出歌曲的音调 */
delay(str[j][1]);
}
nosound(); /* 关闭扬声器 */
}
- 数字音乐
- 数字音乐均衡器
- 数字音乐各种高保真音乐格式
- 数字音乐收费,一场困兽犹斗
- 数字音乐洗牌,网易云音乐版权之痛
- 数字音乐平台有没有机会?
- 数字音乐转型给数字图书带来启示
- 中移动音乐开放平台上线 引领数字音乐市场全面正版化
- 台湾数字音乐老大KKBox:从卖音乐到卖娱乐
- 数字音乐生财:月入10万不是梦
- 苹果第三季度美国数字音乐市场份额增长至66%
- EMI顺应数字音乐潮流,向应用开发者打开大门
- 【数字视音频处理】【Qtcreator】音乐DIY 设计
- 从“独家”到“共享”?2016数字音乐进化新猜想
- 数字音乐平台和电视节目怎么“合谋”玩转IP?
- 音乐
- 音乐
- 音乐
- 如何使电脑发声
- 设置当前目录,并显示
- 声图并茂
- 成功项目的经验(转载)
- 激活中断驻留程序
- 数字音乐
- 过程式设计和面向对象设计的比较
- js常用判断表单合法性的函数
- 通用演奏程序
- c++编程要点(转载)
- 拖动图形对象
- 显示当前驱动器号
- IMG,IFRAME的属性参考
- MFC中对窗口贴图