音乐频谱包络图图程序
单片机实现音乐频谱

图二 MCU 部分的原理图
) ( 灯 吸呼 键摸触
色 : :: 颜
图三 点阵驱动电路图 (三) 编程思路
1) 在主函数中,单片机通过 AD 对音频数据采样,然后存放到数据缓存区进行预处理,完成 AD 滤波 处理,自动增益控制信息扫描以及其他信息处理。接着,将缓存区数据送入 快速傅立叶变换(FFT) 处理子函数进行运算。处理完后,从缓存区取出运算结果,根据得到幅值计算出点阵的显示数据, 并存储到显示缓存区。
a) 采用 USB 接口供电,并且对 USB 接口进行了扩展。在没有额外占用电脑主机 USB 接口情况下, 随时随地给系统供电;
b) 加入了触摸键设计,以及震动反馈。当触摸键响应时有震动反馈,及声光提示,如今很多触屏手 机也有这种时尚设计;
c) 加入 ThinkPad 笔记本上的经典呼吸灯指示设计。如夏日里的萤火虫,一闪一闪亮晶晶,不仅有趣 还能指示系统工作状态;
好的声音效果,其各段频率成分应该有一定的比例,录音的时候,录音师操作调音台就可以使各 段频率的成分得到调整。由于各种乐器的基频高低是不同的,所以,也可以使各种乐器之间的声音比 例得到调整,常见的是把频率由低至高分成 5 段或 7 段、10 段或 15 段,有经验的录音师或音乐家能听 出哪里(哪个频率段)“空”了,即这个频段弱。哪里“鼓了个包”,即这个频段过强。通过均衡器可 以把这些予以弥补。又因为每个人对音乐中频率分布的欣赏标准是不同的,因此,各位录音师掌握的 尺度也不同,显示出各自的风格。
小贴士(1): 根据 STC12A32S2 单片机的资源情况,最多只有 1280B RAM,我们取 64 点的 FFT 就可以满足要求,还
Matlab音乐合成实验报告

音乐合成实验目录音乐合成实验 (1)摘要: (1)第一部分简单的合成音乐 (1)1.1合成《东方红》 (2)1.2 除噪音,加包络 (3)1.3改变程序,实现1.2中的音乐升高和降低一个八度 (8)1.4在1.2的音乐中加入谐波 (9)1.5自选音乐合成——《两只老虎》 (10)第二部分用傅里叶变换分析音乐 (11)2.1载入fmt.wav并播放 (11)2.2载入文件Guitar.mat,处理原始数据realwave (11)2.3分析wave2proc的基波和谐波 (13)2.4自动分析fmt.wav的音调和节拍 (16)第三部分基于傅里叶级数的音乐合成 (19)3.1 用2.3分析出来的结果重新加谐波 (19)3.2 通过2.4提取的吉他音调信息弹奏《东方红》 (19)实验收获 (21)摘要:本文共有三大部分:第一部分,简单的音乐合成;第二部分,用傅里叶变换分析音乐;第三部分,基于傅里叶级数的音乐合成。
由潜入深,一步一步分析了用MATLAB进行音乐合成的过程。
通过本实验达到了加深对傅里叶级数和傅里叶分析的理解,熟悉对MATLAB基本使用的目标。
第一部分简单的合成音乐1.1 合成《东方红》根据《东方红》第一小节的简谱和十二平均律计算出该小节每个乐音的频率,在MATLAB 中生成幅度为1,抽样频率为8kHz 的正弦信号表示这些乐音,用sound 播放合成的音乐由图可知《东方红》的曲调定为F ,即1=F ,对应的频率为349.23Hz ,据此可以计算出其他乐音的频率,例如5对应的频率为7/125349.232523.25f =⨯=,一次类推计算出第一小节各乐音对应的频率为: 乐音 5562 1162在确定了各乐音的频率之后需要确定每个乐音的持续时间。
每小节有两拍,一拍的时间是0.5s ,因此各乐音的持续时间为: 乐音 5 5 6 2 1 1 6 2而在MATLAB 中表示乐音所用的抽样频率为fs=8000Hz ,也就是所1s 钟内有8000个点,抽样点数的多少就可表示出每个乐音的持续时间的长短。
音乐频谱

另外,我们还在着手研制多功能时钟,温度湿度的设计,把它们 以一个函数的形式和音乐频谱嵌套起来,我们还将采用无线模块对数 据进行事实更新,不需要近距离操作,只需对其进行远程控制即可。
参考资料
数字信号处理教程 第三版(程佩青)P143 STC12C5A60S2单片机资料教程
主要功能
1、可以实现16分频和64分频的切换,可以通过按键, 也可以遥控控制实现。 2、可以改变频谱显示的颜色,可以通过按键,也可以 通过红外遥控实现。 3、可以改变显示的时间亮度。 4、可以实现多功能时钟、万年历、温度湿度事实检测, 都可以通过按键或者红外遥控对时间万年历的修改。 5、可以自动模式手动模式进行切换显示。
设计简介
收集资料得知,大多数制作音乐频谱有两种方法可以实现,第一: 取模拟信号经A/D转换成数字信号单片机处理实现;第二:利用DS P处理频谱显示,硬件比较复杂,由于这学期才开始学习DSP,所 以实现比较困难。于是我们选择了第一种方法。
点阵频资料
这个屏的布局是这样的,用D0~D3,控制4个横条的数据,每条 里有8行LED。一整行的数据是一次传完64bit. 每条里的每行是通过 74ls138解码产生的。其中有R1、R2控制Байду номын сангаас阵的红色,G1、G2控制 点阵的绿色。 ABC是74LS138的ABC编码输入,E是输出允许,低 电平有效。 S是74HC595的锁存,Y是串行时钟,D0~D3是4排 74HC595的数据输入端。
原理图及PCB图
焊接板图
实物图
总结
在整个设计过程中,调试与仿真可是算是最重要与复杂的阶段了。 在调试阶段,所要解决的问题牵扯到软、硬件各个方面。在完成硬件 电路与软件设计之后,将设计好的程序通过下载器下载至单片机芯片 中,在调试中发现了软件中存在的问题,比如,频谱在上下显示时乱 跳,严重影响到数据的可读性和效果,经过细心的检错与排错,反复 的下载与测试,最终系统能较好地完成设计的要求。能够实现音频信 号实时显示频谱。同时在设计功能实现的同时,充分考虑了整个系统 的成本控制,以及最重要的系统稳定性。在系统涉及的各个领域,我 还需要更进一步进行学习和探索,以使在以后的设计中能将自己的新 鲜思维应用至实际操作中。
基于Matlab实现音乐识别与自动配置和声的功能

图1 自动配置和声整体流程 收稿日期: 2 0 1 0 - 0 9 - 1 1 作者简介: 杨若芳( 1 9 6 3 - ) , 女, 副教授, 主要从事音乐教育工 作。
126
图2 一段《小星星》的旋律波形
首先做出该音频波形的包络线:由于波形的对称性, 只取原波形的正顶点,然后对其做线性插值得到一条较平 滑的包络线,之后再取包该络线的顶点,再做插值,以此 类推,做多次后(4 次以上),提取此时的顶点,即得原波形
% p 是音符的频谱中各个峰值点的向量 F=[174.61,184.99,196,207.65,220,... ]; %固有 的频率 G={'F','bG','G','bA','A',... }; % 固定音高 f(1:length(p))=0; for i=1:length(p) for j=1:19 if p(i)/12.5<F(j)+2 && p(i)/12.5>F(j)- 2 % 给定范围 f(i)=F(j); end end end 确定了每个音的音高、音值之后,接下来进行和声配 置,由于和声的配置方式多种多样,最为基本的可以是分 解和弦与旋律配合而成,也可以是三和弦、七和弦等与音 乐并行进行,或者是二者的结合,亦或是在适当的节奏上 保持、延长、休止、添加附点等等来产生各种各样的音乐 效果。由于配置和声之前我们要确定旋律的调性,以使最 终的音乐更加和谐,这里我们采取通过旋律结束音的音高 来进行判别其调性,同时选择以三和弦与旋律的并行进行 来配置和声。对于不同歌曲、小节的判定标准不同,这可 以通过开始的模式选择来确定,此处我们所用的钢琴录制
《自动化与仪器仪表》2011 年第 1 期(总第 153 期) 每个音的包络线的顶点,如图 3 所示。
用51单片机实现音频信号的频谱显示(在LCD上显示)

用51单片机实现音频信号的频谱显示(在LCD上显示)思路:外来音频信号经过51单片机,在单片机中进行频谱分析,并将结果显示在LCD(12864或1602)上要求:频谱显示如同千千静听播放音乐时的频谱显示希望各位高手能给出详细的解决方案,感激。
51做FFT有些困难,可以使用增强型(RAM)的51机子进行参考程序:#include<STC12C5A.H>#define uchar unsigned char#define uint unsigned int#define channel 0x01 //设置AD通道为 P1.1//---------------------------------------------------------------------sbit SDA_R=P1^2;sbit SDA_R_TOP=P1^3;sbit SDA_G=P1^4;sbit SDA_G_TOP=P1^5;sbit STCP=P1^6;sbit SHCP=P1^7;//---------------------------------------------------------------------//----------------------------------------------------------------------------------------------------------------------//放大128倍后的sin整数表(128)code char SIN_TAB[128] = { 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 59, 65, 70, 75, 80, 85, 89, 94, 98, 102,105, 108, 112, 114, 117, 119, 121, 123, 124, 125, 126, 126, 126, 126, 126, 125, 124, 123, 121, 119, 117, 114, 112,108, 105, 102, 98, 94, 89, 85, 80, 75, 70, 65, 59, 54, 48, 42, 36,30, 24, 18, 12, 6, 0, -6, -12, -18, -24, -30,-36, -42, -48, -54, -59, -65, -70, -75, -80, -85, -89, -94, -98, -102, -105, -108, -112, -114, -117, -119, -121,-123, -124, -125, -126, -126, -126, -126, -126, -125, -124, -123, -121, -119, -117, -114, -112, -108, -105, -102,-98, -94, -89, -85, -80, -75, -70, -65, -59, -54, -48, -42, -36, -30, -24, -18, -12, -6 };//放大128倍后的cos整数表(128)code char COS_TAB[128] = { 127, 126, 126, 125, 124, 123, 121, 119, 117, 114, 112, 108, 105, 102, 98, 94,89, 85, 80, 75, 70, 65, 59, 54, 48, 42, 36, 30, 24, 18, 12, 6, 0, -6, -12, -18, -24, -30, -36, -42, -48, -54, -59,-65, -70, -75, -80, -85, -89, -94, -98, -102, -105, -108, -112, -114, -117, -119, -121, -123, -124, -125, -126, -126, -126, -126, -126, -125, -124, -123, -121, -119, -117, -114, -112, -108, -105, -102, -98, -94, -89, -85, -80,-75, -70, -65, -59, -54, -48, -42, -36, -30, -24, -18, -12, -6, 0, 6, 12, 18, 24, 30, 36, 42, 48, 54, 59, 65, 70,75, 80, 85, 89, 94, 98, 102, 105, 108, 112, 114, 117, 119, 121, 123, 124, 125, 126, 126 };//采样存储序列表code char LIST_TAB[128] = { 0, 64, 32, 96, 16, 80, 48, 112,8, 72, 40, 104, 24, 88, 56, 120,4, 68, 36, 100, 20, 84, 52, 116,12, 76, 44, 108, 28, 92, 60, 124,2, 66, 34, 98, 18, 82, 50, 114,10, 74, 42, 106, 26, 90, 58, 122,6, 70, 38, 102, 22, 86, 54, 118,14, 78, 46, 110, 30, 94, 62, 126,1, 65, 33, 97, 17, 81, 49, 113,9, 73, 41, 105, 25, 89, 57, 121,5, 69, 37, 101, 21, 85, 53, 117,13, 77, 45, 109, 29, 93, 61, 125,3, 67, 35, 99, 19, 83, 51, 115,11, 75, 43, 107, 27, 91, 59, 123,7, 71, 39, 103, 23, 87, 55, 119,15, 79, 47, 111, 31, 95, 63, 127};uchar COUNT=0,COUNT1=0,ADC_Count=0,LINE=15,G,T;uchar i,j,k,b,p;int Temp_Real,Temp_Imag,temp; // 中间临时变量uint TEMP1;int xdata Fft_Real[128];int xdata Fft_Image[128]; // fft的虚部uchar xdata LED_TAB2[64]; //记录漂浮物是否需要停顿一下uchar xdata LED_TAB[64]; //记录红色柱状uchar xdata LED_TAB1[64]; //记录漂浮点void Delay(uint a){while(a--);}void FFT(){ //uchar X;for( i=1; i<=7; i++) /* for(1) */{b=1;b <<=(i-1); //碟式运算,用于计算隔多少行计算例如第一极 1和2行计算,,第二级for( j=0; j<=b-1; j++) /* for (2) */{p=1;p <<= (7-i);p = p*j;for( k=j; k<128; k=k+2*b) /* for (3) 基二fft */{Temp_Real = Fft_Real[k]; Temp_Imag = Fft_Image[k]; temp = Fft_Real[k+b];Fft_Real[k] = Fft_Real[k] + ((Fft_Real[k+b]*COS_TAB[p])>>7) + ((Fft_Image[k+b]*SIN_TAB[p])>>7);Fft_Image[k] = Fft_Image[k] - ((Fft_Real[k+b]*SIN_TAB[p])>>7) + ((Fft_Image[k+b]*COS_TAB[p])>>7);Fft_Real[k+b] = Temp_Real - ((Fft_Real[k+b]*COS_TAB[p])>>7) - ((Fft_Image[k+b]*SIN_TAB[p])>>7);Fft_Image[k+b] = Temp_Imag + ((temp*SIN_TAB[p])>>7) - ((Fft_Image[k+b]*COS_TAB[p])>>7);// 移位.防止溢出. 结果已经是本值的 1/64Fft_Real[k] >>= 1;Fft_Image[k] >>= 1;Fft_Real[k+b] >>= 1;Fft_Image[k+b] >>= 1;}}}// X=((((Fft_Real[1]* Fft_Real[1]))+((Fft_Image[1]*Fft_Image[1])))>>7);Fft_Real[0]=Fft_Image[0]=0; //去掉直流分量// Fft_Real[63]=Fft_Image[63]=0;for(j=0;j<64;j++){TEMP1=((((Fft_Real[j]*Fft_Real[j]))+((Fft_Image[j]*Fft_Image[j])))>>1);//求功率if(TEMP1>1)TEMP1--;else TEMP1=0;if(TEMP1>31)TEMP1=31;if(TEMP1>(LED_TAB[j]))LED_TAB[j]=TEMP1;if(TEMP1>(LED_TAB1[j])){ LED_TAB1[j]=TEMP1;LED_TAB2[j]=18; //提顿速度=12}}}void Init(){//-----------------------------------------------------------------------------------P1ASF = 0x02; //0000,0010, 将 P1.1 置成模拟口AUXR1 &=0xFB; //1111,1011, 令 ADRJ=0EADC=1; //AD中断打开ADC_CONTR = ADC_POWER | ADC_SPEEDHH | ADC_START | channel;//1110 1001 1打开 A/D (ADC_POWER)转换电源;11速度为70周期一次;//0中断标志清零;1启动adc(ADC_START);001AD通道打开(这里为P1.1);//-----------------------------------------------------------------------------------P2M0=1;P0M0=1;TMOD=0X12;TH0=0x30; //大约20K的采样率(要完整频段需40K以上。
对音乐性声音的探索与思考——读缪哈伊《频谱音乐:构建模型与创作技巧》有感

韩 冰 一、频谱音乐中的模型设计与整体布局 (一)建模与人工特质的创新性思考 频谱音乐在使用新声音材料创作时,建模与人工特质深刻影响着作品的形成与创新,这关乎声音本体与主题发展的谐和关系。
从频谱视图的包络数据来看,传统乐器与合成器所形成的频谱特点值得我们去利用其特征进行处理,得出我们需要的特色泛音列从而进行创作。
从早期频谱音乐的初级创作到今天我们更细致地利用频谱模型进行创作发展,分析包括回声(Echo)、混响(Reverberation)、循环(Loop)与自我繁殖等客观存在的一系列声音特质,可以通过媒介采集到这些复杂而特别的频谱图,将它当作一种新材料运用在频谱音乐的创作中。
《频谱音乐:构建模型与创作技巧》中举例单簧管乐器的频谱分析。
单簧管音色中的方波(Squarewave)与缺损三分之一泛音列,这种具有特色的泛音列在创作时可以根据方波及缺损泛音的特点构建具有单簧管特点的频谱模型进行发展,这种不同于调式或和声的复杂声音,从理论角度来讲就发展到了新的层面,这种新规律形成的整体结构可使现代音乐按照科学的步伐更严谨地发展。
同样,在其他任何一种乐器音色中,非谐和频谱造就的非音色、非和声的人工特质,同样形成了复杂声响进而创作发展。
在创作频谱音乐作品时,除了以上具有频谱思维的特殊谐频或人工合成特质,计算机合成技术在频率调率(Modulation frequency)运用方面也是创作发展的方法。
将两种频率(载频(Porteuse)/调频(Modulate))中的载频加/减i次(i=次数的指数),那么可以得到合成的频率调制方法。
无论是哪种创作发展方法,现今频谱音乐创作已经到达一种单纯听觉难以分析的程度,复杂的频谱成像使音乐的创作形式更进一步展开,这是现代科学与艺术结合的成果。
(二)音高中心性在频谱音乐创作中的体现 音高中心性这一概念广泛运用在现代作曲理论中,那么在频谱音乐的创作中音高中心性应从哪个角度深入呢?笔者认为应是以纯音(Pure tone)为中心基点形成的基音,将创作原则与现代技术相结合,发展出具有“声景”效果的音乐性声音听觉。
第四章:音色与频谱/声谱图

第四章:⾳⾊与频谱/声谱图泛⾳的种类和多少决定了⾳⾊为什么有的⼈声⾳听起来暗,有的⼈听起来亮?事实上即使是唱同⼀个⾳⾼,⼤家的⾳⾊也天差地别,差别就在泛⾳上了。
⼀般来说1. 泛⾳越充分的声⾳越饱满。
2. 低频泛⾳越充分的声⾳听起来越“厚实”,越“有⼒”。
3. ⾼频泛⾳越充分的声⾳穿透⼒越强,声⾳听起来越“亮”,越“尖”。
4. ⾼低频都有并且合理分布的声⾳,就是⽐较完美的声⾳。
声乐理论⾥,⼀般把低频泛⾳叫低位置共鸣,⾼频泛⾳叫⾼位置共鸣。
频谱图/声谱图频谱图/声谱图是观察泛⾳的最好办法。
点看全图频谱图/声谱图是描述⼀个声⾳是由多少波符合⽽成的,我⾃⼰做了个软件,如下图:点看全图此图由两部分组成,上半部分为声谱图(Spectrogram),下半部分为频谱图(Spectrum)。
先看上图:横坐标是时间,纵坐标是频率值,同⼀时间的纵线上存在着数个波,重合⽽成最终的波。
颜⾊越亮则表⽰波的振幅越⼤。
混乱的背景都是伴奏,我们只观察⼈声线。
再看下图:下图反映了上图的某个时间点(上图中的黄线)的频率分布。
横坐标为频率,纵坐标为振幅。
这个图更有利于直观的观察泛⾳的成分和强弱。
频谱/声谱图是如何制作的我们都知道原始的声⾳是波形图,不过原始的波形图并没有太⼤研究价值,⽽且事实上也看不出“波形”。
因为震动频率太⾼,⽐如帕⽡罗蒂的high c吧,500多的震动频率,表⽰⼀秒钟要震动500多次,那肯定是看上去⼀⼤坨,类似这样:放⼤⼏⼗倍之后,⼤约能看出波形,类似这样⽆论哪种都不适合研究。
所以⾳频解析的过程是:取连续采样点,⼀般是4096个点,考虑到⾳频⽂件的采样率⼀般是44.1k,所以就是取了1/10秒之内的数据。
然后对这4096个点作做快速傅⾥叶变换,就得到了频谱图。
频谱图的信息是4096个点,每⼀个点对应的是这个频率上的振幅。
频谱图反应的是在这个时间点上的频率分布情况。
严格的说应该是这1/10秒内的平均情况。
来⼀张典型频谱图,看看跟我的图下部是不是⼀回事:点看全图将当前时间点的频谱画到声谱图⾥就得到了瀑布图(第⼆章视频中的图)。
毕业设计-频谱显示的音乐播放器

关键词:单片机;音频;快速傅里叶变换(FFT) ;频谱显示
I
河南理工大学毕业设计(论文)说明书
Abstract
This design is a single-chip computer with spectrum display function based on music player, through a design of hardware and software of low cost, to realize the music playing function. At the same time achieving music spectrum dynamic display, so that people can easily enjoy music brought joy. Music playing part is composed of a single-chip computer, the SD card module circuit, power amplifier circuit, a function key circuit and power supply circuit. Through the single-chip computer, using serial peripheral interface (SPI) protocol on the SD card, and the WAV music file is read. The WAV file with pulse width modulated sampling rate (PWM). Pulse width modulation (PWM) and the two order filter circuit converts the digital signal into analog signals, and the audio power amplifier module amplifies the signal to drive reducing audio speaker. Spectrum display part is composed of a single-chip computer and LED lattice part. When the music is played, the analog signal is collected by A/D converter in the single-chip computer. The 128 sampling points are analyzed by the Fast Fourier Transform (FFT) algorithm. And then taking the amplitude, driving LED lattice. And the corresponding LED is lighted.