在学习计算机无源蜂鸣器的发声过程中,想到可以借此机会掌握乐理知识。
B站有一个从零基础讲解的非常好的视频: 20分钟乐理通俗讲解
这里想写一篇博客记录一下学习历程
1.首先用Aduino+无源蜂鸣器实现《小星星》的旋律
int buzzerPin = 8;// 定义音符对应的频率(Hz)
#define NOTE_C4 262
#define NOTE_D4 294
#define NOTE_E4 330
#define NOTE_F4 349
#define NOTE_G4 392// 《小星星》片段旋律
int melody[] = {NOTE_C4, NOTE_C4, NOTE_G4, NOTE_G4, NOTE_A4, NOTE_A4, NOTE_G4};
// 每个音符的时长(ms)
int noteDurations[] = {200, 200, 200, 200, 200, 200, 400};void setup() {for (int thisNote = 0; thisNote < 7; thisNote++) {int noteDuration = noteDurations[thisNote];tone(buzzerPin, melody[thisNote], noteDuration); // 发声delay(noteDuration * 1.3); // 增加一点间隔时间,使音符区分更明显}
}void loop() {// 只播放一次
}
看代码,一定好奇定义音符对应的频率里面的频率是怎么来的。这就是参考视频中的乐理内容了。
2.乐理,乐谱,乐器
参考资料:
20分钟乐理通俗讲解
有源蜂鸣器与无源蜂鸣器详解:原理、区别与驱动方式