C语言版“最炫民族风”

作者: ldsea 分类: 程序生活,精彩视频 发布时间: 2012-05-19 12:50

转载自:http://blog.renren.com/share/278396965/13080008716?from=0101010202&ref=hotnewsfeed&sfet=102&fin=2&ff_id=278396965

昨天看到有人用MATLAB合成出了《最炫民族风》,马上想到跟风,看能不能再恶搞一把,来个其他版本的。自然想到大一的时候用Turbo C编的一个播放器(其实是山寨飞哥在Turbo Pascal下的作品)。用的是超级老古董Turbo C 2.0,1988年的产品了,比我还老。不过之所以选古董是有原因的,里面有一个dos.h头文件,可以调用电脑主板上的蜂鸣器发声(台式机的“哔”声就是这个发出来的,现在的笔记本电脑就直接用音响发了),于是乎就用这东西拿下神曲了。程序和乐曲是分开的,乐曲以文件的形式读入,很要命地把《最炫民族风》全曲都输了进去。至于调号和变调我就懒得管了,统统C大调。效果放在最后面,大家听的时候注意保护耳朵。

 

 

 

程序如下:


#include <stdio.h>
#include <stdlib.h>
#include <dos.h>

int Tone[7][7] = {{0,0,65,131,262,523,1047},
{0,0,73,147,294,587,1175},
{0,0,82,165,330,659,1319},
{0,0,87,175,349,698,1397},
{0,0,98,196,392,784,1568},
{0,0,110,220,440,880,1760},
{0,0,123,247,494,988,1976}}; /*CDEFGAB*/

int solm,oct,del;
char a[6]={'0'};

int play()
{
int a;
#define TIME 15000
sound(Tone[solm-1][oct+1]);
for (a=1; a<=del; a++)
delay(TIME);
nosound();
}

int main()
{
int play();
int i,j,k;
FILE*fp;
fp = fopen("C:\\turboc2\\Play\\zxmzf1.txt","r");
while(a[0] != 'q')
{
oct = 4;
del = 8;
for (k=0; k<=5; k++)
a[k] = '0';
fscanf(fp,"%s",&a);
solm = atoi(&a[0]);
for (i=1; i<=5; i++)
{
if(a[i] == '.')
oct++;
else if(a[i] == ',')
oct–;
else if(a[i] == 's')
del = del/2;
else if(a[i] == 'l')
del = del*2;
}
if(a[0] == 'q')
printf("End.\n");
else
{
printf("%d %d %d\n",solm,oct,del);
play();
}
}
getch();
}

—————————————————————————————————

以下是读入的内容————《最炫民族风》:

3 6,s 6,s 1 3 2s 2ss 3ss 2s 1s 2s 1s 6, 3 6,s 6,s 1 3 5s 2ss 3ss 2s 1s 2s 1s 7,s 5,s 3 6,s 6,s 1 3

2s 2ss 3ss 2s 1s 2s 1s 6,s 5,s 3 6,s 6,s 1 3 5s 3s 3 3 0 6, 6,s 5,s 6, 6,s 1s 1 2s 1s



6, 0 1 1s 5,s 1s 2s 3s 5s 5s 3s 2 3 0 6s 6s 6s 5s 3s 3 1s 6,s 6,s 6,s 3s 

2 0 3s 3s 5s 3s 2s 3s 2s 1s 6, 5, 6, 0 



6, 6,s 5,s 6, 6,s 1s 1 2s 1s



6, 0 1 1s 5,s 1s 2s 3s 5s 5s 3s 2 3 0 6s 6s 6s 5s 3s 3 1s 6,s 6,s 6,s 3s 

2 0 3s 3s 5s 3s 2s 3s 2s 1s 6, 5, 6, 0 3s 3s 5s 3s 3s 5s 5s 6s 



1.s 6s 5 6 0 6, 6,s 5,s 6, 1 2s 3ss 2ss 1s 2s 3 0 6,s 6s 6s 5s 

2s 3ss 2ss 1s 2s 3 0 3s 3s 3 1s 6,s 6,s 1s 2 5,s 5,s 3s 5s 3s 2s 1 0



6,s 1s 2s 3s 2s 1s 5,s 3,s 6, 0 6,s 6,s 6, 6, 6,s 5,s 6, 1 2s 3ss 2ss 1s 2s 

3 0 6,s 6s 6s 5s 2s 3ss 2ss 1s 2s 3 0 3s 3s 3 1s 6,s 6,s 1s 2 5,s 5,s



3s 5s 3s 2s 1 1s 1s 6,s 1s 2s 3s 5s 3s 3s 5s 6l 6l 6s 6ss 6ss 6s 6s

6s 6ss 5ss 3s 2s 2s 2ss 2ss 3s 3ss 5ss 3s 3ss 2ss 1s 1ss 6,ss 6, 6,s 5,s 6, 6,s 1s 2s 3ss 2ss 1s 2s 3 0 



6s 5s 3s 2s 5s 3s 2s 1s 1 0 6,ss 1ss 2ss 3ss 2ss 1ss 6,ss 1ss 



6, 6,s 5,s 6, 6,s 1s 1 2s 1s



6, 0 1 1s 5,s 1s 2s 3s 5s 5s 3s 2 3 0 6s 6s 6s 5s 3s 3 1s 6,s 6,s 6,s 3s 

2 0 3s 3s 5s 3s 2s 3s 2s 1s 6, 5, 6, 0 3s 3s 5s 3s 3s 5s 5s 6s 



1.s 6s 5 6 0 6, 6,s 5,s 6, 1 2s 3ss 2ss 1s 2s 3 0 6,s 6s 6s 5s 

2s 3ss 2ss 1s 2s 3 0 3s 3s 3 1s 6,s 6,s 1s 2 5,s 5,s 3s 5s 3s 2s 1 0



6,s 1s 2s 3s 2s 1s 5,s 3,s 6, 0 6,s 6,s 6, 6, 6,s 5,s 6, 1 2s 3ss 2ss 1s 2s 

3 0 6,s 6s 6s 5s 2s 3ss 2ss 1s 2s 3 0 3s 3s 3 1s 6,s 6,s 1s 2 5,s 5,s



3s 5s 3s 2s 1 1s 1s 6,s 1s 2s 3s 5s 3s 3s 5s 6l 6l



1.s 1.ss 1.ss 6s 6ss 6ss 5s 5ss 5ss 3s 3ss 3ss 2s 3ss 2ss 1s 6,ss 5,ss 6,ss 5,ss 1ss 2ss 3ss 5ss 6ss 2.ss 1. 0l 1s 2s



3 0 3 5s 3s 6 0 6s 1s 5s 3s 2 2s 2ss 2ss 2s 2s 1s 2s 3 3s 3ss 3ss 3s 2ss 1ss 7,s 1ss 2ss 3 0 3 5s 3s



1. 6 6 6s 1s 2 5 5 6 7 0 7 0 



6, 6,s 5,s 6, 1 2s 3ss 2ss 1s 2s 3 0 6,s 6s 6s 5s 

2s 3ss 2ss 1s 2s 3 0 3s 3s 3 1s 6,s 6,s 1s 2 5,s 5,s 3s 5s 3s 2s 1 0



6,s 1s 2s 3s 2s 1s 5,s 3,s 6, 0 6,s 6,s 6, 6, 6,s 5,s 6, 1 2s 3ss 2ss 1s 2s 

3 0 6,s 6s 6s 5s 2s 3ss 2ss 1s 2s 3 0 3s 3s 3 1s 6,s 6,s 1s 2 5,s 5,s



3s 5s 3s 2s 1 1s 1s 6,s 1s 2s 3s 5s 3s 3s 5s 6l 6 0



6 0 3s 5s 3s 5s 3 6,s 6,ss 6,ss

1 6,s 3ss 6,ss 1s 1ss 1ss 2s 1ss 2ss 3 0 3 6s 6ss 6ss 5 2s 2ss 2ss 3 0



3ss 2ss 1ss 6,ss 3,ss 2,ss 3,ss 5,ss 1 6,s 6,ss 6,ss 2 5,s 5,ss 5,ss 3, 5,s 5,ss 5,ss 1 0 6, 1s 1ss 6,ss

3s 3ss 3ss 2s 2ss 3ss 6l 6 0 



6, 6,s 5,s 6, 1 2s 3ss 2ss 1s 2s 3 0 6,s 6s 6s 5s 

2s 3ss 2ss 1s 2s 3 0 3s 3s 3 1s 6,s 6,s 1s 2 5,s 5,s 3s 5s 3s 2s 1 0



6,s 1s 2s 3s 2s 1s 5,s 3,s 6, 0 6,s 6,s 6, 6, 6,s 5,s 6, 1 2s 3ss 2ss 1s 2s 

3 0 6,s 6s 6s 5s 2s 3ss 2ss 1s 2s 3 0 3s 3s 3 1s 6,s 6,s 1s 2 5,s 5,s



3s 5s 3s 2s 1 1s 1s 6,s 1s 2s 3s 5s 3s 3s 5s 6l 6l 

q

————————————————————————————————–最终成果——————–
 
 

发表回复

您的电子邮箱地址不会被公开。