Mars是通过无源蜂鸣器进行发声的

无源蜂鸣器:一种一体化结构的电子讯响器,分为有源蜂鸣器与无源蜂鸣器。这里的“源”不是指电源,而是指震荡源,有源蜂鸣器内部带震荡源,所以只要一通电就会响,而无源内部不带震荡源,所以如果仅用直流信号无法令其鸣叫,必须用2K-5K的方波去驱动它。从外观上看,两种蜂鸣器区别不大,但将两种蜂鸣器的引脚都朝上放置时,可以看出有绿色电路板的一种是无源蜂鸣器,没有电路板而用黑胶封闭的一种是有源蜂鸣器。

Mars采用5V无源蜂鸣器,对应Arduino的13管脚;

从上面的代码可以看出,for语句中的80、100控制了频率,delay控制了时长,类似与音乐中的节拍。

无线蜂鸣器演奏音乐

从上面的实验看,如果我们能够控制好频率和节拍,那就有可能演奏出动听的音乐。因此,我们首先需要搞清楚各音调的频率,具体见下表:

低音:

音调
音符

1#

2#

3#

4#

5#

6#

7#

A

221

248

278

294

330

371

416

B

248

278

294

330

371

416

467

C

131

147

165

175

196

221

248

D

147

165

175

196

221

248

278

E

165

175

196

221

248

278

312

F

175

196

221

234

262

294

330

G

196

221

234

262

294

330

371

中音:

音调
音符

1

2

3

4

5

6

7

A

441

495

556

589

661

742

833

B

495

556

624

661

742

833

935

C

262

294

330

350

393

441

495

D

294

330

350

393

441

495

556

E

330

350

393

441

495

556

624

F

350

393

441

495

556

624

661

G

393

441

495

556

624

661

742

高音:

音调
音符

1#

2#

3#

4#

5#

6#

7#

A

882

990

1112

1178

1322

1484

1665

B

990

1112

1178

1322

1484

1665

1869

C

525

589

661

700

786

882

990

D

589

661

700

786

882

990

1112

E

661

700

786

882

990

1112

1248

F

700

786

882

935

1049

1178

1322

G

786

882

990

1049

1178

1322

1484

我们知道了音调的频率后,下一步就是控制音符的演奏时间。每个音符都会播放一定的时间,这样才能构成一首优美的曲子,而不是生硬的一个调的把所有的音符一股脑的都播放出来。音符节奏分为一拍、半拍、1/4拍、1/8拍,我们规定一拍音符的时间为1;半拍为0.5;1/4拍为0.25;1/8拍为0.125……,所以我们可以为每个音符赋予这样的拍子播放出来,音乐就成了。

这里我们具体以《欢乐颂》为例:

27231636-6fa10130a1b74fea9fe8017596319ac8

从简谱看,该音乐是D调的,这里的各音符对应的频率对应的是上表中D调的部分。另外,该音乐为四分之四拍,每个对应为1拍。几个特殊音符说明如下:

第一,普通音符。如第一个音符3,对应频率350,占1拍。

第二,带下划线音符,表示0.5拍。

第三,有的音符后带一个点,表示多加0.5拍,即1+0.5

第四,有的音符后带一个—,表示多加1拍,即1+1

五,有的两个连续的音符上面带弧线,表示连音,可以稍微改下连音后面那个音的频率,比如减少或增加一些数值(需自己调试),这样表现会更流畅,其实不做处理,影响也不大。

下面,看具体代码:

参考:http://www.cnblogs.com/xiaowuyi/p/3343757.html

十一月 30th, 2016

Posted In: Mars

发表评论