Communitygithub.com

jcl2018/bass-tab

將歌曲來源(標籤截圖、PDF、連結、筆記)轉換成一個緊湊的固定格式貝斯譜,並將其渲染為一至兩頁可演奏的圖表 PDF,包含段落標籤、摺疊重複、和弦與歌詞。當被要求製作、修正、渲染或列印貝斯譜時使用。

bass-tab 是什麼?

此技能「bass-tab」專為 AI 代理(如 Claude Code、Cursor)設計,用於從多種來源(截圖、PDF、連結、筆記)自動生成結構化的貝斯譜檔案。它將原始資料轉換為一個統一的歌曲資料檔案,並產生兩種輸出:一種是緊湊的文字格式貝斯譜(.tab),另一種是可直接列印的演奏圖表 PDF(.pdf)。使用者只需提供一個包含歌曲定義的 Python 檔案(包括元資料、小節、段落、和弦與歌詞),技能便會透過 `chart2pdf.py` 和 `tabgen.py` 等腳本進行渲染。關鍵限制包括僅接受「貝斯軌道」、僅處理「視覺可見」的資訊(避免從記憶或音訊推測),並強制要求重複段落僅編碼一次,以確保一致性。此技能支援 Pillow 庫以處理非拉丁文字元(如中文),並預設生成 US-Letter 大小的 PDF,限制在兩頁內。

相容平台~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/jcl2018/skillset/tree/HEAD/skills/bass-tab

在你喜歡的 AI 中提問

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

說明文件

bass-tab 是做什麼的?

將來源實際顯示的內容轉換成歌曲資料檔案,然後渲染成緊湊的貝斯譜 (.tab) 和一份可直接列印的演奏圖表 PDF(1-2 頁 US-Letter)。僅需 python3;當標題或藝人為非拉丁文字元(例如中文)時,也需要 Pillow。若無 Pillow,chart2pdf.py 和 tab2pdf.py 會拒絕執行而非列印 ?;請在虛擬環境中安裝它(python3 -m venv v && v/bin/pip install pillow),然後使用該 Python 執行腳本,或傳遞 --allow-lossy 參數。 腳本位於此檔案旁的 scripts/ 目錄中;請從此技能資料夾執行它們,或提供完整路徑。

歌曲檔案

一首歌曲,一個目錄,三個檔案:

<slug>/
  <slug>.py     真相來源:結構化資料,可手動編輯(從 templates/song-template.py 開始)
  <slug>.tab    由 scripts/tabgen.py 產生
  <slug>.pdf    演奏圖表,由 scripts/chart2pdf.py 直接從 <slug>.py 產生

<slug>.py 提供 META / BARS / SECTIONS / CHORDS / LYRICS。重複的樂句只編寫一次,並在其演奏的所有位置標記出來,因此修正會影響所有副本。切勿將重複展開為獨立的副本。

LYRICS 將小節編號映射到該小節下演唱的歌詞。歌詞可能來自所有者,或來自來源可見的內容(例如標籤影片中的螢幕歌詞)。切勿憑記憶或網路搜尋編造或填補歌詞;如果沒有來源顯示歌詞,請保留 LYRICS = {} 並告知所有者可以自行添加。無歌詞的歌曲仍能正常渲染。歌詞會原樣列印,並在每次重新生成時保留。

渲染

python3 scripts/chart2pdf.py <slug>/<slug>.py -o <slug>/<slug>.pdf [--paper letter|a4]
python3 scripts/tabgen.py <slug>/<slug>.py <slug>/<slug>.tab --bars <如果 META slots == 16 則為 1,否則為 3> --cut compact

PDF 是一個圖表,仿照線上標籤播放器的風格:每行多個小節,每個段落開始處有粗體段落標籤,重複樂句在反覆記號之間只繪製一次並標記其次數(x4),重複先前段落的段落會縮減為一行(Chorus 2 = Chorus (bars 13-16)),和弦名稱標註在 CHORDS 指定的位置,歌詞則放在所屬小節下方。預設為 US-Letter,最多 2 頁:標籤數字維持在 9 pt 以上,在字體縮小之前會先收緊間距並摺疊重複,若歌曲仍無法容納則會拒絕並顯示錯誤訊息。報告頁數。需要 Pillow 來處理非拉丁歌詞或標題(見上文)。--collapse-sections 會強制顯示參考行。

較長的一頁一覽 PDF 仍可使用:tabgen.py ... --cut compact 然後 tab2pdf.py <slug>.tab -o <slug>-long.pdf。--cut compact 是文字表單。 它是唯一攜帶重複記號(摺疊樂句標記為 A-B xN)的輸出模式。--cut full 是除錯檢視(每個小節,加上一個該格式未列出的節奏尺規行),絕非交付成果。請為所有輸出提供完整路徑。

文字格式:標頭行(標題、藝人、調性、速度、拍號、調音、來源、圖例),然後每個段落有一個 [Name - bars a-b . m:ss] 標題、一個和弦行、一個小節號碼行、一個節奏行 R|,以及四個弦行 G D A E;接著是注意事項,然後是 [Checked] 區塊。譜線固定為 77 個字元,因此每首歌曲以相同比例列印;如果某行過長,請減少每系統的小節數。

從來源製作歌曲檔案

請嚴格按照以下步驟操作;這是此技能的核心。

  1. 只取來源實際顯示的內容。 標籤的截圖或 PDF 可以讀取。歌曲錄音的連結不行:你無法聽到音訊。從歌曲 URL 中只取用列印出來的標題、速度和段落名稱,其餘不要。切勿根據對歌曲的記憶提供任何小節。一個可見的空白,勝過一個看似正確但實際上不存在的音符。
  2. 僅限貝斯軌道。 如果來源顯示多種樂器,只取貝斯部分,並說明是哪個軌道。如果出現兩個貝斯軌道,或貝斯被加倍:請提問,不要自行選擇。
  3. 交叉檢查每個重複,並只編碼一次。 讀取每個出現的位置並進行比較。一致是最可靠的驗證方式;不一致意味著至少一個讀取有誤。若出現位置一致:只編碼一次。若不一致:說明情況,分別給出每個方式的計數,並將該讀取標記為估計值。如果某個小節完全沒有重複,就無法進行交叉檢查;請在譜表中說明。
  4. 切勿斷言你未經檢查的內容。 像「與小節 A-B 相同」這類聲明是從資料生成的,而非手動輸入。段落的範圍是根據邊界計算得出的。
  5. 結構、和弦、速度。 使用來源自身的標籤來填寫 SECTIONS。為每個小節提供其 CHORDS 條目:和弦決定了品位於哪根弦上(例如,第 7 品在 E 弦上是 B,在 A 弦上是 E),因此 tabgen.py 會推導出弦位,並在品格/和弦配對無法在任何弦上達成一致時報錯。將速度放入 META;段落的時間戳記會根據它計算得出。
  6. 報告你未完成的事項。 哪些小節缺失、哪些是估計值、哪個來源提供了什麼內容。每次轉錄工作都應以此結束,而不是以「一切正常」告終。

目測節奏和未經測量的品格是已知的弱點;請在 CAVEATS 中說明。

建議

在轉錄完成後或應要求,提供三種建議,並明確與轉錄內容分開:練習(應優先練習什麼)、音樂性(和聲進行在做什麼)、以及編排(簡化或添加)。編排建議是你的創作;切勿讓它聽起來像是來源所說。

檢查

儲存庫中的 tests/bass-tab/run.sh 會渲染一個測試歌曲並與記錄的基準進行比較,並在虛構的歌曲上檢查圖表(段落標籤、摺疊重複、歌詞對齊、兩頁限制)。

相關技能