見出し画像

「アナログレコードって本当に音が良いの?」 〜 『関ジャム 完全燃 SHOW』 (テレビ朝日) の解説は本当か? (11) 〜 Linux Audio 編 (06〜13)

●『関ジャム 完全燃 SHOW【視聴者からの音楽ギモンに答えます!教えて!
  関ジャム先生!】』「アナログレコードって本当に音が良いの?」
 (2019 年11月10日 放送)について感じたこと

 ※ このテーマについては『関ジャム 完全燃 SHOW【弾き語り・実はスゴ
   イ楽器・音楽ギモン…特別編】』(2021 年 5月23日 放送)でも取り
   上げられています

 ※ テレビ朝日系音楽バラエティー番組『関ジャム 完全燃 SHOW』は
   2024 年 4月から番組名を『EIGHT-JAM』(エイトジャム)と改めて
   放送を継続しています


<疑問> 20 kHz 以上の高音域が記録・再生できれば高品位(高忠実度)に
     なるのでしょうか? [10]


 【注意】「アナログレコードって本当に音が良いの?」〜『関ジャム 完
     全燃 SHOW』(テレビ朝日)の解説は本当か?(6)〜(13)
     までは、Linux(Ubuntu Studio)のオーディオ環境について言及
     しますので、ご興味のない方は(14)からご覧になってください


● WineHQ(ワイン)+ foobar2000[x86 32-bit](Windows 版)


 Ubuntu Studio 24.04.3 LTS に WineHQ[Stable branch]+ foobar2000[x86 32-bit](Windows 版)のインストール方法を説明します。公式 Web サイトのガイドに従って[Stable branch]をインストールします。


 (1)WineHQ(ワイン)公式 サイトのホームページで[Download]
    ボタンをクリックする

Wine HQ ホームページ


(2)[WineHQ Binary Packages]=>[Ubuntu]ボタンをクリック

     Ubuntu - WineHQ binary packages for Ubuntu
     22.04,24.04, 25.04 and 25.10   ※ Ubuntu をクリックする

WineHQ Binary Packages から Ubuntu を選択する


 (3)[Add the repository]の項目では、[Add the repository:]=>
    [noble]以下のコマンドラインを実行する

     $ sudo dpkg --add-architecture i386 [Enter]

$ sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/noble/winehq-noble.sources [Enter]

 ※ Add the sources file:  以下の文字列はトリプルクリックで選択できる

Noble


 (4)パッケージ情報を更新する

    $ sudo apt update [Enter]


 (5)Stable branchをインストールする

    $ sudo apt install --install-recommends winehq-stable [Enter]

Stable branch の Command をターミナルにコピーして実行する


 次に foobar2000[x86 32-bit](Windows 版)をインストールします。

 (1)foobar2000(公式サイト)で[Windows]=>[Latest stable
    version]=>[32-bit]ボタンをクリックする

 (2)ダウンロードした実行ファイル(例 foobar2000_v2.5.2.exe)をダ
    ブルクリックして起動する

 (3)[Next>]ボタン=>[I Agree]ボタンをクリックする

 (4)◎ Standard installation を選択して[Next>]ボタンをクリックする

 (5)Destination Folder[C:\Program Files (x86)\foobar2000]のように
    表示されるので、そのまま[Next>] ボタンをクリックする

 (6)[Chose Components]の設定は変更せず[Install]ボタンをク
    リックする


 Ubuntu Studio 24.04.3 LTS 環境を前提に必要な設定をしていきます。foobar2000[32-bit](Windows 版)の UI が正常に表示されない場合(画面が白紙状態になる)は winecfg を起動してエミュレートする環境をWindows 8.1 に設定します(通常は[規定の設定]=Windows 11 で動作します)。


 $ winecfg [Enter] もしくは
 $ wine winecfg  [Enter] を実行する  ※ winecfg の起動

最初は[Windows 8.1]を選択して動作確認をする



 (1)[アプリケーション]タブ=>[アプリケーションを追加]=>
    [foobar2000.exe]を追加する

     ※ /home/<user-name>/.wine/drive_c/Program Files (x86)/
       foobar2000/foobar2000.exe


 (2)Windows バージョン:[Windows 8.1]を選択する



 UI(ユーザーインターフェース)をカスタマイズする基盤環境としてColumns UIを導入する

 (1)foobar2000(公式サイト):[Components]=>[Columns UI]
    =>[View version history]=>2.1.0 released on: 2023-09-30

 (2)foo_ui_columns-2.1.0.x86-x64.fb2k-component をダブルクリック

 (3)[ YES ]ボタンをクリック=>[ Apply ]ボタンをクリック=>
    [ OK ]ボタンをクリック

 (4)再起動してダイアログが表示されたら[ Columns UI ]を選択=>
    [ OK ]ボタンをクリック


 ※ Columns UI 2.1.0 以上のバージョンを選択すると日本語の文字表示が不
   鮮明になります[Links]=>[View version history]から Columns UI
   2.1.0 を選択するようにしてください


  Columns UI が起動したら[Library]=>[Configure]=>[Display]=>[Columns UI]=>[Main]タブを開いて[Quick set-up]で UI のスタイルを選択します。最初は3ペイン構造[Playlist switcher + Artwork]を選択するのが無難です。

 UI(ユーザーインターフェース)のカスタマイズは自在にできますから、シンプルな構造を基盤として、必要に応じて項目を追加していくのが良いと思います。最初に[View]=>[Playlist view]=>[Show groups]のチェックを外しておくとプレイリスト表示が見やすくなります。

 WineHQ[Stable branch]+ foobar2000[x86 32-bit](Windows 版)では、日本語表示の ”文字化け” が課題になります。プレイリストの ”文字化け” は Columns UI のフォント設定で[Noto Sans CJK JP]を指定すれば解決しますが、その他の領域の ”文字化け” は解消されません。そこで CJK フォントを追加して日本語表示を正常化します。

 $ sudo apt install winetricks [Enter]   ※ Winetricks のインストール
 $ winetricks cjkfonts [Enter]    ※ CJK フォントのインストール
 $ wineserver -k [Enter] ※ wine と wineconsole プロセスを停止する
 $ wineboot [Enter]  ※ wine コマンドを実行して環境を初期化する


 これでファイルマネージャの日本語ファイル名も表示できるようになります。

 ※ fakejapanese_ipamonaフォントをインストールする方法もあります

   $ winetricks fakejapanese_ipamona [Enter]


 Ubuntu Studio 24.04.3 LTSでは pipewire-pulse(オーディオサーバー)が標準化しており、Ubuntu Studio 22.04.4 LTS + PulseAudio(オーディオサーバー)環境とは、foobar2000[x86 32-bit](Windows 版)で選択できる音声出力モードが異なります。

 このところ大幅な仕様変更が行われたようで、Ubuntu Studio 24.04.3 LTSに WineHQ[Stable branch]+foobar2000[x86 32-bit](Windows 版)をインストールした初期状態で有効となる音声出力は以下の通りになります。

 (1)[Default : Built-in Audio Pro]
 (2)[Default : PulseAudio Output]

 WineHQ(ワイン)環境で(1)WASAPI[event]モード、excluseive モードは動作しませんが、(2)WASAPI[push]モードも有効になりません。

 Ubuntu Studio 24.04.3 LTS では Ubuntu Studio Audio Configuration(ダイアログ形式のユーティリティ)でオーディオ環境の設定をする独自仕様になっており、(1)[Default : Built-in Audio Pro]、(2)[Default : PulseAudio Output]のどちらを選択しても、Ubuntu Studio Audio Configuration(ダイアログ形式のユーティリティ)で設定したサンプルレートで出力されます。

 Ubuntu Studio Audio Configuration(ダイアログ形式のユーティリティ)で設定できる項目は(1)バッファサイズ、(2)サンプルレートだけですが、当初は pipewire-pulse(オーディオサーバー)の動作が不安定で(1)OSの起動時にサウンドデバイスを認識できず、音声出力が有効にならない、(2)Rchの音声が出ない、(3)pipewire-pulse(オーディオサーバー)の再起動、OS の再起動により正常化することができない、といった症状が発生しました。これはサウンドデバイスの優先順位に起因するトラブルであるようです。

  $ aplay -l [Enter]   ※ サウンドデバイスの名前を調べる

**** ハードウェアデバイス PLAYBACK のリスト ****
カード 0: PCH [HDA Intel PCH], デバイス 0: ALC269VB Analog [ALC269VB Analog]
サブデバイス: 1/1
サブデバイス #0: subdevice #0
カード 1: CONTROLLER [VOLUME CONTROLLER], デバイス 0: USB Audio [USB Audio]
サブデバイス: 0/1
サブデバイス #0: subdevice #0
カード 2: HDMI [HDA ATI HDMI], デバイス 3: HDMI 0 [HDMI 0]
サブデバイス: 1/1
サブデバイス #0: subdevice #0

 ここでは[カード1、デバイス0]の VOLUME CONTROLLER[USB Audio]をデフォルトに設定します。デバイス名のより正確な表記を知りたい場合は、以下のようにします。

  $ aplay --list-pcm [Enter]

     ︙
hw:CARD=CONTROLLER,DEV=0 ※ CARD=CONTROLLER,DEV=0が正しい表記
VOLUME CONTROLLER, USB Audio
Direct hardware device without any conversions
     ︙

 内部的にサウンドデバイスは名前で特定されます。したがって、[カード1、デバイス0]VOLUME CONTROLLER[USB Audio]のデバイス名は「CONTROLLER」ということになります。

  $ cat /proc/asound/modules [Enter]

0 snd_hda_intel   ※ デフォルト設定のサウンドデバイス
1 snd_usb_audio   ※ CONTROLLER の優先順位は2番目になっている
2 snd_hda_intel


 サウンドデバイスの優先順位を固定する方法は幾つかありますが、以下の(1)、(2)で示す設定方法では有効になりませんでした。Linux の起動シーケンスでは、起動する度にデバイスの優先順位が変動するため、ALSA出力で指定したサウンドデバイスを認識できず、音声出力が無効になることがあります。そのためサウンドデバイスの優先順位を固定する必要があるのですが、以下の▼(3)で示す方法で設定してください。


  (1) /etc/asound.conf を作成して、デフォルトの音声出力デバイスを
     指定する

     pcm.!default {
     type hw
     card 1   ※ 2の場合もある。使用するデバイスと一致させる
     }

     ctl.!default {
     type hw
     card 1   ※ 2の場合もある。使用するデバイスと一致させる
     }

  (2) /etc/asound.conf を作成して、デフォルトのサウンドデバイスを
     指定する

     defaults.pcm.!card CONTROLLER
     defaults.pcm.!device 0
     defaults.ctl.!card CONTROLLER

 ▼(3) /etc/modprobe.d/sound.confを作成して、優先順位を指定する

     options snd_usb_audio index=0  ※ CONTROLLER を最優先
     options snd_hda_intel index=1    するデバイスに指定
     options snd_hda_intel index=2


 $ cat /proc/asound/modules   ※ OSの再起動後にサウンドデバイスの
                  優先順位を確認する

0 snd_usb_audio  ※ CONTROLLERがデフォルトに設定されている
1 snd_hda_intel
2 snd_hda_intel

 ▼(3)の方法により、CONTROLLER はデフォルトのサウンドデバイスに指定されます。ところが実際は(1)OS の起動時にサウンドデバイスが無効化する、(2)Rch の音声が出ないという症状は解消されず、カーネルが 6.8.0-47-lowlatency にアップデートされた時点でデバイス(CONTROLLER)が認識されなくなりました。その原因は…


 $ cat /etc/modprobe.d/alsa-base.conf

      ︙
 # Keep snd-usb-audio from beeing loaded as first soundcard
 options snd-usb-audio index=-2  ※ [-2]に設定されている


 ※ /etc/modprobe.d/sound.conf の設定(options snd_usb_audio index=0)
   とは数値が異なる


 結論から述べると /etc/modprobe.d/sound.conf を以下のように /etc/modprobe.d/alsa-base.conf の数値設定に合わせると正常に認識します。

 options snd_usb_audio index=-2 ※ CONTROLLER を最優先順位に設定
 options snd_hda_intel index=1
 options snd_hda_intel index=2

 これで問題は解消したものと認識していたのですが、Ubuntu Studio 24.04.1 LTS を再インストールして、素の状態で最新環境にアップデートしてみると、サウンドデバイスの優先順位が変動しても、正常に音声出力できるように修正されていました。また、上記した通り /etc/modprobe.d/sound.conf で options snd_usb_audio index-2 に設定するとデフォルトのサウンドデバイス[0]ではなく、2番目[1]に固定されます。

  $ cat /proc/asound/modules [Enter] 

       ※ OSの再起動後にサウンドデバイスの優先順位を確認する

 0 snd_hda_intel
 1 snd_usb_audio  ※ CONTROLLER の優先順位は[1]に設定された
 2 snd_hda_intel


 ※ 通常、ALSA 出力では、デバイスの優先順位が変動するとデバイスを認
   識できなくなります

 pipewire-pulse(オーディオサーバー)のサウンドは中・低音域の厚みが増したエネルギーバランスとなり、アンビエンスの情報も豊富で高音域がジリジリするデジタル特有の音質傾向が緩和されます。素性は良く高品位ですから、特別な理由が無い限り、従来の PulseAudio+Jack 環境を選択する必然性はありません。

 Ubuntu Linux は 22.10 以降のバージョンから pipewire-pulse(オーディオサーバー)に対応しています。pactl コマンドを実行すると確認できます(以下は参考例)。

 $ pactl info [Enter]

     ︙
サーバー名: PulseAudio (on PipeWire 1.0.5)  ※ PipeWire が見える
サーバーバージョン: 15.0.0
デフォルトサンプル仕様: float32le 2ch 48000Hz
デフォルトチャンネルマップ: front-left,front-right
(1)[Default : Built-in Audio Pro](2)[Default : PulseAudio Output] ︙


 Ubuntu Studio 24.04.3 LTS で PulseAudio(オーディオサーバー)に切り替える場合は、新規にインストールしてください。そのプロセスで pipewire-pulse(オーディオサーバー)は自動的に削除されます。

 $ sudo apt install pulseaudio [Enter]

        ※ PulseAudio(オーディオサーバー)をインストールする

 $ sudo apt autoremove [Enter]  ※ 不要になったプログラムを削除

 foobar2000(公式サイト)=>[Components]=>[WASAPI shared output 0.6.24]をダウンロードして、foobar2000 にインストールすればWASAPI[Shared]モードが選択できるようになります。


 ◎ pipewire-pulse(オーディオサーバー)に変更する方法

 (1)[KDEメニュー]=>[システム]=>[Ubuntu Studio Audio
    Configuration]を起動する

 (2)[Switch Configuration(NOT Recomended)]=>[Continue]=>
    ◎[PipeWire]=>[Continue]を選択する

 このようにすると、自動的に pipewire-pulse(オーディオサーバー)をインストールしてくれます。インストール後に OS を再起動すれば pulseaudio(オーディオサーバー)から pipewire-pulse(オーディオサーバー)にスイッチします。


 ◎ pulseaudio の初期設定


  /etc/pulse/daemon.conf を編集します


 以下に示すのは Ubuntu Studio 22.04.5 LTS + WineHQ[Stable branch]+ PulseAudio(オーディオサーバー)環境の設定ですが、Ubuntu Studio 24.04.3 LTS + WineHQ[Stable branch]+ pipewire-pulse(オーディオサーバー)環境では、設定ファイル自体が存在しません。したがって、参考例として記しておきます

# This file is part of PulseAudio.
#
# PulseAudio is free software; you can redistribute it and/or modify
# it under the terms of the GNU Lesser General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# PulseAudio is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU Lesser General Public License
# along with PulseAudio; if not, see <http://www.gnu.org/licenses/>.

## Configuration file for the PulseAudio daemon. See pulse-daemon.conf(5) for
## more information. Default values are commented out. Use either ; or # for
## commenting.

; daemonize = no
; fail = yes
; allow-module-loading = yes
; allow-exit = yes
; use-pid-file = yes
; system-instance = no
; local-server-type = user
; enable-shm = yes
; enable-memfd = yes
; shm-size-bytes = 0 # setting this 0 will use the system-default, usually 64 MiB
; lock-memory = no
cpu-limit = no         ※ コメントアウトする

; high-priority = yes
nice-level = -11        ※ コメントアウトする

realtime-scheduling = yes    ※ コメントアウトする
; realtime-priority = 5
realtime-priority = 9      ※ [9]に設定する

; exit-idle-time = 20
; scache-idle-time = 20

; dl-search-path = (depends on architecture)

; load-default-script-file = yes
; default-script-file = /etc/pulse/default.pa

; log-target = auto
; log-level = notice
; log-meta = no
; log-time = no
; log-backtrace = 0

; resample-method = speex-float-1 ※ [speex-float-10]が最高音質
resample-method = soxr-vhq ※ SoX Resampler、16bitデバイスなら[soxr-hq]
; resample-method = src-sinc-best-quality ※ libsamplerate(SRC)の最高音質
; avoid-resampling = false
; enable-remixing = yes
; remixing-use-all-sink-channels = yes
; remixing-produce-lfe = no
; remixing-consume-lfe = no
; lfe-crossover-freq = 0

; flat-volumes = no

; rescue-streams = yes

; rlimit-fsize = -1
; rlimit-data = -1
; rlimit-stack = -1
; rlimit-core = -1
; rlimit-as = -1
; rlimit-rss = -1
; rlimit-nproc = -1secret rabbit code resampler
; rlimit-nofile = 256
; rlimit-memlock = -1
; rlimit-locks = -1
; rlimit-sigpending = -1
; rlimit-msgqueue = -1
; rlimit-nice = 31
; rlimit-rtprio = 9
; rlimit-rttime = 200000

; default-sample-format = s16le
default-sample-format = float32le   ※ 32bit(浮動小数点)に設定する
; default-sample-rate = 44100
default-sample-rate = 88200   ※ ここでは88.2KHzに設定する(後述)
; alternate-sample-rate = 48000
alternate-sample-rate = 96000       ※ 96kHzを上限に設定する
; default-sample-channels = 2deferred-volume-safety-margin-usec
; default-channel-map = front-left,front-right

; default-fragments = 4
default-fragments = 2 ※ [2]に設定する
; default-fragment-size-msec = 25
default-fragment-size-msec = 125     ※ [125]に設定する

; enable-deferred-volume = yes
deferred-volume-safety-margin-usec = 1  ※ [1]に設定する
; deferred-volume-extra-delay-usec = 0


 [resample-method = ]の設定は任意でリサンプラーを選択します。(1)Speedex、(2)SoX Resampler、(3)libsamplerate(SRC:Secret Rabbit Code Resampler)の中から品質レベルを選んで設定します。


 サウンドデバイスで使用可能なサンプリングレートを確認する方法ですが、以下のように実行します。

 $ arecord -l [Enter]   ※ 録音可能なサウンドデバイスを確認


**** ハードウェアデバイス CAPTURE のリスト ****
カード 2: PCH [HDA Intel PCH], デバイス 0: ALC269VB Analog [ALC269VB Analog]
サブデバイス: 1/1
サブデバイス #0: subdevice #0
カード 2: PCH [HDA Intel PCH], デバイス 2: ALC269VB Alt Analog [ALC269VB Alt Analog]
サブデバイス: 1/1
サブデバイス #0: subdevice #0


 $ arecord -f dat -r 55000 -D hw:2,0 -d 10 test01.wav [Enter]

                     ※ 10は録音時間(=10秒)

警告: レートが不正確です (要求値 = 55000Hz, 使用値 = 48000Hz)
plug プラグイン を使用してください
録音中 WAVE 'test01.wav' : Signed 16 bit Little Endian, レート 48000 Hz, ステレオ

 ※ Intel(インテル)の CPU(x86)、Apple シリコンなどのバイトオーダーは Little Endian(リトルエンディアン)


 オーディオデバイス(hw:2,0)は ”使用値 = 192000Hz” が上限です。上述したのは要求値を 55000Hz(48 kHz の近似値)にした結果ですが、要求値を 98000 Hz(96 kHz の近似値)にすると以下のようになります。

 $ arecord -f dat -r 98000 -D hw:2,0 -d 10 test01.wav [Enter]


警告: レートが不正確です (要求値 = 98000Hz, 使用値 = 192000Hz)
plug プラグイン を使用してください
録音中 WAVE 'test01.wav' : Signed 16 bit Little Endian, レート 192000 Hz, ステレオ


 plug プラグインを使用すれば、”要求値 = 98000Hz”で録音することも可能です。

 $ arecord -f dat -r 98000 -D plughw:2,0 -d 10 test01.wav [Enter]
録音中 WAVE 'test01.wav' : Signed 16 bit Little Endian, レート 98000 Hz, ステレオ

 通常、音声出力するオーディオデバイス(hw0,0)のサンプリングレートは[default-sample-rate =]の項目で 44100Hz に設定します。ここで 88200(44.2KHz x2)に設定している理由は WineHQ(ワイン)+ foobar2000[x86 32-bit](Windows 版)で再生する時に、CD 音源(44.1KHz)と動画ファイルの音声トラック(48 KHz)を2倍のサンプリングレートで出力するためです。

 PulseAudio(オーディオサーバー)を再起動して設定を反映させるためには、以下のようにします

 $ pulseaudio -k [Enter]
 $ pulseaudio --start [Enter]

 foobar2000[x86 32-bit](Windows 版)を使用するのは、foobar2000[x86 64-bit](Windows 版)では、VST-pulg-insを含む[Library]=>[Configure]=>[Components]の DSP(32-bit レガシービルド)が動作しないからです。例えば、WASAPI output support 3.4 がサポートするのはx86 32-bit だけです。


シェリル・ノーム starring May'nダイアモンド クレバス
(TV アニメ「マクロスF(フロンティア)」ED テーマ)


 時折、【Unable to open item for playback (Unknown exception):】という警告のダイアログが表示されて、再生不能に陥ることがあります。そもそも、Linux にはCドライブ、Dドライブといった Windows OS のドライブレターという概念がありません。

 Windows OS のドライブレターはシステムドライブの C:以外は接続した順番に D、E、F…と番号が振られて、ドライブ毎に独立したディレクトリ構造を持ちますが、Linux のディレクトリ構造はルートディレクトリを頂点とするツリー構造になっており、ブロックデバイス(HDD、SSD、USBメモリーなど)は /mnt もしくは /media(メディアディレクトリ)にマウント(接続)して利用します。

 複数のブロックデバイス(HDD など)をマウントポイントに接続して、それらを1つのデバイスとして統合的に運用する方法も一般的に用いられています。

 Linuxでは、例えば、ブロックデバイスを /mnt/sdb1 ディレクトリにマウント(接続)したら、この関係性は変動しませんが、Linux のドライバーソフトウェアはブロックデバイスを認識した順番で /dev/sda、/dev/sdb…のようにデバイス番号を割当てます。このため、OS を再起動するとデバイスのパス名が変動する可能性があり、一貫性がありません。

 例えば、外部のブロックデバイス(USB 接続の HDD など)を接続したまま OS を再起動すると、再起動前のデバイスのパス名は /dev/sdb であったのが、再起動後は /dev/sdc が割当てられるかも知れないのです。

 デバイスのパス名で参照するアプリケーションは変更されたパス名に対応できず、ブロックデバイス(HDD、USBメモリーなど)を認識できなくなります。WineHQ(ワイン)環境でも foobar2000[x86 32-bit](Windows 版)のプレイリストに記録されたドライブ指定と実際にマウント(接続)されたデバイスのパス名が一致せず、【Unable to open item for playback (Unknown exception):】で再生不能に陥ることがあります。この問題の対処法は3つあります。

 (1)新規にプレイリストを作成する

 (2)保存したプレイリストのドライブ指定を修正してLoad(読込み)

 (3)Configure Wine(winecfg)を起動して、[ドライブの設定]でドラ
    イブを追加する

 具体的な対応方法を記しておきます。

 (1)新規プレイリストを作成する [File]=>[New playlist Ctrl+N]

 (2)New Playlist に音声ファイルが保存されたフォルダをドラッグ&ド
    ロップ(drag and drop)して登録する

 (3)New Playlist に適当なファイル名を付けて保存する
    (例 playlist_foobar2000_v2_01.m3u8)

 (4)テキストエディタ(ここでは KWrite)で開いて、ドライブ指定の記
    述を確認する

 プレイリストのファイル名(例):playlist_foobar2000_v2_02.m3u8
 プレイリストの内容(例):foobar2000_v2.2_preview_2025-09-11

#
M:\music-store02\◇[μ's]僕らは今のなかで[ライブライブ!]OP1\(01) [μ's] 僕らは今のなかで.wav
M:\music-store02\◇[μ's]No brand girls[ラブライブ!]挿入歌\(01) [μ's] No brand girls.wav
M:\music-store02\◇[μ's]No brand girls[ラブライブ!]挿入歌\(02) [μ's] START-DASH!!.wavfoobar2000_v2.2_preview_2024-09-11
M:\music-store02\◇[μ's]Snow halation[ラブライブ!]挿入歌\(01) [μ’s] Snow halation.wav
M:\music-store02\◇[μ's]Snow halation[ラブライブ!]挿入歌\(02) [μ’s] baby maybe 恋のボタン.wav

 現状のドライブ指定は「M:」なので、Unknown exceptionで再生できないプレイリストをテキストエディタで開いて、ドライブ指定の記述を確認する。

 プレイリストのファイル名(例):playlist_foobar2000_v2_01.m3u8
 プレイリストの内容(例):

#
D:\music-store02\◇[μ's]僕らは今のなかで[ライブライブ!]OP1\(01) [μ's] 僕らは今のなかで.wav
D:\music-store02\◇[μ's]No brand girls[ラブライブ!]挿入歌\(01) [μ's] No brand girls.wav
D:\music-store02\◇[μ's]No brand girls[ラブライブ!]挿入歌\(02) [μ's] START-DASH!!.wav
D:\music-store02\◇[μ's]Snow halation[ラブライブ!]挿入歌\(01) [μ’s] Snow halation.wav
D:\music-store02\◇[μ's]Snow halation[ラブライブ!]挿入歌\(02) [μ’s] baby maybe 恋のボタン.wav

 (5)テキストエディタでドライブ指定「D:」を「M:」に修正する
    (ここでは KWrite を使用する)

 (6)[編集(E)]=>[置換(R)]=>Find:[D:    ]を入力

 (7)[編集(E)]=>[置換(R)]=>置換(L):[M:    ]を
    入力

 (8)[すべて置換(A)]で一括変換する

 (9)[ファイル(F)]=>[保存(S)]でプレイリストを更新する

 (10)foobar2000を起動して[File]=>[Load playlist]で修正したプレ
    イリストをLoad(読込み)する

 この段階で(1)新規プレイリストを作成する、(2)保存したプレイリストのドライブ指定を修正して Load(読込み)する、までの対応方法を記しています。外部のブロックデバイス(USB接続のHDD、USBメモリーなど)を接続して、OS を再起動するとデバイス番号の割当てが変更されますので、上記の方法で現状のドライブ指定を確認したら、(3)Configure Wine(winecfg)を起動して、[ドライブの設定]でドライブを追加する、を実行しておくと確実です。以下にその方法を記しておきます。

 (1)KDE Plasma 5(デスクトップ環境)のアプリケーションラン
    チャーから Configure Wine を起動する

      [アプリケーションランチャー]=>[Wine]=>
      [Configure Wine]

   ※ [Configure Wine]が存在しない場合は

      $ winecfg [Enter] もしくは
      $ wine winecfg  [Enter] を実行します

 (2)現状のドライブ指定「M:」を追加する

    [Wine設定]=>[ドライブ]タブ=>[追加]=ドライブレター
    を選択[M:]=>[OK]ボタンをクリック

 (3)パス(P)[例 /mnt/sdb1]を追記する
    ※ [参照(B)]ボタンで音声ファイルの保存先を指定する

 (4)[適用]ボタン=>[OK]ボタンをクリックしてパネルを閉じる

 当然のことですが、マウントポイント(例 /mnt/sdb1)を作成して、アクセス権を設定すること、/etc/fstab にマウントさせるブロックデバイス(UUID など)とその条件(マウントポイントやファイルシステムなど)を記述することが必要です。ブロックデバイスが自動的に /media/ 以下にマウントされる場合は[参照(B)]ボタンで音声ファイルの保存先を設定します。これで再生可能になりますが、外部のブロックデバイス(外付け HDD など)を接続したり、切り離したりすれば、OS を再起動する度にプレイリストのドライブ指定が無効になることは覚えておいてください。

 サウンドストリームに対して、リアルタイムの音声処理を加えなければ、foobar2000 Ver.1.6、Ver.2.0以降などの新しいバージョンで音切れが発生する頻度は低くなりましたが、最新の安定版 foobar2000 v2.24[x86 32-bit](Windows 版)でも再生中に[Library]=>[Configure]=>[Playback]=>[Output]=>[Device]を開くと【Please select a valid output device】というダイアログが表示されて、音声出力デバイスの表示が空白になります。したがって、再生中に音声出力デバイスを変更することはできません。一部の音声出力デバイスが表示されない場合は foobar2000[x86 32-bit](Windows 版)を再起動して初期化してください。

 ※ WASAPI output support(コンポーネント)をインストールすると
   WASAPI[push]モードが有効になります

 ※ WineHQ(ワイン)で WASAPI[event]モードは動作しません


tayori 『遠雷』 artwork by ajita


       tayori Official Site https://tayori.bitfan.id
            @ajita https://x.com/ajimita

       tayori … raku、tazuneru、isui の3人組ユニット


 ここからは旧環境の Ubuntu Studio 22.04.5 LTS + PulseAudio(オーディオサーバー)で WineHQ[Stable branch]+ foobar2000[x86 32-bit](Windows 版)から音声出力することを前提に話を進めます。

 foobar2000 は拡張性が高く、ALSA(Advanced Linux Sound Architecture、Linux のカーネルコンポーネント)、PulseAudio(オーディオサーバー)など、複数ある Linux の音声出力経路を選択できる柔軟性もあります。

 音声出力デバイスに[WASAPI(push):Out default]を指定すると、foobar2000の DSP プラグイン(SoX Resampler mod2など)を使用するのではなく、PulseAudioからOSにインストールされた SoX Resampler を呼び出してアップサンプルすることもできます。

 ただし、この方法は「音切れ」が頻発するため、動作を安定させるのが大変です。筆者は WineHQ 9.0[Stable branch]+ foobar2000 v2.2[x86 32-bit](Windows 版)にアップデートして以降、ようやく「音切れ」の発生をある程度、抑制できるセッティングを見出したくらいですから、覚悟して取り組む必要があります。

 ※ Ubuntu Studio 24.04.3 LTS + pipewire-pulse(オーディオサーバー)環境で 音声出力デバイスに[WASAPI(push):Out default]を指定すると、これまでの苦労は何だったのか?と落胆するくらい安定動作します

 通常は音声出力デバイスを直接指定します。

 WineHQ 9.0[Stable branch]+ foobar2000[x86 32-bit](Windows版)+ PulseAudio(オーディオサーバー)環境では、[WASAPI(push):Out default]に設定するとPulseAudio 出力になりますが、[WASAPI(push):Out VOLUME CONTROLLR - USB Audio]のように、音声出力デバイスを指定すると ALSA 出力になります。

 したがって、PulseAudio(オーディオサーバー)でアップサンプルする設定になっていたとしても、それとは無関係に音声出力デバイスに対して、ストレートにサウンドストリームが受け渡されます。

 ALSA 出力で「音切れ」は発生しません。この安定感が ALSA 出力(=デバイス直結)の強みです。WineHQ(ワイン)+ foobar2000[x86 32-bit](Windows版)+ PulseAudio(オーディオサーバー)環境の最大のメリットは、[PulseAudio出力]、[ALSA出力]、[JACK出力]の選択ができる点にあります。


 foobar2000[x86 32-bit](Windows 版)のプレイリストの作成方法や運用管理は直感的で分かりやすく、デフォルトで.mkv形式の動画ファイルの音声トラックを再生できる汎用性の高さも重宝します。

 foobar2000 は音質を考慮せず、ロジカル(logical)に開発されているそうですが、中庸で色付けの少ないサウンドを出力します。Linux ネイティブの音楽再生プレーヤーと比較すると、リアリティを誇張するダイレクト感はありませんが、小音量時のクリアーで精緻な音場は WineHQ[Stable branch]+ foobar2000[x86 32-bit](Windows 版)ならではの美点です。

 しかしながら、WineHQ[Stable branch]の Latest Rating で[Gold]認定を得ているのは、Ver.0.8.x、Ver.1.0などの旧バージョン、[Platinum]認定を得ているのは、Ver.1.6.0、Ver.1.6.7のみであり、動作を保証するWineHQ[Stable branch]のバージョンもピンポイントで限定されている点に注意してください。

 筆者はUbuntu Studio 24.04.3 LTS + pipewire-pulse(オーディオサーバー)環境では、WineHQ 10.0[Stable branch]+ foobar2000_v2.25[x86 32-bit](Windows 版)以降を運用していますが、過去には安定版[Ver.2.0]、開発版[Ver.2.1_preview 以降]ともにプレイリストの一部の曲が不正(Unknown exception)で再生できなくなるマイナーバージョンがありました。

 プレイリストの不正(Unknown exception)は英語環境で開発されるプログラムに特有の問題(ロケール、文字コードの不整合)でしょう。例えば、国産ソフトのTuneBrowser Ver.5.6.1.1780[64-bit]では、リスト表示が一部豆腐(□)に文字化けしても正常に再生できます(現行バージョンはTuneBrowser Ver.5.8.x)。

 CPU の動作クロックを固定するのは高音質再生の定石ですが、foobar2000.exe、WASAPIHost64 のプロセスを別個の CPU コアに割り当てるテクニックもあります。これにより雑味のないスッキリとした空間描写になり、やや細身の造形感ながら、ディテールの再現性も向上します。ただし、再生中でないと設定が変更できませんので、筆者はプレイリストの1曲目を再生中にスクリプトを実行して、これ以外の必要な設定変更と合わせてモードチェンジします。

 以下は参考例ですが、Ubuntu Studio 22.04.5 LTS + PulseAudio(オーディオサーバー)の環境で WASAPI[push]モードで再生することが条件です。Ubuntu Studio 24.04.3 LTS + pipewire-pulse(オーディオサーバー)で同じことをしないでください。

 4行目の設定を非力なマシンで実行すると高負荷になり過ぎて、「音切れ」は避けられません。まずは以下の設定で試してみて、折を見て4行目のコメントアウト(#)を取り除き、フルで実行してみるのが良いでしょう。7行目はサウンドストリームの状態を表示させるもので、出力経路やサンプルレートの確認ができるように、ハードウェア環境に合わせた設定をしておくと便利です。もちろん、以下のシェルスクリプトに実行権限を与えることを忘れないでください。

 $ chmod 777 ./foobar01.sh [Enter]

  ※ foobar01.sh はシェルスクリプトのファイル名(ファイル名は任意)

 #!/bin/bash
 # foobar2000 初期設定
 sudo chrt -f -p 99 `pgrep -f WASAPIHost64`
 #sudo chrt -f -p 99 `pgrep -f foobar2000.exe`
 taskset -c -p 1 `pgrep -f WASAPIHost64`
 taskset -c -p 0 `pgrep -f foobar2000.exe`
 cat /proc/asound/card0/pcm0p/sub0/hw_params
 exit 0

 7行目の cat /proc/asound/card0/pcm0p/sub0/hw_params の記述はハードウェア環境に合わせて書換えてください(省略可)。

 6行目の taskset -c -p 0 `pgrep -f foobar2000.exe`を有効にすると1コアにfoobar2000.exe のプロセスが割り当てられますが、CPU 使用率は Intel Core 2 Quad Q8400 で 98.0%〜99.3% に張り付きます(コアの温度は 64 度〜66 度くらい)。コメントアウトして負荷を分散した方が動作は安定しますが、音質はそれなりです。

 理想的な CPU はシングルコアですが、Intel Core 2 Quad よりもコア数が少ない Core 2 Duo の方が音質は優れており、動作クロックは固定されていた方が高音質になります。Intel Turbo Boost Technology(インテル ターボ・ブースト・テクノロジー)に対応した Intel Core i5、i7、i9 プロセッサーなどを使用する場合は cpufrequtils パッケージを使用するなどして CPU 周波数スケーリングを無効化、動作クロックを静的に固定します。

 クライアントサーバーシステムの Music Player Daemon(MPD)で再生中の CPU 温度は 50 度くらいで安定しますから、WineHQ[Stable branch]+ foobar2000[32-bit]は高負荷に見合うだけの高音質化を実現できているのか、評価が分かれるところでしょう。CPU 温度の監視は lm-sensors パッケージで対応できます。ターミナルで watch sensors を実行すると2秒間隔で最新の CPU 温度を知らせてくれます。

 $ sudo apt install lm-sensors [Enter] ※ lm-sensors パッケージの
                      インストール

 $ watch sensors [Enter]  ※ ターミナル内で表示される

(1)PC1(米国メーカー製) Intel Core 2 Quad Q8400(2.66 GHz)

Every 2.0s: sensors ####: Sat Jul 20 19:39:16 2024

radeon-pci-0100
Adapter: PCI adapter
temp1: +72.0°C   ※ 温度が高いのは Small Form Factor(SFF)で排気
            が難しいからです。”窒息ケース” ですが、サイドパ
coretemp-isa-0000   ネルを外すと8度下がります
Adapter: ISA adapter
Core 0: +55.0°C (high = +74.0°C, crit = +100.0°C)
Core 1: +46.0°C (high = +74.0°C, crit = +100.0°C)
Core 2: +50.0°C (high = +74.0°C, crit = +100.0°C)
Core 3: +50.0°C (high = +74.0°C, crit = +100.0°C)


(2)PC2(日本メーカー製) Intel Core i5-3470(3.20GHz)

Every 2.0s: sensors #####: Fri Nov 1 13:12:51 2024

coretemp-isa-0000
Adapter: ISA adapter
Package id 0: +34.0°C (high = +85.0°C, crit = +105.0°C)
Core 0: +34.0°C (high = +85.0°C, crit = +105.0°C)
Core 1: +24.0°C (high = +85.0°C, crit = +105.0°C)
Core 2: +32.0°C (high = +85.0°C, crit = +105.0°C)
Core 3: +27.0°C (high = +85.0°C, crit = +105.0°C)

radeon-pci-0100
Adapter: PCI adapter
temp1: +37.0°C (crit = +120.0°C, hyst = +90.0°C)

  ※ SFF ながら低い温度で安定しています


いいなと思ったら応援しよう!