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

神々は細部に宿る::やさしいinput.conf mpv.conf

もっともカンタンな使い方(おせっかい)

  1. ~/.config/mpv に 以下の mpv.conf と input.conf をファイルにしてコピー
  2. 適当な動画ファイルを再生。
  3. 試しにテンキーのスラッシュ「/」を何度か押してみてください。
  4. その他機能キーは、ファイルを読んでください。インターフェイスやアイデア込で完全オリジナルです。いちおう自画自賛。

ターミナルでこうして見てもいいですよ。mpv便利ですねぇ。

$ mpv -- https://www.youtube.com/watch?v=AbEUJBnfK9U


      -- は間違いではありません。-- 2個です!! 

mpv player mpv.conf と input.conf 2.5年育てた設定ファイルふたつを公開してみます。


前からしようと思っていたんですが、説明かくのがめんどくさいのでそのままにしておくと3年たっても役にたてそうにないので。よって、以下詳しい説明なしでそのままです。考えてみると人並みのCPUに交換して、かつ、ubuntu 16.04 LTS を使うのをやめて思ったのですが、ディストロを換えるのが最適な道だったという事後談です。18.04beta1 では特に諸調整も必要なくうまく働いています。2年近く経過するとLTSも古くなる。互換性維持のためにアプリケーションによっては古いカーネルを使わざるを得ないなど、Fixedリリースもめんどうくさいことがとても多いので、軸足はローリングリリースのディストロに移して3ヶ月、いいかんじです。

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

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

4kでの描画を基本に考えています。くわえて、コンテンツ毎の追加mpv.conf を読み込ませて制御しています。そのうち解説でも。AMD RADEON Rなんちゃらの人はそのまま何も考えずに使えると思います。ぶっちゃけ他のGPU環境なら有効にならないだけでそのまま使っても実害は何もないはずなので、何も問題は起きないと思います。小さな不具合は使いながらでいいと思います。

魂は細部に宿る::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 # 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 目安バーなので視野にかんたんに入る程度でいい。


#
#オーディオ::設定していますが無指定で基本的には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 #結構落ちる.選択としてはこれが適切!!!!!私の結論

#
#スクリーンショット
#
    screenshot-format=png
    screenshot-template=~/Pictures/mpv/%F-%P
#
#youtube 4k/UHDかつPCが速い場合
#
    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篇
全キー定義名称リストアップ済み!!<<これはオススメです。 苦労したので。MAC OSXでの設定も残していますから、MACの人はそこをみてください。後ろです。

カスタマイズのお供にどうぞ。
Alt+RIGHT add video-rotate 90
Alt+LEFT add video-rotate -90
#Alt+- add video-zoom -0.25
#Alt+= add video-zoom 0.25
#Alt+j add video-pan-x -0.05
#Alt+l add video-pan-x 0.05
#Alt+i add video-pan-y 0.05
#Alt+k add video-pan-y -0.05

#################################################################

# mpv keybindings
#
# Location of user-defined bindings: ~/.config/mpv/input.conf
#
# Lines starting with # are comments. Use SHARP to assign the # key.
# Copy this file and uncomment and edit the bindings you want to change.
#
# List of commands and further details: DOCS/man/input.rst
# List of special keys: --input-keylist
# Keybindings testing mode: mpv --input-test --force-window --idle
#
# Use 'ignore' to unbind a key fully (e.g. 'ctrl+a ignore').
#
# Strings need to be quoted and escaped:
#   KEY show-text "This is a single backslash: \\ and a quote: \" !"
#
# You can use modifier-key combinations like Shift+Left or Ctrl+Alt+x with
# the modifiers Shift, Ctrl, Alt and Meta (may not work on the terminal).
#
# The default keybindings are hardcoded into the mpv binary.
# You can disable them completely with: --no-input-default-bindings

# Developer note:
# On compilation, this file is baked into the mpv binary, and all lines are
# uncommented (unless '#' is followed by a space) - thus this file defines the
# default key bindings.

# If this is enabled, treat all the following bindings as default.
#default-bindings start

#MOUSE_BTN0 ignore                      # don't do anything
#MOUSE_BTN1 ignore                      # 真ん中ボタン don't do anything
#MOUSE_BTN0_DBL cycle fullscreen        # toggle fullscreen on/off
#MOUSE_BTN2 cycle pause                 # toggle pause on/off
MOUSE_BTN3 seek 1
MOUSE_BTN4 seek -1
#MOUSE_BTN5 add volume -2
#MOUSE_BTN6 add volume 2
# MOUSE_BTN7 set window-scale 1.5
# MOUSE_BTN8 quit-watch-later

# Mouse wheels, touchpad or other input devices that have axes
# if the input devices supports precise scrolling it will also scale the
# numeric value accordingly
AXIS_UP    seek 10
AXIS_DOWN  seek -5
AXIS_LEFT  seek 3
AXIS_RIGHT seek -2

## Seek units are in seconds, but note that these are limited by keyframes
RIGHT seek  3 #5
LEFT  seek -1 #-5
UP    seek -10
DOWN  seek  10
# Do smaller, always exact (non-keyframe-limited), seeks with shift.
# Don't show them on the OSD (no-osd).
#Shift+RIGHT no-osd seek  1 exact
#Shift+LEFT  no-osd seek -1 exact
#Shift+UP    no-osd seek  5 exact
#Shift+DOWN  no-osd seek -5 exact
# Skip to previous/next subtitle (subject to some restrictions; see manpage)
#Ctrl+LEFT   no-osd sub-seek -1
#Ctrl+RIGHT  no-osd sub-seek  1
#PGUP add chapter 1                     # skip to next chapter
#PGDWN add chapter -1                   # skip to previous chapter
#Shift+PGUP seek 600
#Shift+PGDWN seek -600

[ multiply speed 0.99                # scale playback speed
] multiply speed 1.01
{ multiply speed 0.5
} multiply speed 2.0

#[ multiply speed 0.9091                # scale playback speed
#] multiply speed 1.1
#{ multiply speed 0.5
#} multiply speed 2.0


#BS set speed 1.0                       # reset speed to normal
#q quit
#Q quit-watch-later
#q {encode} quit 4
#ESC set fullscreen no
#ESC {encode} quit 4
#p cycle pause いらんな。              # toggle pause/playback mode
. frame-step                           # advance one frame and pause
, frame-back-step                      # go back by one frame and pause
#SPACE cycle pause
#> playlist-next                        # skip to next file
#ENTER playlist-next                    # skip to next file
#< playlist-prev                        # skip to previous file
O no-osd cycle_values osd-level 1 2 3 # 0    # cycle through OSD mode 有能
#o show-progress
#P show-progress
p show-progress
P show-text "${filename}"              # display filename in osd
#I show-text "${filename}"              # display filename in osd
#z add sub-delay -0.1                   # subtract 100 ms delay from subs
#x add sub-delay +0.1                   # add
#ctrl++ add audio-delay 0.100           # this changes audio/video sync
#ctrl+- add audio-delay -0.100

#9
#0
#9 add volume -2
#/ add volume -2
#0 add volume 2
#* add volume 2
#m cycle mute
#1 add contrast -1
#2 add contrast 1
#3 add brightness -1
#4 add brightness 1
#5 add gamma -1
#6 add gamma 1
#7 add saturation -1
#8 add saturation 1

#F1
#F2
#F3
#F4
F11 cycle fullscreen                     # toggle fullscreen
F12 no-osd cycle_values osd-level 1 0 # 0    # cycle through OSD mode 有能
HOME seek  -7200 #先頭フレームに飛ぶ。2時間戻る=結果的に大抵のファイルで先頭に戻ることだ。
#END
#INS
#TAB
#DEL は空きではない。

- seek -30
+ seek  30
/ no-osd cycle_values osd-level 1 2 3 0 #0    # cycle through OSD mode 有能
* cycle osd-align-y #=top bottom center

#Ctrl+KP_ENTER
#Alt+KP_ENTER
#Ctrl+Alt+KP_ENTER

KP7 add gamma 1
KP8 add volume 3
KP9 add brightness 1
KP4 seek -5
KP5 playlist-next                    # skip to next file
KP6 seek 5
KP1 add gamma -1
KP2 add volume -3
KP3 add brightness -1
KP0 no-osd cycle_values osd-level 1 2 3 #0    # cycle through OSD mode 有能
KP_DEC ab_loop

#> playlist-next                        # skip to next file
#ENTER playlist-next                    # skip to next file
#< playlist-prev                        # skip to previous file


#KP. 設定できないキー KP_DECかな。
#Alt+KP0 cycle osd-align-y #=top bottom center

#NG Alt+KP0 cycle_values osd-align-y top bottom center
#NG Alt+KP0 cycle osd-align-y top bottom #The cycle option must be a floating point number or a ratio (numerator[:/]denominator): top
#OK
#NG Alt+KP0 cycle_values osd-align-y top bottom center
#NG Alt+KP0 cycle osd-align-y 0 1
#NG Alt+KP0 osd-align-y cycle_values osd-align-y=top bottom center
#osd-level 1 2 3 #0    # cycle through OSD mode 有能


alt+KP6 playlist-next
alt+KP4 playlist-prev

KP_ENTER cycle fullscreen                     # toggle fullscreen
#KP_ENTER cycle fullscreen                     # toggle fullscreen


Alt+0 set window-scale 0.5
Alt+1 set window-scale 1.0
Alt+2 set window-scale 1.5
Alt+3 set window-scale 1.72
Alt+4 set window-scale 2.0
# toggle deinterlacer (automatically inserts or removes required filter)
#d cycle deinterlace
#r add sub-pos -1                       # move subtitles up
#t add sub-pos +1                       #                down
#v cycle sub-visibility
# stretch SSA/ASS subtitles with anamorphic videos to match historical
#V cycle ass-vsfilter-aspect-compat
# switch between applying no style overrides to SSA/ASS subtitles, and
# overriding them almost completely with the normal subtitle style
#u cycle-values ass-style-override "force" "no"
#j cycle sub                            # cycle through subtitles
#J cycle sub down                       # ...backwards
#SHARP cycle audio                      # switch audio streams [#]のこと。単語で書く。

#_ cycle video
#T cycle ontop                          # toggle video window ontop of other windows
#f cycle fullscreen                     # toggle fullscreen
#s screenshot                           # take a screenshot
#S screenshot video                     # ...without subtitles
#Ctrl+s screenshot window               # ...with subtitles and OSD, and scaled
#Alt+s screenshot each-frame            # automatically screenshot every frame
#w add panscan -0.1                     # zoom out with -panscan 0 -fs
#e add panscan +0.1                     #      in
# cycle video aspect ratios; "-1" is the container aspect
#A cycle-values video-aspect "16:9" "4:3" "2.35:1" "-1"


#POWER quit
#PLAY cycle pause
#PAUSE cycle pause
#PLAYPAUSE cycle pause
#STOP quit
#FORWARD seek 60
#REWIND seek -60
#NEXT playlist-next
#PREV playlist-prev
#VOLUME_UP add volume 2
#VOLUME_DOWN add volume -2
#MUTE cycle mute
#CLOSE_WIN quit
#CLOSE_WIN {encode} quit 4
#E cycle edition                        # next edition
#l ab_loop                              # Set/clear A-B loop points
#L cycle-values loop "inf" "no"         # toggle infinite looping
#ctrl+c quit 4

# Apple Remote section
#AR_PLAY cycle pause
#AR_PLAY_HOLD quit
#AR_CENTER cycle pause
#AR_CENTER_HOLD quit
#AR_NEXT seek 10
#AR_NEXT_HOLD seek 120
#AR_PREV seek -10
#AR_PREV_HOLD seek -120
#AR_MENU show-progress
#AR_MENU_HOLD cycle mute
#AR_VUP add volume 2
#AR_VUP_HOLD add chapter 1
#AR_VDOWN add volume -2
#AR_VDOWN_HOLD add chapter -1

# For tv://
#h cycle tv-channel -1                  # previous channel
#k cycle tv-channel +1                  # next channel

#
# Legacy bindings (may or may not be removed in the future)
#
#! add chapter -1                       # skip to previous chapter
#@ add chapter 1                        #         next

#
# Not assigned by default
# (not an exhaustive list of unbound commands)
#

# ? add sub-scale +0.1                  # increase subtitle font size
# ? add sub-scale -0.1                  # decrease subtitle font size
# ? sub-step -1                         # immediately display next subtitle
# ? sub-step +1                         #                     previous
w cycle-values window-scale 0.5 2 1   # switch between 1/2, 2x, unresized window size
# ? cycle-values window-scale 0.5 2 1   # switch between 1/2, 2x, unresized window size
# ? cycle colormatrix
# ? add audio-delay 0.100               # this changes audio/video sync
# ? add audio-delay -0.100
# ? cycle angle                         # switch DVD/Bluray angle
# ? add balance -0.1                    # adjust audio balance in favor of left
# ? add balance 0.1                     #                                  right
# ? cycle sub-forced-only               # toggle DVD forced subs
# ? cycle program                       # cycle transport stream programs
# ? stop                                # stop playback (quit or enter idle mode)


# mpv --input-keylist
#
# SPACE
# SHARP
# IDEOGRAPHIC_SPACE
# ENTER
# TAB
# BS
# DEL
# INS
# HOME
# END
# PGUP
# PGDWN
# ESC
# PRINT
# RIGHT
# LEFT
# DOWN
# UP
# F1
# F2
# F3
# F4
# F5
# F6
# F7
# F8
# F9
# F10
# F11
# F12
# KP0
# KP1
# KP2
# KP3
# KP4
# KP5
# KP6
# KP7
# KP8
# KP9
# KP_DEL
# KP_DEC
# KP_INS
# KP_ENTER
# MOUSE_BTN0
# MOUSE_BTN1
# MOUSE_BTN2
# MOUSE_BTN3
# MOUSE_BTN4
# MOUSE_BTN5
# MOUSE_BTN6
# MOUSE_BTN7
# MOUSE_BTN8
# MOUSE_BTN9
# MOUSE_BTN10
# MOUSE_BTN11
# MOUSE_BTN12
# MOUSE_BTN13
# MOUSE_BTN14
# MOUSE_BTN15
# MOUSE_BTN16
# MOUSE_BTN17
# MOUSE_BTN18
# MOUSE_BTN19
# MOUSE_BTN0_DBL
# MOUSE_BTN1_DBL
# MOUSE_BTN2_DBL
# MOUSE_BTN3_DBL
# MOUSE_BTN4_DBL
# MOUSE_BTN5_DBL
# MOUSE_BTN6_DBL
# MOUSE_BTN7_DBL
# MOUSE_BTN8_DBL
# MOUSE_BTN9_DBL
# MOUSE_BTN10_DBL
# MOUSE_BTN11_DBL
# MOUSE_BTN12_DBL
# MOUSE_BTN13_DBL
# MOUSE_BTN14_DBL
# MOUSE_BTN15_DBL
# MOUSE_BTN16_DBL
# MOUSE_BTN17_DBL
# MOUSE_BTN18_DBL
# MOUSE_BTN19_DBL
# AR_PLAY
# AR_PLAY_HOLD
# AR_CENTER
# AR_CENTER_HOLD
# AR_NEXT
# AR_NEXT_HOLD
# AR_PREV
# AR_PREV_HOLD
# AR_MENU
# AR_MENU_HOLD
# AR_VUP
# AR_VUP_HOLD
# AR_VDOWN
# AR_VDOWN_HOLD
# AXIS_UP
# AXIS_DOWN
# AXIS_LEFT
# AXIS_RIGHT
# POWER
# MENU
# PLAY
# PAUSE
# PLAYPAUSE
# STOP
# FORWARD
# REWIND
# NEXT
# PREV
# VOLUME_UP
# VOLUME_DOWN
# MUTE
# HOMEPAGE
# WWW
# MAIL
# FAVORITES
# SEARCH
# SLEEP
# CANCEL
# XF86_PAUSE
# XF86_STOP
# XF86_PREV
# XF86_NEXT
# CLOSE_WIN
# MOUSE_MOVE
# MOUSE_LEAVE
# MOUSE_ENTER
# UNMAPPED


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: 



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、かな、と。笑)



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

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


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

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 ↲

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

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

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

挿すだけで使えるのだからパーフェクトも何もあったもんじゃないです。とはいえ、だめなのはありました。これで自分では4つ目のUSB-DACです。うまく行かないケースも少なくないようなので記事にしました。入門用としてはとてもいいのではないかと思います。

今回導入してみたのは、エレコム http://www.elecom.co.jp/ さんのです。ハイレゾDACをDesktopLinuxで使います。もちろんノートPCでもいいでしょう。メーカーの想定はあくまでスマホですので、ご注意ください。

組み合わせによっては、微細なホワイトノイズっぽいものがのるかもしれません。当方では問題ないです。


1.本体 1000円台で入手できるときもあります。投稿時点、今はこんなに安くないですね。同じ形のバッファローでも中身は同じかと思います(たぶん)。運良く安いタイミングで買えました。エレコム直営店でもたまに安価に売っていました。
2.USB変換アダプター 150-400円ぐらい(単なる変換です)が必要。
3.基本スマホ用でandroidならそのまま使います。
4.予算に余裕があれば、ハイレゾ対応ヘッドフォン/イヤホンをゲット
5.(4万キロヘルツなんて聴こえへんのやからどうでもええやんとも思う)
6.どうやら相性問題が大量発生しているのかもしれません。それが安価な理由。
7.ちゃんと動けば音質は良い(悪くない)です。

欠点は、ボリュームがおおざっぱ。やっぱり持ち歩くにはうざったい。家PC用がいいのではないか、と思います。 ただしバッテリ消費が激しいのでPC用途が美味しいかもです。バッテリーのヘタっているスマホの人は出先では悲劇になりかねない心配があるので使わないほうがいいかもしれません。部品も全部Amazonで揃いました。

メモ::

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

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

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

新規にターミナル(端末)を開きます。CTRL+ALT+T
#サウンドデバイス認識(実際はAMDチップ)
もともと
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を挿し込む。150円-300円ぐらい。
cat /proc/asound/modules ↲
 0 snd_hda_intel
 1 snd_usb_audio

勝ち!! これで音がでるはずです。認識されていない場合は、USBポートを変える、リブートするなどをお試しください。

#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を使わないJACKなどを試行していきます)。

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

tesseract-ocr OCR on Ubuntu/Linux Mint/Manjaro

manjaro Linux篇

pamacでtesseract-ocr を検索、以下を導入。



以上、導入が完了した状態です。ふたつ選択すればライブラリ絡みなどが必要であれば依存関係で導入してくれます。もちろんターミナルでもよいです。

ubuntu/mint 篇


新規にターミナル(端末)を開きます。CTRL+ALT+T

ubuntu::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/

VirtualBox for Linux インストール

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


#16.04 /mint 18 の場合
以下のファイルに1行書き足す。
sudo gedit /etc/apt/sources.list

deb http://download.virtualbox.org/virtualbox/debian xenial contrib

bash


wget -q https://www.virtualbox.org/download/oracle_vbox_2016.asc -O- | sudo apt-key add - wget -q https://www.virtualbox.org/download/oracle_vbox.asc -O- | sudo apt-key add -

sudo apt-get update
sudo apt-get upgrade

sudo apt-get install virtualbox-5.1 
 

Python2用ではなく、Python3のIDLEを導入する

ubuntu16.04.*


新規にターミナル(端末)を開きます。ubuntu系は以下を同時押し。CTRL+ALT+T
#
 sudo apt install idle3 ↲
#起動 3が必要。
idle3 ↲

#以上です。たぶんこれでいいと思います。

ATOM の日本語入力が変=確定前の文字が見えない。1.19はだめ。

確定前の文字が見えないという不具合

http://ppa.launchpad.net/webupd8team/atom/ubuntu xenial/main amd64 atom amd64 1.19.2-1~webupd8~1 [94.9 MB] 23時43分 2017/08/21

治りました。

以下、記録のために残します。


8月8日公開の1.19かな。

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

深く考えずに前のバージョン1.18 に戻しましょう。
次を実行。たぶんこれでOK。AMD64。

$ sudo apt purge atom #まずatomを削除しておく。


$ wget https://launchpad.net/~webupd8team/+archive/ubuntu/atom/+files/atom_1.18.0-1~webupd8~0_amd64.deb && sudo dpkg -i atom_1.18.0-1~webupd8~0_amd64.deb

#しばらくこれATOMのアップデートは無視する運用にしておきましょう。Windowsでも同じみたいですよ。


たぶん、cjkvの人たちは全滅。
事前の7月下旬にバグリポートがあがっていますね。いつか治るのかな??

PPAで入れているのなら、PPAを無効にしておくとよいです。

/etc/apt/..../webupd8team-atom-xenial.list

# deb http://ppa.launchpad.net/webupd8team/atom/ubuntu xenial main
# deb-src http://ppa.launchpad.net/webupd8team/atom/ubuntu xenial main


コメントアウトしておけば、新版に気づきようがないので更新されません。

wine 2.0 stabale インストール

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

#mint18.2では6行です。2分程度で完結します。

wget -nc https://dl.winehq.org/wine-builds/Release.key
sudo apt-key add Release.key
 

sudo apt-add-repository https://dl.winehq.org/wine-builds/ubuntu/
sudo apt-add-repository 'deb https://dl.winehq.org/wine-builds/ubuntu/ xenial main'
 

sudo apt-get update
sudo apt-get install --install-recommends winehq-stable

WineHQの通りです。mint18.2に導入してみました。

https://wiki.winehq.org/Ubuntu 

Launchapad のWine PPAはもう廃棄されます。
利用しないようにしましょう。

A2DP Bluetooth headphone のスムースなシンク切り替え

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

#スムースなシンク切り替え器の使い方

~/bin に、以下のテキストをスクリプトとして保存。1行だけオレンジを書き換える。

多数BTヘッドフォンを保有している場合は、ヘッドフォン毎にスクリプトを作ると管理が楽ちん。たとえば、 ~/bin/sonyMDRxxx とか、ELECOMxxx とか。MACを書き換えるのを忘れないでください。


利用タイミング

BTヘッドフォンの電源をいれてだいたい10秒後ぐらい。2秒ぐらいでもいいけれど。


使い方:
  • ターミナルで、スクリプト名を叩く。
  • ファイルマネージャーでクリックする。
  • 右クリックメニューに割り当てる。(おまけ実例後半)

お好きなように。

備考:なぜ必要か
GUIのサウンドでは表示はデジタルのままでも、実際はBTに切り替わっているというバグなんかが当方の環境では起きるので、 マウス操作するよりコマンドで確実に! という方針なのです。見た目ではわからない。Cinnamonです。最新版でも同様。Blueberryっていまいちなのかな?!

特に困ってない人は何もしなくてもいいのです。

#bt_smooth_sink(do name as you like it.)

#! /bin/bash
#@ A2DP 接続をほぼ確実にする。SINK切り替え限定の簡易版。Zish
# 接続+SINK切り替え版からのサブセットで抜き出しました。
#2012-2017
#
#書き換え   ↓ your own a2dp headphone, you must rewrite below line !!
A2DPMAC=1A:A5:C6:D7:F2:CC
#A2DPMAC=2nd
#
#
#
#
BTSINKS=${A2DPMAC//:/_}

#接続そのものが難儀な場合は次を有効にしたほうがよい。

    bt-device --connect $A2DPMAC




#echo ②デフォルトシンクを $A2DPMAC Bluetooth に
    pactl list short sinks | grep $BTSINKS | perl -pe 's/^(\d.*?)\tbluez_.*$/pacmd set-default-sink $1/' | sh
#echo ③ BluetoothプロファイルをA2DPに切り替える
    #pactl set-card-profile bluez_card.$BTSINKS off
    pactl set-card-profile bluez_card.$BTSINKS a2dp_sink
    pactl set-sink-volume  bluez_sink.$BTSINKS 115%
#echo ④ pactl set-default-sink bluez_sink.$BTSINKS 前後関係チェック
    pactl set-default-sink bluez_sink.$BTSINKS



#echo check bluez_sink="$BTSINKS"
if  pactl list short sinks | grep -E 'bluez_sink' ; then
#    echo ⦿ ブルートゥース A2DP + Hi-Fi 接続済み ⦿
#    pactl list short sinks | grep bluez_sink | grep -P --color=auto '(hdmi)|(analog)|(iec\d*)|(bluez_sink)|\s(\d\d\d\d.*?)(?=Hz)|surround.*?\d\s|RUNNING|\s\d(?=ch)|(?!=s)(\d\d)(?=le)'
    #無論、BTSINK限定なので無効であればA2DPから音出しできない。A2DP接続前提。定位チェックではないです
    echo "女性の声で「左、右、真ん中」. A2DP(ヘッドフォン)から聞こえればたぶん成功。"
        paplay -d bluez_sink.$BTSINKS /usr/share/sounds/alsa/Front_Left.wav
        paplay -d bluez_sink.$BTSINKS /usr/share/sounds/alsa/Front_Right.wav
        paplay -d bluez_sink.$BTSINKS /usr/share/sounds/alsa/Front_Center.wav
else
    echo "bluez_sink $BTSINKS ' がありません。BT/A2DP $BTSINKS は接続されていません。"
fi
echo EXIT


exit
Zish
A2DP 接続を確実にする。SINK切り替え簡易版(サブセット)。


#おまけ::Cinnamon/nemoアクションの右クリックメニューの実例:サブセットじゃないほう。

[Nemo Action]
Name=サウンド出力切替 Bluetooth SONY
Comment=sinks SONY


Exec=bash -c "sinks sony ; cinnamon-settings sound ;"
#Exec=bash -c "sonymdr ;"
Icon-Name=deadbeef
Selection=none
Extensions=none
EscapeSpaces=true
Quote=double
Active=true

Zsh :: Zsh_ hitory convert to UTF-8 Zshで最も扱いづらい点が解決しました。

Zshの最大の弱点を克服する

自分にとってのZshの最大の弱点は、ヒストリーファイルが取り扱いにくいことでした。アスキー以外の文字列がアレなので。日本語のファイル名がアレでコレでソレ。眺めてみるとわかると思います。

以下で、それが解決できます。
使い方:新規にターミナル(端末)を開きます。CTRL+ALT+T
#
zshhist.py を ~/bin にコピー、実行属性も。
#ヘルプ
zshhist.py を ~/bin にコピーします。実行属性もつけるといいです。 
zshhist.py -h
#引数は2つ シンプル

     export         export zsh history file to UTF-8 text.
     import         transform UTF-8 text to zsh history format.

出力結果を > でファイル(エディタで編集)にするなり、パイプでコマンド処理するなりするといいと思います。

エディターより、編集したいパターンをPerl/awkなどのテキスト処理に強いコマンドで処理したほうが再利用もあるだろうし合理的かとも思います。

#例示1)エクスポートする。utf-8形式で日本語の文字化けのない扱いやすいファイルにする

zshhist.py  export

ががーと .zsh_history の"変な文字"になった日本語が綺麗になります。

#UTF-8にして、エディターで開いて(必要なら編集保存)
この作業している最中は、bashに切り替えておいたほうがいいかも。履歴が変わっていく。

例示1) utf-8形式で日本語の文字化けのない扱いやすいファイルにする。


zshhist.py export > /tmp/zsh_utf-8.txt && atom /tmp/zsh_utf-8.txt

次いで、import してみればいいかと。
オリジナルヒストリーファイルは事前保存しておいてください。


例示2) export した日本語ファイル名などの入ったファイルをエディターなりperl なりで編集したとする。編集後ファイルを書き戻してヒストリーとして使う。インポートする。


例示2) export した日本語ファイル名などの入ったファイルをエディターなりperl なりで編集したとする。例示1のコマンド形式。

編集後ファイル: zsh_utf-8_20170617_1835.txt

zsh形式にする。
zshhist.py import < zsh_utf-8_20170617_1835.txt > .zsh_history.new (Z)

このNewを既存の .zsh_history をバックアップの上、上書きする。

例示3) bash からの移行、あるいは、bash と zsh のヒストリーをマージする。bashからzshへの移行にも使えるし、両方使っていてたまにマージしたい場合も有能。




bash to zsh のハードルはZshのUTF-8問題だけなので、それさえクリアできれば自力であとの処理はできる人は大半だと思いますが、git に限らずbash to zsh は多数ありますが、以下に示すツールがいいかと。



流れはこれだけ。
Bash history to Zsh history  = zsh 形式のbash_history (B)と
上の(Z)をマージすればいいです。マージしたものをzsh形式にします。しました。

手順
1) utf-8の(B)+(Z)を作る (BZが完成)
2) (BZ)を.zsh ヒストリ形式にコンバート

zshhist.py import < (BZ).txt > .zsh_history (BZ_hitory)

3) この(BZ_hitory=いつものzshヒストリーです。日本語バケバケです。それがOK。読めたらおかしいのです) を本番の ~/.zsh_history に上書きして完成。


バックアップは事前にとってください。


生ソース:gist(github)のリンクが自動で貼られるはずです。この埋め込みしたのはじめてなので。





このツールを使えば、bash のヒストリーを一括編集加工して、Zshにもっていったりが楽ですね。英語だけに限ればZsh-Bash間のツールは多く見つかりました。ここのところ(日本語などの部分)が難しかったんです。はい。

Emacsな方は「Emacs で Zsh の ヒストリファイルを閲覧・編集する」が参考になると思います。





perl モジュールの導入。ubuntu mint のインストール候補

どうも壊れかけなのか、Synaptic/パッケージマネジャーの反応が悪いので検索がうまくいきません。 あるはずのものが出てこない。

そこで、cpanコマンドでなんかうまくいかず、ソースをもってきて、makeしたら最後にコケる。
cpanコマンドでは時々いれているので不思議です。
いらっとしたので、リストを取得していれてみました。 Term::UI; なんですけどね。
なんでだろう。cpanで説明を読んで試してみたくなったら、aptでリストにないか調べて、コマンドで導入するというのがめんどうがなくていいです。


手順は次の通りです。慣れるとカンタンなはずです。
  1. いれたいモジュールを思いつく。誰かの頁の紹介や、CPAN、perlmonkなどで。
  2. apt list でインストール候補に存在しないか調べてみる。
    著名PerlModuleは全部あると思っていい(と思います)。
  3. あれば、apt install で導入する。

    なければcpanコマンドかソース落としてきてmake。


debian/ubuntuのメンテナーが選んでいる候補なら安心して使える気がしますので、あまり使われてなさそうなのには私のような素人は手を出さないほうがいいのかもしれません。ただ、場合によってはパッケージングのアップデートが年単位で遅れることもありますので、その時は自力ですね。

新規にターミナル(端末)を開きます。ubuntu系は以下を同時押し。CTRL+ALT+T
#
#試しに打ってみる。  55318行でした。
apt list
#perl モジュールのリストを調べる。
apt list | grep -oP '^lib..*?-..*?-perl'

3228(パッケージ)モジュール。このマッチパターンで提供されているものとします。違うことはないでしょうが。
#数え方
apt list | grep -oP '^lib..*?-..*?-perl' | wc
#utf8-all という名前を知っているのでそれをいれます。
#インストールコマンド文字列を生成する。 納得したらぺったんして実行。
apt list | grep -oP '^lib..*?-..*?-perl' | grep utf8-all | perl -pe 's|^|sudo apt install |'

#インストールまで実行する。 (sudo に付き注意)
apt list | grep -oP '^lib..*?-..*?-perl' | grep utf8-all | perl -pe 's|^|sudo apt install |' sh

sudo apt install libutf8-all-perl

ちなみに上で書いているTerm::UIはこれです。
sudo apt install libterm-ui-perl
#