pythonでMP3タイトルを一括変更する

森沢洋介著「瞬間英作文」。素晴らしいですね。英語で会話するときに言いたいことがあるけれど、文章にできずに簡単にしか言えませんでしたが。この本をきっかけに打開できてきたような気がします。付録CDをiPhoneに入れて、ミュージックアプリで通勤途中に聞いています。日本語を聞いて、英語の文章を作って、英語の音声と比べてみる。というのを繰り返して、長い文書も段々と自然と作れるようになってきました。この学習も次の段階で、話すための瞬間英作文シャッフルトレーニングを買ってやろうとしています。

前置きは長くなりましたが、今回は瞬間英作文シャッフルトレーニングのCDをMP3にしてiPhoneへ転送したところで、意外な苦労をしたので書きます。

問題1 アルバムのタイトルがまとまらない

何故かアルバム名がたくさんできてしまいました。アルバム名を揃えたり短くしたりいろいろやってみましたがうまくいきませんでした。結果的に、いったんmp3ファイルを1つだけ転送してから、残りのファイルを転送するとうまくいきました。下記のブログにずばり答えが書いてあったので助かりました。
iPadのMusicアプリ上でアルバムがまとまらない

またMacでMP3のアルバム名やタイトルなどをGUIで設定したい場合はID3 Editorが利用できます。アルバム名やジャンルなど共通の項目は複数のファイルをまとめて編集することができます。

問題2 曲名が長すぎてはみ出してしまう

これは曲名をすべて半角に変更して対応しました。ID3 Editorで曲名は一つずつ編集するしか無いのでコマンドラインですることを考えました。ID3 Editorでもコマンドラインのツールが有るようですが、やり方があまり詳しく乗っていないので、今回はpythonでライブラリを読み込んでやることにしました。まず作成したコードは

mutagenというライブラリを使用しています。ライブラリのインストールは

pip install mutagen

全角半角の変換はjaconvライブラリを使用しています。これもライブラリのインストールが必要です。

pip install jaconv

.replace(‘Part’,”)でPartという文字を消していますが、これは、CD2のタイトルがPart1と2に分かれていて、これがあるとiPhoneのミュージックアプリで見たときはみ出してしまうので削除しました。編集した結果下記のように見やすくなりました。

OpenCVのサンプルをやるだけで苦労した

将来的にOpenCVを使ってソフトを作るつもりなので、インストールしてサンプルファイルを駆動させようと思ったら、意外と苦労しました。C++でサンプルを動作させるだけなら、何年か前にもやったことがあるのですが、改めてやってみたらできませんでした。

環境

マシン macOS Mojave 10.14.

言語 C++

ライブラリ OpenCV 4.1.0

コンパイラ Clang / LLVM

実行するとどうしても、リンク異常が出てしてしまいます。参考は下記のURLです。

OpenCV/C++で画像処理入門 vol.1 〜画像を表示してみよう〜

ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

ソースからコンパイルして、cmakeを使って実行すると問題なくできました。

C++のOpenCVをCMakeで使う

いろいろ調べた結果、リンカエラーが発生するときは、ライブラリがきちんと割り当てられていなかったということ。pkg-configの設定ファイルが悪かったみたいです。余計なlibファイルも記載されていました。/usr/local/libフォルダからopencvに関連するのファイルを抽出し書き直しましたファイルはこちら。

opencv4.pc

prefix=/usr/local
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib

Name: opencv4
Description: The opencv library
Version: 4.0.0
Cflags: -I${includedir}/opencv4
Libs: -L${libdir} -lopencv_calib3d -lopencv_core -lopencv_dnn -lopencv_features2d -lopencv_flann -lopencv_gapi -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lopencv_ml -lopencv_objdetect -lopencv_photo -lopencv_stitching -lopencv_video -lopencv_videoio

pkg-configを実行すると

$ pkg-config opencv4 --cflags --libs
-I/usr/local/include/opencv4 -L/usr/local/lib -lopencv_calib3d -lopencv_core -lopencv_dnn -lopencv_features2d -lopencv_flann -lopencv_gapi -lopencv_highgui -lopencv_imgcodecs -lopencv_imgproc -lopencv_ml -lopencv_objdetect -lopencv_photo -lopencv_stitching -lopencv_video -lopencv_videoio

コンパイルと実行は下記のようにやる。ちなみにstd=c++11を指定しないとコンパイルができません。

$ clang++ -std=c++14 $(pkg-config --cflags --libs opencv4) main.cpp
$ ./a.out

シリアル変換ケーブルTTL-232R-5Vを試してみた。

電子工作がまたやりたくなった。
前回RS-485通信をやってから、また電子工作をやってみたくなった。やってみたいテーマは、リモコンを作ってテレビや照明を消すこと。電子工作の例でよくのっているやつだ。早速秋月電子で赤外線の受信素子や赤外線LEDを購入した。

ついでに、以前に欲しいと思っていた、USBシリアルケーブルを思わず購入したのでこれを先に試すことにした。型式はTTL-232R-5V。商品が届いたが、取説類は全然入っていなかった。秋月電子のHPで書かれていたPDFで接続のしかたは分かった。試しにMacbookとArduino Unoでシリアル通信をすることにしたが、意外と苦労した。

商品が届いたが、取説類は全然入っていなかった。秋月電子のHPで書かれていたPDFで接続のしかたは分かった。試しにMacbookとArduino Unoでシリアル通信をすることにしたが、意外と苦労した。

のでこれを先に試すことにした。型式はTTL-232R-5V。商品が届いたが、取説類は全然入っていなかった。秋月電子のHPで書かれていたPDFで接続のしかたは分かった。試しにMacbookとArduino Unoでシリアル通信をすることにしたが、意外と苦労した。

MacはScreenで接続

-l /dev/tty.*
でポートを調べて
$ screen /dev/tty.usbserial-FTAKBZ4I
で接続

散々苦労したが結果的に悪かったのは(わからなかったことは)Arduinoシリアルモニタは受信データを表示しない事だ。確認するには受信したデータをSerial.print()関数などで、シリアルに送らなければ鳴らない。
スケッチは以下の通り。

これが分からずに配線をいろいろ入れ替えたこともあり、RXとTXがどっちがどっちだか分からなくなった。結局正解は最初からやってたこの接続だった。

Arduino PC TTL-232R-5V 通信方向
1 : TX →  5 : RXD(黄) ArduinoからPCへ
0 : RX →  4 : TXD(橙) PCからArduinoへ
GND 0 : GND(黒)

今回いろいろ試行錯誤してわかったこと

  • Ardunio通信設定のデフォルトはデータ長8bit,ストップビット1bit,パリティなし
  • これをscreenで設定するには
    $ screen /dev/tty.usbserial-FTAKBZ4I 9600,cs8,-parenb,-cstopb
  • screenの終了方法
    control + a を押してからk 。終了してよいかどうか聞かれるのでyを押す

今後

何年か前にもやってははずなのにすっかり忘れている。screenについてはもっと調べたほうが良さそうだ。

mac OS mojave で前と変わったこと

telnetができない

あまりよく使うコマンドでは無いから気がつくまで時間がかかったが、telnetができなくなっていた 。telnetはTCPポートが開いているかどうかの確認の時によく使う。使い方としては次のような感じ。
$ telnet 192.168.0.2 80
いつからだろう。思い当たるのはOSをアップデートした頃ぐらいかな。inetutilsをインストールして解決できた。
brew install inetutils

pingができない

そしていつの間にかpingもできなくなった。

ping 192.168.20.2
ping: Lacking privilege for raw socket.

whichで調べてみると、下記のファイルになってた。
$ which ping
/usr/local/opt/inetutils/libexec/gnubin/ping

inetutilsをインストールしてからか?
解決策として管理者としてやるか、別のpingプログラムを使うか。
$ sudo ping 192.168.0.2
$ /sbin/ping 192.168.0.2

どちらでもそんなに手間ではない。

コンピュータ名でping

pingで思い出したが、windowsのpingは ping <コンピュータ名>のようにコンピュータ名を打って、pingができる。macはWindowsみたくコンピュータ名でpingは打てないようだ。同じようにできないかと調べたが見つからなかった。しかし、一つだけ名前からip アドレスを調べるコマンドは分かった。sumutilだ。使い方はこう。
$ smbutil lookup <PC name>

Wake On Lanについていろいろ試してみた

テレビをリモートで操作する方法を調べていたら、Wake On Lanにかかれているサイトに出会った。恥ずかしながら今までWake On Lanという言葉を知らなかった。文字通りLan 経由で起動するということだが、マジックパケットと呼ばれる方式で通信をすると、電源がOFFが状態から起動するということらしい。

まずはXYCベアボーンで試そうと思った。WindowsデバイスマネージャーのLANカードオプションからWake On Lanを設定。これは問題なかった。次にBIOSの設定しようとしたら項目が出て来なかった。おそらくマザーボードがWake On Lanに対応していないということだろう。それでも、スリープ状態から起動することができた。

起動する側で試したのはRaspberry piでetherwakeというソフト。次にMacbookでwakeonlanというソフト使い方は次の通り

Raspberry pi
$ sudo aptinstall etherwake
$ sudo etherwake 01:02:03:04:05:06

Mac
$ brew install wakeonlan
$ wakeonlan -i 192.168.1.255 -p 9 01:02:03:04:05:06

Wake On Lanをきっかけはテレビだが、そのサイトもうちと同じソニーのブラビアなので一応試してみた。家のほうがずっと古いがダメ元で、一応Lanポートもついているし。

試してみるとうんともすんとも言わなかった。インターネットで調べると。Wake On Lanには対応していませんと明記されていた。

このまま、試すことが出来ないで終わってしまうのか。と思っていたところ、会社で使っているDell 製のDesktopパソコンで試すことにした。このPCはやり方の手順がのった例までのっているサイトがあったのでできることは間違えなし。Windowsの設定とBiosの設定をやったらできるようになった。

今回わかった事はWake On Lanができる状態では、電源を切った状態でもLan接続している部分のランプが点滅すること。でなきゃ、パソコンの電源を落とした状態で、マジックパケットを受け取ることができるわけがないから。

そもそもWake On Lanがどんな動きをするかわからなかったので、正解までたどり着けてよかった。

参考にしたサイト

Raspberry Piで自宅内のWindows機を起動させる (Wake-on-LAN)
Wake Other Computers from Mac OSX
Windows10でWOL(Wake on LAN)の設定を行う
最近のDELL OptiplexでWOL(Wake on LAN)をするには?

Apple漬けな生活

スマホはシャープSH03から始まり、HTC Butterfly, HTV31とずっとアンドロイドだったが、昨年iPhone SEに切り替えた。アンドロイドについては慣れているしiPhoneに比べて細かい設定ができることが気に入ってた。妻がずっとiPhoneを使っていたからiPhoneがどんな感じかは知っていた。

昨年末にiPhoneにした。理由はバッテリーの持ちだ。その時使っていたHTC HTV31 はハイエンドで機能は申し分ないが、バッテリーの消費は早かった。
夏休みに家族旅行でバンガローに止まった時に、コンセントがなかった。夕方ぐらいには30%切ったので、電源を切って過ごした。しかし妻のiPhone7はまだ70%ぐらいバッテリーがあり、2日間の旅行の間平気だった。

それがきっかけでiPhoneを検討することになり、冬にiPhoneX発売後に安くなっていたiPhone SEを購入した。

Androidのスマホ時代は朝順電満タンの何もしなくても昼ぐらいで半分近くに電池残量が減っていしまっていたが、iPhone は何もしなければほとんど減らない。しかし満タン状態からだと100%でいる時間がかなり長いから、満タンは120%ぐらいあるんじゃないかと思ってしまう。

タブレットも2年ぐらい前にauのお得プランにのってHuaweiのを手に入れたが、この夏iPadを手に入れた。

パソコンはMacbookを使って4年ぐらいたつ。US配列のキーボードで結構気に入っている。

現在仕事以外はapple漬けだ。

iPhoneに良いと思ったのがfacetimeだ。Lineやskypeのように専用ソフトが必要無いので、電話番号を登録してあれば、iPhone同士ネット経由で通話ができる。現地でお客さんと連絡する時にWi-fiに繋がっていればお金がかからない。

一度facetimeでやり取りすれば、SIMを入れ替えてもfacetime でやり取りができる。去年と今年はアメリカに出張することが多く、役に立った。

しかし最近驚いた。朝出勤前で慌ただしくしていたときだった。突然、iPhone、Macbook、iPadがすべて鳴り出した。アメリカにいるお客さんからの電話だった。iPhoneで電話に出たら、MacbookとiPadは鳴り止んだ。

MacbookとiPhoneの連携は素晴らしいが、電話がかかってくるとこんな感じになることは初めて知った。

XCYベアボーンキットにWindows10インストール(2)

Windows10を諦められない

DebianでやっていたがWindows10が諦められない。できないままで終わるのは嫌だ。それにWindowsのデスクトップアプリを試す環境がどうしても欲しい。前回は起動ディスクをUSBメモリーで作ったが、DVDにしてみてはどうか。イメージファイルをDVDに焼いてインストールすることにした。

イメージDVDを作成

MACでイメージファイルを焼くのはすごく簡単。外付けのDVDドライブを取り付けて、新しいDVD-Rをセットし、Finderでイメージファイルを右クリックして「ディスクイメージファイルを・・・.iso をディスクに書き込む」だけ。書き込みにかかる時間はUSBメモリーに作成するよりずっと早い。

XCYベアボーンへインストール

外付けDVDドライブを取り外し、そのままXCYベアボーンへ取り付け、F11を押しながら起動し、起動後、何かキーを押せばインストールが開始する。後はウィザードに従うだけ。思ったより簡単にできた。

Wi-Fiは問題なし

Debian 9で苦労したWi-Fiの設定はWindows10では全く苦労せずに設定できた。さすがWindowsだ。

画面が真っ暗に

しかし問題が起きた、一度シャットダウンして再び電源を入れたら、ログイン画面は表示するが、ログイン後に画面が真っ暗でマウスポインタだけ映るようになった。Ctrl+Shift+Delete メニューは問題なく表示する。調べてみるとグラフィックでエラーが出ているとのことだった。コントロールパネルのデバイス設定を見るとエラーになっていた。そのままドライバーを更新たところ解消した。次からはシャットダウンして立ち上げても全然問題なかった。

Macからリモートディスクトップ

Macからリモートデスクトップで接続して作業したかったので、Windows 以前使用したことがある、Remote Disktop Ver8で接続することを確認。しかし画像ファイルのコピペができないから使い勝手が悪いと思った。調べるとVer10では出来るらしい。早速ダウンロードして接続しようとしたが、ログインするところで接続できなかった。いろいろ調べて試してみた。結果的に言えば通常しているログインIDではなく、Windows ID でログインすることが出来た。 画像のコピペができることも確認した。

mac プレビューの機能が素晴らしい

 長年仕事でWindowsでは、irfanviweというソフトを使ってスクリーンショットした画像を切り取って、WordやExcelに貼り付けてレポート等を作成してきた。Windowsの標準アプリであるペイントではどうしても画像編集は厳しいので他のソフトをインストールしなければならない。

 その考えが頭にあったので、家でmacを使うときもなにか良いフリーソフトが無いか探したがなかなか良いのが無いのであきらめていた。しかし、ある時標準に搭載されているプレビューでいろいろ編集ができることわかって感動したのを覚えている。

 スクリーンショット、切り出し、簡単なコメントや矢印を入力がプレビューだけで出来てしまう。よく使う機能は以下の通り。

1,スクリーンショット

ファイル ⇒  スクリーンショットを撮る ⇒ ウィンドウ…

img screen shot

2,切り取り

切り取りたい部分をマウスで選択し、ツール ⇒ 切り取り または ⌘+k

3,サイズを調整

スクリーンショットした画像がそのままのサイズで、貼っていくと容量が大きくなってしまうので、サイズを小さくしておく

ツール ⇒ サイズを調整

4,文字や矢印を書く

表示 ⇒ マークアップツールバーを表示

実際にやってみた動画はこちら

macOS mojave にアップデートしてスクリーンショットが良くなった。

 Macbookを使い始めて4年が経ち、ほとんどの事は満足しているが、スクリーンショット(画面キャプチャ)はイマイチだった。普段仕事ではDell製のWindows7を使っていて、Fnキー+PrintScreenキーを押すと画面全体がクリップボードへキャプチャーされ、Alt+Fnキー+PrintScreenキーを押すと選択ウィンドウがクリップボードへキャプチャーされた。

 このクリップボードへキャプチャーされる機能が良く。この後はIrfanviewというフリーソフトを使って、選択範囲を切り出し貼り付けて使うという流れとなる。今までのmacではこれができず(知らなかっただけかもしれないが・・・)、グラブというソフトでウィンドウを選択してキャプチャーすると、ファイルが作成されるので、ファイルをプレビューで開いて選択範囲を切り出してというやり方をしていた。

 mojaveで追加されたスクリーンショット機能では、command+shift+5を押すと、画面全体かウィンドウか選択範囲を選べて、出力先もデスクトップやクリップボードなど選ぶことが出来る。おまけに、画面全体か選択範囲だけだが動画も撮ることが出来るので、完全にWindowsの使い勝手を超えた。

command+shift+5 を押したとき
オプションメニュー

ショートカットキーを使わなくてもLaunchPadからも表示することができる。

あらかじめPrewiewを開いて、メニューからウィンドウをキャプチャーすることもできる。

macOS Mojaveで VM Ware 10は起動できた。

 前回High Sierra(10.13)へアップデートした時に苦労したWM Ware。言わずとしれた仮想化のソフト。たまにUbuntuやWindows 10を試したい時に使っている。

 もともとWM Ware Version 7を使っていて、Sierra(10.12)までは問題なかったのだが、High Sierra(10.13)になったら使えなくなって、最新のVersion10に40ドル払いアップデートした経緯がある。

 恐る恐るVM Wareアイコンをクリックし、とりあえず起動することは確認。 起動時にVM Ware 11バージョンアップを勧められた。 起動後、セキュリティーとポリシーで許可を求められたので許可をし、無事Windows10が起動することを確認した。めでたしめでたし。

 今回はWV Wareのバージョンアップは見送ることにしよう。 次回のOSアップデートでは使えなくなるかもしれないから 気をつけないといけない。