目录
1. 找到简谱中C调的音符对应的蜂鸣器频率(确定音调对应的频率)
2. 确定蜂鸣器演奏一拍所需的时间(即确定一个音调对应的节拍数)
3.创建结构体确定一个音符所需的两个属性(音调频率、节拍数)
该项目使用无源蜂鸣器实现静态音乐播放器,即需要用户手动添加歌曲节点,读者可自行扩展成动态节点,实现动态音乐播放器列表,主要实现功能如下:
- 支持歌曲的暂停与播放
- 支持上一首、下一首歌曲切换
- 支持自定义音乐播放模式:顺序播放、随机播放、单曲循环
- 支持自定义设定音乐音量大小(0-100)
主要运用知识点:
- 定时器配置与使用
- PWM配置与使用
- C语言结构体、结构体嵌套、枚举使用
- C语言指针、一维数组、二维数组、指针数组使用
- C语言链表使用
源码中支持的库函数清单如下:
void beep_init(void); /* 无源蜂鸣器初始化 */
void beep_handler(void); /* 蜂鸣器音乐播放处理函数 定时执行 */
void music_init(void); /* 播放器初始化 */
void music_pause_playback(void); /* 暂停播放 */
void music_resume_playback(void); /* 恢复播放 */
void music_set_volume(unsigned char volume); /* 设置音量大小 */
unsigned char music_get_volume(void); /* 获取音量大小 */
void music_set_mode(ENUM_MUSIC_MODE_TYPEDEF mode); /* 设置播放模式 */
ENUM_MUSIC_MODE_TYPEDEF music_get_mode(void); /* 获取播放模式 */
void music_switch_previous(void); /* 播放上一首 */
void music_switch_next(void); /* 播放下一首 */
蜂鸣器(音乐播放器)驱动源码下载:无源蜂鸣器实现音乐播放器功能
一、音乐简谱相关知识
简谱是一种用简单符号表示音乐音高和节奏的音乐记谱方法。关于简谱中的相关知识点统计如下:
1. 音符:简谱中用不同形状的符号表示不同音高的音符。常见的音符有:C、D、E、F、G、A、B。它们分别代表了音阶中的不同音名。
2. 节拍:节拍是音乐中的基本时间单位,用来划分音乐的节奏。在简谱中,节拍可以用不同的符号和线条表示,如四分音符、八分音符等。
3. 拍号:简谱中的拍号用来表示每小节中的拍数,常见的拍号有2/4、3/4、4/4等。这些拍号告诉演奏者每小节有多少拍和每拍的时值。
4. 调号:调号在简谱中用来表示音乐作品所采用的调性。调号可以影响乐谱中所有音符的音高,使其适应特定的音阶。
5. 连线:在简谱中,如果需要表示音符的音长超过一个小节,可以使用连线将两个相同音符连接起来,延长音符的时值。
6. 休止符:除了音符之外,简谱还包括用来表示休止的符号。休止符用来表示音乐中的停顿或静默。
1、音符
在简谱中,用以表示音的高低及相互关系的基本符号,为七个阿拉伯数字:即1、2、3、4、5、6、7,唱作do、re、mi、fa、sol、la、si,称为唱名。

注意:一个音符由这个音的音高和对应的时值组成。
在简谱中,如果音符时值的长短用短横线“-”表示,就称为单纯音符。单纯音符除四分音符外,有以下两种形式:
1. 在基本音符右侧加记一条短横线
表示增长原音符时值的一倍。这类加记在音符右侧、使音符时值增长的短横线,称为增时线。增时线越多,音符的时值越长。
2. 在基本音符下方加记一条短横线
表示缩短原音符时值的一半。这类加记在音符下方、使音符时值缩短的短横线,称为减时线。减时线越多,音符的时值越短。

在简谱中,加记在单纯音符的右侧的,使音符时值增长的小圆点"·",称为附点。加记附点的音符称为附点音符,附点本身并无一定的长短,其长短由前面的单纯音符来决定。附点音符会增长原音符时值的一半,常用于四分音符和小于四分音符的各种音符之后。
