2021年06月24日

ウェブブラウザで動く講演タイマー

ウェブブラウザ上で動作する学会タイマー(口頭発表の時間を測ってベルを鳴らすアプリ)を作りました。・・・それ、もう既にあるよね?と言うなかれ。近年のブラウザの新機能を盛り込んで、フルスクリーン表示やスリープ禁止機能などを付けました。

スクリーンショット 2021-06-26 15.30.34.jpg

その学会タイマーは、こちらhttps://shiura.com/timer/から使用できます(日本語版はこちらhttps://shiura.com/timer/jp)。ネット環境のないところで使用するには https://shiura.com/timer/timer.zipからファイル一式をダウンロードしてください。説明書(日英)はこちら

学会タイマーにはスマホアプリも多くありますが、手軽に使えて評判の高いのは丸田氏の Time Keeperかと思います。機能や画面がシンプルで、使いやすく見やすいのも人気の秘訣かと思います。しかし登場から既に10年、前回アップデートからも5年ほど経っており、その間にブラウザの方も進化しているようなので、この機会に、以下のような自分の欲しい機能を付け加えたバージョンを作りました。

  • フルスクリーンモード 画面のボタンを押すと、ウィンドウ枠などがまったくない全画面表示ができます。
  • スリープ禁止(wakeLock) パソコンやスマホ・タブレットの設定に関わらず、画面が暗くなったり消えたりしません。
  • 説明文の切り替え ベルが鳴る間の4つの時間帯、それぞれに異なる文を設定でき、「講演中」「質疑応答」「時間切れ」などの状態表示ができます。
  • バーグラフ表示 時間の経過がひと目でわかります。バーの色を変えて状態が直感的にわかるようにもしました。
  • 直感的な時間設定 「この欄に入れるのは、開始時点からの時間なのか、それとも前回のベルからの時間なのか?」など、迷ったことはありませんか。時間を入力するとバーが伸縮して時間の比率が見えるようにしました。

丸田氏のプログラムでいいなと思った部分、例えば現在の設定を URL に変換してブックマーク保存できるところなどは参考にさせてもらいました(ただしプログラムはすべて1から作っています)。

compatibility.jpg


ただ、いくらか制限があります。フルスクリーンモード (Fullscreen API) とスリープ禁止 (Screen Wake Lock API) は機種やブラウザによって対応状況が違い、一部の環境では動作しません。特に iPhone (iOS) や iPad (iPad OS) では Apple のポリシーによるものか、Google Chrome にフルスクリーンモードが許可されておらず、またバッテリーに影響があると思われる Wake Lock API は safari にも実装されていないようです。ですが、OS の「設定」で「自動ロック」を「なし」に設定した上で、 safari で全画面表示で使えば問題ありません。(2023.3.28 Safari 16.4 から Wake Lock API が実装され、スリープ抑止が働くようになりました。上の表も更新しました。)

手持ちの環境で出来るだけ動作確認しましたが、不具合や要望があればぜひお寄せください。
posted by しんさく at 23:34| Comment(9) | TrackBack(0) | 電子モノ

2021年01月02日

理想のニアフィールドリスニングを目指して

この年末年始はずっと、スピーカーをああでもない、こうでもないとやっていました。ですのでまだ、たいして経験は踏んでいませんが,その中で1つの方向性が見えてきました。それはフルレンジユニット+密閉形スピーカー+イコライジングの組み合わせによるコンパクトで素直な音作りです。

DSC_5457.JPG


現在のテーマは、いわゆるニアフィールドリスニングというのでしょうか。パソコンの画面の脇、机の上に置けるような小型のスピーカーで、小音量だけど聴き疲れせず、かついろんなジャンルの音楽が楽しめるスピーカーです。(なおリビングルームには学生時代から30年ほどメンテしながら使っているヤマハ AST-1 のシステムを置いてあり、満足しているので置き換える予定はありません)。上の写真は撮影用なので大机にノートPC本体を置いていますが、自分の部屋では27インチぐらいのPC用モニタを4人がけの食卓机に置いています。ですので普通の仕事机よりは幅も奥行きも大きいですが,それでもスピーカーは手を伸ばしたら届くぐらいの距離に置くことになり、画面の邪魔にならないようにしようとするとそんなに大きいものは置けません。このガラス玉スピーカー(内容積 約1.5L)より大きいものは遠慮したいところ。しかしそうすると、良い音の再生には大きな壁があります。それは低音。低音を出すにはどうしても大きなエンクロージャ容積が必要と言われていますが、それは物理的に無理です。また小音量では聴覚特性(等ラウドネス曲線)から低音はさらに感じられにくくなってしまいます。さてどうしようか、というわけです。

説明.jpg


結論から言うと、ニアフィールドリスニングには密閉形のスピーカーがいいという結論になりました。バスレフ型は図のようにエンクロージャにパイプ(バスレフダクト)がついており、その中の空気が(進行波として音波を放出するのではなく)一体でピストンのように動くことで音を増幅します(参考)。スピーカー内部の空気がバネの役割をし、それとダクト中の空気の質量が共振を起こすことで低音を増幅します。たったこれだけの空気でなぜ低周波の共振を起こすのかというと、ダクトの直径はスピーカーよりも遥かに小さいからです。つまり、ダクト中の空気はコーン紙の振動よりもずっと大きく(速く)動き、また、ダクト中の空気が発生させる圧力は(パスカルの原理により)大きなコーン紙を押すときに増幅されます。ちょうど右図のように、テコの原理が働いているようなもので、ダクト中の空気は実際の質量よりもはるかに大きな重りとして働きます。これによりスピーカーのコーン紙の共振周波数よりも低い周波数で共振を起こさせます。またこの共振により位相が反転され、スピーカーのコーン紙が下がるときには空気も同時に下がることで音が打ち消し合うことを防いでいます。

50.jpg


なるほど、低音が増強されるのだからこれを使えばいいじゃないか、というのが普通の考え方のようですし、実際、現在販売されている多くのスピーカーはバスレフ型です。しかしこれが小さいスピーカーではどうも良くない。スピーカーが小型化すると共振周波数が上がるので、バスレフダクトの共振周波数もそれに合わせて高くしなければなりません。そうすると、その共振周波数より下の周波数は密閉形よりもむしろ急激に減衰してしまい、机の上に置けるサイズのスピーカーではコントラバスの低音が聞こえなくなってしまいます。またバスレフ型では共振現象を使うので、低音を強く増幅させようとすると音が弾み過ぎてしまい締まりのない音になってしまう。無理をした小型スピーカーではとくに顕著で、ブーミーな低音がして安っぽいことこの上ありません。アンプの出力インピーダンスを低くして制動をかければいいという意見もありますが、ヘルムホルツ共鳴部分には制動が働きませんので無意味です。上のグラフはボイスコイルの直流抵抗が0で出力インピーダンスも0、つまり完全な制動が働き、入力の通りにコーンが振動している場合の気柱の共鳴と出力の関係を表しています(ヘルムホルツ共鳴によるゲインが約6dBになる状況です)。入力(青線)は最初にもっとも振幅が大きく、次第に減衰する波形ですが、それに対し気柱の振動は加振により遅れてピーク値をとります。このようにどうしても制御が働かない領域が生じます。結果、大きなスピーカーや良質なヘッドホン(私はオーディオテクニカの名機、ATH-A900を使っています)で再生するような、スッキリしたキレイな低音は小型のバスレフでは望めないようです。

おい、リビングに置いているという AST-1 もバスレフ型じゃないか。という指摘があるかもしれません。しかしこのスピーカーは専用のアンプで駆動・制御されます。スピーカーそのものの設計は、コーン紙の共振周波数に対してバスレフダクトの共振周波数をずっと下に離し、その間の谷になる領域をイコライザーで稼いでいるようです。そして、それでも出しにくい30-50Hzあたりの重低音領域を専用アンプの負性抵抗とバスレフで鳴らすように作られています。このように専用の設計とチューニングを行えばバスレフがよい可能性がありますが、簡単ではありません。バスレフ型に単純な低域増強を組み合わせると、負荷が小さくなる共振周波数より下の領域でスピーカーの動きが過大になります(しかし肝心の低音は打ち消し合って消えてしまう)。大型スピーカーならそもそも低音が出やすいので、低域の限界をバスレフで少しだけ伸ばすのは良い考えですが、それではカバーできない領域が小型スピーカーでは大きく、バスレフだけでは焼け石に水、というわけです。

スクリーンショット 2021-01-02 18.32.14.jpg


しかし密閉型でも低音は出にくいではないか、という指摘があるわけですが、そこで登場するのがイコライザーです。密閉形は低音の低減がなだらかな上、大入力でも歪みにくいという特徴があります。そもそもニアフィールドリスニング用なのでスピーカーの耐入力よりもずっと小さい出力で使っており、増強による悪影響はありません。グライコがなくても、PC等から再生する場合、再生ソフトに付属しているグラフィックイコライザーで低音を増強することができます。上のグラフは手持ちのマイク(未キャリブレーション)で、また特に反響対策をしていない普通の部屋で計測したので絶対的な周波数特性とはかなりズレがあるはずですが、比較のために掲載しました。グラフの絶対的な形状でなく、赤と緑の線のずれを確認したものです。赤線がガラス玉スピーカーそのままの特性で、それに対し緑線は下で示す方法で低音を増強したものです。あまり極端に増幅すると不自然になる可能性があるので、聴き疲れしない程度にとどめていますが、200Hz以下から徐々に低音が増強され、60Hzあたりまで十分な強さで聞こえるようにできました。実際に音楽を聞いても、クラシック曲でコントラバスのソロパートがあるような曲でもちゃんと楽しめるようになります(低音が強そうに思えるロック等のドラム音の低音には高音も含まれているので、意外とごまかしが効きますが、クラシックはそうはいきません)。これより下の領域はそもそも聴覚特性的に、小音量ではほとんど聞こえないため問題ないと思います。

eq.jpg


低音の増強はイコライザーでやればいいのですが、Mac の場合、音楽再生ソフトにはイコライザがついているものの、OS 側には備えがありません(サードパーティ製のソフトでできるようですが)。また再生機やスピーカーを切り替えたときなどに問題がないようにと考えると、アナログ回路部分に組み込むほうが何かと便利です。そこで単純なRC回路でローパスフィルタを作成しました。右はこちらの回路シミュレータで周波数特性を計算した結果で、コンデンサ側にも抵抗をはさむことで、低域の増強率を制限しています。この回路の場合、フィルタの最大ゲインが (R1+R2)/R2 になります(この回路の場合 15.8dB)。また低音の増強が始まる周波数はC1とR2で決まり、グラフ下側の屈曲点付近の、3dBの増強が得られる周波数は 1 / (2π C1 R2) で計算できます(この回路では80Hzです)。なおグラフの最大の傾きは 6dB/OCT(周波数が倍になるごとに6dB)で固定です。このような特性を持つので、ゲインとカットオフ周波数をそれぞれ調整できるよう、抵抗器部分はすべて可変抵抗(それぞれ 5KΩと2KΩ)で作成しました。音質的にはセラミックコンデンサはあまり良くないと言われますが、この回路はヘッドホン出力とアンプの間にはさむので電圧が低く、実測でも最大で0.1V程度なのと、回路構成的にコンデンサ両端の電圧が高くなるときは通過電流が小さくなり、出力への影響が小さくなりますので問題ありません(それでも気になる人はフィルムコンデンサで作ってください)。

このような考え方・方針は(とてもメジャーとは言えませんが)独自ということもなく、例えばこちらのブログでも同様に、バスレフ型の弊害と、密閉+イコライジングのメリットが様々な側面から検討・検証されています。またRC回路を用いたイコライジングはこちらで提案されており、参考になりました。他にも、小型スピーカー・小音量では、という条件は付きますが、密閉形+イコライジングのメリットを主張するブログ等を見かけます。さらにフルレンジユニットを使うことで、定位感が高くすっきりした、満足行く聴き心地が得られました。
posted by しんさく at 23:26| Comment(0) | TrackBack(0) | 電子モノ

2020年12月29日

変わり種スピーカー2題

スピーカーを2組作りました。

DSC_5456s.JPG


1つは「クラインの壺」型のスピーカーです。クラインの壺、というと、表の面と裏の面が繋がっている図形で、3次元空間では交差なしに表現できないのですが、その交差部分の曲線が面白いので作ってみました。ホーンの開口部があるので実際には「底の抜けたクラインの壺」ですが・・・

daiso.jpg


スピーカーユニットとしては、自作スピーカー分野で定番とも言える?ダイソーの300円スピーカーを用いました。スピーカーユニットそのものは結構いいのですが、箱が良くない(小さすぎることも大きい)ので自作の効果が大いに味わえるということもありそうです。赤い部分は3Dプリンタで一体成型でき、スピーカーとベゼルをねじで止めれば完成というお手軽工作。しかし思いのほかすっきり感のある音になり上出来でした。3Dデータはこちらで公開しています。

DSC_5457.JPG


これに気を良くして、次はもうちょっとちゃんとしたユニットで作ってみよう、と思っていたところ、ちょうど知人が小さいフルレンジユニット(FOSTEX FE103En)を処分しようとされていたので譲ってもらいました。それで早速作ったのが、上の「ガラス球」タイプのスピーカーです。全体を3Dプリンタで作るのもいいのですが、大きくなると材料代も出力時間もかかるし,またちょっと違ったものを、ということで、これまたダイソーで200円のガラス鉢(ガラス水盤)を調達。スピーカーとガラス鉢を接続する部分だけ作って組み合わせました。

absorb.jpg


ガラス製のスピーカーというと、市販品のほか、世間にはガラス球を加工して制作した例や、ウイスキーのボトルを利用した例もあるのですが、ガラスの加工には専用の工具が必要で時間もかかります。ですので僕の場合は,ガラス部分を加工しないというテーマで作成し、バッフルを内側からネジで止めて、ゴムバンドで気密を確保する構造にしました。平面部分がないためほとんど共振音はしないのですが、もともとかなり高音がきついユニットなので、吸音のために少しふわふわしたものを中に入れています。写真よりももっと入れてもいいと思います。

これがまた(というよりはこれまで以上に)あたりで、非常にスッキリした鳴りっぷり。小型なので低音は弱めですが、反響や雑音が非常に少なく、どこから音がしているかわからないぐらいの優れた定位感で、瑞々しい音がします。大成功でした。個人的にはFOSTEXが販売している専用のエンクロージャー、P1000-BHよりもいい音になったと感じています(この箱は低音は出やすいのですが、反響音による濁りがあり、また、音が出にくい周波数帯もあります)。実は試作段階では細いバスレフポートをつけたものも作ったのですが、効果がないようだったので密閉型にしました。

IMG_20201228_134508.jpg


こちらの3Dデータもここで公開しています。ガラス加工が不要なので、ネジの締め過ぎでガラス鉢を割らないように気をつければ簡単に自作できると思います。ただ、ガラス鉢の個体差が大きい(口の部分の直径が結構違う)ので、ゴムバンドの本数で調整してください。

posted by しんさく at 12:12| Comment(0) | TrackBack(0) | 3Dプリンタ