NetBSDでCDをリッピングしてみる(一応成功)

この記事は、NetBSD Advent Calendar 2025の12日目の記事です。

はじめに

furandon pigさんの10日目の記事でAudio CDのリッピングに失敗されていました。 ですが、私は過去にリッピングしていたはずです。

私の環境は、NetBSD/amd64 11.99.4にUSB 3接続のBD-Rドライブであるパイオニア製のBDR-XD08SVです。 ちなみに、いつの間にかパイオニアは光学ディスクドライブからは撤退しているように見えます。残念です。

pkgsrc/sysutils/cdrtoolsのcdda2wavコマンドを試してみる

cdrtoolsには、cdda2wavというコマンドが含まれています。 これであればリッピングできるはずです。 今回の光学ディスクドライブはcd0として認識されています。 ですが、一般ユーザーで実行したいので、まずは/dev/rcd0*のパーミッションを設定しておきます。 私が使っているユーザーはoperatorグループに所属していますので、以下のように設定すれば良いでしょう。

# chmod 660 /dev/rcd0*

その上でcdrtoolsをインストールしましょう。以下のように実行すれば良いでしょう。

# cd /usr/pkgsrc/sysutils/cdrtools
# make install

cdda2wav(1)のmap pageにあるように以下のように実行すれば良いでしょう。

$ cdda2wav -vall cddb=0 speed=4 -paranoia paraopts=proof -B
cdda2wav: Insufficient 'file read' privileges. You will not be able to open all needed devices.
cdda2wav: Insufficient 'file write' privileges. You will not be able to open all needed devices.
cdda2wav: Insufficient 'device' privileges. You may not be able to send all needed SCSI commands, this my cause various unexplainable problems.
cdda2wav: Insufficient 'priocntl' privileges. You may get jitter.
cdda2wav: Insufficient 'network' privileges. You will not be able to do remote SCSI.
No target specified, trying to find one...
Using dev=31,0,0.
Type: ROM, Vendor 'PIONEER ' Model 'BD-RW   BDR-XD08' Revision '1.02' MMC+CDDA
274432 bytes buffer memory requested, transfer size 61440 bytes, 4 buffers, 23 sectors
#Cdda2wav version 2024/03/18 3.02_netbsd_11.99.4_amd64_x86_64, real time sched., soundcard, libparanoia support
cdda2wav: Bad status from freedb server during hello: 500 Command syntax error.
.
cdda2wav: Bad status from freedb server during quit: 500 Unrecognized command, closing connection.
.
AUDIOtrack pre-emphasis  copy-permitted tracktype channels
      1-11           no              no     audio    2
Table of Contents: total tracks:11, (total time 48:35.00)
  1.( 2:00.42),  2.( 3:58.73),  3.( 4:58.40),  4.( 4:28.20),  5.( 4:12.57),
  6.( 4:39.13),  7.( 4:55.05),  8.( 4:43.70),  9.( 4:47.17), 10.( 3:56.45),
 11.( 5:53.68)

Table of Contents: starting sectors
  1.(       0),  2.(    9042),  3.(   26965),  4.(   49355),  5.(   69475),
  6.(   88432),  7.(  109370),  8.(  131500),  9.(  152795), 10.(  174337),
 11.(  192082), lead-out(  218625)
CDINDEX discid: xxh_sS61wqdXnYPsHKLlN3v5y1c-
CDDB discid: 0x830b630b
CD-Text: not detected
CD-Extra: not detected
Media catalog number: 4988022106978
T:  2 ISRC: JP-TA0-92-20030
T:  3 ISRC: JP-TA0-92-20040
T:  4 ISRC: JP-TA0-92-20050
T:  5 ISRC: JP-TA0-92-20060
T:  6 ISRC: JP-TA0-92-20070
T:  7 ISRC: JP-TA0-92-20080
T:  8 ISRC: JP-TA0-92-20090
T:  9 ISRC: JP-TA0-92-20100
T: 10 ISRC: JP-TA0-92-20110
T: 11 ISRC: JP-TA0-92-20120

index scan: 11...
samplefile size will be 514206044 bytes.
recording 2915.0000 seconds stereo with 16 bits @ 44100.0 Hz ->'audio'...
using c2check to verify reads.
using lib paranoia for reading.
cdda2wav: Operation not permitted. Cannot set posix realtime scheduling policy.
percent_done:
100%  track  1 recorded successfully
100%  0 rderr, 0 skip, 0 atom, 0 edge, 0 drop, 0 dup, 0 drift, 0 0 c2
100%  896 reads(212.3%) 24 overlap(20 .. 20)
100%  track  2 recorded successfully
100%  0 rderr, 0 skip, 0 atom, 0 edge, 0 drop, 0 dup, 0 drift, 0 0 c2
100%  1736 reads(207.6%) 62 overlap(20 .. 20)
100%  track  3 recorded successfully
100%  0 rderr, 0 skip, 0 atom, 0 edge, 0 drop, 0 dup, 0 drift, 0 0 c2
100%  2184 reads(209.0%) 78 overlap(20 .. 20)
100%  track  4 recorded successfully
100%  0 rderr, 0 skip, 0 atom, 0 edge, 0 drop, 0 dup, 0 drift, 0 0 c2
100%  1960 reads(208.7%) 70 overlap(20 .. 20)
100%  track  5 recorded successfully
100%  0 rderr, 0 skip, 0 atom, 0 edge, 0 drop, 0 dup, 0 drift, 0 0 c2
100%  1792 reads(202.6%) 64 overlap(20 .. 20)
100%  track  6 recorded successfully
100%  0 rderr, 0 skip, 0 atom, 0 edge, 0 drop, 0 dup, 0 drift, 0 0 c2
100%  2072 reads(212.1%) 74 overlap(20 .. 20)
100%  track  7 recorded successfully
100%  0 rderr, 0 skip, 0 atom, 0 edge, 0 drop, 0 dup, 0 drift, 0 0 c2
100%  2128 reads(206.1%) 76 overlap(20 .. 20)
100%  track  8 recorded successfully
100%  0 rderr, 0 skip, 0 atom, 0 edge, 0 drop, 0 dup, 0 drift, 0 0 c2
100%  2072 reads(208.5%) 74 overlap(20 .. 20)
100%  track  9 recorded successfully
100%  0 rderr, 0 skip, 0 atom, 0 edge, 0 drop, 0 dup, 0 drift, 0 0 c2
100%  2072 reads(206.1%) 74 overlap(20 .. 20)
100%  track 10 recorded successfully
100%  0 rderr, 0 skip, 0 atom, 0 edge, 0 drop, 0 dup, 0 drift, 0 0 c2
100%  1736 reads(209.6%) 62 overlap(20 .. 20)
100%  track 11 recorded successfully
100%  0 rderr, 0 skip, 0 atom, 0 edge, 0 drop, 0 dup, 0 drift, 0 0 c2
100%  2530 reads(204.2%) 92 overlap(20 .. 20)
$ ls
audio_01.inf audio_03.inf audio_05.inf audio_07.inf audio_09.inf audio_11.inf
audio_01.wav audio_03.wav audio_05.wav audio_07.wav audio_09.wav audio_11.wav
audio_02.inf audio_04.inf audio_06.inf audio_08.inf audio_10.inf
audio_02.wav audio_04.wav audio_06.wav audio_08.wav audio_10.wav

audio_01.wavからaudio_11.wavが生成できました。

できたwavファイルをmp3ファイルに変換する

MP3の特許は、少なくとも日本では既の期限を迎えているようです。 ですので、MP3にエンコードしても特許侵害にはならないでしょう。 と言うことで、pkgsrc/audio/lameを使うことにします。 以下のようにインストールすれば良いでしょう。

# cd /usr/pkgsrc/audio/lame

おそらくとても贅沢な気がするのですが、最近のamd64なマシンにとってMP3エンコードなど負荷にもならないと思います。 以下のようにMP3ファイルを生成しました。

$ for f in *.wav
do lame -q0 -b256 $f `basename $f .wav`.mp3
done
LAME 3.100 64bits (http://lame.sf.net)
Using polyphase lowpass filter, transition band: 19383 Hz - 19916 Hz
Encoding audio_01.wav to audio_01.mp3
Encoding as 44.1 kHz j-stereo MPEG-1 Layer III (5.5x) 256 kbps qval=0
    Frame          |  CPU time/estim | REAL time/estim | play/CPU |    ETA
  4617/4617  (100%)|    0:13/    0:13|    0:13/    0:13|   8.6830x|    0:00
-------------------------------------------------------------------------------
   kbps        LR    MS  %     long switch short %
  256.0       99.0   1.0        88.6   5.2   6.2
Writing LAME Tag...done
ReplayGain: +4.8dB
LAME 3.100 64bits (http://lame.sf.net)
Using polyphase lowpass filter, transition band: 19383 Hz - 19916 Hz
Encoding audio_02.wav to audio_02.mp3
(snip)

mp3ファイルのタグを設定し、ファイル名を変更する

pkgsrc/audio/easytagを使うと、MP3にIDv2のタグを設定すると同時に、ファイル名も「アーティスト名-曲名」等に変更することができます。 pkgsrc/audio/easytagはヘルプを表示するためにpkgsrc/misc/yelp3を利用するため、間接的にpkgsrc/www/webkit-gtkを利用することになります。 自分でpkgsrc/audio/easytagをビルドしてインストールするのであれば、以下のようにpkgsrc/www/webkit-gtkは使わないようにインストールした方が良いかもしれません。

# cd /usr/pkgsrc/audio/easytag
# make PKG_OPTIONS.easytag=-doc install

おわりに

でも良く考えるとpkgsrc/audio/abcdeは、私が以前試した時に動いていたはずです (abcde -d /dev/rcd0)。 もしかしたらNetBSDでは、/dev/cd0ではなく/dev/rcd0を使わないといけないというだけかもしれません。 他のGUI付きのソフトウェアの方が便利かもしれません。 いずれ試してみたいと思います。

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。

NetBSDでCDをリッピングしてみる(一応成功)

この記事は、 NetBSD Advent Calendar 2025 の12日目の記事です。 はじめに furandon pigさんの10日目の記事でAudio CDのリッピングに失敗 されていました。 ですが、私は過去にリッピングしていたはずです。 ...