SVX日記
2005-04-21(Thu) HDDレコーダ、90%ウロウロ症候群
以前にも少し書いたが、ウチにはLinuxによる自宅サーバがある。立ち上げたのは2002年の4月頃だから、もう丸3年になるか。最初の2年はAthlon-700MのRedHat7.2、それからPenIII-1GのDebianにハードごとリプレースして現在に至る。
最初は「ADSLによるLinuxインターネットサーバー構築ガイド」という本を買ってきて、いわれるままに設定した記憶がある。ちょうどLinuxに興味があったし、職場でSolarisを使っていたので、そんなに苦もなく立ち上げることができた。しかし、立ち上げてしばらくして、疑問に思うのだ。
DNSを設定して、メールサーバを立ち上げ、ウェブサーバを立ち上げて……で? ナニ? ナンナニョ? ナニがウレピーの? ってコトだ。そんなのプロバイダの基本サービスではないか。なにも自宅で24時間電源を入れ、電気代をかけてまでしてするコトではない。そりゃ、独自ドメインでメールが受け取れたり、ウェブでCGIが自由に使えたりという利点はあるが、そんなのたいした利点でもないだろう。
で、それに対するオイラの回答は「サービスを自分で作ってしまえ!!」だ。その結果、ウチのサーバには既に使っていない機能を含めて、思いつく限りの機能が実装されている。
・メールが着信するとメロディが鳴る
・テガッキーという文字電話からの手書きメールを送ると、画像変換して一般の携帯に転送
・ヤフー天気予報を外部液晶表示器に出力
・検索キーによるテレビ欄の検索、番組情報メール機能
・CGIによるmp3ジュークボックス+FMモジュレータ(電源制御あり)
・CGIグループウェア(スケジューラ、チャット、ニュース、文書共有)
・CGIリモートブックマーク
・ラジオ英語を予約録音
・テレビ番組を予約録画(ケーブルチューナのチャンネルもサーバが替える)
・DVDからHDD、VideoCDへのリッピング機能
・ウェブサーバ、メールサーバ
しかし、なんといっても予約録画機能が一番の自慢だろうか。番組はmjpegで録画後、自動的にVideoCDに焼けるmpeg1形式に再エンコードされ、完了すると報告メールが送られるようになっている。mpeg1は1.5M程度のビットレートであるから、ノートPCでメディアプレーヤを開けば、無線LAN経由で寝っ転がりながら視聴するコトができるのもポイントが高い。画質は決してよくはないが、観る分には十分だし、CD-Rに焼けば一般のDVDプレーヤで再生するコトもできるのだ。sshでリモートアクセスすれば、外から番組録画も可能だ。個人的にはかなり満足している。
/boot | RAID-1 | 120M |
/ | RAID-1 | 1G |
/tmp | RAID-0 | 8G |
/var | RAID-1 | 1G |
/usr | RAID-1 | 3G |
/home | RAID-1 | 15G |
/video0 | 88G | |
/video1 | 88G |
2017-04-21(Fri) お風呂スピーカステレオ化
Bluetoothスピーカ化してから、ホームプロジェクタのスピーカとしても活躍し始めた、自作のお風呂スピーカだが、そうなるとモノラルでなくステレオで鳴らしたくなってくる。
もともと、ステレオに対応する仕組みは仕込んであったので、有線接続用のフタにスピーカケーブル接続用のプッシュターミナルを増設したらそれで工作は完了。内部結線を少し挿し替えればすべての音源(mp3/Bluetooth/有線)がステレオ化する。
同じユニットのスピーカは用意していないので、昔作ったタッパースピーカをつないでみたが、さほど違和感はない。ちゃんとステレオで鳴った。よっしゃよっしゃ。
朝風呂でラジオ英会話。休日の長風呂でラジオドラマ。作業の合間に音楽。ホームプロジェクタの音響。腰痛体操の音楽。と、気がつけば常に部屋の中を持ち歩いているといって過言ではない。
2018-04-21(Sat) ロードスター、カウル・グリル外し
先日、内気循環の際に通過するダストフィルタに、不織布系のフィルタを追加してみたが、今度は外気の取り入れ口に、不織布系のフィルタを追加するという定番チューニングをやってみた。やっぱり、ほとんどオープンで走っているので、まったく意味がないのだが、まぁ、それは「やってみたかった」ということで。
例によって、作業手順について整備書で確認する。外気の取り入れ口の枠は「サイド・カウル・グリル」その上のカバーは「カウル・グリル」という名称だ。細かい部品までちゃんと名前があるのはいいが、名前を聞いてもピンとこない。
整備書には、防水のゴムは「ウェザストリップ」という名称であり、カウル・グリルに「クリップ」で固定されていること、クリップの形状、数、位置までキッチリ書いてある。これなら試行錯誤せず、ジェントルに外すことができる。
とかいいつつ、整備書には、カウル・グリルの取り外しの前には「ワイパー・アーム」と「ウオッシャ・ホース」を外すよう指示があるのだが、これは守っていない。んが、カウル・グリルの取り付けは割と緩いので、ちょっと角度を工夫すれば、知恵の輪の要領でズラすことができた。今回の目的にはこれで十分。
2020-04-21(Tue) PulseAudioでBGM付きリモート呑み会に
リモートお茶会も、リモート呑み会も楽しく実行できたのだが、ひとつだけ物足りなかったことが、BGMを流せないことだった。Zoomにはサウンドの共有機能があるのだが、音声がブツブツと切れてしまう症状が、どちらの会でも出てしまい、音楽として楽しむことができないレベルであった。
まぁ、別にBGMが必須というわけではないのだが、以前、アニソンのサビのメドレー動画を肴に酒を呑んだのが意外と楽しかったのだよな。それに、BGMは基本的に流しっぱなしにするので、会話の流れで「おっ。この曲さぁ…」みたいに会話が弾む材料になるのも期待できる。無理矢理やるなら、実際に部屋に曲を流し、マイクから入力するという方法もあろうが、やはりそれでは音質の低下は激しいであろう。
しかし、よく考えれば、Linuxのデスクトップ環境では、ずいぶん前からPulseAudioというソフトウェアミキサが標準となっている。そいつを使えば、Zoomに渡す前のマイク音声にBGMをミキシングすることくらい、できそうなもんだ。しかし、そもそも自分はPCのサウンド機構に非常に疎い。ひとつ、これを機にガッツリと勉強してみるか。
まず、ウチのメインマシンであるノートパソコンの起動時の状態を図示すると、以下のようになる。ThinkPadA285をドッキングステーションに載せ、デスクトップ化した状態だ。
この状態だと2系統のサウンド入出力ハードウェアが存在することが読み取れる。ひとつは上側のドッキングステーションの機構だ。出入口はステレオ出力+マイク入力の4極の3.5mmジャックである。「ドック output monitor」というのが気になるが、それを無視すれば、非常に単純明快である。
もうひとつが下側のノートPC本体の機構だ。出入口は同じくステレオ出力+マイク入力の4極の3.5mmジャックであるが、そこに挿入していない場合、ビルトインのスピーカと、ビルトインのマイクが有効になるのだ。やはり「本体output monitor」を無視すれば、非常によくある構図である。
このように2系統のサウンドが存在していても、通常はどこか1箇所から入出力すればいいわけで、そのためにデフォルト入力と、デフォルト出力というものが設定できる。必ずしも、どちらかの系統に統一する必要はないが、現状、入出力とも本体側に設定してあり、ふたつの★はそれを示している。
$ pacmd list-sources | grep -E "index:|name:|description"
index: 0
name: <alsa_output.usb-Generic_ThinkPad_Dock_USB_Audio-00.analog-stereo.monitor>
device.description = "Monitor of ThinkPad Dock USB Audio アナログステレオ"
index: 1
name: <alsa_input.usb-Generic_ThinkPad_Dock_USB_Audio-00.analog-stereo>
device.description = "ThinkPad Dock USB Audio アナログステレオ"
index: 2
name: <alsa_output.pci-0000_04_00.6.analog-stereo.monitor>
device.description = "Monitor of Family 17h (Models 10h-1fh) HD Audio Controller アナログステレオ"
* index: 3
name: <alsa_input.pci-0000_04_00.6.analog-stereo>
device.description = "Family 17h (Models 10h-1fh) HD Audio Controller アナログステレオ"
$ pacmd list-sinks | grep -E "index:|name:|description"
index: 0
name: <alsa_output.usb-Generic_ThinkPad_Dock_USB_Audio-00.analog-stereo>
device.description = "ThinkPad Dock USB Audio アナログステレオ"
* index: 1
name: <alsa_output.pci-0000_04_00.6.analog-stereo>
device.description = "Family 17h (Models 10h-1fh) HD Audio Controller アナログステレオ"
一般にウェブカメラを接続するのが常であり、それには音声入力用のマイクも備わっている場合が多いが、通常はそれでなく、ヘッドセットを使うことだろう。今回は、本体のジャックにヘッドセットをつないだ想定である。リモート会議ソフトウェアによってはソフト側で、入出力ポートを選ぶこともできるだろうが、通常はデフォルト入力と、デフォルト出力が選択され、その両方を同時に使うことになる。自分の発言はヘッドセットのマイクを通じてネットの向こうの相手へ、相手の発言はネットからヘッドセットを通じて耳へ、というわけである。
さて、問題はここからなのだが、それに先立って、普段、歌の練習に使っているPCMレコーダ「DR-05X」をUSB接続してみる。先代の「DR-05」との違いのひとつが、この「PCとつなぐとサウンドデバイスになる」という点なのであった。一体、どんな時に使うのかと思っていたのだが、こういう時に使うのである。で、接続すると以下のようになる。
その上で何をしたいかというと、自分の発言にメディアプレーヤの出力するBGMを混ぜ、ネットの向こうの相手へ送りたいわけだ。シンプルに考えると、図のようになるわけだが、このようなことはできない。ではどうするか。ヌルデバイスの登場である。
pacmd load-module module-null-sink sink_name=null.music
今回は、BGMを流すのに使うということで「null.music」という名前を付けたが、ヌルデバイスがどんなものかというと、出力側の「null.music」に出力した音声が、入力側の「null.music.monitor」から出てくるので、それを入力に利用できる、というものである。そう。先ほどから気になっていた「xxxx.monitor」というのは、いずれも対応する出力先のデバイスに出力した音声を入力に利用できる、モニタデバイスというものなのだ。つまり、YouTubeを再生しながら、その音声をデジタル録音したりすることに使えるわけだ。
しかし、それを使うためには、もうひとつ重要な概念がある。ループバックだ。ループバックとは、入力を出力に結びつけるものだ。ヌルデバイスには、出力がないので、ループバックで入力を別の出力に結びつける以外の使いみちはない。そして、結びつける際、ひとつの入力を複数の出力に結びつけてもいいし、複数の入力をひとつの出力に結びつけてもいい、というルールがある。そうだ、これだ、欲しかったのは。
そして、一気に状況は加速する。さらに「null.mic_music」というヌルデバイスを追加し、ループバックでマイクの入力とメディアプレーヤの入力を、同じヌルデバイスに結びつけてやる。その上で、そのヌルデバイスのモニタデバイスの出力をリモート会議ソフトウェアに送ってやるのだ。つまり、以下のようになる。
# 「null.music」「null.mic_music」というヌルデバイスを追加する
pacmd load-module module-null-sink sink_name=null.music sink_properties=device.description='Null_Music_Output'
pacmd load-module module-null-sink sink_name=null.mic_music sink_properties=device.description='Null_Mic_Music_Output'
# sourceとsinkの名前を知るために一覧を出力
pacmd list-sources | grep -E "index:|name:|description"
pacmd list-sinks | grep -E "index:|name:|description"
# PCMレコーダからの音声とメディアプレーヤからのBGMを「null.mic_music」にミキシング
pacmd load-module module-loopback source=alsa_input.usb-TEAC_Corporation_TASCAM_DR_Series-00.analog-stereo sink=null.mic_music
pacmd load-module module-loopback source=null.music.monitor sink=null.mic_music
# メディアプレーヤの出力は「null.music」へ、Zoomへの入力は「null.mic_music.monitor」から
pacmd set-default-sink null.music
pacmd set-default-source null.mic_music.monitor
最後はオマケだが、相手が聴いている音がどんなものなのかを、モニタできるようにもしてみる。そしてそれは、通常Zoomで使うヘッドホンではなく、別のヘッドホンから出力させる。最終的には、以下のようになる。
pacmd load-module module-loopback source=null.music.monitor sink=alsa_output.usb-TEAC_Corporation_TASCAM_DR_Series-00.analog-stereo
pacmd load-module module-loopback source=null.mic_music.monitor sink=alsa_output.usb-Generic_ThinkPad_Dock_USB_Audio-00.analog-stereo