蜂鸣器奏乐

2024-08-31 22:44
文章标签 蜂鸣器 奏乐

本文主要是介绍蜂鸣器奏乐,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、粗略了解简谱

拍号:如图,“2”表示一个小节有2拍,“4”表示4分音符为一拍

终止线表示歌曲结束

注意:以下音符都按以四分音符为一拍计算拍数

四分音符:

唱一拍

二分音符:

某一个音右边有一个小横线,这个音唱两拍

全音符

某一个音右边有4个小横线,这个音唱四拍

八分音符

下面有一个横线的,这个音唱半拍

十六分音符

某个音下面有两个横线,这个音唱四分之一拍

附点音符

休止符

三连音

明示三连(bushi)

连音线

延音线连接的是相同的音符,功能和“” 一样。演唱圆滑线下面的音符时不能换气

反复记号

反复记号表示唱到反复记号处在唱一遍才结束

想这种的,演唱到第二个反复记号这里再回到第一个反复记号这儿,然后唱到第一个小房子这儿时跳到第二个小房子这儿。也就是说第一个小房子里面的是第一遍唱的,第二个小房子里面的是第二遍唱的。

二、把简谱转成代码

一、确定音阶对印频率

#define STOP 0
#define L_DO 262
#define L_RE 294
#define L_M  330
#define L_FA 349
#define L_SO 392
#define L_LA 440
#define L_SI 494
#define M_DO 523
#define M_RE 587
#define M_M  659
#define M_FA 698
#define M_SO 784
#define M_LA 880
#define M_SI 988
#define H_DO 1046
#define H_RE 1175
#define H_M 1318
#define H_FA 1397
#define H_SO 1568
#define H_LA 1760
#define H_SI 7967

2.乐谱处理

以最简单的歌曲为例:

uint16_t twinkle[] = {M_DO,M_DO,M_SO,M_SO,  M_LA,M_LA,M_SO,M_SO, M_FA,M_FA,M_M, M_M,   M_RE,M_RE,M_DO,M_DO,M_SO,M_SO,M_FA,M_FA,  M_M, M_M, M_RE,M_RE,M_SO,M_SO,M_FA,M_FA,  M_M, M_M, M_RE,M_RE,M_DO,M_DO,M_SO,M_SO,  M_LA,M_LA,M_SO,M_SO,M_FA,M_FA,M_M ,M_M,   M_RE,M_RE,M_DO,M_DO,
};GUI_Audio au = {.freqs = twinkle,.length = sizeof(freqs)/sizeof(uint16_t),.space = 250
};

如图:space表示一拍间隔,单位毫秒,音频数据存储在数组中。

来个难一点的

uint16_t freqs2[] = {STOP,STOP,  STOP,STOP,  M_SO,M_SO,M_LA,M_LA,  M_SO,M_SO,  H_DO,H_DO,M_SI,M_SI,  M_SI,M_SI,  M_SO,M_SO,M_LA,M_LA,  M_SO,M_SO,  H_RE,H_RE,H_DO,H_DO,  H_DO,H_DO,  M_SO,M_SO,H_SO,H_SO,  H_M, H_M,   H_DO,H_DO,M_SI,M_SI,  M_LA,M_LA,  M_LA,M_LA, STOP,STOP,  STOP,STOP,  H_FA,H_FA,H_M, H_M,   M_DO,H_DO,  H_RE,H_RE,     H_DO,H_DO,  H_DO,H_DO,  M_SO,M_SO,M_LA,M_LA,  M_SO,M_SO,  H_DO,H_DO,M_SI,M_SI,  M_SI,M_SI,  M_SO,M_SO,M_LA,M_LA,  M_SO,M_SO,  H_RE,H_RE,H_DO,H_DO,  H_DO,H_DO,  M_SO,M_SO,H_SO,H_SO,  H_M, H_M,   H_DO,H_DO,M_SI,M_SI,  M_LA,M_LA,  M_LA,M_LA, STOP,STOP,  STOP,STOP,  H_FA,H_FA,H_M, H_M,   M_DO,H_DO,  H_RE,H_RE,   H_DO,H_DO,  H_DO,H_DO,  M_SO,M_SO,H_RE,H_RE,  H_RE,H_RE,  H_FA,H_FA,H_M, H_M,   H_M, H_M,   H_DO,H_DO,H_RE,H_RE,  H_M, H_M,   H_FA,H_FA,H_M, H_M,   H_M, H_M,   M_SO,M_SO,H_RE,H_RE,  H_RE,H_RE,  H_FA,H_FA,H_M, H_M,   H_M, H_M,   H_DO,H_DO, H_RE,H_RE,  H_DO,H_DO,  M_SI,M_SI,H_DO,H_DO,  H_DO,H_DO,  STOP,STOP,
};GUI_Audio au2 = {.freqs = freqs2,.length = sizeof(freqs2)/sizeof(uint16_t),.space = 250
};

参考:

第二课 认识四分音符_哔哩哔哩_bilibili

这篇关于蜂鸣器奏乐的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1125205

相关文章

Circuit Design 三极管驱动蜂鸣器电路 及 蜂鸣器两端电压正确但是不响的解决方案

利用三极管进行电流放大的蜂鸣器驱动电路图: (百度图片找的) 我用有源蜂鸣器实现的这个电路,但是蜂鸣器不响。 details: 1. VCC =5V 蜂鸣器两端的直接电压约为4.5V, 但是蜂鸣器不响。 2. 将蜂鸣器直接接在4.5V的电源两端,蜂鸣器响。(说明蜂鸣器是好的) 3. 测了三极管各个管脚的电压, 和理论上的是一致的。 情况很奇怪,换了好几个三极管结果都是一样的,

s3c2440---PWM使用之蜂鸣器驱动移植

一、蜂鸣器驱动介绍 1.1.什么是蜂鸣器               蜂鸣器是一种简单的声响发生器,常用于电子产品中作为警示或提醒作用。其基本原理是通过交替改变直流电的电压方向来产生声音,一般使用交替电流产生声音会比较稳定。 1.2.蜂鸣器的类别 1.有源蜂鸣器 1)结构原理 有源蜂鸣器内部自带振荡源,只需接通电源即可发声。内部电路会自动产生一定频率的振荡信号,从而驱动蜂鸣器发声。

51单片机——蜂鸣器

1、蜂鸣器简介 蜂鸣器是一种将电信号转换为声音信号的器件,常用来产生设备的按键音、报警音等提示信号。 蜂鸣器按驱动方式可分为有源蜂鸣器和无源蜂鸣器 。 有源蜂鸣器:内部自带振荡源,将正负极接上直流电压即可持续发声,频率固定 无源蜂鸣器:内部不带振荡源,需要控制器提供振荡脉冲才可发声,调整提供振荡脉冲的频率,可发出不同频率的声音 2、驱动电路 三极管驱动 NPN高电平导通

51单片机.之蜂鸣器振动播放歌曲

蜂鸣器发声是通过喇叭振动发声的,通电产生磁场,磁铁吸收,而振动。不断释放,吸收。 1、蜂鸣器发声,播放不同频率的声音逐渐变尖 #include<reg52.h>sbit BUZZ = P1^6;unsigned char T0RH=0;unsigned char T0RL=0;void OpenBuzz(unsigned int frequ);void StopBuzz();void

使用HAL库实现按键控制LED和蜂鸣器

下载STM32CubeMX实现项目的初始配置(寄存器操作),下载keil对程序进行编译烧写 在STM32CubeMX中将PB0/PB1设置为输入引脚作为按键,PA6/PA4设置为输出引脚作为led和Beep,将按键引脚设置为上拉输入: 创建项目完成后在kei中写代码: 最后可以在自己的开发板上试试啦!

01:【江科大stm32】:LED闪烁/LED流水灯/蜂鸣器

1、LED闪烁程序 /*LED灯闪烁,LED正极连接电源,负极连接PA0引脚,所以输出0点亮,输出1熄灭*/#include "stm32f10x.h" #include "Delay.h"int main(void){//1. 使能挂载在APB2总线上面的片上外设时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,E

6410裸板程序,led、蜂鸣器、按键…

//***************************************************************** //作者:昊天 // //功能:在ok6410板子上跑裸板程序,用四个按键控制四个led灯的两灭及蜂鸣器的叫声, //       当按键1按下时(此时为低电平)点亮led1同时蜂鸣器响,当松手时,led1灭及蜂鸣器不响     //

stm32学习笔记---GPIO输出(代码部分)LED闪烁/流水灯/蜂鸣器

目录 面包板的使用方法 第一个演示代码:LED闪烁 最后一次快速新建工程演示 点击新建工程 选择芯片 在工程文件夹中创建Start、Library、User Start文件夹的必备文件复制操作 Library文件夹的必备文件复制操作 User文件夹的必备文件复制操作 在keil中创建Start、Library、User分组并添加文件 添加Start、Library、User文

smart210 linux3.0.8内核蜂鸣器pwm驱动分析

刚刚移植这个pwm驱动到linux3.7.4,发现了一些问题,所以把这个3.0.8的pwm驱动看看,友善带的pwm驱动为mini210-pwm.c,这个只是这个驱动的一部分,直接搬到3.7.4内核下不能用,让我们来好好看看这个驱动的实现吧 static int __init mini210_pwm_dev_init(void) {int ret;ret = gpio_request(BUZZ

嵌入式技术学习——c51单片机——蜂鸣器

一、蜂鸣器介绍 蜂鸣器时一种将电信号转化成声音信号的器件,常用来产生设备的按键音,报警音等提示信号。 蜂鸣器分为有源蜂鸣器,无源蜂鸣器 。 有源蜂鸣器:内部自带震荡源,将正负极街上直流电压即可持续发声,频率固定 无源蜂鸣器:内部不带震荡源,需要控制器提供震荡脉冲才可以发声,调整提供震荡脉冲的频率,可发出不同频率的声音。 c51中的蜂鸣器是无源蜂鸣器 二、蜂鸣器原理图 如图