音乐频谱包络图图程序
- 格式:docx
- 大小:48.96 KB
- 文档页数:3
音乐合成实验目录音乐合成实验 (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个点,抽样点数的多少就可表示出每个乐音的持续时间的长短。
用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秒内的平均情况。
来⼀张典型频谱图,看看跟我的图下部是不是⼀回事:点看全图将当前时间点的频谱画到声谱图⾥就得到了瀑布图(第⼆章视频中的图)。
迷你音乐频谱显示器
实现功能:
# 电路制作简单,无需PCB板,只需元器件,采用USB 接口供电
# 采用LED点阵16*8显示,随音频变化而起伏显示
# 自动增益调整(根据输入音量自动调整到最佳显示效果)
电路原理图:
编译、下载程序说明:
用Keil uVision4来编写程序。
使用STC-ISP软件下载时,需选择“RST作为P4.7使用”项
使用STC-ISP软件下载时,需选择“外部晶体或时钟”项
制作说明:
1、用热熔胶或502胶水将USB公头反向粘到芯片底座的左侧(底座缺口一侧)
2、将USB公头上的正极连至40脚,负极连至20脚,将2PIN排针粘到芯片底座的右侧(频谱接口),上端接1脚(P1.0),下端接20脚
3、2个30PF电容连接至芯片底座的18、19、20脚
4、32.768MHZ晶振连接至芯片底座的18、19脚
5、将芯片安放置底座上,缺口对缺口
6、8*8点阵管脚识别方法:点阵旁边的字朝下,下边那行的左边开始数是第一脚,然后逆时针走一圈1~16脚,和集成块的数法一样,然后对照点阵原理图看!
7、将2个8*8点阵安放于另一个芯片底座上,如图所示,左侧空出1列,右侧空出3列,右侧底下两只脚接发光二极管(左正右负)
8、将两块芯片底座合并,40个管脚依次焊接到一起,USB公头接上USB延长线到电脑,音频接口接上杜邦线到音频线,到音频分离器
9、制作音频线:
10、一分二音频分线器可以让音乐频谱显示器与音响并联
到频谱显示器接口
到音箱
到电脑
11、音乐频谱显示器通过USB接口取电,从音频接口采集音乐信号
12、成品展示
需要hex文件的请留下邮箱地址发送给您?。