ネットの海の片隅で

技術ネタの放流、あるいは不法投棄。

Music.app を捨てて音楽ライブラリを構築しなおした話

発端

以前から iTunes に不満があったが、Music.app になってからいよいよ耐え難くなってきたので Music.app を捨てたくなった。

不満な点はいくつかあるけど、大きいところは以下の2つ。

  • 検索が使いにくくなった
    • iTunes StoreApple Music を使わせようという意図が強すぎて鬱陶しい
    • 検索結果をランダム再生できなくなった
  • iTunes Store の多言語対応が良い感じに動いてくれない
    • OS の言語設定がに複数言語を指定していると、どちらか一方を優先する
    • En を第一言語にすると一部邦楽が英題・ローマ字表記になる(「天体観測」→「Tenntaikansoku」)
    • Ja を第一言語にすると一部洋楽がカタカナ表記になる(「Queen」→「クイーン」)
    • 原語表記してほしい

自分は何が欲しいのか

iTunes/Music.app への不満を裏返すような形になるが、自分が欲しいものを整理すると以下のようになった。

  • 多数の曲を気軽に検索・再生したい
  • 軽度表記厨として、アーティスト名・曲名などは正しい表記がされていてほしい

方針

自分が欲しいものを実現するため、追求するものに優先順位をつけた。

  1. 可搬性
  2. 利便性
  3. サイズ
  4. 音質

可搬性

今回、Music.app を捨てるように、これから構築する環境も将来的に捨てるときが来るかもしれない(たぶん来る)。 その際に、既存の音源をすべてリッピングし直したり、メタデータをつけ直したりするのはやりたくない。

「データはアプリケーションより長生きする」

利便性

簡単に検索・再生できるなど、使いやすいことを重視する。

自分が欲しいのは上等なオーディオシステムではなく、楽しいジュークボックスだ。

サイズ

主にポータブル機器を考慮しての性質。音楽ライブラリ全体を持ち歩くという体験を捨てたくない。

3番目に挙げてはいるが、曲の数が異常に多いわけではないし、技術の進歩を信じているため、めちゃくちゃ気にしているというわけでもない。

音質

音質が良いに越したことはない。 ただ、他の性質よりは優先順位を下げるということを明示的にするために下位に置いている。

昔、MP3 の聴き比べをしたときに 192kbps 以上については違いがほとんどわからなかった。 高音質のデータを作ったところでそれを活かす環境・姿勢で聴いていることは多くないし、これから先、(悲しいことだが)自分の耳は衰えていく一方だと思うので過剰な音質は追求しない。

検討の結果

はじめは FLAC と MP3 で迷っていたが、上記の方針を立てて整理した結果、MP3 を使うことにした。

  • 可搬性
    • MP3 なら OS やプレイヤーなどを問わず、どこでも再生できるはず
  • 利便性
    • メタデータは可能な限り MP3 の ID3 タグに入れる
    • ID3 タグなら可搬性も高いし、音源ファイルとの二重管理なども不要
  • サイズ・音質
    • FLAC可逆圧縮は非常に魅力的だが、音質より容量を優先するため MP3
    • とはいえ、音質は重要なのでビットレートは高めにしておく

構成要素

リッピング

XLD https://tmkk.undo.jp/xld/

超高音質である必要はないが、音飛びなどは許容したくないので XLD の Secure Ripper でリッピングする。 (iTunesリッピングはわりと音飛びしがちでそこも不満だった)

主要設定は以下のような感じ。

  • Ripper Mode: XLD Secure Ripper
  • LAME MP3, VBR, Overall Quality: Default (-q 3), Target Quality: 0.0 (≈ 260kbps)
  • Format of filename: %T/%D - %n %t
    • ディレクトリ名の冒頭に アーティスト名 - を入れるが、複数アーティストが参加しているアルバムやアニソン系で破滅するので通常のアーティストの場合だけ手で入れる

基本的には MusicBrainz のメタデータを使用するが、そこそこぶっ壊れてるので注意。 (一方、freedb はだいたいぶっ壊れてる)

タグ管理

Tag Editor https://amvidia.com/tag-editor

XLD でもタグの管理はできるが、一括編集などの操作がめちゃくちゃ楽になるので Tag Editor を使う。

Genre, Comment あたりはわりと自由かつ恣意的に使っている。 基本的に検索のためのメタデータなので、プレイヤーの検索の仕様(not 検索ができないなど)に合わせる&引っ張られる。

多少面倒でもアートワークをちゃんと追加しておくと後々便利。 また、複数アーティストのアルバムやアニソン系は Is Compilation を true にしておかないと(アプリケーションによるが)アートワーク一覧画面などが破滅する。

Composer, Lyricist, Arranger あたりも整備していきたいが、ちょっと手が回っていない。 (Lyticist, Arranger については再生ソフトが検索などに対応してないことが多い)

f:id:s_osa:20200511210459p:plain
Tag Editor

プレイヤー

Swinsian https://swinsian.com/

昔の iTunes ライクなプレイヤー。macOS 向け。 欲しい機能が一通り揃っていて、軽快に動く。

プレイヤーなら Audirvana とかが有名かつ人気な印象があるが、Audirvana が推している高音質という機能の優先順位が自分の中で低いこと、また、Swinsian の検索のほうがシンプルで使いやすかったことから Swinsian を選択した。

まだ試していないが、iPhoneiTunes への楽曲転送もできるらしい。

f:id:s_osa:20200511210634p:plain
Swinsian

ストレージ

Dropbox https://www.dropbox.com/

ローカルだけに保存しているとデータが飛んだときに泣いてしまうので、クラウドストレージに保管・同期する。 これは正直なんでも良いと思う。

おわりに

自分が欲しい物を整理した結果、可能な限り MP3 に乗っかるという結論になった。

上で挙げたリッピングからストレージまでの各要素も MP3 ファイルという汎用的なファイルをつくったり、メタデータをつけたり、再生したり、保存したりしているだけなので、いずれかの要素だけ乗り換えるのも容易になっている。

優先順位の検討で悩んでいた時間が結構長くて、音質については割り切って妥協するということに決めたタイミングから物事がスルスルと決まっていった印象がある。

今回つくった環境が実用上どれくらい便利かはこれから先の運用で明らかになっていくと思うが、現時点では満足している。

JetBrains IDE の設定など

個人的メモ。随時更新する。

  • Font
  • Plugins
  • Shortcuts

Font

JetBrains Mono を使っている。リガチャもしばらく使ってみたが、馴染まなかったので OFF にした。

www.jetbrains.com

Plugins

あまり入れていない。

言語サポートとかは自明かつ適宜入れれば良いので除く。

IdeaVim

https://plugins.jetbrains.com/plugin/164-ideavim

これがないと JetBrains IDE を使えない。

~/.ideavimrc を読みに行くので ~/.vimrc に symlink を張る。

⌃T をはじめ、いくつかのショートカットが IDE とぶつかるので注意が必要。

Indent Rainbow

https://plugins.jetbrains.com/plugin/13308-indent-rainbow

Rainbow Brackets

https://plugins.jetbrains.com/plugin/10080-rainbow-brackets

Shortcuts

大方針としてはあまり大きくはいじらないつもり。

IdeaVim を入れると まわりのショートカットが結構 IDE とぶつかるため、Editor > Vim Emulation からこのあたりの衝突をどうするか設定する必要がある。

基本的には Vim を優先したほうが使いやすいが、⌃TIDE 側の Refactor > Refactor this... に倒している。

Emacs Keybind

⌃D, ⌃HEditor Actions > Delete, Editor Actions > Backspace に振っている。 (⌃F, ⌃B, ⌃N, ⌃P, ⌃A, ⌃E, ⌃K あたりはデフォルトで対応してるのに、⌃D, ⌃H は他のアクションに振られている)

Terminal

⌘T をターミナルへのフォーカスに振っている。

Database

⌘D をデータベースへのフォーカスに振っている。 (⌘D は結構いろんなところで使われていたので、それぞれ丁寧に消す)

Git Blame

⌃⌘BVCS > Git > Annotate に振っている。

Open in GitHub

⌃⇧⌘OPlugins > GitHub > Open in GitHub に振っている。

Reopen Closed Tab

ブラウザの挙動に寄せて ⇧⌘TMain menu > Window > Editor Tabs > Reopen Closed Tab に振っている。

デフォルト

よく使うやつ。 (たぶん網羅はできてない)

Key Action
⌘O クラスを検索
⇧⌘O ファイル名を検索
⌥⌘O シンボルを検索
⌃Tab ひとつ前のファイルへ移動
⌘E ファイル履歴
⌘↑ Navigation Bar にフォーカス
⌘1 Project にフォーカス
⌘B, ⌘Click シンボルの定義・利用箇所を表示する
⌘U スーパークラスを開く
⌥⏎ Intention Actions
⌥⌘L コードをフォーマットする
⌘/ コメントアウト、アンコメントkk;w

NETGEAR BR500 のファームウェア更新でコケたときにやったこと

管理画面から NETGEAR BR500 のファームウェアを更新しようとしたら、何もしてないのに壊れた™。 (電源ボタンが緑色に点滅したまま進まなくなった)

ググってもあまり情報がなかったので一応ログを残しておく。

やったこと

基本的には以下のページにあることをやっただけ。 https://kb.netgear.com/000059634/How-to-upload-firmware-to-a-NETGEAR-router-using-Windows-TFTP

  1. 新しいファームウェアを落としてくる
  2. 作業をする PC の IP address を固定する
  3. TFTP を使って新しいファームウェアを BR500 に投げる
    1. macOStftp は引数がいろいろ違うので以下のような感じ
$ tftp
> connect 192.168.0.1
> mode binary
> put BR500-V5.8.0.1.img
> quit

電源 LED がオレンジ色に変わったらあとはしばらく放置。

注意点

  • 事前に BR500 の IP address を変更していても 192.168.0.1 に繋ぐ必要があった
  • factory reset は効かなかった