物理 – 聲音分析 === ## 前言 - 這個作品是我第一次使用3D來進行製作做,在做的起初沒有想好整體架構,以至於這個專案砍掉重構了2~3次。 - 這個專案的難點在於需要擁有3D視角的思維、以及Module的觀念,因為此專案是3D呈現,比較消耗硬體資源,因此在此次專案中關於垃圾清理、記憶體釋放花了一些時間做研究。 - 本次分析音頻的演算法為[快速傅立葉變換(FFT)](https://en.wikipedia.org/wiki/Fast_Fourier_transform),雖然準確率會有所降低,但是在分析時會比傳統還要更快。 ## 使用依賴 | 套件 | 介紹 | | -------- | -------- | | P5.js | 作為主要繪製3D | | Electron | 將專案打包成執行檔 .exe | ## GUI 介面簡介 | GUI | 介紹 | | -------- | -------- | | 首頁 | 一進入遊戲的遊戲大廳 | | 模式選擇 | 可以選擇遊玩的種類與難易程度 | | 設定 | 可依據各自環境調整 | | 遊玩 | 展示遊戲介面 & 失敗畫面 | ## 首頁 ![](https://i.imgur.com/UUI4cui.png) * 以3D旋轉的標題來表示遊玩將使用3D視覺來呈現。 * 選擇模式 – 選擇遊戲類型與難易程度。 * 設定 – 調整遊戲內的細節。 ## 設定 ![](https://i.imgur.com/ZGe9k9f.png) * 最小接收頻率 20~1000 預設600 * 最大接收頻率 2000~8000 預設3000 ## 模式選擇 ![](https://i.imgur.com/ArPHHPJ.png) * 模式 * 一般模式:普通遊玩模式 * 難度 * 簡單 * 普通 * 困難 ## 遊玩畫面 ![](https://i.imgur.com/0XdLyu8.png) * 遊戲介紹 * 左上:偵測到的頻率 * 左下:遊玩分數 * 右下:剩餘時間 * 遊玩方式 * 控制聲音頻率來觸及到紅色音階,碰觸到會重置時間,並增加分數。 * 遊玩方式 * 控制頻率彈起紅色音階,並注意剩餘時間 ## 遊玩影片 [![Watch the video](https://i.imgur.com/QUMfOPY.png)](https://youtu.be/76G-F17Hwaw) ## 檔案安裝 **[檔案(點我下載)](https://drive.google.com/file/d/1kbwBYj_kn9tqkagF-SlLm7a6hUsn33ph/view?usp=sharing)** ![](https://i.imgur.com/cIM8G4y.png) ## 感想 – 學習到的事 1. 拍手偵測到的頻率約在7,000hz~9,000hz(可高達10,000↑hz)。 1. 雲科宿舍電風扇大約落在7000hz左右。 1. 當初在改用 Module 時,變數的 Scope 會比原有的區域和全域變數來的更加複雜,直接影響到架構跟寫法,在寫Module是遇到最多問題的。 1. 第二複雜的就是GUI切換每個GUI在切換時哪些資源要釋放,哪些資源要保留,需要定義清楚。 # 3D 簡協震動 - 影片 [![Watch the video](https://i.imgur.com/CNMTjpo.png)](https://youtu.be/UsFgDD6sWVc)