Processing圖形交互設(shè)計基礎(chǔ)(微課版)課件 第5章 processing 音視頻處理+人工智能的計算機視覺_第1頁
Processing圖形交互設(shè)計基礎(chǔ)(微課版)課件 第5章 processing 音視頻處理+人工智能的計算機視覺_第2頁
Processing圖形交互設(shè)計基礎(chǔ)(微課版)課件 第5章 processing 音視頻處理+人工智能的計算機視覺_第3頁
Processing圖形交互設(shè)計基礎(chǔ)(微課版)課件 第5章 processing 音視頻處理+人工智能的計算機視覺_第4頁
Processing圖形交互設(shè)計基礎(chǔ)(微課版)課件 第5章 processing 音視頻處理+人工智能的計算機視覺_第5頁
已閱讀5頁,還剩71頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

我們畢業(yè)啦其實是答辯的標題地方Processing創(chuàng)意編程音視頻處理1教學重點(1) 如何向項目添加媒體素材(2) 庫的安裝與調(diào)用(3) 基本的Processing播放視頻方法教學難點(1) 庫的安裝與調(diào)用(2) 基本的Processing播放視頻方法任務(wù):視頻播放2任務(wù)具體要求調(diào)用庫實現(xiàn)視頻播放什么是庫?5在學習編程的過程中,我們經(jīng)常聽到“庫”(library)這個詞。就像在制作一雙鞋時需要各種材料和零件一樣,編程也需要各種成熟的“部件”,而這些“部件”就是別人為我們寫好的一堆程序或源代碼,我們可以在自己的程序中引用它,從而達到“編寫一次,多次使用”的效果。庫的使用方法6下載庫文件從官方網(wǎng)站或其他可信來源下載需要的庫文件。安裝/復制庫文件將下載的庫文件解壓縮到計算機上。代碼中導入庫

在Processing代碼中,使用import命令導入庫。庫的下載與安裝7單擊菜單欄的“速寫本”→“引用庫文件”→“ManagerLibraries”,打開ContributionManager窗口。在Libraries選項卡下方的搜索欄輸入Video,選擇與Processing版本對應(yīng)的VideoLibraryforProcessing4單擊右下角的Install,等待幾分鐘下載和安裝完成。使用ContributionManager管理庫庫的下載與安裝8單擊菜單欄的“文件”→“偏好設(shè)定”,“速寫本位置”顯示了Processing儲存文件的地址,將這段地址全部選中并復制打開資源管理器,將地址粘貼到路徑框中,按下回車即可打開速寫本目錄該目錄下的Libraries文件夾便是儲存庫文件的地方。只需要將準備好的庫文件復制到該文件夾,便可完成庫的手動安裝。備用方案:手動下載與安裝庫速寫本目錄下保存的文件相當于為程序運行提供的環(huán)境,當需要轉(zhuǎn)移程序到另一臺電腦時,也需要將速寫本中用到的庫一并轉(zhuǎn)移。速寫本的位置可以在偏好設(shè)置中改變,為了程序穩(wěn)定,路徑不能包含中文。小知識加載媒體文件9步驟1單擊菜單欄的“文件”→“新建”,新建一個程序;步驟2單擊“文件”→“保存”,將文件命名為“media_01”,并保存到全英文路徑下。步驟3單擊“速寫本”→“添加文件”,打開添加文件窗口,選中要添加的媒體素材并單擊右下角的“打開”,素材就被復制到程序所在的目錄下了。步驟4單擊“速寫本”→“打開程序目錄”,可以看到程序目錄中,除了主程序media_01.pde外多了一個data文件夾,添加的素材就在這個文件夾中。

直接將素材復制到程序所在目錄的data文件夾中,同樣可以添加素材。試試看用到的素材必須放在程序目錄下!任務(wù):播放視頻10單擊菜單欄的“速寫本”→“引用庫文件”→對應(yīng)Processing版本的“VideoLibrary”,自動添加一行代碼“importProcessing.video.*;”。直接在編輯區(qū)輸入這行代碼另一方法庫的導入在Processing中,使用庫是一種將額外功能集成到項目中的方式。Processing支持通過關(guān)鍵字import來引入庫。比如在本案例中,代碼的第一行便是:importprocessing.video.*;使用import關(guān)鍵字,后跟庫的名稱,將庫引入代碼中。Processing附帶了許多內(nèi)置庫,如video、sound、serial等,提供了多數(shù)常用功能。此外,還可以使用外部庫來擴展Processing的功能。一旦引入庫,就可以使用庫中提供的類、函數(shù)和常量。例如,本案例在引入video庫后,可以使用Movie類和相關(guān)函數(shù)來處理視頻。庫的引用任務(wù):播放視頻12importprocessing.video.*;//導入視頻處理相關(guān)的庫Moviemov;//聲明一個名為mov的視頻對象//設(shè)置程序初始環(huán)境voidsetup(){size(1280,720);mov=newMovie(this,"testmovie.mp4");//初始化視頻對象,加載視頻文件

mov.play();//開始播放視頻}//特殊的視頻事件處理函數(shù),在每一幀更新時調(diào)用voidmovieEvent(Moviemov){mov.read();//讀取視頻的下一幀}//繪制函數(shù),在每一幀繪制時調(diào)用voiddraw(){//將當前視頻幀繪制到屏幕上,起始位置為(0,0),大小與窗口相同

image(mov,0,0,width,height);}要注釋!read()和play()是processing.video庫中的函數(shù),需要導入該庫后才能使用注意!任務(wù):播放視頻13引入多個庫時,可能會出現(xiàn)函數(shù)或類的命名沖突。使用庫的前綴來區(qū)分不同庫中的相同命名的函數(shù)或類。比如在下面這段代碼中同時引入了兩個庫:video庫和sound庫,并且它們都有一個名為play()的函數(shù)。當程序中存在這個play()函數(shù)的時候,由于存在命名沖突,Processing不知道應(yīng)該使用哪個庫中的play()函數(shù)。這時候需要用庫的前綴來區(qū)分不同庫中的相同命名的函數(shù)或類。命名沖突importprocessing.video.*;importprocessing.sound.*;

voidsetup(){//一些代碼}

voiddraw(){//一些代碼video.play();//調(diào)用video庫中的play()函數(shù)sound.play();//調(diào)用sound庫中的play()函數(shù)}總結(jié):庫(library)15隨堂測驗-庫趁熱打鐵概念定義:庫是一組預先編寫好的代碼集合,用于解決特定的問題或執(zhí)行特定的任務(wù)。作用:提供可重用的代碼,避免重復編寫相同功能的代碼,提高開發(fā)效率。安裝內(nèi)置管理器:使用ContributionManager管理庫手動下載安裝:從官方網(wǎng)站或其他來源下載所需的庫文件,將解壓后的庫文件夾復制到編程環(huán)境的指定位置導入導入庫:使用import命令導入所需的庫。例:importExampleLibrary.*;調(diào)用庫中的函數(shù):通常使用

庫名.函數(shù)名()的方式來調(diào)用。例:

ExampleLibrary.functionName()挑戰(zhàn):修改代碼-播放控制16可用代碼語法說明mov.speed()mov.speed(rate)設(shè)置播放速度mov.jump()mov.jump(time)跳轉(zhuǎn)到指定時間(單位:秒)mov.pause()mov.pause()暫停播放mov.play()mov.play()開始播放mov.loop();mov.loop();開始循環(huán)播放//單擊鼠標切換播放/暫停booleanisPlaying=true;//監(jiān)視播放狀態(tài)voidmousePressed(){if(isPlaying){mov.pause();//暫停視頻

}else{mov.play();//播放視頻

}isPlaying=!isPlaying;//切換播放狀態(tài)}可用代碼-3//按下空格重播voidkeyPressed(){if(key=='

'){mov.jump(0);//重新播放視頻(跳轉(zhuǎn)到開始位置)

isPlaying=true;//更新播放狀態(tài)

}}可用代碼-4視頻循環(huán)播放兩倍播放速度單擊鼠標切換播放/暫停按下空格重播提交作業(yè)【創(chuàng)意編程實踐】5.1-視頻播放任務(wù)注:單引號之間有空格任務(wù):播放音頻-準備工作17安裝庫使用內(nèi)置管理器ContributionManager下載安裝sound庫或手動下載安裝到指定路徑新建項目新建名為“music_01”的項目準備素材在速寫本中添加媒體文件“testmusic.mp3

“或復制媒體文件至程序文件夾下data文件夾內(nèi)引入庫速寫本中引入庫文件“sound”或直接輸入代碼:importprocessing.sound.*;任務(wù):播放音頻18importprocessing.sound.*;//導入處理音頻的庫SoundFilesound;//聲明一個SoundFile類型的變量,用于存儲音頻文件voidsetup(){size(600,600);//創(chuàng)建一個600x600像素的窗口

background(255);//設(shè)置背景顏色為白色

sound=newSoundFile(this,"testmusic.mp3");//加載音頻文件到sound變量中

sound.play();//播放音頻文件}voiddraw(){//持續(xù)更新畫面確保窗口保持活動狀態(tài)}刪掉draw()函數(shù),音樂還會播放嗎?為什么?試一試實現(xiàn)基礎(chǔ)播放功能任務(wù)testmusic.mp3素材任務(wù):播放音頻19voidmousePressed(){//單擊鼠標切換播放/暫停

if(sound.isPlaying()){//如果音頻正在播放

sound.pause();//暫停音頻播放

}else{//如果音頻未在播放

sound.play();//播放音頻

}}添加播放控制功能任務(wù)sound.isPlaying()用于檢查音頻是否正在播放。如果音頻正在播放,它會返回true,否則返回false。說明任務(wù):播放單擊音效20importprocessing.sound.*;SoundFilesound;voidsetup(){size(600,600);background(255);sound=newSoundFile(this,"testsound.mp3");}voiddraw(){}voidmousePressed(){sound.play();}sound_effect新建項目鼠標快速點擊會導致多個音效同時播放試一試testsound.mp3素材任務(wù):播放單擊音效21importprocessing.sound.*;SoundFilesound;voidsetup(){size(600,600);background(255);sound=newSoundFile(this,"testsound.mp3");}voiddraw(){}voidmousePressed(){if(!sound.isPlaying()){//避免多個按鍵音效同時播放

sound.play();}}testsound.mp3素材避免多個按鍵音效同時播放挑戰(zhàn)sound.isPlaying()用于檢查音頻是否正在播放。如果音頻正在播放,它會返回true,否則返回false。提示1符號!是邏輯運算符,表示邏輯“非”。它用于對布爾值進行取反操作,即將true變?yōu)閒alse,將false變?yōu)閠rue。例:!true提示2數(shù)字音頻有多種格式,每種格式都有其特定的優(yōu)缺點和適用場景。清晰了解每種音頻格式的特點和適用場景,以便更好地選擇合適的格式來滿足項目需求。相關(guān)知識:常見音頻格式音頻格式壓縮方式音質(zhì)文件大小主要用途W(wǎng)AV無損高大音頻編輯、存檔、無損音樂存儲等MP3有損中~高小網(wǎng)絡(luò)傳輸、音樂播放器、流媒體服務(wù)等OGG有損中~高小音樂流媒體服務(wù)、游戲開發(fā)等FLAC無損高小高音質(zhì)音樂存儲、音樂制作等AAC有損高小數(shù)字音樂、視頻流媒體服務(wù)等任務(wù):音量監(jiān)控23任務(wù)要求播放音樂,并實時顯示音量數(shù)值。任務(wù):音量監(jiān)控24importprocessing.sound.*;//導入處理音頻的庫SoundFilesound;//聲明一個SoundFile類型的變量,用于存儲音頻文件Amplitudeamp;//聲明一個Amplitude類型的變量,用于分析音頻振幅voidsetup(){size(640,360);//創(chuàng)建一個640x360像素的窗口

background(255);//設(shè)置背景顏色為白色

//加載音頻文件"testmusic.mp3"到sound變量中并播放

sound=newSoundFile(this,"testmusic.mp3");sound.play();//創(chuàng)建一個Amplitude對象amp,并將其連接到加載的音頻文件上

amp=newAmplitude(this);amp.input(sound);}voiddraw(){//在控制臺打印當前音頻的振幅值

println(amp.analyze());}任務(wù):音量監(jiān)控25創(chuàng)建Amplitude對象amp,用于分析音頻的振幅,并將其連接到加載的音頻文件上。在draw()函數(shù)中,調(diào)用amp.analyze()方法,實時獲取當前音頻的振幅值使用println()函數(shù)將其打印到控制臺上說明創(chuàng)意技巧26將數(shù)字從一個范圍重新映射到另一個范圍。工具:映射函數(shù)map()映射是創(chuàng)意編程中的一項重要技巧,將不同類型或來源的數(shù)據(jù)轉(zhuǎn)化為具有視覺、聽覺等效果的輸出。這種技巧能夠創(chuàng)造出有趣的互動體驗,使得編程作品更加生動和具有吸引力。創(chuàng)意技巧鼠標鼠標坐標鼠標移動速度鼠標點擊次數(shù)音頻音頻振幅音頻頻譜音調(diào)音量鍵盤輸入鍵盤按鍵鍵盤組合鍵鍵盤按鍵持續(xù)時間時間當前時間時間間隔計時器環(huán)境溫度濕度光線強度運動傳感器數(shù)據(jù)隨機要素隨機數(shù)生成器任務(wù)二描述任務(wù)二:聲音可視化任務(wù)具體要求實現(xiàn)隨音量變化的動畫任務(wù):播放音頻-準備工作28新建項目新建名為“AmpAnalyze_02”的項目準備素材在速寫本中添加媒體文件或復制媒體文件至程序文件夾下data文件夾內(nèi)引入庫速寫本中引入庫文件或直接輸入代碼:importprocessing.sound.*;任務(wù)二實現(xiàn)步驟1:單擊菜單欄的“文件”→“新建”,新建一個程序;步驟2:單擊“文件”→“保存”,將文件命名為“AmpAnalyze_02”,并保存到全英文路徑下。步驟3:單擊“速寫本”→“添加文件”,打開添加文件窗口,選中準備好的音頻“testmusic.mp3”,單擊右下角的“打開”,將素材就復制到程序所在的目錄下。步驟4:在代碼編寫區(qū)輸入以下代碼;importprocessing.sound.*;SoundFilesound;Amplitudeamp;voidsetup(){size(640,360);background(255);sound=newSoundFile(this,"testmusic.mp3");

sound.play();amp=newAmplitude(this);

amp.input(sound);}voiddraw(){

println(amp.analyze());background(255);floatrectHeight

=map(amp.analyze(),0,1,0,height);fill(255,0,0);//顏色為紅色

rect(0,height-rectHeight,width,rectHeight);}任務(wù)二實現(xiàn)步驟6:單擊按鈕運行程序,可以看到一個隨音樂變化的紅色矩形可視化效果。矩形的高度根據(jù)音頻振幅的大小而變化,使用戶可以通過視覺方式觀察到音頻的振幅變化?!境脽岽蜩F】31附件作業(yè):【創(chuàng)意編程實踐】音頻播放sound_effect聲音可視化:在程序基礎(chǔ)上增加額外的數(shù)值映射特效,如顏色、形狀等。任務(wù)三描述任務(wù)三:過渡動畫任務(wù)具體要求使用lerp()函數(shù)實現(xiàn)平滑運動效果任務(wù):播放音頻-準備工作33新建項目新建名為“AmpAnalyze_03”的項目準備素材在速寫本中添加媒體文件或復制媒體文件至程序文件夾下data文件夾內(nèi)引入庫速寫本中引入庫文件或直接輸入代碼:importprocessing.sound.*;任務(wù)三實現(xiàn)importProcessing.sound.*;SoundFilesound;Amplitudeamp;floattargetRectH=0;//定義矩形目標高度floatcurrentRectH=0;//定義矩形當前高度floatChangeSpeed=0.07;//調(diào)整此值以控制矩形高度變化速度voidsetup(){size(640,360);background(0);sound=newSoundFile(this,"testmusic.mp3");

sound.play();

amp=newAmplitude(this);

amp.input(sound);}voiddraw(){background(0);

//獲取音頻振幅并計算矩形高度

floatampLevel=amp.analyze();

targetRectH=map(ampLevel,0,1,0,height);

//平滑過渡矩形高度

currentRectH=lerp(currentRectH,targetRectH,ChangeSpeed);

//添加變色效果

floatRGBcolor=map(ampLevel,0,1,0,255);fill(RGBcolor,0,255-RGBcolor);

//繪制矩形

rect(0,height-currentRectH,width,currentRectH);}lerp()函數(shù)通常用于在動畫、圖形漸變、平滑運動以及其他需要平滑過渡的情況下,生成中間值。它接受三個參數(shù):start:起始值。stop:結(jié)束值。amt:插值的程度,通常在0.0到1.0之間。lerp()函數(shù)的數(shù)學表達式如下:lerp(start,stop,amt)=start+(stop-start)*amt動畫過渡在本案例中,定義平滑動畫所需的三個參數(shù):floattargetRectH=0;//定義矩形目標高度floatcurrentRectH=0;//定義矩形當前高度floatChangeSpeed=0.07;//調(diào)整此值以控制矩形高度變化速度在draw()函數(shù)中,添加lerp函數(shù)實現(xiàn)平滑。

currentRectH=lerp(currentRectH,targetRectH,ChangeSpeed);動畫過渡案例中為了豐富視覺效果,矩形的顏色也添加上變化特效,將音量值映射到顏色值的范圍,使矩形的顏色也隨著音樂變化。

floatRGBcolor=map(ampLevel,0,1,0,255);fill(RGBcolor,0,255-RGBcolor);這段代碼使用了Processing中的map()函數(shù),該函數(shù)用于將一個數(shù)值從一個范圍映射到另一個范圍。具體來說,它將變量ampLevel從0到1的范圍映射到0到255的范圍內(nèi),并將結(jié)果保存在`RGBcolor`變量中。ampLevel是表示音頻振幅級別的變量,通常范圍在0到1之間,其中0表示靜音,1表示最大音量?;仡櫍簲?shù)值映射ampLevel是表示音頻振幅級別的變量,通常范圍在0到1之間,其中0表示靜音,1表示最大音量。map()函數(shù)的參數(shù)分別為:要映射的值(這里是ampLevel),原始范圍的最小值和最大值(0和1),目標范圍的最小值和最大值(0和255)。映射后的結(jié)果存儲在`RGBcolor`變量中,表示一個顏色值,用于控制填充色。映射函數(shù)可以構(gòu)建不同形式或來源的數(shù)值之間的聯(lián)系,除了本案例中將音量映射為顏色,還可以用于形狀、運動、視覺等方面,從而創(chuàng)造出有趣的聯(lián)動與互動藝術(shù)體驗。回顧:數(shù)值映射總結(jié)39隨堂測驗趁熱打鐵analyze()實時獲取當前音頻的振幅值isPlaying()檢查音頻是否正在播放。如果音頻正在播放,它會返回true,否則返回false。插值函數(shù)lerp()通常用于在動畫、圖形漸變、平滑運動以及其他需要平滑過渡的情況下,生成中間值。lerp(start,stop,amt)=start+(stop-start)*amt我們畢業(yè)啦其實是答辯的標題地方Processing創(chuàng)意編程音視頻處理40任務(wù):視頻播放41任務(wù)具體要求調(diào)用庫實現(xiàn)視頻播放什么是庫?42在學習編程的過程中,我們經(jīng)常聽到“庫”(library)這個詞。就像在制作一雙鞋時需要各種材料和零件一樣,編程也需要各種成熟的“部件”,而這些“部件”就是別人為我們寫好的一堆程序或源代碼,我們可以在自己的程序中引用它,從而達到“編寫一次,多次使用”的效果。庫的使用方法43下載庫文件從官方網(wǎng)站或其他可信來源下載需要的庫文件。安裝/復制庫文件將下載的庫文件解壓縮到計算機上。代碼中導入庫

在Processing代碼中,使用import命令導入庫。庫的下載與安裝44單擊菜單欄的“速寫本”→“引用庫文件”→“ManagerLibraries”,打開ContributionManager窗口。在Libraries選項卡下方的搜索欄輸入Video,選擇與Processing版本對應(yīng)的VideoLibraryforProcessing4單擊右下角的Install,等待幾分鐘下載和安裝完成。使用ContributionManager管理庫庫的下載與安裝45單擊菜單欄的“文件”→“偏好設(shè)定”,“速寫本位置”顯示了Processing儲存文件的地址,將這段地址全部選中并復制打開資源管理器,將地址粘貼到路徑框中,按下回車即可打開速寫本目錄該目錄下的Libraries文件夾便是儲存庫文件的地方。只需要將準備好的庫文件復制到該文件夾,便可完成庫的手動安裝。備用方案:手動下載與安裝庫速寫本目錄下保存的文件相當于為程序運行提供的環(huán)境,當需要轉(zhuǎn)移程序到另一臺電腦時,也需要將速寫本中用到的庫一并轉(zhuǎn)移。速寫本的位置可以在偏好設(shè)置中改變,為了程序穩(wěn)定,路徑不能包含中文。小知識加載媒體文件46步驟1單擊菜單欄的“文件”→“新建”,新建一個程序;步驟2單擊“文件”→“保存”,將文件命名為“media_01”,并保存到全英文路徑下。步驟3單擊“速寫本”→“添加文件”,打開添加文件窗口,選中要添加的媒體素材并單擊右下角的“打開”,素材就被復制到程序所在的目錄下了。步驟4單擊“速寫本”→“打開程序目錄”,可以看到程序目錄中,除了主程序media_01.pde外多了一個data文件夾,添加的素材就在這個文件夾中。

直接將素材復制到程序所在目錄的data文件夾中,同樣可以添加素材。試試看用到的素材必須放在程序目錄下!任務(wù):播放視頻47單擊菜單欄的“速寫本”→“引用庫文件”→對應(yīng)Processing版本的“VideoLibrary”,自動添加一行代碼“importProcessing.video.*;”。直接在編輯區(qū)輸入這行代碼另一方法庫的導入在Processing中,使用庫是一種將額外功能集成到項目中的方式。Processing支持通過關(guān)鍵字import來引入庫。比如在本案例中,代碼的第一行便是:importprocessing.video.*;使用import關(guān)鍵字,后跟庫的名稱,將庫引入代碼中。Processing附帶了許多內(nèi)置庫,如video、sound、serial等,提供了多數(shù)常用功能。此外,還可以使用外部庫來擴展Processing的功能。一旦引入庫,就可以使用庫中提供的類、函數(shù)和常量。例如,本案例在引入video庫后,可以使用Movie類和相關(guān)函數(shù)來處理視頻。庫的引用任務(wù):播放視頻49importprocessing.video.*;//導入視頻處理相關(guān)的庫Moviemov;//聲明一個名為mov的視頻對象//設(shè)置程序初始環(huán)境voidsetup(){size(1280,720);mov=newMovie(this,"testmovie.mp4");//初始化視頻對象,加載視頻文件

mov.play();//開始播放視頻}//特殊的視頻事件處理函數(shù),在每一幀更新時調(diào)用voidmovieEvent(Moviemov){mov.read();//讀取視頻的下一幀}//繪制函數(shù),在每一幀繪制時調(diào)用voiddraw(){//將當前視頻幀繪制到屏幕上,起始位置為(0,0),大小與窗口相同

image(mov,0,0,width,height);}要注釋!read()和play()是processing.video庫中的函數(shù),需要導入該庫后才能使用注意!任務(wù):播放視頻50引入多個庫時,可能會出現(xiàn)函數(shù)或類的命名沖突。使用庫的前綴來區(qū)分不同庫中的相同命名的函數(shù)或類。比如在下面這段代碼中同時引入了兩個庫:video庫和sound庫,并且它們都有一個名為play()的函數(shù)。當程序中存在這個play()函數(shù)的時候,由于存在命名沖突,Processing不知道應(yīng)該使用哪個庫中的play()函數(shù)。這時候需要用庫的前綴來區(qū)分不同庫中的相同命名的函數(shù)或類。命名沖突importprocessing.video.*;importprocessing.sound.*;

voidsetup(){//一些代碼}

voiddraw(){//一些代碼video.play();//調(diào)用video庫中的play()函數(shù)sound.play();//調(diào)用sound庫中的play()函數(shù)}總結(jié):庫(library)52隨堂測驗-庫趁熱打鐵概念定義:庫是一組預先編寫好的代碼集合,用于解決特定的問題或執(zhí)行特定的任務(wù)。作用:提供可重用的代碼,避免重復編寫相同功能的代碼,提高開發(fā)效率。安裝內(nèi)置管理器:使用ContributionManager管理庫手動下載安裝:從官方網(wǎng)站或其他來源下載所需的庫文件,將解壓后的庫文件夾復制到編程環(huán)境的指定位置導入導入庫:使用import命令導入所需的庫。例:importExampleLibrary.*;調(diào)用庫中的函數(shù):通常使用

庫名.函數(shù)名()的方式來調(diào)用。例:

ExampleLibrary.functionName()挑戰(zhàn):修改代碼-播放控制53可用代碼語法說明mov.speed()mov.speed(rate)設(shè)置播放速度mov.jump()mov.jump(time)跳轉(zhuǎn)到指定時間(單位:秒)mov.pause()mov.pause()暫停播放mov.play()mov.play()開始播放mov.loop();mov.loop();開始循環(huán)播放//單擊鼠標切換播放/暫停booleanisPlaying=true;//監(jiān)視播放狀態(tài)voidmousePressed(){if(isPlaying){mov.pause();//暫停視頻

}else{mov.play();//播放視頻

}isPlaying=!isPlaying;//切換播放狀態(tài)}可用代碼-3//按下空格重播voidkeyPressed(){if(key=='

'){mov.jump(0);//重新播放視頻(跳轉(zhuǎn)到開始位置)

isPlaying=true;//更新播放狀態(tài)

}}可用代碼-4視頻循環(huán)播放兩倍播放速度單擊鼠標切換播放/暫停按下空格重播提交作業(yè)【創(chuàng)意編程實踐】5.1-視頻播放任務(wù)注:單引號之間有空格任務(wù):播放音頻-準備工作54安裝庫使用內(nèi)置管理器ContributionManager下載安裝sound庫或手動下載安裝到指定路徑新建項目新建名為“music_01”的項目準備素材在速寫本中添加媒體文件“testmusic.mp3

“或復制媒體文件至程序文件夾下data文件夾內(nèi)引入庫速寫本中引入庫文件“sound”或直接輸入代碼:importprocessing.sound.*;任務(wù):播放音頻55importprocessing.sound.*;//導入處理音頻的庫SoundFilesound;//聲明一個SoundFile類型的變量,用于存儲音頻文件voidsetup(){size(600,600);//創(chuàng)建一個600x600像素的窗口

background(255);//設(shè)置背景顏色為白色

sound=newSoundFile(this,"testmusic.mp3");//加載音頻文件到sound變量中

sound.play();//播放音頻文件}voiddraw(){//持續(xù)更新畫面確保窗口保持活動狀態(tài)}刪掉draw()函數(shù),音樂還會播放嗎?為什么?試一試實現(xiàn)基礎(chǔ)播放功能任務(wù)testmusic.mp3素材任務(wù):播放音頻56voidmousePressed(){//單擊鼠標切換播放/暫停

if(sound.isPlaying()){//如果音頻正在播放

sound.pause();//暫停音頻播放

}else{//如果音頻未在播放

sound.play();//播放音頻

}}添加播放控制功能任務(wù)sound.isPlaying()用于檢查音頻是否正在播放。如果音頻正在播放,它會返回true,否則返回false。說明任務(wù):播放單擊音效57importprocessing.sound.*;SoundFilesound;voidsetup(){size(600,600);background(255);sound=newSoundFile(this,"testsound.mp3");}voiddraw(){}voidmousePressed(){sound.play();}sound_effect新建項目鼠標快速點擊會導致多個音效同時播放試一試testsound.mp3素材任務(wù):播放單擊音效58importprocessing.sound.*;SoundFilesound;voidsetup(){size(600,600);background(255);sound=newSoundFile(this,"testsound.mp3");}voiddraw(){}voidmousePressed(){if(!sound.isPlaying()){//避免多個按鍵音效同時播放

sound.play();}}testsound.mp3素材避免多個按鍵音效同時播放挑戰(zhàn)sound.isPlaying()用于檢查音頻是否正在播放。如果音頻正在播放,它會返回true,否則返回false。提示1符號!是邏輯運算符,表示邏輯“非”。它用于對布爾值進行取反操作,即將true變?yōu)閒alse,將false變?yōu)閠rue。例:!true提示2數(shù)字音頻有多種格式,每種格式都有其特定的優(yōu)缺點和適用場景。清晰了解每種音頻格式的特點和適用場景,以便更好地選擇合適的格式來滿足項目需求。相關(guān)知識:常見音頻格式音頻格式壓縮方式音質(zhì)文件大小主要用途W(wǎng)AV無損高大音頻編輯、存檔、無損音樂存儲等MP3有損中~高小網(wǎng)絡(luò)傳輸、音樂播放器、流媒體服務(wù)等OGG有損中~高小音樂流媒體服務(wù)、游戲開發(fā)等FLAC無損高小高音質(zhì)音樂存儲、音樂制作等AAC有損高小數(shù)字音樂、視頻流媒體服務(wù)等任務(wù):音量監(jiān)控60任務(wù)要求播放音樂,并實時顯示音量數(shù)值。任務(wù):音量監(jiān)控61importprocessing.sound.*;//導入處理音頻的庫SoundFilesound;//聲明一個SoundFile類型的變量,用于存儲音頻文件Amplitudeamp;//聲明一個Amplitude類型的變量,用于分析音頻振幅voidsetup(){size(640,360);//創(chuàng)建一個640x360像素的窗口

background(255);//設(shè)置背景顏色為白色

//加載音頻文件"testmusic.mp3"到sound變量中并播放

sound=newSoundFile(this,"testmusic.mp3");sound.play();//創(chuàng)建一個Amplitude對象amp,并將其連接到加載的音頻文件上

amp=newAmplitude(this);amp.input(sound);}voiddraw(){//在控制臺打印當前音頻的振幅值

println(amp.analyze());}任務(wù):音量監(jiān)控62創(chuàng)建Amplitude對象amp,用于分析音頻的振幅,并將其連接到加載的音頻文件上。在draw()函數(shù)中,調(diào)用amp.analyze()方法,實時獲取當前音頻的振幅值使用println()函數(shù)將其打印到控制臺上說明創(chuàng)意技巧63將數(shù)字從一個范圍重新映射到另一個范圍。工具:映射函數(shù)map()映射是創(chuàng)意編程中的一項重要技巧,將不同類型或來源的數(shù)據(jù)轉(zhuǎn)化為具有視覺、聽覺等效果的輸出。這種技巧能夠創(chuàng)造出有趣的互動體驗,使得編程作品更加生動和具有吸引力。創(chuàng)意技巧鼠標鼠標坐標鼠標移動速度鼠標點擊次數(shù)音頻音頻振幅音頻頻譜音調(diào)音量鍵盤輸入鍵盤按鍵鍵盤組合鍵鍵盤按鍵持續(xù)時間時間當前時間時間間隔計時器環(huán)境溫度濕度光線強度運動傳感器數(shù)據(jù)隨機要素隨機數(shù)生成器任務(wù)二描述任務(wù)二:聲音可視化任務(wù)具體要求實現(xiàn)隨音量變化的動畫任務(wù):播放音頻-準備工作65新建項目新建名為“AmpAnalyze_02”的項目準備素材在速寫本中添加媒體文件或復制媒體文件至程序文件夾下data文件夾內(nèi)引入庫速寫本中引入庫文件或直接輸入代碼:importprocessing.sound.*;任務(wù)二實現(xiàn)步驟1:單擊菜單欄的“文件”→“新建”,新建一個程序;步驟2:單擊“文件”→“保存”,將文件命名為“AmpAnalyze_02”,并保存到全英文路徑下。步驟3:單擊“速寫本”→“添加文件”,打開添加文件窗口,選中準備好的音頻“testmusic.mp3”,單擊右下角的“打開”,將素材就復制到程序所在的目錄下。步驟4:在代碼編寫區(qū)輸入以下代碼;importprocessing.sound.*;SoundFilesound;Amplitudeamp;voidsetup(){size(640,360);background(255);sound=newSoundFile(this,"testmusic.mp3");

sound.play();amp=newAmplitude(this);

amp.input(sound);}voiddraw(){

println(amp.analyze());background(255);floatrectHeight

=map(amp.analyze(),0,1,0,height);fill(255,0,0);//顏色為紅色

rect(0,height-rectHeight,width,rectHeight);}任務(wù)二實現(xiàn)步驟6:單擊按鈕運行程序,可以看到一個隨音樂變化的紅色矩形可視化效果。矩形的高度根據(jù)音頻振幅的大小而變化,使用戶可以通過視覺方式觀察到音頻的振幅變化。【趁熱打鐵】68附件作業(yè):【創(chuàng)意編程實踐】音頻播放sound_effect聲音可視化:在程序基礎(chǔ)上增加額外的數(shù)值映射特效,如顏色、形狀等。任務(wù)三描述任務(wù)三:過渡動畫任務(wù)具體要求使用lerp()函數(shù)實現(xiàn)平滑運動效果任務(wù):播放音頻-準備工作70新建項目新建名為“AmpAnalyze_03”的項目準備素材在速寫本中添加媒體文件或復制媒體文件至程序文件夾下data文件夾內(nèi)引入庫速寫本中引入庫文件或直接輸入代碼:importprocessing.sound.*;任務(wù)三實現(xiàn)importProcessing.sound.*;SoundFilesound;Amplitudeamp;floattargetRectH=0;//定義矩形目標高度floatcurrentRect

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論