C语言音谱
① c语言写音乐,我要一个准确的源代码,谢谢
#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=0;i<num;i++)
{
t[i]=t[i]*r;
switch(h[i])
{
case 'H':k=4;break;
case 'M':k=2;break;
case 'L':k=1;
}
switch(f[i])
{
case 1: f[i]=262*k; break;
case 2: f[i]=296*k; break;
case 3: f[i]=330*k; break;
case 4: f[i]=349*k; break;
case 5: f[i]=392*k; break;
case 6: f[i]=440*k; break;
case 7: f[i]=494*k; break;
}
}
}
void music(unsigned f[],unsigned t[],int num)
{
int i;
for(i=0;i<num;i++)
{
Beep(f[i],t[i]);
}
}
② 如何用c语言编曲
用一定的频率发声函数sound()和延迟时间函数delay()组合可以得到音乐效果。如
#include <dos.h>
int main(void)
{
sound(920);//920Hz
delay(10); //10ms
sound(350);
delay(3);
nosound();
return 0;
}
③ 求用c语言编写的小苹果的音乐简谱程序代码
葫芦丝能吹奏出一个八度和三个音,你看看如果《小苹果》的简谱最低音和最高音的差多少个全音,如果超过了这个范围就不能吹。即使没有超过,还要考虑4音的特殊性,如果是要转调的指法,那就更费劲,小苹果节奏欢快,如果要用按半孔的指法用起来会有很大困难,这首曲子不太适合葫芦丝演奏。
④ 求用c语言编写的小星星,铃儿响叮当的音乐简谱程序代码
Integerabc=null;if(1!=2)abc=abc;Integernum=null;num=1==2?0:num;
⑤ 单片机c语言音乐简谱代码
代码的格式,是由编程者设计的,并没有统一的规范。
下面的链接可供参考。
http://hi..com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/88bfff323ec42ef21b4cff09.html
⑥ 如何用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
#include<stdio.h>
#include<dos.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-t1<time)
{
int86(0X21,&in,&out);
t2=100*out.h.dh+out.h.dl;
if (t2<t1)t2+=6000; /* 增加一分钟*/
}
}
⑦ C语言家谱如何分层输出
C语言家谱分层输出代码如下:
*/
#include
#include
#include
#include
#include"map.h"
#defineMAXN100
#defineMAXMEM100
#defineElemtypechar
//
//树
typedefstructBiTNode
{undefined
intmark;//标记
intlevel;
charname[50];//姓名
charbirthday[50];//生日
charaddress[MAXN];//住址
boolmarriage;//婚否(true表示结婚,false表示没结婚)
boollive;//建在(true表示活着,false表示过世)
boolsex;//性别(true表示男,false表示女)
charlivemassage[50];//死亡日期(如果其已经死亡)
Elemtypedata;//
structBiTNode*lc,*rc;
}BiTNode,*BiTree;
//
//树的相关操作
charnametemp[50];//姓名
charbirthdaytemp[50];//生日
charaddresstemp[MAXN];//住址
boolmarriagetemp;//婚否(true表示结婚,false表示没结婚)
boollivetemp;//建在(true表示或者,false表示过世)
boolsextemp;
charlivemassagetemp[MAXN];//死亡日期(如果其已经死亡)
charch;//额外使用
intleveltemp;//人的代数
intNth;//显示第n代人时要用
charsearchdata[50];
charsearchname[50];
intcount;//计数
intchoice;//各种选择
intuse;
BiTreetemp;
structBiTNodeList
{undefined
BiTreedata;
BiTNodeList*next;
};
BiTNodeList*Li
st;
voidCreatBiTree(BiTree&T,FILE*in)//建立双链二叉树
{undefined
fscanf(in,"%c",&ch);
//printf("%c
",ch);
if(ch=='@')
层,意为①重叠起来的东西;重叠起来的东西中的一部分:层次|表层|大气层。②重叠;重复:层峦叠嶂|层出不穷。③量词,用于可以分出层次的事物:三层楼|两层意思|擦掉一层灰。
家谱:又称族谱、宗谱等。是一种以表谱形式,记载一个家族的世系繁衍及重要人物事迹的书。家谱是一种特殊的文献,就其内容而言,是中华文明史中具有平民特色的文献,记载的是同宗共祖血缘集团世系人物和事迹等方面情况的历史图籍。据研究表明,中华古姓来源于图腾崇拜,系氏族徽号或标志。
⑧ 在c语言程序中怎样载入背景音乐啊,是背景音乐哦,求函数具体用法和实例。谢谢
代码如下:
#include <windows.h>
#include <mmsystem.h>
#pragma comment(lib, "WINMM.LIB")
/*播放音乐*/
void playMusic()
{
//aiyo.wav是放在代码文件中
PlaySound(TEXT("aiyo.wav"),0,SND_FILENAME | SND_ASYNC);
}
/**
* 主 函 数(音乐放第一排)
*/
void main()
{
playMusic();
title(); //欢迎界面上的标题
flower(); //打印字符画
welcome(); //欢迎界面上的选项菜单
}
(8)C语言音谱扩展阅读
C语言解析WAV音频文件:
C语言基本的二进制文件操作函数有fopen,fread等等。(注意是二进制文件操作函数,所以我们不讨论fgets,这是普通的文本文件操作函数)
fread是一个函数。从一个文件流中读数据,最多读取count个项,每个项size个字节,如果调用成功返回实际读取到的项个数(小于或等于count),如果不成功或读到文件末尾返回 0。
它的函数原型为
size_t fread ( void *buffer, size_t size, size_t count, FILE *stream) ;
而且C语言还有一种类型叫做结构体,它在内存中是顺序存储的。刚好我们也已经得知了WAV文件在文件中的顺序以及该顺序中每个部分对应的含义。
那么我们可以事先根据前面所说的WAV文件结构来定义好一个struct,然后在main主函数中初始化这个struct,并且通过fread的第一个参数带入初始化好的这个struct,那么执行之后就会自动读取该文件,并且按照顺序自动把这些元数据填充进了我们初始化好的struct中。
⑨ 如何用C语言编写音乐歌曲
很简单的。
计算机发声原理:
声音有三个特性:响度、音调、音色。
响度,这个非常好理解。就是我们感觉到的声音的大小。具体点说就是由“振幅”决定,振幅越大响度越大。一般计量响度的单位是分贝,dB。
音调,这个就是声音的高低,由“频率”决定,频率越高音调越高。频率单位是赫兹,符号Hz。
音色,在生活当中,我们会发现各种物品发出的声音的特点是不一样的,如二胡和笛子。声音的特性就是音色。而决定声音的音色是由于物体本身的材料、结构。
对于我们的计算机而言。发声的设置都是固定了的。要么要计算机上的那个喇叭,那么是外接的音响等。
现在这里对计算机上的那个喇叭用Turbo C 2.0进行编程,使之发出动听的音乐《梁祝》。
第一步:定义《梁祝》的每一个音符的频率和时间,将定义好的频率和时间写入文件或者保存在数组里面。如果仅仅是写一两个程序自己玩玩的话,那直接保存在数组里面就可以了。如果你想自己写个播放器的话,那你先自己定义一种音乐格式文件(类似.mp3、.wav这种文件,这里暂时把这个文件定为.mymusic),将《梁祝》每个音符的频率、时间写入这个自定义的音乐格式文件liangzhu.mymusic。
第二步:完成了liangzhu.mymusic文件的定义后,我们要做的事情就是读文件,控制喇叭发声。这个具体可以参照现有的资料。这里需要事先写几个函数,读文件的函数,暂停函数,频率对照函数等等。
第三步,将上面的程序链接起来,就OK了。
将上面的步骤优化下,一个DIY的音乐播放器就成功了。
我上面说的只是控制了声音的频率和时间,其实还可以控制响度。对于一些特殊的设备,控制音色也不是不可能。
这种程序我在大一的时候写过。现在想起来不难的。
主要是对C语言是否熟练,当然,你想要实现一个播放器,那你途中会遇到很多困难的。
祝你好运!
⑩ 如何用c语言画出五线谱、各种音符
拿搜狗图片“更多字符画”那里嘛!你用搜狗打“猪”,上面有个“更多字符画”,点那里自己慢慢找吧!
额~~不过俺不懂啥是“C语言”~~不对别怪偶!