MATLAB音乐十二平均律频谱分析与STM32电子琴(含源码)

MATLAB音乐十二平均律频谱分析与STM32电子琴(含源码)

    • 1.前言
    • 2.前置知识
    • 3.单音频谱分析
    • 4.基于STM32电子琴设计
    • 4.1 利用STM32内部定时器产生PWM输出信号
    • 4.2占空比
    • 4.3频率
    • 4.4电路设计
    • 4.5主要实现代码
    • 参考文章

1.前言

本文为本学期一门课程的一次课程设计大作业,题目是《音乐合成器设计》,想着作业做也做了,不如写下这篇博客巩固一下学习所得,同时也给有需要的人分享经验。所做工作主要有一下几个:1.基于乐曲简谱和“十二平均律”,使用MATLAB分析不同单音节的频谱;2.基于STM32利用乐音频率实现完整音乐的合成和播放功能。

2.前置知识

十二平均律

十二平均律,亦称“十二等程律”,世界上通用的一组音(八度)分成十二个半音音程的律制,各相邻两律之间的振动数之比完全相等。十二平均律在交响乐队和键盘乐器中得到广泛使用,钢琴即是根据十二平均律来定音的。-——来源百度百科

MATLAB音乐十二平均律频谱分析与STM32电子琴(含源码)_第1张图片
划重点,十二平均律是组成一首音乐的基础,各相邻两律之间的振动数之比完全相等。换言之就是常见的Do Re Mi Fa So La Si Do和其他四个半音。

3.单音频谱分析

篇幅有限,笔者只录下7个常见单音。话不多说,立马翻出半途而废,尘封多年的吉他,用手机把7个单音逐个录了下来。

Do 2弦第1品、 Re 2弦第3品、Mi 1弦空弦、Fa 1弦第1品、So 1弦第3品、La 1弦第5品、Si 1弦第7品。——来自百度,笔者吉他水平实在太差

MATLAB音乐十二平均律频谱分析与STM32电子琴(含源码)_第2张图片

使用MATLAB对单音进行傅里叶变换(FFT),得到该音节的频谱图
MATLAB代码:

close all;
clear all;
clc;
figure;
[filename,filepath]=uigetfile('.wav','Open wav file'); 
[w,fs,bits]=wavread([filepath,filename]);  %从电脑文件夹选择wav音频文件
sound(w,fs,bits);
y=w(:,1);
display('声音文件的大小为:');size(w)
subplot(211);plot(y);title('时域波形');
N=pow2(nextpow2

你可能感兴趣的:(笔记,嵌入式,matlab,stm32)