如何用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)

最后献上由本人(cdqz_ssw)亲自编写的

《恋爱循环》

#include<bits/stdc++.h>
#include <windows.h>

//作者 cdqz_ssw 
#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);
    //-----------------------------------------作者 cdqz_ssw -----
    //----------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);
    //-----------------------------------------作者 cdqz_ssw -----
    //----------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);
    //-----------------------------------------作者 cdqz_ssw -----
    //----------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);
    //----------------------------------------作者 cdqz_ssw -----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);


}

谢谢观赏,如果你喜欢我的文章,请大力点赞!!

上一篇:C语言编程之利用指针将输入数字按大小顺序输出


下一篇:3-8(单链表相关算法习题+双链表)