2018年7月23日月曜日

スクリプト:ファイル名の長さを求める。NTFSとEXT4、ちょっぴりZFS

Perlのワンライナーで、ファイル名長のバイト数を求める。

4年位まえに書いて公開するのを忘れていました。

ls | perl -pe '{ chomp $_ ; my $FILELENGTH=(length) ; print "\n$FILELENGTH\t" }' | sort -n


ls | perl -pe '{ chomp $_ ; my $FILELENGTH=(length) ; print "\n$FILELENGTH\t" }' | sort -n 


適当なディレクトリで実行するとバイト数でソートされた結果が出力されます。

たとえば、

cd /home/test
ls | perl -pe '{ chomp $_ ; my $FILELENGTH=(length) ; print "\n$FILELENGTH\t" }' | sort -n

6 公開
9 ビデオ
12 ピクチャ
18 ダウンロード
18 テンプレート
18 デスクトップ
18 ドキュメント
18 ミュージック

インストール直後のubuntu系ホームディレクトリは、日本語ディレクトリなので、このようにカウントされます。

UTF-8ではワイドキャラクターは3バイトですので、日本語文字列が入っている場合でもこれで正解です。いわゆる全角2文字はx3で、6バイトです。日本人が使う文字は4バイトのものもありますので、単純に勘では計算できません。

バイト値で返ってくるのはいろいろと便利です。但し、原稿用紙換算の制限のある文書ではShift_JISの考え方で、文字数カウントしないと社会に対応できませんのであしからず。

無駄な検証


さて、ベタに検証してみました;

fuse経由NTFSは、どんな文字でも255文字分のファイルが作成できます。バイト値で755です。(OSを絡めると「最近のWindowsでは」と条件付きになるようです。サポート切れは関係ないのでどうでもいいですが)

以下のファイルはNTFSに作成できます。限界の765バイト。(三木清、青空文庫)

touch してみるとすぐにわかります。

哲學はどう學んでゆくかといふ問は、私のしばしば出會ふ問である。今またここに同じ題が私に與へられた。然るにこの問に答へることは容易ではないのである。これがもし數學や自然科學の場合であるなら、どういふものから入り、どういふ本を、どういふ順序で勉強してゆくべきかを示すことは、或ひはそんなに困難ではないかも知れない。それが哲學においては殆ど不可能に近いところに、哲學の特色があるともいへるであらう。哲學は何であるかの定義さへ、立場によつて異つてゐる。立場の異るに從つて、入口も異る筈である。しかも哲學的知識には、端初

EXT4だとこれが限界近く。253バイト(夏目漱石、草枕、青空文庫)

住みにくき世から、住みにくき煩わずらいを引き抜いて、ありがたい世界をまのあたりに写すのが詩である、画えである。あるは音楽と彫刻である。こまかに云いえば写さないでもよい.txt

EXT4では、英数字なら255文字のファイルが作成できますが、日本語では不可能です。85文字以内と考えておくのが得策です。85x3は255です。ZFSでも同じようですが現在は仕様拡大したかもしれません。

ですから、バイト数で250以上を危険水域としてファイル名長をチェックしたほうがいいかもしれません。少なくともGnomeでは255バイトぎりぎりのファイルはゴミ箱には入れられません。拡張子付加とかそれ以上できないためなのかもしれません。リネームは促されません。

※おまけ、または結論


NTFS上に作成した長大な名前のファイルは、仮想マシン(Windows)では見えませんでした。もちろんWineでは見えています。ファイル名長大化推進委員会の私としては、日本語で扱える文字数の少なさにがっかりです。笑)これも一律に閾値255バイトで制限したほうがいいのでしょうね。ファイルシステムをまたがる場合、異機種間ネットワークを組む場合、可搬性を考慮した場合など。

touch: `アル・ジャロウ,ウィリー・ネルソン,ウェイロン・ジェニングス,キム・カーンズ,クインシー・ジョーンズ(プロデューサー及び指揮),ケニー・ロギンス,ケニー・ロジャース,ジェフリー・オズボーン,ジェームス・イングラム,ジャッキー・ジャクソン,シンディ・ローパー,シーラ・E,スティーヴィー・ワンダー,スティーブ・ペリー,スモーキー・ロビンソン,ダイアナ・ロス,ダリル・ホール&ジョン・オーツ,ダン・エイクロイド,ディオンヌ・ワーウィック,ティト・ジャクソン,ティナ・ターナー,ハリー・ベラフォンテ,ヒューイ・ルイス&ザ・ニュース,ビリー・ジョエル,ブルース・スプリングスティーン,ベット・ミドラー,ポインター・シスターズ,ボブ・ゲルドフ,ボブ・ディラン,ポール・サイモン,マイケル・ジャクソン,マーロン・ジャクソン,ライオネル・リッチー,ラトーヤ・ジャクソン,ランディ・ジャクソン,リンジー・バッキンガム,レイ・チャールズ' に touch できません: ファイル名が長すぎます

なので、~/Music/アルバム名/演者/We Are The World.flac の演者の部分がつくれません。いや、作んなくていいから。^^; U.S.A. For Africa でいいんです。

コーラスなどの楽曲で演者を編集、全参加アーティストを列記するという野望が潰えた瞬間です。

Linux音楽プレイヤー雑記 楽曲管理と再生と。

Linux音楽プレイヤー雑記 楽曲管理と再生と。

極めて主観的な感想です。

前略――個人的には、他のソフトウェアは日本語ユーザーには時間の無駄で す。とさえ思います。TAGも直しましたがちゃんと読み取れないのは現状の仕様(利用者像の設定)だと思います。Latinな世界の人中心の開発なので仕方ないですね。2.4でUTF-8で書き込んで、古い機材(昔のwalkmanとか)のことは忘れてしまうってのがいいかもしれません。結局、過去との互換性を考えるからいろいろ不都合も生じるわけでして。本人も原因です。




名称 評価 好感ポイント コメント Cue対応 導入方式
高頻度
audacious 90 軽い クリックして再生。デフォルトに設定 OK 標準、PPA

クレメンタイン 80 見通しがよい ライブラリ単位で再生。管理も任せる。 OK PPAまたはdebダウンロード

mpv 70 軽い さくっと再生。コマンドラインからさっと再生、さっと終了。 PPAまたコンパイル

VLC audio CD Player 50 それなり それなり。 標準、PPA


lollupop

deaDbeef
85 現代的 期待 PPA
低頻度
banshee 50 特になし 総合的 NA 標準

Rythmbox 50 特になし 総合的 NA 標準


WINEでiTunesはバージョンも古い上、実用に耐えません。せめてVitualboxでしょうね。
Vitrtualboxにしても、遅延します。BGMにはいけても「実用的には使えない」と思います。個人の感想です。Linux+Wineや仮想マシンにリアルタイム処理では幻想を抱いても仕方ないです。

管理と再生は別物なので、そこはわけて。最近だと、購入や取り込みと管理と再生って区切ってもいいかもしれません。アートワークを好みに変えたり、歌詞を埋め込んだり、タグを付け直したり、そういうのがここでいう管理です。

さ らにこるなら、楽曲毎にアートワークを変えるとか、gracenoteを参照して、ファイル化された名称は一部気にいらないのでぜんぶ付け替えたいとか (ファイルリネーム)など管理作業は、本末転倒という意味ではやまほどあります。笑)  CDDBの違いも大きいですよね。

もっとも、再生に関していえば、Nativeアプリで十分ではないかなと思います。

希望をいえば、WindowsのMusicBee並の管理と再生ソフトウェアがあれば\(^o^)/です。
MusicBeeが最強じゃないかと思っています。ほとんど iTunesを凌駕しているといっても過言ではないのではないかな、と。
Winidowsはめったに起動しないので恩恵に預かれませんが。そういえば、Beeですがインターフェイスを変える検討をはじめた模様ですね。どうなるんだろう。ほぼひとりで開発している様子なので、すごいなぁ、です。

The backup GPT table is corrupt, but the primary appears OK, so that will be used.

"The backup GPT table is corrupt, but the primary appears OK, so that will be used."


新規にターミナル(端末)を開きます。ubuntu系は以下を同時押し。CTRL+ALT+T
#
sudo gparted /dev/sdd
#
sudo gparted /dev/sdd
======================
libparted : 3.2
======================
The backup GPT table is corrupt, but the primary appears OK, so that will be used.
#name partition
今まで           TOSHIBA_etcs
書き換えた。 TOSHIBA_E
#
結果エラーが収まった。

パーセントエンコードをさくっと処理

さくっと、パーセントエンコード

はたらく細胞 がいまマイブームなので。アニメです。AmazonVideoでも配信されていますね。Perlなのでほとんどの環境(MACとLinux)では事実上標準ではいっていますから、貼り付けるだけ。すぐに応用して使えます。

新規端末 CTRL+ALT+T#
はたらく細胞%E3%81%AF%E3%81%9F%E3%82%89%E3%81%8F%E7%B4%B0%E8%83%9E
%エンコード16進ですし、ふつう人間には読めない並びになります。空白なら覚えていますが。

# OneLiner で文字列を埋め込む

$ perl -MURI::Escape -E 'say uri_escape("はたらく細胞");'Enter
%E3%81%AF%E3%81%9F%E3%82%89%E3%81%8F%E7%B4%B0%E8%83%9E

#OneLiner で文字列を引数の配列@ARGVで

$ perl -MURI::Escape -E 'say uri_escape("@ARGV");' "はたらく細胞"Enter
%E3%81%AF%E3%81%9F%E3%82%89%E3%81%8F%E7%B4%B0%E8%83%9E


#OneLiner で文字列を引数の番号$ARGV[0]で

$ perl -MURI::Escape -E 'say uri_escape($ARGV[0]);' "はたらく細胞"Enter
%E3%81%AF%E3%81%9F%E3%82%89%E3%81%8F%E7%B4%B0%E8%83%9E



シェルで、変数に格納。そして有効になっているか調べる。

$ hatarakusaibou=$(perl -MURI::Escape -E 'say uri_escape("@ARGV");' はたらく細胞)Enter

$ echo $hatarakusaibouEn ter

%E3%81%AF%E3%81%9F%E3%82%89%E3%81%8F%E7%B4%B0%E8%83%9E

上の結果と一致しているのでOK。



$ perl -MURI::Escape -E '$escape=uri_escape("@ARGV"); $escape =~ s/%20/+/g ;say $escape' はたらく細胞 公式 アニメEnter



引数を「+」で連続させる文字列を一発で取得するには、これで。


%E3%81%AF%E3%81%9F%E3%82%89%E3%81%8F%E7%B4%B0%E8%83%9E+%E5%85%AC%E5%BC%8F+%E3%82%A2%E3%83%8B%E3%83%A1


完成かなと思います。bash関数にするなり、バッチファイルにするなりしておくと便利かも。bash履歴から呼び出すってのも王道のひとつです。

この雛型があれば、スクリプトにするのは容易です。というか動いていればそれで完成。

  • Python3 + BeautifulSoap さんで、グーグル様にちょっと投げてみる時などに使えますし、そもそもPythonなのだから標準ライブラリで処理せよという話。[Python3] 
    percentencode=urllib.parse.quote('はたらく細胞') ⬅ これで解決します。
  • -E で、say を使っています(改行が自動でつくと困る場合はprintでどうぞ)。
  • 標準モジュールURI::ESCAPEをワンライナーでも使えるように組み込む。
    -MURI::Escape 


# OneLiner 上記のリバース(戻し方)

$ perl -MURI::Escape -E '$unescape=uri_unescape("@ARGV"); ;say $unescape' %E3%81%AF%E3%81%9F%E3%82%89%E3%81%8F%E7%B4%B0%E8%83%9E+%E5%85%AC%E5%BC%8F+%E3%82%A2%E3%83%8B%E3%83%A1
はたらく細胞+公式+アニメ ⬅戻りました。


2018年7月22日日曜日

Python のスクリプトをPerlで修正する。Python2をPython3対応にするプチ事例

PythonソースコードをPerlでさくっと修正してみる

新規にターミナル(端末)。CTRL+ALT+T

2to3 という、 「Python 2.x のソースコードを読み込み、一連の 変換プログラム を適用して Python 3.x のコードに変換するプログラム」がありますので、本来の目的用ではなく、Perlのワンライナー活用例です。

元のファイル、python000.py Python2用 3行のファイル。

# coding: utf-8
print "パイソン世界2から3への代表的な例::2to3が用意されている\n覚えておくといいかも。"

exit()

実行

$ python2 python000.py
パイソン世界2から3への代表的な例::2to3が用意されている
覚えておくといいかも。

Python3で実行しようとすると怒られる。
$ python3 python000.py
                                          ^
SyntaxError: Missing parentheses in call to 'print'. Did you mean print

なるほど、printの扱いが変わったのですね。これを修正します。修正の仕方も教えてくれる親切Pythonです。

$ perl -wlpe 's/\b(print)\b.*\"(.*)\"/$1 ("$2")/;s/\# coding: utf-8//' ./python000.py

1)プリント行を()で囲む仕様変更。
2) # coding: utf-8 は不要なので削除する。

まとめて実行、1ライナーで修正して保存、そのまま実行
perl -wlpe 's/\b(print)\b.*\"(.*)\"/$1 ("$2")/;s/\# coding: utf-8//' ./python000.py | tee python003.py && echo "終 実行"; python3 python003.py 
print ("パイソン世界2から3への代表的な例::2to3が用意されている\n覚えておくといいかも。")
exit()
終 実行
パイソン世界2から3への代表的な例::2to3が用意されている
覚えておくといいかも。

$ python3 python003.py

としても当然同じなので、これでOK。

まとめ::結局bash上の使い方事例なのです

perl -wlpe 's/\b(print)\b.*\"(.*)\"/$1 ("$2")/;s/\# coding: utf-8//' ./python000.py |\
 tee python003.py \ 
 && echo "終 実行";\
 python3 python003.py 
パイプ、接続をばらして説明すると
1行目、PerlでPrintする内容をキャプチャしておいて、Python3仕様に変換。不要なUTF-8行削除
2行目、Tee で結果(Python3で動く内容)を出力しつつ新たなファイル(python003.py)に保存
3行目、作業が終わった目印を出力して(冗長)
4行目で、Python3で新規に生成されたスクリプトファイル(python003.py)を引数として実行
こういう流れですね。teeはなくても死なないけれど、ないとめんどくさいコマンドかなと思います。


2018年7月15日日曜日

範囲指定、行指定、行番号で日本語文書を扱う。perl 1 liner(ワンライナー)

テキスト整形:: Perl でちょろく範囲指定、範囲を置換加工、そのバリエーション

Perl使いだして25年、相変わらずタコユーザーですが、日常よく使うパターンを五月雨式に投稿しております。すごいユーザーさんたちは何でもわかるのでしょうが、ふつうなので、誰にでもわかるように説明していきたいと思います。数学は理学部数学科よりもややできなかった人が教えたほうがいいからと思うのです。

さて、sedより便利。PCREはなんだかんだといって標準。自分の使い方ではPythonの正規表現との違いはほんの数カ所だった気がします。なのでPython使っても違和感はないです。sedは挙動がほんの少し異なるので、いまどきのLinuxやMACならPerlで書いたほうが、同じに動作しますから楽ちんです。Perlは派生品がないから基本的に同じ動作をするためですね。

新規端末。CTRL+ALT+T

#10行目から15行目までを出力

まずテストファイル2つを作ります。次のコマンドまたは環境に応じたパスでOK。
だいたい42行のファイルが標準構成で出力されると思います。Perl標準モジュールなのでたぶん名前の重複はないです。末尾に実際のファイルを添付しておきます。

ナンバリングなし。
find /usr/lib/perl5 -type f -name '*x*pm' -exec basename {} \; >text.txt
ナンバリングあり。
find /usr/lib/perl5 -type f -name '*x*pm' -exec basename {} \; | cat -n >text_n.txt 

実践テスト

好きな方/両方で試してみると良いです。

perl -lne 'if ( 10 .. 15 ) {print}'  text.txt
perl -lne 'if ( 10 .. 15 ) {print}'  text_n.txt

これだけで便利さはご理解いただけるかと。

応用 範囲内の文頭のみ置換
perl -lne 'if ( 10 .. 15 ) {s/^/文頭置換/; print}'  text.txt

範囲内の文頭のみ置換し、範囲外はそのまま出力(あえてクドく。範囲内と範囲外での処理を変えてみる場合)
perl -lne 'if ( 28 .. 40 ) {s/^/文頭置換/; print}else{print}'  text.txt 


#Perl 範囲指定でおぼえておくべきこと。Perlの癖みたいなもの。記憶法

  1. . ドットひとつは前後の文字列を連結(この投稿とは無関係の基礎知識)
  2. .. は範囲演算子
  3. ... も範囲、同一行マッチ(同一行の2番目以降のマッチ)はスルーする。あまり知られていない。
そのせいか、不毛なサンプルコードが検索されてしまいます。
基礎であるPerlDocを職業プログラマーでも読まない人が多すぎるからでしょうね。
3つまとめて覚えるとよいです。特に3番めはきっと役に立ちます。これを知らないと10行ぐらい余計なコードを書くはめになります。そして動かないとか。たぶん。

数字で行番号、// で囲えば正規表現で範囲指定できます。
行番号指定との組み合わせも可能です。
/\Q( 文字列 )\E/ で囲えばメタ文字をリテラル文字としてそのまま使えます。
クォートの略でしょうね。全文字列をふつうの文字として扱う際は、
最初\Qだけ必要で
最期の\Eは付けなくてもだいじょうな、ものぐさ仕様です。
サンプルの数字10,15は、お気づきでしょうが行数です。
Perlの特殊変数としては、「$.」 になります。 ワンライナーで
なくeval 使うような場合にはおぼえておくと捗ります。

以上程度の知識と応用で、だいたいのニーズには対応できるかと思います。

#正規表現で範囲出力、応用

perl -lne 'if ( /Tk/ .. /Camel/ ) {print}'  text_n.txt

範囲内の文頭のみ置換 正規表現と行番号のコンビ
perl -lne 'if ( /Exporter\.pm/ .. 15 ) {s/^/文頭置換/; print}'  text_n.txt

結果的に2行目から15行目まで置換して出力します。

範囲内の文頭のみ置換し、範囲外はそのまま出力(あえてクドく。範囲内と範囲外での処理を変えてみる場合) 1ライナーに改行をいれて掲載しています。

perl -lne '
  if ( /オレンジ/ .. /グレープ.*?ス$/ )  {
  s/^/文頭置換/;
  print;
  }
  else{
   print;
}
'  text.txt

実行ファイル(スクリプト)にしてもたったの10行。
GNU nano 2.9.8                                               tikan.plx
#!/usr/bin/perl -ln
if ( /Exporter\.pm/ .. 15 ) {
    s/^/文頭置換/;
    print;
}
else{
    print;
}
__END__


$ tikan.plx text.txt
などとして実行属性つけて叩いてみてください。同じ結果が得られます。

長くなりすぎましたが、ついでに::

結局はPerlでGrepする構文と同じと考えてもいいです。


$ perl -lne 'if ( /xpm$/ ) { print ;$i++}END{print $i . " 個あります"}' text_n.txt

こうすると、リストから xpm だけ抜き出して、その個数を教えてくれます。数える作業なんて人間がやるもんじゃないですから。

さらに簡潔っぽく & 人間らしく。

perl -lne ' /xpm$/ and  print and $i++ ; END{print $i .  "  個あります"}'  text_n.txt

読みこなし:: これもれっきとした制御構造です。最近確信しまた。こういう簡便な書き方で改修が捗るなら使えばいい。ラクダ本にもあります。カンタンなことはカンタンに!!

アンドとORさえ知っていれば英語はOKです。職業的な使い手ではなく道具としてプログラミングツールと向き合うひと向けですかね。

全般にこの書き方だと 単純構造なら、if や 1文字で実現できるお得なwhile を明示的に使わずに短く書けます。複雑になると and/orが複数回登場します。そうなると一般制御構造で書いたほうが圧倒的に人間的です。というかアメリカ人+州立大学で高等数学を教えているような先生でも読めない醜い(=読む気になれない)コードになります。
  1. 1行(1名)づつ地道に処理する前提です。 パール委員長のデフォルトな振る舞い。
  2. /正規表現RE/ に一致したら、その行を出力するだけのカンタンなお仕事。 
  3. ついで、カウンターを1個増やす。(パール委員長が「正」の字を黒板にかいていくイメージです)
  4. END{最期にまとめて「正」字の画数合計を委員長がお知らせ}

手抜きと短さが重要なのでカウンター初期化は省略。正しく動けば正義。初期値が未定義だとゼロなのでいいのです。このサンプルの応用でテキスト処理では相当高度なことはできちゃうと思いますよ。当職の脳内雛型000番の紹介でした。あと99個投稿します。

テストに用いたファイルの生成とリスト

find /usr/lib/perl5 -type f -name '*x*pm' -exec basename {} \;  | cat -n > text_n.txt

     1 ProxyObject.pm
     2 Exporter.pm
     3 Libproxy.pm
     4 wintext.xpm
     5 TextUndo.pm
     6 TextEdit.pm
     7 Text.pm
     8 QuitPBa.xpm
     9 QuitPB.xpm
    10 ned.xpm
    11 file.xpm
    12 Reindex.pm
    13 TextList.pm
    14 FBox.pm
    15 Spinbox.pm
    16 Tk.xpm
    17 ReindexedROText.pm
    18 ColorEdit.xpm
    19 srcfile.xpm
    20 act_folder.xpm
    21 Listbox.pm
    22 TixGrid.pm
    23 Camel.xpm
    24 MsgBox.pm
    25 openfolder.xpm
    26 winfolder.xpm
    27 folder.xpm
    28 DialogBox.pm
    29 ReindexedText.pm
    30 Pixmap.pm
    31 ROText.pm
    32 textfile.xpm
    33 LinkExtor.pm
    34 Proxy.pm
    35 ExampleP.pm
    36 Execute.pm
    37 ProxyServer.pm
    38 gettext.pm
    39 XPathContext.pm
    40 Expat.pm
    41 Showlex.pm
    42 Unix.pm

2018年7月7日土曜日

Jack インストールと設定・3分クッキング(改訂4版) 後編

その他留意事項::Jack インストールと設定・3分クッキングの続き


前編に戻る/
Jack インストールと設定・3分クッキング(改訂4版) 

低遅延、リアルタイムカーネルの導入

manjaroでリアルタイムカーネル
https://poor-user.blogspot.com/2018/07/how-to-install-real-time-kernale-in.html

ここまで読んでいただけた方は設定の前に次も合わせて目を通しておくといいかもしれません。2017年9月24日現在の当方の総括です。 

排他的にサウンドデバイスを使う::カンタンな設定の準備/WindowsでいうところのWASAPIみたいなDAC利用方法/ALSA・排他的


蛇足中の蛇足::自分用メモ::ubuntuStudio の所要パッケージなら。落として、sudo dpkg -i *.debいまとなっては関係ない。
#!/bin/sh
wget -c http://ftp.riken.jp/Linux/ubuntu/pool/universe/o/osspd/osspd-pulseaudio_1.3.2-7_amd64.deb
wget -c http://ftp.riken.jp/Linux/ubuntu/pool/universe/o/osspd/osspd_1.3.2-7_amd64.deb
wget -c http://ftp.riken.jp/Linux/ubuntu/pool/universe/u/ubuntustudio-meta/ubuntustudio-audio-core_0.154_amd64.deb
wget -c http://ftp.riken.jp/Linux/ubuntu/pool/universe/u/ubuntustudio-meta/ubuntustudio-audio-plugins_0.154_amd64.deb
wget -c http://ftp.riken.jp/Linux/ubuntu/pool/universe/u/ubuntustudio-meta/ubuntustudio-audio_0.154_amd64.deb
wget -c http://ftp.riken.jp/Linux/ubuntu/pool/universe/u/ubuntustudio-controls/ubuntustudio-controls_1.3_all.deb


据え置き利用者ゆえの水を注すような独り言。単なる愚痴


USB-DAC。USB-DACが優秀なわけでないのです。大事なのはDACです。S/PDIF(光端子・光デジタル)がついているマザーボードをもっている場合、あらたにDACを調達するのなら、S/PDIF(光端子)入力付きDACを使うほうがハッピーです。YAMAHAのプリメインアンプ(たとえばA-S301::最近安い。9kg)みたいなのでもいいでしょう。結局メーカーもUSBしか端子がないノートPCやMACに対応するためにそうなってしまっただけですね。今後はUSB Audio Class2.0 機器がWindows10の対応を機会に熟成していけばいいわけですけれど、はっきりいってLinuxなどOS問わず、

不具合はUSBゆえに。USBに起因します。(当社調べ)

S/PDIFで接続できれば、ほとんどの問題が解決すると思います。不要なひとはUSB-DACを捨てようです。笑) 持ち歩くのが好きなひとは止めることはできませんし、個人の価値観の問題なのでアレですが、USB-DACはじゃまくさい(ちいさくてかわいいけれど)。電池食うし。

たとえば、コンポでUSB-DAC搭載とかってあるじゃないですか。あれだって、S/PDIF出力をPANASONIC PMXに搭載してくれていたら、うちではS/PDIF経由onLinuxで使うので、driverなどを心配する必要もありません。確実に安定して動くので即買っただろうにと思います。メーカーに電話したらチップの名前教えてくれなかった。笑) それはいいです。


S/PDIF搭載マザーボードは数千円ぐらい割高であったりしますが、その分他のチップも上位品が使われていたりしますので、損ではないと思います。Linuxの人にとっては、(優れているから使われているわけではない)USB-DACを使わずに済むのは最大のメリットです。
ノートPCの場合は選択の余地がありませんけれど。 

カジュアルな人はAVレシーバー/AVアンプでしょうから、S/PDIFで接続すると楽ちんだし、USB-DACは逝ってよしなのです。(個人の感想です) 私が買うのはテストしたい(無駄づかいしてみたかった)からですが::笑。
持ち歩き用途ゼロです。じゃまくさい。ちなみに手持ちのXPERIAシリーズはZ4からミニジャックからハイレゾ出力ができるようになっています。湯たんぽを買ってしまった気もしないではありませんが富士通の例のスマホよりはましかと。電車の騒音の中で使うわけで、どうでもいいかな、と。

自分的には、おそらく今後USB-DACは買いません。DAC機能が充実したプリメインアンプは買うでしょうけれど。USB-DACは音響機器というよりパソコン機器かなとも当方は思います。自称メーカーのdriverの出来(ODM)に左右されるのはしんどいです。

■参考

サウンド設定(jackとはある意味無関係の蛇足)

MATEはプロファイルでアナログとデジタルを選択する。この機体はReltek 892を使っており、光デジタルケーブルでアンプに流しています。だから、アナログは選択しません。適切な出力先(IEC958)を選ぶというだけの話です。あくまでデフォルトシンクで、JACKの出力先とは違います。同じでも構わないです。絵が古いだけで、どのディストリ、フレイヴァーでもやることは同じです。


Cinnamon Mint18のサウンド設定画面


横道ですが、こうして選ぶのもめんどうですか。つながっている全出力、同時鳴動というのもできますよ。たとえば、アナログ、デジタル、A2DP、同時に音出しができました。あほらしいので元に戻しました。何も考えなくていいという意味はではいい方法かも。いや、ばかげていますよね。


ここまで3分クッキングでした。

割り込み1::ubuntu 17.10beta/Artful Aardvark

で試してみた

特にどうというわけではないのですが、17.10はUSB-DACで設定してみました。まだ不安定な環境ですね。導入は出来ても動作しないアプリケーションがあったりとかですが。あんまり使ってないのですが、Audaciousの動作がなんか変わっているよう。
Audacious with jackは:: jackd を起動しておいて、
  1. jack出力 を選択して、
  2. 浮動小数点に設定する。



17.10 .jackdrc はこれですね。このオーテクのDACを推薦するわけではないのでご注意を。気にいってはいますが、パーフェクトじゃないので。
/usr/bin/jackd -dalsa -dhw:HA90USB,0 -r192000 -p4096 -n8

割り込み2 ::jackが必ずしも良い結果を生むとは限らない。非jackな割り込みです。


今、通常環境では、次の絵のように「alsaで排他的っぽくデバイスを掴んで再生する」ようにしています。audacious,deadbeef共にです。

自分の試行錯誤から得られた知見?!からいえば、セレロン並の低速環境なら、
  • 低遅延カーネル
  • directにハードウェア指定
で十分かと思います。特に後者は効きます。排他的(っぽく)にサウンドデバイスが使われるのでメリットは大きいです。※絵の出力デバイスに注目。
  • パフォーマンスを最大クロック固定、
  • 再生アプリの優先度最大

もたいした効果はなかったです。無意味。
ちなみに同様の設定をmpvにも施してみました。長いので別稿(排他的にサウンドデバイスを使う::カンタンな設定の準備/WindowsでいうところのWASAPIみたいなDAC利用方法/ALSA・排他的っぽいです;

前編に戻る/Jack インストールと設定・3分クッキング(改訂4版) 

2018年7月5日木曜日

How to install Real-Time kernel in Manjaro Linux.

Realtime kernel 低遅延カーネルを導入する。 manjaro Linux Real-Time Kernel.

manjaroLinuxの場合/リアルタイムカーネル導入になります。主に、jack などの場合に使っています。




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

セッティングマネージャーが開きます。ペンギン(カーネル)をクリック。



セッティングマネージャーのペンギン=カーネルを選択クリックしました。カーネル画面になります。遷移した画面です。これでは薄いオリーブ色っぽい「real-time」と「LTS」に注目してリストを眺めてください。


たいてい、Real-Timeと表示されているカーネルがおそらく最低ふたつあるはずです。どちらかに決めて(両方でもOKではあります)、右のインストールボタンを押します。それだけです。選ぶのはやはり最新にあたるLTSが無難でしょうか。再起動時に、Grubアドバンスメニューで起動したいカーネルを選択してください。

プチ知識::

LinuxカーネルのLTSとubuntuなどディストロのLTSは意味あいが違います。カーネルに関していえば、だいたい年末前後(冬)に新しいLTSがでます。2018/07/02現在では、4.4系列が最新のLTSだったと思います。arch系はその意味でわかりやすいです。