ひゃまだのblog

ひゃまだ(id:hymd3a)の趣味のブログ

Debianでmp3の音量レベルを揃える(mp3gain)

(2022-01-13 初稿 - 2022-01-14 修正)

先日バイク用インカムを購入し、Bluetoothで接続してバイクに乗りながらスマホ内の音楽を聞くことができるようになった。

バイク用インカムの詳細は以下のページを。

筆者の音楽趣味から雑多なmp3ファイルをスマホに入れて聞こうと思ったのだが、各mp3ファイルの音量調節が面倒。(^_^;)

この分野のソフトは、WindowsではMp3gainというソフトが有名だが… と思って、Debianで調べてみると… なんとある… (・o・)

$ apt search mp3gain
ソート中... 完了
全文検索... 完了  
mp3gain/stable 1.6.2-2 amd64
  統計分析を用いて無損失で mp3 を正規化

ということで、さっそくインストールして試してみた。

$ sudo apt install mp3gain

man mp3gainで調べると、-r オプションあたりが役立ちそう。

$ man mp3gain
(省略)
       -r        apply  Track gain automatically (all files set to equal loudness)
(省略)

ということで、バイク等で聞きたい曲をtmpフォルダ等に入れて、以下のコマンドで一括して音量調節ができる。

$ mp3gaiin -r ~/tmp/*.mp3

なんと楽ちんなのだ〜。

詳しいことは、man mp3gainで調べてね。

関連ページ

超ローテク、Googleスプレレッドシートの表をはてなブログに貼り付ける

(2021-12-28 初稿 - )

はじめに

筆者はスーパーカブ110に乗っていて、これまでの燃費を公開している。

上記のページを記述するときに使った方法が以下のとおり。

上のリンクの方法でもいいのだけど、ちょっと大げさで、給油のたびに元のGoogleスプレッドシートから貼り直さなくてはいけなくて面倒に感じてきた。今回も似たようなものだけど、単純なhtmlで変換するので多少の修正ははてなブログ内で可能。

そこで、超ローテクだがGoogleスプレッドシートからはてなブログの表に貼り付けるPythonスクリプトを作ったのでアップする。

一応、ネットで調べたら、csvやpandasライブラリを読み込んで○○というのが多かったけど、こっちは超ローテクなので高級なライブラリは使っていない。^^;

方法の概要

超ローテクだけに、手作業や決まりごとは多い。滝汗)

以下に、その方法の概要を示す。

  1. Googleスプレッドシートで表を作成し、CSVファイルとしてダウンロード
  2. CSVファイルをPythonスクリプトで変換
  3. 変換した表を、はてなブログに貼り付け

以下、具体的に記述する。

Googleスプレッドシートで表を作成し、CSVファイルとしてダウンロード

まずは、Googleスプレッドシートを作るのだけど、超ローテクだけに制限がある。

表はA列から始める必要がある。

(Google スプレッドシート)

表1のタイトル( Table Caption)
表1の項目(Table Header)
表1の中身
空白1行以上(表と表の区切り)
表2のタイトル
表2の項目(Table Header)
表2の中身

この形式で表を作れば、いくつでも表を作り、変換することができる。

すべての表が完成したら、Googleスプレッドシートのメニューの「ファイル」、「ダウンロード」、「カンマ区切り形式(.csv)」を選択してダウンロード。

Pythonスクリプトで変換

今回作成したスクリプトは以下のとおり。

超ローテクだけに、csvもpandasも読み込んでいない。^^;

#!/usr/bin/env python3
#coding: UTF-8
# cvs to hatena html
# ver0.01 written H.Yamada 2021-12-28
# ver0.02 2021-12-29 mod table判定
# ver0.03 2021-12-29 Commandline Arguments csv filename

import sys

#CsvFile = '/home/hoge/Downloads/Cub110燃費 - 燃費.csv'
Init_Style = """<style type="text/css">
.entry-content table{
    display:table;
/>}
table caption { caption-side: top; }
</style>
"""

def prn_err():
    print("csv-h_html.py csv_filename.csv")

def begin_table():
    print('<table border="1">')

def end_table():
    print('</tbody>')
    print('</table>')

def prn_caption(caption):
    print('<caption>', caption, '</caption>', sep='')

def prn_header(theader):
    theader = theader.split(',')
    print('<thead>')
    print('<tr>', end='')
    for item in theader:
        print('<td align="center">', item, '</td>', sep='', end='')
        print('</tr>')
        print('</thead>')
        print('<tbody>')

def prn_item(items):
    items = items.split(',')
    print('<tr>', end='')
    for item in items:
        print('<td align="right">', item, '</td>', sep='', end='')
        print('</tr>')

# Commandline Arguments
if len(sys.argv) != 2:
    prn_err()
    sys.exit()
else:
    CsvFile = sys.argv[1]

# Initial style
print(Init_Style)

cnt = 0
tbl = 0
with open(CsvFile) as f:
    for line in f:
        line = line.rstrip()
        #print(line)
        if line[:3] == ',,,':
            if tbl == 0:
                continue
            else:
                end_table()
                print('<p></p>')
                tbl = 0
                cnt = 0
        else:
            if tbl == 0:
                begin_table()
                prn_caption(line.replace(',',''))
                tbl = 1
            else:
                if cnt == 1:
                    prn_header(line.rstrip(','))
                else:
                    prn_item(line.rstrip(','))
            cnt += 1

end_table()

適当なエディタで入力後、ファイル名をcsv-h_html.py等として、実行権を与える。

$ chmod +x csv-h_html.py

実際の実行には、引数として上記でダウンロードした変換したいcsvファイルを指定する。

$ csv-h_html.py 変換したいファイル.csv

もし、ファイルで受けたい場合は、以下のようにリダイレクトして保存する。

$ csv-h_html.py 変換したいファイル.csv > 貼り付け元.html

変換した表を、はてなブログに貼り付け

変換した表を貼り付けたいはてなブログを開き、「HTML編集」を選択。

表を貼り付けたいところに、コピペする。

おわりに

超ローテクで手抜きだけど、なんとか目的を果たせるスクリプトは作成できた。

どなたかの参考になれば幸いです。

関連ページ

WSL2のlocale設定と再起動

(2021-12-24 初稿 -)

localeの設定

WSL2をインストール直後に設定すべきだったが、日本語環境のためにlocaleを設定する。インストール直後は、デフォルトだと en_US.UTF-8 になる。

$ sudo dpkg-reconfigure locales

ja_JP.UTF-8 を選択し、デフォルトも ja_JP.UTF-8 を選択する。

 

WSL2のShutdown、Reboot

WSL2で、shutdownやrebootをしようとすると、Can't Operate 等と言われて動作しない。

コマンドプロンプトまたはPower Shellで、以下のとおりコマンド入力する。

wsl.exe --shutdown

または

wsl -l
Debian (既定)
wsl -t Debian

 

関連ページ

WSL2+MobaXtermでGUIアプリの日本語の入力がなんとかできるようになったよ

(2021-12-23 初稿 - )

はじめに

WSL2のインストール、設定やMovaXtermでGUIアプリケーションの実行ができるようになった。

GUIアプリの実行はできても、日本語入力できないことが課題だった。

ネットで解決策を検索すると以下のサイトがあり、筆者が試したところ不安定ながらもなんとか日本語入力ができるようになったので、その方法について記載する。

なお、筆者はWSL2のLinuxとしてDebianを利用している。

設定方法

日本語入力としてfcitxとmozcの組合せをインストール。

sudo apt install fcitx-mozc

上記の一連のパッケージが導入される。

筆者の環境では、設定前の状態は以下のとおりであった。

$ ps ax
    PID TTY      STAT   TIME COMMAND
    1 ?        Sl     0:00 /init
    8 ?        S      0:00 /init
   10 ?        Ss     0:00 ./wslconnect wsl -F -p 127.0.0.1:22015
   11 pts/1    Ss     0:00 -bash
   17 pts/1    R+     0:00 ps ax

ログイン時に一度だけ実行される .profileに以下の記述を追記する。

# add 
export GTK_IM_MODULE=fcitx
export QT_IM_MODULE=fcitx
export XMODIFIERS=@im=fcitx
fcitx >& /dev/null

記述後、以下のとおりコマンドプロンプトまはたPower Shellで再起動する。

> wsl -t Debian  (Debianの部分は自分のDistributionに合わせて)

再起動後、WSL2のDebianを再起動後、ps axで確認すると以下になる。

  PID TTY      STAT   TIME COMMAND
    1 ?        Sl     0:00 /init
    8 ?        S      0:00 /init
   10 ?        Ss     0:00 ./wslconnect wsl -F -p 127.0.0.1:22006
   11 pts/1    Ss     0:00 -bash
   18 ?        S      0:00 fcitx
   23 ?        S      0:00 dbus-launch --autolaunch 0f1a3077d3824631b620f765ec669315 --binary-syntax --close-stderr
   24 ?        Ss     0:00 /usr/bin/dbus-daemon --syslog-only --fork --print-pid 5 --print-address 7 --session
   30 ?        Ss     0:00 /usr/bin/dbus-daemon --syslog --fork --print-pid 5 --print-address 7 --config-file /usr/share/fcitx/dbus/daemon.conf
   34 ?        SN     0:00 /usr/bin/fcitx-dbus-watcher unix:abstract=/tmp/dbus-zmnAocraZz,guid=811b0d49fc7ef7d40fab4f1061c3b5ba 30
   35 ?        Sl     0:00 /usr/lib/mozc/mozc_server
   84 pts/1    R+     0:00 ps ax

念の為、以下のとおり入力メソッドがfcitx-mozcになっているか確認する。

$ fcitx-configtool

f:id:hymd3a:20211223142327p:plain

fcitx-configtoolでMozcを確認

再起動後に、全角/半角キーを何度か押すことにより、なんとか日本語入力ができるようになる。

なんとかというのは、Mozcの変換ができるようになるのが気まぐれなためである。

実行例

実際にgvimfirefoxの実例が以下のとおり。

gvim &

f:id:hymd3a:20211223133003p:plain

gvimでの日本語入力
firefox &

f:id:hymd3a:20211223133043p:plain

firefoxでの日本語入力

もちろん、いずれのソフトもメモ帳等にあらかじめ日本語を入力しておき、ペーストすることは可能である。

f:id:hymd3a:20211223133218p:plain

gvimで日本語のペースト

f:id:hymd3a:20211223133302p:plain

firefoxで日本語のペースト

関連ページ

MobaXtermでWSL2のGUIを表示する

(2021-12-22 初稿 - )

はじめに

WSL2はインストールし、以下のページ記述した。

インストールしただけではGUIのソフトウェアは動かないので、GUIを表示させる方法を検索した。検索した中では、MovaXtermでGUIを表示させるのが一番簡単そうだった。WSLgが開発されているようなので、それまでのつなぎかな…

ここでは、MovaXtermのインストールについて記述する。

なお、インストールは、以下のサイトを参考にさせていただいた。多謝。

MobaXtermのインストール

上記サイトから、MobaXtermのInstaller Editionをダウンロードして、圧縮ファイルを展開後、msiファイルでインストール。

WSL2のためのMobaXtermの設定

インストール後、起動すると以下の画面になる。

f:id:hymd3a:20211222081715p:plain

インストール直後のMobaXterm
  • 赤丸を付けた「Session」をクリック。

f:id:hymd3a:20211222082145p:plain

SessionをクリックしたMobaXterm
  • 赤丸を付けた「WSL」をクリック

f:id:hymd3a:20211222082313p:plain

MobaXtermのWSLの設定画面
  • Distributionを「Default」、Run Methodを「Localhost connection」に設定して「OK」をクリック
  • 続けて、初期画面のメニューの「Sttings」、「Configuration」、「X11」のタブをクリック。

f:id:hymd3a:20211222083153p:plain

MobaXtermのX11の設定画面

以上で、MobaXtermからGUIを利用するソフトウェアを起動することができる。

LXDEのインストール

インストール直後のDebianには、Xを表示するサーバ等が含まれていないので、軽量で使い慣れているLXDEをインストールした。デスクトップ環境はお好みで。

$ sudo apt install lxde

GUIソフトウェアの起動例

基本はすべてのGUIソフトウェアが動作すると思うが、以下に実際に動かしたGUIソフトの例を示す。

$ sudo apt install x11-apps
$ xeyes &

f:id:hymd3a:20211222085939p:plain

Xeyesの起動

MobaXtermから離れて、Windowsのアプリのようにデスクトップ上に表示することができる。

LXDEのインストールのときに同時にインストールされるFirehoxの起動。(初回の起動には時間が掛かる。)

$ firefox &

f:id:hymd3a:20211222090336p:plain

Firefoxの起動

Firefox等では、日本語の表示はできても、日本語入力ができるときとできないときがあるので、解決方法を探る必要がある。

おわりに

MobaXtermは、多機能で筆者が理解しているのは極々一部である。WSLgが開発されているとのことで、それまでのつなぎのつもりだったが、MobaXtermがあまりに高機能で、もうこれでいいんじゃないかと思ってしまう。

もっと便利な利用方法がわかったら追記する。

関連ページ

WSL2のインストールとエラー対策

(2021-12-21 初稿 - )

はじめに

WSL2(WIndows Subsystem for Linux)は、WindowsLinuxを動作させる仕組み。

ASUS VivoBook X512JA にインストールした記録と生じたエラー対策のメモ。

なお、VivoBookについては以下のページを参照のこと。

インストール

以下のページを参考に、前提条件等を確認のうえ、インストールする。

筆者の場合、インストールするLinuxディストリビューションは使い慣れたDebianにしたかったので、管理者権限でコマンドプロンプトまたはPower Shellを起動後、以下のとおり入力する。

wsl --install -d Debian

ちなみに、インストール可能なLinuxのリストは以下で調べることができる。

wsl --list --online  (省略形 wsl -l -o )

インストール自体は無事に終了したようだが、Debianの初回の起動でエラーが出た。

エラー対策

ちなみに、エラーメッセージは「?」で文字化けしており読めないが、エラーコードとhttps://aka.ms/wsl2kernel というURLは読めた。

Error: 0x800701bc wsl 2

エラーコードで検索すると、以下のサイトがヒット。多謝 m(__)m

上記ページによると、Linuxカーネル更新プログラムパッケージがインストールされていないことが原因で生じるエラーとのこと。

さっそく、以下のページから「x64マシン用WSL2 Linuxカーネル更新プログラムパッケージ」をダンロードし、インストール。

無事にDebianが起動するようになった。

インストールされたDebianのアップグレード(^_^;)

さっそく、インストールされたDebianを確認すると、Stretch。(T_T)

なんと、2世代前の安定版。

cat /etc/debian_version
9.4

やや古すぎるので、以下のページを参考に2世代を一気にアップグレードした。(^_^;)

まずは、念のためにStretchを最新のバージョンに

sudo apt update
sudo apt upgrade

続いて、Sources.listの編集

sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
sudo vi /etc/apt/sources.list

(最低限、以下のリストを記載)

deb http://deb.debian.org/debian/ bullseye main non-free contrib
deb http://security.debian.org/debian-security bullseye-security main contrib non-free
deb http://deb.debian.org/debian/ bullseye-updates main contrib non-free

sources.listを編集後、以下のコマンドを順番に実行。

sudo apt update
sudo apt upgrade --without-new-pkgs
sudo apt full-upgrade

2世代一気にアップグレードしたが、無事に終了した。

後は、BullseyeにアップグレードしたDebianを、ていねいに育てて行くつもり。

ネットで調べたら、古いバージョンのDebianがインストールされた場合は、Microsoft Storeからインストールすれば良いとのこと。こちら、Windows音痴で「Storeって何?」の状態なので知らなかった。(^_^;)

(つづく)

関連ページ

WindowsのノートPC(ASUS Vivobook X512JA)を買ったよ

(2021-12-20 初稿 - 2021-12-21 追記)

WindowsのノートPC(ASUS Vivobook 512JA)を購入した。

もちろん、これまでもWindowsのノートPCを購入してきたが、Linuxにすぐに入れ替えてしまったので、Windowsノートを持っていなかった。今回購入したノートPCは、WSL2(Windows Subsystem Linux)を試すために購入した。なので、Windowsのまま利用するつもり。

f:id:hymd3a:20211220164154j:plain

購入したノートPC

f:id:hymd3a:20211220164220j:plain

ディスプレイを閉じた状態

主なスペック

画面サイズ:15.6型(インチ)

CPU:インテル Core i7 1065G7(Ice Lake)/1.3GHz/4コア CPUスコア:8791

ストレージ容量:SSD:512GB

メモリ容量:16GB

OS:Windows 10 Home 64bit

重量:1.7kg

自宅で使うことを想定したので、画面が大きくてやや重いノートPC。

カスタマイズ

あくまでも、WSL2を利用するために購入したので、Windowsの方はほとんどカスタマイズしていない。

  • Windowsアップデートで最新のソフトウェアに更新
  • Google Chromeのインストール
  • タッチパッドのスクロールの上下を反転させた。具体的には、「設定」、「デバイス」、「タッチパッド」、「スクロール方向」で「ダウンモーションで下スクロール」に変更。これまで使ってきたノートPCがそうだったというだけ。

f:id:hymd3a:20211220184438p:plain

タッチパッドの動作の変更

なお、WSL2のインストールと設定については、別ページにアップする予定。

インプレッション

  • 画面サイズが大きいので、デスクトップに劣らない視認性
  • 薄型だが大きく、重量も1.7kgあるので常時持ち運ぶのには不向き
  • 動作は軽快で、Office関連の仕事は十分。
  • 電源アダプターが比較的小さく持ち運びに便利

f:id:hymd3a:20211220164347j:plain

比較的小さい電源アダプタ

その他

このノートPCにはケースが付属していないが、ダイソーで300円で売っている13インチ用ノートPCケースがピッタリだった。

f:id:hymd3a:20211220164728j:plain

ダイソーで売っていた13インチ用パソコンケース(300円)

関連ページ