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

基于MATLAB的虛擬音樂及可視化

2022-02-19 04:41:04南陽理工學院智能制造學院周先輝沈明宇
數字技術與應用 2022年1期
關鍵詞:可視化音樂

南陽理工學院智能制造學院 周先輝 沈明宇

基于數字音頻處理技術的虛擬音樂以其獨特的優勢受到眾多音樂創作者和聽眾的喜愛。為從數據化和圖像可視化的角度對音樂進行賞析、增強對音樂的理解、分析和處理,本文以電子琴為研究對象,提出了一種基于MATLAB軟件的音樂模擬和可視化方法。通過對樂音的特征分析、GUI界面設計、控件回調函數編程等方法實現了對琴鍵的模擬。利用timerfcn等函數功能完成了MP3音樂播放器設計,系統具有曲目添加、播放、暫停、音量調節等功能,播放時間、進度及音頻時域波形可動態實時顯示。通過DSP實時采集音樂信息展示動態頻譜,實現了樂曲旋律的動態可視化;通過定義音符、節拍和音調等模擬實現了編曲仿真和虛擬演奏,直觀地展現了電子聲樂,達到了較好的視聽效果。

1 計算機數字音樂

計算機音樂因具有可利用軟件進行修改編輯、聲形并茂地展現音樂效果、檢測音樂細節聽感、方便合成和模擬等功能,受到眾多音樂創作者的喜愛[1]。通過計算機技術和數字音頻處理技術完成的虛擬音樂作品,可將原始高質量數字音頻的細膩與真實還原,擁有獨特的音色,帶來非同一般的音樂體驗[2],受到眾多聽眾的喜愛。當前,數字音頻處理技術為音頻信號的采集,量化、修正、模擬和音量音質的完善提供了有效的手段,通過相關軟件可對傳入計算機的音頻進行一定的修改、完善、合成、模擬和動態處理[3-5]。MATLAB具有強大的數據處理能力,可方便快捷地完成語音信號的分析、處理和可視化,其GUI界面功能為用戶提供了高品質的可視化體驗。基于此,本文以電子琴為研究對象,借助MATLAB軟件進行樂器模擬和音樂視覺表現。通過對音樂進行分析、處理和合成,實現琴鍵模擬、播放器設計、旋律動態可視化、編曲仿真和虛擬演奏等功能,從數據化以及圖像可視化的角度輔助音樂賞析,增強愛好者對音樂的學習和理解、分析和處理。

2 電子琴樂音模擬與GUI鍵盤

2.1 樂音分析與模擬

常見61鍵電子琴一般由5組音高不同的八度和1組高位Do組成。為簡化設計,琴鍵模擬時將鍵數簡化為34個,包含大字八度、無重音八度和三個小字組八度。音高、音色、響度和音長為樂音的主要特征。音高為音調高低不同的聲音,電子琴樂音的各個音調都對應著不同的基波信號頻率。音色取決于諧波頻譜,將基波頻率信號與樂器音色諧波信號疊加,可使人感知真實的樂器聲音。響度主要取決于信號振幅的大小,音長即樂音信號在時間上的延續。

為實現對琴鍵樂音的模擬,首先提取所模擬電子琴每一音鍵的基波頻率特征。為此,先對電子琴樂音進行信號采集,將音頻信號通過audioread()函數讀入MATLAB軟件,繪制出音頻信號時域波形,然后通過length()函數獲取音頻長度,用于計算音頻總采樣點數,利用hanning窗函數進行頻譜分析得到樂音的基波頻率值。中音Do的樂音分析如圖1所示。依此方法獲得需模擬的電子琴各琴鍵的音階-頻率關系。

圖1 電子琴琴鍵樂音分析Fig.1 Key music analysis of electronic organ

樂聲模擬以音階-頻率方式進行。選取合適的采樣頻率和采樣點數,以正弦函數的形式寫入發聲函數sound(),組成各琴鍵的樂音。為實現音色的模擬,利用傅里葉變換技術在樂音中增加一些幅值小于基波的諧波分量。琴聲樂音結束時都有一個響度衰減的過程,尾音明顯,為實現樂音的響度衰減,需要對聲音幅值進行處理。圖2為音色與幅值處理后的虛擬中音Do時域波形及頻譜,其m文件為

圖2 虛擬中音Do樂音波形及頻譜Fig.2 Virtual alto Do tone waveform and spectrum

Function g=key(p,n,fs) %音調拍

fs=22050;

t=0∶1/fs∶4/n

tt=n∶-1/fs∶0;

g=1/6*((sin(2*pi*524.6*t)+0.2*sin(6*pi*524.6*t)).*exp(2*tt));

plot(t,g);

sound(g,fs)

N=length(g)

y= fft(g);

f= fs/N*(0∶round(N/2)-1);

subplot(212);

plot(f,abs(y(1∶round(N/2))));

axis([0 2000 0 6000]);

2.2 GUI音樂鍵盤

在GUI界面中,電子琴鍵盤采用按鈕控件創建。回調函數中的發聲函數基于正弦函數,按音階-頻率對應關系建立一組數值向量freqs作為各琴鍵音符頻率,內嵌自變量tone調用。7個中音音符的M文件及Do音回調函數為

function y=gen_wave(tone,rythm)

Fs=8192;

freqs=[523,587,659,698,783,880,988];

x=linspace(0,2*pi*rythm,floor(Fs*rythm));

y=sin(freqs(tone)*x).*(1-x/(rythm*2*pi));

end

function Do Callback (hObject,eventdata, handles)

y=gen_wave(1,1);

sound(y,8192);

界面樂音中發聲函數的時域波形通過draw()函數繪制,頻譜分析由fft()函數完成后,使用handles結構體將數據傳遞給坐標軸以顯示頻譜曲線,頻率數值顯示通過可編輯文本實現。圖3為創建完成的GUI音樂鍵盤。

圖3 模擬音樂鍵盤Fig.3 Virtual music keyboard

3 播放器與旋律可視化

3.1 播放器設計

播放器GUI界面由音樂播放器、歌曲列表、波形顯示、音量調節等四個模塊組成,分別由不同的面板封裝。音樂播放器面板設為固定主面板,用按鈕控件控制其他三個面板的顯示狀態。界面設計時,在音樂播放器面板插入播放曲名及時長文本、進度滑動條控件、歌曲切換按鈕控件、播放/暫停切換按鈕控件等。歌曲列表面板插入歌曲添加和刪除按鈕控件及歌曲列表。波形顯示面板插入樂曲播放時的動態時域波形顯示用坐標軸。音量調節面板插入音量調節的滑動條控件及文本。各功能模塊基于控件屬性及其回調函數、控件間回調函數變量和函數內部對變量的處理。播放器總體結構如圖4所示。

圖4 播放器總體結構Fig.4 Overall structure of the player

樂曲添加列表由MATLAB列表框完成,利用uigetfile()函數創建標準對話框并通過交互式操作讀取存儲路徑文件夾中的歌曲文件名,獲取并添加樂曲數量、排序編號、更新列表框曲名。為實現樂曲播放,播放器面板GUI程序中,通過播放按鈕控件讀取存儲在列表框的文件名、路徑和音頻采樣頻率,利用audioplayer()函數根據給定的音量值播放選定的樂曲。按鈕控件具有停止→播放、播放→暫停、暫停→繼續播放三種狀態的切換功能,也可由播放或暫停切換至停止狀態,其回調函數m文件主體為

function togglebutton1_Callback(hObject, ~, handles)

global player

if get(hObject,'Value')

set(hObject,'FontSize',15,'String','l l');

try

if isplaying(player)

resume(player);

handles.isPlaying = true;

handles.isPaused = false;

end

catch

if isempty(get(handles.Listbox,'String'))

msgbox('請添加歌曲');

set(hObject,'Value',0,'FontSize',20,'String','l>');

else

set(handles.SongNameText,'String','讀取歌曲信息中...');

PathList=get(handles.Listbox,'userData');

str=get(handles.Listbox,'string');

n=get(handles.Listbox,'value');

set(handles.SongNameText,'UserData',n);

player=CreatePlayer(PathList,str,n);

set(player,'TimerFcn',{@PlayerTimerFcn, handles},...

'StopFcn',{@PlayerStopFcn,handles});

play(player);

info=getappdata(0,'info');

……

end

end

end

guidata(hObject,handles);

播放器設計界面如圖5所示,播放過程中播放進度滑動條、播放時間、動態音頻時域波形等的動態實時狀態顯示通過timerfcn()函數以定時循環的方式實現更新,其流程圖如圖6所示。為減少MATLAB運算量并提高響應速度,設計時動態顯示更新時間間隔設置為0.1秒。

圖5 播放器GUI界面效果圖Fig.5 Effect of player GUI interface

圖6 播放信息動態顯示流程Fig.6 Flow chart of information dynamic display visualizing

3.2 旋律可視化

歌曲的旋律由音高、音色、響度和音長共同決定。系統設計時,響度和音長的動態可視化通過實時采樣音樂信號后,用信號振幅隨時間作動態變化的時域波形圖體現。樂曲音色取決于演唱者及器樂,系統在對某一確定的樂曲旋律可視化時,將音色高次諧波略去。音高是歌曲主旋律的重要組成部分,其豐富的變化性及多樣性特征使音樂具有極大的可欣賞性和藝術性,動態可視化利用MATLAB信號處理DSP工具箱中的AudioRecorder()函數進行。對音頻信號實時采樣后,將播放器內的音頻信息、實時采樣函數及頻譜分析相結合,通過draw()函數更新頻譜圖和波形圖實現音頻動態頻譜圖的展現。M文件程序流程圖如圖7所示。旋律動態頻譜圖選用倍頻程算法實現響度隨頻率的實時變化。為表現出樂曲頻率的動態效果并考慮譜密度聲壓值,系統選用1/3倍頻程表示,頻譜圖橫坐標選對數坐標,以便將音域足夠寬的頻率動態的完整展示出來。圖5(b)為播放的樂曲旋律動態可視化效果。

圖7 旋律動態可視化流程Fig.7 Flow chart of dynamic melody

4 編曲仿真與虛擬演奏

4.1 曲譜公式化與演奏

樂曲的節奏由音節和小節節拍組成的,每個音節的節拍數取決于曲譜分數。如選編歌曲《殘酷月光》部分簡譜

4/4中的分子4代表了每個小節有4拍,分母4代表以四分音符為一拍。小節節拍固定,由一個或多個數字組成,這些數字即音符,音符對應著發聲頻率。樂器的基本音為C調大音階,由7個音組成。C D E F G A B音階分別對應do,re,mi,fa,so,la,xi(即簡譜1,2,3,4,5,6,7),其中第3,4(即mi和fa)音之間和第7,8(即xi和高音do)音之間是半音程。不同的音高決定不同的頻率,1=A表示該樂曲簡譜中標準A音(即la)唱為do,由音階頻率關系可知其對應的頻率為440Hz。半音程頻率,可依據十二平均率計算得到。

MATLAB編程時,選用sound(Y,fs,nBits)實現歌曲演奏,Y為輸入的樂音信號A*sin(2*pi*ω*t)。其中,參數A控制樂音的強弱(振幅),設定為1;ω控制音的高低,取決于曲譜的音調;時間變量t控制音的長短。曲譜公式化時,先根據音調獲得頻率值,再依曲譜控制音樂節拍和音符,將選定的樂器依據曲譜分割成多個不同的波段公式化并合成,最后用sound()函數播放合成的聲音即可完成樂曲演奏。

4.2 編曲演奏示例

分析樂曲《殘酷月光》可知,該曲每節四拍,每拍四分之一音符。節拍包括一拍半、一拍、半拍和四分之一拍。節拍間具有休止符和連音符。編曲時,首先根據節拍、音階定義音符頻率、節拍、音調及空拍,再將樂曲分成獨立的小段,以part變量表示,最后將各part部分串聯成曲播放。簡譜陰影部分(part1)m文件示例為

%發聲函數

function output=key(p,n,fs)

t=0∶1/fs∶1/n;

output=sin(2*pi*440*2^((p-69)/12)*t);%標準la音p=69

end

% part1音符與編曲

la0_2=key(57,2,fs);%半拍

so0_23=key(55,2/3,fs);%一拍半

mi0_23=key(52,2/3,fs);%低音mi,一拍半

t1=0∶1/fs∶0.5;

blk_2=zeros(1,length(t1));% 停頓半拍

so0_4=key(55,4,fs);

do_2=key(60,2,fs);

re_2=key(62,2,fs);

re_4=key(62,4,fs);

do_45=key(60,4/5,fs);%5/4拍

t2=0∶1/fs∶3/4;

blk_43=zeros(1,length(t2));

part1=[la0_2 so0_23 la0_2 mi0_23 blk_2 so0_4 so0_4 la0_2 do_2 re_2 re_4 do_45 blk_43];

%樂曲串聯

song=[part0 part1…… part9];

編寫好的樂曲通過audiowrite()函數轉換為音頻信號添加至播放器中后,利用dsp.AudioRecorder展示的旋律動態效果如圖8所示。

圖8 虛擬演奏樂音的動態旋律Fig.8 Dynamic melody of virtual playing

5 結語

基于計算機技術和數字音頻處理技術的虛擬音樂,可給創作者和聽眾帶來非同一般的音樂體驗。利用MATLAB編程模擬琴鍵、合成音樂靈活多變,有助于從數據化和可視化的角度增強對音樂的理解、分析和處理。通過DSP實時采集音樂信息將樂曲旋律動態可視化,可清晰展示樂曲頻率與曲調的關系。通過定義音符、節拍和音調等模擬編曲仿真和虛擬演奏,結合不同的算法對音樂進行處理,可直觀地展現電子聲樂、改善音質,充分發揮自己的創新能力,為用戶提供高品質的音樂賞析和可視化體驗。

猜你喜歡
可視化音樂
自然資源可視化決策系統
北京測繪(2022年6期)2022-08-01 09:19:06
思維可視化
師道·教研(2022年1期)2022-03-12 05:46:47
基于Power BI的油田注水運行動態分析與可視化展示
云南化工(2021年8期)2021-12-21 06:37:54
自然資源可視化決策系統
北京測繪(2021年7期)2021-07-28 07:01:18
奇妙的“自然音樂”
基于CGAL和OpenGL的海底地形三維可視化
“融評”:黨媒評論的可視化創新
傳媒評論(2019年4期)2019-07-13 05:49:14
音樂從哪里來?
藝術啟蒙(2018年7期)2018-08-23 09:14:16
圣誕音樂路
兒童繪本(2017年24期)2018-01-07 15:51:37
音樂
主站蜘蛛池模板: 无码'专区第一页| 欧美人与动牲交a欧美精品| 国产喷水视频| 亚洲日韩日本中文在线| 日韩麻豆小视频| 直接黄91麻豆网站| 内射人妻无码色AV天堂| 国产特级毛片aaaaaa| 色久综合在线| 欲色天天综合网| 粉嫩国产白浆在线观看| 欧美国产在线一区| 91精品福利自产拍在线观看| 一本大道视频精品人妻| 91丝袜在线观看| 九九视频免费看| 黄色片中文字幕| 欧美精品成人| 免费国产不卡午夜福在线观看| 中日无码在线观看| 中文字幕在线观看日本| 久久91精品牛牛| 国产精品综合久久久| 欧美无遮挡国产欧美另类| 日本三级精品| 欧美三级视频在线播放| 国产精品第一区在线观看| 美女无遮挡免费网站| 国产AV无码专区亚洲精品网站| 91人妻在线视频| 国产免费精彩视频| 中国精品久久| 国产亚洲成AⅤ人片在线观看| 亚洲人成网址| 99r在线精品视频在线播放| 在线免费无码视频| 免费欧美一级| 亚洲乱码在线视频| 98超碰在线观看| 国产青榴视频| 国产精品女同一区三区五区| 欧美日本激情| 婷婷99视频精品全部在线观看| 国产亚洲欧美日韩在线观看一区二区| 四虎影视国产精品| 国产呦视频免费视频在线观看| 久久激情影院| 特级毛片8级毛片免费观看| 欧美在线中文字幕| 人妻少妇乱子伦精品无码专区毛片| 亚洲一区网站| 久久国产精品电影| 777国产精品永久免费观看| 青青操视频在线| 91在线播放国产| 在线观看热码亚洲av每日更新| 色成人综合| 日本不卡在线播放| 亚洲人妖在线| 国产AV无码专区亚洲A∨毛片| 亚洲精品卡2卡3卡4卡5卡区| 精品少妇人妻一区二区| 在线观看国产网址你懂的| 成年人国产网站| 国产欧美网站| 美女无遮挡免费网站| 国产十八禁在线观看免费| 五月婷婷精品| 四虎永久免费地址| 在线看AV天堂| 欧美一级夜夜爽www| 欧美成一级| 狠狠色噜噜狠狠狠狠色综合久| 久久亚洲欧美综合| 成人午夜视频网站| 国产av无码日韩av无码网站| 97人人做人人爽香蕉精品| 一区二区三区毛片无码| 亚洲福利一区二区三区| 亚洲全网成人资源在线观看| 97无码免费人妻超级碰碰碰| 亚洲午夜久久久精品电影院|