前回の記事では、cueファイル作成スクリプトの 「全体構造」「準備すべき情報」 を整理してみました。今回はその続きとして、実際にスクリプトがどのように動き、 どの関数がどの役割を担っているのかを、もう少し丁寧に見ていきましょう。

といっても私がスクリプトの解説など出来るわけもなく、例によって生成 AI = Copilot による自動文書作成でお送りします。

 

1. はじめに

 

Python に慣れていない方でも追えるよう、 “部品をどう組み合わせているか”という視点で説明していく。

 

2. 実行部の流れ(3 行で完結する本体)

 

前回も触れたが、このスクリプトの本体は驚くほど短い。

 

コード
metadata = input_metadata()
tracks = input_tracks(metadata)
cue_text = generate_cue_text(metadata, tracks)

 

この 3 行がすべての中心であり、「入力 → INDEX 自動計算 → cue テキスト生成」という一連の流れを実行している。

ここからは、この 3 行を支える“部品”を順に見ていく。

 

3. 入力処理:input_metadata() と input_tracks()
 

input_metadata():ここでは、ユーザーが手入力する情報をまとめて受け取る。

アーティスト名/アルバム名/ジャンル/最初の曲のオフセット(秒)/総トラック数
これらは TypedDict(Metadata) に格納され、後続の処理で一貫して扱えるようになる。

input_tracks(metadata):各曲の「曲名」と「所要時間(MM:SS)」を入力する部分。
 

ここで重要なのは、
・曲時間は MM:SS で入力
・内部では 75 フレーム/秒 に変換
・INDEX の計算はすべてフレーム単位で行う


この関数が、後で cue テキストを生成するための“材料リスト”を作っている。

4. INDEX 自動計算の仕組み(時間変換関数):INDEX の計算は、以下の関数群が担っている

seconds_to_frames()
mmss_to_frames()
frames_to_mmss()
frames_to_cuetime()


特に重要なのは mmss_to_frames() と frames_to_cuetime() で、以下それぞれの処理を簡単に記す。

mmss_to_frames():MM:SS → 総フレーム数に変換

 

CD-DA の仕様(75fps)に合わせて計算するため、
cue の INDEX が正確に求まる。

● frames_to_cuetime():フレーム数 → cue の “MM:SS:FF” 形式に変換する。
 

cue ファイルはこの形式で INDEX を書く必要があるため、
この関数が最終的な整形を担当する。

5. cue テキスト生成:generate_cue_text():この関数がスクリプトの“心臓部”

FILE 行
TRACK 行
TITLE / PERFORMER
INDEX 00 / INDEX 0
1

これらをすべて組み立て、最終的な cue ファイルのテキストを完成させる。
内部では、「前の曲の終了位置 → 次の曲の開始位置」という形で INDEX を積み上げていく。

6. 保存処理(Shift-JIS の理由):生成した cue テキストを Shift-JIS で保存する。

理由は前回の記事でも触れた通りで、

古い Windows プレイヤーが UTF-8 cue を読めない場合がある
日本語曲名との相性が良い

ここは実務的な配慮であり、
“使える cue を作る”という目的に沿った選択。

7. まとめ
 

今回は、前回紹介したスクリプトの「実行部」 と 「各関数の役割」 を整理した。

- 入力処理で材料を揃える
- 時間変換関数で INDEX を正確に計算
- generate_cue_text() で cue を組み立てる
- 最後に Shift-JIS で保存する

 
 
いかがでしょうか?ご興味ある方は是非こちらの記事にあるスクリプトと照らし合わせながら見て下さい。

イメージ 1 ← にほんブログ村「科学」-「技術・工学」へ
 ↑ クリックをお願いします