---
# System prepended metadata

title: 物理 – 聲音分析

---

物理 – 聲音分析
===

## 前言
- 這個作品是我第一次使用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)
