999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

Arduino平臺(tái)的數(shù)字音符實(shí)時(shí)顯示設(shè)計(jì)*

2016-06-01 00:46:50郭之亨王帥李良榮

郭之亨,王帥,李良榮

(貴州大學(xué) 大數(shù)據(jù)與信息工程學(xué)院, 貴陽(yáng) 550025)

?

Arduino平臺(tái)的數(shù)字音符實(shí)時(shí)顯示設(shè)計(jì)*

郭之亨,王帥,李良榮

(貴州大學(xué) 大數(shù)據(jù)與信息工程學(xué)院, 貴陽(yáng) 550025)

摘要:國(guó)內(nèi)外在音頻顯示領(lǐng)域早已有研究,但都停留在用柱狀圖定性顯示音調(diào)高低層面。為了能實(shí)時(shí)定量顯示音調(diào)的高低,通過對(duì)音頻信號(hào)進(jìn)行快速傅里葉變換(FFT),提取基波頻率,并將基波頻率轉(zhuǎn)化為音符(文中音符都指的是C調(diào)下的數(shù)字音符),最終用音符在LCD屏幕上顯示音頻中音調(diào)的高低。本設(shè)計(jì)的創(chuàng)新點(diǎn)是在前人研究基礎(chǔ)上,讓音頻以近似于音樂簡(jiǎn)譜的形式呈現(xiàn)出來(lái),方便音樂愛好者的認(rèn)知與學(xué)習(xí)。

關(guān)鍵詞:Arduino;FFT;音符;音調(diào)

引言

科技的發(fā)展讓人們的生活學(xué)習(xí)變得更方便,其中“智能化”是當(dāng)前科技發(fā)展的一個(gè)主要趨向,之前需要人工完成的工作,現(xiàn)在越來(lái)越多的交由計(jì)算機(jī)完成。本設(shè)計(jì)的目的是用單片機(jī)技術(shù),實(shí)現(xiàn)以音樂簡(jiǎn)譜的形式在屏幕上顯示音頻中的音調(diào)高低,替代之前的人工“翻譯”工作,以降低音樂愛好者學(xué)習(xí)的難度。

設(shè)計(jì)用到的設(shè)備有Arduino開發(fā)板、音頻傳感器和LCD顯示器。其中,Arduino具有使用類似Java、C語(yǔ)言的Processing/Wiring開發(fā)環(huán)境[1]。硬件連接示意圖如圖1所示。

圖1 數(shù)字音符實(shí)時(shí)顯示硬件連接示意圖

1實(shí)現(xiàn)原理

發(fā)音物體有規(guī)律地振動(dòng)而產(chǎn)生的具有固定音高的音稱為“樂音”,比如鋼琴、小提琴、二胡等都是能發(fā)出樂音的樂器。從聲學(xué)的角度分析,樂音有3個(gè)主要特征[2]:響度、音調(diào)和音色,其中音調(diào)由每個(gè)樂音的基波頻率決定[3],用音符來(lái)表示,比如基波頻率為494 Hz的樂音對(duì)應(yīng)的音符為。通過使用快速傅里葉變換(FFT)對(duì)任意樂音信號(hào)進(jìn)行分析可知,在變換后的各頻率中基波頻率對(duì)應(yīng)的幅值最大[4]。利用這一特性就可把基波頻率提取并經(jīng)過后續(xù)一系列換算,最終將其轉(zhuǎn)化為音符顯示出來(lái)。

2實(shí)現(xiàn)方法

2.1信號(hào)的輸入以及對(duì)信號(hào)的采樣

由奈奎斯特采樣定理[5]可以知道,采樣頻率必須大于等于信號(hào)最高頻率的2倍才不會(huì)發(fā)生信號(hào)混疊,由于本次設(shè)計(jì)測(cè)量的音頻信號(hào)主要為2 000 Hz以下的中低頻,所以選擇采樣頻率為5 120 Hz(即每隔約195 μs采樣一個(gè)點(diǎn))。通過音頻傳感器將被測(cè)聲音轉(zhuǎn)換為音頻信號(hào)輸入到Arduino的ADC(A0)接口,對(duì)輸入的信號(hào)每隔250 ms進(jìn)行一次采樣,每次采樣點(diǎn)數(shù)為256點(diǎn)、用fs、n、f0分別表示采樣頻率,采樣點(diǎn)數(shù)和頻率分辨率、則f0=fs/n,所以對(duì)音頻信號(hào)做256點(diǎn)FFT變換之后的頻率分辨率為20 Hz。

2.2基波頻率的提取

對(duì)采樣之后的數(shù)據(jù)做FFT變換,將變換之后幅值最大的點(diǎn)對(duì)應(yīng)的序號(hào)賦值給num變量,num變量乘以頻率分辨率20 Hz即為基波頻率,用公式表示為fn=num× f0(其中,fn為基波頻率,本次設(shè)計(jì)f0=20Hz)。

2.3音符的顯示

本次設(shè)計(jì)所能顯示的音符為十六分音符,八分音符和四分音符。假定十六分音符的時(shí)長(zhǎng)為250 ms,則根據(jù)各音符之間的時(shí)值關(guān)系,八分音符和四分音符的時(shí)長(zhǎng)分別為500 ms和1 s。

將提取的基波頻率先按設(shè)定的音符范圍轉(zhuǎn)化為對(duì)應(yīng)的數(shù)字,然后每16個(gè)數(shù)字作為一組數(shù)據(jù)按先后順序依次放入一個(gè)大小為16的整型數(shù)組m[]中。對(duì)m[]中相鄰且相同的元素進(jìn)行合并,將合并后的元素乘以10,進(jìn)行兩次循環(huán)合并。合并之后的元素若不能被10整除,則對(duì)應(yīng)顯示的音符下面加“=”;若能被10整除且不能被100整除,則音符下面加“-”。當(dāng)下一組數(shù)據(jù)到來(lái)時(shí),m[]清空之前的數(shù)據(jù),重新接收下一組數(shù)據(jù)。因?yàn)橄噜弮蓚€(gè)基波頻率的提取時(shí)間間隔約為0.25 s,所以每組數(shù)據(jù)的提取以及每組音符在LCD上顯示的時(shí)間約為4 s(16×0.25 s)。

2.4主要程序

音符實(shí)時(shí)顯示程序如下:

for (int i = 0 ; i < 512 ; i += 2){//采樣256個(gè)點(diǎn)

delayMicroseconds(195);//采樣時(shí)間間隔為195 μs

while(!(ADCSRA & 0x10)); //開始采樣

ADCSRA = 0xf5;

byte m = ADCL;

byte j = ADCH;

int k = (j << 8) | m;

k -= 0x0200;

k <<= 6;//形成一個(gè)16位的整型數(shù)據(jù)

fft_input[i] = k;//將采樣得到的數(shù)據(jù)放置在

//fft_input[]的實(shí)部中

fft_input[i+1] = 0;//將fft_input[]虛部置零

}

fft_window();fft_reorder();//調(diào)整fft_input[]中的數(shù)

//據(jù)以便進(jìn)行FFT變換

fft_run();

//對(duì)fft_input[]中的數(shù)據(jù)進(jìn)行FFT變換

fft_mag_lin();//將FFT變換之后的各頻率幅

//值按次序存入fft__lin_out()

for (byte i = 3,max=0,num=3 ; i < 128 ; i++){

/*提取最大值點(diǎn)對(duì)應(yīng)的頻率的序號(hào),為排除直流信號(hào)的影響,i從3開始而不是從0*/

if(fft_lin_out[i]>max) max=fft_lin_out[i],num=i;

}

if(i==127){ //將num變量轉(zhuǎn)換為其代表的頻率所對(duì)應(yīng)的數(shù)字

if(2

else if(12

//限于篇幅,結(jié)構(gòu)相似的程序用省略號(hào)代替

……

else if(num>94) {m[l]=117;l=l+1; }

}

for(byte i=0;i<16;i++){

//合并數(shù)組中相鄰且相同的元素,將合并后的元素乘以10

for(byte i=0;i<16;i++){

if(m[i]==m[i+2]&m[i+1]==0){m[i]=0;m[i+2]=10*m[i+2];}

for(byte i=0;i<16;i++){

if(m[i]==m[i+1]){m[i]=0;m[i+1]=10*m[i+1];}

}

}

}

3實(shí)現(xiàn)效果

將程序代碼寫入計(jì)算機(jī)中的Arduino IDE中,通過USB連接線將Arduino開發(fā)板與計(jì)算機(jī)連接。將程序編譯并下載入開發(fā)板中,將信號(hào)發(fā)生器產(chǎn)生的單一頻率正弦信號(hào)輸入到Arduino開發(fā)板中,LCD屏幕準(zhǔn)確地按信號(hào)所處的頻段范圍顯示出對(duì)應(yīng)音符。將單一頻率正弦信號(hào)轉(zhuǎn)換為通過音頻傳感器輸入的不斷變化的音頻信號(hào),由于受到環(huán)境噪聲的影響和Arduino本身運(yùn)算速率的限制,LCD

Digital Notes Real-time Display Design Based on Arduino

Guo Zhiheng,Wang Shuai,Li Liangrong

(College of Big Data and Information Engineering,Guizhou University,Guiyang 550025,China)

Abstract:There have been researches about the audio display,however,all those researches just care about how to show the pitch using the histogram.In order to display the tone more precise in real-time,the fundamental frequency should be extracted after the fast Fourier transform(FFT) of the audio signals.Then the fundamental frequency is converted into the digital notes of C tone.At last,the tone of audio is displayed on the LCD screen in the form of notes.This design makes the audio show approximate to the form of music,which can help people learn and study music.

Key words:Arduino;FFT;notes;tone

中圖分類號(hào):TP391.4

文獻(xiàn)標(biāo)識(shí)碼:A

* 基金項(xiàng)目:項(xiàng)目研究受國(guó)家自然科學(xué)基金項(xiàng)目(61361012)資助。

主站蜘蛛池模板: 在线五月婷婷| 色婷婷视频在线| 日韩无码视频专区| 少妇被粗大的猛烈进出免费视频| 亚洲国产AV无码综合原创| 国产肉感大码AV无码| 久久熟女AV| 黄色网站不卡无码| 国产成人1024精品| 真实国产乱子伦视频| 国产免费观看av大片的网站| 一级香蕉视频在线观看| 九色综合视频网| 亚洲资源站av无码网址| 欧美第九页| 国产十八禁在线观看免费| 国产精品jizz在线观看软件| 成人午夜视频在线| 欧美色99| 日韩在线播放中文字幕| 欧洲在线免费视频| 性激烈欧美三级在线播放| 欧美日韩国产在线观看一区二区三区| 日本国产一区在线观看| 亚洲精品久综合蜜| 黄色三级网站免费| www亚洲天堂| 国产在线观看第二页| 五月天在线网站| 亚洲码一区二区三区| 亚洲天堂首页| 色国产视频| 试看120秒男女啪啪免费| 欧美a在线视频| 欧美成人免费一区在线播放| 国产高颜值露脸在线观看| 91九色视频网| 亚洲人成网站色7777| 国产地址二永久伊甸园| 99久久国产综合精品2023| 97色婷婷成人综合在线观看| 日日拍夜夜操| 欧美色伊人| 日本手机在线视频| 久久精品人人做人人综合试看| 国产97色在线| 色婷婷亚洲十月十月色天| 日韩欧美国产成人| 韩国自拍偷自拍亚洲精品| 午夜爽爽视频| 好吊色妇女免费视频免费| 国产精品成人一区二区| 91久久精品国产| 另类重口100页在线播放| 国产视频只有无码精品| 成人国产精品网站在线看| 免费毛片全部不收费的| 精品伊人久久大香线蕉网站| 在线日韩日本国产亚洲| 爽爽影院十八禁在线观看| 亚洲欧美激情小说另类| 欧美国产日韩一区二区三区精品影视| 高潮毛片免费观看| 三级视频中文字幕| 九九热精品免费视频| 99久久性生片| 亚洲香蕉伊综合在人在线| 欧美a级完整在线观看| 亚洲欧洲日产国码无码av喷潮| 精品国产成人高清在线| 97久久免费视频| 国产丝袜丝视频在线观看| 91成人免费观看| 日韩国产亚洲一区二区在线观看| 亚洲品质国产精品无码| 久久久久无码精品国产免费| 这里只有精品免费视频| 国产男女免费完整版视频| 久久婷婷综合色一区二区| 一本一道波多野结衣一区二区| 萌白酱国产一区二区| 沈阳少妇高潮在线|