[English](./README.md) | [Français](./README-fr.md) | [简体中文](./README-zh_cn.md) | 繁體中文

<div align="center">
  <img src="./public/logo.png" alt="K.G.Studio Logo" width="160" />
</div>

# K.G.Studio — 一款基於瀏覽器的 DAW，並內建 AI 助手

<div align="center">
  <h3><a href="https://kgaudiolab.github.io/kgstudio"><b>◀ 立即在瀏覽器中線上使用 K.G.Studio ▶</b></a></h3>
</div>

## 新動態

> ### ✦ [K.G.One Music Studio 現已發佈。](https://github.com/KGAudioLab/K.G.One) ✦ <br />
> [**K.G.One Music Studio**](https://github.com/KGAudioLab/K.G.One) 是一個完全本地、開源的一體化平台，以 **K.G.Studio**（本專案）為核心。它整合了用於整曲生成的 [ACE-Step 1.5](https://github.com/ace-step/ACE-Step-1.5)、用於音訊片段和 MIDI loop 生成的 [Foundation-1](https://huggingface.co/RoyalCities/Foundation-1)，以及用於分軌的 [python-audio-separator (UVR5)](https://github.com/nomadkaraoke/python-audio-separator)，將 GPU 加速的 AI 音樂生成能力直接帶入您的瀏覽器音樂製作工作流。

## 什麼是 K.G.Studio？

K.G.Studio 是一款輕量、現代化的 DAW，完全執行於瀏覽器中，並以 **K.G.Studio 音樂創作助手** 為核心。它提供基於 Tone.js sampler 的真實樂器回放、Piano Roll 編輯器、支援完整復原/重做的音軌與區域管理、基於 OPFS（Origin Private File System）的專案持久化、可設定的設定面板，以及可執行工具的內建 AI 助手。

**K.G.Studio 音樂創作助手** 是一個面向和聲、編曲與音符編輯的 AI 助手，但並不負責整首作品的全自動作曲。

<div align="center">
  <img src="./docs/KGOne-Demo-GIF.gif" alt="K.G.One Logo" width="640" />
</div>

> 注意：整曲生成功能和音訊片段生成功能需要整合 [**K.G.One Music Studio**](https://github.com/KGAudioLab/K.G.One)。

## 最新更新

- **2026.05.30**: 新增 **國際化（i18n）支援** — K.G.Studio 現已提供四種語言版本：**English**、**简体中文**、**繁體中文** 和 **Français**。可在 **設定 ⚙️ → 通用 → 語言** 中設定偏好語言，選擇 `Auto` 時將自動偵測瀏覽器語言。

- **2026.05.27**:
  - 新增 **全域軌系統**，引入四條全域軌：**Marker**、**Tempo**、**Key Signature** 和 **Chord**（和弦符號跨度區段）。
  - 新增 **音訊和弦檢測** 功能。您可以為音訊區域或 MIDI 區域開啟鋼琴卷簾視窗，然後點擊「...」 -> **Detect Chords**，即可透過零依賴 FFT 流水線自動分析錄音內容，並將結果寫入 Chord Track；支援靈敏度、穩定性與七和弦檢測設定。
  - 新增 **帶自動對齊拍點的速度檢測** 功能。您可以為音訊區域開啟鋼琴卷簾視窗，然後在工具列點擊「...」 -> **Detect Tempo**，分析音訊 BPM，並可選擇將專案中的 Tempo Track 區段自動重新對齊。
  - 新增 **Demucs 4S** 作為第二個本地瀏覽器內嵌分軌模型。現有的雙 stem UVR-MDX-NET 模型之外，又加入了四 stem 的 `htdemucs_4s` 模型（約 172 MB，vocals / drums / bass / others），兩者都可透過 ONNX Runtime WebGPU 完全在瀏覽器中執行。

- **2026.05.15**: 新增 **瀏覽器內嵌 AI 模型**。現在有兩個 AI 模型可完全在瀏覽器中執行，無需外部服務、無需 API Key，也無需 K.G.One 伺服器。**K.G.Studio 音樂創作助手** 新增 **Local LLM (Browser)** 提供方，由 **Gemma 4 E4B** 驅動，並透過 LiteRT-LM 與 WebGPU 加速執行；模型只需下載一次，隨後會快取在 OPFS 中，後續啟動幾乎可即時使用，同時支援可設定的上下文長度（32 k / 64 k / 128 k tokens）與即時推理效能統計。**Stem separation** 也支援本地執行，基於瀏覽器內嵌的 **UVR-MDX-NET-Inst_HQ_3** ONNX 模型並使用 WebGPU 加速。您可以開啟 **Music Generator** 面板（✦ 按鈕），下載模型一次後，即可完全在本機將人聲與伴奏分離。以上兩項功能都要求瀏覽器支援 WebGPU（Chrome 113+ 或 Edge 113+）並執行在安全上下文中（HTTPS 或 localhost）。推薦硬體：至少 8 GB 顯存的 GPU，或至少 16 GB 統一記憶體的系統。

- **2026.05.10**: 新增 **五線譜視圖**。鋼琴卷簾現已支援完整的標準樂譜顯示模式。您可以透過鋼琴卷簾工具列中的切換按鈕在 Piano Roll 和 Sheet Music 視圖之間切換。在五線譜模式下，音符會透過 VexFlow 排版，並支援基於目前樂器自動選擇譜號（高音或低音）、顯示調號、自動符槓分組、跨小節連音線，以及可設定的音值量化。啟用 **Track Scope** 後，整條音軌上的所有 MIDI 區域會以連續譜面的形式顯示，而不再侷限於單個區域。

- **2026.05.09**: 新增 **音訊錄音**。您現在可以直接從麥克風錄製到音訊軌。錄音時會即時增長顯示波形預覽，停止後該錄音會作為標準音訊區域寫入時間線。另新增 **音訊 I/O 裝置選擇**，您可以在設定中選擇偏好的麥克風輸入裝置和音訊輸出裝置。

- **2026.05.08**: 新增 **MIDI 自動化**。您可以在鋼琴網格下方的可編輯自動化區域中繪製和編輯 pitch bend 與 MIDI CC 曲線（CC1 Modulation、CC2 Breath、CC7 Volume、CC11 Expression、CC64 Sustain）。同時新增 **軌道級自動化**：每條音軌現在都有專用自動化面板，您可以直接在時間線上查看和編輯同樣的曲線。即時 MIDI 控制器輸入（如 pitch wheel、CC 踏板）也支援錄製與按軌回放，並帶有每條自動化軌的插值處理。另新增 **事件列表面板**，這是一個帶分頁的側邊欄（Notes / Pitch Bend / Controller），可用於查看與內聯編輯目前 MIDI 區域中的全部事件。還新增了 **區域多選**（支援套索與批次移動/縮放）以及 **合併 MIDI 區域**。
<div align="center">
  <img src="./public/snapshots/2026-05-08-automations.png" alt="K.G.Studio Logo" width="640" />
</div>

- **2026.05.02**: 新增 **音訊軌頻譜可視化**。音訊區域現在會在時間網格中顯示即時頻譜疊加層。另新增 **Piano Roll hybrid mode**：當您在 MIDI 區域中開啟鋼琴卷簾時，可將相鄰音訊區域的頻譜作為參考層顯示，從而參照音訊形狀編輯 MIDI 音符。新增 **鋼琴卷簾縮放**，並保留目前視口位置，使畫面始終錨定在目前播放頭附近。還新增 **區域微調位置**，可用小步長推動區域以實現精確擺放；同時新增跨元件的播放頭捲動同步，使主網格與鋼琴卷簾在播放期間保持連動。
- **2026.04.29**: 在 K.G.One Music Generator 面板中新增 **Remix** 和 **Repaint**（由 ACE-Step 1.5 驅動）。**Remix** 可讓您用新風格重製現有音訊區域，您只需選取音訊區域、描述目標風格，並可選填寫新歌詞，ACE-Step 就會按提示重新演繹歌曲的配器與氛圍。**Repaint** 可對歌曲中特定片段進行局部再生成，您可以先在時間線上設定 loop 範圍作為重繪視窗，再描述該片段應有的聲音效果，其餘部分將保持不變。兩項功能都支援與其他 K.G.One 分頁相同的匯入流程：可在內建播放器中預覽、拖曳到音軌上，或點擊 **Import Aligned to Source**，自動將結果放置到原始區域下方的新音軌中。
- **2026.04.24**: 新增 [**K.G.One Music Studio**](https://github.com/KGAudioLab/K.G.One) 整合。當 K.G.Studio 連線到本地 K.G.One 伺服器後，**K.G.One Music Generator** 面板（工具列中的魔杖按鈕 ✦）即可啟用，其中包含三項 AI 驅動工具：**Full Song Generation**（由 ACE-Step 1.5 驅動，可根據文字提示生成整首歌曲）、**Clip Generation**（由 Foundation-1 驅動，可根據文字生成樂器片段與 MIDI loop），以及 **Stem Separation**（由 python-audio-separator 驅動，可將任意音訊拆分為人聲、伴奏等多個 stem）。生成的音訊和 MIDI 均可即時預覽，並可直接拖曳到您的音軌中。K.G.One 完全執行在您自己的機器上（Windows/Linux，需要 CUDA GPU）；詳細設定說明請參閱 [K.G.One 倉庫](https://github.com/KGAudioLab/K.G.One)。
- **2026.04.11**: 將專案儲存從 IndexedDB 遷移到 OPFS（Origin Private File System），並採用基於資料夾的結構，以更好地處理媒體檔案。新增音訊軌支援，包括 WAV/MP3 匯入、回放、循環，以及非破壞性區域裁剪。另新增基於離線渲染的 WAV/MP3 匯出功能。
- **2026.04.05**: 將 AI agent 從基於 XML 的工具呼叫遷移到原生 OpenAI SDK function calling，以提升可靠性與相容性。另新增 GPT-5.4 系列等 LLM 模型選項。
- **2026.01.23**: 實現無縫循環播放。您可以拖動小節編號設定 loop 範圍，或透過工具列中的 Loop 按鈕切換循環模式。循環播放基於 `Tone.js` 的原生 loop 機制，可實現取樣級精確、無縫銜接的循環。
- **2025.12.21**: 實現 MIDI 鍵盤支援。您現在可以連接 MIDI 鍵盤並直接用其演奏聲音。請注意，由於 Safari 和部分其他瀏覽器對 Web MIDI 介面支援不完整，此功能在這些瀏覽器中可能無法達到最佳效果。
- **2025.12.15**: 新增智慧和弦助手，支援功能和聲指導（T/S/D）。將滑鼠懸停在琴鍵上即可查看與上下文相關的和弦建議，並可一鍵建立完整和弦。

## 專案狀態

**K.G.Studio 是一個仍處於早期開發階段的實驗性專案。** 我們正在探索如何將 AI agent 與 LLM 融入音樂製作工作流，本質上是在建構一種面向 DAW 的「Cursor 或 Claude Code」體驗。

該專案關注 AI 與人類協作如何增強音樂創作過程，從智慧和聲建議到自動化編輯任務都在探索範圍內。作為實驗平台，專案會頻繁變化，功能將持續演進，並且在我們推進 AI 輔助音樂製作邊界的過程中，偶爾出現不穩定情況也是可以預期的。

## 演示影片

<div align="center">
  <table>
    <tr>
      <td align="center">
        <a href="https://youtu.be/F1JWjK84zwc" target="_blank">
          <img src="./public/demo/demo-cover.png" alt="K.G.One Music Studio" width="400"/>
        </a>
        <br><b>K.G.One Music Studio</b>
      </td>
      <td align="center">
        <a href="https://youtu.be/FXgihfAH2vc" target="_blank">
          <img src="./public/demo/cover-FXgihfAH2vc.png" alt="Short Demo" width="400"/>
        </a>
        <br><b>短演示（僅 DAW）</b>
      </td>
      <td align="center">
        <a href="https://youtu.be/vKbWAQRt0r0" target="_blank">
          <img src="./public/demo/cover-vKbWAQRt0r0.png" alt="Full Demo" width="400"/>
        </a>
        <br><b>完整演示（僅 DAW）</b>
      </td>
    </tr>
  </table>
</div>

## 快速開始

### 設定 K.G.Studio 音樂創作助手

使用 K.G.Studio 音樂創作助手有兩種方式：一種是 **Local LLM (Browser)**，完全在瀏覽器中執行，無需 API Key、無需費用，且資料不會離開您的裝置；另一種是使用 **外部 LLM 提供方**，以獲得更高品質的回覆。

#### 方案 A：Local LLM (Browser) — 無需 API Key ✦

K.G.Studio 可以藉助 WebGPU 加速，在瀏覽器中直接執行 **Gemma 4 E4B**。不會產生 API 呼叫，不會產生費用，您的資料也不會離開本機。

  - 點擊這裡開始線上使用應用：[K.G.Studio (kgaudiolab.github.io/kgstudio)](https://kgaudiolab.github.io/kgstudio)
  - 在 **設定 ⚙️ → 通用 → LLM 提供方** 中選擇 **本地 LLM（瀏覽器）**（預設選項）。
  - 第一次開啟聊天時，模型（約 2.8 GB）會自動下載，並快取在瀏覽器的 OPFS（Origin Private File System）中，後續啟動幾乎可即時使用。
  - 您也可以選擇設定 **上下文長度**（32k / 64k / 128k tokens）；數值越大，對顯存要求越高。
  - 現在就可以開始聊天。除首次下載模型外，無需 Key、無需帳號，也無需持續連網。

**Local LLM 的要求：** 需要支援 WebGPU 的瀏覽器（Chrome 113+ 或 Edge 113+），並執行在安全上下文中（HTTPS 或 localhost）。推薦硬體為至少 8 GB 顯存的 GPU，或至少 16 GB 統一記憶體的系統。

> **注意：** 本地模型的品質無法與 GPT 或 Claude 系列商業模型相比。對於複雜的音樂編輯任務，外部提供方通常會產生更好的結果。

#### 方案 B：外部 LLM 提供方（更高品質）

  - 點擊這裡開始線上使用應用：[K.G.Studio (kgaudiolab.github.io/kgstudio)](https://kgaudiolab.github.io/kgstudio)
  - [點擊這裡取得免費 OpenRouter API Key](https://openrouter.ai/keys)（您可能需要一個 OpenRouter 帳號）。
  - 在 **設定 ⚙️ → 通用 → LLM 提供方** 中選擇 **OpenAI Compatible**。
  - 在 **OpenAI Compatible Server → 密鑰** 中貼上您的 Key。（注意：在非 localhost 環境中，出於安全原因，您的 Key 預設不會被持久化；您可以在設定中啟用「Persist API Keys on Non-Localhost」以允許持久化，但這可能增加 XSS 風險。）
  - 在 **OpenAI Compatible Server → 模型** 中輸入 `openai/gpt-oss-120b:free`。（注意：這是一個免費模型；非免費模型可能需要付費；免費模型提供方可能會蒐集您的資料，請查看模型頁面中的說明；本專案與 OpenRouter 或任何模型提供方 **沒有關聯關係**。）
  - 在 **OpenAI Compatible Server → 基礎 URL** 中輸入 `https://openrouter.ai/api/v1`。

**提示：**
- 您也可以使用官方 OpenAI API、其他 OpenAI 相容服務，或自行託管的 LLM 伺服器（如 Ollama、vLLM）。請注意，不同模型的品質差異較大，並非所有模型都同樣適合音樂編輯任務。對於本地部署，我們推薦 `qwen3.5-35b-a3b`，它在生成品質與硬體需求之間取得了較好的平衡。
- 如果您已訂閱 OpenAI 或其他 LLM 提供方，可以使用 [CLIProxyAPI](https://github.com/router-for-me/CLIProxyAPI) 執行一個本地代理伺服器，透過現有訂閱轉發請求，而無需另外準備 API Key。

### 基本 DAW 操作
  - 在音軌上雙擊（或按住 Ctrl/Cmd 並點擊）可建立區域。
  - 拖動區域邊緣可調整長度；拖動區域主體可移動。
  - 點擊區域左上角的小鉛筆即可開啟鋼琴卷簾。
  - 在鋼琴卷簾中，雙擊（或 Ctrl/Cmd+點擊）可建立音符。
  - 單擊可選取；Shift+單擊可多選；拖曳可框選。
  - 拖動音符邊緣可調整長度；拖動音符主體可移動已選音符。
  - 使用鋼琴卷簾工具列右上角的 Snapping 功能可將編輯量化到網格。

### 使用 K.G.Studio 音樂創作助手
  - 選取您希望助手處理的音樂區域，在聊天框中輸入提示詞；按 Enter 傳送，按 Shift+Enter 插入換行。
  - agent 會自動處理您的請求，並呼叫工具，在所選區域範圍內執行修改。某些任務可能需要一輪或多輪對話才能完成。
  - 請注意，AI 也可能出錯，因此您應始終檢查結果，並在必要時自行調整。您也可以透過復原/重做回退修改。
  - 點擊「+」按鈕或輸入 `/clear` 指令可清空聊天歷史。

### 更多說明

您可以在[這裡](./docs/USER_GUIDE.md)查看詳細使用者指南。

### 亮點功能
- **K.G.Studio 音樂創作助手**：與由 LLM 驅動的 AI agent 進行對話；它會自動執行工具，對您所選區域內的音樂內容進行編輯。
- **瀏覽器內嵌 LLM，無需 API Key**：透過 WebGPU（LiteRT-LM）在瀏覽器中直接執行 **Gemma 4 E4B**。無 API 呼叫、無費用、資料不離開您的裝置。模型只需下載一次，隨後會快取在本地。
- **瀏覽器內嵌分軌，無需伺服器**：使用 **UVR-MDX-NET-Inst_HQ_3**（2-stem：Vocals / Instrumental）或 **Demucs htdemucs_4s**（4-stem：Vocals / Drums / Bass / Others）將任意音訊區域拆分為 stems。兩者都完全在瀏覽器中透過 ONNX Runtime WebGPU 執行，無需 K.G.One 伺服器。
- **音訊和弦檢測**：為音訊區域開啟 Piano Roll 後執行 **Detect Chords**，即可透過零依賴 FFT 流水線自動分析錄音並填充全域 Chord Track，同時支援靈敏度、穩定性和七和弦檢測等設定。
- **帶自動對齊拍點的速度檢測**：在 Piano Roll 工具列執行 **Detect Tempo**，即可分析音訊區域的 BPM，並可選擇自動重新對齊專案的 Tempo Track。
- **全域軌系統**：四條持久存在的全域軌 **Marker**、**Tempo**、**Key Signature** 和 **Chord** 共同提供專案級結構，所有功能（播放時序、和弦檢測、五線譜顯示）都會參考它們。
- **K.G.One Music Studio 整合**：連接本地 [K.G.One](https://github.com/KGAudioLab/K.G.One) 伺服器後，可解鎖 GPU 加速的 **Full Song Generation**（ACE-Step 1.5）、**Clip & MIDI Loop Generation**（Foundation-1）以及更多 **Stem Separation** 模型。
- **多種 LLM 提供方**：支援 OpenAI、Claude / Gemini（透過 OpenRouter）、OpenAI 相容服務（Ollama、vLLM 等），或內建的本地瀏覽器 LLM，無需 Key。
- **音軌與區域編輯**：支援新增/重排音軌、建立/移動/縮放區域、套索多選、批次移動/縮放、合併與拆分區域，以及完整復原/重做。
- **Piano Roll**：支援音符、pitch bend 和 MIDI CC 自動化軌；支援基於 VexFlow 的五線譜視圖；支援音訊到 MIDI 參考用途的頻譜疊加層。
- **真實樂器**：基於 Tone.js 的 sampler，搭配高品質 FluidR3 soundfonts。您還可以直接從麥克風錄製到音訊軌。
- **智慧和弦助手**：基於功能和聲（T/S/D）提供即時和弦建議，並支援可視預覽與一鍵建立和弦。
- **兼顧持久化與隱私**：專案和設定完全儲存在您的瀏覽器中（OPFS / IndexedDB）。專案本身不依賴第一方伺服器。

如需更深入的技術概覽，請參閱 [overview.md](./docs/technical/overview.md)。

## 開始使用

### 或者在本地複製並執行：
```bash
# 請確認已安裝 Node.js >= 20.19.3
# 複製倉庫
git clone https://github.com/KGAudioLab/KGStudio {your-local-path}
cd {your-local-path}

# 安裝依賴
npm install

# 啟動開發伺服器
npm run dev
```

## 設定

K.G.Studio 會從 `./public/config.json` 載入預設設定（內部也提供回退預設值），並透過 `ConfigManager` + IndexedDB 將使用者修改持久化到瀏覽器中。IndexedDB 是瀏覽器在您裝置上的本地資料庫；資料不會離開您的機器，如果您清除此站點的資料，它也會被清除。請透過應用程式內的設定面板修改設定。

- **通用**
  - LLM 提供方：OpenAI，或 OpenAI 相容服務
  - 目前所選提供方對應的 API Key 與模型
  - 在非 localhost 環境持久化 API Key：啟用後，可在非 localhost 環境中持久化 API Key（屬於安全風險自擔選項，不建議在共享或生產環境中開啟）
  - OpenAI 相容服務的基礎 URL（適用於自託管閘道）
  - Soundfont 基礎 URL（樂器採樣 CDN）
- **行為**
  - 啟動時預設開啟聊天框
- **模板**
  - AI 助手使用的自訂指令

### 連線性與隱私

- K.G.Studio 完全在客戶端執行。執行應用不需要任何第一方伺服器。
- 專案和音訊檔案儲存在瀏覽器的 OPFS（Origin Private File System）中；設定儲存在 IndexedDB 中。所有資料都留在您的裝置上。
- 網路存取僅用於：
  - 從設定的 soundfont CDN 下載樂器採樣
  - 與您選擇的 LLM 提供方通訊（例如 OpenAI 或 OpenAI 相容服務）
- 除上述兩種情況外，應用均可在本地工作。即使您阻止這些端點，應用仍可載入；但在網路恢復之前，樂器回放和 AI 功能將無法使用。
- 出於安全考量，當應用執行在非本地主機環境中時，我們預設不會將您的 API Key 持久化到 IndexedDB（以降低 XSS 風險）。這表示您每次啟動 K.G.Studio 時都需要重新輸入。如需在非本地主機環境中啟用持久化，請在設定中開啟「Persist API Keys on Non-Localhost」（不建議在共享或生產環境中啟用）。

## 使用應用

您可以在[這裡](./docs/USER_GUIDE.md)查看詳細使用者指南。

- 音軌
  - 在軌道資訊面板中新增、重新命名和重排音軌。
  - 透過樂器按鈕（鋼琴圖示）切換樂器；可調整 Solo（S）、Mute（M）和 Volume。
  - 透過音軌設定選單刪除音軌（位於樂器按鈕右側）。

- 區域
  - 建立區域：使用 Pointer 工具時可雙擊，或按住 Ctrl/Cmd 再點擊；使用 Pencil 工具時單擊即可。
  - 移動/縮放：拖動區域主體可移動，拖動邊緣可調整長度。
  - 透過區域左上角的小鉛筆開啟 Piano Roll。

- 鋼琴卷簾（MIDI 音符）
  - 工具：Select 與 Pencil。
  - 建立音符：在 Select 模式下雙擊或 Ctrl/Cmd+點擊；在 Pencil 模式下單擊。
  - 選取音符：單擊；Shift+單擊多選；拖曳框選。
  - 移動/縮放：拖動音符主體可移動已選音符；拖動邊緣可調整長度。
  - **五線譜視圖**：可在鋼琴卷簾工具列中切換 Piano Roll 與 Staff Notation 視圖。支援自動譜號選擇、調號顯示、符槓分組、連音線和可設定量化。啟用 **Track Scope** 後會將整條音軌上的所有區域連續渲染為譜面。
  - **自動化軌道**：可在鋼琴網格下方的可編輯區域中繪製和編輯 pitch bend 與 MIDI CC 曲線（Modulation、Breath、Volume、Expression、Sustain）。
  - **頻譜模式**：可在鋼琴卷簾中查看音訊區域的頻譜，並將其作為編輯 MIDI 音符時的參考層。
  - 可透過 X 或 ESC 關閉鋼琴卷簾視窗。

- 智慧和弦助手（新增於 2025-12-15）
  - 在鋼琴卷簾工具列中啟用和弦指導：選擇 T（Tonic）、S（Subdominant）或 D（Dominant）功能。
  - 將滑鼠懸停在任意琴鍵上時，會以紅色高亮顯示與上下文相關的和弦建議，並匹配您目前選擇的調號與調式。
  - 按 Tab 可在同一和聲功能下循環切換不同和弦轉位。
  - 雙擊（或 Ctrl/Cmd+點擊）高亮和弦可一次性建立整組音符。
  - 和弦長度會自動匹配您最近編輯的音符長度，以保持節奏一致。

- 吸附與量化
  - 在右上角的 NO SNAP 選單中設定吸附。
  - 使用 Qua. Pos.（起始）和 Qua. Len.（長度）進行量化。

- 播放與播放頭
  - 可透過工具列回到開頭，並執行 Play/Pause。
  - 在主時間網格點擊小節編號可設定播放頭；在鋼琴卷簾中點擊頂部時間軸也可設定，並遵守目前吸附設定。
  - BPM、拍號和調號都可以透過工具列中的數值進行修改。

## 鍵盤快捷鍵

- 主介面
  - 播放/暫停：Space
  - 復原 / 重做：Ctrl/Cmd+Z / Ctrl/Cmd+Shift+Z
  - 複製 / 剪下 / 貼上：Ctrl/Cmd+C / Ctrl/Cmd+X / Ctrl/Cmd+V
  - 儲存：Ctrl/Cmd+S
  - 按住以建立區域：Ctrl/Cmd
- 鋼琴卷簾
  - 工具：Select（Q）、Pencil（W）
  - 按住以建立音符：Ctrl/Cmd
  - 吸附：1(None), 2(1/4), 3(1/8), 4(1/16)
  - 位置量化：5(1/4), 6(1/8), 7(1/16)
  - 長度量化：8(1/4), 9(1/8), 0(1/16)

## AI 助手

### 使用 K.G.Studio 音樂創作助手

- 請先按照前文說明完成 LLM 提供方設定。
- 您可以在右側找到 K.G.Studio 音樂創作助手聊天框。如果目前未顯示，可點擊工具列中的 Chat 🗨️ 按鈕開啟。
- 選取您希望助手處理的區域，在聊天框中輸入提示詞；按 Enter 傳送，按 Shift+Enter 插入換行。
- agent 會自動處理您的請求，並呼叫工具，在所選區域範圍內執行修改。某些任務可能需要一輪或多輪對話才能完成。
- 請注意，AI 也可能出錯，因此您應始終檢查結果，並在必要時自行調整。您也可以透過復原/重做回退修改。
- 點擊「+」按鈕或輸入 `/clear` 指令可清空聊天歷史。

### 設定您的 LLM 提供方

進入 **設定 ⚙️ → 通用 → LLM 提供方**。根據您選擇的提供方，您需要填寫對應的 API Key，並在需要時填寫自訂基礎 URL（適用於 Ollama、OpenRouter 等非官方 OpenAI 相容服務）。

注意：由於部分提供方存在 CORS 限制，Google Gemini 和 Anthropic Claude 目前僅支援透過 OpenRouter 使用。

### 使用 OpenAI 模型

1. 在 [**OpenAI**](https://platform.openai.com/account/api-keys) 取得 OpenAI API Key。您可能需要先註冊帳號並新增付款方式，才能生成 API Key。
2. 在 **設定 ⚙️ → 通用 → LLM 提供方** 中選擇 **OpenAI** 作為提供方。
3. 在 **OpenAI → 密鑰** 中輸入您的 API Key。
4. 在 **OpenAI → 模型** 下拉中選擇您偏好的模型。若希望在效能與成本之間取得較好平衡，我們推薦 `gpt-5.4-mini`。
5. 您也可以選擇是否在 **OpenAI → Flex 模式** 中啟用 Flex Mode。Flex Mode 可以降低價格，但也可能帶來更慢的回應時間或更多伺服器端錯誤。

### 使用 OpenRouter

OpenRouter 是一個統一接入平台，可讓您存取來自多個提供方的大量語言模型，其中也包含免費選項，便於比較並找到最適合您需求的模型。

1. 在 [**OpenRouter**](https://openrouter.ai/keys) 取得 API Key。需要註冊；若使用付費模型，可能還需要綁定付款方式。
2. 在 **設定 ⚙️ → 通用 → LLM 提供方** 中選擇 **OpenAI Compatible** 作為提供方。
3. 在 **OpenAI Compatible Server → 密鑰** 中輸入您的 API Key。
4. 在 [**OpenRouter Models Page**](https://openrouter.ai/models) 瀏覽可用模型。您可以使用「Prompt Pricing」篩選免費模型。  
   **注意：** 不同模型提供方的資料保留與隱私政策可能不同，請在使用前自行查看。
5. 在 **OpenAI Compatible Server → 模型** 中輸入您所選的模型名。推薦系列包括：
    - `Anthropic: Claude Sonnet 4.6` (`anthropic/claude-sonnet-4.6`: [Link](https://openrouter.ai/anthropic/claude-sonnet-4.6)) — Claude 系列中品質與成本平衡較好的選擇
    - `Qwen: Qwen3.5-35B-A3B` (`qwen/qwen3.5-35b-a3b`: [Link](https://openrouter.ai/qwen/qwen3.5-35b-a3b)) — 推薦的開源模型
    - `Qwen: Qwen3-Next-80B-A3B`（免費模型：`qwen/qwen3-next-80b-a3b-instruct:free`: [Link](https://openrouter.ai/qwen/qwen3-next-80b-a3b-instruct:free)）— 推薦的免費模型
    - `OpenAI: GPT-OSS 120B`（免費模型：`openai/gpt-oss-120b:free`: [Link](https://openrouter.ai/openai/gpt-oss-120b:free)）— 推薦的免費模型
    - 注意：免費模型提供方可能會蒐集您的資料，使用前請先查看模型頁面說明
    - 注意：免費模型的可用性變化頻繁。如需查看最新免費選項，請造訪 [OpenRouter Models Page](https://openrouter.ai/models)，並使用 **Prompt Pricing** 過濾目前免費模型
6. 在 **OpenAI Compatible Server → 基礎 URL** 中填入 `https://openrouter.ai/api/v1`。

### 關於 agent 與 LLM 提供方

出於安全考量，當您從非本地主機環境使用 K.G.Studio 時，API Key 預設不會持久化到 IndexedDB 中；這表示您每次啟動 K.G.Studio 時都需要重新輸入。如需在非本地主機環境中啟用持久化，請在設定中開啟「Persist API Keys on Non-Localhost」（不建議在共享或生產環境中啟用）。

K.G.Studio 不提供也不託管上述任何模型，也不隸屬於任何模型提供方。所有資料都儲存在您的本地裝置中；K.G.Studio 不會蒐集或傳輸您的資料。若您向第三方模型提供方傳送任何資料，相關責任由您自行承擔。

## K.G.One Music Generator

> **需要 [K.G.One Music Studio](https://github.com/KGAudioLab/K.G.One) 整合。** 只有當 K.G.Studio 連線到正在執行的 K.G.One 伺服器時，K.G.One Music Generator 面板才會可用。設定說明請參閱 [K.G.One 儲存庫](https://github.com/KGAudioLab/K.G.One)。

**K.G.One Music Generator** 面板提供三項經 GPU 加速的 AI 工具，用於音樂生成與音訊處理。點擊工具列中的 **✦（魔杖）** 按鈕即可開啟。該面板與 AI Assistant 聊天框互斥，開啟其中一個時，另一個會自動關閉。

> **注意：** 您首次使用每個工具時，伺服器都需要載入對應 AI 模型，這可能需要 60 秒甚至更久，具體取決於您的硬體。切換分頁時，也可能觸發模型重新載入。

### Full Song Generation

根據文字描述和可選歌詞生成一首完整歌曲。由 [ACE-Step 1.5](https://github.com/ace-step/ACE-Step-1.5) 驅動。

- 在 **Full Song** 分頁中，於 **Caption** 中輸入自然語言描述，說明所需風格、情緒、速度、配器和結構。例如：`Genre: Eurodance, 90s dance-pop, upbeat electronic. Tempo: ~130 BPM. Instrumentation: driving kick drum, eurodance bassline...`
- 您也可以填寫 **Lyrics**。可使用 `[Intro]`、`[Verse]`、`[Chorus]`、`[Bridge]` 等標籤標記段落。若勾選 **Instrumental**，則會完全跳過人聲。
- 點擊 **Generate Song**。介面會即時顯示生成階段與百分比進度。
- 生成完成後，會顯示預覽播放器。您可以將其拖曳到 **audio track**，作為區域匯入。
- 目前不支援將整曲生成結果拖放到 MIDI track。
- **Advanced Settings**（可展開）：Inference Steps、Guidance Scale、Seed，以及 Thinking（CoT metadata generation）。

### Clip Generation

根據文字描述生成短樂器片段和 MIDI loops。由 [Foundation-1](https://huggingface.co/RoyalCities/Foundation-1) 驅動。

- 在 **Clip** 分頁中，於 **Prompt** 中輸入逗號分隔的標籤，描述樂器類別、子類型、音色、效果、長度、BPM 和調性。例如：`Gritty, Acid, Bassline, 303, Synth Lead, FM, Sub, High Reverb, 8 Bars, 140 BPM, E minor`
- 您也可以填寫 **Negative Prompt**，以避免生成某些不希望出現的特徵（例如 `distortion, noise`）。
- 選擇 **Bars**：4 或 8。BPM 與調號會根據專案設定預填，您也可以在 **Advanced Settings** 中調整。
- 點擊 **Generate Clip**。生成完成後，會出現一個預覽播放器，左側帶拖曳手把，右側帶下載按鈕。
- **匯入方式**：將播放器拖曳到時間線中的音軌上。
  - 拖放到 **audio track** 時，會作為 WAV 音訊區域匯入（推薦）。
  - 拖放到 **MIDI track** 時，會作為 MIDI 區域匯入。請注意，此 MIDI 是從音訊轉錄而來，可能並非完全準確。
- **Advanced Settings**（可展開）：Note、Scale、BPM、Steps、CFG Scale、Seed（`-1` 表示隨機）、Sampler Type、Sigma Min/Max，以及 CFG Rescale。

### Stem Separation

將現有音訊區域拆分為獨立 stems（例如人聲、伴奏、鼓組等）。

K.G.Studio 支援 **兩種模式** 的分軌：

#### 本地瀏覽器模式 — 無需伺服器 ✦

兩個 ONNX 模型可完全在瀏覽器中執行，無 API 呼叫、無費用，資料也不會離開您的裝置。模型只需下載一次，隨後會快取在本地。

- **Vocal and Instrument (Medium Accuracy)**（`UVR-MDX-NET-Inst_HQ_3`，約 64 MB）— 雙 stem 分離（Vocals / Instrumental）。由 [UVR-MDX-NET](https://github.com/nomadkaraoke/python-audio-separator) 驅動。
- **Vocal, Drums, Bass, and Others**（`htdemucs_4s`，約 172 MB）— 四 stem 分離（Vocals / Drums / Bass / Others）。由 [Demucs](https://github.com/facebookresearch/demucs) 驅動。

開啟 **Music Generator** 面板（工具列中的 ✦ 按鈕），選擇模型，先點擊一次 **Download Selected Model**，然後點擊 **Separate Stems**，所有處理都會在您的瀏覽器中本機完成。

**要求：** 需要支援 WebGPU 的瀏覽器（Chrome 113+ 或 Edge 113+），並執行在安全上下文中（HTTPS 或 localhost）。若可用，會優先使用 WebGPU 加速；否則會回退到 CPU（處理期間可能降低頁面回應性）。推薦硬體為至少 8 GB 顯存的 GPU，或至少 16 GB 統一記憶體的系統。

#### K.G.One 伺服器模式

當連線到 [K.G.One Music Studio](https://github.com/KGAudioLab/K.G.One) 伺服器後，可使用另外三種 GPU 加速模型。由 [python-audio-separator (UVR5)](https://github.com/nomadkaraoke/python-audio-separator) 驅動。

- **Vocal and Instrument (Medium Accuracy)**（`UVR-MDX-NET-Inst_HQ_3`）— 快速雙 stem 分離（vocal / instrumental）。
- **Vocal and Instrument (High Accuracy)**（`MDX23C-8KFFT-InstVoc_HQ`）— 更高品質的雙 stem 分離，但更慢。
- **Vocal, Drums, Bass, Guitar, Piano, and Others**（`htdemucs_6s`）— 完整六 stem 分離。

#### 使用方式（兩種模式通用）

- 在開啟此分頁之前，請先在時間線上**選取一個音訊區域**。**Separator** 分頁頂部會顯示目前所選區域及其音軌名稱。僅支援音訊區域，不支援分離 MIDI 區域。
- 點擊 **Separate Stems**。如果目前所選區域帶有 clip start offset 或已被裁剪，系統會先自動按該區域範圍切出對應音訊，再進行處理。
- 處理完成後，每個 stem 都會以帶標籤的預覽播放器顯示，並附帶拖曳手把。您可以在匯入前分別試聽每個 stem。
- **匯入 stems：**
  - 可將每個 stem 播放器分別拖曳到 **audio track** 上，放到您希望的位置。
  - 或點擊 **Import All Stems to Timeline**，系統會自動為每個 stem 新建一條音訊軌，並將其放置在源音軌下方，與原始區域的起始拍點對齊。該操作可透過一次復原完整回退。

## 即將推出的功能

功能優先級可能會變化。

### 1.0

- [X] 更多樂器
- [X] 自動化測試（單元測試、整合測試等）
- [X] 帶功能和聲指導（T/S/D）的智慧和弦助手
- [X] 支援軌道控制自動化（例如 sustain、volume、pan 等）
- [X] 支援 MIDI 控制事件（例如 CC、pitch bend 等）
- [X] 支援 WAV 音訊軌
- [X] 錄音
- [X] 事件列表
- [X] 支援 OpenAI 的開源模型（`gpt-oss-20b` 和 `gpt-oss-120b`）
- [X] 五線譜
- [X] K.G.One Music Studio 整合
- [X] 瀏覽器內嵌 AI 模型（基於 Gemma 4 E4B 的本機 LLM；基於 UVR-MDX-NET-Inst_HQ_3 與 htdemucs_4s 的本機分軌）
- [X] 全域軌系統（Marker、Tempo、Key Signature、Chord）
- [X] 音訊和弦檢測（零依賴 FFT，並將結果寫入 Chord Track）
- [X] 帶自動對齊拍點的速度檢測
- [X] 頻譜可視化與 Piano Roll hybrid mode

### 1.0 之後

- [ ] 擴展 AI agent 工具，直接透過聊天操作區域、音軌與全域軌（和弦進行、速度、調性）
- [ ] Mixer 視圖，提供專用面板顯示每軌推桿、send、return bus 與 master channel
- [ ] EQ 與通道條，為每條音軌提供參數均衡器與壓縮器
- [ ] 濾波器與效果器，如混響、延遲及其他基於 WebAudio 的原生插入效果
- [ ] 音訊 time-stretch / warp，使音訊區域自動匹配專案速度
- [ ] MIDI 效果器，如琶音器、音階量化器、和弦記憶
- [ ] 虛擬 MIDI 裝置輸出

## 需要幫助

我們正在尋找貢獻者，一起讓 K.G.Studio 變得更好。無論您是開發者、音樂人還是設計師，您的專長都能帶來實際價值。

### 您可以如何參與

**🎵 音樂人 / 音樂製作人**
- 使用真實音樂製作流程測試這款 DAW
- 回饋樂器音色品質與真實感
- 提出音樂創作中不可或缺但目前缺失的功能
- 幫助提升 AI 助手的音樂理解能力

**💻 開發者**
- 根據路線圖實作新功能
- 修復 bug 並最佳化效能
- 增強 Web Audio 整合
- 改進 AI 助手能力

**🎨 UI/UX 設計師**
- 最佳化介面和工作流
- 設計更適合音樂編輯的視覺回饋
- 打造更直觀的互動方式

### 參與方式

如果您有興趣貢獻，我們很願意聽到您的想法。

- **給我們發郵件**：[kgstudio@duck.com](mailto:kgstudio@duck.com)
- **查看 Issues**：瀏覽帶有 `help wanted` 或 `good first issue` 標籤的公開問題
- **參與討論**：在 GitHub Discussions 中分享想法與回饋

每一份貢獻都很重要。無論是回報 bug，還是提出新功能建議，都會推動專案繼續前進。

### 免責聲明

K.G.Studio 是一個處於早期開發階段的實驗性專案。我們正在探索如何將 AI agent 與 LLM 融入音樂製作工作流，本質上是在建構一種面向 DAW 的「Cursor 或 Claude Code」體驗。

該專案關注 AI 與人類協作如何增強音樂創作過程，從智慧和聲建議到自動化編輯任務都在探索範圍內。作為實驗平台，專案會頻繁變化，功能將持續演進，並且在我們推進 AI 輔助音樂製作邊界的過程中，偶爾出現不穩定情況也是可以預期的。

K.G.Studio 不提供也不託管任何 LLM 模型，也不隸屬於任何模型提供方。所有資料都儲存在您的本地裝置中；K.G.Studio 不會蒐集或傳輸您的資料。若您向第三方模型提供方傳送任何資料，相關責任由您自行承擔。

## 授權條款

本專案基於 Apache License, Version 2.0 授權，並附帶額外條款（參見 `LICENSE`）：
- 不得使用本軟體或相關素材申請專利
- 當用於公開或商業產品時需要署名（「Powered by K.G.Studio」）

第三方聲明（FluidR3_GM SoundFont、midi-js-soundfonts、VexFlow、prompt structure notes、Gemma 4 E4B、UVR-MDX-NET-Inst_HQ_3、MediaPipe、Meyda、web-audio-beat-detector、tonal、htdemucs_4s、onnxruntime-web 和 demucs-web）已包含在 `LICENSE` 中。
