如何用c++发出音乐
如何用c++播放音乐?
c++作为每一个OIer的日常伙伴,打久了,不免有些乏味和疲倦
那么,我们是否可以让没有音响的电脑播放音乐呢?
答案是可以的。
Beep( A , B )函数
其中A代表 音调 ,B 代表发声的长短(毫秒)
下面给出一个示范
#include<bits/stdc++.h>
#include <windows.h>
#define n1 532 // do 1音
#define D 250 //定义 D 为 1拍
int main(){
Beep( n1 , D ) ;
return 0 ;
}
这就是 do 音。是不是很简单呢?
但是我们要注意,Beep() 并不在万能头文件中,而是存在 windows 库中。后面要用的 Sleep() 函数也是如此。
在理解了 Beep() 函数后 , 我们来了解一下 Sleep() 函数。
Sleep( A ) , A表示暂停时间(毫秒)
#include<bits/stdc++.h>
#include <windows.h>
#define n1 532 // do 1音
#define D 250 //定义 D 为 1拍
int main(){
Beep( n1 , D ) ;
Sleep( D );
Beep( n1 , D ) ;
return 0 ;
}
运行后发现 两个 do 音之间有了时间间隔;
了解寄出后,我们可以自定义一些基础乐理的快捷方式,给出基础板子(不用谢,给个赞就行)
#define l1 262
#define l2 294
#define l3 330
#define l4 349
#define l5 392
#define l6 440
#define l7 493
#define n1 532
#define n2 588
#define n3 660
#define n4 698
#define n5 784
#define n6 880
#define n7 988
#define h1 1046
#define h2 1175
#define h3 1319
#define h4 1397
#define h5 1568
#define h6 1760
#define h7 1976
#define A 1600*1.25 //四拍
#define B 800*1.25 //两拍
#define C 400*1.25 //一拍
#define D 200*1.25 //半拍
#define E 100*1.25 //1/4拍
#define F 50*1.25 //1/8拍
#define S(i) Sleep(i)
最后献上由本人(ssw02)亲自编写的
《恋爱循环》
#include<bits/stdc++.h>
#include <windows.h>
//作者 ssw02
#define l1 262
#define l2 294
#define l3 330
#define l4 349
#define l5 392
#define l6 440
#define l7 493
#define n1 532
#define n2 588
#define n3 660
#define n4 698
#define n5 784
#define n6 880
#define n7 988
#define h1 1046
#define h2 1175
#define h3 1319
#define h4 1397
#define h5 1568
#define h6 1760
#define h7 1976
#define A 1600*1.25 //四拍
#define B 800*1.25 //两拍
#define C 400*1.25 //一拍
#define D 200*1.25 //半拍
#define E 100*1.25 //1/4拍
#define F 50*1.25 //1/8拍
#define S(i) Sleep(i)
#define wq( i , j ) Beep( i , j )
int main(){
wq(n3,D);wq(n4,D);wq(n3,D);wq(n4,D);wq(n5,C);wq(n3,D);wq(n4,D);
wq(n3,D);wq(n4,D);wq(n5,C);wq(n5,D);wq(n4,D);wq(n3,D);wq(n4,D);
wq(n3,E);wq(n1,D);wq(n1,D);wq(n1,E);wq(l6,D);
wq(n3,E);wq(n1,D);wq(n1,D);wq(n1,E);wq(l6,D);
wq(n1,E);wq(n1,D);wq(n1,D);wq(n1,E);wq(l6,D);wq(n3,C);S(C);
//-----------------------------------------作者 ssw02 -----
//----------C1----D0.5---------------------------------------2
wq(n3,D);wq(n4,D);wq(n3,D);wq(n4,D);wq(n5,C);wq(n3,D);wq(n4,D);
wq(n3,D);wq(n4,D);wq(n5,C);wq(n5,D);wq(n4,D);wq(n3,D);wq(n4,D);
wq(n3,E);wq(n1,D);wq(n1,D);wq(n1,E);wq(l6,D);
wq(n3,E);wq(n1,D);wq(n1,D);wq(n1,E);wq(n2,D);
wq(n1,E);wq(n1,D);wq(n1,D);wq(n1,E);wq(n3,D);wq(n3,C);S(C);
//-----------------------------------------作者 ssw02 -----
//----------C1----D0.5---------------------------------------3
wq(n5,C);wq(n3,C);wq(n2,C);wq(n3,D);wq(n3,D);
wq(n2,D);wq(n1,D);wq(n2,D);wq(n3,B);wq(n3,D);
wq(n6,C);wq(n3,C);wq(n2,C);wq(n1,D);wq(n1,D);
wq(n1,D);wq(n2,D);wq(n3,D);wq(n2,C);S(C);S(D);
//-----------------------------------------作者 ssw02 -----
//----------C1----D0.5---------------------------------------4
wq(n5,C);wq(n3,C);wq(n2,C);wq(n3,D);wq(n3,D);
wq(n2,D);wq(n1,D);wq(n2,D);wq(n3,B);wq(n3,D);
wq(n6,C);wq(n3,C);wq(n1,C);wq(n3,C);
wq(n1,C);S(C);S(C);S(D);wq(n1,E);wq(l5,E);
//----------------------------------------作者 ssw02 -----1
//----------C1----D0.5---------------------------------------4
wq(l6,375);wq(l6,375);wq(l5,D);wq(n1,375);wq(n1,E);S(D);wq(n1,E);wq(l5,E);
wq(l6,375);wq(l6,375);wq(l5,D);wq(n1,375);wq(n3,E);S(D);wq(n1,E);wq(l5,E);
wq(l6,375);wq(l6,D);wq(l6,E);wq(n5,D);wq(n1,375);wq(n1,D);wq(n1,E);wq(n2,D);
wq(n1,375);wq(n1,E);S(E);wq(n1,E);wq(l6,D);wq(n3,C);S(D);wq(n1,E);wq(l5,E);
wq(l6,375);wq(l6,375);wq(l5,D);wq(n1,375);wq(n1,E);S(D);wq(n1,E);wq(l5,E);
wq(l6,375);wq(l6,375);wq(l5,D);wq(n3,375);wq(n1,E);S(D);wq(n1,E);wq(l5,E);
wq(l6,375);wq(l6,D);wq(l6,E);wq(n5,D);wq(n1,375);wq(n1,D);wq(n1,E);wq(n2,D);
wq(n1,375);wq(n1,D);wq(n3,375);wq(n1,C);S(C);
}