月別アーカイブ: 2019年1月

出し惜しみではないのです

昨日のafplayとBitBarの連携に関する記事で、コードを全く書いていなかったのは、さすがに情報の出し惜しみと思われるかもしれないと、余計な心配をしておりまして、汚い・一貫性のないスクリプトではありますが、公開させていただきます。

さて、afplay の再生アプリに関しては基本的に、「のらぬこの日常を描く」さんのところを参照していただければいいのですが、それだけでは今再生中の楽曲を明示できません。そこでのらぬこさんのスクリプトにちょこっとコードを足します。

#!/bin/sh

cd ~/Music

kill `pgrep -lf /play.sh | awk '{print $1}'`
IS_KILLED=$?
pkill afplay

if [ "$IS_KILLED" -ne 0 ]
then
  echo play start
  nohup cat playlist.txt | while read x; do echo -e "$RANDOM\t$x"; done | caffeinate -i sort -k1,1n | cut -f 2- | while read x ;echo "$x" > now.txt ; do afplay -q 1 "$x" ; done >/dev/null 2>&1 &
else
  echo play stoped
fi

一行がスクロールする形で表示されているので見にくいのですが、ハイライトした行の2つめの「while read」の後ろ、「echo “$x” > now.txt」が追加した部分です。これで、現在の楽曲情報を「ミュージック」フォルダにテキストファイルとして書き込みます。これは、BitBarのスクリプトとは非同期に行われます。見ればわかりますが、afplay の直前。再生の直前に書き込まれます。これが第一弾。

次にBitBarのスクリプト。これが出し惜しみするわけではないのですが、恥ずかしい。もっとシンプルに書けると思うのですが、書きながら「とりあえず」のレベルだなぁと思っていました。恥ずかしいのですが、以下にスクリプトを書き込みますね。

#!/bin/sh

cd ~/Music

OLDIFS=$IFS
IFS=

while read line
do
        fname=${line##*/}
        fname=${fname%.*}
        fname=`echo $fname | sed -e 's/^[0-9][^ ]*[ ]//'`

        artist=`echo $line | sed -e 's/^.*Music\///'`
        artist=`echo $artist | sed -e 's/\/.*$//'`

        echo $artist " - " $fname
done < now.txt

IFS=$OLDIFS

前段、fnameの部分が楽曲名を求めるところなのですが、iTunesのライブラリ構造をそのまま利用しているため、次のようなファイルネームになります。

  • 先頭に数字でアルバム中の順番が追加されている。
  • 複数枚のCDアルバムの場合「アルバム番号-曲順」という数字を半角ハイフォンでつないだ番号が追加される

fnameのsed正規表現の部分がそれですね。次のアーティスト名の部分は、フォルダ構成の決め打ちです。iTunesのライブラリの場合、おいている場所によって変わるのですが、変わらないのがMusicというフォルダ(ローカライズされてミュージックと表示されていてもフォルダ名はMusic)の次にアーティスト名が来ると言うこと。それを決め打ちで検索しています。

で、echo で表示するとBitBarの方でメニューバーに表示してくれる。そういう形になっています。BitBarはファイル名に時間を書き込んでおくとその時間間隔でスクリプトを実行する機能があります。私は、「nowplay.10s.sh」という名前にして10秒間隔で実行するように指定しています。5秒にしようか(タイムラグがそれだけ短くなる)悩みましたが、大した違いでは無いだろうと言うことで10秒にしています。

説明するのも赤面しますが、もっとシンプルなスクリプトになるはずです。そっと教えてくれると嬉しかったりします。


いかに弱き人といえども、その全力を単一の目的に集中すれば必ずその事を成し得べし。

春日潜庵

afplayとBitBarをリンクさせる

先日書いた afplay は快適です。しかし、再生中の楽曲名ぐらいわかりたいものですね。そこで、メニューバーに情報を表示させるBitBarというアプリとリンクさせることにしました。

まず、BitBar の説明から、

Welcome to BitBar, 

The BitBar app lets you put the output from any script or program right in your Mac OS X menu bar. And it’s completely free. An impressive number of plugins have already been contributed by a wide range of developers just like you, and this site makes it easy to find them.

BitBar – Put anything in your Mac OS X menu bar

シンプルですけど、便利なソフトですね。私の場合は、指定したシェルスクリプトを10秒ごとに実行させています。

仕組みは簡単で、前回紹介した「世界で一番軽くてシンプル:mac用のシャッフル専用音楽プレーヤー – のらぬこの日常を描く」に追記して、現在再生中の楽曲のパス(アーティスト名とアルバム名、楽曲名を含む)を新規ファイルにして特定の場所に書き込みます。もともとシャッフル専用音楽プレーヤーの再生リストとして使っていたものを一行だけにしたようなものです。これを再生する前に作成します。

そして非同期で BitBar に登録したスクリプトが「アーティスト名 – 楽曲名」の形に成形して出力します。出力された文字列は、BitBar によってメニューバーに表示されます。

実際の表示

これで、完成ですね。BitBar にはスクリプト名に再生間隔を指定することができます。私は10秒に設定しました。最大遅延10秒で表示されることになります。スクリプトの詳細は、省略します。汚いスクリプトなので恥ずかしい。公開しました(リンク)。やっつけで作った割にはよくできたと思ってます。


人の希望は、初め漠然として大きく、後、ようやく小さく確実になるならびなり。

正岡子規

KB4461627

私自身は被害を受けていなかったのですが、仕事場のパソコンが被害を受けました。何のことかと言いますと、WindowsのアップデートでExcel2010が立ち上がらなくなるバグのことです。

「Excel 2010」の新元号対応パッチに起動不能や強制終了の不具合 ~すでに撤回済み – 窓の杜

私はWindowsは専門でないのですが、1ユーザーとして使っています。で、ちょっとお粗末じゃないですか、自社のアップデートで自社のアプリが立ち上がらなくなる。チェックが不十分と言われても仕方ないと思います。百歩譲って、症状が出ているのが、最新版ではなくExcel2010 であるというところに妥協しても、やっぱりお粗末だと思います。Microsoftのことを悪く言うつもりはありません。ただ、多いですよね。私だけでしょうか。多く感じるの。アップデートが頻繁であることはいいことだと私は思っていますが、アプリが立ち上がらなくなるというのはかなり致命的ですよ。

私の仕事場でも、年明けからExcel2010が立ち上がらないというトラブルが出ていました。悲しいかな、職場でのパソコントラブル担当は私だったりするので、情報をあさっていたらマイクロソフトのアップデートでのトラブルの情報が出ており、まさにこれだ! となりました。

思わず、Windowsらしいなぁと思ってしまったのが、KB4461627 というUpdateパッケージをアンインストールする方法が、Microsoft公認の解決法だと言うことです。パッケージをやたら小分けにして復元ポイントも用意してバグありき、で公開している(みたいにみえる)。私の好きなアップルでもバグはついて回りますよね。無いなんて言いません。あります。しかし、1度出したパッケージを撤回する方法をとることはないですね。対策バッチを公開するような方法が多いと思います。それに、アップルのパッケージの場合、撤回するのが難しいという特性もあるのかもしれませんね。どっちがいいとかという話ではないんですけど。

なんにしても、このバグには悩まされました。Excel2010の再インストールとかもやったりして、労力を返せって言いたいですね。


天使とは、美しい花をまき散らす者ではなく、苦悩する人のために戦う者です。

フロレンス・ナイチンゲール

afplayという選択肢

いや、知らなかったんですね。Macにはafplayというミュージックプレイヤーがインストールされていたんですね。コマンドラインですけど。

シンプルを極めたらこうなったというようなコマンドですね。基本的に音楽ファイルを引数にしてそれを再生する。まぁ、レーティングもできるみたいですが、使いませんね。シンプルに再生する。途中で中断するには kill するしかないっぽいです。引数を変えることで別の曲を再生する。こんなコマンドあったんですね。知らなかったです。

で、これを使ってシャッフルプレイに特化したアプリに仕上げてしまったのが、「世界で一番軽くてシンプル:mac用のシャッフル専用音楽プレーヤー – のらぬこの日常を描く」これいいです。昨日愚痴ったiTunesのバグに対しても、何それ? って感じで再生してくれます。これは素晴らしい。

    Audio File Play
    Version: 2.0
    Copyright 2003-2013, Apple Inc. All Rights Reserved.
    Specify -h (-help) for command options

Usage:
afplay [option...] audio_file

Options: (may appear before or after arguments)
  {-v | --volume} VOLUME
    set the volume for playback of the file
  {-h | --help}
    print help
  { --leaks}
    run leaks analysis
  {-t | --time} TIME
    play for TIME seconds
  {-r | --rate} RATE
    play at playback rate
  {-q | --rQuality} QUALITY
    set the quality used for rate-scaled playback (default is 0 - low quality, 1 - high quality)
  {-d | --debug}
    debug print output

一応オプションもありますね。ボリュームはシステムのボリュームでやるとして、デバッグモードも関係ないし、気になるのは、-q ですね。先に引用したのらぬこさんのところでもちゃんとハイクオリティにセットしてありますので、何の問題もありませんね。

今再生している楽曲名がわからないという弱点はありますが、プレイリストはテキストファイルですので自由に変えられる。しばらくこれで行こうと思います。


「寒い晩だな」「寒い晩です」妻の慰めとは、まさにかくの如きなり。

斎藤緑雨

iTunesが言うことを聞いてくれない

音楽ライブラリを管理するためのソフトとしてiTunesを利用しているのですが、どうも駄々っ子で困ります。言うことを聞いてくれないのです。

私はサブスクリプションの音楽再生プログラムに懐疑的でして、突然それまで聴けていた楽曲が聴けなくなると言うことが契約上あり得るというのが許せません。なので、ライブラリにMP3なりAACのファイルを登録しています。新曲はサブスクリプションで聴くとして、レンタル開始したら速攻借りてきてリッピングする。そういう形にしています。もちろん、サブスクリプションにもレンタルにもなかなか出てこない楽曲は購入します。楽曲をリッピングした後は、原盤を売り払う(ヤフオク!など)こともありますね。次の楽曲の原資にするためです。

前置きが長くなりましたが、そんなこんなで登録するMP3/AACファイルの数はけっこう多くなるのですが、その多くが次のような症状を呈して困っているのです。

  • 新規登録した楽曲が4分と少し(正確には4:18)で再生が終了してしまう。
  • その楽曲をffmpegなどで再エンコードしてやると、上記症状は消えることが多い(全てではない)。
  • CDからiTunesとは別のプログラムでリッピングしても途切れてしまう症状は出現する。
  • iTunesの「情報を見る」からエンドポイントを書き換えても上記症状は消えることはない。

楽曲は、再度エンコードすることで、良くなる場合があることから、iTunesが楽曲のエンドポイントを誤認識するのが原因と思っています。実に困ります。この症状、昔の楽曲には現れていないんですね。iTunesは都合により何度か入れ直しを行っています。入れ直しを行うと、それまで症状が出ていた楽曲も途切れることなく再生してくれるという謎もあります。

じゃ、ある程度たまったらiTunesを入れ直しすればいい。確かにそれはその通りなのですが、39,000曲を超えるライブラリを再認識させるのは手間ですし、入れ直しにはそれなりのリスクもあります(iTunesが引っ張ってきたアートワークは入れ直しで再度やり直しになり、そのときに楽曲が契約外になったりするとアートワークがなくなってしまう)。何より時間がかかります。

何とかならないものでしょうかね。あちこち調べているのですが、再エンコードは見つかりますが、根本的な解決になりません。困ってます。iTunes以外のライブラリアンに移ることも解決になるのなら考えようと思ってます。


「『全日空』のCMに出たんだけど、『見たよ!』っていう人は街でフンドシ一丁で『見た』って言ってほしいんだ」

高田純次

ラーメン・メモ:モン吉

毎週土曜日の昼はラーメンです。今まで記録を取っていなかったのでその記録です。今回は、らーめん屋モン吉さんの味玉塩ラーメンです。

新潟市江南区横越にある、モン吉さんに行ってきました。昼前ぐらいにいったときにはお客さん一人だけ。アレ? と思ったのですが、その後どんどん入ってきて満席。友人から美味しいと聞いていたので、人気あるのはわかってましたが、さすがですね。

ざっくり地図で場所を確認して、軽く40分ぐらいのドライブの末たどり着いたのは、住宅街の外れにあるモン吉さんでした。事前に調べて塩にしようと思っていたのですが、選んだのは味玉塩ラーメン。こちらは化学調味料を使っていないということなので、どんな味なのか注目していました。

まずは麺ですが、ストレート麺ですね。太さは中太麺というところです。個人的にはウエーブがかかっていた方がスープと絡むので好きですが、美味しい麺でしたね。スープは透明感があってスッキリとしていますね。化学調味料を使っていないということで、とげとげしい味ではありません。すいすい飲める感じです。決して薄い感じではないですね。

メニューは頻繁に変わるようです。今回も、塩つけ麺が×印でした。味付けも微調整できるようです。次は醤油系のラーメンを食べてみたいと思います。


絞首刑になる男に縄の太さを教えても、その男の運命は変わらない。

『五本の指』

またもや原因不明

FreeNASの行方不明の件ですが、何とかなりました。ただ、タイトルにある通り、原因が不明です。情けない話ですが、何が原因なのか、う〜ん。

FreeNASには、デフォルトに設定を戻すオプションがあります。何が原因なのかわからなかったので、2度にわたってデフォルトに戻しました。更に、ハードディスク内に残っていたデータも消去して(バックアップデータばかりだったので、今再びバックアップしています)やってみたのですが、よく分かりませんでした。

macOSの方で、以前使って使わなくなったマウントポイントが表示されていたので、FreeNASの方が悪いのではなく、macOSの方が何か勘違いしているんじゃないかと思っていますが、確定できません。ある瞬間に突然使えるようになったんですね。どうなっているのか私にはわかりません。

あちこち検索して調べたりしたのですが、原因を突き止めるまではいきませんでした。修行が足りませんね。


ところで、私のFreeNASの使い方ですが、基本的にバックアップストレージとして使っています。その他にはBittorrentサーバーとして動いてもらっていました。なので、データがロストしても何とかなったんですが、重要なデータを置いていたら冷や汗が出ているところでした。FreeNASの再インストールなんぞという荒療治を考えたのは、OSを入れていたUSBメモリのアクセス不良からでしたが、今後同じことが起きたときのために、バックアップをもっと万全にしておかなければですね。

とにかく、元通りにアクセスできるようになりました。必ずしもめでたしめでたしとはいきませんが、現在の設定はメモっておくことにします。


愛情がこもっていて無口な人こそ、人生の伴侶としてふさわしい。

亀井勝一郎

FreeNASマウントせず

困りました。FreeNASがエラーを吐き出しており、起動ボリュームに指定していたUSBメモリでエラー(応答性能が悪くなって時間がかかっている)ということで、別のUSBメモリにFreeNASの最新版をインストールしました。

SSHでハードディスク内には以前のデータが残っていることは確認しましたが、Finderにマウントしません。パーミッションがらみだろうと当たりをつけて、色々いじっているのですが、一向に改善しません。新年一発目がトラブルというのは先が思いやられます。


将来を恐れる者は失敗を恐れて己の活動を制限する。しかし、失敗はいっそうよくやるための唯一の機会である。真面目な失敗はなんら恥ではない。失敗を恐れる心の中に、恥辱は住む。

ヘンリー・フォ−ド