2017年10月17日火曜日

mpv player mpv.conf 2年育てた設定ファイル vaapi/vdpau

神々は細部に宿る::AMD RADEON R7 360 にやさしいmpv.conf

mpv player mpv.conf 2.5年育てた設定ファイルを公開してみます。前からしようと思っていたんですが、説明かくのがめんどくさいのでそのままにしておくと3年たっても役にたてそうにないので。よって、以下説明なしでそのまま載せます。あしからず。

intel,nvidia に冷たいんじゃなくて、持ってないだけです。ただRADEONは両方対応していますので。VLCもハードウェアアクセラレーションは使えますし、smplayer もフロントエンドなので使えるわけですが、私はVLCは基本的にデフォルトにしています。マニアックな設定をするのは、mpv だけです。以下、mpv(2017年10月 git)を念頭にしています。

MAC OS X でもほとんど共通でいけると思いますが、実機がないのでわかりません。
  • vdpau/vaapi(intel,nvidia,amd対応)ほんの一部書き換え必要な局面も。
  • 中間フレーム生成(AMD fluid motion video には遠く及ばない)
  • vdpauのしつこいまでのチューニング結果(意味があるとみなしたもののみ掲載)
  • HRTF(頭部伝達関数 Head-Related Transfer Function)対応。サラウンドソース5.1chソース等を2.0ヘッドフォン用にミックスする)も楽しめる無駄さ加減(追加定義要す)
  • しつこいまでのOSD設定、但し自分的には優雅(音声チャネルの状態やフォーマット、コマ落ちなどを監視できるOSD設定が切替できる)
  • その他もりだくさんだが過剰な入れ子にならないように配慮。
  • 特定ファイル群はディレクトリ単位で個別設定で再生するという方針

4kでの描画を基本にしています。これにくわえて、コンテンツ毎の追加mpv.conf を読み込ませて制御しています。そのうち解説でも。AMD RADEON Rなんちゃらの人はそのまま何も考えずに使えると思います。

魂は細部に宿る::mpvの使い方


#プロファイル切替しながら使う
mpv --profile=vdpauRS video.mkv

※前提知識::
  • NVIDIA vdpau
  • Intel vaapi
  • AMD vdpau,vaapi 共に対応
  • GPUが対応していない形式はHWアクセラレーションは働きません(当然)。
    例) RADEON R7 360 は、youtube nativeな VP9はソフトウェアデコードです。
    H.264でも、hi10には対応していません。このあたりはvdpauinfo で確認できます。

#ターミナルでの例
[基本形]
mpv --profile=vdpauRS video.mkv 以下ビデオファイル名青色は省略
[応用]

mpv --profile=vdpau     vdpauでhwdec 
mpv --profile=vdpauRS   vdpauでリサンプル 
mpv --profile=vdpauRSEX vdpauてんこ盛り

mpv --profile=vaapi     vaapiでhwdec
mpv --profile=vaapiRS   vaapiでリサンプル 
mpv --profile=vaapiRSEX vaapiてんこ盛り

mpv --profile=nodec     hwdecなし
mpv --profile=nodecRS   hwdecなしでリサンプル 
mpv --profile=nodecRSEX hwdecなしでてんこ盛り

以下の具体ファイルの1行目のみ書き換えることで任意固定にできます。nodec(ハードウェアデコードなし、つまりソフトウェアデコード)にしています。


#当方の、R7 360に限っていえば、vaapi を使うことはもはやないです。調子がいいのはvdpauなので。1年ほど同一ファイル群で比較してきました。

ターミナルを前提にしているわけではなく、プロファイル切替は右クリックコマンドで拡張するなりすれば、マウスで完全オペレーションできます。自身はそうしています。Zeniyを併用したりもしています。

# ~/.config/mpv/mpv.conf

mpvのVersionでいえば、0.01前までにはほぼ追随していますが漏れ、重複、冗長があります。mpvの開発はとてもアグレッシブでいろいろ変わっていくのでキャッチアップしていくのはけっこう大変です。みていて楽しいですけれど。きちんと整理されてはいませんが膨大な時間をかけて検証した結果なので。同じ道を通るのは時間の無駄ですから。
お気づきの点などがあればぜひ教えてください。

たとえば
intelGPUは、vaapiなので、vdpauのブロックを削除すればいいです。
nvidiaGPUは、vdpauなので、vaapiのブロックを削除すればいいです。
amdGPUは、両方に対応しますので、そのままでいです。
mesaを使わないほうがよい結果を生むことも多いです。CPU負荷は高まりますがいまどきのCPUの方には誤差にしか感じないかと思います。CPUメーターでは違いが確かにでますけれど。

#ハードウェアアクセラレーションのデコードととっても大切なビデオ出力選択
以下の断面ではhwdecが次のようになっています。
hwdec=vdpau-copy
hwdec=vaapi-copy
それを
hwdec=vdpau
hwdec=vaapi

にしてみるなり、試行錯誤してみてください。環境によっては違いがあるかもしれません。

voについて(特に大事です)

vo=gpu
または明示的に、
vo=vdpau
vo=vaapi
のようにします。当方の環境では顕著な差がでます。無指定でもいいかと思います。安定して動作することがだいじなので。

その他voは過去の遺物であったり、画面描画とは別用途であったりしますので描画性能向上目的で試しても仕方ありません。
openglは、gpu という指定に変更になりました。

#mpv.confある日の実物


    profile=nodec #デフォルトはハードウェアデコードなし。
#
#ハードウェアアクセラレーションの分岐
#OSDの連携考慮してこうなった。

[nodec]
    osd-msg2='M2${osd-sym-cc}[vo:${current-vo}]【nodec】hwdec:${hwdec-current}\n${estimated-display-fps}=(${vsync-ratio}×${container-fps}) - ${frame-drop-count} - ${mistimed-frame-count} - ${time-pos} - v${volume}'
    profile=_hwdec_no
    window-scale=1.50
[nodecRS]
    osd-msg2='M2${osd-sym-cc}[vo:${current-vo}]【nodecRS】hwdec:${hwdec-current}\n${estimated-display-fps}=(${vsync-ratio}×${container-fps}) - ${frame-drop-count} - ${mistimed-frame-count} - ${time-pos} - v${volume}'
    profile=_hwdec_no
    profile=_resample
[nodecRSEX]
    osd-msg2='M2${osd-sym-cc}[vo:${current-vo}]【nodecRSEX】hwdec:${hwdec-current}\n${estimated-display-fps}=(${vsync-ratio}×${container-fps}) - ${frame-drop-count} - ${mistimed-frame-count} - ${time-pos} - v${volume}'
    profile=_hwdec_no
    profile=_resample
    profile=_extra
[vdpau]
    osd-msg2='M2${osd-sym-cc}[vo:${current-vo}]【vdpau】hwdec:${hwdec-current}\n${estimated-display-fps}=(${vsync-ratio}×${container-fps}) - ${frame-drop-count} - ${mistimed-frame-count} - ${time-pos} - v${volume}'
    profile=_hwdec_vdpau
[vdpauRS]
    osd-msg2='M2${osd-sym-cc}[vo:${current-vo}]【vdpauRS】hwdec:${hwdec-current}\n${estimated-display-fps}=(${vsync-ratio}×${container-fps}) - ${frame-drop-count} - ${mistimed-frame-count} - ${time-pos} - v${volume}'
    profile=_hwdec_vdpau
    profile=_resample
[vdpauRSEX]
    osd-msg2='M2${osd-sym-cc}[vo:${current-vo}]【vdpauRSEX】hwdec:${hwdec-current}\n${estimated-display-fps}=(${vsync-ratio}×${container-fps}) - ${frame-drop-count} - ${mistimed-frame-count} - ${time-pos} - v${volume}'
    profile=_hwdec_vdpau
    profile=_resample
    profile=_extra
[vdpauEX]
    osd-msg2='M2${osd-sym-cc}[vo:${current-vo}]【vdpauEX】hwdec:${hwdec-current}\n${estimated-display-fps}=(${vsync-ratio}×${container-fps}) - ${frame-drop-count} - ${mistimed-frame-count} - ${time-pos} - v${volume}'
    profile=_hwdec_vdpau
    profile=_extra
[vdpauRSEXHRTF]
    osd-msg2='M2${osd-sym-cc}[vo:${current-vo}]【vdpauRSEX】hwdec:${hwdec-current}\n${estimated-display-fps}=(${vsync-ratio}×${container-fps}) - ${frame-drop-count} - ${mistimed-frame-count} - ${time-pos} - v${volume}'
    profile=_hwdec_vdpau
    profile=_resample
    profile=_extra
    profile=_hrtf
[vaapi]
    osd-msg2='M2${osd-sym-cc}[vo:${current-vo}]【vaapi】hwdec:${hwdec-current}\n${estimated-display-fps}=(${vsync-ratio}×${container-fps}) - ${frame-drop-count} - ${mistimed-frame-count} - ${time-pos} - v${volume}'
    profile=_hwdec_vaapi
[vaapiRS]
    osd-msg2='M2${osd-sym-cc}[vo:${current-vo}]【vaapiRS】hwdec:${hwdec-current}\n${estimated-display-fps}=(${vsync-ratio}×${container-fps}) - ${frame-drop-count} - ${mistimed-frame-count} - ${time-pos} - v${volume}'
    profile=_hwdec_vaapi
    profile=_resample
[vaapiRSEX]
    osd-msg2='M2${osd-sym-cc}[vo:${current-vo}]【vaapiRSEX】hwdec:${hwdec-current}\n${estimated-display-fps}=(${vsync-ratio}×${container-fps}) - ${frame-drop-count} - ${mistimed-frame-count} - ${time-pos} - v${volume}'
    profile=_hwdec_vaapi
    profile=_resample
    profile=_extra
[vaapiEX]
    osd-msg2='M2${osd-sym-cc}[vo:${current-vo}]【vaapiEX】hwdec:${hwdec-current}\n${estimated-display-fps}=(${vsync-ratio}×${container-fps}) - ${frame-drop-count} - ${mistimed-frame-count} - ${time-pos} - v${volume}'
    profile=_hwdec_vaapi
    profile=_extra

#
#ハードウェアアクセラレーションの個別設定
#
[_hwdec_vdpau]
    vo=vdpau
    hwdec=vdpau-copy
    vo-vdpau-deint=3 #-4 max 4
    vo-vdpau-hqscaling=1 # vdpauinfo | grep -P 'HIGH QUALITY SCALING.*y' そのレベル!!
    vo-vdpau-denoise=0.00 # -1 1 やりすぎは画質を落とす
    vo-vdpau-sharpen=0.00 #15 #0.10 #0.66 #-1 - 1 やりすぎは画質を落とす
    vo-vdpau-queuetime-fs=100 #50
    vo-vdpau-fps=60.00 # 60.00 つまるところ、デフォ0が一番。?!
    vo-vdpau-force-yuv=yes
[_hwdec_vaapi]
    vo=vaapi
    hwdec=vaapi-copy
    vo-vaapi-scaled-osd=yes #            Flag (default: no)
    vo-vaapi-scaling=fast #nla #hq  #default fast hq nla (default: default) なくてもいい。
[_hwdec_no]
#    vo=vdpau #
    hwdec=no

#
#インターポレーション、リサンプルその他の定義
#

[_resample]
    interpolation=yes #ドライバの出来重要
    video-sync=display-resample  #video-sync=display-resample-vdrop
    scale=oversample
    tscale=oversample
    display-fps=60
[_extra] #実質不要
        scale=ewa_lanczossharp
        cscale=ewa_lanczossoft
        dscale=mitchell
        dither-depth=auto
        correct-downscaling=yes
        sigmoid-upscaling=yes
        deband=yes
        scale-radius=8 #10.0
        cscale-radius=6 #3.0
        cscale-antiring=1
        scale-antiring=1
[_bigCache]
    cache=2048000          #2GB    #cache=1024000          #1GB    #

#
#HRTF(頭部伝達関数 Head-Related Transfer Function)対応
#
[_hrtf]
vd-lavc-threads=4
ad-lavc-downmix=no
af=lavfi=[sofalizer=sofa=/home/ehhen/mpv/sofa/ClubFritz6.sofa:gain=6]

#
#GUIその他
#

[builtin-pseudo-gui]
    terminal=no
    force-window=yes
    idle=once
[pseudo-gui]
    player-operation-mode=pseudo-gui
    idle=once
[default]
    player-operation-mode=pseudo-gui
    idle=once
    terminal=yes
    title='${filename}'
    cache=512000 ###cache=768000            #0.75GB #cache=512000           #0.50GB
    demuxer-readahead-secs=30 #60
    cache-secs=120 #750 #1500        #cache-secs=3000
    cache-seek-min=5000 #1000 #<500kbytes> wait
    msg-time=yes
    msg-module=yes #デフォルト no                          # prepend module name to log messages
    msg-color=yes #デフォルト yes                          # color log messages on terminal
    cursor-autohide=250        #1000 autohide the curser after 1s
    stop-screensaver=yes       #特に設定しなくてもいい。yes 旧バージョンではバグっていた。
    term-osd-bar=yes #デフォルト no                        # display a progress bar on the terminal
    term-playing-msg='' #${estimated-display-fps} / ${container-fps} frame/sec'
    osc=yes  # スクリーンコントロール マウスでだらだらyes。ターミナル本位がどうか?! そのうち確認。忙しい。キーボード操作が排除されるわけではないのでどうでもいい。コンソールをアクティブにしているとキーが違うことに気がついた。そのうち整理する。
#
#OSD しつこい設定
#
    osd-fractions=yes         #Flag (default: no) 分数
    osd-border-size=1         #MAX 10
    osd-duration=5000 #ずっと2500だった    #Integer (0 to 3600000) (default: 1000)# hide the osd after x ms
    osd-scale-by-window=yes #no #yes osd-font-size= と連関する。
    osd-level=1 #2 #通常0?!  1にしてそれをあえて空にするのだ!!      #3デバッグに便利 0123 4段階(osd display) --osd-status-msg on interaction
osd-playing-msg='${filename}\n【vo:${current-vo}】\nhwdec:${hwdec-current}\n\n'
osd-msg3='M3${osd-sym-cc}【vo:${current-vo}】hwdec:${hwdec-current}\n${estimated-display-fps}=(${vsync-ratio}×${container-fps}) - ${frame-drop-count} -  ${mistimed-frame-count}\n${time-pos}- ${=time-pos} - v${volume}\nsync:${total-avsync-change} - delayed=${vo-delayed-frame-count}\n${width}×${height} - ${display-names}\n ${filename}\n ${track-list}\n${video-codec}\n${audio-codec}\n${audio-channels}\n'
    osd-font='源ノ明朝 Heavy' #'源ノ明朝 Medium' #'源ノ明朝 Light'
    osd-font-size=30 #48 64 #72 #36
    osd-color='#FFFFFFFF' #'#FFFFFFFF'           # ARGB format くっきりで。osd-color='#FF000000'
    osd-back-color='#22000230' # 55でもいいか。ffでベタ    '#00FFFFFF' OSD透明カラー
    osd-border-color='#ff000000'    # ARGB format     〃    #本来 '#FF000000'    # ARGB format     〃
    osd-border-size=1.5 # 3-10 いまいち??
    osd-shadow-offset=1 #1             # pixel width for osd text and progress bar
    osd-shadow-color='#FF000000'
    osd-align-y=bottom #bottom #top OSD縦位置
    osd-align-x=right #center  #right
    osd-spacing=0       #デフォルト0 10
    osd-bar-align-y=0          # progress bar y alignment (-1 上, 0 中, 1 下)
    osd-border-size=0.1        # size for osd text and progress bar
    osd-bar-h=0.1              #MAX50   height of osd bar 劇細は美しい。
    osd-bar-w=90               #MAX100  width of 目安バーなので視野にかんたんに入る程度でいい。

 
<500kbytes>#
#オーディオ::設定していますが無指定で基本的にはOKです。

#

    ao=alsa #pulse #alsa #デフォルト(pulse)でいい。#音 #ao=jack #jackにも対応。#    ao=pulse #
    volume-max=200                  # maximum volume in %, everything above 100 results in amplification
    volume=100 #90                       # default volume, 100 = unchanged
    audio-file-auto=fuzzy           # external audio doesn't has to match the file name exactly to autoload
    audio-channels=auto #2.0 #audio-channels=2.1 #
    audio-pitch-correction=yes      # automatically insert scaletempo when playing with higher speed
    af=scaletempo #
    audio-wait-open=2 #あえて遅延させる

#
#
色加減、字幕、再生スピードなど
#
    contrast=3
    brightness=-5 #-2
    saturation=8 #彩度
    gamma=-6 #-6 #10 #16
    sub-visibility=no #字幕
    speed=1.00
    correct-pts=yes        #fpsを動画に合わせる。たぶん不要。
[default]
    force-window=yes #GUI を常時表示
    keep-open=no    # keep the player open when a file's end is reached


#
#その他有能
#
    use-filedir-conf=yes #再生ファイルディレクトリのmpv.conf。とても有能
    pause=no # クリックで再生開始=自動再生しない。自動再生の場合=no/コメントアウト。
    stop-playback-on-init-failure=yes #ほんまかいな!! 壊滅的な場合じゃないかと。
    framedrop=vo #結構落ちる.選択としてはこれが適切!!!!!私の結論
<500kbytes>
#
#スクリーンショット
#
    screenshot-format=png
    screenshot-template=~/Pictures/mpv/%F-%P
#
#youtube 4k/UHDかつPCが速い場合
#
<500kbytes>    hls-bitrate=max    # use max quality for HLS streams
    ytdl-raw-options=format="(bestvideo+bestaudio[height>=?2160]/best)[protocol!=rtmp]" #4K/UHD
#
#その他 主に、1920x1200/16:10用

#

    video-align-y=0.9 #6 #0.8
    panscan=0.6 # 0.4 19:10。#パン w e 意外に便利
#
#
#input.conf篇 続く
#
#
#
# #
#

#
#

e2fsck: Get a newer version of e2fsck!


自分はmakeしましたが、debianパッケージはあるようです。
launchpad では適切なものを見つけられませんでした。
以下は使っていません。

e2fsprogs_1.43.6-1_amd64.deb

北アメリカ
ftp.us.debian.org/debian
http.us.debian.org/debian
ftp.debian.org/debian
ftp.ca.debian.org/debian
ftp.mx.debian.org/debian

当方make, on 16.04LTS 2017-10-17最新ソースから。



e2fsprogs_1.43.6-1_amd64.deb
ダウンロード


オリジナルサイト
https://sourceforge.net/projects/e2fsprogs/?source=typ_redirect
週あたりダウンロード数がすごいですね。
 5.0 Stars (9)
 11,960 Downloads (This Week)
 Last Update: 



2017年10月5日木曜日

AT-HA90USB 過去のレビューを上書き オーディオテクニカ USBヘッドホンアンプ

過去レビューを上書きしてみます。オーディオテクニカ AT-HA90USB

https://www.audio-technica.co.jp/atj/show_model.php?modelId=2324
※NTT-Xで安価販売されているせいか、急激にアクセスが増えてきました。それで若干補筆しました。ぶっちゃけ、親しい友達でかつWindows10ユーザーになら、「安いので買ってみたら」。その他OSなら、「うまくいくといいね」ってかんじでしょうか。たぶんここまでみている人はディレンマに陥っているのかもしれませんね。幸運を!! だめな時はだめ。

Windows10篇::処分をやめました。これは使える。


結論::USBヘッドホンアンプ  AT-HA90USB オーディオテクニカの「今」
僭越ながら、過去のレビューを上書きしたいと思います。書いたひとたちが悪いわけではなくて、OSのサポートの問題がほとんどであって、価格コムやamazonやその他でボロクソな評価です。が、必ずその日付を確認してみてください。悪意があって書かれているわけではないと思います。ただとんでもない勘違いを書かれている方も一部にいらっしゃる気がしますが、それはそっとしておきましょう。


Windows10に限っていえば、少なくとも2017年春のクリエイターズアップデートを適用した状態では、Windows10Pro、Windows10home(共に64BIT版)で、当方では完全に動作するようになっています。手持ちのUSB-DACの中でももっともクリアだと思います。私が適用したのは8月です。適当前はひどかったので箱にいれて保存していたのです。めったにWindowsは起動しないので。現時点(2017/11/06)では次のWindowsレベルまでアップデートをあてた状態でテストしてみました。良好でした。

ちょっとした経緯::お蔵入りを再開封してみて

(略)その後別のUSB-DACを買ってみたのでテストがてら再開封したところ、おそらくWindows10では最高の結果が得られれていることに気がついたわけです。
もともと、希望小売価格 ¥45,000(税抜)です。HA40USB、AT-HA70USB より高価で、後年リリースされた製品で、サンプリングレートなども上です。良いオペアンプなども使っているようですね(NJR社製オペアンプ(MUSES))。だたいろいろ問題があったがそれは過去のものであると当方では思います。

さて話は戻ります。

AT-HA90USBとPCを接続していない状態で、サポートで提供されているdriverを導入します。これできちんとはいるのですが、念のためdriverがどう組み込まれているか絵で示します。

Linux(ubuntu/mint)では、USB Audio Class 2.0 で動作していると思われます。それでUSB Audio Class 2.0対応を果たしたWindows10では専用driverは不要なのでは??と考えたのですが、USBAudioClass2.sys(うろ覚え::Linux上で書いています)で動作していません。違います。このマイクロソフトdriverが先につかむと動きません。なんとなく笑えるところ。

当方の環境における結論からいえば、HA90USB.SYSは必須(2012年)です。また、計4つのマイクロソフトの関連driverが組み込まれていると思いますが日付は2017/07/27だったと思います。

カジュアルユーザーな当方としてはいちおう高級機にあたるDACなので、お蔵入りしている方はぜひ繋いでみてください。うまくいくかもしれませんね。もったいないです。


流通在庫はあるようですが、生産中止ですし、正式にはWindows8.1までの対応です。
ユーザーは誰も悪くなかった。driver提供と改定というメーカーがすべきちゃんとした努力を怠った。結果、「オーディオテクニカは最初から壊れているものを売るな」とか声がでるのも不思議ではないし猜疑心が生まれるのも仕方ない。結果、妙な情報も含めて流通したみたいなことかと、あくまで私見ですが。

余談::この製品のことではありませんが、サポートできないのなら 商品企画から断罪されるべきかなと思います。ODM先のコントロールができないのなら、メーカーとはいえない。単なる輸入販売業は、個人でもできる。品質管理は壊れたものを売ることではないのです。ま、いいか。

Linux篇とMAC OSX

MACはありませんのでわかりません。お持ちの方がいれば教えてくださいませ。(USB Audio Class 2.0で動作するんじゃないかと思うんですが)

Linuxは無論サポート外です。ノーマルCD-DA/44.1khz、問題ないです。(ubuntu17.10 mint 16.04LTS)


ハイレゾソースに関してはあまりうまくないです。
まともに聴こえるっぽい方法を研究結果として示しておきます。
jack除外です。しても無駄だったので。

  • alsa で排他的っぽい使い方をする。このブログを検索
  • audaciousまたはDeadbeef両方で、resample して、48k/24bit相当に落とす。


ほかによい、または最適な方法があればぜひとも教えてください。私は「ない!!」と結論づけました。手持ちでは、このDAC以外96kDAC/192kDAC/48KDACがありますが、全てまともです。99.8%はLinux上なので、けっきょく別のDAC、かな、と。笑)



2017年9月20日水曜日

排他的にサウンドデバイスを使う::カンタンな設定の準備

WindowsでいうところのWASAPIみたいなDAC利用方法/ALSA・排他的


ともだちに説明するのがめんどくさいので、こういうスクリプトを書けばいいのかなと思って用意してみました。

WindowsでいうところのWASAPIっぽい(夕立(艦隊これくしょん))Linuxでのサウンド・ソースの使い方といってもいいのがこの設定ではないかと思います。

誤解全開で換言すればサウンド資源独り占めモードですね。WASAPI/ASIOと違いアプリケーションの音量コントロールなどに制限がありません。おおざっぱにですよ。完全排他的じゃないので言葉のアヤです。あくまで、おおざっぱにっぽい。

わりと簡便設定なのでオトクだと決めました。困っている場合は、騙されたとおもって一度どうぞ。


まとめるとUSB-DACなどでノイズ、プチ等が気になる場合は

  1. まず、この排他利用 をしてみる。
  2. それでもだめなら低遅延カーネルを導入する。
  3. それでもだめなら、jackを導入する。

という3段階で考えるといいと思います。その次はドライバが悪いか、デバイスが悪いということであきらめましょう。ノーマルレゾリューション(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にはありますが。いい方法があれば教えてください。ぺこり。特にラズパイで。

余談おわり。

新規にターミナル(端末)を開きます。ubuntu系は以下を同時押し。CTRL+ALT+T

#/etc/modprobe.conf USB-Audioを低遅延にする呪文。わりと重要かも。自分には必須!!

$ cat /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スクリプトでどうぞ。これでいいかと思います。かたっぱしから試すのも手ですが。笑)


#次のコマンドを発行して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

コマンド時点、上から順に。
  • 背面ミニジャック・オンボード
  • S/PDIF 光出力角・オンボード
  • エレコム EHP-AHR192のandroid用USB-DAC
  • オーディオテクニカHA90USBのUSB-DAC analog
  • オーディオテクニカHA90USBのUSB-DAC#1 S/PDIF 
ハードウェア的にはどれも (192k/24bit)です。HDMI/Display Portのサウンドのみ殺してあります。モニター音声を殺してあるということ。

作業とデバイスが「USB-DACの設定である」と決まっている場合は次で絞り込めます。
aplay -L | perl -nle 's|^(.*)$|\n$1|g if m/DEV=\d/ ; print' | perl -nle '$/=""; print if /without any/ and /USB Audio/'

これ(端末)を開いたまま、アプリの設定をしてみましょう。

#現在小生が排他的に設定しているアプリ
mpv ちょっとややこしい。以下参照
audacious
deadbeef
#アプリ別設定方法 MPVのみ 
mpvもデフォルトはPulseです。
マニュアルで調べながら設定して以下で動かしています。 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

具体例::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

※ところで、私は提督ではない。

2017年9月15日金曜日

エレコム ハイレゾDACをLinuxで使う

USB-DACをLinuxで使う、嘘つきパーフェクトマニュアル

嘘つき!! 挿すだけで使えるのだから、パーフェクトも何もあったもんじゃないです。とはいえ、だめなのはありました。これで自分では4つ目のUSB-DACです。

今回導入してみたのは、エレコム http://www.elecom.co.jp/ さんの写真と本体です。ハイレゾDACをDesktopLinuxで使います。もちろんノートPCでもいいでしょう。

1.本体 1100円ぐらい(定価の5%ぐらいで投げ売り中)
2.USB変換アダプター 150-300円ぐらい(PCとこれを接続)が必要。
3.基本スマホ用でandroidならそのまま使います。
4.予算に余裕があれば、ハイレゾ対応ヘッドフォン/イヤホンをゲット
5.(4万キロヘルツなんて聴こえへんのやからどうでもええやん)
6.どうやら相性問題が大量発生しているのかもしれません。それが安価な理由。
7.ちゃんと動けば音質は良い(悪くない)です。

欠点は、ボリュームがおおざっぱ。やっぱり持ち歩くにはうざったい。家PC用がいいのではないか、と思います。 ただしバッテリ消費が激しいのでPC用途が美味しいです。バッテリーのヘタっているスマホの人は使わないほうがいいかも。

※試しにamazon fire 7(ほぼ新同) でも使えるので、miniDLNAをブラウズして再生テストをしていいたところ、4時間ぐらいつなだままで、ときたま再生、10曲ぐらいでバッテリー12%。要因はいろいろありそうですがバッテリ食いであることはたしかそう。また、amazonらしくいつもギリギリの低スペックを狙うfireですが、96k/24bitまでは再生できますが、192k/24bitは再生できませんでした(fire純正プレイヤーです。3rdパーティでは再生できます)。もちろん個人の意見ですが、amazonの端末にコスパ最高、礼賛は間違っていないレビューですが、そもそも遅すぎるのだから安くて当たり前。みごとな商品づくりとは思いますけれど。

メモ::

Class2.0 対応の恩恵ですね。そこだけみるとMAC OSでも、Windows10の2017年春以降のCreatersUpdateがあたっていれば動くはずと推定できます。

追記::ふつうにW10で動作しました。パーフェクト。

事前の学習(趣味なのでこの節飛ばしていいです)

新規にターミナル(端末)を開きます。ubuntu系は以下を同時押し。CTRL+ALT+T
#
もともと
cat /proc/asound/modules
では、snd_hda_intel
#認識とハイレゾ設定::サウンドデバイスまったくない状態で
●サウンドデバイスまったくない状態でHDMI disable手順を踏んでリブートし、かつUSB DACを電源onすると

cat /proc/asound/modules

1 snd_usb_audio


という具合に、USB DACが自動認識されます。他のデバイスはありません
(ダミー出力状態から、サウンドデバイスが認識される、と)。

●サンプルレート、ビット深度の設定 
Linux Hi-Res Audio USB-DACなどの設定」で設定しておいてください。
この設定はいつでもできますから、事前にしておく必要はありません。
また、pulseaudio用です。

USBに挿します。使います。


micro-USBとふつうのUSB変換アダプタ経由でPCのUSB端子に、USB-DACを挿し込む。300円ぐらい。
cat /proc/asound/modules
 0 snd_hda_intel
 1 snd_usb_audio

勝ち!!

#ubuntu/Mintで認識されて音が出ている状態/Linux Mint18.2 Cinnamon
cat /proc/asound/cards
 0 [Generic        ]: HDA-Intel - HD-Audio Generic
                      HD-Audio Generic at 0xfeb00000 irq 16
 1 [series         ]: USB-Audio - EHP-AHR192 series
                      ELECOM CO., LTD. EHP-AHR192
series at usb-0000:05:00.0-1.3, high speed

https://poor-user.blogspot.jp/search?q=sinks
192k/24bit ハイレゾを再生する。 ビットレートが確認できる。Pulseの場合です。期待どおりの出力です。

pactl list short sinks
0    alsa_output.pci-0000_00_14.2.analog-surround-51    module-alsa-card.c    s32le 6ch 192000Hz    SUSPENDED
1    alsa_output.usb-ELECOM_CO.__LTD._EHP-AHR192_series-01.analog-stereo    module-alsa-card.c    s24le 2ch 192000Hz    RUNNING

ここで音が割れていないか、ノイズがはいらないかなどをおおざっぱに確認します。
そこまでいっておおむねパーフェクト(これから本格セッテイング開始::Pulseを使わない)。
#


2017年9月11日月曜日

gnu grep のススメ、Perl互換オプションのススメ::あえて2017年に叫ぶ

gnu grep が使える環境なら、素直にgnu grep を使おう


新規にターミナル(端末)を開きます。ubuntu系は以下を同時押し。CTRL+ALT+T

#PCRE(Perl正規表現互換オプション)

grep -P '検索文字列'

エクスペリメンタルな位置づけも終わっていますので安心です。サブセットかと思っていたら、(否定|肯定)(先読み|後読み)も使えますよ。グッドです。

gnu grepが使えない環境では、pcre2grep/pcregrep がありますが、あんまり使いませんね。

おおむね、grepの -Pオプション(大文字です。小文字にしても怒られるだけなのですぐに気が付きます)でだいじょうぶ。

私の場合、ほとんど日本語処理目的なのですが自分の用途では困ったことがないですね。

#Perlのワンライナーの一例

perl -ne "print if /検索文字列/" ファイル

grepの色分け機能などを実装するのはたいへんですから、素直にGNU Grepがよいです。


MACはGNU grepではないらしいので、pcregrep/pcre2grepが良いのではないでしょうか。
私はカジュアルなLinux使いなので、深いことは気にしません。笑) pcre2grepで統一してもいいかもしれません。

方針としては、できるだけ簡素に、学習することなく、空気のように端末を扱うです(努力だけはしたくない)。だから、正規表現はPerl互換の正規表現だけが原則です。プロの方は瞬時に脳みそ切替しながら使うのかもしれませんけれど。

#perl 5 互換の正規表現を利用する grep ユーティリティ pcregrepをいれたい場合。ubuntu/mint

導入する
sudo apt install pcregrep

削除する
sudo apt purge pcregrep
...

きょう現在、当方にはいっているgrep

pcre2grep --version
pcre2grep version 10.21 2016-01-12

pcregrep --version
pcregrep version 8.38 2015-11-23

zpcregrep --version
zgrep (gzip) 1.6
Copyright (C) 2010-2013 Free Software Foundation, Inc.


grep --version
grep (GNU grep) 2.25

Copyright (C) 2016 Free Software Foundation, Inc.



#複数行にわたるgrepの例::Perlのワンライナーのほうが楽だよねといわれそうだけど。

perlのワンライナーのほうが楽だけど、grepでもちょろいので知っていて損はないという例。

こういうファイル。9行。
cat -n delete.txt
     1 会いたい
     2 藍Ⅰ姶
     3 藍とと藍
     4 藍藍
     5 藍藍青
     6 群青
     7 藍藍
     8 藍と
     9 藍マイ。


マッチした範囲に色。色がなければ無能。
$ grep -Pz  '愛.*(\n|.)*終' delete.txt
会いたい
藍Ⅰ姶
藍と愛と藍
藍藍
藍藍青
群青
藍藍
藍と終
藍マイ。

※zオプションで行単位処理でなくなり、 
(\n|.)で改行またはなんかの1文字にマッチさせる。
perlでいえば、セパレータ変えての/smオプションってことですね。


範囲切り出し::オススメなo オプション、有能
$ grep -Pzo  '愛.*(\n|.)*終' delete.txt
愛と藍
藍藍
藍藍青
群青
藍藍
藍と終

含まれている行を表示
$ pcre2grep -M  '愛.*(\n|.)*終' delete.txt 
藍と愛と藍
藍藍
藍藍青
群青
藍藍
藍と終と

$ pcregrep -M  '愛.*(\n|.)*終' delete.txt 
藍と愛と藍
藍藍
藍藍青
群青
藍藍
藍と終と

マニュアルで詳細は確認してください。

pcre2grepの動作をperlでやるとすれば、範囲を抜き出すかんじ。

perl -nle  'print if /愛/ ... /終/' delete.txt


PCRE2grepとPCREgrepの違い


前者が新しい10系列以降になります。後者はメンテされていますが8系列です。ubuntu標準では8系列です。自分がどうやってpcre2grepをいれているのかは思い出せません。コンパイルしたのでしょうね。

PCREプロジェクトはケンブリッジ大学発祥のようです。
Cf. http://www.pcre.org PCRE - Perl Compatible Regular Expressions

2017年9月9日土曜日

tesseract-ocr OCR on Ubuntu/Linux Mint

新規にターミナル(端末)を開きます。ubuntu系は以下を同時押し。CTRL+ALT+T

1行または3行でインストール完了です。

tesseract-ocr 最新をいれてみる場合、4系列α版

#gitに追随 安定版ではありません。 ただし訓練辞書などが最新です。
sudo add-apt-repository ppa:alex-p/tesseract-ocr
sudo apt update

#導入してみる。メンテナーバージョンなら、ここから。上の2行は通常スルーしてください。

sudo apt install tesseract-ocr tesseract-ocr-jpn

日本語と英語対応版として導入されます。

tesseract-ocr 使ってみる。

日英混在。オライリー本のスキャンでテスト
tesseract 画像.jpg 333 -l eng+jpn
#表示してみる。わりといいかんじ。
cat 333.txt

当方の印象としては、3.04 よりは4.0がデフォルトでかなり認識が良いです。日本語訓練辞書も新しいです。GUIが必要な場合は、このテッサラクト(テッセラクト)をエンジンにするフロントエンドがふたつはあったような。インストールを除けばMACでも同じことですね。

⚠ライブラリなどファイル配置がことなるためLinuxとMACではそこに注意。

当方ではだいじなものはここにインストールされました。MACは違うと思う(たぶん)。
/usr/share/tesseract-ocr/4.00/tessdata/