Archive for the ‘Linux’ Category

使っているうちに不満(例: うるさい曲がある)が出て来たために、Spotifyの自作ミニプレーヤー(minisp)の音量正規化処理で、音量の補正量をやはり自作再生履歴DB(Mlhi)に記録しおいてそれがあれば使えるようにしようと思ったのだが、そもそも、元々の方式がいい加減では補正ばかりになって良くないことに気付いた。それで、まずは音量正規化処理を改良することになり、今は、その改良した方式の評価のために、Spotifyで再生している曲の音量を自動で測定する機能を作っている※。音量はできるだけ聴感に近い方がいいので、ラウドネス(Integrated loudness: "I", 参考)にした。随分目的から離れてしまった気がするが、きっと気のせいだろうw 自分でやり出したこととはいえ、なかなか面倒だが、いろいろな物を組み合わせて機能を実現するのはおもしろい。

※なぜ自動化しようと思ったのかというと、ラウドネスメーターはあらかじめ曲の先頭で計測開始しておかなければ、正確な音量(Integrated Loudness)が出ないので、だらだらと評価がてら聴いていて「大き/小さ過ぎるかな?」(調整がおかしい?)と思ってからでは遅く、再計測しなくてはならないからである。再計測にしたって、曲全体を再度聴くのは苦痛なので、先頭だけなど一部になって、正確でなくなってしまう。曲間で自動リセットしてくれるような測定アプリがあればいいが、そういうものはなかった。また、GUIに表示された測定値を見て手で記録するのは面倒だし間違い易いから、自動でファイルに記録できれば好都合だ。

更に、複数の補正条件・設定の比較についても、それぞれの条件で評価用のプレイリストを再生しておけば(僕が聴いて居なくても、スピーカーで音を出さなくても)通して測定できるので、(この機能が完成した暁には)容易になるはずだ。

更に、普通に再生しながら、補正条件とその結果の音量を測定してDBに記録しておき、次回はそれに基づいて最適な音量に調整するってことも可能な気がしていて楽しい。

更に、今思い付いたが、AIみたいな機能で、長時間いろいろな曲を自動再生して勝手に学習させて、設定を自動調整するなんてのもいかにもおもしろそうだが、先は長いし、そもそもSpotifyを聴くだけなのにそこまでする必要があるのかと・・・w

こうやって風呂敷夢を広げるから、大変になるのだ。

詳しくは別に書くつもりだが、音量正規化の基本的な処理は、従来と同じようにSpotify APIで取得できる曲(トラック)の特徴量(loudnessとenergy)を組み合わせて、曲の本来の音量を推測(復元)し、それを元に正規化している。今回は、その推測の方法を改良しようとしている。今までは思い付きで対数あるいは指数関数を使っていたが、今は下のグラフのような、energyによって特性(係数)が変化する式を試している。グラフはいかにももっともらしくて うまく行きそうに思えるが、そんなことはないw それに、これは何かの理論に基づいている訳ではなく、やっぱり思い付きや試行錯誤からの経験によるものである。試すとまあまあうまく行く(しないよりはずっといい)のだが、やっぱり限界はあるし、値に問題はなくても聴覚に合わないことがある(合わないものが充分に少なくなったら、補正量をDBに入れようと思っている。が、いつになることやら・・・)。

あと、以前のように、公開DBに音量正規化用の値(再生ゲイン)などがないか探したたら、2つ見付かった。一つは前回も見付かったDynamic range databaseで、もう一個はAcousticBrainzだ。前者は、前回は(記憶している限りでは)APIがないのとレパートリーが狭そうなので止めた。後者は、言い方は悪いが「玉石混交」(「ゴ○屋敷」などもっとひどい言い方はあるが、それは言い過ぎだろう)で、全く手軽に使えないので却下した。確かにデータは多いのだが、全然整理されておらず、ただ数字があるだけで、同じIDなのにそれぞれ随分違っていてどれが正しいのか分からず、禄に検索もできなかったら、どうやって使うのかと思う。

作業の途中で分かったことも多かった。SpotifyのAPIから得られるloudnessは多くの場合はIntegrated LoudnessまたはReplayGainと同様のものなのだろうが、そうでないことが多い。中で変・特殊な処理(音量(loudness)が小さいけどenrgyが大きい曲では更にloudnessを小さくしているフシがある)をしている可能性と、データが誤っている場合もありそうだ。そもそもSpotifyアプリで使っている再生ゲインを出してくれれば、こんな苦労をしなくて済むのだが(アプリの一時ファイルを見たりしたが、それらしい値は見つからなかった)・・・

そもそも、Spotifyアプリの音量正規化処理が「普通」だったら、こんな苦労は全くしなくていい(実際、したい訳じゃなくて、ただ音楽を聴きたいw)のだが、前回書いたように、やっぱり謎の処理をしていることが分かった(何人かの方が書かれていた: )。どうやら、アプリにコンプレッサーとかリミッターのような処理が入っていて、特にすごく音量が小さい曲(僕が気付いた曲: Pink Floyd: "The dark side of the moon"の"Speak to me")でおかしくなるようだ。再生ゲインの値がおかしい可能性はあるにしても、せめてその余計な機能がなければまだ良かったのに、どうもお節介な感じだ・・・

ラウドネスの測定プログラムは、GUIのものならいくつかあるのだが、測定・記録を自動化するのは困難なので、スクリプト(jack_captureで音を録り、ffmpegのebur128フィルタでラウドネスを計算する)を作ってミニプレーヤーに組み込んだ。基本的には、ただ再生しているだけでデータが貯まるから楽ちんなのだが、例によっていろいろ凝るから本末転倒になって、処理が複雑になればバグは増えるからデバッグが大変で、また勝手に疲れている。 ← イマココ

 

PS. 以前、「Spotifyには満足している」と書いたが、誤りではない。が、それはあくまでも曲目と音質についてであって、機能は別であるw

PS2. これを書いていて、技術バカにありがちな、「フラット(あるいはリニア)信仰(あるいは症候群、至上主義)」という言葉を思い付いた。やっぱり、こだわり過ぎは駄目なんだろうと思う。が、気軽に聴いている時に、曲のたびに「うるさい!!」とか「小さい・・・」とイライラしてボリュームを調整するのは嫌だってのは大いにある。

PS3. Evernoteやスマフォ・PCのおかげで紙やペンとは無縁の日々なのだが、さすがにグラフの形を考えるのはEvernoteでは無理で(タブレットなら手描きできそうだが、それも煩雑な気がする)、紙が必要だった。が、すぐに使えたのは小さい電話用のメモ帳しかなかったw

  •   0
  •   0

「一体何なんだ」と言いたいが、前回の投稿の後、昨日から今日に掛けて更にトラブルが重なって起こった。

  • スマフォ(AQUOS sense lite)のアイドル時の消費電力率が増える現象が再発した。: 原因不明
  • 自宅とサーバのオンラインバックアップのエラー: 原因不明(「たまに起こる」としか言えない)・・・
  • サーバからの上記のエラーやその他の通知が、Gmailの迷惑メール判定で何通か届いていなかった。: 近頃、誤判定が増えた感じ。

スマフォの消費電力率の問題は今までにも起こっていて、何度も試行錯誤して直ったと思ったのに解決していなくてがっかりした。増えるといっても、長時間アイドル時に平均0.6%/h以下のものが1%/h近くになる程度なのだが、アプリ(My battery monitorなど)で見ると、アイドル状態なのにアクティブ率が100%のままで(= スリープしていない)下がらず、どうも気分が悪い。どうしても直らないようなら、定期的に再起動させようかと思う。が、再起動も電力を食うのでどっちが得だろうか?

オンラインバックアップの問題も今までにも何度か起こっていて、主な直接的な原因は、たまにバックアップソフト(duplicacy)の内部状態とストレージ(Backblaze B2)の状態が合わなくなることのようだ。起こる都度、暫定対処や様子見(再実行で直ることがある)をして来た。それで大きな問題はなさそうなのだが、本当に問題ないかが分からないのが怖い。

本当の原因はネットワークかバックアップソフト(自作+duplicacy)かストレージのどれかなのだろうが、どれかは不明だ。おそらくduplicacy(通信エラーに対するロバスト性が足りない)だとは思うが、サポート依頼を出すにも説明が困難ではある(でも、出せばスパっと分かってくれることもある)。エラーはサーバのバックアップで起こることが多いので、とりあえず、ネットワークへの送信速度を下げてみた。

Gmailの問題は初めて気付いた。今までにも迷惑判定で落とされたものがあるかも知れないが、仕方ない(「なんかおかしい」ということはあった)。たちが悪いのは、Gmailの迷惑メールはThunderbirdの迷惑メールフォルダには出ないことが多くて(出ることもある)気付かないことだ。Googleの商売のせいか、G Suite(有料版)でないと迷惑メール判定の強度調整(そういうのがあればの話)ができないようなので、落とすと困る差出人からのは迷惑メールにしないフィルタを登録してその場しのぎをし、更に、サーバからの通知メールはGmailに送らないようにした。

根本的な対処には、可能な限りGmailを使わない方がいいのだろうが、(アカウントの生成や破棄が)手軽で容量はふんだんだし、Androidには必須なので、根絶はなかなか難しい。。。 とりあえずは、重要な用途には使わない方が良さそうだw

あんなの飾りです。普通の人にはそれが分からんのですよ??

 

題は見直し中にSpotifyで掛かったより。(9:52)

PS. 更に、ついさっきはUbuntuの更新リポジトリの国内サーバにも接続できなかった。一時的なものだろうが、随分重なるものだ。 (8:42)

  •   0
  •   0

よく、家電の故障は重なるというが、PC関連のトラブルも重なることがある。そして、なぜか、無関係なものがいかにも関係あるかのように出る(実際には、こっちが思い込む)ことが多い。たまにだが、そんなことがあると余裕がなくなって、更に他に何かあろうものなら、「うるせー! 知らねーよ!!」って言いたくなる。

今朝はまさにそうだった。

  1. (昨夜) LibreOffice Drawで作業中にLinuxのウインドウ(Xfce)が何度も落ち、挙句の果てに画面が真っ黒になってOSが勝手に再起動した。
    • 再起動は、真っ黒になった時に反応がないのでCtrl-Alt-Del(Linuxでもこのキー操作が意味あるのか分からないが、パニックの時に押す習慣は残って居るw)を押したせいかも知れない。
    • 珍しいことだが、原因不明で気になる。スリープを挟んで長期間動かし続けていたせいかも知れない。
  2. デジカメ(IXY Digital 3000IS)をPCに繋ぐと、カメラの画面に「通信エラー」と表示されてPCに認識されなくなり、画像が取り込めなくなった。
    • ケーブルは悪くなく、カメラの設定を初期化したり、Linuxの設定を変えたり再起動するなど何をしても直らないので、カメラの故障かと思ったが、検索したら、実は今までにも定期的に起こっていた「画像フル」の問題(リンク先を「通信エラー」で検索)で、カメラ(の仕様)が悪かった。
      • SDカードを換えて試せば分かったが、「通信エラー」と出ているのにカードを換えるほどボケてはいなかったのでw、気付かなかった。
      • それにしても、もっと分かりやすいメッセージを出して欲しい。これではカメラが壊れたと思って買い換える人が多そうだ(今はスマフォで充分綺麗だから、買いもしないか)。僕も、買ってから10年経っているので、寿命かと思って危うく買い換え(を検討す)るところだった。
    • このクソ仕様はいつも忘れていて慌てさせられるので、うまい防止策(例: 取り込み時に、カード内の画像数が多くなって「そろそろ危ないよ」って場合には警告を出す)を考えたい。
      • → 取り込みプログラムを改良して、カメラがキヤノン製の場合、中のファイル数か合計ファイルサイズが上限(「通信エラー」になる手前の値を指定しておく)を超えていたら、警告ダイアログを出すようにした。これでクソ仕様を忘れても大丈夫なはずだ。
        • 取り込み時にカメラ内のファイル数または合計ファイルサイズで警告を表示

  3. (上が解決する前、)デジカメから直接取り込むのは一旦諦めて、SDカードを取り出して取り込もうとしたら、画像取り込みプログラム(自作)のバグが2個見付かった。

それ以前に、スピーカーの位置を変更しただけで起こった耳閉感が治らず(まだ解決していない・・・)、結構疲れていたけど、今日は朝一でその対処(全く新しい位置を試す)の準備をしようとしていたのに、定期バックアップの一環で何の気なしに画像を取り込もうとしたら、上のように はまってデバッグになってしまった。まったく出鼻を挫かれてしまったよ。

ああ疲れた。

 

PS. デジカメの問題は、仮に修理しようと思ってもまず解決しないだろう。メーカーが余程親切でない限り、以下のような流れになりそうだ。

  1. サイトやマニュアルにFAQはあるけど、見る人はどれくらい居るかねえ・・・ そもそも、エラーメッセージがおかしいから、別のところを見そうだ。
  2. 電話サポートがあっても、30秒ごとに*円とかをぼったくる回線だったり、そのうえ延々と待たされたり、説明しても埒が明かないことがほとんどだ。
  3. もちろん店で聞いても分からない。分かる店があったら、ファンになりそうだw
  4. 修理に出しても、生産終了からかなり時間が経っているから、「確認・対応不可」で返却。それでも、店によっては手数料を取る。
    • → ユーザー側ではどうしようもないから、「寿命だから仕方ないね」となって買い換えになる。
  5. SDカードを添付せずに出せば、「確認しましたが、問題ありませんでした」、「現象が再現しませんでした」で返却。確認料だけ徴収される。もし親切なら、本文に書いたような原因の可能性を教えてくれるかも。
    • → ユーザー側ではやっぱり問題は起こるから、「キ○ノンはクソだなあ。何も分からないのか!」と買い換えになる。
  6. SDカードを添付しても、純正じゃないとかサポート対象外(サイズが大き過ぎる)で純正カードで確認されて「問題なし。ちゃんとしたカードを使え」で返却の可能性はある。
    • → そんなこと言ったって純正のカードなんて売ってないし、あっても容量は小さいうえに馬鹿高だから、「キヤ○ンはもう懲り懲りだ!」と、買い換えになる。
  7. 仮に原因が分かっても、何も修理していないのに確認料だけ徴収される。下手すれば、壊れてないのに勝手に「念のため基板を交換」とか他のところの修理や清掃をされてお金を巻き上げられる。

いずれにしても、メーカー丸儲けの構図だったが、もう、買い換え需要がないから駄目だね。

 

(11/10 23:20 取り込みプログラムを改良して、警告を出すようにした件を加筆, 11/11 9:01 左のキャプチャを追加)

  •   0
  •   0

画像管理ソフトのXnViewMPに嫌気がさしたので、digiKam6に戻った(調べたら、一年間も使っていなかったようだ)。その前に浸かっていたdigiKam(当時は5)には以下のような不満があった(移行した時の投稿より)ので、XnViewMPに移った。

digiKam5(以下、digiKam)は重い(起動が遅いことがある、メモリを食う(メモリリーク)、いろいろな処理(特にDB関係)が重い)のと、UIの使い勝手が微妙にイライラするうえに変更できない

しかし、XnViewMPを使っていたら さまざまな不満が生じ、digiKamへの不満よりも強くなった。例えば以下である。

  • 機能少な目、バグ多目。機能仕様に一貫性がなく、思ったように(期待するように・「普通」に)は動かなくて、がっかり・イライラする。
  • カメラからの画像取り込み後に、XnViewMPへの追加(認識させる)操作が要る。 → 移行時にそのためのプログラムを作った。
  • 回転した画像のバックアップが見えて鬱陶しい(非表示にはできない)。 → 見えなくなるように、suffixを変えるプログラムを作った。
  • WordPressに画像を入れる場合、画像にコメントを設定していても表示されない(digiKamの場合は表示できていた)。コメントを設定するタグが異なるようだ。 → 毎回、手でコメントを入れ直していた。
  • 検索が面倒なうえに貧弱で、目的の画像が見つかることはほとんどない。
  • UIの作りがイマイチ。
    • 再起動後に、表示するタグなどの見え方がリセットされて、閉じていても再度全部表示されて鬱陶しい。
    • ディレクトリ一覧が見にくい。
    • 情報ペーンの作りがイマイチで使いにくい(特に、幅が足りなくてもお構いなし)。
  • 更新が停滞している。

それから、XnViewMPは画像の管理にDBを使っていない(実際には「カタログ」という機能のためのDBはある)ので、画像のタグなどを一括管理している訳ではい。とはいえ、再起動のたびに全画像をスキャンしている訳でもなく、カタログに記録しているようだ。ただ、カタログが中途半端なため、実際の画像とカタログに記録された状態が一致しないことが結構頻繁に起こり(例: ある画像にあるカテゴリ(タグ)が付いていると表示されていても、実際には付いていない)、それを解消するには画像を再度スキャンしなくてはならない。それどころか、後述する、digiKamで設定したタグがXnViewMPには反映されない問題のように、再度スキャンしても反映されないことすらあるが、これはカタログの作りのいい加減さが関係しているのだろうと思う。

XnViewMPに移る時は、DBを使っていないから、DBの管理や保守に手間が掛からないし、安全性が増す(DBを使っている場合は、DBが壊れたら多くの画像情報が失われてしまう)のが長所だと思っていたのだが、実際には結構「いい加減」な状態になっているのにチェックも修正もできずに「あるがまま」の状態だし、検索が駄目な原因とも想像できるから、今は短所だと思っている。安全性については、随時DBをバックアップしておけば確保できると思う。

ただ、XnViewMPの方がdigiKamよりいいところもある。

  • サムネイルモードで、プレビューを別のペーンに出せる。digiKamではできない(プレビューモードが近いが、サムネイルの表示数が少ない)。
  • サムネイルペーンに子ディレクトリのアイコンが表示される。digiKamは何も出ない(ディレクトリでなく「アルバム」として扱っているため?)。
  • レイアウトの変更が可能。digiKamではできない。 ← そもそも、digiKamに近付けようとしたから有用だっただけ。
  • メモリ使用量が比較的少ない? (実際には、長く起動していると増えた覚えがある)
  • Favorites(お気に入り・良く使うもの)がある。digiKamにはない。

また、digiKam6には問題(不具合または不満)もある。

  • 画像エディタがESCキーで閉じない。 → ショートカット設定で閉じるようにできるが、閉じて欲しくない場合も閉じてしまうので止めた。
  • appImage版では日本語が入力できない。 → 以前のdigiKam5への対処と同様にしてできるようになった。
  • 地図を出すと、謎の小さいウインドウが出て消せない。 → Google mapを使うようにすれば出ない(Marble virtual globeだと出る)。
  • 画像をThuner(Xfceのファイルマネージャ)にコピー・ペーストやドラッグ・ドロップしてコピーできない(逆も駄目)。
    • クリップボードにコピーされるのがURL(file:///*)だからか、属性が違うのか。
    • なお、Nixnote2(Linux用Evernoteクライアント)にはドラッグ・ドロップして画像を挿入することができる。ただし、ペーストではURLが入る。
  • 左ペーンでHomeキーを押すとdigiKamのトップページのようなものが表示されて、すごく鬱陶しい。
  • 新しいコメントに日本語を書く時、変換確定前は見えない。
    • 文字色の問題? ただし、一旦何か入れると見えるようになる。
  • WordPressに画像を入れた場合、EXIFでの画像の回転が正しく処理されない場合がある。 → プラグインで対応した(確認中)。

なお、最初に書いた、起動が遅いことがあることがある問題は、digiKam6では解消している(確かにXnViewMPよりは遅いが、それほど時間が掛からない)。

そして、将来性はdigiKamの方がずっとありそうだ。XnViewMPは今年の1月から全然更新されていないが、digiKamはまめに更新されている。バージョンアップで上記の不満が改善されるかと思って、ずっとXnViewMPをチェックしつつ待っていたのだが、全然される様子がないので見切りを付けることにした。digiKam6の方が良くない点もあるが、それよりもXnViewMPへの不満の方がストレスだった。XnViewMPは「イマイチなうえに鬱陶しい」が最もいい表現だろう。

移行に当たっては以下の点に注意・確認したが、それほど大きな問題はなかった。

  • digiKamに移るとXnViewMPに戻るのは大変(XnViewMPに移る時が大変だったため)。 → 実際には、大きな問題はなかった。
    • XnViewMPに移る時に大変だったのは、digiKamの前に使っていたACDSeeのタグにXnViewMPが対応していなかったため。
  • カテゴリ(digiKamでは「タグ」)の移行
    • XnViewMPで付けたカテゴリはdigiKamでそのまま見えたが、digiKamで付けたタグはXnViewMPには反映されなかった。
      • ファイルにはタグは書かれており、新しい画像にdigiKamでタグを付けた場合にはXnViewMPに反映されるので、digiKamのタグ関連の設定は大丈夫なはずで、XnViewMPの問題なので追わないことにした。
    • 標準設定では、階層化したタグがdigiKamではフラットになってしまうものがあったので、設定を修正した。
      • 設定変更後、フラットになったタグが重複してしまったので、手で修正した。
  • コメントの移行
    • XnViewMPで付けたコメントはdigiKamでそのまま見え、digiKamで付けたコメントもXnViewMPでそのまま見えたので、問題ない。
  • メモリリーク(メモリ使用量の増大)は大丈夫か?
    • 1.5日で約500MBから約1GBになり、まず減らないようだ(一度、なぜか減ったことがある)。多くのサムネイルを表示すると増えるようだ。
      • DBがSQLiteだとメモリ量が増えそうな気がしたのでMySQLに変更したが、効果はなさそうだ。
        • 私の環境では、MySQLにするには、設定のDatabase→Database Settingsを以下のようにした(もちろん、あらかじめmysqldを起動し、digiKamのユーザを作っておく必要がある)。
          • Typeに"MySQL Server (experimental)"を指定 (なぜか、"MySQL Internal"ではできなかった)
          • Connect options: "UNIX_SOCKET=/var/run/mysqld/mysqld.sock"を指定。TCPで接続する場合には下を参照のこと(私は未確認)。
            • Stack Overflowによれば、MySQLにTCPで接続する場合にはHost Nameを"localhost"でなく、"127.0.0.1"のようにすればいいようだ(MySQLが"localhost"を特別扱いしているとのこと)。
      • あとで、Spotifyでのように使用量を監視するプログラムを作りたい。
  • 動画のサポートの確認 → 問題なかった。
    • XnViewMPでは動画にカテゴリを付けられないが、digiKamではできた。
  • Sym-linkを編集した場合にどうなるか。
    • Sym-linkの画像の編集には問題なかった(リンク先の画像が編集される)が、タグの操作が今ひとつ謎だった。
      • Sym-link(リンク先は画像)のタグを外すと、sym-linkのタグは外れるが、リンク先の画像のタグはそのままだった(逆も同じ)。タグを外す時は独立しているようだ。おそらく、DBにタグを記録している関係だと思う。 → タグが残っているのが分かるので、大きな問題ではない。

今のところ、以下のTODOがある。

  • 問題
    • [暫定済] メモリ使用量が多くなった場合の対処
      • 外部から何かで開放の指示可能?
        • おそらく無理。
        • コマンドラインのオプションは不明。
        • Dbusが使えるとのことだが、資料はない。
      • 自作のプログラムと同様の処理でメモリ量を調べて警告を出す? → 監視プログラムを作った: 指定したプロセスのメモリ使用量が上限を超えていたらメールで通知するようにした。 (11/11 11:22記)
        • Spotifyは、メモリ量が多くなった場合にはアイドル時に自動で再起動させているが、digiKamの再起動は怖そうなので警告にする。
      • 顔認識(People)や類似画像(Similarity)機能を使うと使用メモリ量が増えるので、使わないことにした。 (11/13 17:27)
        • 前者は「同じ顔」を認識しないようなので、スキャンして認識された数千の顔全部に自分でラベル付けする必要があるので実用性に乏しく、後者は、メモリ使用量の増加が甚だしいうえにSimilarityタブを開いた時の処理が遅いので、実用的でない。
        • DBからそれぞれの認識データを削除した。
    • コメントに日本語を書く時に、変換確定前は見えない。同様に、画像エディタの範囲指定の枠の色が白で見えないことがある。
      • テーマを編集すれば直る?
    • [保留] 地図を出すと小さいウインドウが出て消えないことへの対処
      • Google mapを使っていれば出ない。
    • (ファイルがread onlyの時など)プロパティ(例: コメント)の変更に失敗してもエラーが出ないので、問題に気付かないことへの対処
  • 設定
    • [暫定済] 表示するメタデータの選択(追加?)
      • Metadata→ViewsのEXIF, Makernotes, IPTC, XMP
    • [済] その他の設定の調整
  • 機能
    • 画像をThunerにコピー・ペーストやドラッグしてコピーはできない(逆も駄目)ことへの対処
      • クリップボードにURLでなくファイル名を入れればいいのか、クリップボードの属性の問題なのか。
    • サムネイルモードでプレビューを別のペーンに出したい。
      • ダブルクリックでプレビューする設定は可能(ESCで戻る)。 → 試したが、エディタを開くのが不便になるので止めた。
    • サムネイルペーンにディレクトリ(アルバム)のアイコンを表示したい。
    • 画像エディタをESCで閉じるようにしたい。
      • 状態によってESCの代わりのキーを送るようにすれば良さそうがだ、画像エディタ中で編集を開始しても外部から判定できないので難しい。 (11/11 11:26)
    • リサイズの画像サイズのプリセットの変更(追加?): 僕が良く使うサイズ(500画素)がない。
      • 調べたら、プリセットの画素数はリサイズ用のプラグインのプログラムに直接記述されていて、全く変更できないことが分かった。バイナリエディタでプラグインのプログラム中に記載されたプリセットの画素数を書き換えたら変更できたが、多くの手間が必要なので、その版を使うかどうかは決め兼ねている。
      • 単に、プリセット中の希望に近いサイズ(640x480画素)を使うか、プリセットでなく指定すればいいという気はしている(以前はそうしていたと思う)。
    • Favorites(良く使うアルバムへのアクセスを手軽に)機能の追加
    • 簡単な画像の加工が意外にできない(例: 複数画像を並べて新しい画像にする)。
      • こういう場合は、意地を張らずに、手軽にできるXnViewMPを使えばいいのだろう(が、やっぱり気に入らないw)。
  • その他
    • [済?] 左ペーンでHomeを押してもdigiKamのページが表示されないようにする(すごく鬱陶しい)。
      • マウントされたAppImage中のそのページ(/tmp/.mount_digikaXXXXX/usr/share/digikam/about/)をいじれば何とかできそう。
      • → Homeキーの代替ショートカット(Alternate)を"First image"に割り当てて解決したか? Endキーも同様に"Last image"にした。しばらく使って弊害がないか確認する。 (11/11 11:19)
  • 運用
    • タグ(カテゴリ)の階層構造を改良する。
    • カメラからの画像取り込みプログラムがXnViewMP用の新規取り込みファイル一覧を作らないようにする(それほど大きくないので、残してもよい)。
    • 同様に、XnViewMP用の定期自動処理(回転した画像のバックアップを見えないようにrenameする)も止める。

多少の問題はあるが、やっぱり、カメラから画像を取り込んだり画像を追加したら、何もせずにすぐに表示される(認識される)のは気持ちいい(ただし、設定(Collectionsの"Monitor the albums for external changes"をonにする)が必要)。

そんな訳で、気が変わるまではw、digiKamを使うことにした。

 

(11/10 11:32 若干加筆; 11/11 11:26 メモリ使用量監視プログラムとHomeキーの代替ショートカットの件などを加筆; 11/13 17:27 顔認識と類似画像について加筆)

  •   0
  •   0

毎月の血圧での通院時に、医師が過去の血圧を見る可能性があるが、毎回は見ないようで、(使われない可能性が高いのに)渡された紙のノートに転記するのは面倒だから、スプレッドシートをスマフォにコピーしておいて、言われたら見せようと思った。そして、LibreOfficeのファイルをスマフォにコピーしてクリックすれば楽勝で開けると思っていたのだが、全然そんなことはなかった。

信じられないことに、Androidにまともなオフィスビューアがない。入っていた(昔自分で入れたのかも)のは すぐに有料版に誘導する鬱陶しいもので、全然使いものにならなかった。他のも同様だったし、多くはシートが重くて開けなかった(1年分とかで数値が多いうえに平均処理とかいろいろやっているせいだろう。スプレッドシートはセルごとに式が入れられるので、最適化しないと重くなりそうだ)。グラフだってまともに出るものはなかった。

OpenOfficeのAndroid版はさすがに他よりはマシだったが、ほとんど単に移植しただけのもので、やっぱり実用にはならなかった。例えば、なぜか書式がおかしくなって、肝心の血圧が"###"と出たりした(3桁はちゃんと出るのに、2桁の時だけおかしいから謎だ。LibreOfficeとOpenOfficeの違い?)。

結局、グラフは画像(PNG)で保存、数値はPDFでエクスポート(どっかの省も数千ページとかやってたなw)という、もし誰かに見られたら情弱の烙印wを押されてしまいかねない、大変原始的な方法で切り抜けることになった。

Googleは、Androidでも何でも、「(僕らの誇る)Google docsを使え!」というスタンスなのだろうか。ただ、そこにインポートしたってまともに表示できなかった気がする(確か、グラフが駄目だった)が、最初からデータを入れて使えってことなのか・・・

まあ、ずっと行くだろうから、しばらく試行錯誤してみよう。

(10/21 11:45) 結局、今日は血圧を聞かれもしなかったw 休み明け(かつ、知らなかったが明日は祝日、)で混んでいたせいか、問題があれば言えってスタンスか。まあ、僕は自分で管理するつもりだし、何かあれば言うからいいけど。が、何か損した気がするので、とりあえず、次回は月曜などは避けようと思う。ただ、別件だが、今日はインフルエンザの予防接種もしたのだが、まさに一瞬のうちに終わった(「は?」と思ったw)。だから、腕はいいのだろう。

  •   0
  •   0

(技術的な詳細を書くのは大変だし、セキュリティ面の心配もあるので簡略化した)

僕はPC(Linux)とスマフォ(Android)でカレンダーを共有している(Googleなどは使わず、自分のサーバで実現している)のだが、ずっと、些細だけどムカつく「アラーム重複問題」に悩まされて来た。その現象を以下に書く。

  1. カレンダーの予定の通知時刻になると、LinuxのLightningとAndroidのカレンダーアプリ(DigiCal)から、同時または順次アラームが出る(省電力機能のためか、Androidは少し遅れることが多い)。
  2. 部屋に居る場合、Lightningのアラームを先に停め、遅れて出たAndroidのを停める。
  3. これで終わりならいいのだが、1分くらいすると、Androidのアラームが再び出る。 → イラっとする。

まったく鬱陶しいこの問題を、なかなか解決出来ずに居た。

まあ、部屋に居なければ問題は起こらないし、Androidのアラームを無視して停めなければいいのだが、今は勤めていないので部屋に居ることが多いし、性格上、アラームを停めないとLEDが点滅し続ける※のを見過ごす訳にはいかないw

※カレンダーアプリによっては、通知時刻からある程度時間が経つとアラームやLEDが自動で(勝手に)消えるものもあるが、それだと予定に気付かずに過ごしてしまう可能性があるので、消えないものを選んで使っている。

今まで何度も試したり調べたりしたのだが、その原因が昨日ようやく分かった。一言で書けば、LightningとAndroidのカレンダーアプリ・同期プログラムの相性だ。そして、どのプログラムも他に換えることができない。Lightningは僕にしてみれば最低レベルで使えるLinuxのカレンダーアプリで、それよりまともなものを探したがない。一方、Androidのアプリも同期プログラムも他にいいものがない。それでもいろいろ試したのだが、使い勝手、機能、性能、消費電力や通信データ量などが「許せる」もので問題が解決するものはなかった。

そういう訳で、昨日は随分試行錯誤したものの、結局、「解決不能」という結論になってしまった。

以下に、昨日の調査の結果推定した問題の起こる流れと、(その流れを前提として)問題を解決するために試したことを書く。

問題の起こる流れ

  1. 予定の通知の時刻になる。
  2. Lightningがアラームを出す。
  3. 僕がアラームを停める。
  4. Lightningは、なぜか、その予定をサーバに更新する(書き込む)。: おそらく、「アラームを停めた」という状態を保存するためだろう。
  5. DigiCalがアラームを出す。
  6. 僕がアラームを停める。
  7. DigiCalとカレンダー同期プログラムは、なぜか、サーバに更新を問い合わせる。: おそらく、省電力機能のために同期間隔が設定より長くなっていて、「起きたついでに」するのだろう。
  8. カレンダー同期プログラムは、サーバにLightningが更新した予定(アラームを停めたもの)があるので、それを取得する。
  9. 更新された予定がDigiCalに伝わり、予定の通知の時刻を少し過ぎているだけなので、DigiCalは(再度)アラームを出す。: 通知の時刻を大幅に過ぎている場合は出ないはず。

試したこと

  • Lightningが更新する処理に割り込んで、更新したように見せかけて、実は(サーバ内の情報を)更新しないようにした。 → Lightningは、更新後、御丁寧にも再度その予定を取得して確認し、更新されていないことに気付くのか(パニックになるのか)、アラームを停めてもダイアログが消えない。: 失敗
  • 同じく、Lightningが更新する処理に割り込んで、サーバ内の情報を更新する時に、Lightningが使いそうな部分だけ変更する(残りは元のままにする)ようにしてみた。 → Androidのカレンダー同期プログラムは、更新内容に関わらず書き込まれただけで変更されたとみなすようで、やっぱり、DigiCalはアラームを出す。: 失敗
  • 同じく、中身を何も変更せずに更新しても、上記の理由で駄目だった。: 失敗

LightningもDigiCalとカレンダー同期プログラムも、押し付けがましい余計なお世話をしてくれるので手こずっている(しかも、そういうのを解除できる設定などない)。もっとテキトーでいいのだがw

他には、Lightningがサーバへの書き込み後に行なう、本当に書き込まれたかの確認の処理に割り込んで、アラーム停止後はLightningが期待するように見せ掛けるようにし※、実際にはサーバには書き込まないようにすることが考えられるが、結局、カレンダーサーバの処理の一部を作るようなもので、大変だし、いつまで動くか分からない(いずれかの要素の動作が変わったら、駄目になる可能性が高い)など馬鹿らしいので、止めた。あとは、サーバのプログラムを改造することも考えられるが、上と同様の理由で止めた。

※今朝はこの処理の準備として、Lightningとサーバ間の通信パケットを見て、Lightningはアラーム停止後にどんな処理をしている(どんな情報を取得している)のか詳しく調べようかとも思ったのだが、勝算はないし面倒なので止めた。

まあ、気にしないのが一番なんだろうな。それができれば苦労しないんだがw

 

(10/7 13:20 わずかに修正)

  •   1
  •   0

先日買ったUSBオーディオインタフェース Focusrite Scarlett Solo (以下Scarlett)のファームウェアは、制御アプリ(Focusrite Control、以下FC)で自動確認・ダウンロードしている訳ではなく、ユーザが適宜webサイトを見て更新に気付いたら、自分でFCをダウンロード・インストールする必要があり、それを実行すれば通知が出ることが分かった。また、更新されたファームウェアはFCのインストール時に展開されることも分かった。

自分でwebサイトを見て更新をチェックするのは面倒だし(絶対に忘れる)、僕は基本的にWindowsを使っていないから、FCを動かすこと自体が面倒だ。とはいえ、ファームウェアはそれほど頻繁に変わらないだろうし、問題に気付いた時にチェックする程度で充分だろう。そもそも、僕はScarlettをたまにしか使わないw それでもおもしろそうだったので、自動で更新チェックとダウンロードができるようにしてみた。

もちろんFocusriteのサイトにAPIがある訳でもないので、いつもながらの古色蒼然としたスクレーピングなどを駆使して更新をチェックすることにした。以下に手順を示す(いつもと同様、こういうニッチなことに需要があるとは思えないので、概要とか概念(、そしてLinuxがいかに便利かw)の紹介に留めた)。

  1. Focusriteのダウンロードページ(製品ごとにURLが違うので、指定しやすい)をダウンロードする。
    • Scarlett Solo(3G)の例: https://customer.focusrite.com/support/downloads?brand=Focusrite&product_by_type=1365&download_type=software
  2. ダウンロードしたページ(HTML)を解析してFCのバージョンを調べる。
    • FCバージョンの記載例: <h3>Focusrite Control Windows - 3.4.0</h3> : 太字がFCのバージョン
  3. あらかじめ保存しておいた現在のFCバージョンと異なっていたら、あるいは、現在のFCバージョンが保存されていなかったら、FCをダウンロードする。ダウンロードURLは上記ページ中にある。
    • FCのダウンロードURLの記載例: href="/sites/customer/files/downloads/Focusrite%20Control-3.4.0.exe"
  4. ダウンロードしたFCを展開し、中のデバイス記述ファイル(XML)を取得する。
    • FCのインストーラーは(今のところ、)Inno Setupというプログラムで作られているので、Linuxでは(実際にインストールしなくても、)innoextractというプログラムで中身を展開できる。
    • デバイス記述ファイル名の例: app/Server/Resources/Devices/Scarlett Solo (3rd Gen).xml
  5. デバイス記述ファイルを解析して、ファームウェア(以下、FW)のバージョンを調べる。
    • FWバージョンの記載例: <segment name="App_Upgrade" nickname="App" version="1552" file="SctG3_Solo.bin" encrypted="true"> : 太字がFWのバージョン
  6. あらかじめ保存しておいた現在のFWバージョンと異なっていたら、あるいは、現在のFWバージョンが保存されていなかったら、FWが更新されていると通知する。
  7. FCとFWのバージョンが変わっていたら、どこかに保存する。

ページのURL、スクレーピング、HTMLの解析、インストーラーの展開、ファイル名の決め打ち、XMLの解析など、多くの点でひ弱(Focusrite側の変更に弱い)ではあるが、他に方法がないので仕方ない。まあ、変更が頻繁でない限りは便利だろう。今は動作確認中だが、問題なかったら、4日に1回程度チェックするようにcrontabに設定しようと思っている。

なお、もしFWが更新されていた場合には、(試行錯誤の挙句ノートPCにインストールした)本物のWindowsにFCをインストールし、それにScarlettを接続してFWを更新しようと思っている。

  •   0
  •   0

僕にしては珍しく、衝動買いをした。今買う必要は全くなかったのだが、まあ、クソ(が社長の)会社に入ってしまって速攻で辞めたストレスの解消や、気分転換のためということにしておこうw

発端・製品選び

先日書いたように、マイクでの録音時の雑音(テープのヒスノイズのような感じ)の多さにがっかりして、雑音の小さいマイクアンプが欲しくなった。また、録音の音量も大きくしたかった。それで、最初は(マイク用)電源内蔵のマイクアンプを探していたのだが、どうも、電源・マイクアンプ内蔵のUSBオーディオインタフェースのほうが使い勝手が良さそうだし、製品の種類が多くて良さそうな気がした。それで、以下の候補から選んだ(概ね、上から下の順に価格が高く、仕様・性能も良い)。また、調べた限りでは、どれもLinuxで使えるとのことだった(ただし、正式対応のものはほとんどない。が、いわゆる「クラス・コンプライアント」をうたうものは大丈夫なようだ。一体、どんなデバイスクラスなのかは不明だがw)。

  • Behringer UMC22
  • ZOOM U-22
  • TASCAM US-1x2-CU
  • Focusrite Scarlett Solo (3rd Gen)

一番重要なのは雑音が小さい(かつ性質がいい)ことだったので、(先日DEQ2496の雑な作りを見てがっかりしたこともあって、)Behringerは安くて手軽だけど落とした。ZOOMは問い合わせ対応が今ひとつだった(具体的には書かないが、ITリテラシーが昭和時代のように低かった。それ以外に、「クラス・コンプライアント」と書いてあるからUSBの対応クラスを聞いたのに答えないって、クソだいかがなものかと思う)ので、落とした。残ったTASCAMとFocusriteは、仕様・性能ではほぼ同等だったが、使い勝手がポイントになった。

TASCAMは、実際に使う状況を考慮せずに作ったふしがあるので落とした。というのは、マニュアルには「マイクの抜き差し時は電源をoffにするように」などとあるが、電源スイッチはなく、USBバスパワーなので、抜き差し時にUSBコネクタを抜く必要がある。それがそもそも面倒だし、コネクタは背面にあるから更に面倒だと思った(でも、今気付いたが、PC側のコネクタを抜く手もある)。それにしても、PCからUSBを抜くのは いろいろな問題が起こるので、論外だ。

TEACの技術者はいつもPCを使っているだろうに、そういうことに気付かないのだろうか? 不思議だ。それに、これは家電やPCじゃなくて楽器系の製品なんだから、多少手荒に扱ってもいいように作らなかったらいけないだろう。ステージやスタジオでは、電源を入れたままマイクのコネクタを抜き差しすることだってありそうではないか(いくら気を付けたって、忘れることはあるだろう)。その時に、音量を落とすように気を付けるのは当たり前だとしても、電源を切れ(しかも、「切らないと壊れる」と脅す)ってのはどうかと思う。

その時、コンデンサマイクは電源(ファントム電源)がなければ音が出ないので、本体の電源を切る代わりに、(音量を最小にして)ファントム電源を切るという次善の策もあるのだが、TASCAMはファントム電源のスイッチも背面にあるので、簡単には切れないと来ている。まったく最高の作りだw

その点、Focusriteは楽器系の常識に沿っているようだった。最初は、(本体色の)赤は目立って嫌だとか使いにくそうだとか誤操作しやすそうだと思ったのだが、上のようなことを考えると理に適っている。マニュアルを見ても、「マイクの抜き差し時は電源をoffにするように」なんてことは書いてない。ゲイン(入力ボリューム)を絞るとかファントム電源を切るようにとか、常識的なことだったように思う。そして、ファントム電源のスイッチが前面にあるので、簡単にon/offできるのはポイントが高い(最初は誤って操作しそうだと思ったが、これでいいと思う)。

実際には、そうやってFocusriteを使ったら壊れるかも知れない。逆に、TASCAMは壊れないかも知れない。でも、逃げの姿勢の会社は嫌いだ。壊れないように作ったんだったら、そう言えばいいのだ。

(大変長くなったがw、)そういう訳で、Focusrite Scarlett Solo(以下、Scarlett)を買うことにし、一番安かったサウンドハウスに注文した。約1.3万円(税込み)だった。実は、ポイント還元を含めれば同様な価格になるヨドバシと迷ったのだが、サウンドハウスには3年保証が付いているのでそっちにした。それが(例によって)思わぬ苦労をもたらしたw

受け取りに一苦労

注文した翌日に届くはずだったが、朝8時頃から夜9時頃まで(トイレすら気を遣ってw、)丸一日待ち続けたのに、不在票すら届かなかった。S川のwebに騙された。朝、「配達に出た」という表示が出たら、普通は午前中には来ると思うが、S川はそうではないらしい。ただ、配達日時を指定した訳ではないから、自分で勝手に期待していた訳で、怒りようがない※。次の日に「届きそうで届かないんですが・・・」と妙な連絡をしたら、荷物が多過ぎて配達できなかったらしい。なかなか大変そうだ・・・ ただ、忙しいドライバーの方には悪いけど、次回からはなるべくそこを使う店は避けたい。あるいは、日時指定するか、指定できない時は(webなど見ずに)待たない(再配達を依頼する)かだ。

※電話受付の方が品のいいおばさん(昔、みのもんたの番組に出ていた女性アナウンサー(この方?)のイメージ)のように落ち着いていて、偉そうとかつっけんどんでなくて好印象なのと、それでいて声や話し方が妙に(若い頃の)戸川純的な不思議な雰囲気だったので、怒る気が起こらなかった。一度会ってみたい気がしたw

ようやく受け取ったあとに開梱したら、海外メーカーの製品にしては珍しく梱包が丁寧だったので感心した。製品の箱が、それとぴったりのサイズの段ボール箱の中に入っていたのだ。最初は、その素っ気ない段ボールが箱なのかと思ったら、中から本物の箱が出て来て驚いたw

動作確認

早速動作確認したら全く問題なかった。Linuxでもちゃんと認識でき、マイク・ライン入力の録音や再生ができた。雑音の質は従来(マイクアンプ= AT-MA2)より良かった。従来あった、電源系(50Hzの倍音)の雑音はなかった(マイクなしでケーブルを接続した場合を除く)。雑音のグラフは、従来と同様右上がり(高域が多い)だった。根拠は忘れたが、それが自然だと思う(DEQ2496はやっぱりおかしい)。また、スピーカーの再生特性を比較したところ、超低域以外は一致した。AT-MA2は超低域の特性が悪いようで、40Hzで約4dB低かった。

PCのスリープ対応も問題なかった。よく、スリープしたら(抜き差ししないと)使えなくなるという情けないデバイスがあるが、そんなことはない。電源off/on時の雑音は、残念ながらわずかにある。JACK(Linuxのサウンド系の一つ)には通常の出力デバイス指定(例: "hw:USB")かalsa_outコマンドで対応できた。ただし、当然ながら、USBを抜くと、再度挿しても使えなくなってしまい、JACKの再起動が要る。

なお、Scarlettは本来はLinuxはサポート対象外で、WindowsかMac用のソフト(Focusrite Control)で初期設定やユーザー登録をする必要があるのだが、マニュアルに書いてあるとおり、(最初に)電源を入れた直後に48Vボタンを5秒押し続ければ、初期設定のフェーズをパスして通常動作モードになる。そうしないと、USBで繋げた時に、毎回Scarlett内のストレージ(ガイドが入っている)がマウントされてしまう。

それを読み飛ばして、「いつもストレージがマウントされてしまって鬱陶しい」などと文句を書いた外人が居た。注文後にそれを読んで心配になったのだが、ちゃんとマニュアルに書いてあった。外人にありがちな間抜けさ(しかも偉そう: でも、僕はそれでいいと思う)だと思ったw

制御ソフトを動かすのにも一苦労・・・

それから、興味があって試してみたのだが、Windows用のFocusrite ControlはどうしてもWindowsでないと動かない(VirtualBoxでもWineでも駄目)ようなので、ファーム更新は難しそうだ※。まあ、更新が必要な時は、どこかにWindowsが起動するPCがあるだろうから、それを使えばいい。あ、ネットカフェとかでもいいのかも知れないな。

※もちろんそれ以外の機能もあるが、主にミキシングなどのようで、僕の使うSoloは2チャネルしかないから、(そういう機能に対応しているとも思えず、)手でボリュームやスイッチを動かせば充分だから問題なさそうだ。サンプリング周波数などの設定についても、Scarlettを使うソフトですればいいようだ。

(9/16 18:29) その後、調べていたら、ALSAがサウンドデバイス(この場合はScarlett)を使っているためにFocusrite Controlが動かない可能性があることを知って試したが(参考01, 参考02, 参考03)、サウンドデバイスのモジュール(この場合はsnd_usb_audio)の依存関係が多岐に渡っていてアンロードできないせいか、駄目だった。だから、もし最初の推論が正しくても、Linuxのサウンドを完全に無効にして起動させないと無理そうだから、余り手軽でなく、一時的に本物のWindowsを使った方がいい気がする。

(9/17 20:16) いろいろ試したのだが、USB HDDにWindowsをインストールするというようなうまい手はことごとく失敗し、結局、ノートPCのHDDを交換して(交換が簡単なのと、このノートを使う機会はほとんどないので、大きな問題ではない)Windowsをインストールして、ようやくFocusrite Controlが動いた。インストール以外にWindowsの更新にかなり時間が掛かって、ほとんど丸一日費やした。

ようやく、Focusrite Controlが動いた。

Scarlettを接続してFocusrite Controlを起動したら、早速ファーム更新の通知が出た。買ったばかりで出るのは、頻繁に更新があるのか、(製造後の最初の更新で、)もうほとんどないのかは分からないが、ちょっと気になるので、Focusrite Controlに繋げる以外でファームの更新時期を知る方法がないか質問した(多分、無理だとは思う)。

(9/18 10:27) 回答がないので更に調べたら、どうも、ファームウェアは(Focusriteのサイトではなく)Focusrite Controlアプリの中に入っていて、それとScarlettのバージョンが異なっている場合に通知・更新するような感じだ。というのは、WindowsでFocusrite Controlを動かした時の外部サイトへのアクセスを(Wiresharkで)キャプチャしても出てこないし、Focusrite Controlアプリのディレクトリにファームウェアのファイル(Server/Resources/Firmware/SctG3_Solo.bin)があり、別のファイル(Devices/Scarlett Solo (3rd Gen).xml)にファームのバージョン番号が書かれていたからだ。

だから、Scarlettのファームを更新する際は、各自が新しいファームの入ったFocusrite Controlを(Focusriteのサイトから)ダウンロードして更新して、それを実行して行うのではないかと想像している。実際、Scarlettを使う場所で必ずしもNWが使える訳ではないだろうから、この方法の方が確実だ。

ということは、新しいファームの有無を知るには、Focusrite Controlの更新を調べれば良さそうだ。なかなかいい感じだ。

(9/18 14:28) メーカーから回答があり、想像通り、ファームはFocusrite Controlと一緒になっているとのことだった。

(9/19 14:13) 数日ごとにFocusrite Controlのダウンロードページをチェックして、バージョンが更新されていたらダウンロードするスクリプトを作った。これにて一件落着だろうか。

買った意味・価値があったか?

残念ながら、一番の目的だった録音時の雑音は消えなかった(音量が大きくなったせいか、却って増えた感じだ)。対象の音量が小さくてダイナミックレンジが小さくなっているせいか、マイクがいい(高域の感度が良過ぎる)のか悪い(雑音が多い)のかは分からない。音量が小さい(= 感度が悪い)のもマイクの仕様なので、結局は安いマイクだったから仕方ないということかも知れない。まあ、演奏を録る予定は全くないので、これ以上雑音が増えたりしなければ問題ない。そして、マイクには寿命があるようなので(そろそろなのだろうか?)、次を買う時には良く調べよう。もしいいマイクを買えば、雑音を減らすことが期待できそうだ(是非期待したい!w)。

雑音は駄目だったものの、Scarlettを買ったことで、以下のようなメリットがあった。

  • 大きな音量で録れる。: マイクゲインを最大にすると、従来より7dB(2倍強)くらい大きくなる。
    • ただし、ゲインを大きくすると雑音が急激に増えるので、注意が必要だ。僕の使い方では、通常は4時の位置(最大の少し手前)が良さそうだ。
  • 雑音の質がいい: 上述のとおり、電源雑音(50Hz系)がとても少ない。
    • 下の写真のように、従来構成はAC電源が近いために雑音が増えている可能性は高いが、ScarlettはUSBだからAC電源が不要なので、その点では有利だ。
  • 超低域の特性がいい(おそらくフラット。AT-MA2は超低域が低目だった)。
  • コンパクト(面積比: 約1/6, 体積比: 約1/12?)、接続が楽(マイクとUSBケーブルの2本だけでいい)。

こんなにコンパクトになった! (段ボール箱: 従来(マイク電源+マイクアンプ+ACアダプタx2+ケーブル)、赤い箱: Scarlett)

DACとして使ってみる

ちょっと思い付いてしまってw、Scarlettで再生する(DACとして使う)ことも試した。Scarlettの音は、一番最初は若干薄目に感じ、それから低音が強目に聞こえた(矛盾している気がする・・・)ものの、しばらく再生していたら、従来より音がよりリアルな印象になった。が、こっちの方が音がいいとかエージングとかそういうことは全然なくて、全部気のせいだと思うw

それでも、折角買ったことだし、サウンドカードの代わりにメインのDACとして使えるか試してみたのだが、USB接続のために、以下のようなさまざまな問題があったので、残念ながら、常用の再生デバイスにするのは保留した。そもそも、再生音質に(大きな)違いはないし、使い勝手が特にいい訳でもないので、無理に使う必要はないのだ。

  • スリープ中にも電源が入っている(本体が暖かい・・・)のが気に入らない。
    • 常時onでは寿命が短くなる気がする。
    • でも、PCだって電源が常時入っている箇所があるが、それはいいのか?
  • → USBハブの機能を使って、USBデバイスごとに(正確には、ハブのポートごとに)電源をon/offすることができることが分かった(参考1, 参考2)。
    • ただし、on/offできるかはハブの仕様に依存する(普通の安いハブではまずできない)。
    • PC(マザーボード・チップセット)内蔵のハブは可能なことが多そうだ(僕のPC内蔵のハブではできることが分かった)。
      • だから、上記参考ページでは対応ハブが要るように書いてあるが、デスクトップPCを使うなら買わなくても済むことが多そうだ: これは知らない人が多いかも)。
  • → スリープ時に電源を切ると、復帰後にJACKの再起動が要る。また、電源をoff/on時に(小さな)雑音が出る。
  • ScarlettのUSBを抜いて挿した場合もJACKの再起動が要る。
  • ScarlettのJACK対応にalsa_outを使うと、JACKアプリ起動時や接続・切断時などに雑音が出る。

問題は多いのだが、今のサウンドカードが壊れた時やPCを換えた時に、(上記の問題に対処すれば)ScarlettをDACとして使えることが分かったのはいいことだ。Scarlettを使うことにすれば、次のPCではPCIeスロットやサウンドカードが不要になるから、コンパクト化が可能だ(ただし、HDDは要るので、ものすごく小さくはならない)。そして、今気付いたが、サウンドカードが不要だから、(そのドライバも不要になり、)USBが使えさえすれば音が入出力できるので、CPUがx86でなくてもいい可能性が出てくる(ただ、他の要素で制限はありそうだ)。

思わぬ失敗が発覚

Scarlettで試しに測定していたら、過去の思わぬ誤りに気付いた。測定ソフト(REW)の設定をミスしたようで、8月以降に測定したデータの低域(100Hz以下)がカットされていたのだ。Scarlettと過去の測定結果の低域が大きく違っていたので気付いた。全く気を抜いていたのか、グラフを見ても気付かなかったのがイタい。今思えば、測定時、低音が出ているのに入力のメーターが振れていなかったのが、ちょっと変だとは思った。。。誤りの影響が大きい投稿を再測定して訂正した。

それにしても、低域がカットされる仕組み・原因は全く謎だ。一体どこにそんなフィルタがあるのか? それ以外にも、Linuxのサウンド関係(JACK, ALSA, PulseAudio, REW, Audacity, etc.)は謎が多く、ちょっとヘマをすると音がおかしくなってしまう。。。 まあ、(更に)真面目に調べれば分かるのかも知れないが、とにかく複雑なので、そこまではやっていない。

(9/16 11:58) その後ちょっと調べてみたら、低域がカットされる原因が分かった。測定ソフト(REW)の設定ミスではなく、PulseAudioの"LFE Remixing"という機能(フィルタでサブウーハー用の低音を抽出するらしい。PulseAudio 7.0のリリースノートの"LFE channel synthesis with low-pass filtering"の項を参照のこと)を有効にしていると、PulseAudioの入力から低域がカットされるようだ。たまたまREWの入力をLFE Remixingの対象になるもの("default [default]")にしたために問題が発現したようだ。そのクロスオーバー周波数は120Hzで、今回の現象に合っている。どうしてLFE Remixingが出力でなく入力にも効くのかは不明だが※、止めたら問題が起こらなくなった。詳しくは別に書きたい(書くかも知れない)が、とりあえず、以下に対処方法を書く。

  1. PulseAudioの設定を修正し、LFE Remixingを無効にする。
    • /etc/pulse/daemon.confに以下の行を追加する。
      • enable-lfe-remixing = no
    • もし、"enable-lfe-remixing = yes"の行があったら、削除するか無効にすること。
  2. PulseAudioサーバを再起動する。
    • pulseaudio --kill → 勝手にPulseAudioサーバが起動するはず。
    • 起動しない場合は、pulseaudio --startを実行すること。
  3. JACKを再起動する。: 手順は各自異なるので、省略する。

※想像だが、PulseAudioはマルチチャネルで動いていて、出力する時には単一チャネルをメインスピーカー用とサブウーハー用などに分けるのと同様に、入力が単一チャネルの場合には、メインチャネル用とサブウーハーチャネル用に分けるのではないだろうか? そうだとすれば、PulseAudioを単一チャネルで動くように設定すれば根本的に解決しそうだが、なかなか面倒そうだ・・・ (というか、Linuxでマルチチャネルで使ってる人なんて居るの??)

低域がカットされる問題に対処できた: 対処後(PulseAudioのenable-lfe-remixing= no): 青(JACKで直結), 緑(アナログ接続); 対処前(enable-lfe-remixing= yes): 赤(JACKで直結)

まとめ

普通に使うならまあ問題なかったし、買った意味もあったが、例によって僕の凝りのためにちょっと四苦八苦した(それもおもしろかったがw)。しかも、それで本末転倒になり掛けた。でも、気付かなかった問題に気付いたり、新しい技術(ちょっと大げさだ)を知ったり、将来のPCの選択肢が広がる可能性が見付かったりと、副次的なメリットは多かった。そもそも、おもしろかったから良しとするw

 

PS. あと、「増税前なら少し安そうだ」と思いもした(「駆け込み」)が、後で考えたら、値段が1万円ちょっとだと、増税分はたった240円程度と、ほとんど誤差だったw 皆さんも、車とかでない限りw、スーパーなどで買い溜めしても全然ペイしないので、よく考えましょうw

PS2. 参考2の著者は、2番目の会社の時に名前を見たことがある人で、時々、「あの(威勢の良さそうだった)あんちゃんは、今どうしてるのかなあ」と思っていた。それが思わぬことで再開(?)できて、なかなか不思議だった。さすがに今は、それほど強烈なことをしてないようだ。でも、やっていることは、昔から趣味的なのは変わらないw そして僕は、ああいう乗りの人がずっと好きでないwww

なんで名前をGNUもどきにするかねえ・・・ いくら好きだって、「それじゃ単なるフォロワーでしょ」と思う。

  •   0
  •   0

Linuxには純正のEvernoteアプリがないので、web版かNixNote2などの他者製アプリを使うしかない。他者製アプリは純正に比べればどれも今ひとつなのだが、いろいろ試して一番まともだったNixNote2を使っている。NixNote2自体の完成度が低いうえに、使い方の情報が余りないので、諦め・試行錯誤しつつ使っているのだが、たまに、それまで無理と思っていたことができることに気付いて驚く。ここではそういうものを紹介する。なお、対象のバージョンは2.1.4(現時点での最新版)である。

複数アカウント・ウインドウでの同時起動

NixNote2は複数のEvernoteのアカウントを切り替えて使うことができるが、(切り替えでなく)同時に使いたい。調べてみたところ、起動時のオプション(--configDirや--userDataDir)を指定すれば、別々の設定で起動できることが分かった。それを使えば、複数アカウント(例: 個人用と仕事用)のNixNote2を同時に起動することができる。ただし、アカウントごとに別のウインドウになる。

2つ目のアカウントで起動する例:

nixnote2 start --configDir=$HOME/work/Nixnote2 \
--userDataDir=$HOME/work/Nixnote2/data &

※2つ目のアカウントを完全に独立にしたいので、設定とデータのディレクトリ(上では$HOME/work/Nixnote2)を新しく作った。

2つのアカウントでNixnote2を同時起動した例

※純正アプリは複数アカウントの同時使用や同時起動はできなさそうなので、これはNixNote2の数少ない優位点なのかも知れない。

ノートをタブ・別ウインドウで開く。

タブで: (メニューバーの)メニューにないので気付かないが、ノート一覧でノートを右クリックして"Open Note In New Tab"を選択すればいい。

別ウインドウで: これもメニューにない。ノート一覧でノートを右クリックして「ノートを開く」を選択すればいい。右クリックメニュー(の翻訳)が分かりにくい。

※こういう機能はヘルプなどに書いてあるのかも知れないが、読んでもがっかりしそうだし、まさかできるとは思っていないので、気付きにくい。

[2019/9/13 19:34: 同期がうまくできなくなる可能性があることが分かったので、この項は無効にする] DBのwalファイルを小さく・サイズ制限する。

NixNote2はEvernoteのデータをSQLiteのDBとしてローカルに格納している。そのDBのwalファイル(書き込んだデータの一時保存用)が肥大化する(しかも、いつになったら本来のDBに書かれるか不明)ので、適宜DBに反映し、サイズを制限(、あるいは0に)したいと思った。というのは、walファイル自体は問題ではないのだが、本来のDBに反映される時期が不明なのが気持ち悪いし(NoxNote2がちゃんと処理していないせい?)、ファイルサイズが無制限に大きくなるのは気に入らないし、定期バックアップ時の更新データ量が増える気がするので、定期的に本来のDBへの反映を行い、更に、サイズを小さくすることで、定期バックアップ時の更新データ量を減らそうと思ったのだ。調べたら、SQLiteのコマンドでできることが分かった。

walファイルの中身をDBに書き込み、サイズを10MBに制限する例:

wcp_max_size=10485760; cd $HOME/.nixnote/db-1 && \
sqlite3 nixnote.db "pragma journal_size_limit=$wcp_max_size; \
pragma wal_checkpoint"

僕は、上記のような処理を定期的に(数時間に1回)実行している。

なお、walファイルのサイズが0でなくても、一時保存データは全部DBに反映されているようだ。サイズを0にすると、ファイルに追記するために、(SQLiteの)処理が遅くなるとのことである(おそらく、この用途では全く問題ないだろう)。逆に0にしなければ、walの先頭から再利用(上書き)されるようだ。

話は少し変わるが、SQLiteのDB(nixnote.db)にアクセスすれば、ローカルに格納されたノートに直接アクセスすることができる。例えば、間違ってノート名を変更してしまって、元のノート名が分からなくなってしまった時、あらかじめバックアップしていたDBを開いて、元のノート名を調べて復活することができた。この時、問題のノートのLID(ノートのID?)でバックアップのDBからそのノートを探した。有料会員だと履歴があるから、こういう時も安心なのだろう・・・

ちなみに、僕は、この「気付いたらノート名が変わっていた問題」などへの対処(予防)のため、Nixnote2のDBを、ある程度は履歴が残る定期バックアップの対象にすることにした。その時に、最初に書いたwalファイルのサイズが大きくて気になったので、小さくしようとした。

※いずれもNixNote2との競合が心配なので、自己責任で行うこと。SQLite自体は排他制御しているので問題ないが、NixNote2の内部処理がこのような外部での変更を許容するかは分からない。

ノートが編集不可になることの回避・復活

NixNote2のノートが突然編集不可になる(なっている)ことがある。それは、概ね、画像とテキストを一度にペーストしたためである(その時は問題ないのだが、次に開くと編集不可になっていて呆然とする)。なので、そういう操作をしないようにすれば(画像とテキストを別々にペーストする)回避できる。

また、もし編集不可になってしまったら、以下の手順で復活できる。

  1. 一時的に編集可能にする。: ツール → "Disable editing"を2回程度(編集可能な状態になるまで)実行する。
  2. 画像とテキストを一度にペーストしてしまった部分を(見当を付けて)削除またはカットし、どこか(ワープロなど)にペーストする。
  3. 画像とテキストを別々に再度挿入またはペーストする。

※おそらく、ノートのソース(HTML)を見れば、何が問題か(おそらく、ノートのタグ構造がNixNote2が理解できなくなっているのではないか)分かり、うまい復活手順も分かるだろうが、まだできていない。そもそも、NixNote2が悪いので、何とかして欲しい! (今までにさまざまな諦めをしていて、指摘しても対応してくれるか分からないので、していない)

メモリリークへの対処

NixNote2を使い続けると(特に、ノートのエクスポートを行うと)、メモリ使用量が数倍に増大する。これを減らす方法はなさそうなので、定期的(あるいは、エクスポート後)に再起動するしかない。

  •   0
  •   0

先月の中頃から、Linuxのウイルススキャンプログラムclamscanが、なぜか途中で強制終了させられてしまう現象が起こった。原因を調べると、メモリが足りなくなったようだ。それで、暫定的にスワップ領域(Windowsでの「仮想メモリ」)を増やしたら動くようになった。ただ、それまでは問題なく動いていたのに、突然駄目になってしまったのが不思議だった。

更に調べてみると、問題が起こり出す前辺りに、(モジュール更新を反映するため)OSが再起動されていたことが分かった。そして、メモリ使用量のグラフを見ると、その頃から妙な感じになっていた。

過去1か月()を見ると、再起動した("Week 24"の辺り)後からスワップ使用量(赤, "swap")が周期的に増減している。また、過去1年()を見ると、去年の11月中旬頃にメモリ使用量(特にスワップ使用量)が減ったものの、再起動した(図中右端辺り)後から大幅に増えてしまった。

いろいろ調べてもメモリ使用量が減った原因は分からなかったが、スワップ使用量が増減する理由は分かった。clamscan(ClamAV)に関連するサーバプログラムclamdが大量のメモリ(300MB以上)を使用するためだった。問題が起こるのは(メモリがふんだんにある)自宅のPCではなくブログサーバで、メモリ量が1GBしかないため、300MBでもかなり効くのだ。そのために、clamdと同じくらいメモリを食うclamscanがメモリ不足で強制終了させられていたのだろう。

スワップ使用量の増減が起こる流れは、以下のようである。

  1. 毎日、ClamAVのプログラムfreshclamがウイルス定義ファイルを更新する。
  2. 定義ファイルの更新後、clamdにそれが伝えられるようで、clamdは新しい定義ファイルを読み込むようだ。
  3. その時、それまでスワップアウト(実メモリからディスクに追い出されること)されていたclamd(の確保したメモリ)が実メモリに戻される。すると、スワップ使用量が減り、実メモリ使用量(例: 図一番下の緑の層, "apps")が増える。
  4. しばらく(6時間程度)すると、clamdは何もしない(動かない)せいか、スワップアウトされてスワップ使用量が増え、実メモリ使用量が減る。

上記処理(特に3と4)の繰り返しが定期的なスワップ使用量(赤)の増減になっていたようだ。

諸悪の根源はclamdだったのだが、これは本当に必要なのか調べてみると、そうでもなさそうだった。インストールする時は、検索して出て来たページで入れるように書いてあったので、良く考えずに入れた。その理由は、clamdはWindowsのアンチウイルスソフトのリアルタイムスキャンを行うものだと思い込んでいたためなのだが、本来はそうではなく、外部から指定されたファイルをスキャンするものだった。今調べたら、設定によってリアルタイムスキャン(On-Access Scanning)が可能なのだが、今まではその設定をしていなかったので、全く使うことなく、無駄に動かしていた訳だ。間抜けにも程があるw 確かに、今までリアルタイムスキャンの警告が出たことがないし(今考えれば、サーバだから画面がないのにどうやって警告を出すのか不明だ)、不正なファイルだとしてブロックされたこともない(まあ、これが起こったら大変なことなのだが)。

という訳で、他の方も、clamdを入れて起動しているだけではリアルタイムスキャンは行われず、(おそらく)メモリを無駄遣いしているだけなので、注意しましょう。

そもそも、(言っちゃ悪いが)今までClamAVは全くあてにしてなくて、clamscanで気休め程度に(昔ながらの)定期的なスキャンをしていただけなので、全く使われないclamdは不要だという結論になり、停めた。仮にリアルタイムスキャンをするとしても、このサーバではメモリ量が足りないから無理だし、性能への影響も出そうだから止めておく。

clamdを停止前後のメモリ使用状況 (過去1日)

効果はてきめんで、clamdを停めた("Sun 18:00"と"Mon 00:00"の間)ら、スワップ使用量(赤)が500MBくらい減って100MB程度になった。今までいかに無駄なメモリを使っていた(正確には死蔵していた)ことか。。。 要は、メモリの断舎離をしたようなものだ。ただ、「死蔵」と書いたとおり、このメモリは使われていなかった(クローゼット中にあるだけで全然着ない服のようなもの)ので、実メモリの使用状況はほとんど変わっていない。例えば、アプリのメモリ使用量(図一番下の緑の層, "apps")は停止前後でほとんど同じである。

なお、図で定期的(12時間ごと)に上部の緑線("committed")が鋭く立ち、そのあとで下部の紫の層("cache")が減っているっているのは、クラウドストレージへの定期バックアップ処理のために一時的に使用メモリ量が増え、そのためにそれまで溜まっていたキャッシュが解放されるためと思われる。

結局、題に書いたように、無意味なものを省くことはできたが、無意味だっただけあって、それによって変化は起こらなかった。せいぜい、最初の問題の、clamscanがちゃんと動くようになった程度だ(clamscanにしたって、実行する意味があるのか良く考える必要があるが、今回は棚上げにする)。でもまあ、プログラムの中にはCPUを使いまくってシステムを重くするものがあるから、これはたちがいい方なので良しとするw

ということは、死蔵されたものを捨てても何も変化は起こらないということなのだろうか? 確かに、物理的には(目に見える)変化はないが、精神的(「気分」)には変化があるだろう。そもそも、断舎離とは、物(減らし)を心に作用させて、(物質でなく)精神を改善するものなのだろうから、それでいいのだろう。知らんけどw

なお、デスクトップPCも同じ状況で、無駄にclamdが動いていたが、メモリがふんだんにある(32GB)ため300MB程度は誤差のようなもので(ブラウザがかなり多くのメモリを食う)、停めても本当に何も変化がなかった。チャンチャンw

 

(20:30 わずかに補足; 7/3 6:15 少し加筆・補足)

  •   0
  •   1