WindowsでいうところのWASAPIみたいなDAC利用方法
/ALSA・排他的・あくまで気分的な話(ubuntuだけ) 2020夏改稿
Direct hardware device without any conversions
ともだちに説明するのがめんどくさいので、こういうスクリプトを書けばいいのかなと思って用意してみました。
WindowsでいうところのWASAPIっぽい(夕立(艦隊これくしょん))Linuxでのサウンド・ソースの使い方といってもいいのがこの設定ではないかと思います。
誤解全開で換言すればサウンド資源独り占めモードですね。WASAPI/ASIOと違いアプリケーションの音量コントロールなどに制限がありません。おおざっぱにですよ。完全排他的じゃないので言葉のあやです。あくまで、大雑把にっぽい。きちんと専有させるには、JACKです。
わりと簡便設定なのでオトクだと決めました。困っている場合は、騙されたとおもって一度どうぞ。
Linuxで音楽再生環境を詰めていく. in my case.
まとめるとUSB-DACなどでノイズ、プチ等が気になる場合は
- まず、この排他風味を利用 をしてみる。
- それでもだめなら、低遅延カーネルを導入する。
- それでもだめなら、JACKを導入する。
という3段階で考えるといいと思います。いきなりJACKでもいいでしょう。
それでだめなら、ドライバが悪いか、デバイスが悪いということで素直にあきらめましょう。
次の記事は参考にしてみてください。
BitPerfect ::jack::realTimeConfigQuickScanリアルタイム処理の設定の確認
BitPerfect のために::リアルタイム処理の妨げになっている設定をあぶり出す realTimeConfigQuickScan (Perlスクリプト)は、リアルタイムっぽい処理の妨げになっている設定をあぶり出します。jackに限らずですが。いわゆるBitPerfec...
ノーマルレゾリューション(CD-DA 44.1khz DVD48k)レベルではトラブルことはないと思いますが、問題はですね!! ハイレゾフォーマットです。48k/24bitまではノートラブルでも96k/24bit以上になるとおかしいなんてことがおきます。深入りしても意味はない気がするので、だめな場合は機材を変えたほうがいいかも。
カーネルそのものを変えてみたり、ディストロ自体を最新にしてみるなどはお約束。というのは、ALSAやPulseの設定は散々やりましたが上で述べた1-2-3を試すのがもっとも楽であるというのが私の結論だからです。2年ぐらい無駄にした。笑) CPUが速ければ問題なくなるのかもしれませんね。セレロン並だから。
ついでにいうと効果がまったくなかったのは、アプリの優先度を最優先にしてみるです。これはうまくなかった。CPUパフォーマンス最大固定でも意味はなかった。
このマシンでW10を起動して鳴らしてみると問題ないのでLinuxの中の問題なのでしょうね。私の守備範囲を超えています。
ほんとうにフォーマット通りに再生されているのか
余談です。それではあなたのUSB-DACはほんとうに192k/24bitをサンプリングしていますか?? 実は48k以上をカットして再生しているのではないですか?? どうせ聴こえない音ですが。DACによってはLEDランプで確実に処理レベルがわかるものがありますが、そうでないなら「確信」を持つことはできないのでは?? sinkをそのまま内部録音して、スペクトラムはみることができますね。あるいはS/PDIFで別の機械にを通して別のマシンで録音してスペクトラムをみると確実ですね。
そもそも一般人が192kに対応したマイク録音環境はもってないですよね?? 民放はないけれどNHKにはありますが。いい方法があれば教えてください。ぺこり。特にラズパイで。※執筆時点では高価な代物でしたが、今では安価な中華でもありますね。時代の流れは速い。
また、スマホで。例えばGalaxy A7。デフォルトで192k/24bitであっても、48K以上は全部カットして再生します。スマホだからいいし、どうせ聴こえないのだからそれが正解なのかもしれませんね。
16bitにダウンコンバートしてます。
余談おわり。
/etc/modprobe.conf USB-Audioを低遅延にする呪文。わりと重要かも。自分には必須!!
新規にターミナル(端末)を開きます。ubuntu系は以下を同時押し。CTRL+ALT+T
$ cat /etc/modprobe.conf ↲
options snd-usb-audio nrpacks=1
デフォルトではない?!と思うのでこの1行だけのファイルを作る。太字大文字にしたのは私の気分です。
sudo gedit /etc/modprobe.conf ↲ でペタ、保存。
options snd-usb-audio nrpacks=1
デフォルトではない?!と思うのでこの1行だけのファイルを作る。太字大文字にしたのは私の気分です。
sudo gedit /etc/modprobe.conf ↲ でペタ、保存。
http://alsa.opensrc.org/Usb-audio#Tuning_USB_devices_for_minimal_latencies
効果的だと思うので必要に応じて試してみてください。だめなら戻せばいいのです。DACに限らずUSBのDTM機器の場合に有効みたいですよ。
どれを選んだらいいのかわからないとかアプリ毎の選択インターフェイスが違ってめんどくさいという人のために。以下のPerlスクリプトでどうぞ。これでいいかと思います。かたっぱしから試すのも手ですが。笑)
Direct hardware device without any conversions 設定のための事前準備
コマンドを発行してhwではじまる行のいずれかを適宜選びます。(黄色をそのままコピーしてターミナルで実行します。)
aplay -L | perl -nle 's|^(.*)$|\n$1|g if m/DEV=\d/ ; print' | perl -nle '$/=""; print if /without any/ ' ↲
以下のような出力が得られます。眺めても楽しくないので、さくっと青いところに注目しましょう。
hw:CARD=Generic,DEV=0
HD-Audio Generic, ALC892 Analog
Direct hardware device without any conversions
hw:CARD=Generic,DEV=1
HD-Audio Generic, ALC892 Digital
Direct hardware device without any conversions
hw:CARD=series,DEV=0
EHP-AHR192 series, USB Audio
Direct hardware device without any conversions
hw:CARD=HA90USB,DEV=0
HA90USB, USB Audio
Direct hardware device without any conversions
hw:CARD=HA90USB,DEV=1
HA90USB, USB Audio #1
Direct hardware device without any conversions
コマンド時点、上から順に。
作業とデバイスが「USB-DACの設定である」と決まっている場合は次で絞り込めます。
aplay -L | perl -nle 's|^(.*)$|\n$1|g if m/DEV=\d/ ; print' | perl -nle '$/=""; print if /without any/ and /USB Audio/' ↲
これ(端末)を開いたまま、アプリの設定をしてみましょう。
以下のような出力が得られます。眺めても楽しくないので、さくっと青いところに注目しましょう。
hw:CARD=Generic,DEV=0
HD-Audio Generic, ALC892 Analog
Direct hardware device without any conversions
hw:CARD=Generic,DEV=1
HD-Audio Generic, ALC892 Digital
Direct hardware device without any conversions
hw:CARD=series,DEV=0
EHP-AHR192 series, USB Audio
Direct hardware device without any conversions
hw:CARD=HA90USB,DEV=0
HA90USB, USB Audio
Direct hardware device without any conversions
hw:CARD=HA90USB,DEV=1
HA90USB, USB Audio #1
Direct hardware device without any conversions
コマンド時点、上から順に。
- 背面ミニジャック・オンボード
- S/PDIF 光出力角・オンボード
- エレコム EHP-AHR192のandroid用USB-DAC
- オーディオテクニカHA90USBのUSB-DAC analog
- オーディオテクニカHA90USBのUSB-DAC#1 S/PDIF
作業とデバイスが「USB-DACの設定である」と決まっている場合は次で絞り込めます。
aplay -L | perl -nle 's|^(.*)$|\n$1|g if m/DEV=\d/ ; print' | perl -nle '$/=""; print if /without any/ and /USB Audio/' ↲
これ(端末)を開いたまま、アプリの設定をしてみましょう。
HDMI/DisplayPortを除外して、JACK等音質重視再生の場合に設定しそうなデバイスのみ列記する。
少し改訂。
$ aplay -L | perl -nle 's|^(.*)$|\n$1|g if m/DEV=\d/ ; print' | perl -nle '$/=""; /HDMI/ or print if /without any/'
hw:CARD=Generic,DEV=0
HD-Audio Generic, ALCS1200A Analog
Direct hardware device without any conversions
hw:CARD=Generic,DEV=1
HD-Audio Generic, ALCS1200A Digital
Direct hardware device without any conversions
hw:CARD=HA90USB,DEV=0
HA90USB, USB Audio
Direct hardware device without any conversions
hw:CARD=HA90USB,DEV=1
HA90USB, USB Audio #1
Direct hardware device without any conversions
$ aplay -L | perl -nle 's|^(.*)$|\n$1|g if m/DEV=\d/ ; print' | perl -nle '$/=""; /HDMI/ or print if /without any/'
hw:CARD=Generic,DEV=0
HD-Audio Generic, ALCS1200A Analog
Direct hardware device without any conversions
hw:CARD=Generic,DEV=1
HD-Audio Generic, ALCS1200A Digital
Direct hardware device without any conversions
hw:CARD=HA90USB,DEV=0
HA90USB, USB Audio
Direct hardware device without any conversions
hw:CARD=HA90USB,DEV=1
HA90USB, USB Audio #1
Direct hardware device without any conversions
上から、ライン出力3.5ミリ、SPDIF光、オーディオ・テクニカ ハイレゾDAC
Realtekの4桁型番です。安物DACより4桁型番ならマザーボード搭載のほうがマシですね。AsusROGシリーズです。
現在小生が排他的に設定しているアプリ
mpv ちょっとだけややこしい。以下参照
audacious
deadbeef
audacious
deadbeef
アプリ別設定方法 ターミナルでのmpv
mpvもデフォルトはPulseです。
マニュアルで調べながら設定して以下で動かしています。 1行目だけでいいとは思いますが、学習成果として3行。全体適用ではなく個別ディレクトリ単位のコンテナのみに適用するようにしています。デフォルトにすると使いにくいためです。
audio-device=alsa/hw:CARD=HA90USB,DEV=0 # HA90USB
audio-fallback-to-null=yes #フォールバック、繋ぎ忘れていても再生のフリをする。
audio-exclusive=yes #わがままモード,有能かも?!
マニュアルで調べながら設定して以下で動かしています。 1行目だけでいいとは思いますが、学習成果として3行。全体適用ではなく個別ディレクトリ単位のコンテナのみに適用するようにしています。デフォルトにすると使いにくいためです。
audio-device=alsa/hw:CARD=HA90USB,DEV=0 # HA90USB
audio-fallback-to-null=yes #フォールバック、繋ぎ忘れていても再生のフリをする。
audio-exclusive=yes #わがままモード,有能かも?!
16.04LTSですが、mpv/ffmpeg 共にgitです。アグレッシブにオプションが消えたりします。バージョンが違うと無効だったりしますのでご注意ください。
mpv 0.27.0-amended (C) 2000-2017 mpv/MPlayer/mplayer2 projects
built on Thu Sep 14 07:49:49 UTC 2017
ffmpeg library versions:
libavutil 55.74.100
libavcodec 57.105.100
libavformat 57.82.100
libswscale 4.7.103
libavfilter 6.105.100
libswresample 2.8.100
ffmpeg version: git-2017-09-12-6ce4a63
2020-07-29
mpv git-2020-04-17-a09c769 Copyright © 2000-2020 mpv/MPlayer/mplayer2 projects
built on Sun Apr 19 20:30:24 UTC 2020
FFmpeg library versions:
libavutil 56.42.102
libavcodec 58.80.100
libavformat 58.42.100
libswscale 5.6.101
libavfilter 7.79.100
libswresample 3.6.100
FFmpeg version: git-2020-04-18-4457f75
具体例::DeaDBeef 音楽プレイヤー おすすめ
aplay -Lの基礎演習
検証がGUIではかったるいというのであれば次のようにもできます。https://www.alsa-project.org/main/index.php/Asoundrc
aplay -Dplughw:CARD=HA90USB,DEV=0 test.wav ↲
再生中 WAVE 'test.wav' : Signed 24 bit Little Endian in 3bytes, レート 96000 Hz, ステレオ
aplay -Dhw:CARD=HA90USB,DEV=0 test.wav ↲
※ところで、私は提督ではない。再生中 WAVE 'test.wav' : Signed 24 bit Little Endian in 3bytes, レート 96000 Hz, ステレオ
aplay -Dhw:CARD=HA90USB,DEV=0 test.wav ↲
特に関係深い記事
How to install Real-Time kernel in Manjaro Linux and ubuntu.
BitPerfect ::jack::realTimeConfigQuickScanリアルタイム処理の設定の確認
…… 続きを目次付きで読む [全文] »
JACK導入・3分クッキング(2020年8月3日改訂) (17.10beta1追記+18.04LTS alpha2/beta)+
manjaro + antergos + ubuntu 18.04LTS and 20.04LTS + Linux Mint 20 )
クッキ...