この前買った CD をいい加減取り込まなくてはと思いつつ、あきばおーでポータブル DVD ドライブを買ってきた。最近だと ¥2,500 もあれば買えてしまうのね。1台買っておけばよかった。(でも読み込み 24x って遅い…)
Transcend 極薄型ポータブルDVDドライブ USB2.0 ホワイト 2年保証 TS8XDVDS-W
- 出版社/メーカー: トランセンド・ジャパン
- 発売日: 2015/01/01
- メディア: Personal Computers
- この商品を含むブログを見る
取込みはいつも cdparanoia を使って、NeroAacEnc でエンコードしているのだけど、今日は RAW でも取り込んで遊んでみた。ちなみに Audio CD は dd コマンドでは取込みが出来ない。
Audio CD を RAW データで取り込む
まずは cdrdao の使い方を見てみよう。
cdrdao
cdrdao は cdrdao
だけでは動作せず、cdrdao <command>
形式で実行する必要がある。
Cdrdao version 1.2.3 - (C) Andreas Mueller <andreas@daneb.de> Usage: cdrdao <command> [options] [toc-file] command: show-toc - prints out toc and exits toc-info - prints out short toc-file summary toc-size - prints total number of blocks for toc read-toc - create toc file from audio CD read-cd - create toc and rip audio data from CD read-cddb - contact CDDB server and add data as CD-TEXT to toc-file show-data - prints out audio data and exits read-test - reads all audio files and exits disk-info - shows information about inserted medium discid - prints out CDDB information msinfo - shows multi session info, output is suited for scripts drive-info - shows drive information unlock - unlock drive after failed writing blank - blank a CD-RW scanbus - scan for devices simulate - shortcut for 'write --simulate' write - writes CD copy - copies CD Try 'cdrdao <command> -h' to get a list of available options
今回は読み取りを行うので read-cd
コマンドを使う。これもヘルプを見てみる。
cdrdao read-cd
Cdrdao version 1.2.3 - (C) Andreas Mueller <andreas@daneb.de> Usage: cdrdao read-cd [options] toc-file options: --device [proto:]{<x,y,z>|device} - sets SCSI device of CD-ROM reader --driver <id> - force usage of specified driver for source device --datafile <filename> - name of data file placed in toc-file --session # - select session --fast-toc - do not extract pre-gaps and index marks --read-raw - read raw data sectors (including L-EC data) --no-mode2-mixed - don't switch to mode2_mixed --rspeed <read-speed> - selects reading speed --read-subchan <mode> - defines sub-channel reading mode <mode> = rw | rw_raw --tao-source - indicate that source CD was written in TAO mode --tao-source-adjust # - # of link blocks for TAO source CDs (def. 2) --paranoia-mode # - DAE paranoia mode (0..3) --with-cddb - retrieve CDDB CD-TEXT data while copying --cddb-servers <list> - sets space separated list of CDDB servers --cddb-timeout # - timeout in seconds for CDDB server communication --cddb-directory <path> - path to local CDDB directory where fetched CDDB records will be stored --force - force execution of operation -v # - sets verbose level
今回はデータファイルを作成するので --datafile
オプションを使う。今回は --swap
を使って s16le -> s16be にバイトオーダーを入れ替えてみる。(※こんな話をしておきながら実は --swap
を使わずに dd conv=swab
した方が何かと都合がよい)
CD はこれ。(その情報は重要か?)
- アーティスト: ワルキューレ,深川琴美,姉田ウ夢ヤ
- 出版社/メーカー: FlyingDog
- 発売日: 2016/07/06
- メディア: CD
- この商品を含むブログ (18件) を見る
※面倒なので以降、シェルのブレース展開を使う。
cdrdao read-cd --rspeed 24 --read-raw --swap --datafile 'Walküre Attack!'.{bin,toc}
TOC ファイルは以下のようなものになる。CATALOG は値を調べてみたら JAN が入ってるっぽい。ISRC(International Standard Recording Code)とは日本語で「国際標準レコーディングコード」のこと。
CD_DA CATALOG "4580325321982" // Track 1 TRACK AUDIO NO COPY NO PRE_EMPHASIS TWO_CHANNEL_AUDIO FILE "Walküre Attack!.bin" 0 04:54:47 // Track 2 TRACK AUDIO NO COPY NO PRE_EMPHASIS TWO_CHANNEL_AUDIO FILE "Walküre Attack!.bin" 04:54:47 04:12:55 // Track 3 TRACK AUDIO NO COPY NO PRE_EMPHASIS TWO_CHANNEL_AUDIO FILE "Walküre Attack!.bin" 09:07:27 03:54:70 // Track 4 TRACK AUDIO NO COPY NO PRE_EMPHASIS TWO_CHANNEL_AUDIO FILE "Walküre Attack!.bin" 13:02:22 04:04:28 // Track 5 TRACK AUDIO NO COPY NO PRE_EMPHASIS TWO_CHANNEL_AUDIO FILE "Walküre Attack!.bin" 17:06:50 04:25:60 // Track 6 TRACK AUDIO NO COPY NO PRE_EMPHASIS TWO_CHANNEL_AUDIO FILE "Walküre Attack!.bin" 21:32:35 04:30:72 // Track 7 TRACK AUDIO NO COPY NO PRE_EMPHASIS TWO_CHANNEL_AUDIO FILE "Walküre Attack!.bin" 26:03:32 05:34:68 // Track 8 TRACK AUDIO NO COPY NO PRE_EMPHASIS TWO_CHANNEL_AUDIO FILE "Walküre Attack!.bin" 31:38:25 05:14:57 // Track 9 TRACK AUDIO NO COPY NO PRE_EMPHASIS TWO_CHANNEL_AUDIO FILE "Walküre Attack!.bin" 36:53:07 05:11:25 // Track 10 TRACK AUDIO NO COPY NO PRE_EMPHASIS TWO_CHANNEL_AUDIO FILE "Walküre Attack!.bin" 42:04:32 04:26:38 // Track 11 TRACK AUDIO NO COPY NO PRE_EMPHASIS TWO_CHANNEL_AUDIO FILE "Walküre Attack!.bin" 46:30:70 04:39:52 // Track 12 TRACK AUDIO NO COPY NO PRE_EMPHASIS TWO_CHANNEL_AUDIO ISRC "JPVI01610890" FILE "Walküre Attack!.bin" 51:10:47 05:09:18
RAW データの再生
出来上がった RAW データは mplayer で再生できる。
mplayer --demuxer rawaudio 'Walküre Attack!'.bin
ffmpeg(ffplay)の場合はフォーマット、レート、チャンネルを指定しないと正しく再生できない。(cdrdao read-cd --swap
していない場合は -f s16le
)
ffplay -f s16be -ar 44100 -ac 2 -i 'Walküre Attack!'.bin
VLC の場合はチャンネル数のデフォルトが 2
なので --rawaud-channels=2
は省略してもよい。(cdrdao read-cd --swap
していない場合は --rawaud=fourcc=s16l
)
vlc 'Walküre Attack!'.bin --demux=rawaud --rawaud-fourcc=s16b --rawaud-samplerate=44100
dd conv=swab
している場合は s16le になる。
dd if='Walküre Attack!'.bin of='Walküre Attack!'.bin.swaped conv=swab
mplayer --demuxer rawaudio 'Walküre Attack!'.bin.swaped ffplay -f s16le -ac 2 'Walküre Attack!'.bin.swaped vlc 'Walküre Attack!'.bin --demux=rawaud --rawaud-samplerate=44100
dd で変換した場合、TOC 内に記述されているファイル名と一致しなくなるので古い方を捨ててリネームしておく。
rm 'Walküre Attack!'.bin mv 'Walküre Attack!'.bin.swaped 'Walküre Attack!'.bin
RAW データの分割
TOC ファイルから CUE シートを作成する。
toc2cue 'Walküre Attack!'.{toc,cue}
bchunk を使って分割、WAVE ファイルを作成する。(-w
をつけない場合は BIN 状態のまま分割される)
bchunk -w 'Walküre Attack!'.{bin,cue,}
自動化
RAW 読み込み、スワップ、CUE シート作成、WAV ファイル作成まで一括で。デバイスの指定とか環境によっては細かい指定が必要かも。
#!/bin/sh set -e set -x : ${1:?} cdrdao read-cd --read-raw --datafile "$1".bin "$1".toc mv "$1".bin "$1".bin.orig dd conv=swab if="$1".bin.orig of="$1".bin rm "$1".bin.orig toc2cue "$1".toc "$1".cue bchunk -w "$1".bin "$1".cue "$1 - "