bass-tab は何をしますか?
ソースに実際に表示されている内容を曲データファイルに変換し、コンパクトなベースタブ(.tab)と印刷可能な演奏用チャートPDF(1〜2 USレターサイズ)をレンダリングします。必要なのは python3 のみです。タイトルやアーティストが非ラテン文字(例:中国語)の場合、Pillowも必要です。Pillowがない場合、chart2pdf.py と tab2pdf.py は ? を出力する代わりに拒否します。venvにインストールし(python3 -m venv v && v/bin/pip install pillow)、そのPythonでスクリプトを実行するか、--allow-lossy を渡してください。
スクリプトはこのファイルの隣の scripts/ にあります。このスキルのフォルダから実行するか、フルパスを指定してください。
曲ファイル
1曲、1ディレクトリ、3ファイル:
<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 を提供します。繰り返されるフレーズは1回だけ記述され、演奏される場所にスタンプされます。そのため、修正がすべてのコピーに反映されます。リピートを独立したコピーに展開しないでください。
LYRICS は小節番号を、その小節の下で歌われる歌詞にマッピングします。歌詞は所有者から提供されるか、ソースに明示的に表示されているもの(例:タブ動画の画面上の歌詞)から取得します。記憶やWeb検索から歌詞を発明したり埋めたりしないでください。ソースに歌詞が表示されていない場合は、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 <1(METAスロットが16の場合) else 3> --cut compact
PDFはチャートであり、オンラインタブプレーヤーのスタイルです。1行に複数の小節、各セクションの開始に太字のセクションラベル、繰り返し記号の間に1回描画されカウント(x4)が付く繰り返しフレーズ、以前のセクションを1行に縮約したセクション(Chorus 2 = Chorus (bars 13-16))、CHORDS がある小節の上にコード名、該当する小節の下に歌詞が配置されます。デフォルトはUSレターサイズで、最大2ページです。タブの数字は9pt以上を維持し、フォントサイズが縮小される前に間隔を詰め、リピートを折りたたみます。それでも収まらない曲は、その曲名を示すメッセージとともに拒否されます。ページ数を報告してください。
非ラテン文字の歌詞やタイトルにはPillowが必要です(上記参照)。--collapse-sections は参照行を強制します。
縦長の1小節幅の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|、4つの弦行 G D A E。次に注意事項、そして [Checked] ブロック。譜表行は77文字に固定されているため、すべての曲が同じスケールで印刷されます。行が長い場合は、システムあたりの小節数を減らしてください。
ソースからの曲ファイルの作成
以下の手順に文字通り従ってください。これがスキルのポイントです。
- ソースに実際に表示されているものだけを取得します。 タブ譜のスクリーンショットやPDFは読み取れます。録音へのリンクは読み取れません:オーディオは聞こえません。曲のURLからは、タイトル、テンポ、セクション名(印刷されている場合)のみを取得し、それ以外は取得しません。曲の記憶から小節を提供しないでください。正しく見えるが実際には存在しない小節よりも、目に見えるギャップの方が優れています。
- ベーストラックのみ。 ソースに複数の楽器が表示されている場合、ベースを取得し、どのトラックかを示してください。ベーストラックが2つある場合、またはベースが重複している場合:選択せずに尋ねてください。
- すべてのリピートをクロスチェックし、1回だけエンコードします。 各出現箇所を読み取り、比較してください。一致は最も強力な検証手段です。不一致は少なくとも1つの読み取りが間違っていることを意味します。出現箇所が一致する場合:1回エンコードします。不一致の場合:その旨を伝え、各方向のカウントを示し、読み取りを推定値とマークします。どこにもリピートがない小節はクロスチェックできません。その旨をシートに記載してください。
- 確認していないことは決して主張しないでください。 「bars A-Bと同じ」などの主張はデータから生成されるものであり、手動で入力するものではありません。セクションの小節範囲は境界から計算されます。
- 構造、コード、テンポ。
SECTIONSにソース自身のラベルを入力します。各小節にCHORDSエントリを設定します:コードはフレットがどの弦にあるかを決定します(フレット7はE弦ではB、A弦ではE)。したがって、tabgen.pyは弦を導出し、フレット/コードのペアがどの弦にも合わない場合はエラーを発生させます。テンポをMETAに設定します。セクションのタイムスタンプはそこから計算されます。 - 行わなかったことを報告します。 どの小節が欠落しているか、どの小節が推定値か、どのソースが何を提供したか。すべての書き起こしをこれで終了し、「問題なし」という報告で終わらせないでください。
目で読んだリズムと測定されていないフレットは既知の弱点です。CAVEATS にその旨を記載してください。
提案
書き起こし後、またはリクエストに応じて、書き起こしから明確に分離して3種類の提案を提供します:練習(最初に練習すべきこと)、音楽的(進行が何をしているか)、アレンジ(簡略化または追加)。アレンジの提案はあなたの発明です。それをソースが言っているかのように読ませないでください。
チェック
リポジトリ内の tests/bass-tab/run.sh はフィクスチャ曲をレンダリングし、記録されたベースラインと比較します。また、架空の曲でチャート(セクションラベル、折りたたまれたリピート、歌詞の配置、2ページ制限)をチェックします。