Communitygithub.com

raffataff/tunetrack

使用 TuneTrack MCP 工具創作、編曲、混音和渲染遊戲音樂(選單主題、探索/戰鬥/Boss 循環、城鎮和商店主題、提示音、自適應音軌)。當使用者要求為遊戲或任何專案創作音樂、配樂、主題曲、循環、短曲、提示音或氛圍音時,或提及 TuneTrack 時使用。

tunetrack 是什麼?

TuneTrack 是一個專為遊戲音樂創作的 AI 代理技能,讓您能透過 `tunetrack` MCP 工具直接撰寫音符、和弦、模式及 CC 曲線來製作音樂。它支援將創作曲目通過使用者本機的 VST3 插件、SFZ 音色庫或內建的 Faust 合成器播放,並進行混音、母帶處理,最終輸出可直接循環的檔案。此技能強調整體設計與遊戲專案的契合度,從解讀遊戲設計文件、分析樂器庫、規劃樂曲結構到撰寫音樂、混音與交付,提供了一套完整的流程。它同時支援多種遊戲引擎(Godot、Unity、Unreal)的輸出格式與自適應音樂分層,適合需要高效率、精準控制且能融入遊戲開發流程的開發者與作曲家。

相容平台✓Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/raffataff/TuneTrack/tree/HEAD/skill

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

TuneTrack:使用 tunetrack MCP 工具創作遊戲音樂

TuneTrack 是使用者自己的音樂工作站。您以音符、和弦、模式和 CC 曲線來創作音樂;TuneTrack 會透過真實樂器(使用者的 VST3 插件和已儲存的預設、SFZ 音色庫或內建的 Faust 合成器)播放它們,並進行混音、母帶處理,最終渲染出可循環的檔案。您無法聽見,因此需要依據樂理、工具的分析報告和鋼琴卷簾圖像來工作。每一個決定都應經過深思熟慮。不做無意義的填充循環,不做空洞的即興演奏。

如果工具缺失,表示未註冊 MCP 伺服器:claude mcp add --scope user tunetrack -- C:\Users\Owner\Documents\TuneTrack\.venv\Scripts\tunetrack-mcp.exe。

1. 首先了解專案

在寫下任何音符之前,先找出音樂的用途:

  • 閱讀遊戲專案:README、設計文件、故事/場景描述、場景/關卡名稱、美術風格(檢視一些圖片)、UI 主題顏色、現有音訊資料夾和檔案命名、引擎(Godot 的 project.godot、Unity 的 Assets/、Unreal 的 .uproject、網頁專案)。
  • 確定以下項目:類型/音色、情緒(2-3 個形容詞)、能量、速度、調性/調式、提示類型、長度、循環形式、交付格式和路徑。 如果使用者已給出意圖(例如「黑暗合成波選單,100 bpm」),則以此為優先,無需自行推斷。僅當專案未提供任何線索時才提問。
  • 記錄下來:project_new(name, tempo, key, time_sig, brief={genre, mood, use, game, references, notes})。

2. 檢查樂器庫

status() 會列出 VST3 樂器、預設(一個插件加上一個已儲存的聲音,附帶標籤)、SFZ 樂器和內建合成器。

  • 原聲/管弦樂部分需要真實的音色:使用 patch:<id>(例如 HALion、BBC Symphony Orchestra、Spitfire LABS 預設)或 sfz:<path>。內建合成器非常適合電子、合成波、晶片音樂、氛圍和低保真音樂,也可作為支撐層使用。
  • 像 HALion Sonic 和 Groove Agent 這樣的 VST3 樂器會空載:沒有預設時它們會渲染出靜音(渲染時會發出警告)。 MODO DRUM 無需預設即可使用。
  • 如果簡要需求中缺少某種音色(例如需要管弦樂弦樂但沒有弦樂預設或 SFZ),請明確說明並提供:(a) 使用者自行捕捉預設(patch_capture 會開啟插件視窗;僅在使用者於電腦前時才能運作),(b) 安裝免費音色庫(README 列出了一些),或 (c) 風格化的合成器版本。不要用合成器冒充管弦樂。
  • audition("patch:<id>") 檢查樂器是否能發出聲音,並報告其明亮度。sfz_info 顯示音域和按鍵切換。
  • 帶有 dynamics_cc(1 或 11)的預設,其音量由該 CC 控制,而非力度:務必為它們編寫 cc() 曲線。

3. 規劃形式(在音符之前)

使用 markers() 設定段落,並使用 project_set(loop="5:1-21:1") 設定循環區域。典型形式:

提示類型長度形式和備註
主選單45-120 秒循環可選的 2-4 小節前奏(僅播放一次),接著是 A(8) B(8) 或 A A' B A 循環。令人難忘的主題動機,中等密度,為 UI 音效留出空間。
探索 / 大地圖1.5-3 分鐘循環較長的段落,稀疏的織體,有呼吸空間,和聲進行緩慢(每 1-2 小節一個和弦)。
城鎮 / 商店40-90 秒循環溫暖、有節奏感、小型編制、抓耳。
戰鬥60-120 秒循環130-170 bpm,驅動性的固定音型,強烈的貝斯,重音和打擊,短樂句;B 段提升強度。
Boss90-180 秒循環較暗的調式,更重的低頻,一個從主旋律扭曲而來的動機。
勝利 / 失敗提示音2-8 秒,一次性勝利:上行線條至明亮的大調和弦 + 鈸聲。失敗:下行線條至小調或減和弦,淡出。loop="off"。
氛圍背景音1-3 分鐘循環墊底音/持續音,緩慢進行,無強烈脈衝,少量旋律。
製作人員名單2-4 分鐘,一次性遊戲中各個動機的混合曲。

循環規則:循環必須是整數小節;其最後一小節必須能銜接回第一小節(屬和弦,或進入第一個旋律音的引導音)。不要讓音符越過循環結束點,除非您有意為之。釋放和殘響尾巴會由 render(loop="auto") 自動折疊到循環起始處。

自適應音樂:將所有圖層放在同一個調性、速度和長度下,為音軌標記 layer(base、tension、combat),並以 layers=True 渲染出垂直分層的分軌,供遊戲進行交叉淡變。

4. 創作音樂

順序:動機,然後是和聲、貝斯、旋律樂句、對位聲部和內聲部、節奏組、力度變化,最後是變奏。

旋律

  • 基於一個 1-2 小節的動機,並具有可辨識的節奏和輪廓。透過重複、模進(上移二度)、倒影、節奏增值等方式發展它。將樂句結構構建成提問(結束在 2 級或 5 級,保持開放)和回答(結束在 1 級)。
  • 每個段落有一個明確的高潮(最高音、最強拍)。以級進為主,偶爾有跳進;跳進後應反向級進解決。保持旋律可唱性(大約一個八度加五度),除非是器樂炫技段落。
  • 留出空間:休止符和長音能賦予樂句形狀和呼吸空間。不是每個拍點都需要音符。
  • 強拍上多用和弦音;弱拍上可用經過音和鄰音。長音上的不協和音是刻意為之。

和聲

  • chords() 會為您進行聲部連接。選擇能服務情緒的和弦進行。變化和聲節奏:每小節一個和弦,在終止式處加快。
  • 有用的進行:小調 i-VI-III-VII(史詩/英雄感),i-iv-VII-III(懷舊感),大調 I-V-vi-IV(明亮),ii-V-I 和 IVmaj7-iii7-vi7(爵士/舒適感),bVI-bVII-I(勝利感),利底亞 I-II(驚奇/魔法感),弗利幾亞 i-bII(威脅感),多利亞 i-IV(冒險、民謠感),變化和弦(大調中的 bIII、bVI 大三和弦)以獲得電影色彩,持續低音上變換和弦以製造緊張感。
  • 以真正的終止式結束段落(V-i、iv-V、bVI-bVII-I)。副屬和弦(V/V、V7/vi)能增加前進的動力。

貝斯

  • 根音在強拍上,五音和經過音(級進或導音)進入和弦變化。賦予其與大鼓鎖定的節奏。保持在 C3 以下,並在其音域內獨立存在。

編曲

  • 音域:貝斯低於 C3,和聲在 C3-C5 之間,旋律明顯高於伴奏或與之清晰分離。低於 C3 的小於五度的音程聽起來會渾濁(分析會標記此問題)。
  • 每次只有一個焦點元素;對位聲部在旋律的休止處回應(問答形式)。
  • 透過添加和移除圖層來構建段落。B 段應與 A 段形成對比:不同的音域、密度、節奏或和聲色彩。
  • 管弦樂:旋律在小提琴(由長笛高八度或圓號低八度重疊以增加溫暖感),和聲在中提琴/大提琴/圓號,貝斯在低音提琴/大提琴。圓號在中音區以五度和八度音效最佳;小號用於號角般的巔峰;定音鼓在樂句結尾演奏根音和五音。在音軌上使用 role 以便進行音域檢查。theory(range="horn")。
  • 鼓:每 4 小節變化的律動,並在段落變換處(第 8 小節的最後一兩拍)加入填充。新段落的強拍使用撞擊鈸。鬼音(o)和搖擺能增加活力。

力度和感覺

  • 塑造每個樂句:使用 notes_edit(op="velocity", ramp_from, ramp_to) 來做漸強,使用 > 來做重音。
  • CC 控制的管弦樂預設:在長音上使用 cc(track, 1, start, end, 40, 100, shape="swell"),並為每個段落設定基礎音量。
  • 對於原聲樂器部分,使用 notes_edit(op="humanize", timing_ms=5-15, velocity=4-8)。保持晶片音樂和緊湊電子部分的量化。
  • 斷奏(')和連奏(notes_edit(op="legato"))能極大改變個性。有目的地使用它們。

避免複製貼上的單調重複:使用 arrange(op="copy") 複製一個段落,然後對複製的內容進行變化(新的對位聲部、八度移位、重新和聲的終止式、放開的鼓組)。

5. 類型調色盤(內建合成器名稱在括號內;當類型是原聲時,優先使用真實預設)

類型速度調式/和聲調色盤和節奏
管弦樂幻想 / 冒險80-120大調/多利亞/利底亞,i-VI-III-VII弦樂、圓號、木管、豎琴琶音、定音鼓;[pluck]、[bell] 用於色彩
史詩 / 戰鬥130-170小調、弗利幾亞、i-bVI-bVII八分/十六分音符的弦樂固定音型、銅管刺擊、太鼓/筒鼓、合唱墊音;混合使用 [brass_synth]、[reese_bass]
舒適 / 村莊 / 種田85-110大調、add9 和 maj7 和弦尼龍弦/撥奏、電鋼琴、木琴、輕柔沙錘;[nylon_pluck]、[epiano]、[mallet]
合成波 / 復古90-118小調(自然小調/多利亞)[supersaw] 墊音、[analog_bass] 八分音符貝斯、[lead]、門控小鼓、大殘響
晶片音樂(NES 風格)120-180大調或小調、快速琶音代替和弦正好 2 個 [chip_pulse]/[chip_square] 聲部、1 個 [chip_triangle] 貝斯、[chip_noise] 鼓;無殘響或極少量;量化
恐怖 / 緊張50-80 或無脈衝半音音簇、三全音、持續音[dark_pad] 持續音、稀疏的高音 [bell] 音符、低音脈衝、將沉默作為工具
氛圍 / 太空60-90利底亞、sus 和弦、緩慢變化[pad]、[dark_pad]、[bell]、長殘響發送、緩慢音量自動化
低保真 / 放鬆70-90,搖擺ii7-V7-Imaj7、m9 和弦[epiano]、帶 0.3-0.5 搖擺的柔和鼓組、主軌上的 [saturator] 和 [filter]
動作 / EDM120-150小調、四拍地板節奏[drums] 或一組鼓、[reese_bass]/[analog_bass]、[saw_pluck] 琶音、[supersaw] 主旋律、側鏈風格的音量自動化
解謎 / 休閒100-130大調、俏皮的半音經過音[mallet]、[pluck]、撥奏預設、斷奏貝斯

6. 混音和母帶

  • 音量設定:將音軌起始音量設在 -6 到 -12 dB 左右;旋律在最上層,墊音在其下方。渲染報告會顯示每軌的音量。
  • 在總線上添加共享的殘響(track_add("Reverb", kind="bus", fx=["builtin:reverb"]) 或使用 VST3 如 ValhallaSupermassive,Mix 設為 100%),並將每個音軌發送到該總線。音樂快速或忙碌時使用較乾的設定,氛圍音樂時使用較濕的設定。
  • 所有非貝斯或大鼓的聲音都進行高通濾波(builtin:eq hpf 100-200 Hz),如果報告顯示聲音渾濁,則在墊音上衰減 250-500 Hz。
  • 進行聲像調整以獲得寬度(豎琴在左,第二小提琴在右,Hi-hat 稍微偏離中心)。保持貝斯和大鼓在正中。
  • 音量:主軌會被歸一化到 target_lufs(預設 -16)。背景/選單提示通常設在 -18 到 -20;戰鬥音樂設在 -14 到 -16。
  • 使用者的 VST3 效果器(SSL、TDR Nova、Waves、Valhalla)可以透過 fx_add 添加到音軌、總線或主軌上;使用顯示文字來設定參數名稱(例如 {"Mix": "100 %", "LowCut": "200 Hz"})。

7. 始終執行審查循環

  1. 使用 notes_read(track) 檢查您的線條是否為 TTN 格式。analyze() 提供調性/音域/重疊/渾濁度檢查,以及鋼琴卷簾 PNG。閱讀該 PNG 以檢查形式、密度和音域分佈。
  2. 執行 render()。處理每一個警告:靜音音軌(未載入預設)、渾濁、高頻沉悶或刺耳、峰值、限制器工作過度、循環接縫。未更改的音軌會被快取,因此可以自由迭代。
  3. 使用 listen() 來聆聽:這會衡量渲染後的音訊,而不是音符本身,能捕捉到音符無法顯示的內容:
    • energy_arc、sections、bar_lufs:每個段落是否達到了其形式設定的目標?B 段應在音量、明亮度、密度或主導樂器上與 A 段不同(tracks_db、most_present);構建應逐小節提升;循環的最後一小節應順暢流入第一小節。
    • masking:每個音軌在其主要頻段的 vs_rest_db。保持主導音軌在 0 或以上。低於約 -10 的部分幾乎聽不見:需要提升它們,對 covered_by 音軌進行 EQ 衰減,移動音域,或將其刪除。pairs 顯示在一個頻段上衝突的部分(例如 63 Hz 的大鼓 vs 貝斯:讓其中一個佔據低頻,或在打擊點上進行閃避)。
    • verify:對每個部分使用的每個音高進行探針渲染。這能顯示無聲或音量低得多的音高(超出樂器音域)、聽起來移調的部分、短音符上的慢起音、有音符但無聲音的小節(CC 為 0?),以及 drum_notes:每個鼓音符真實的聲音以及同等力度下的音量。請信賴這些結果,而非預設名稱和描述。 修正、重新渲染、再次聆聽,直到每個警告都被解決或確認為有意為之。首次運行會對每個樂器進行探針渲染(每個插件音軌耗時數秒,之後會被快取)。reference="<file>" 可將混音與使用者希望比對的音軌進行比較。
  4. 告知使用者您創作了什麼以及如何構建的(形式、調性、速度、樂器、動機),提供檔案路徑,並提供 play() 或編輯器(ui_open())讓他們聆聽。他們的最終判斷來自自己的耳朵,因此詢問需要更改什麼。

8. 交付

使用 render(out="<game>/<音訊目錄>/<名稱>.<ogg|wav>", loop="auto"),並匹配專案的資料夾結構和命名。

  • Godot:使用 .ogg。在導入設定中設定循環;對於前奏+循環,使用 .loop.json 中的 loop_offset = loop_start_sec。
  • Unity:使用 .ogg 或 .wav。在 AudioSource 上啟用循環標誌;前奏+循環則使用兩個片段或根據 .loop.json 進行計劃播放。
  • Unreal:使用 16-bit 48 kHz 的 .wav(bits=16);WAV 檔案攜帶 smpl 循環塊。
  • 網頁:使用 .ogg 和 .mp3。 對於自適應系統,使用 stems=True / layers=True;使用 midi=True 將編曲交付給 DAW(Cubase)。

TTN 記譜法(用於 write)

D4:q!mf F4 A4:h | (D3 A3 F4):w | r:h C5:e. B4:s A4:q' G4:q> | E4:h~ E4:q r:q

音高 C4 = 中央 C(MIDI 60),F#3、Bb5,或 r 表示休止符。和弦 (C4 E4 G4)。 時值 w h q e s t(全音符到三十二分音符),附點 q.,三連音 e3,拍數 1.5 或 3/2,時值相加 h+e;設定後會保持。 力度 !pp !p !mp !mf !f !ff 或 !0-127,設定後會保持。' 斷奏,> 重音,~ 連線到下一個相同音高的音符。 | 小節線,會根據拍號進行檢查(不符時會返回警告,所以請修正它們)。 @6.5 將游標移動到書寫範圍的第 6.5 拍,用於在同一次呼叫中輸入第二聲部。或者使用 mode="merge"。

模式符記(用於 pattern):和弦音級 1 3 5 7 9,8 10 12 表示高八度,5-/3+ 表示八度移位,b7/#4 表示根音上的變化音級,. 休止,- 保持,1> 重音。範例貝斯:"1 - - 1 . 1 5- ."(流行),"1 . 1 . 1 . 1 ."(八分音符,合成波),"1 - 5- - 8 - 5- -"(行走感)。琶音:"1 5 8 10 12 10 8 5"、"1 3 5 8",速率 0.25 表示十六分音符。

相關技能