2018年2月14日水曜日

epub の リーダー を追加?

epub の中身は今迄、ranger から mupdf を起動させて確認していたのだが、 自作の epub で文字化けとか表が表示されないとか、不満たらたらだったのだが、 やっと、灯台下暗しで 、選択肢をひとつ追加できた。

ネットとかで調べると、 横文字文化では Calibre が最高なんだ、 という情報があるのは知ってたのだが、私には、 Calibre を起動、ファイルのインポート、そして表示という、 時間と手間がひっかかって、不思議に思えていた。 で、今日、やっと気付いた。

コマンド入力でおけだった。素人恐るべしだ。 ここ に書いてあるじゃないか。 (ebook-viewer — calibre documentation)

起動とか反応とか遅いけど、きちんと表示されるのが嬉しい。今の所、文字化けも無いし。 なお、残念だが、縦書きに対応してないようだ。

自分の場合は、自作の縦書きは無いし、 縦書き対応のリーダーが必要なのは青空文庫ぐらいなので、 PC 上では aobook を使えばテキスト直なので問題ない。

ranger の オプションに追加して、心おだやかで吉。 まあ、デスクトップマネージャーを使ってればこんなこと関係ないんだろうな。


2018年2月12日月曜日

mp3ファイル の Volume 再調整

 自転車で出かける時、たまに、BGM用のスピーカーをバッグの片隅に入れて持ち出す。 スピーカーは、1年ほど前に2kぐらいで購入した、モノラルバスレフ?で bluetouth対応。 パッキンがとてもチープな防水だが、microSD 再生と、8時間の稼動時間が魅力で購入したものだ。 今はもう少し安くなっているようだ。( ECANDY 防水Bluetoothスピーカー
 以前は、Walkman に Victor の乾電池駆動の薄っぺらなステレオスピーカーを繋いで使っていたが、 音量が足らないとか、低音が聞こえないとか、水はダメとか、色々不満だったのだが、 こいつにしてから、いくつかの不満は解消されて、まずまず満足している。 まあ、選曲とか音量調整とかの操作に関わる不満は、使用方法の性格上諦めていているというのもある。
 で、際立ってきた不満がある。  SDには、mp3ファイルを10時間分ほど入れてるのだが、 たまに、無音でバッテリー切れ?と焦ってしまう曲があるようで、 結構、イラッとなるのだ。走っている間ずっと鳴らしてるわけではなく、 結構快適に走れてる時や、滅入っている時なんかにスイッチONなので、そう感じてしまうのだろう。
 その昔、音量調整をやった記憶はある。その方法が悪かったのか、それともやり忘れなのか、 10時間ぶんを再度調べるのが面倒で、この不快さを何度か味わっている状況だ。
 きっかけは、こんな記事。

- 音楽の「ラウドネス」について考えてみた。すなわち聴く人の体験を考えること。
- 4Gamer.net ― 適切な音量について考える。ゲームサウンドの「ラウドネス基準」はどうあるべきか

 「人間の耳で聞いたときの音量感」、ラウドネスを調整してから、 ボリュームレベルを揃えればよいかも、思った。まあ、その効果のほどは半年以上先になるけど。 TV放送でも、例えば、NHKでは2012年ごろから採用されているようだ。
 やったことは、音質にこだわる方法を探したのでは無く、ffmpeg の使い方を調べただけ。 音楽としては、劣化させる方向なのだろう。 アウトドアでの運動中に、安物スピーカーでBGMを聴くためのソースが、 それなりのテンポでリズムが刻まれるのが感じやいものになれば、それで良い。 まあ、女の子の声とかで刻んでくれると少し嬉しかったりするジジイではあるが。
 主に参考にさせていただいたのは、ニコラボで、 ffmpeg で聞き取りやすい音量に変える dynaudnorm とか 適切な音量が調べられる ffmpeg の ebur128 の使い方。 ありがたや。ありがたや。

1) 波形を見る方法
ffmpeg -i test.mp3 -lavfi showwavespic=split_channels=1:s=1024x400 waveform.png
ffmpeg -i test.mp3 -lavfi showwavespic=s=1024x400 waveform.png

2) ラウドネスの指標見る方法
ffmpeg -nostats -i [input_file] -filter_complex ebur128 -f null -
テレビ放送では -24LUFS ±1dB、PS3では -23LUFS ±2dB 程度らしい。

3) ラウドネスを調整する
 元のデータを調べてから、適切にパラメタを指定して変換するというのが、本来の方法のようだ。
  -  loudnorm -
  -  Audio nomalization with ffmpeg using loudnorm (ebur128) filter -
 で、手間がかかる手作業なんで、当然スクリプトとかどこかにあるだろうと思ったら、やっぱりあった。
 - GitHub - slhck/ffmpeg-normalize: Audio Normalization Script for Python/ffmpeg
pip でインストできる。make しなくていい。ただ私の環境では、mp3 を input 出来なかった。 オプションとか設定とか間違ってるかもしれない。
 ffmpeg-normalize input.wav -o output.wav -f 

4) 適切な音量にする
 ffmpeg -y -i input.mp3 -af dynaudnorm output.mp3 
以上の手続きと、mp3 と wav との変換を組み合わせて、スクリプト書けば、エラーが出ない限り、 勝手にファイルを変換処理してくれる。
#!/bin/bash

MF0=$1
MF1=${MF0##*/}
MF=${MF1%.*}"_norm.mp3"
PF=${MF1%.*}"_wprf.png"
LF=${MF1%.*}"_log.txt"

echo "=========" > log.txt
echo "* origin" >> log.txt
echo "=========" >> log.txt

# オリジナルの諸元を記録
ffmpeg -nostats -i $MF0 -filter_complex ebur128=framelog=verbose -f null - 2> log1.txt
tail -n10 log1.txt >> log.txt
ffmpeg -y -i $MF0 -lavfi showwavespic=s=1024x400 spf1.png

# wav 形式に変換
ffmpeg -y -i $MF0 out.wav

# ラウドネス処理
ffmpeg-normalize out.wav -o out_nor.wav -f

# mp3 に変換
ffmpeg -y -i out_nor.wav out.mp3

# 適切な音量へ
ffmpeg -y -i out.mp3 -af dynaudnorm $MF

# 中間ファイルを削除
rm *.wav

# 結果の諸元を記録
ffmpeg -nostats -i $MF2 -filter_complex ebur128=framelog=verbose -f null - 2> log1.txt
ffmpeg -y -i $MF2 -lavfi showwavespic=s=1024x400 spf2.png

echo "" >> log.txt
echo "=========" >> log.txt
echo "* final" >> log.txt
echo "=========" >> log.txt
tail -n10 log1.txt >> log.txt

composite -gravity west -compose difference spf2.png spf1.png  $PF
mv log.txt $LF

logの例。

=========
* origin
=========

  Integrated loudness:
    I:         -17.4 LUFS
    Threshold: -27.5 LUFS

  Loudness range:
    LRA:         5.7 LU
    Threshold: -37.5 LUFS
    LRA low:   -21.7 LUFS
    LRA high:  -16.0 LUFS

=========
* final
=========

  Integrated loudness:
    I:         -10.8 LUFS
    Threshold: -20.9 LUFS

  Loudness range:
    LRA:         4.8 LU
    Threshold: -30.9 LUFS
    LRA low:   -14.2 LUFS
    LRA high:   -9.5 LUFS

こいつを while とかで、全ファイルに処理してやる。 きっと幾つかの処理をまとめることが出来るんだろうけど、 まあ、一晩あれば全部終わるので、後は半年後とかに考えよう。

[2018.05] 音楽のソースの性格で、この処理が逆効果になる場合があるみたい。ネット経由で入手したものなど、もともと、何らかの処理が施されているようで、スクリプトに何らかの判定を入れなきゃいけないようだ。

2018年2月4日日曜日

i3 block に ラーメンタイマー?

i3 WM を使っていて、アラームとかタイマーとかが欲しくて探していたのだが、 なかなか出会えなかったが、それらしい物にやっと出会えた。感謝。

i3-tomaatti というもの。で、試してみた。 python で、まだ新しくて wheel に無いので、 pip+git でインスト。 設定はドキュメントにあるままでOK。

ラーメンタイマーが頭にあったので、 トマト(フィンランド語でトマト)だから、パスタとかのタイマーだと勝手に思ってしまったのが恥かしい。 ポモドーロ テクニック のアプリらしい。ちなみにブラジルの ピザ屋さん も検索でヒットした。結構人気店らしい。

ポモドーロ テクニックに関する日本語の説明は、 『ポモドーロ・テクニック』仕事時間を分割し集中力を上げる時間管理法 | りんご人 とかに。英語だと wiki の ここ とか。、 25分作業したら5分休みなさい、という作業方法のようだ。 具体的なインターバルの推奨値には幅があるみたい。

使い方は簡単。左クリックでスタート、25分経過すると、ポップアップで報せてくれる。 OKボタンをクリックすると休憩の5分タイマーが動きだす。 そして、5分が経過すると、再度ポップアップで作業だよと報せてくれる。 タイマーが動いている最中でも、右クリックすれば次のインターバルへ移行する。 左クリックは、スタート、ストップ(リセット) 。ラップ機能は無いみたい。 インターバル時間は、 .config/tomaati の設定ファイルで行なう。

ポモドート テクニックは1980年代に考案されたようで、 私も集中力バリバリの若者だった、はず、からか知らなかった。 当時、気に止めていた事は、椅子に座ってばかりでなく、 定期的に椅子の周辺でよいので、歩きながら資料とかを読むこと。 同じ姿勢を続けることは、体に良くないからという理由だったと思う。 気持のリフレッシュにもなる。今もそんな理屈があるのかは知らない。

まあ、ラーメンタイマーにもなるし、しばらく付きあってみる。 インターバル時間の変更が簡単に出来ると嬉しいかも。


Emacs の lsp の設定、なう(202310)

前回さらしてから、さらに1年。そう、3年めになる。 が、今回は一段と自信がない。 環境は、 Debian GNU/Linux 12 (bookworm) + emacs(29.1)。consult + company。 embark は未だに使ってない。 用途は、メモ と ...