Archive for the ‘音楽配信’ Category

GPMDPの改良。音量の正規化の改良について考えていたら、確か、以下のようなことだったと思うが、GPMDPでなく、外部プレーヤーで再生た方がいいのではないかということになった。

  • GPMDPの構造上避けられない、曲の開始と同時に一時停止しても先頭が一瞬再生されることがある問題は、外部プレーヤーを使わないと避けられない。
  • 再生ゲインの計算のために曲のファイルをキャッシュしているのだから、そのファイルをVLCやgmusicbrowser (GMB)などの外部のプレーヤーで再生することができる。
  • 再生ゲイン対応のプレーヤーなら、音量(ボリューム)の設定やファイルにを再生ゲインを乗算しなくても、再生ゲインタグに設定するだけで、音量が正規化されるのも良さそう。
  • GPMDPは使い勝手がいいとは言えないし、リモコンを2個にしたり、2つのプレーヤーの切り替えもしたくないので、操作性を改善する点でもGMBで再生したい。

いずれにしても、昨夜までに構想が練り上がった気がしたし、基本的なところは容易にできそうだったので、今朝、GPMの曲をGPMDPでなく外部プレーヤーで再生できるようにしようとする作業を初めてしまった。そして、確かに、再生できるようにすること自体は簡単だった。14時前には、GMBで再生できるようになった。

GPMの曲をGMBで再生

図の左上はGMBのミニプレーヤーで、右はGPMDPのウインドウである。GPMDPが再生しているように見えるGPMの曲は、実際にはGMBで再生されている。その証拠に、双方で同じ曲・アルバムになっているし、僕はこのアルバムは持っていないし、GPMDPの再生時間は0だが、GPMは0ではない。

が、やっぱり難航し、この時間になっても終わっていない。残っている難しいことは、以下である。

  • 次に再生する曲を途切れないようにGMBに送り続ける(今は、最初の1曲の再生が終わったら停まってしまう)。また、ギャップレス再生のためには、再生中の曲が終わる前に送る必要がある。
  • GMBとGPMDPの連携 (例: GMBの再生が終わったことを検出して、次の曲を再生開始する)
  • GMBとGPMDPの操作の統合 (例:GPMDPで一時停止したら、GMBを一時停止させる)。GMBに統一すればいいのだが、曲の検索など、どうしてもGPMDPでしかできないことがある。まだ、ユースケースの検討が充分でないので、方針が固まっていないせいもある。

でも、今日のところは、目論見どおりGMBで再生できたので、良しとする。

(気が向いたら、詳細を追記します。)

(9/24 21:35追記) どうにかこうにか、次に再生する曲をGMBに送り続けられるようになった。GMBも自分で作ったGPMDPの追加プログラムも、想定外の動きをしたりして、なかなか大変だった(おもしろかったけどw)。

GPMの次の曲を自動でGMBに追加

図の左はGMBのウインドウで、右はGPMDPのウインドウである。GPMDPのプレイリストの、現在再生中の次の曲がGMBに自動的に追加され、連続再生できるようになった。

動き出したばかりで、まだまだ荒削りで、さまざまな不具合はあるが、とりあえずは音楽が聴ける状態になったので、一段落だ。それに、(GMBの)リモコンで一時停止などの操作ができるのは、すごく便利だ。

不具合の例:

再生していると、再生中の次の曲以降も勝手にGMBに追加される。まあ、悪いことではないが、想定外の動作なので複雑な心境だ。あと、それに伴ってGPMDPの下部のプレーヤー部分は、まだ再生していない曲になってしまう。しかも、それは上側のキューの再生中(と思っている)曲とも違うのが解せない。

  • 再生中の曲: "Here comes the Sun"
  • GPMDPが再生中(と思っている)曲: "Let it be"(上部)、「二人静」(下部)

細かいことが多いので、先は長そうだw

PS. 今日からか、URLに"?hl=en"を付けても無視するようになったようで、日本語で表示されるようになってしまった。やっぱり、ネットサービスはvolatileだなあ。

  •   0
  •   1

その後、音量の正規化が不完全な感じだったので、興味もあって、試行錯誤していた。

前回書いた、ffmpegのloudnormフィルタも試してみた。最新のffmpegをインストールしたら使えるようになった。が、使ってみると、普通の曲の正規化に20秒以上も掛かるので、使うのは諦めた。また、1回で処理しているせいか、包絡線が微妙に変化(曲の始まりの頃に、なだらかに小さくなる)することがあった。確かに、本当に1回で正規化処理するなら、最大値なんて分からないから、そういうこともありそうだと思った。それでは、ちゃんと処理するとしたら、2回の処理が要り、全部で40秒以上も掛かるから、更に使い物にならない。まあ、あれは、ちゃんとした制作のような時に使うものなのだろう。

他のプログラムを探したのだが、なかなかいいものがなかった。ひとつ、ffmpeg-normalizeというのが高速で良かったのだが、曲によっては相性が悪くて結果が駄目だったり、処理できなかった(最大値が0dBを超えると言ってエラーになる)ので、却下した。

そうこうしているうちに、ちょっと思い付いた。前回採用した、RMSの最大値(長さは0.75秒にした)と正規化したい音量(例: -16dB)との差で音量を設定するのだ。ここでは、その差を擬似再生ゲインと呼ぶ。

擬似再生ゲイン(dB)= 正規化したい音量(dB) - 曲のRMSの最大値(dB)

理論的にはおかしいことだらけなのだが、聴いてみると今までで一番いい感じだった。例の、"Heartbeat city"さえも良かった。おかしいというのは、RMSの最大値は短時間の実効値の最大値なのに、それと全体的な平均値に相当する、正規化したい音量の差を使うことだ。どうしてかは分からないが、うまい具合に前者が後者に近くなるのかも知れない。

更に、音量の設定方法も変更した。今までは、GPMのwebの音量(スライダー)のスケールが直線(目盛りと音量が比例)であることを想定して設定値を計算していたが、そうでなく、対数であると想定して、上記の擬似再生ゲイン(dB)を適当にスケーリング(例: ×1.75)した値で音量を設定するのだ。具体的には、以下の式にした。

音量設定値(%)= k * 擬似再生ゲイン(dB) + 音量の基準値(%)

パラメタは、loudnormの結果と比べて調整した値を、聴きながら更に調整して、今は以下に設定している。

k= 1.75, 正規化したい音量= -12dB, 音量の基準値= 70%

これで、随分、曲ごとの音量差が解消したように感じる。音量の基準値が小さいせいか、全体的に音量が他のアプリより小さ目なのだが、これを大きくすると、曲の音量が小さい場合に充分な補正ができなくなる可能性があるので、増さないことにした。

 

PS. 再生ゲイン処理前の一時停止がうまくなくて一瞬音が出る問題も、対処方法を考えた。簡単に書くと、外部のプレーヤーを使うのだ。試したら書くことにする。

  •   0
  •   0

Google Play Music (GPM)の非公式アプリ、Google Play Music Desktop Player (GPMDP)。僕はそれを自分好みに改良(改造)しているのだが、ちょっとした問題が直らずに悩んでいた。

その問題とは、音量の正規化をするために、再生ゲインの計算処理の前に再生を一時停止するのが時々間に合わず、曲の頭が一瞬(長い時は数秒)再生されてしまうのだ。まあ、一瞬なので、聞かなかったことにすればいいのだが、なぜ起こるのか気になるし、音楽なので、余計な音はない方がいい。

それで、その遅れの原因を考えた。最初は、JavaScriptのスケジューリング(いろいろな処理を細かい時間で区切って実行すること)が今一つで、処理の切り替え間隔が長くなることがあるのではないかと想像していた。しかし、自分のプログラムで各処理の終了時刻を表示するようにしてみたら、かなり正確だった。例えば、100ms待つ処理は、ちゃんと100ms前後(誤差は数ms)待っていた。だから、JavaScriptの問題ではないことが分かった。

それで、GPMDPがGPMにアクセスするのに使っている、gmusic.jsというライブラリを読んでみた。最初は意味が分からなかったのだが、何度か読んだら、昨夜だったか、突然分かった。

GPMDPもgmusic.jsも、GPM (Google)にアクセスなんてしていないし、音楽だって再生していないのだ。アクセスしているのも再生しているのも、ブラウザ(GPMDPの場合はElectronで動くChromium)で動く(Google純正の)webページなのだ。そして、gmusic.jsは、それに「ちょっかい」出しているだけなのだ。例えば、再生中の曲名は、webに表示するためのHTMLから取っているし、音量は同じくHTMLの部品、スライダーに値を設定しているだけだ。要は、体のいいスクレイピングだ。

それから、曲の再生時間だってプログレスバーの値(HTMLに書いてある)を読んでいるだけだ。下図の灰色の部分は、GPMの曲の再生時間のプログレスバーの記述である。字が細かいが、 value="2917" や aria-valuenow="2917" は現在の再生位置(ms単位 →  約3秒)を、 aria-valuemax="350000" は曲の長さ(→ 約5'50" : Amazonでは5'52"となっているから、概ね正しい)を示している。

GPMの曲の再生時間のプログレスバーのHTML

問題の曲の切り替わりの判定も、同様にweb中の曲名の記述を監視していて、変わったかを判定しているのだから、そりゃあ、遅れるだろう。逆に遅れないのが不思議だ。プログラムを作っていて不思議に思っていたのだが、曲の切り替わりイベントが来たのに、現在の再生時間が0秒付近でなく前の曲の終わり付近のことがあるのは、そのせいだったのだ。というのは、曲名の更新と再生時間の更新は同時にはできないので、必ず時間差があるのだ。

だから、曲の切り替わりイベントで即座に一時停止したって全く無駄なことで、ブラウザの都合でいくらでも遅れる。だから曲の頭が一瞬出てしまうのだ。

この仕組みを考えついた人には感心するが、全く安直で汚い実装だ。将来性もない。Googleがwebをちょっと変えるだけで、全然動かなくなる。

結局、そもそもの問題は解決不可能になった。一時停止しないで済む方法を考えるしかない。GPMの同時再生制限のために、それは無理と思っていたのだが、今朝、その方法を思い付いた。

再生ゲインを計算するために曲を取得しているが、ゲインを計算するだけでなく、それを実際に正規化して、別のプレーヤー(例: VLC)で再生するのだ。それなら、音量の正規化だって、擬似的な再生ゲインで音量を変える(= 乗算する)だけの簡易なものでなく、ちゃんとした方式(例: LUFSを使う)でできるから一石二鳥だ。

その場合、GPMDPは、例えば、シーケンサーとでもいうのか、再生せずにいつも曲の先頭で停止していて、再生する曲情報を順々に僕のプログラムに提供するだけにするのだ。それなら結構簡単に動きそうな気がする(細かいことを詰めるのは、かなり面倒だが)。更に、全然詳しくないが、HTML5の音楽プレーヤーをGPMのwebに はめ込むなんてのができたら、(技術的に)おもしろそうだ。

そこまでするんだったらGPMDP(= GPMのweb)を使うのを止めようと言いたいのだが、GPMの曲の検索やリコメンドやラジオにアクセスするには必要なので、なかなか切れない。でも、いつかは、完全ではないにしろ、GMBと統合し(組み込み)たいという野望はある。

なんてことを考えて楽しくなったのだが、そもそも音量の正規化はラジオのために作っているのに、近頃は、僕好みのラジオを聴き尽くした感があることにも気付いてしまって、本当にやる意味あるのかと、早くもやる気を失っている。Googleよ、ラジオを更新してくれ!

 

PS. 以前も書いたが、結局、GPMDPは大したことはしていない。単に(webでなく)独立したアプリの体裁にしているだけで、庇を借りているだけのくせに母屋を持っている顔をしているようなものだ。だけど、プログラムの量はそれなりにあって、バグもある。更に、上述のような問題があるうえに将来性もない。悪いことづくめなのに、みんな喜んで使っているのは情けない。いつか突然動かなくなって慌てるのではないか。純正アプリがないから仕方ないのだけど、GPMの音楽を聴くだけならwebだって何も問題ないと思うのだが・・・

  •   0
  •   0

風邪ひいて調子悪いし、台風(今はまだ普通の雨)で外に出るのも億劫だしで、全くのプログラミング日和なのでw、昨日に引き続き、GPMDPの改良に余念がない。いや、余念があるから捗っているのかも知れない。僕の場合、別にプログラムをいじったりしたくはないのだが、音楽を気持よく聴きたくて、いろいろ考えるとできそうだから、仕方なくやっているのだ。

それはともかく、ついにGoogle Play Music (GPM)のプレーヤーGPMDPで音量の正規化ができた。我ながら大変強引な方法だし、いろいろ制限はあるが、とにかくできた。

方法は、基本的には昨日書いたとおりであるが、実際に作ってみると、細かいことがいろいろあったので、その辺りを書いてみる。

見つかった問題点

  1. 曲を再生中に再生ゲインを計算するために曲を取得すると、GPMは同時に1つの機器からしか再生できないので、次の曲の開始時にエラーになって、再生が停まってしまう。
  2. そのエラーダイアログの実装が汚く(まあ、元々がwebなのだから汚いというのは言い過ぎだが)、ブラウザ内のダイアログもどき(昔のワープロのようなもの)なので、xdotoolのようなツールで自動的に閉じるのが難しい。
  3. 曲の再生ゲインの計算が難しい。単純な最大値では聴感に合わない。実効値(どのくらい大きく聴こえるか ≒ 波形がどのくらい太くて黒いか)を求める必要が要る。
  4. GPMDPの音量のステップが段階的なので、細かい再生ゲインが反映されない。
  5. クラシックなどを聴く時のために、音量の正規化機能をon/offできるようにする必要がある。

実際に書き出すと少ないが、結構苦労した。

問題の解決

  1. GPMの同時再生エラーとエラーダイアログの問題
    • エラーダイアログが出たことを検出することすら難しいし、検出して自動で閉じるようにしても、音楽の再生中に勝手にマウスが動くのは鬱陶しい。
    • JavaScriptの機能で、ページ中にあるダイアログを探して、閉じようとしたのだが、なぜか、ダイアログもボタンも見つからず、どうにもならないので、一旦、後回しにした。
    • その後、手を抜きたかったので、曲の再生中でなく、曲間で一時停止して処理するようにしたので、最終的には、問題は起こらなくなった。それでも、処理はすぐに終わる(2秒未満: 下で訂正)ので、気になることは滅多にない。そもそも、正規化はラジオでしか使わないので、曲が間隔なしでつながることはないから、多少曲間が伸びても問題はない。(9/18 14:35 訂正: 実際に測定したら4秒前後だったが、ラジオのせいか、気にならないのは確かである。)
  2. 曲の再生ゲインの計算
    • 最初は最大値を使ったのだが、聴いてみると余り効果がなかった。
    • 値を調べると、多くの場合、最大値は100%近いので、ほとんどの曲で、正規化されていなかった。
    • 平均値を試したが、余りいい結果にならなかった。どういう訳か、平均値は小さいのに大きく聴こえる曲(The Cars "Heartbeat city": どういうことなのだろう??)があったからだ。
    • 処理に使っているffmpegにはloudnormという正規化する機能があるのだが、今のOSに入っている版には入っていないので諦めた。また、曲を正規化してもGPMDPでは再生できないので、余り便利でない。
    • 最終的には、ffmpegのastatsという機能で短時間の実効値(RMS)の最大値を取得することにした。理論的に正しいのか分からないが、聴いた感じでは良さそうだ。実効値を求める期間(時間)の設定が難しいのだが、昔のポップスを聴く限りでは1.75秒がいいようだ(ちなみに、この値は「異邦人」(1979)でチューニングした)。
  3. GPMDPの音量のステップが段階的
    • 今は音量を2.5%ステップにしているので、確かに細かい違いは反映されないが、聴いた感じでは分からない(細かい音量設定よりも、演奏の性質による違いが大きい)ので、今は保留している。
  4.  音量の正規化機能のon/off
    • 設定項目を追加すれば可能だが、いちいち開くのが面倒なので、再生メニュー(曲の右に出るもの)に追加することにした。
    • 追加はできたのだが、「ラベルの翻訳がない」という表示になってしまい、なかなか解決できなかった。
    • プログラム中のHTMLを良く見たら、<span>の属性(is="translation-key")で翻訳したラベルを使う指示をしているようだったので、それを止めるようにした(そんなものすごい機能があるとは、恐ろしい。脆弱性になるような気がするが、考え過ぎか)。
    • また、メニューでon/offするので、メニューのラベルが現在の状態を反映するように、設定変更時にラベルを書き換える(例: Onの場合は「無効にする」、offの場合は「有効にする」と表示する)ようにした(下図参照)。本来は、モードを示すアイコンなどを追加するといいのだが、それも面倒なので、このようにした。

再生メニューに音量正規化機能のトグルを追加

という訳で、随分苦労した気がするのだが、書いたらあっけないものだ。。。 実際には、Googleの検索と、そこから見つかった有用なページを書いてくれた方々に随分お世話になった。もし昔だったら、たった数日で、全く使ったことのない環境やプログラムをこんなにいじることはできなかっただろう。

それから、書く必要すらないことだが、もしWindowsを使っていたら、全く無理だったし、やる気も起こらなかっただろう。あれを使っていたら、どんなに普通のことでもなぜか大変になるから、ソフトウェアの正常な発展には大変な障害だとつくづく思う。

音量正規化の効果はおそらくあると思う(GPMDPの音量はちゃんと変化している: スライダーを表示させたままで見ていると、曲間でスライダーが自動的に動くのがおもしろい)のだが、気のせいかも知れない。上記のように完全ではないので、時々、小さく感じたり、大きく感じたりすることはある。ただ、以前は頻繁に音量を変えていたが、これができてからはほとんど変えていないので、やっぱり、効果はあると思う。

以下に、実装メモを書く。

  • 処理の流れ
    1. 曲が変わったイベントを待つ。 → 再生しようとしている曲情報が来る。
    2. 再生キュー(再生する曲一覧)を取得する。
    3. キューから曲のIDを取得(曲名、アーティスト名で検索)する。上記の曲情報には入っていないため。
    4. 計算済みの最大値が保存されていたら、使う。 → 9へ
    5. gmusicapiの機能を使い、IDよりstream URLを取得する。
    6. wgetにstream URLを指定して、曲を取得する。ただし、もしキャッシュにデータが残っていたら、再利用する。
    7. ffmpegのastatsフィルタでRMS(1.75s)の最大値を求める。
    8. 再利用できるように、いくつかの最大値を保存しておく。
    9. 最大値より、正規化するための音量値(%)を計算し、GPMDPに設定する。
    10. キャッシュ中の古いデータを消す。
    11. 1に戻る。
  • 制限事項
    • 再生ゲインはトラックモードのみ対応 (本質的に、アルバムモードには向かない。気長な人なら別)
    • 当初は、再生中にバックグラウンドで次の曲の処理をする予定だったのだが、暫定的に作ったものが結構うまく動いて、それ以上は面倒だったので、再生前にこれから再生する曲の処理をすることにした。
      • 上にも書いたが、処理は短時間(クラシックのような長い曲を除き、概ね24秒以内)に終わるので、曲間が長く感じることはない。
      • これならシャフルにも対応できるので、却って良かったのかも知れない。
    • 計算した再生ゲインの情報は保存しないので、過去に計算した値が再利用できない。(TODO)
    • GPM自体やwebページの仕様に大きく依存しているので、それらが変わったら、途端に動かなくなる(これはGPMDPも同様)。

 

PS. 前にも書いたが、どういう訳か、僕が聴くGPMのラジオで斉藤由貴の曲が頻繁に掛かる。今日は「悲しみよこんにちは」だ。好きな曲だが、今の彼女はそういう状況なのだろうか? というか、今でも彼女が現役でラジオ番組を持っていたことが驚きだった。

PS2. 本題とは関係ないが、GPMのおかげで分かったことを書く。

Winkの曲だとばかり思っていた「ふりむかないで」は、実はザ・ピーナッツの曲だった! そんな昔の曲にしては、全然違和感がなかったのがすごい。「ほう」と思った。(21:21)

PS3. この作業中に気付いたことがある。アプリをビルドして起動するのが意外に遅いのだ。もちろん何分も掛かる訳ではないのだが、一瞬ではないので、何度も繰り返すと結構イライラする。たかが(と言っては悪いが)JavaScriptなのに、ものすごく大量のモジュールが集まっているからなのだろう。そして、僕のPCが遅く感じたのは、これが初めての気がする。さすがに古くなったのかも知れない。(22:39)

(22:29 音量のスライダーが自動で動く動画を追加; 23:20 若干加筆・修正; 9/19 7:09: 実装メモ中の処理時間の訂正漏れ(4秒が正しい)を修正)

  •   0
  •   0

Google Play Music (以下GPM。実際にはアプリ(GPMDP)またはweb)には、いくつかの不満(改良したい点)があるのだが、いろいろな手段を組み合わせることで、全部ではないが、大分良くなった。以下に、概要を書く。

要改良点

  • 音量の正規化(再生ゲイン)対応 (特にラジオで、曲ごとに音量が大きく変わって不便なので、トラックモードだけでもいい)
  • 音量調整のステップを細かくしたい。今の半分程度に。
  • GPMDP
    • 「この曲が終わったら一時停止する」機能が動かない。
    • 英語での表示
    • マウスジェスチャ対応
    • ミニプレーヤーの改良 (情報量が少ない。使い勝手が悪い)
    • gmusicbrowser(GMB)との統合 (プレーヤーを1個にしたい)
  • リモコンで操作したい。

改良できた点

  • GPMDP
    • 「この曲が終わったら一時停止する」機能が動かない。
      • バグだったようだ。その機能のプログラム(src/renderer/windows/GPMWebView/interface/
        pauseAfter.js)を修正して、正常に動くようになった。
      • 基本的は、以下の修正をした。
        • Emitter.on('pauseAfter:show', ...)の(toast): pauseAfterに設定する値をPAUSE_AFTERからPAUSE_NEXTに変更した。
        • GPM.on('change:track', ...): 再生開始前は停める処理をしないようにした。
        • Emitter.on('pauseAfter:show', ...)のwindow.showToast: 停める設定後に表示されているダイアログ(?)で設定を解除すると、以後うまく動かなくなるので、解除する文字列(リンク)を表示しないようにし、解除はメニューで行うようにした。
      • PAUSE_AFTERは何に使うのか謎だし、手抜きなダイアログの処理には不満があるが、充分実用的だ。
    • 英語での表示 (暫定対応)
      • 以前書いたように、GPMのページのURLに"?hl=en"を追加した。
      • GPMDPの言語設定から自動で指定できるようにしたいが、そうしてもそれほど便利になる訳ではないので、やるなら、動的に変えられるようにしたい。
    • マウスジェスチャ対応
      • Linux用ジェスチャプログラムEasystrokeを使った。
      • これで、GPMDPでもブラウザと同様に、マウスジェスチャでページを移動(戻る・進む)することができるようになった。
      • 更に、Chromeでもジェスチャが使えるようになった(なぜか、右クリックが不便になるアドオンよりもずっといい)。
    • 音量調整のステップを細かく (9/16 11:48追記)
      • GPMDPが読んでいるGPMのページをVivaldiの開発者ツールで調べたところ、ページ内に音量調整用のスライダーの要素(id="material-vslider")があり、そこでステップが5に指定されており(下の例を参照)、その値を変更すれば、そのステップで動くことが分かった。
        • <paper-slider id="material-vslider" ... step="5" ...>
      • GPMDPの起動時にスライダーの要素を検索し、ステップを変更するようにした(下の例を参照)。
        • 要素の検索: slider= document.getElementById("material-vslider");
        • ステップの変更: slider.setAttribute("step", 新ステップ);
      • 新しいステップは2.5にした(整数でなくてもいいようだ)。
      • この方法は、GPMのページの作りが変わってしまったら駄目になってしまうが、その時はまた対応しよう。
      • また、この機能の有効/無効切り替えを、簡易に設定に追加した。

残りの実現に向けて

  • [済] 音量の正規化(再生ゲイン)対応
    • 基本的に難しいが、以下のような処理が可能かと思っている。この方式だとトラックのゲインにしか対応できないが、ラジオには充分である。
      1. 今の曲を再生中に次の曲のデータを取得して、再生ゲイン(≒最大の音量)を計算する。
      2. 計算した再生ゲインで再生音量を変える。(再生部を改造できない場合は、LinuxのGPMDPの再生音量を変える)。
    • 9/17に対応できた。(9/17 19:06)
  • [済] 音量調整のステップを細かく
    • GPMDPのソースを見て試行錯誤したところ、GPM(のweb部品?)では5%の倍数の音量しか受け付けないようだった。
    • それで、GPMDP自体の音量(LinuxのGPMDPの音量)を変えることを検討している。
    • この場合、新たな音量調整用のUIを追加する必要があるのが、面倒。
      • 元の音量調整機能を使い、GPMDP自体は5%ステップだが、LinuxのGPMDPの音量をうまく増減する(例:GPMDPで5%上げたらLinuxでは2.5%減らし、全体としては2.5%の増加とする)ことで、ステップが細かくできる気もする。が、表示と実際が乖離しそうな気もする。
    • 上記のように、簡易に対応した。(9/16 11:48)
  •  ミニプレーヤーの改良
    • 以下をやりたいが、ミニプレーヤーはGPMの部品のようなので、できるかは不明。
      • 曲名などを常に表示したい。ただし、再生制御は不要。(GMB同様にする)
      • キューを開けるようにしたい。あるいは、簡単に本体を開けるようにしたい。
      • 閉じて再度開くと位置が下がるのを直す。
  • リモコンでの操作
    • GPMDPでは、各種API(JSON, Web socket)やMPRISを使うことを考えている。
    • GMBもリモコンを使うので、切り替えを煩雑にせずに(可能なら切り替えなしで)併用できるようにしたい。そのため、実際に使うパターン(ユースケース)の検討が要りそうだ。
  •  GMBとの統合
    • 以下を検討しているが、必要(メリット)があるのか、良く考えたい。全体的なユースケースの検討が要りそうだ。
      1. ダミーの曲ファイルに曲やプレイリストのIDを入れておく。
      2. そこからGPMの曲の再生URLを取得して、GMB (→ GStreamer)で再生する。
    • GMBからGPMDPを制御できるようにするだけでも、いいかも知れない。

GPMDPはソースが公開されていて変更が可能なので、web版と比べて優位になった。

「この曲が終わったら停める」機能が動かない問題は、単純な間違いなのか、もっと奥深い問題があるのかは分からないが、とりあえず、うまく動いている。「こうやって直した」とGPMDPのフォーラムに投稿するといいと思うが、以前、別のフォーラムに投稿して情報を出したのに結局無視されたことが何度もあるし、この問題も以前に指摘されたのだが、なぜか"closed"(解決済み)になっているので、今は投稿する気が起こらない(もし欲しい方がいらっしゃったら、ここで公開します。ただし、その場合、公開するのは変更したソースコードだけですので、使うには開発環境(npm)が要ります)。

 

余談

GPMDPの言語はJavaScript(Node.js)なのだが、昔はブラウザで動くおまけみたいな言語だと思っていたのに、いつの間にあんなに発達したのかと驚く。最初から、あんなにまともなオブジェクト指向だったのだろうか? しかも、画面表示と関係のない処理すらやっているのは不思議だ(PHPも同様だが)。まるで、小さいガキだった親戚を久し振りに見たら、立派な大人になっていたかのようだ。

JavaScriptも馴染みがないが、Pythonより10倍くらい使いやすい気がする。

 

PS. GPMでいろいろな曲を聴いていると、結構、マスタリングが駄目な曲がある。例えば、途中で途切れてしまったり、曲間に「ザッ」という雑音が出るものがある。あと、ダイジェスト版のように短縮された曲もあった。膨大な曲数なので、たまに壊れていたり、おかしかったりするのだろう。まあ、買う前に分かるので、ありがたい。でも、それを指摘する簡単な手段がないのは、どうかと思う。まあ、Googleらしいが。

 

(9/16 11:48 音量調整のステップを小さくできたので、追記; 9/17 17:39 昨日の追記の日付が間違っていたので修正)

  •   0
  •   0

試用期間はあと1週間くらい残っているが、もう、音楽配信サービスはGoogle Play Music (GPM)で決まりだ。

実は、この週末辺りにも、サービスに入る意味(価値)を再確認したり、「実は、(良く調べれば)Spotifyがいいんじゃないか?」と思ったりした。それで、いろいろ調査したために、今日はドライブを延期する羽目になってしまった。

まず、僕にとっての音楽配信サービスの用途・メリットは、以下のようなものだ。

  • 新しい曲を探すツールとして。
  • クラシックの特定の曲の好きな演奏選び用
  • (昼休み、帰省、旅行・出張時に)暇な時に聴く
  • 「無制限の試聴」、あるいは、「無駄にCDなどを買うのの防止」
  • ダウンロード版を買う前のマスタリングや音質の確認用

これだけでも充分と思う。が、最初に大いに期待した、CDの置き換え(撤廃)については、キャンディーズや小泉や昔のRushがないなど、意外に揃ってないので、僕にとってはまだまだである。でも、事務的な問題だろうから、あと数年で完備するのではないかと思っている。

あと、車で聴きたいものやずっと手元に残しておきたいものは買う必要があるのも、最初の期待からは外れる。ただ、購入前の確認ができるので、以前諦めた、CDからダウンロード購入への移行が再び可能になるので、悪いことばかりでもない。

よって、音楽配信サービスに入る価値は充分あるという結論になった。

次に、「本当にGPMがいいのか」という点でも迷いが生じたので、再度、Spotifyを使って機能を比較したり、レパートリーの広さを比較し直してみた。

まず、機能の比較については、概ね以下のようになった。

Spotify

  • 長所
    • 書誌(初出年など)が正確
    • 100以上の検索結果が出る。
  • 短所
    • 行動(例: 聴いた曲)やプレイリストをデフォルトで公開する(例: ユーザー名で検索できて、聴いた曲が表示されてしまう)。
    • 日本の懐かしいポップスなどのラジオ・プレイリストはほとんどない。
    • アルバム情報の編集ができない。
    • 純正アプリは駄目(随分前から要望があるのに、改良する気がない)
      • 日本語の入力不可
      • 表示テキストのコピー不可
      • ジャケット画像の拡大表示不可 (再生中のものだけ可)

GPM

  • 長所
    • 日本の懐かしいポップスなどのラジオが充実している。
    • アルバム情報の編集ができる。
    • 行動(例: 聴いた曲)やプレイリストをデフォルトで公開しない。
    • リコメンドが結構いい。
  • 短所
    • 書誌(初出年など)が不正確、情報が少ない。
    • 外国の曲の邦題、カタカナ表記の外国アーティスト名が嫌 (例: GPM ⇔ Spotify)
    • 100以上の検索結果が出ない。
    • Linux用純正アプリがない。Webでの使用が基本。
    • サードパーティのアプリ(GPMDP)はまあまあ(というかイマイチ)。

明らかにGPMが優位だが、特に、日本の懐かしいポップスへの対応(これはSpotifyには永遠に無理だろう)、プライバシーへの配慮(SpotifyはGoogleよりひどい)、アプリなどに見られる見識の普通さ(Spotifyが低過ぎる)、そして、(将来)YouTube Redも使えることが期待できるのが、僕にとっては重要だ。

なお、GPMの短所のほとんどは自力で解決できる見込みが立った。

  • 書誌(初出年など)が不正確 → SpotifyやDiscogsやAllMusicなどで調べる(なお、MusicBrainzはほとんど役に立たない)。
  • 邦題、日本語(カタカナ)の外国アーティスト名 → アプリでなく、webなら言語を指定できるので、英語表示にできた(URLを https://play.google.com/music/listen?hl=en のようにする)。こうすると、日本のポップスも英語やローマ字になってしまうが()、外国の音楽が英語や原語で表示されることのほうが重要なので、英語表示にすることにした。なお、どういう訳か、英語表示でも日本語で表示される日本のポップスがある。
    • (9/13 21:40追記) その後、web(ブラウザ)であれば、タブを2つ使うことで、英語と日本語の両方を表示することができることに気付いた。
  • 100以上の検索結果が出ない。 → サードパーティのライブラリ(gmusicapi)を使ったプログラムを使って(作って)、かなり多くの検索結果が出せるようになり、GPMのレパートリーの広さをかなり正確に調べることができた(後述)。
  • GPMDPがイマイチ。 → 中身はwebそのもので、GPMDPは外枠を作っている程度で、バグもあるので、リモコンを使うなど外部と連携させる場合などを除き、使う意味は余りない。逆に、ブラウザでweb版を使う場合、マウスジェスチャでページ移動ができるので便利だ。ただし、Vivaldiではミニプレーヤーが出ない問題があるが、元々それほど有用でないので、大きな問題ではない。
    • (9/13 21:36追記) その後、GPMDPでマウスジェスチャが使えるようになった。Easystrokeというソフトを使い、戻る(キー: BS)と進む(キー: Alt+→)にジェスチャを割り当てた。
    • また、暫定的だが、英語表示ができるようにもできた()。具体的には、~/.config/Google Play Music Desktop Player/json_store/.settings.jsonの中のlastPageというメンバにGPMDPが最後にアクセスしたページのURLが格納されているので、その"?"の後に"hl=en&"を追加して(例: "https://play.google.com/music/listen?hl=en&pli=1#/home")、英語版にしてGPMDPを起動すれば良い。
    • GPMDPは資料やソースが公開されているため、プログラムの変更や内部データへのアクセスがしやすそうなので(実際、上記の暫定英語表示はそれでできた)、改良(カスタマイズ)のベースにしようと思っている。

最後に、レパートリーの広さを再確認した。以前調べた時は、GPMは100以上の検索結果を出さないため、曲によってはSpotifyの方がアルバム数が多い(多く見える)場合があったが、今回は、調べたすべての場合で、大差でGPMの方が多かった。以下に結果の抜粋を示す。

  • モーツァルトのピアノ協奏曲 第23番 (K.488)のアルバム数
    • GPM(以下、G): 459
    • Spotify(以下、S): 211
  • ラフマニノフのピアノ協奏曲 第3番のアルバム数
    • G: 388
    • S: 101
  •  ビートルズのアルバム数
    • G: 52
    • S: 23
  • クイーンのアルバム数
    • G: 57
    • S: 35
  • グールドのアルバム数
    • G: 231
    • S: 201

もちろん、音楽は数が本質ではなく、GPMには重複が多そうだが、それにしても違いが大き過ぎるので、レパートリーの点でSpotifyを選ぶ理由はないだろう。

なお、GPMは検索結果が100までしか出ないため、普通に使っていては、上記のような広大なレパートリーをフルに活用するのは難しい(例: 知らない演奏者は検索に指定できないから、存在を知ることができない場合がある)。この点は、GPMの検索の仕様が改善されるまでは、後述のような外部の検索プログラムを使う必要がありそうだ。

以上より、僕にとってはGPMがベストで、Spotifyは次点以下で、言ってみれば、GPMのサービスが終わってしまった時に「仕方なく入る」程度のものとなった。

 

PS. 近頃、なぜか、GPMのラジオ(日本の懐かしいポップス関係)で斉藤由貴の「卒業」がよく掛かる。今日で通算6回目だ。不倫スキャンダルに同期しているのか、単に人気があったから良く掛かるだけで、考え過ぎかw (9/11 19:41)

 

参考: gmusicapiを使ったGPMの検索プログラムについて

gmusicapi-scriptsのgmsearch.py(GPMの自分の「音楽ライブラリ」を検索するプログラム)を改造し、gmusicapiのMobileclient interfaceの検索関数(search())を使って、GPM全体から検索できるようにした。search()では、曲名以外にアルバム名などでの検索結果も取得できるので、アルバム名を使って、ある曲が含まれる、あるいは、あるアーティストのアルバム一覧が取得できるようにした。改善すべき点は多いが、以下のような形式で検索を実行する。

グールドの全アルバム(共演は含まず)を検索する場合: python3.5 gmsearch_b.py -u User -p Password -Q "Glenn Gould" -t al -f 'artist:^Glenn Gould$' -y

↓ 出力例

1. Glenn Gould "Bach: The Goldberg Variations, BWV 988 (1981) - Gould Remastered" (2008) [-, B6nyodkgdszrcbq2kih4ebl3qry]
:
230. Glenn Gould "Glenn Gould plays Richard Strauss: Ophelia Lieder op. 67; Enoch Arden op. 38; Piano Sonata op. 5; 5 Piano Pieces op. 3" (2012) [-, Bi4h5u7bbiqaca2mwgxtqah3zyq]

※行末の英数字は、GPMでのアルバムID。

このプログラムは、webやアプリでは省略されている曲やアルバムなどの情報(例: ディスク番号)や情報の内部形態をそのまま取得できるので、大変有用だと思う。ちなみに、この情報には再生ゲインは入っていないので、近いうちにGPMが音量の正規化に対応することはなさそうだ。

なお、search()の結果の最大数は、gmusicapiの資料では100だが、Noneを指定することで、最大1000までの結果が得られることが分かり(ただし、結果が長くなり過ぎると、途中で切れてエラーになる)、レパートリーの比較に役立った。この隠し機能がいつまで使えるのか分からないが、なかなか便利なので、なくならないで欲しい。

PS2. 今回、gmusicapiなどが使っているPythonというプログラミング言語を使う羽目になった。Perl以上に"awful"で、「使ってられない!!」と思った。が、流行っているようなので、まあ、僕が古いのだろう。それにしたって、インデント(段付け)をプログラムの構造にするって、本当にいい(論理的・効率的)のだろうか?

僕は、とてもおかしいと思う。というのは、そもそも、普通のプログラミング言語はテキストなのだから、段付けのような「見た目」よりも、論理的な構造で成立するものだと思うし、(目に見えにくい)空白の数の違いや空白とタブの混在にいちいち文句を言われたら、書く時に必要な注意が増えてストレスが高まると思うのだ。もちろん、プログラムの見た目を綺麗にすれば、分かりやすくなるから、それ自体はいいことなのだが、強制されたら苦痛だ。

段付け以外に奇異に感じたのは、ifやelseの行末の":"だ(下の例を参照)。「何これ?」って感じだ。空白の数(=見た目)で構造を定義しているなら、改行だってそのように使えばいいはずで、行末の印なんて冗長だと思うのだが、何か理由があるのだろうか?

if [type_mns[type]]:
    type_mn= type_mns[type]
else:
    type_mn= type_mns["so"]

※おそらく、上のプログラム自体はもっと簡潔に書けて、if自体不要になりそうだが、記述例として挙げた。

あと、Linuxなどの問題ではあるが、Pythonはバージョン間の違いが大きいせいか、特定のバージョンでしか動かないプログラムがあるので、複数のバージョンをインストールせざるを得なく、それぞれを区別しないと、プログラムがうまく動かない(上の例で"python3.5"と陽に書いているのはそのせい)とか、あるバージョンをアンインストールすると、システムが正常に使えなくなる問題があって、正直言って手を焼いている。

  •   0
  •   0

Google play music (GPM)のおかげで音楽にどっぷり浸る近頃だが、その中で気付いたことや思ったことを、それぞれの繋がりを気にせずに書き並べる。

GPMの音は非可逆圧縮だけど、家のちゃんとしたシステムで聴くのであれば、音が良く、何の問題もなく聴ける。(前にも書いた気はするが、)圧縮の程度にもよるけれど、「非圧縮(または可逆圧縮)でないと駄目だ」と思っていたのは、思い込みだったようだ。

朝、家で聴いていて出勤の時間になっても、続きを昼休みに会社のPCで聴くことができるし、昼休みに聴き終わらなくても、家で続きが聴けるのは便利だ。ただ、Spotifyと違い(本当にSpotifyでできたかあやふや)、再生中の曲リストが会社のPCと共有できないようだ。プレーヤーが違うせいだろうか。それでも、どこに居ても同じ曲が聴けるので、随分便利だ。

イヤフォンは僕の耳とは相性が悪い感じだ。昼休みの数十分でも、耳が疲れるのか、調子悪くなる。これでは電車で聴くのは難しそうだ。いいイヤフォンならいいのか、ヘッドフォンじゃないと駄目なのか? それで、会社用のヘッドフォンが欲しくなったが、イヤフォンでなく会社のPCのせいかも知れないし、ヘッドフォンを探しても、いいものが少ないので、買うかどうか迷っている。

それから、そもそもイヤフォンは音が悪い。家のステレオとは音の良さが全然違う。音質が悪くたって音楽は楽しめるのだが、家の方がずっと気分良く聴けるのは確かだ。この点も、ヘッドフォンにすればいいのか、会社のPCが駄目なのか、判然としない。PCのせいだとしたら、さすがに、会社にDACを置くのははばかられる・・・

演奏の最初の発売年(℗)はSpotifyで調べるといい感じだ。GPMよりずっと正確で、Discogsなどに載ってないアルバムも入っているので、いろいろなサイトで調べる手間が省ける。無料プランでも可能なので、ただ乗りで申し訳ないけど活用したい。

「ただ乗り」と言えば、思い付いただけで全く推奨しないのだが、GPMの曲が「手元に欲しく」なった時、GPMからダウンロードできる(Windowsの)ソフトはほとんどないので難しいのだが、Spotify対応のソフトはいくつかあるので、Spotifyからダウンロードすればいいことに気付いた。どっちからダウンロードしても、その演奏を聴くのに充分なファイルが手に入るだろう。

他にGPMがSpotifyに負けるのは、SpotifyはスマフォのアプリでPCのプレーヤーを操作(再生・一時停止など)できることだ。スマフォからPCに、あるいはその逆に音を出す先を切り替えることすらできる(うっかり触ると予期せずに変わってしまうので、却ってわずらわしい)。GPMは公式のPC用プレーヤーがないから無理なのか。まあ、余り使う機能ではないが。

GPMにも入っていない演奏が結構ある(例: Rush "Power windows" (1985)、小泉今日子)。Rushについては、近年のアルバムは入っているので、古いせいなのだろうか。だから、まだまだ手持ちの曲は用済みにはならない感じだ。その点で、通常のプレーヤー(GMB)とGPMをうまく統合したいので、いろいろ調べたり考えたりしている。

演奏を選ぶ時、知らない人については良し悪し以前に傾向すら判断のしようがなく、宣伝・広告や他人の評は余りあてにならないので、「ジャケ買い」のようになってしまうが、それでいいのだろうかと思う。更に、女性演奏家の顔が綺麗だったり(例は不要なほど沢山居るw)、派手過ぎたり(例: ユジャ・ワン)すると(一瞬目をひかれるが)、「音楽は見た目じゃないっ!」と思って避ける。が、それもやっぱり見た目にとらわれているということだから、なかなか難しい。

ただ、「美人ピアニスト」などと称されて(内心)悦に入っている人は、大抵駄目だと思う。やっぱり、「顔でなく音楽を聴いて欲しい」とか言って、怒らないといけないw

いっそのこと、先入観を避けるために、ジャケット画像を一切表示しない「ノー・ジャケット・モード」があったら良さそうだ。更に、「闇鍋モード」とか言って、演奏者の名前すら出さないのもいいかも知れないw 実際、つい、「ゼルキンだからいい」とか思い込んでしまったりするのだが、そうでもないこともあった。

GPMには関係ないが、僕はピアノ協奏曲の弾き振りは好きではない。はなから聴きたくない訳じゃないが、今まででいいと思った演奏はほとんどない。どこかに無理があるように感じる。

GPMのおかげで、近頃発見した(いいと思った)アーティストが沢山居るので書きたかったが、既に長くなって疲れたので、後に回す(GPMの「音楽ライブラリ」は、お気に入りのようなもののようだが、参考までに、先頭部分のキャプチャをリンクしておく)。が、今聴いていて結構気に入った演奏を1(+1)人だけ書く。

ヴァーシャーリ・タマーシュ(Vásáry Tamás)のショパンのピアノ協奏曲 第1番(1965)が気に入ったので、彼の第2番も聴きたかったが見つからず、別の人の気に入らない演奏が掛かってしまったので、気分転換にバッハの無伴奏チェロが聴きたくなって、何人もの演奏を取っ替え引っ替えした挙句、Winona Zelenkaという人の演奏(2010)が結構いいので聴いている。冒頭は少し線が細い感じがしたが、段々良くなって来て、ゆったりとした感じも出て来た。曲が進んで慣れて来ると、濃厚さも感じられて、大好きなビルスマの演奏が物足りなく感じるほどになったから、不思議なものだ。

最後に、「これぞ音楽配信のメリット」と言えそうだが(実際にはYouTubeでも観られるね)、テイラー・スウィフトの新作、"Look What You Made Me Do"が「新作」に出ていたので、(いつも理解できないのだが、懲りずに)とりあえず聴いてみた。現代的なヒップホップ系の曲自体が好きじゃないのはともかく、低音がドコドコした音作りが嫌いだ。でも、それなりに乗れた。ただ、やっぱり「それなり」で、ビートルズなどのような、グッと来るものとか、何十年も記憶に残るような良さはないように思った。

でも、それは僕がビートルズを若い頃に聴いたからで、今スゥイフトを聴く若い人たちにはグッと来て、彼らはずっと覚えているのかも知れない。

 

PS. 以前問題になった、ダウンロード版でデッカに論外なマスタリングをされた、メータの「ツァラトゥストラ」はGPMでも駄目だった。さっき思い出して確認してみたら、トラック3 「大いなる憧れ―」-トラック4 「喚起と情熱―」間が、アタッカなのにフェードアウト/インになっていた。まあ、予想どおりだ。GPMはダウンロード版と同じ音源なのだ。 このような問題は他では聞かないので、たまたまこれのエンジニアが初心者とか脳みそを使わない人だったのかも知れない。が、他に全くないとも断言できないので、GPMはダウンロード版を買う前に試せるという価値もある。 (8/31 6:21)

PS2. 帰宅して「とりあえず何か(好きな曲を)」聴きたい時、実はGPMは余り役に立たない。普通の人だったら"I'm feeling lucky"ボタンが最適なのだが、僕の場合、クラシックも聴くので、きっと、そのリストにはクラシックの曲(しかも1楽章だけバラバラに)が入るだろうから、それでは全然駄目なのだ。だから、何か良さそうなラジオなりアルバムを選ばなければならないのだが、それは「考え」なければならないので、結構面倒だ。だから、今日は、手持ちの曲をシャフルで掛けた。

いや、もしかしたら、Google先輩はそこまで見越してちゃんと作ってくれるのかも知れないが・・・ まあ、あとで、恐いもの見たさで試してみようw (8/31 19:23)

さっそく試したら、すごい。クラシックだけのリストができた。予想どおり、1楽章ずつバラバラに並んでいた。最初の曲はいいけど、さすがに「だめだこりゃ」だ。(8/31 19:24)

  •   0
  •   0

いや、そもそもまだお金払ってないしw まじめなことを書くと、音楽を聴くことに「元を取る」なんて考えるのは全く論外(そんなこと言ったら、「(長年苦労して、楽器だって高い)演奏者は元が取れるのか、考えたことあるのか!」と言いたい)なのだが、定額音楽配信サービス(今はGoogle)は、少なくとも、そこら辺の食べ・飲み放題なんかより、ずっとお得感がある。

「ラジオ」だけでも、僕が数十年間掛けて貯めた曲のレパートリーを軽く超えており、BGMとか暇つぶしには充分だ(実際、この数日間は、自分の手持ちの曲を全然掛けていない)。それ以上に、新たな曲やアーティストとの出会いはあるし、昔から知っていたけどちゃんと聴いたことがなかった曲(例: 南沙織 「17才」、山本リンダ 「どうにも とまらない」)のオリジナルを聴けて、「へえ!」と思うことだって多い。そして、僕の一番の目的である、特定の曲のいろいろな演奏だって、まだ1週間だというのに、何人か気に入った人を見つけたくらいだ。聴いた感想を全部ここに書きたいくらいだが、全然追いつかない。

レーベルや提供会社がどんな収益を期待してサービスをしているのかは良く分からない。想像するに、レーベルは今までと同じ売り方をしていたらお金は増えないし、自分で演奏した訳でもないから、安売りしたって気分は悪くならないし、提供会社はダウンロード販売用に元々ある音源を有効活用して、ちょっと余分に定期的にお金がもらえるのだからありがたいと思っているのではないか。ただ、Googleはちょっと違って、確か、音源は元々持っていなかったはずだから(補足: Spotifyも持っていなかっただろう)、力とお金に物を言わせて参入したのだろうが、きっと、ユーザーから収集したデータをAIビジネスにでも使うつもりなのだろう(「こういう人にはこういう曲が売れる・好まれる」とかいう情報をレーベルなどに売ることを想像する)。

まあ、世知辛い話は置いておいて、このサービスは、ほとんどすべての音楽を一般ユーザーの手元に開放する(本で言ったら、仮想国会図書館が家にあるようなものだ)と言ってもいいくらいで、以前書いたように、(遅巻きながら)パラダイムシフトだと実感した。あるいは、僕が嫌いな書き方をすると、「新しい体験をもたらす」だ。僕は、今のヒット曲を聴くであろう多くの方とは少し違う使い方をしているのかも知れないが、とりあえず、すごく便利だ。

(と、珍しく手放しで褒めたw)

  •   1
  •   1

音楽配信サービスのGoogle play music(以下、GPM)とSpotifyのどちらにするかという問題が決着しそうだ。昨日から今日に掛けて、収録内容の幅広さ(バリエーションの多さ)を比べようと、(僕の聴きそうな範囲での)収録アルバム数を比較した。

音楽を楽しむのに、曲数の多さは本質ではないが、僕は(特定の曲については)さまざまな人の演奏を比べたいし、知らない曲をいろいろ聴きたいから、その可能性が高くなるという点で重要だ。その時、「*千万曲」という全体の数は余り意味がなく、自分の聴きそうな曲の数を推測する必要がある。

具体的には、以下の2種類を比べた。

  • 曲名によるアルバムの収録数
  • アーティストのアルバムの収録数
    • メジャーなアーティスト
    • マイナーなアーティスト

本当は重複を排除した曲数を調べたかったのだが、GPMでは曲数を取得することが困難だったし、どちらのサービスでも、検索結果をリストのように外部に取り出すことができなかったので、アルバム数を数えた。

また、全体的な曲数は関係ない可能性があったので、一部についてAmazon prime music(以下、APM)でも調べた。

その結果、GPMのアルバム数がSpotifyより多い場合がその逆の4倍以上と、断然多かった。つまり、何かの曲を聴こうとした時、GPMの方がSpotifyより多くの種類の演奏を聴ける可能性が高いということだ。

再発盤などによる重複があるので、アルバム数と収録曲の多さは同じではないが、ここまで違うと、Spotifyは完敗としか言いようがない(さすがに、GPMの多い分が全部重複とは思えない)。更に、GPMにはいろいろなメリットや将来性がある一方、Spotifyにはさまざまな欠点(主に技術的なもの)があることを考えると、GPMを選ばない理由はなさそうだ。

なお、APMのアルバム数はGPMの1/10程度と致命的に少なく、候補にすらならないことが分かった。個人的には、音源はあるのだから、出し惜しみしなければ、かなり魅力的でいい商売になると思うのだが、あくまでもプライムの「おまけ」とかダウンロード販売の販促物の扱いなのだろうか? 僕だったら、APMで聴いて良ければそのままダウンロードで買うかも知れないだろうけど(なぜか、Googleのダウンロード販売は少し高いので、買うならAmazonにしたい)、聴けなかったら買わないだろう。もったいない。

以下に、比較結果(抜粋)を書く。

曲名にて検索

  • ラフマニノフ ピアノ協奏曲 第3番 (検索文字列: "rachmaninoff piano concerto 3"、以下同)
    • Spotify (以下、S): 82
    • GPM (以下、G): 100
    • APM (以下、A): 1
  • モーツァルト ピアノ協奏曲 第23番 ("mozart piano concerto 23")
    • S: 61
    • G: 100
    • A: 4
  • モーツァルト ピアノ協奏曲 第20番 ("mozart piano concerto 20")
    • S: 85
    • G: 100
    • A: 9
  • バッハ ゴルトベルク変奏曲 ("goldberg variations")
    • S: 82
    • G: 99
    • A: 18
  • バッハ 平均律 ("well tempered clavier")
    • S: 223
    • G: 100
  • ショパン ピアノ協奏曲 第2番 ("chopin piano concerto 2")
    • S: 131
    • G: 100
    • A: 12
  • ベートーヴェン ピアノソナタ 「悲愴」 ("beethoven piano sonata pathetique")
    • S: 31
    • G: 62

メジャーなアーティストのアルバム数

  • The Beatles
    • S: 14
    • G: 38
    • A: 12
  • The Cars
    • S: 9
    • G: 21
    • A: 3
  • Queen
    • S: 41
    • G: 54
    • A: 5
  • Electric Light Orchestra
    • S: 21 (コンピレーション込み)
    • G: 26
  •  森高千里
    • S: 32 (シングル込み)
    • G: 32 (シングル込み)
    • A: 11
  • グールド
    • S: 138 (コンピ込み)
    • G: 100
  • グールドのベートーヴェンの曲 ("gould beethoven")
    • S: 40
    • G: 87
    • A: 5
  • 内田光子
    • S: 56
    • G: 66
  • ゼルキン
    • S: 86 (シングル込み)
    • G: 100
  • ゼルキンのモーツァルトの曲 ("serkin mozart")
    • S: 34
    • G: 66

マイナーなアーティストのアルバム数

  • 猪俣猛
    • S: 1曲
    • G: 5曲
  • フアンホ・ドミンゲス
    • S: 8
    • G: 17
  • 伊藤栄麻
    • S: 0
    • G: 0
  • 高橋アキ
    • S: 8
    • G: 7
  • 小林道夫 (他者との共作を含む)
    • S: 4
    • G: 5
  • 井上直幸
    • S: 1
    • G: 5 (他者のアルバムへの収録分も含む)
  • Sugar (「ウエディング・ベル」のグループ)
    • S: 0
    • G: 1 (同名のアーティストに混ざっていた)
全体の比較結果 (多かった項目の数)
  • Spotify: 7
  • GPM: 31
  • 同じ: 3

なお、GPMでアルバム数が100になっていることが多いのは、最大表示数が制限されているからではないかと推測する(グールドのベートーヴェンやゼルキンのモーツァルトのアルバム数の多さを見れば分かる)が、確証はない。そうであれば、GPMの収録数は更に多いことになる。

また、APMの検索は柔軟でなく、作曲者名の綴りが微妙に違う(例: "rachmaninoff"と"rachmaninov")だけで出ない。

 

PS. 今思っている、GPMの要改良点(何とかしたい・して欲しい点)を以下に書く。

  • 音量の正規化(再生ゲイン)のサポート (特にラジオでは必要)
    • どこかにDBがあれば、それを使って調整できるようにしたい。
  • 初出年表示の改良 (特に再発盤: 間違ってはいないが、有益でない)、Copyrightの表示(レーベルが知りたい)。
  • 曲情報(タグ)の追加
  • 英語と日本語の検索結果の統合
  • [GPMDP] 機能の貧弱なミニプレーヤー (ないよりはマシだが)
    • カスタマイズ可能?
  • [GPMDP] 「この曲の後に停止」が効かない。 (暫定手順でしのいでいる)
    • 更新を待つ?
  • [iPhone] 「この曲の後に停止」がない。 (暫定手順でしのいでいる)
  •   1
  •   0

音楽配信サービス(今はGoogle play music)はすごくいい。いくつか欠点はあるけど、それを埋めて余りあるほどに便利で楽しい。

そして、今までの約1週間で一番楽しいコンテンツは、なんと、ラジオの「懐かしの邦楽ポップメロディ」と「80s 輝くベストテン・ヒット」だ(今も掛けている↓)。

もはや、立派なおじさんだw

もちろん、クラシックの好きな(特定の)曲の演奏を際限なく比較できるのもいいけど、日本のポップス("J-POP"と書くのは、ちょっと違う)もいい。中高の頃は、「(洋楽の)ロック以外は邪道だ、堕落だ」と堅く信じていたし、大学でだって基本は洋楽だったが、こうして掛けてみると、ほとんどの曲が懐かしくて楽しく、多くの曲にいいね(上向き親指)を押してしまう。やっぱり、嫌いなふりをして聞いていたんだな(確かに、「ザ・ベストテン」とかを妹たちと観ていた)。それに、アニメとかドラマの主題歌になっていた曲も多かったので、それで好きになったこともあるだろう。

 

PS. 偶然だけど、斉藤由貴は、ちょっと前に何だったか下らない話題でニュースに出ていたが、「今頃そんなことで目立たなくてもいいのに、もったいない」と、今朝、「卒業」が掛かった時に思った。そういうのを見ると、思い出が壊れる気がする。。。

PS2. このラジオ(「80s―」)、数時間で一周した。Googleお得意のAIで選んでいる訳ではなく、固定の選曲らしい。時々、曲を入れ替えるのだろうか? (8/26 4:30)

  •   0
  •   0