建立一個完整的瀏覽器版展示應用程式,呈現細節豐富的五指機器人手彈奏迷你鋼琴。可見的手指動作、琴鍵實際行程、產生的音符與音樂節拍必須彼此因果連動。在評測器的時間預算內,交付視覺精緻且具互動性的應用程式。 1. 體驗:使用全螢幕 3D 場景,呈現精確建模的機器人手、可關節運動的手指、可見的手腕機構,以及涵蓋 MIDI 音符 60 至 84 的 25 鍵鍵盤。呈現逼真的黑鍵與白鍵幾何結構、可獨立運動的琴鍵、指尖墊與精緻材質。提供俯視、演奏者側面及指尖特寫攝影機。使用者啟用播放後,提供同步音訊。 2. 共用音樂輸入:以 MIDI 音符編號作為唯一依據。在 96 BPM 下,播放以下事件,格式為(開始拍數、音符、持續拍數):(0,60,0.4)、(0.5,64,0.4)、(1,67,0.4)、(1.5,64,0.4)、(2,62,0.4)、(2.5,65,0.4)、(3,69,0.4)、(3.5,65,0.4)、(4,60,0.4)、(4.5,60,0.4)、(5,60,1)、(5,64,1)、(5,67,1)。最後三個事件組成同時演奏的和弦。另須使用成熟的解析器支援標準 MIDI 檔案匯入。 3. 手部控制:建立可獨立關節運動的手指與可移動的手腕。規劃可觸及的手指分配、接近動作、按鍵、按住、放開、重複音符的發音,以及和弦演奏。手指必須接觸正確的琴鍵,不得穿過相鄰琴鍵,也不得出現不合理的跳躍。使用反向運動學與關節限制。顯示規劃好的手指分配,並允許逐一檢查個別動作。 4. 聲音因果關係:只有當對應琴鍵因手指接觸而越過已記錄的下壓閾值時,才產生 note-on 事件。放開時產生 note-off,並使用遲滯避免訊號抖動。MIDI 事件是規劃目標,不得作為獨立的音訊播放軌。只要明確標示,採用幾何接觸驅動的琴鍵機構即可;也可使用完整的接觸動力學。琴鍵不得僅因排程了 MIDI 事件就自行移動。 5. 節奏:使用一致的音樂時鐘,並將實際琴鍵觸發事件加上時間戳,與目標事件比對。納入音訊排程與渲染時序。提供速度、移調、播放、暫停、重新開始、循環及慢動作檢視功能。暫停或重新開始時,必須適當釋放目前作用中的音符。降低播放速度時,必須維持手指、琴鍵與音訊之間的同步。 6. 診斷:在對齊的時間軸上顯示目標音符、規劃手指、實際觸發音符及起音時間誤差。回報漏音、多音、錯誤音高、重複音符失敗及卡住的音符。提供接觸檢視覆蓋層,顯示每個琴鍵由哪個指尖按下。記錄足以區分成功規劃與近似手部動畫的證據。 7. 驗證:分別評估旋律、重複音符與最後和弦。目標是零錯誤或漏失音符、第 95 百分位起音誤差低於 50 ms,以及最後和弦的起音分散度低於 50 ms。即使未達成目標,也要回報實際測量結果。提供一項停用手指驅動的測試:分數可以繼續推進,但未被按下的琴鍵不得產生音符。 8. 交付:使用 Three.js、TypeScript、適當的音訊 API,以及成熟的解析或數值運算函式庫。交付可執行的應用程式、原始碼、可重現的音樂測試素材、素材或生成腳本,以及啟動說明。驗證瀏覽器音訊、控制項、攝影機視角、桌面與行動版配置,以及重複播放功能。所有顯示的效能聲明都必須來自實際測量結果。