Archive for the ‘MusicBee’ Category

MusicBeeに登録したビデオのメタデータ(特にカスタムタグ)を移行するのにDBの内容を直接使おうとしたので、DBのフォーマットを解析してみた。全容は解明できていないが、結構分かったので書く。なお、実際の移行にはDBを使わないことにしたので、これ以外の情報は追加しない。

  • 使用したMusicBeeのバージョン: 2.5
  • DBのファイル名: MusicBeeLibrary.mbl

※以降で"0xMN"は16進数。

ファイル構造:

  1. (ファイルの先頭) 1 0 0 : DBの開始
  2. 0 2/3/5 1/6 0xff : エントリの開始
    • 2バイト目: エントリのタイプ?: 3= 音楽, 5= ビデオ
    • 3バイト名: 不明
  3. 11バイトの0 またはデータ(内容不明)
  4. 0 + ファイルのパス: 可変長データ
  5. タグ(可変長データ)の連続
  6. 0x77 1 (0x4d/0x46)= エントリの終わり?: ない場合もある。
  7. (次のエントリの開始)

※ただし、フォーマットが違う部分がある。また、DBの最初付近しか見ていないので、後半に別の構造があるかも知れない。

可変長データの構造:

  • データタイプ (1バイト。ただし、ファイルのパスでは2バイトで 0xf0 1になっている場合がある)
  • データの長さ (1バイト)
  • データ (可変長。文字列はUTF-8と思われるが、未確認)

データタイプ:

  • 0= ファイルのパス>
  • 2, 8= アルバムアートのファイル名?
  • 0x1e= アルバム名?
  • 0x1f= アーティスト
  • 0x20= ?
  • 0x2b= アルバムアーティスト?
  • 0x3b= ジャンル
  • 0x41= タイトル
  • 0x49= レーベル?
  • 0x58= 年?

※上記以外のほとんどはカスタムタグ。私の環境では、最初のカスタムタグのタイプは0x2eだった。

  •   0
  •   1

昨日辺りから、MusicBeeからgmusicbrowser(GMB)への移行に関して残っていた、USBメモリなどのデバイスに曲を同期(転送)する機能を作る作業が捗って、基本機能がほとんどできた。

機能概要は以下のとおり。(MusicBeeのデバイス同期機能にならった)

  • 転送対象: GMBの管理している曲。特にフィルタ(=自動プレイリスト)の結果の曲。
  • 転送先: USBメモリなど (Linuxのディレクトリなら何でも可)
  • 転送時の処理: MP3でないファイルはMP3に変換して転送する。
  • その他: 同期先にあって同期元にないファイルは削除する。

どのようにGMBに組み込む(連携させる)か、いろいろ考えたのだが、GMBのexportプラグインを改造することにした。これには多くのメリットがあった。

  • プラグインなので、(外部コマンドを自分で起動するなどせずに)GMBからシームレスに起動できるようになった。
  • GMBのプレイリストをファイルに保存する機能があるので、それを使って、同期対象のファイル一覧を作れる。(当初は自分でプレイリストを保存する手順が必要かと思っていたのが、不要になった。)
  • 外部コマンドを呼ぶ機能もあるので、それにならって、実際に同期を行う外部プログラムを起動できる。
  • 設定機能もあるので、同期機能の設定を作る時の参考になる。

それからいろいろ検討した結果、以下のような作業・処理手順を実現することにした。

  1. デバイス(USBメモリ)を挿す。
  2. GMBで、同期対象のプレイリスト(フィルタ)や曲を右クリックして、"Sync to directory"を選択する。
  3. (以下の処理が終わるまで、GMBは待ち状態になる。)
  4. 同期プログラムは、指定された曲に対して、以下の処理を実行する。
    1. その曲が同期先(デバイス)にある場合には、何もしない。(同名だが内容が違う場合に備えて、ファイル名以外にタイムスタンプでも判定する: ホストの日時 > メモリの日時 → 転送する)。
    2. その曲が同期先にない場合、曲のフォーマットがMP3でなければMP3にし、トラックの最大値を統一する(例: -0.9dBになるように、データを増幅する)。同時に、再生ゲインのタグを除去して、同期先にコピーする。
  5. 同期プログラムは、同期先にあって同期元にないファイルを削除する。

ある程度実装した後、以下の問題が見つかったので、対処した。

  • GMBは同期プログラム(外部プログラム)の終了を待たない。→ 同期結果が分からない。→ 同期するプログラムで、途中経過や結果のダイアログを出すことにした。
  • 同期元のトップディレクトリは一つでないので、それを元に同期先のトップディレクトリを設定してはいけない。→ 同期するプログラムで、同期先のトップを指定するようにし、トップ下のディレクトリは曲のタグ(アーティスト、アルバム)から生成するようにした。
  • どうやって同期先のトップディレクトリの指定をするか。→ GUIプログラムzenityでファイル選択ダイアログを出すことにした。
  • 元のファイルにトラックの最大値(REPLAYGAIN_TRACK_PEAKなど)がある場合は、改めて最大値を求めずにそれを使えばいい。
  • SOXでは日本語のMP3のタグ(アーティストなど)が文字化けする。→ ffmpegを使うことにした。
  • カーナビでアルバムアートを表示させたいので、MP3にアルバムアートを埋め込む必要がある(埋め込まないと、カーナビには表示されないため)。→ オリジナルのディレクトリからアルバムアート(cover.jpgなど)を探して、縮小してMP3に埋め込むことにした。
  • 処理(特にMP3へのエンコード処理)が遅い。→ とりあえず、ffmpegを2スレッドで並列化した(-threads 2)。本当はファイルごとに別プロセスで処理するといいのだろうが、結構面倒だ。→ その後、MP3には-threadsは効果がないことが分かったので、止めた。(10/28 5:53)

以下、実装時の細かい話を書く。

  • 同期先のファイル名は、同期元のファイル名のsuffix(拡張子)を"mp3"に置換して生成している。が、今思えば、タグから作っても良かったかも知れないし、通し番号でも良かったかも知れない。
  • ファイル名によっては、特殊な文字("や()など)が入っているため、外部コマンドに渡す際にファイル名をクォートする処理が必要だった。
  • 同様に、USBメモリはVFATなので、同期先のファイル名中の、VFATで使えない文字は"_"に変換するようにした。
  • 再生ゲインタグの抽出にはexiftoolを使った(-s2)。ffmpegでも可能だが、exiftoolの方が速かったためである。
  • FLACとMP3では再生ゲインタグの名前や記法が異なるので(下の例を参照)、両方に対応した。
    • FLAC: REPLAYGAIN_TRACK_PEAK: 0.921652
    • MP3: User Defined Text               : (replaygain_track_peak) 0.921652
  • 同期元に再生ゲインタグがない場合に最大音量を求めるのには、ffmpegを使った(-af volumedetect)。この場合は、エンコードの前に追加処理として行うため、処理が遅くなる。
  • ffmpegでの音量の正規化は、loudnormフィルタがちゃんとしているようだが、車で聴くのにそこまでする必要はないため、MusicBee同様、volumeフィルタで最大値を設定することにした(例: volume=-0.5dB)。← volumeに指定するのは絶対値でなく増減なので、最大音量近くを意図して-0.5dBを指定するのは誤っている。(10/29 18:29)
  • 再生ゲインの計算は単純な最大値ではないようなので、元のファイルに再生ゲインタグがない場合は、警告を出して、正規化を諦めるようにした。ffmpegでloudnormフィルタを使えば求められるが、それにしてもGMBで再生ゲインを求めたファイルと音量差ができると考えたからだ。そもそも、元のファイルはすべて再生ゲインタグを入れている前提なので、問題は生じないはずである。(10/29 18:29)
  • 不要なタグの削除は、エンコード時にffmpegで行った。(例: -metadata REPLAYGAIN_ALBUM_GAIN=)
  • 少しでも小さいファイルサイズで音質を良くするため、MP3は可変ビットレート(例: -q:a 3)でエンコードした。ちょっと聴いた限りでは、音質に問題はなかった。品質に3を指定した場合、平均ビットレートは約180kbps程度になり、ファイルサイズはFLACの1/5程度になった。
  • アルバムアートの埋め込みも、エンコード時にffmpegで行った。
  • アルバムアートの埋め込み前に、convertコマンドを使って256x256画素にしている。元のサイズがそれより小さい場合は処理しないようにしたいが、今はいつも処理している。→ その後、縮小のみをする方法が見つかったので、元のサイズが最小サイズより小さい場合は、拡大しないようにした。(例: -resize "256x256>") (10/29 18:35)
  • 上述のように、ffmpegでさまざまな処理を一気にしているため、ffmpegを起動するコマンドラインがかなり長くなった。
  • 同期先にあって同期元にないファイルの削除は以下のようにしている。
    1. 同期の前に、同期先のファイル一覧を取得する。
    2. 同期中に、同期またはスキップしたファイル一覧を保存しておく。
    3. 同期終了後に2つの一覧を比較し、同期したファイル一覧にないファイルを削除する。
  • 削除機能の基本動作は問題なかったが、ファイル数が多い場合に使用メモリ量や負荷が高くなる可能性があるので、要注意だ。

実装後、この同期プログラムで作成したMP3ファイルがカーナビで再生でき、アルバムアートも表示されることを確認した。

以下、操作時の画面キャプチャを示す。

最後に、同期機能に関して以下のような残件はあるが、現在のところ、GMBに大きな問題はなく、この先にもあるとは思えないので、MusicBeeからGMBへの移行は完了したと考えてよいだろう。

  1. 同期プログラムのオプションを実装する。
  2. exportプラグインの設定画面で同期のオプションを設定できるようにする。
  3. 細かい調整・高速化
  4. 全体的な動作確認
  5. 詳細な動作確認
  6. 実際に使っているUSBメモリにフル同期(全曲を同期)してみる。
    1. 所要時間を測る。
    2. 使用メモリ量を測る。
    3. カーナビで再生を確認する。

上の1, 2を実装し、同期中のファイル名を表示し、同期結果に実行ログも表示できるようにした。(10/27 21:46)

3の高速化について、ffmpegのマルチスレッド指定(-threads)は効果がなかったので、複数ファイルのエンコードを同時に実行できるようにしてみた。すると、曲にもよるが、6ファイル(プロセス)を同時に処理した場合には、約3-4倍高速になることが分かったので、6プロセスでの並行処理を採用することにした。以下に、いくつかの測定結果を示す。(CPU=Core i7-2600, 転送元=HDD, 転送先=SSD)

・ポップス 28曲 (Blondie, FLAC, 125MB)

  • 1プロセス: 112s → 4s/曲, 1.1MB/s
  • 2プロセス: 65s → 2.3s/曲, 1.9MB/s
  • 4プロセス: 39s → 1.4s/曲, 3.2MB/s: 1プロセスの約3倍速
  • 6プロセス: 29s → 1s/曲, 4.3MB/s: 1プロセスの3.9倍速

・クラシック 6曲 (ブロンフマン, FLAC, 313MB)

  • 1プロセス: 81s → 13.5s/曲, 3.9MB/s
  • 2プロセス: 49s → 8.2s曲, 6.3MB/s
  • 4プロセス: 34s → 5.7s/曲, 9.2MB/s: 1プロセスの2.4倍速
  • 6プロセス: 26s → 4.3s/曲, 12MB/s : 1プロセスの3倍速

なお、6プロセス同時の場合、CPU使用率は75%程度まで上昇した。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_2016-10-28_21-42-49-1

ここまでやって大分良くなったし、プログラムもなかなか本格的になったのだが、まだまだ9.75合目程度で、完成までにはもう少しある。そして、ここからは結構辛い。。。(10/28 22:25)

 

PS. これが完成して気が向いたら、他の改良・修正(主なものは以下のとおり)と一緒に作者に送ってみようかと思っている。(僕からすれば、)寄付よりはいいかなと思う。

  • 再生ゲインモード(off/album/track)の切り替えを(設定画面でなく)メニューで行えるようにした。(頻繁に使うため)
  • 「今の曲が終わったら停止のon/off」を行う内部コマンドを追加した。(リモコンで行いたいため)
  • 設定の"Remember playing position between sessions"をonにしている時、次回起動時に再生を開始しないようにした。(文面通りにした)
  • Queueの"Stop after this song"がonの時、再生終了後、次の曲に進む(ただし、停止のまま)ようにした。(次回の再生時に次の曲に進める手間を省くため。MusicBeeに合わせた)

そして、オープンソースプログラムは自分でいろいろ改良・修正できるので、やっぱりすごくいいと思う。そして、GMBはプログラマーにとって、最高の音楽プレーヤーだと思う。

(23:30 加筆・修正; 10/27 5:35 少し加筆;10/28 5:53 ffmpegの-threadsについて追記;10/28 22:25 並列処理について追記; 10/29 7:24 わずかに修正; 10/29 18:35 再生ゲインタグがない場合とアルバムアートのサイズが小さい場合について更新)

  •   0
  •   1

疲れたので、この週末はプログラミングは休むつもりで居たが、Linux移行作業は進めていた。しかも、気付いたら、散歩や掃除などの予定していたことを何もせずに、プログラミングしていて日が暮れていたという体たらくである。

が、そのおかげで、MusicBee(MB)からgmusicbrowser(GMB)への移行がかなり捗った。MB関連で残っていたのは、以下である。

  1. 音楽ファイルの管理の移行
  2. デバイスとの同期
  3. GMBのリモコン(I/Oデータ USB-IRUNIT2)対応

それらのうち、1と3ができた。

まず、音楽ファイルの管理の移行での問題点は以下だった。

  1. GMBはWAVとWMAをサポートしていないので、一覧に出ず、再生できない。
  2. MBのカスタムタグのGMBへの移行。

WAVとWMAの件は、基本的には単純で、それらをFLACに変換すれば良い。なお、それら以外にGMBのサポートしていないフォーマットは使っていなかった。

手順としては、MBの自動プレイリストでWAVとWMAのファイルを抽出(検索)して、それらに対してフォーマット変換を行った。ちょっと面倒だったのは、変換したファイルをサブディレクトリに入れたかったのだができなかったことと、WAVには再生ゲイン(その曲の音量の最大値のようなもの。いろいろな曲の音量を揃える時に使う)の値が入っていないので、変換後に計算する必要があったこと程度だ。

サブディレクトリについては、おそらく、MBの変数を使えばできたのだろうが、入力画面には出ず、どうせヘルプドキュメントもなく、調べるのが面倒だったので、同じディレクトリで我慢した。WAVなどが同じディレクトリにあっても、GMBはそれらを認識しないのだから、自分でディレクトリを見ない限り、問題はない。

その量は膨大で、約8600個(約220GB)もあり、全ファイル数の半分以上だった。変換には4スレッドで約5時間掛かった。FLACに変換後のサイズは約70GBだった。なかなか気持ちよく圧縮された。もちろん、HDDにはまだ余裕があるし、何かの間違いがあるかも知れないので、元のファイルは消していない。なお、WMA(ロスレス)からFLACへの変換がロスレスなのかちょっと心配はあるが、どっちにしても聞き分けられないので、問題はない。この処理によって、念願だった、GMBでビートルズの曲が聴けるようになった。

なお、再生ゲインの計算は約2000ファイルに対して実施し、約30分掛かった。

次に、カスタムタグの移行を行った。カスタムタグは、MBだけの特別なタグで、基本的にはファイルに書き込まれていないので、ファイルを移しただけではGMBは認識しない。また、ファイルに書き込んでいるカスタムタグでも、GMBは「やれば表示できる」程度で検索やソートには使えないので、何らかの対応をする必要がある。それにはいくつかの方法があるのだが、以下のようにした。

  • 値が1/0のタグ (例: 「この曲を無視する」)
    1. 自動プレイリストで、対象の(値が1の)ファイルを検索する。
    2. ファイル一覧を通常のプレイリストにエクスポートする。
    3. それをGMBでインポートして、その中の曲に対して、GMBのラベルを設定する。
  • 値が任意のタグ (例: 購入日)
    • いい解決策がなかったのだが、幸い、音楽ファイルではタグも対象のファイル数も少なかったので、手で、一般的なタグであるコメントに追記した。
    • ビデオファイルにはいくつかのカスタムタグがある(例: ソース)のだが、GMBはビデオが扱えないため、別アプリで対応する必要があるので保留にした。

なお、プレイリストは、MBの設定では"M3U(#EXT)"形式で、絶対パス・UNIX形式でエクスポートし、エディタでパスを修正した。M3U(#EXT)形式でないと、GMBではインポートできない。ファイルの先頭に"#EXTM3U"が必要なようだ。なお、UNIX形式にしても、パスの先頭にドライブ名が残るなど、そのままでは使えなかった。相対パスにしても、ドライブが複数あるためにパスが間抜けになっていて、便利ではなかった。この辺りは、もう少し何とかすべきだろうが、Windowsでしか動かないプログラムに求めるのは酷だろう。

それから、余計なファイルを削除したり無効化したり、タイトルなどが文字化けしたファイルに対応した後、ファイルの過不足のチェックをした。概ね問題はなかったのだが、移行前後のファイル数に若干違いがあった。全体としては、GMBの方が数十個多かった。どうしてかは良く分からないが、誤差の範囲だろうし、少ないよりはいいだろうw いや、実際には、デジタルなので誤差はないはずなのだが、まあ、聴いた時におかしければ対処するから問題ない。そのためにも、オリジナルのファイルは残しておくのだ。

あと、どういう訳かアルバムアートが出ない曲が結構あったので、手で登録したり、なぜか再生ゲインが入ってない曲があったので再度計算したり、同じアーティストでも微妙に異なる綴り(例: "the"と"The")のせいで別人に扱われているのを、手で修正したりした。

リモコン対応は比較的楽だったが、問題点は以下だった。

  • どうやってリモコンとGMBをつなぐか。
  • GMBにないコマンド(今の曲が終わったら停止のon/off)をどうするか。

リモコンとGMBの接続には、以下の方法がある。

  • キーボードのシミュレーション (MBでやっていた方式)
  • MPRIS2
  • DBus

キーボードのシミュレーションはいろいろと面倒なので、却下した。例えば、キーを送る前にGMBのウインドウを探したり、ウインドウマネージャのホットキーを無効にしたりする必要がある。

次に、MPRIS2とDBusはどちらでもいいのだが、GMBにないコマンドを追加する可能性があったので、メッセージの仕様に自由がある(仕様がない)DBusにした。DBusだと、GMBのRunCommandコマンドでほとんど何でもできる一方、MPRIS2は(下位ではDBusを使っているのだが)、仕様にあるコマンドが少なくてできることが余りなく、わざわざ規格を決めたメリットがあるのか、ちょっと疑問だ。

リモコンのキーを読んでDBusで送信するプログラムは、以前試しに作ったものがあったので、改良程度でできた。ただ、思わぬ問題が起こった。リモコンのキーを押すと、ウインドウマネージャが終了するらしく、ログアウトしてしまうのだ。

この原因は良く分からないのだが、おそらく、リモコンのキーがキーとしては滅茶苦茶(文字でなく、バイナリデータ)なので、ウインドウマネージャが誤動作して落ちるのではないかと思う。検索したら、運良く対処方法が見つかった。xinputというコマンドで、リモコンを除外すれば良い。除外するには、リモコンのデバイス名などを調べる必要があった(USB接続なので、デバイス名が変わる可能性があるため)ので、ちょっと手間が掛かった。udevadmやlsusbといったコマンドを使った。

(2016/10/29 7:06 追記) しばらく使っていると、xinputでの除外設定が解除されてしまうようなので(以前あった、xmodmapで変更したキー配置が戻るのと同様か?)、XOrg (X Window Systemのサーバー)の設定にリモコンを無視する設定を追加して、恒久的な対応をした。以下に設定例を示す。

/usr/share/X11/xorg.conf.d/10-evdev.confに追加:
 Section "InputClass"
   Identifier "bad device"
   MatchProduct "I-O DATA DEVICE,INC. USB-IRUNIT2"
   Option "ignore" "on"
 EndSection

なお、リモコンはudevというプログラムでLinuxに自動的に登録されるのだが、デフォルトでは管理者(root)以外はアクセスできない。そのため、リモコンを認識した後で、他人もアクセスできるようにする処理をudevに設定を追加した。

それからリモコン関係の機能追加をした。まず、面倒だと思っていた「今の曲が終わったら停止のon/off」コマンドをGMBに追加した。「今の曲が終わった後の動作の指定」のコマンドはあったので、それのコピーと修正(現在の状態を元に、新しい状態を設定する)でできた。更に、Windowsでやっていた、リモコンの電源ボタンで休止する機能も付けて、リモコンは完璧になった。

今気になっているのは、あるプレイリストを再生中に別の曲が入ってしまう問題である。例えば、ポップスのプレイリストを聴いているのに、途中でクラシックが入ることがあった。やっぱり原因はわからないのだが、GMBの設定で、「現在の楽曲は常にプレイリストにある」と「最新の楽曲」をoffにしてみたら、今のところ再発していない。それにしても、どちらも意味不明な訳ではあるが、自分でやる気はしないので、文句は言わない。ただ、設定がなくて英語にできないのが、ちょっと不便だ。Linuxのデスクトップアプリは、OSの言語設定に合わせるのが流儀なのかも知れない。

もう一つ気になっているのは、戻れる曲数に限度があることだ。1曲程度しか戻れない。シャフルしているせいだろうか。まあ、戻ることは滅多にないので、問題ではない。

という訳で、残ったのはデバイス(USBメモリ)との同期だけのはずだ。それについては、方法を考えた。基本的には、soxというオーディオファイル処理プログラムと、デバイスとホスト間のファイル同期処理(デバイスにないファイルだけを転送する)を併用すればできそうだ。

もちろん、ファイル同期プログラムは世の中にいくつもあるのだが、以下の特別な処理が必要なので、使えない。

  • デバイスに転送する時に、MP3でないものをMP3に変換する。
  • 再生ゲインを恒久化する(タグの数値でなく、データ自体を増幅する)。
  • 再生ゲインのタグを除去する。

ファイルの同期はデジカメでもやったので、それほど難しくないだろうから、あとは実装するだけだ。

そして今は、MusicBeeでなくgmusicbrowserで音楽を掛けている。VirtualBoxとその上のWindows 7を動かさずに済むようになったおかげで、メモリ使用率は12%程度に減り、平常時のCPU負荷も2%程度に減った。全くいいことづくめだ。更に、GMBに再生ゲインの切り替えメニューを追加できれば、差し当たっては言うことは何もない。最高の音楽プレーヤーのできあがりだ。

その後やる気が出て、GMBに再生ゲインの切り替えメニューを追加できた。先日試しに作ったコードがそのまま使えた。今は設定するだけで、現在の状態(off/アルバム/トラック)は表示できないが、結構便利になった。あと、ダウンロードしたソースだとなぜか英語表記になっていて、更に都合がいい。(23:44)

20161023-gmb-add-rg-1

その後、ちょっと苦労したが、なんとか再生ゲインの切り替えメニューに現在の状態を表示できた。まったくPerlは判じ物で、どうなっているのか理解できないが、便利なのは認める。(10/25 4:15)

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_2016-10-25_04-13-07-1

  •   0
  •   0

昨日から、Windows 7からLinuxへの暫定移行作業(「トライアル」ってやつか)を開始した。移行はまだ途中だが、予想外にうまくいったこともあるし、そうでないこともあった。ここでは、今までのメモを書く。ちなみに、この投稿は完全にLinux環境で書いている。

準備・OSの入れ替え:

  • Windowsのシステムディスクは、容量不足になって使っていなかったIntelのSSD(容量約120GB)にコピーすることにした。コピーツール(EaseUS ToDo Backupの無料版)でクローンしたら、全く問題なく別のPC(元Linux評価用PC: Vision-HT)で起動した。以前は、GPTのディスクのコピーは有料版でないと駄目だった覚えがあるが、大丈夫になったのか。
  • Intel SSDの容量がギリギリだったので、コピー前に、不要なファイルを削除した。ただ、約20GBも食っている\Windows\winsxsを消すことができないので、ちょっと苦労した。大きかったのは、\Windows\tempやlogsやEvernoteのディレクトリだった。また、休止しないようにして、hiberfile.sysも消した。休止しないようにする方法が分からなかったが、調べたら、コマンドラインで"powercfg.exe /h off"を実行するとのこと(なんで、こういうのがGUIになってないのか、理解に苦しむ)。
  • メインPCにシステムディスク(ADataのSSD)ごと移したLinuxは、全く問題なく起動した。
  • Vision-HTに移したWindowsも問題なく起動したのだが、ファンの音がうるさかった。最高速になっているようだった。それで、添付のCDから"Extreme tuning"とかいうプログラムをインストールし、ファンの動作設定をしたら、静かになった。最初、この名前ではファンには関係ないと思って諦めかけたのだが、試してよかった。ファンの回転数を下げても、CPU温度は43°C程度と問題なかった。

設定・調整:

  • キーボードの配置の変更(CapsLock→ Ctrl; Ctrl → Home; Windows → End)に、予想外に苦労した。xmodmapやxkbを使って変更できたのだが、しばらくすると元に戻ってしまい、とてもイライラした。いろいろ調べて、Xfceの設定で、キーボードを「システムデフォルト」にすると戻らなそうなのでしてみたら、今のところは大丈夫だ。→ 駄目になってしまった。AutoHotKeyのようなアプリで対応できるかな。(12:21) → デフォルトの日本語キーボードの配置を変更したら、今のところはうまく行っている。(10/10 4:23)
  • なお、Windowsキー(左下)はXfceが使っていて、押すとメニューが開くため、設定で右のメニューキーに変更した。
  • 上の設定はVirtualBox上のWindowsには効かないので、WindowsでAutoHotKeyを動かし、同様の設定をした。
  • VirtualBox上のMusicBee 2.5は問題なく動き、音も出た。しかし、たまに音飛びがする。試行錯誤し、以下のようにしたら、今のところは大丈夫だ。もちろん、曲の入ったディスクに頻繁にアクセスすると飛ぶのは、今まで同様。
    • 曲のファイルはVirtualBoxのファイル共有でなく、Samba(LinuxのWindows互換のファイル共有機能)でマウントする。
    • VirtualBoxのオーディオドライバーはALSAにする。
  • ただし、MusicBeeの使うオーディオインタフェースをWASAPIにすると、再生開始時に若干飛ぶことがある。MusicBee 2.5でも3でも同じだ。DirectSoundだと問題ないのだが、どちらがいいのか、悩ましいところだ。VirtualBoxでも、Windowsのカーネルミキサを通さないので、WASAPIは意味があると思っているのだが。ASIO4ALLだったらどうなんだろう? → ASIO4ALLは無意味だった。逆に音がおかしくなる。また、DirectSoundでも頭が欠けることがあるし、コントロールパネルで出す音がおかしい(歪んだり途切れたり)。何かが根本的におかしいのかも。 (10/10 4:25) → いろいろ試したのだが、どうも、VirtualBoxを最新版(5.1)にしたための可能性が高い。apt-getでインストールできる5.0では、再生直後の音切れや、コントロールパネルでの雑音の問題が緩和できた。また、OSの省電力機能のせいという可能性もあると読んだので、CPUのガバナー(governor)というのを省電力からパフォーマンスに変更したのだが、余り効果はない感じだ。また、ALSAミキサー(alsamixer)で自動ミュートもoffにしたが、これも効果はない感じだった。ただ、このシステムは本来Pulse Audioのようなので、そっちに同様な設定があるのかも知れない。 (10/11 19:49)
  • 昔使っていたオーディオインタフェース、ESI MAYA44 XTeを試したのだが、Linuxのドライバがないようだ。PCI版の古いものはあるが、動くかわからないし、入れるのが面倒なので、止めた。
  • MusicBee制御用リモコンでも苦労した。どうしても、VirtualBoxがリモコンを認識しなかったのだ。これは、以前も苦労したことで(それをすっかり忘れていた)、グループの設定の問題だった。自分をグループ"vboxusers"に追加して再ログインすれば認識するようになり、従来通りMusicBeeを制御できるようになった。
  • 昔使っていたメールソフトBeckyは、問題なくWineで動いた。単純素直な作りのものは動くようだ。(あるかどうか不明だが)過去メールを見る時に使うだけだが。
  • ブラウザ(Vivaldi, Firefox, Chrome)のブックマークなどの環境は単純なコピーでできた。が、Vivaldiの拡張機能のセッショマネージャのセッション情報がどこに入っているか分からず、移動できなかった。そのため、履歴などを見て、最後の状態を手で復活させた。
  • RoboFormのデータをKeePass2に入れるのも、前に作ったスクリプトで問題なくできた。ただ、古い情報が多過ぎてKeePass2の起動が遅くなるので、整理が必要だ。
  • データ量が大きいのと、SSDの寿命を縮める可能性があるので、VirtualBoxの仮想ディスクはHDDに移動した。そうしたら、Windowsの起動が目に見えて遅くなった。
  • 画面の右端にウインドウを合わせると最大化してしまうので、設定エディターのxfwm4の"tile on move"をoffにした。
  • NTFSをls(ディレクトリ一覧)すると、ディレクトリが反転色になって見にくいので、色を付けるaliasをやめた。初心者がよくやるような(僕も昔やった)、余計な設定がいろいろ入っていた。
  • Vision-HTでのWindows 7は、Windowsの認証を求められた。電話を使う面倒な操作が要るかと思ったが、クリックだけで通った。頻繁でないからか。

TODO:

  • Linuxを休止できるか試す(また起動しなくなるかも知れないので、結構怖い)。→ 休止できた。長期的に確認する。 (10/10 8:42) → 起動しないことは起こっていないが、休止後、勝手に起動することがある。Windowsでもあった気がするが、LANかUSBが関係しているようだ。あり得ないのだが、とりあえず、WOL (Wake on LAN)しないようにしてみた。(10/10 20:54) → やはり、LANは関係ないようだ。それはそうで、自分では覚えがなくて他に誰も居ないのに、WOLパケットが頻繁に出ているのなら、そのLANは乗っ取られているということだ。しかも、休止した直後にタイミング良くそんなパケットが来ることもあり得ない。調べたら、この現象(休止直後に勝手に復帰する)は結構多いようで、USB3.0 IFが関係している可能性があるようだ。それで、USB3.0での復帰を止めて試している。(10/11 19:41)
  • digiKamの、カメラからの画像取り込み機能を何とかする。: 取り込み先はトップディレクトリしか指定できないが、Windows同様、撮影日のディレクトリに分けて入れたい。 → 想定外のことがあったが、大体何とかなった。後で詳しく書く予定(→ 10/11 20:58: 記述した)。なお、digiKamだけでは駄目だったので、XnViewMPも併用することにした。 (10/10 20:34)
  • Windowsの画像の移行: ACDSeeのキャプションを埋め込むのと、ショートカットをシンボリック・リンクに変更する必要がある。
  • SSD・HDDの寿命・状態チェックプログラムを作って、定期的に実行してチェックする。
  • その他
    • ScanSnapを使えるようにする。 → 済み (10/10 8:42)
    • QuiteRSS, Windows操作用リモートデスクトップビューアのインストール
    • calibreのデータ移行 → 済み (10/10 8:42)
    • ローカルメールサーバの変更 (外部に出さなくて済む) → 済み (10/10 8:42)

気づいたこと:

  • Linux
    • 表示・操作全般
      • OSの起動が結構速い感じ。
      • ブラウザのフォントは綺麗で問題ない。が、行間がちょっと狭い。フォントによるのかな。→ 綺麗だと思って好んで使っていたフォントは"Noto Sans CJK JP"などなのだが、今日の昼間にニュースを読んでいて、NotoフォントはGoogle製であることを知って、ちょっと複雑な気分になった。だって、あの会社が喜んで社会貢献なんてする訳ないじゃないか。絶対裏があるんだよ。例えば、いろいろなコミュニティに影響力を確保するためとか。ある日突然、「フォントの使用条件を変更する。嫌なら使うな」とか言われたら、言うことを聞かざるを得なくなってしまいそうだ。。。でもまあ、その時はその時で、他にもいいフォントが出ているかも知れない。 (10/11 20:30)
      • アナログ時計だけでは、正確な時刻(日記に書くので必要)も日付も分からず、不便なことに気づいたので、デジタル時計も出したら、縦書きになってしまった。何とかしたい。両方出すなんて、昔のデジアナ腕時計のようだ。。。 → 懐かしのxclockを使った(タイトルバーが余計なので、devilspieというプログラムで削除した)。また、パネルのアナログ時計は小さいので、Cairo-clockにした。更に、devilspieでそれらを最上層に表示かつ半透明にした。取って付けた感は満載であるが、実用にはなる。ちなみに、Conkyも検討したが、あまりにも腐っているので止めた。(10/10 8:35) → Cairo-clockも腐っていた(起動時に表示位置を指定すると、表示が崩れる)ので、アナログ時計も懐かしのoclockを使うことにした。それらを、丁度空いている、MusicBeeのコンパクトプレーヤーの下部のエリアに置いた。最上位層に出す代わりに、透明度を75%くらいにして、下にウインドウが出てもそれほど不便でないようにした。oclock(下の画像の上)はX Window Systemが発達し出した頃(1990年代)のソフトでかなり古いけど、外観はCairo-clockより美しいと思う。 (10/11 19:52)
      • %e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_2016-10-11_19-49-43-1
      • 日本語変換モードが左側に出るのは慣れない。Windowsのが下に出ているのも紛らわしい。 → Windows(のタスクバーを)サブディスプレイに出すことにした。
      • マウスホイールの速度が調整できず、何度も回さないといけなくて指が疲れるので、何とかしたい。→ 試行錯誤の結果、imwheelというプログラムで速度を3倍に速くすることができた。2.5倍とかの微妙な調整はできないようだが、指は疲れなくなった。(10/10 8:27) → これの副作用か、Page Up/Downのキーが大きく上下するようになってしまった。(10/10 8:48) → imwheelは加速度を検出する訳ではないので、例えば画像管理ソフトで表示する画像を前後させる時に、複数枚の移動になってしまうのが不便なので使うのを止めて、特にスクロールで指が疲れるブラウザを、マウスジェスチャでページを上下にスクロールできるようにした。まあ、それだったらキーボードで上下させた方が楽な気もするが… (10/11 19:31)
    • キー配置変更の問題
      • KeePassだけキー配置が変わらなかったので、起動するタイミングかと思い、キー変更前の待ちを止めてみた。→ 上述のようにこれは無意味だった。(10/10 8:27)
    •  VirtualBox
      • 画像メモリサイズが不足すると、画面が小さくなる(高さが小さくなった)ようなので、100MBに増やしたら、2画面ともOKになった。 → 画像メモリサイズは関係なく、2画面でシームレスモードが良くないようだ。シームレスモードは1画面でも今ひとつなので、とりあえず、普通の(ウインドウ)モードで使っている。(10/10 4:28) → やはり、シームレスモードは良くないので、ちょっと不便だが、普通のモードにする。(10/10 8:29) → 普通のモードだと、MusicBeeをアクティブにすると、Windowsの仮想デスクトップになっているVirtualBoxのウインドウが上になって他のLinuxのウインドウを隠してしまうので、devilspieで常に最下層に出すようにした。MusicBeeなどを最大化して操作する時は、他のアプリ(たいていはThunderbird)を最小化すれば良い。(10/11 20時)
      • VirtualBoxのアプリを操作すると、マウスのフォーカスがおかしくなることが多い。シームレスモードだから?
      • MusicBeeを最大化すると、Linuxのウインドウの下に隠れてしまって見えない。シームレスモードとサブディスプレイにタスクバーを出しているせい?
      • Windows 7の問題なのかも知れないが、(上述のとおり)サウンドがおかしく、どうしても直らない。特に、コントロールパネルのサウンドの「テスト」ですら、変な音になるので、何かがおかしくなっているようだ。不思議なのは、MusicBeeでWASAPIでなら、まともな音が出ることだ(ただ、しばらく再生していると駄目になる感じ)。このことから、Windowsのミキサー周辺がおかしくなったように思う。(10/10 20:40) → 上述のとおり、どうもVirtualBox最新版とOS(Linux Mint= Ubuntu)の相性の問題のようだ。(10/11 20:03)
    • MusicBee
      • カバー・アートが出ないものがあった。再スキャンしても駄目だった。VirtualBoxの共有フォルダが重複していたせいかも知れない。
    • digiKam
      • digiKamは起動時に画像ファイル名を指定できないので、ビューアになれないので、別にビューアを選ぶ必要がある。 → メインではXnViewMPを使うことにした。(10/10 20:36)
      • 一括処理でメタデータやデータベースを指定するとハングする。: 新版に期待する。→ メインではXnViewMPを使うことにした。(10/10 20:36)
      • ツールチップの配色が悪くて表示される文字が読めない。テーマの設定ができないので、色の変更もできない。: 新版に期待する。→ メインではXnViewMPを使うことにした。(10/10 20:36)
      • 画像数が多いと起動が遅い。→ digiKamはカメラからの画像取り込みだけに使い、メインではXnViewMPを使うことにした。(10/10 20:36)
    • Thunderbird
      • 起動時、(サブでなく)メインディスプレイにしか出てこない。ちょっと間抜け。
      • 定期メール受信がされないことがある。設定をコピーしたせいか? → 気のせいだったようだ。(10/10 4:22)
      • デフォルトブラウザが内部でFirefoxに固定されていて、Linuxの設定を見ていない。それは設定エディタでないと変更できないのが嫌らしい。しかも、4箇所もある! しかも、2箇所は無駄で、再入力する必要があった。何とも常識外れで馬鹿だし、デフォルト検索エンジンの問題もあって、MSと同じ臭いがする。(10/10 20:45)
    •  その他のアプリ
      • Web版EvernoteのコピペがWindowsと違ってちゃんとしているのがすごくいい。純正アプリもWindowsのVivaldiも、ペーストした文字列の前後に、たちの悪い空白が入るが、Linuxでは大丈夫だ。なんとも不思議ではあるが、(今のところ)Linuxに移行した一番のメリットかも知れないw
      • ACDSeeはWineでは動かなかった。
    • その他
      • NTFSはほとんど完全にLinuxのディスクとして使える。単一ユーザで使っているので、設定すればユーザ・グループ名もそれらしく出るし、シンボリック・リンクも使えるので、便利だ。
      • VirtualBox上のWindowsを起動した後に、共有フォルダのマウントに失敗するので、ここ(スクリプトに微妙な誤りがあるので注意)を参考に、マウント前に数秒の待ちを入れた。(10/10 8:47)
    •  システムの負荷状況
      • CPU負荷: 通常時10%前後: 低くはない。
        • VirtualBoxのCPU負荷が高く(topコマンドの%CPUは33程度)、次はVivaldiを操作した時。
      • CPU温度: 41℃前後(室温: 26℃前後): Linuxにファン制御プログラムは入れておらず、BIOSが制御をしているのかしてないのか分からないが、今は問題ない。
      • メモリ使用率: 50%前後 (全16GB): やはり、結構食う感じ。
      • システムディスクの使用率: 58% (全100GB): VirtualBoxの仮想ディスクを削除すればかなり減る。
  • Windows (Vision-HT)
    • NWがつながらないせいで時刻が狂ったのが、なぜか、自動で直らなかったので、手で直した。しばらく待てば直ったのかも。
  • その他
    • iCloudのログインページの構成が変で、KeePassから自動入力できず、不便だ。やっぱり林檎は腐っている。が、金はたんまり払っているので、とりあえず使う。

最後に、恒例のスクリーンショット最新版。

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_2016-10-09_10-46-52_v1

左:メイン、右: サブディスプレイ

 

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_2016-10-10_08-39-41_1

改良後 (10/10 8:40)

 

%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_2016-10-11_20-06-14-1

時計の変更後 (10/11 20:09)

これらの画像が、digiKamなどからVivaldiに「普通に」ドラッグドロップできたので、ちょっと感心した。X11(というか、その上が頑張っているんだろうが)も随分進歩したものだ。

PS. 自分で書いた文章を読んで、やっぱりLinuxは、普通の人が「ただでWindowsの代わりになるじゃん!」なんて軽いノリで使えるものではないことを実感する。物好きが楽しみながら使うものだろう。少なくとも今は。

  •   1
  •   1

すごく眠くて、まともな文章を書く気力がないので、今のLinuxのデスクトップをお見せして、お茶を濁します。

20160922-mint-xfce-desktop-1

(↓「お茶を濁します」と書いた割りにはいろいろ書いてしまったので、暇な方はお読み下さい。)

Linux MintにVirtualBoxを入れ、それにWindows 7を入れ(実際にはMaui Linuxに入れた時の仮想ディスクをコピーしただけ)、その上でMusicBee 2.5 (画面右上。MusicBee 3はUIが嫌いなので止めた)を動かした。VirtualBoxをシームレスモードで表示しているので、MusicBeeがいかにもLinuxで動いているように見えるでござる(←「ござる」と書きたかっただけでござるw)。画面左端はLinuxのタスクバー、下端はWindowsのタスクバー(右端にしたかったのだが、残念な状態になるので止めた)。画面上端はUltraVNCビューアのツールバー。

LinuxのPCは、サブでなくてメインのディスプレイにつないでもいいことに気付いたので、画面がかなり広くなった。その画面をVNCでメインPCに転送してメインディスプレイのWindowsに表示して、メインPCのキーボードとマウスで操作できるようにしている。(入れ子が過剰で、何がなんだか分からないかも…)

仮想化・階層化の概要:

[Linux PC] MusicBee/Windows 7/VirtualBox/Linux Mint

[LAN] VNC (画面・キーボード・マウスの転送)

[メインPC] Windows 7

ちなみに、メインPCのデスクトップには、こんな感じでLinuxが表示されている。

20160922-mint-xfce-desktop-on-win-1

ところが、この設定が終わった直後からLinux上のWindowsが更新をし出して、数日間、ずっと負荷が100%になっていたので、やりたかったMusicBeeでの共有フォルダ上の曲の再生の確認ができず(音切れするので)、某国(あるいは組織・集団)にMSを木端微塵に爆破して欲しい衝動が高まったのは、言うまでもない。

その間、何度Windows Updateの実行と再起動をしたか分からない。「更新を確認しています」とかいうメッセージが出たまま負荷が高くなるだけで経過が分からないので、本当に更新しているのかも分からず、無駄に再起動したりして、とてもイライラした。適用したパッチの数は何百にもなった。いくらソフトの規模が大きいといっても、修正が多過ぎないか? MSの連中はマジで能無しばかりだ。しかも、今だって、この更新が全部終わったか分からない状態で、起動したらまた更新が始まるかも知れないから、一体いつになったら、MusicBeeの確認ができることやら。

そして、更新の間はCPU負荷が高いから、Windowsのせいで世の中の電力使用量がかなり増えているだろうし、膨大な数のパッチのダウンロードでインターネットの通信量は増えているだろうし、その間は作業なんてできないから、社会の生産性は落ちているのではないか。でも、もうすぐ彼らの時代は終わるから、余計な心配だろうw

PS. Linux移行を進める中で、Monoという.NET互換を目指す環境があることを知った。MusicBeeをこの上に乗せれば、比較的容易にLinuxでも動くようになると思うのだが、作者はやる気ないんだろうな。本当にもったいない・・・

やっぱり、挑戦する心を捨てたら駄目だよな。実際には捨ててはいないんだろうが、方向が間違っていると思う。下らないUIいじりなんて止めて、もっとおもしろいことをやるのだ! だって、MusicBeeを超える音楽プレーヤーなんてLinuxには全くないんだから、もしLinuxでちゃんと動けば、すごく広まると思うのだ。それはすごいことじゃないか。

  •   0
  •   1

去年ちょっと検討して、なかなか難しいという結論になった、WindowsからLinuxへの移行。近頃のWindows 10へのあこぎな誘導やiPhone版Outlookの低レベルなサポート、そして、Microsoft全体に蔓延していると感じる、個人情報の安易な扱いにほとほと嫌気がさして、数日前から再び、Linuxへの移行を本格的に検討している。

細かく書くととても長くなるので(実は全部書きたいのだが)、とりあえず、今日までに分かったことや決めたことなどの要点を書く。

決めたこと:

  • Windowsは絶対に止める。7の後はアップデートしない。
  • Windows 7がサポート終了になる、2020/1/14までに移行を終わらせる。
  • 移行先として、Macはとても有望(Windowsで使っているソフトのほとんどが動くので)だったが、やっぱり止める。MSよりはマシとはいえ、あのセンスがいいとは思えないし、Appleの思惑に右往左往させられたくないから。

移行時・後に特に気になること:

  • 休止状態がサポートされているか。
  • 終了前後のセッション(アプリ状態)の保存・復旧が可能か。
  • 音楽プレーヤーMusicBeeが動くか。
  • MusicBee用リモコンも使えるか。
  • ドキュメントスキャナScanSnapが動くか。
  • キヤノンのデジカメがつながるか。
  • Evernoteが動くか。
  • iTunesが動くか。
  • 画像管理ソフトACDSeeが動くか。
  • グライコの制御ソフトDEQ2496remoteが動くか。

分かったこと:

  • 休止状態は概ね可能とのこと。若干問題があるようなので、今後、改良されることに期待する。
  • デスクトップ環境Xfceなら、セッションの保存・復旧が可能。
  • キヤノンのデジカメは、Ubuntuの標準アプリ(Shotwell)で対応できる。
  • LinuxでWindowsのソフトを動かすWineは、僕の環境ではほとんど使い物にならない。
    • MusicBee, ScanSnap, iTunes, ACDSeeは動かなかった。
    • DEQ2496remoteは、意外にもうまく動いた。
  • 同様に、Windowsのソフトが動くとうたっているCrossOver Linuxに大した価値はない。これのキモはWineで、サポートされているソフト(大抵バージョンが古い)については素晴らしくうまく動くのだが、サポート外のソフトは全く駄目だった。

決断:

  • MusicBeeとACDSeeは、Linuxの他のソフト(いいものがあれば)で代替する。
  • ScanSnapとiTunes※は、Linux上で仮想環境Virtualboxを動かし、その上のWindows 7で動かす。(要動作確認)
  • ScanSnapは、切り替えの頃までにLinux対応の製品が出るのを期待する。
  • その他はLinuxのソフトに移行する。同じ物があればそれを、なければ同等のものを探す。

(9/7 7:32追記) ※以下の理由でiTunesは必要ない可能性が高い。

  • アプリはwebで調べて、iPhoneでインストールできる。
  • iOSの更新もiPhoneだけでできる。
  • バックアップは(嫌いだけど)iCloudでいい。
  • Appleの音楽は買わなければいい。
  • LinuxからiPhoneの画像が取れるだけでいい。

代替ソフト・手段の調査:

  • MusicBeeの代わりは、AmaroKかClementineが有望だ。必要な機能はある(詳細は追って確認する)。ちなみに、以下のソフトを、再生音量の正規化(リプレイゲイン)が可能か、自動プレイリストが作れるか、リモコンでの操作の可能性の観点で比較した。
    • Audacious, Banshee, Clementine, Lollypop, AmaroK, VLC, Rhythmbox, Gnome Music, DeaDBeef, Tomahawk, Nuvola Player, MPD + Gnome music player client, Sayonara Player, Aqualung, Quod Libet, Guayadeque, Juk, Nightingale, Decibel Audio Player, YAROCK Music Player
  • 音楽プレーヤー用のリモコンは、今使っているI/OデータのものがLinuxでも認識でき、簡単なプログラムを作って、AmaroKやClementineを制御できることが分かった。
  • ACDSeeの代わりは、以前も試したXnViewMPしかなさそうだ。コメントの文字コードとカテゴリの移行が解決すればOKだ。
  • Evernoteは、今のところいいものがないので、継続して調査する。なければweb版を使う。

どのLinux・デスクトップ環境にするか:

  • デスクトップ環境は、Unity, Xfce, KDE Plasma, Cinnamon, Pantheon, MATEをUbuntuに入れて(Unityは元から入っている)簡単に比較し、唯一セッションの保存(再起動時に終了時に動いていたプログラムが自動で起動される)が可能な、Xfceにした。以下に、簡単にコメントを書く。
    • Unity: ものすごく使いたくない(使いにくい)。
    • Xfce: 簡素ではあるが、普通に使える。これだけが、セッションの保存が可能。
    • KDE Plasma: 重い。うまく動かず(画面が真っ黒)、回復不能になった。
    • Cinnamon:  閉じるなどのボタンが見にくい。メニューバーが上下逆(Windows式)。評判がいい割には、大したことない。
    • Pantheon:  OS Xに似ているけど、それが何か?
    • MATE: 間違ってUbuntu MATEを入れてしまった? (これと別物なのか不明)
  • Linuxは、Ubuntu 16, Mint 18, Korora 24, Manjaro 16, Vine 6.3のそれぞれXfce版(ある場合)を簡単に比較し、飛び抜けていいものはなかったので、日頃使い慣れているUbuntuにした。以下に、簡単にコメントを書く。
    • Ubuntu: 良くも悪くも普通。Unity以外は問題ない。
    • Mint, Manjaro:  UIのデフォルトが酷い。ターミナルのウインドウが半透明で見にくい点だけで使う気が失せた。作った人たちは開発をしていないのか?
    • Korora: 特にメリットは感じられない。
    • Vine: いいことはない。内蔵アプリがかなり古い(例: Thunderbirdは24(最新は45)、Firefoxは33(最新は47))のはいかがなものか(Ubuntuのは前述のどちらも最新だった)。それから、標準的なアプリの名前をわざわざ変える(例: Firefox →「Fxウェブブラウザ」)センスは理解不能。また、日本発なのに日本語が少し古臭くて不自然で、妙だった。あと、どうしてもXfceに切り替えられなかった。

という訳で、今後徐々にUbuntu+Xfceに移行して行くことにした。

所感:

Linuxはオープンで、ほとんど標準に準拠していて、大抵直感どおりの動きをするし、分からないことは検索すれば大体出て来るのが、ものすごくいい。Windowsでは、情報が開示されていなかったり、調べにくかったり、昔ながらの腐った独自仕様のためにものすごく苦労していたことが、Linuxではいとも簡単になる。

例えば、リモコンで音楽プレーヤーを制御するのなんて、WindowsではEventGhostというソフトが必要だったのに、Linuxではほんの数十行の自作のプログラム(やり方を調べるのに時間が掛かったが、作るのは1時間程度だった)でできた。Windowsでは、OSも音楽プレーヤー(MusicBee)も閉じてしまっている(標準規格に沿っていない)ため、簡単なプログラムでは対応できず、EventGhostからMusicBeeに疑似的にホットキーを入力するという回りくどい処理が必要になっていた。一方、Linuxの音楽プレーヤー(AmaroKやClementine)はDBusという標準規格を採用していて、LinuxにはDbusを使うコマンドが入っているので、外部プログラムからの制御がとても容易だった。

同様に、Linuxはオープンなので、自分でスクリプト(簡単なプログラム)を書けば、ちょっとした処理を追加できたり、動作を自分好みに変えられるのが、すごく心強い。Windowsにもバッチファイルはあるが、腐った仕様のせいで何をするにも余計な苦労ばかりだし、そもそもできることが少ない。

もう一つ書くと、Windowsの管理は何でもGUIだけど、それだと人に説明するのがとても難しい。大抵、図を貼らなければならない。更に、都合が悪い(?)ところの管理が、分かりにくいテキストUIだけになっている場合があって(→ )、それに気付くとげんなりしてやる気が失せる。でも、Linuxの基本部分は(古き良き)分かりやすいテキストUIなので、文字だけでコピペできて、説明が容易だ。こういうところにも、コミュニティが広がる理由があるのではないだろうか。

国に例えれば、Windowsは北朝鮮か日本、LinuxはUSAという感じだ。Macは難しいが、フランス辺りか。

という訳で、Windowsは終われ!

MusicBeeは、個人的にはかなり気に入っていて、できれば使い続けたかったのだが、もう終わりかなと思う。一番の問題は、作者が閉鎖的(意固地)なことだ。今でもLinux版を作る気がなく(何度も要望されているのに、突っぱねている。それどころが、Windows 10対応を率先してやっていたのには、「センス悪いなあ」と、技術者として本当にがっかりした)、もっぱらUIの改良に専念しているのは、かなり残念だ。自分でできない・やりたくないのなら、オープンソースにすればいいと思うのだが。。。

そして、Windowsでしか動かないので、上に書いたように、ちょっとしたことをするのもとても苦労するから、僕は追加プログラム(プラグイン)を書く気は全くしない。他の人だってそうだろうから、開発者は増えないだろう(考えてもみなよ、誰が好き好んで、趣味でWindowsのプログラムなんて書くかい? そんなの、よっぽどのセンスの悪い物好きとかマゾだよ!)。それではタイムリーな改良や不具合修正がされないし、機能も増えないから、ユーザーも増えないだろう。そんな訳で、せっかくいいものを作っても、寿命を迎えてしまうのだろう。。。

 

PS. ブログ右側に出していた「オススメ音楽プレーヤ MusicBee」は、今日で止めます。

  •   0
  •   2

かなり前から、CDなどのブックレットなどに買った日を記入している(柄や紙質の関係で書けない場合は、ポストイットに書いて貼っている)。大学の友人Wがそんなことをしているのを見てなるほどと思ったので、それから何年か後に始めた記憶がある。まあ、一般的には些細な情報なのだが、後で見ると、「へえ」と思うことがあるし、聴きながら、「いつ頃の曲だっけ」は良くあるが、たまに「いつ頃買ったんだっけ?」と思って見ることもある(近頃は、ブックレットを押入れ収納ケースの中に積み重ねて収納しているので、それは困難になってしまったが)。

ところが、先日、CDからの脱却を決意したので、ダウンロード購入の曲には当然ブックレットなどがないから書く場所もなく、どうやって購入日を記録するか考えていた。もちろん、曲のファイルのタイムスタンプを見れば分かるが、コピーや変換した時に変わってしまう可能性があるので、万全ではない。

それで、少し考えて、ファイルと同じディレクトリに購入日などを記録したテキストファイルを置くという案にし掛けたのだが、それもちょっと面倒なので、曲のファイルのカスタムタグ(名前は"Purchased"にした)に、以下のような書式で購入日と購入元を記録することにした。

年/月/日 (購入元)

例: 2016/8/2 (OTOTOY)

ただ、実際の運用を考えると、ダウンロード購入を頻繁にするようになったら、購入日の設定(記録)を忘れてしまいそうだ。どうにかして自動的に設定できるようにしてみたい気がする。

(以下は、MusicBeeの使い方の話題となる。)

MusicBeeのカスタムタグを曲のファイル内に保存する方法

MusicBeeでは、カスタムタグを定義するのは簡単だ(「設定」→「タグ(1)」の「カスタムタグ」)。ただ、普通にそうしただけでは、タグの情報はMusicBeeのデータベースにしか記録されないので、MusicBeeが使えなくなった場合に失われてしまう。それで、音楽ファイル内に記録する方法を考えた。

問題は、音楽ファイルにはMP3やFLACなど、いろいろな種類があるので、それぞれに対応した記録方法にする必要があることだ。幸い、MusicBeeはそれを容易にする手段を提供している。カスタムタグの定義機能だ。

(以下、MusicBee 2.5の場合)

上で開いた設定ウインドウの、「カスタムタグ」の領域の右下の「新しいタグを定義する」ボタンを押すと、新しい(ファイル内に記録する)カスタムタグを定義することができる。そのウインドウの「識別子」は、そのタグのMusicBee内での名前で、その右の5つの欄には、各ファイル形式(MP3, FLAC・OGG, WV・MPC, AAC・M4A, WMA)でのタグ名を書く。

カスタムタグのタグ名は、基本的には任意の文字列でいいようだ。ただし、MP3では大文字にするのが一般的なようだ。また、WMAでは希望するタグ名の前に"WM/"を付ける必要があるようだ。実際には付けなくてもいいのかも知れないが、付けないと、外部のタグ表示プログラムでは表示されなかった。

細かい話: MP3では、カスタムタグはTXXXタグを使って記述するのが一般的なようだが、MusicBeeは自動的にそうするので、意識しなくて良い。

なお、WAVフォーマットのファイルにはカスタムタグは付けられなさそうだ(WAVに使えるタグはとても限られているので)。

※タグの仕様や内容については、それぞれのファイル形式の仕様を熟知していないので、あくまでも、実際のファイルやプログラムの動作からの推測である。

次は購入日("Purchased")のカスタムタグを定義した例である。

mb-custom-tag-def

基本的には、「識別子」の欄に定義したいカスタムタグの名前を記入すると、右側の各欄が自動的に記入されるので、WMAのところにだけ"WM/"を前に付けて「保存」ボタンを押せば良い。

次に、定義したカスタムタグをMusicBeeから操作(表示・設定)できるようにする。設定の「タグ(1)」の「カスタムタグ」の一覧をスクロールし、未使用のタグを探す(私は「カスタム 7」="Custom7"を使った)。その「表示名」の欄に、MusicBeeでそのタグを表示する際の名前を入れる(タグ名と同じ"Purchased"としたが、「購入日」でも良い)。次に、その右のプルダウンメニューで、先ほど定義したカスタムタグ名を選択する(ここも"Purchased"となる)。

mb-custom-tag-assign

これで「保存」ボタンを押すと、MusicBeeに反映される(この後、ライブラリ内の各ファイルをスキャンする処理がバックグラウンドで実行される)。

音楽ファイルへのカスタムタグ(この場合は購入日)の設定(記録)方法は、以下の手順である。

  1. 設定したい曲を選択し、右クリック→「編集」を選択する。
  2. 「タグ(2)」のタブを選択すると、上で定義したカスタムタグの欄(この場合は"Purchased")があるので、そこにタグに設定する値(この場合は購入日と購入元)を書きこんで、「保存」ボタンを押せば、設定される。

mb-custom-tag-set

設定したタグの表示は、通常と同様に、曲一覧の画面のフィールド名の行を右クリックし、「表示するフィールドのカスタマイズ...」を選択し、先ほど定義したカスタムタグ(ここでは"Purchased")を表示するように設定すれば良い。

mb-custom-tag-show

カスタムタグが本当にファイルに記録されているかは、他のタグ表示プログラムで見ればよい。TagScannerでは、"Advanced"のタブに表示される。Mp3tagでは、ファイルを右クリックして「タグを編集」を選択すると、表示される。

TagScannerでの表示例:

mb-custom-tag-tag-scanner-2

カスタムタグの記録は、曲のファイルをバイナリエディタでダンプしても確認できる。ただし、WMAだけは容易には文字列が見つからない。文字列がUnicode (UTF-16LE)で格納されているためである。

MP3のダンプ例(上とは別の曲、TXXXタグが使われている):

mb-custom-tag-dump-mp3

WMAのダンプ例(MP3と同じ曲、UTF-16LEで記述されている):

mb-custom-tag-dump-wma

(8/2 5:57 WMAのタグの内容について修正、ダンプ例を追加、段落の構成を少し修正、タグについての補足を記載、細かい補足を追加; 8/2 6:07 ファイルに記録する書式と例を追加、若干修正; 8/2 19:06 わずかに加筆)

  •   0
  •   0

[2016/7/19 19:28] 記載が遅くなりましたが、MusicBee 3.0は他の方が翻訳なさっていますので、日本語で使えます。ご安心下さい。

---

[2016/2/12 19:41] 結論を出しました 。

MusicBee 3.0以降の翻訳はしないことにしました。ご理解の程、よろしくお願いします。

butty

---

[2016/2/2 7:10]

MusicBee 3.0のベータ版が出ました。が、私は翻訳を続けるか迷っています。それは、やる気の低下によるものです。以下に理由を書きます。

  • 翻訳対象テキストの追加が多い。出たばかりなのに、2.5で追加された分全体とほぼ同量。
  • 主要な変更はUIとのことだが、私は2.5のUIに充分満足していて、変更のメリットを見いだせない。むしろ、機能面を改良して欲しいのに、何のためのバージョンアップなのか?

それで、少し考えてから続けるかどうかの結論を出す予定です。もし、その前に引き継いで下さる方がいらっしゃいましたら、ここのコメントかメールかMusicBeeフォーラムでbutty宛てのprivate messageでお知らせ下さい。

よろしくお願いします。

PS. 翻訳を止めた後は、バグ修正やセキュリティ対策や(あるかも知れない)機能改良に期待して3.0を随時チェックし、必要になったら3.0を英語モードで使う予定です。(2/6 10:38 加筆)

  •   2
  •   4

文化の日なので、何かそれらしいことをしようと、手持ちのDVD・BDをMusicBeeに登録することにした。ただ、リッピングするとデータ量が多い(し、そもそも違法な)ので、作品情報だけを登録することにした。

なぜそんなことをするかというと、僕はDVDなどのケースを捨てて、CDファイルに収納しているので、何を持っているか分からなくなってしまったからだ。登録しておけば、直接には観られないけれど、観たい・観られるものが手元にあるかを調べることはできる。

ところが、MusicBeeは実体(リッピングしたファイル)がないと登録できない。それで、実体がなくても作品情報だけを登録できる、「仮想ファイル」機能を追加してくれるよう提案して賛同者は居たものの、作者のStevenからはなしのつぶてなので、代替策を考えた。その手順を以下に書く。

  1. 空ファイルを置くディレクトリを作る。
  2. そこに、登録したい枚数分の空のファイルを作る。名前は何でもいい(連番にするといいかも)が、拡張子をVOBにする(MusicBeeがビデオと認識するように)。
  3. 作った空ファイルをMusicBeeのインボックスに入れる。
  4. それらのファイルに、DVDなどの作品情報(タイトルや出演者や年など)を設定していく。
  5. 設定する時、カスタムタグに「リッピングしていない」などのフラグを付けておくと分かりやすい。
  6. 設定したファイルを「ビデオ」のライブラリに送る。

全くの単調作業だ。さっき、約2時間掛けて映画約55枚を登録した。今はネットで作品情報が検索できるので、とても楽だ。

次は音楽作品を登録するのだが、音楽CDのファイルの中に紛れているので、探すのが手間だ。

PS. あ、ファイルに入れていない、ボックス物の登録を忘れた。

PS2. 148枚、全部終わった。(11時)

  •   0
  •   1

あまり紹介されていないようですが、MusicBee 2.5 (正式版)が出ています。リリースノートや変更履歴がないので変更点を列挙できませんが(→ 下に抜粋しました)、いろいろ(細かい点が)改良されています。ご興味のある方はどうぞ。

なお、「MusicBeeの使い方」は2.4に基づいていますが、そのうち2.5に対応させたいです(その時は両方併記にします)。

PS. MusicBeeは、この後、3.0になります。GUIが大きく変わるそうです。ただ、3.0が出るのはしばらく先になりそうです。(20:26)

PS2. 2.5の主要と思われる変更点を、フォーラムから抜粋してみます。(20:53)

  • UPnPプラグイン対応
  • DSD再生対応
  • WASAPI出力のハイレゾ(>48kHz)対応
  • デバイス同期機能の改良
  • 再生時に、トラック間に無音を入れる機能の追加
  • ホットキーの追加
  • メニューの再構成
  • Windows 10での問題の修正
  • バグ修正

PS3. 「MusicBeeの使い方」を2.5にも対応させました。(2015/10/18 15:33)

  •   0
  •   1