振幅スペクトルのリアルタイム可視化

とある場所で振幅スペクトルのリアルタイム可視化をデモすることになったので、久しぶりにProcessingのプログラムを書きました。Minimに入っていた例をほぼそのまま使っています。(左右方向は20 Hz〜ナイキストを対数軸で、上下方向は-60〜0 dBを表示しています)

f:id:amarui:20170919152525p:plain

import ddf.minim.analysis.*;
import ddf.minim.*;

Minim minim;  
AudioPlayer jingle;
FFT fft;

void setup() {
  size(1024, 256, P3D);
  
  minim = new Minim(this);
  jingle = minim.loadFile("hogehoge.mp3", 1024);
  jingle.loop();
  
  fft = new FFT(jingle.bufferSize(), jingle.sampleRate());
}

void draw() {
  // set background color
  background(#0D2B36);  

  // compute FFT
  fft.forward(jingle.mix);
  
  // draw foreground
  stroke(#EEE8D5);
  strokeWeight(2);
  for(int i = 0; i < fft.specSize(); i++) {
    float y = fft.getBand(i) * 2.0 / fft.specSize();
    float xlog = log(float(i) / fft.specSize()) / log(10);
    float ylog = 20 * log(y) / log(10);

    // adjust x/y positions to fit into window
    xlog = (3.0 + xlog) / 3.0 * width;
    ylog = height - (ylog+60)/60 * height;

    // color based on amplitude
    stroke(color(255*ylog/height, 255*ylog/height*0.8, (255-255*ylog/height)*0.5));

    line(xlog, height, xlog, ylog);
  }
}

どれも1行〜2行の変更だけでできるので、楽しくてついつい必要以上のことをやってしまう。アレンジしだいで色々できるし、子どもの頃にこういうのがあったら無限にやってただろうな。(下のスクリーンショットは、周波数と振幅を極座標系で表示し、左右対称にコピーしたもの。蝶みたいに見える。)

f:id:amarui:20170919155040p:plain

本日の給油

給油日 オドメーター (km) 給油量 (L) 単価 (円/L) 燃費 (km/L) 距離単価 (円/km)
2017-03-18 8559.6 2.76 125.72 45.94 2.74
2017-04-29 8703.9 2.77 127.80 52.09 2.45
2017-04-29 8905.9 3.21 128.97 62.93 2.05
2017-04-30 9032.5 2.20 131.82 57.55 2.29
2017-05-01 9190.3 2.70 127.04 58.44 2.17
2017-05-01 9325.7 2.52 128.97 53.73 2.40
2017-05-01 9469.7 2.17 129.03 66.36 1.94
2017-05-02 9625.3 3.71 133.96 41.94 3.19
2017-05-02 9787.8 2.81 125.98 57.83 2.18
2017-09-15 10004.7 3.09 123.96 53.03 2.34

10,000 km乗りました。「3ヶ月で!!」とかならかっこいいけど、2,000 km/年なので自慢できるものではないですが……。

MacBook Pro (15in, 2017)の3 chマイク

MacBook Pro (15in, 2017)ですが、「Audio MIDI設定」の画面でマイク設定を確認してみると4 ch入力ができるかのように書いてあります。

f:id:amarui:20170903093824p:plain

最高で96 kHz / 24 bit / 4 chまでいけるとなれば、マイクロホンとヘッドアンプの性能によっては本体だけでもかなり面白いことができるのでは、と思います。(実際、電気グルーヴGarage Bandと内蔵マイクで多くの部分を録音したアルバムなんてのもありますし)

カタログスペックを調べてみると、

  • Stereo speakers with high dynamic range(広ダイナミックレンジのステレオスピーカ)
  • Three microphones(マイクロホン×3)
  • 3.5 mm headphone jack(3.5 mmヘッドホンジャック)

となっていました。「マイクロホン×3」って! 奇数のADCを載せるのは面倒(かえって高くつく?)から、マイクは3つだけどDACは4 chのものを搭載しておこうということなのでしょうか。

試しにAudacityを使って4 ch録音をしてみました。画像では見にくいかもしれませんが、たしかに1〜3 chは録音された波形が違い、4 ch目は3 ch目と同じ波形です。

f:id:amarui:20170903095622p:plain

これら3つのマイクを何に使っているかですが、「システム環境設定」→「サウンド」でも表示されるように(「Audio MIDI設定」でマイクを2 chにしたときのみ表示)、これらを使って暗騒音や環境音の除去をやっているんでしょう。話者方向の推定とかにも使えるかもですね。

MacBookから映像が出せなくて困ったはなし(解決はまだ?)

Apple MacBook Pro (2017)とエレコムのDST-C01SVとで講義デビュー。

DST-C01SVは、ギガビット・イーサ、VGAHDMI、Mini Display Port、ステレオミニジャック(入出力対応)、USB 3.0×3口、SDスロット、microSDスロットに加えて、充電専用のUSB Type-C端子までついているという、現時点で敵なしのすごいやつです。MacBook AirのようにType-Cポートが少ない機種でも充電しながら他のものも接続できて、これ一つでどこでも行ける。欲を言えば、本体から出てるType-Cケーブルは(Apple純正の電源アダプタのように断線防止のために)着脱できるようにしておいて欲しかった。

www2.elecom.co.jp

ただ今日は、映像を使おうとすると、HDMIVGAも認識しようとして固まった後、15秒ほどして認識を諦めてしまうという現象に遭遇。いろいろ試すも対処法が見つからず結局ダメ。

そのためなんと今日の講義は3時間以上にわたって「実物投影機でMacBookの液晶画面を撮影しながらそれをプロジェクション」というすごいことになってしまった。RetinaディスプレイフルHDのプロジェクタだったので画質はまぁまぁでしたが、講義室の機材卓では実物投影機からの映像入力とPCからのオーディオ入力が同時利用できなかったので、絵と音を一緒に見せられない。音の波形を拡大して一部分だけループ再生、みたいなことができませんでした。

帰り着いて、なんとかならないかとググったら以下のページが。

digmusik.blogspot.com

……結局、僕の場合は「NVRAMリセット(PRAMリセット)」でHDMIに映像が出力できました。明日からの3日間は(その翌日からの別の3日間出張も)なんとかなりそうです。

ただし、いったん接続状態で本体がスリープしてしまうと再接続ができず、またNVRAMリセットが必要になる気がする。完全解決はまだですなー。おそらくmacOSのアップデートが必要です。

同名の中華香辛料が二種類あった?

僕が好きな辛味調味料のうち、香りの高さで選んでいるものが老干媽(ラオガンマ)が作っている香辣脆油辣椒(シャンラーツィユーラージャオ)です。定期的に横浜中華街まで買いに行っていることは下記のエントリにも書きました。

marui.hatenablog.com

東京の東側に住んでいるので横浜中華街まで行こうとすると電車賃も時間もかかります。近所で買えればいいのにと思っていたところ、3年ほど前から業務スーパーで油辣椒と風味豆豉油制辣椒が扱われるようになりました。香辣脆油辣椒ほどではないものの、けっこう好きな調味料なので定期的に購入していました。

そして、半年前くらいからは業務スーパーで香辣脆油辣椒も買えるようになりました!! 老干媽の製品の中でも唐辛子の辛味(辣)より山椒の痺れ(麻)が効いていて、大好物の調味料です。瓶のシールはデザインが変わったようですが、商品名は変わらず、おなじみの顔写真もついています。

……で、自宅で使ってみると、なんだか味も香りも違います。辣も麻も弱く、油っぽさとタマネギの香りが強く感じられます。香ばしいタマネギっぽさが向上しているので、好きな人にはたまらないのでしょうが、個人的にはもっとガッツリとした辣と麻の香りの強さが好みですし、以前と味が変わってしまったのを残念に思いました。

そして先日、ちょうど買い置きの香辣脆油辣椒がなくなったこともあり、久しぶりに横浜中華街に行くことにしました。今回も栄興號でひとつあたり270円の香辣脆油辣椒を12本購入。だいたい350円で売っている他店よりも安いのにていねいな対応と梱包で、大好きな店です。

f:id:amarui:20170818171744j:plain

帰宅してさっそく食べ比べてみました。やはり味が違いますし、ラベルも違います。業務スーパーで買ってきたものは神戸物産が輸入者で、中華街で買ってきたものは友盛貿易が輸入しているものです。この1瓶だけでなく6瓶ほどが同じ傾向だったので、製造者が輸入者のリクエストに応じて原料の配合を変えているのかもしれません。インスタントのカップうどんなどでも東日本と西日本で出汁の味を変えている例がありますし、ラベルを見たら区別できるので、自分の好みに合わせて選べる状況は悪いことではないのかと(僕は友盛貿易扱いのシャープな味が好みなので中華街に通います)。