用编程写音乐
① c语言怎么写插入音乐的程序
http://..com/question/231143472.html?push=core
http://..com/question/24018920.html
实训项目三 乐谱播放程序设计
2009-03-19 21:25
一、实训目的
1、用C语言开发音乐程序,写自己喜欢或创作的音乐,使在没有乐器的情况下听到自己创作的音乐。
2、巩固文件读取和数组的有关知识。
3、学习使用PC机扬声器的两个控制函数。
二、功能要求
自己创作乐曲,将其转换为计算机程序能够识别的电子文本格式,利用PC机扬声器的功能播放该乐曲。
三、编程参考
1、发声原理
编写音乐程序时,首先需要制作被演奏音乐的乐谱文件。制作乐谱文件可用不同的符号标记,只要所编制的程序易于识别即可。
下面是编制乐谱文件的一种规则:最高音在每个音的前面加“*”:高音,在每个音的前面加“h”;中音,在每个音的前面加“m”;低音,在每个音的前面加“l”。
“*”,“h”,“m”,“l” 与其控制的音符构成音高,决定发声频率。音高的后面是音长,可用整数或小数输入,以控制延时,但中间必须用空格分开。乐谱文件的最前端是一个整数,表示音长基数,一般为300的倍数。乐谱文件的最末端是乐谱文件结束符“##”,以表示乐谱文件结束。
每个音的音长=音长基数*节拍数,其中,音长基数是乐谱文件的第一个字符,如上面乐谱文件为3600,每个音的音频可用一模拟频率值输入。下面是中央C及其前后4个8度中各个音符的频率值
低8度 1 2 3 4 5 6 7
131 147 165 176 196 220 247
中央C 1 2 3 4 5 6 7
262 296 329.7 349.2 392 440 493.9
高8度 1 2 3 4 5 6 7
523.3 587.3 659.3 698.5 784.0 880 987.8
2、PC机扬声器的两个控制函数
sound() 以指定频率打开PC机的扬声器,频率以赫兹为单位。
nosound() 关闭扬声器。
3、乐谱实例
巴赫的《小步舞曲》:
600 h2 4 m5 1 m6 1 m7 1 h1 1 h2 4 m5 4 m5 4 h3 4 h1 1 h2 1 h3 1 h4 1 h5 4 m5 4 m5 4 h1 4 h2 1 h1 1 m7 1 m6 1 m7 4 h1 1 m7 1 m6 1 m5 1 m4 4 m5 1 m6 1 m7 1 m5 1 m6 6 l2 1 m1 1 l7 1 l6 1 h2 4 m5 1 m6 1 m7 1 h1 1 h2 4 m5 4 m5 4 h3 4 h1 1 h2 1 h3 1 h4 1 h5 4 m5 4 m5 4 h1 4 h2 1 h1 1 m7 1 m6 1 m7 4 h1 1 m7 1 m6 1 m5 1 m6 4 m7 1 m6 1 m5 1 m4 1 m5 10 ##
四、拓展训练
1、制作选曲菜单,使其可以播放多首乐曲;
2、修改某些参数,改变乐曲播放速度。
源程序
#include<stdio.h>
#include<stdlib.h>
#include<dos.h>
void main(int argc,char *argv[])
{ FILE *fp;
int rate;
char sound_high[3];
int sound_long;
register int i=0,j;
int sign=0;
float str[200][2];
if(argc!=2) /*命令行参数个数不正确*/
{ printf("Parameters 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%d",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;
break;
case'5':
str[i++][0]=1568;
break;
case'6':
str[i++][0]=1760;
break;
case'7':
str[i++][0]=1975.5;
break;
default:
printf("\nErrors in music.doc\n");
exit(1);
}
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("\nErrors in music.doc\n");
exit(1);
}
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("\nErrors in music.doc\n");
exit(1);
}
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("\nErrors in music.doc\n");
exit(1);
}
break;
case'#':
if(sound_high[1]=='#')sign=1;
break;
default:
printf("\nErrors in music.doc\n");
exit(1);
} }
for(j=0;j<=i-1;j++)
{ sound(str[j][0]); /*按频率发出歌曲的音调*/
delay(str[j][1]);
} nosound(); /*关闭扬声器*/
}
② 【跟娃学少儿编程scratch】scratch新手教程7课:自制演奏乐曲《小星星》
今天,我们将会制作一个简单有趣的动画,它不仅能够演奏出《小星星》这首美妙的乐曲,还能让编程变得更有趣。如果你对文字教程感兴趣,也可以观看视频教程。
首先,打开Scratch编辑器。
我们从创建背景开始。选择"Spotlight"作为第一个背景,然后添加第二个背景"stars"。默认背景将为"Spotlight"。
接下来,我们需要添加角色来演奏音乐。保留默认角色小猫,也可以根据个人喜好更换角色。为了演奏《小星星》,我们还需要一个吉他角色。在角色库中选择"Music"选项卡,添加一个"吉他"角色。
现在,我们开始为小猫和吉他编程。
为小猫编程,首先进行初始化,将角色大小设置为120,切换背景至"stars"。接着录制报幕声音:“下面请欣赏《小星星》”,使用“播放声音等待播放完”中的“录制……”功能录制声音,然后在声音下拉框中选择录制的声音,并调整大小。
为吉他编程,初始化大小为80,让吉他弹奏《小星星》。在弹奏前,吉他大小调整为100,与小猫匹配。《小星星》的曲谱是CCGGAAGFFEEDDC、GGFFEEDGGFFEED、CCGGAAGFFEEDDC,我们这里只编写第一句。每两个音符换一个造型。
接下来,通过重复的代码编写,完成吉他弹奏的程序。整个动画完成后的效果如下:弹奏前,小猫和吉他处于初始状态;开始弹奏后,动画将自动播放《小星星》。
如果你对其他曲谱感兴趣,可以尝试制作,比如《欢乐颂》、《铃儿响叮当》、《粉刷匠》、《两只老虎》等。现在,我们已经完成了今天的Scratch新手教程。快和孩子一起动手制作吧!
③ 如何用C语言编写音乐歌曲
很简单的。
计算机发声原理:
声音有三个特性:响度、音调、音色。
响度,这个非常好理解。就是我们感觉到的声音的大小。具体点说就是由“振幅”决定,振幅越大响度越大。一般计量响度的单位是分贝,dB。
音调,这个就是声音的高低,由“频率”决定,频率越高音调越高。频率单位是赫兹,符号Hz。
音色,在生活当中,我们会发现各种物品发出的声音的特点是不一样的,如二胡和笛子。声音的特性就是音色。而决定声音的音色是由于物体本身的材料、结构。
对于我们的计算机而言。发声的设置都是固定了的。要么要计算机上的那个喇叭,那么是外接的音响等。
现在这里对计算机上的那个喇叭用Turbo C 2.0进行编程,使之发出动听的音乐《梁祝》。
第一步:定义《梁祝》的每一个音符的频率和时间,将定义好的频率和时间写入文件或者保存在数组里面。如果仅仅是写一两个程序自己玩玩的话,那直接保存在数组里面就可以了。如果你想自己写个播放器的话,那你先自己定义一种音乐格式文件(类似.mp3、.wav这种文件,这里暂时把这个文件定为.mymusic),将《梁祝》每个音符的频率、时间写入这个自定义的音乐格式文件liangzhu.mymusic。
第二步:完成了liangzhu.mymusic文件的定义后,我们要做的事情就是读文件,控制喇叭发声。这个具体可以参照现有的资料。这里需要事先写几个函数,读文件的函数,暂停函数,频率对照函数等等。
第三步,将上面的程序链接起来,就OK了。
将上面的步骤优化下,一个DIY的音乐播放器就成功了。
我上面说的只是控制了声音的频率和时间,其实还可以控制响度。对于一些特殊的设备,控制音色也不是不可能。
这种程序我在大一的时候写过。现在想起来不难的。
主要是对C语言是否熟练,当然,你想要实现一个播放器,那你途中会遇到很多困难的。
祝你好运!
④ 我用 Python 写了一款炫酷音乐播放器,想听啥随便搜!
在一次深夜编程时,我遇到了一个小小困扰。原本想一边撸代码,一边享受音乐,却发现许多喜欢的歌曲因为版权问题无法播放。于是,我决定用Python自己动手制作一款音乐播放器,既能解渴又满足了对音乐的追求。
接下来,我将带领大家一探究竟,看看如何运用Python打造一个集搜索、播放、管理为一体的音乐播放器。
核心功能设计
设计音乐播放器,首要任务是布局和功能规划。我选择使用PyQt5框架来构建界面。播放器的核心功能包括:通过关键词搜索获取音乐、播放音乐、控制播放模式、音量调节、以及播放历史查看等。为了满足不同用户的个性化需求,我还额外设计了循环播放、单曲循环、随机播放、上一首/下一首等附加功能。
UI设计与排版布局
在设计界面时,我遵循简洁明了的原则,确保用户能够直观地操作播放器。通过PyQt5,我成功地实现了界面布局,用户只需输入关键词,即可搜索到音乐,点击播放,还可以调整播放模式和音量。
音乐列表爬虫
为了获取音乐资源,我编写了Python脚本,利用多线程技术高效地爬取音乐网站上的歌曲信息,包括歌曲名称、歌手、URL等。这些数据将被实时显示在搜索页面中,方便用户快速查找。
音乐播放功能
在获取音乐资源后,我进一步实现了播放功能。用户只需选择音乐列表中的歌曲,即可通过多线程下载并播放。此外,我还加入了循环播放、单曲循环、随机播放等多种播放模式,以及播放暂停、音量调节等功能,全方位满足用户需求。
附加功能
为了使音乐播放器更人性化,我还增加了上一首/下一首、播放历史查看等附加功能。这些额外的设定,使得播放器不仅在基本功能上表现得游刃有余,还能在细节上为用户提供更多便利。
至此,我们已经成功构建了一款功能全面、操作简便的音乐播放器。它不仅解决了我深夜编程时的音乐需求,还为更多追求个性化音乐体验的用户提供了新的选择。通过Python的力量,我们可以亲手创造属于自己的音乐世界。