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 個字元,因此每首歌曲以相同比例列印;如果某行過長,請減少每系統的小節數。
從來源製作歌曲檔案
請嚴格按照以下步驟操作;這是此技能的核心。
- 只取來源實際顯示的內容。 標籤的截圖或 PDF 可以讀取。歌曲錄音的連結不行:你無法聽到音訊。從歌曲 URL 中只取用列印出來的標題、速度和段落名稱,其餘不要。切勿根據對歌曲的記憶提供任何小節。一個可見的空白,勝過一個看似正確但實際上不存在的音符。
- 僅限貝斯軌道。 如果來源顯示多種樂器,只取貝斯部分,並說明是哪個軌道。如果出現兩個貝斯軌道,或貝斯被加倍:請提問,不要自行選擇。
- 交叉檢查每個重複,並只編碼一次。 讀取每個出現的位置並進行比較。一致是最可靠的驗證方式;不一致意味著至少一個讀取有誤。若出現位置一致:只編碼一次。若不一致:說明情況,分別給出每個方式的計數,並將該讀取標記為估計值。如果某個小節完全沒有重複,就無法進行交叉檢查;請在譜表中說明。
- 切勿斷言你未經檢查的內容。 像「與小節 A-B 相同」這類聲明是從資料生成的,而非手動輸入。段落的範圍是根據邊界計算得出的。
- 結構、和弦、速度。 使用來源自身的標籤來填寫
SECTIONS。為每個小節提供其CHORDS條目:和弦決定了品位於哪根弦上(例如,第 7 品在 E 弦上是 B,在 A 弦上是 E),因此tabgen.py會推導出弦位,並在品格/和弦配對無法在任何弦上達成一致時報錯。將速度放入META;段落的時間戳記會根據它計算得出。 - 報告你未完成的事項。 哪些小節缺失、哪些是估計值、哪個來源提供了什麼內容。每次轉錄工作都應以此結束,而不是以「一切正常」告終。
目測節奏和未經測量的品格是已知的弱點;請在 CAVEATS 中說明。
建議
在轉錄完成後或應要求,提供三種建議,並明確與轉錄內容分開:練習(應優先練習什麼)、音樂性(和聲進行在做什麼)、以及編排(簡化或添加)。編排建議是你的創作;切勿讓它聽起來像是來源所說。
檢查
儲存庫中的 tests/bass-tab/run.sh 會渲染一個測試歌曲並與記錄的基準進行比較,並在虛構的歌曲上檢查圖表(段落標籤、摺疊重複、歌詞對齊、兩頁限制)。