スピーチプロセッサ

マイク入力の音質を改善したいという場合がときどきあるかもしれない。例えば

  • 環境ノイズを減らしたい
  • 聞きやすいように音量をある程度一定に保ちたい

とか。

アナログでやろうとすると割と高価な機材が必要だが、現代はDSPでなんとでもなる。

AU Lab

Mac には標準で AU (Audio Units) という機能があり、簡単なフィルタとかはこれでできる。AU はプラグインとなっており、使うためにはアプリケーションが必要。標準アプリケーションだと Garage Band で使えるが、AU だけ使いたいのに Garage Band というのは重すぎるしめんどうくさい。

しかし、実は Apple はAU Labというソフトウェアを提供しており、標準添付ではないのだが、これをインストールすると入力を AU を通して別のデバイスに出力というのが簡単にできる。

AUDynamicsProcessor

エクスパンダないしノイズゲート・コンプレッサないしピークリミッタ相当のことをできる。

グラフ中の下側の点2つを動かすことでレベルが低い環境雑音の音量を下げる(ないし完全カット)することができる。リアルタイムにグラフのどの状態にあるかも表示されるのでとても設定しやすい

上の点2つを動かすとコンプレッサをかけることができる。入力が低すぎる場合 Master Gain をあげる。Master Gain をあげつつコンプレッサがかかる閾値を下げると常にコンプレッサがかかり出力を一定の状態にできる。

AUMultibandCompressor

4つにわけられた帯域ごと(帯域幅は任意に変更できる)にコンプレッサレベルを変えて設定できる。設定帯域ごとのイコライザ相当の機能もついてる。エクスパンダ的機能はついていない。

高域の上限を下げたりすれば、サ行のうるささが軽減される (ディエッサーとして使える)。

イコライザ

  • AUFilter
  • AUGraphicEQ

他のでもできるが、このあたりを使うのがわかりやすい。ただ、イコライザはベストを見つけるのは非常に難しい。永遠に時間がかかるしだんだんゲシュタルト崩壊してくる。

自分の上げたい/下げたい周波数帯域が、聴きながらわからない場合、AUParametricEQ を入れると、特定帯域幅だけドラッグしつつ上げたり下げたりできる。目的周波数をさがすだけなら AUGraphicEQ より楽。

その他

少しだけリバーブをかけると聞きやすくなるらしいんだけど、AUMatrixReverb は設定が難しく、少しでもかけすぎると気持ち悪い感じになるので、素人は手を出さないほうが良さそう。

他のアプリケーションの入力にする

AU Lab で、入力 → AU → 出力はできるのだが、出力を別のアプリケーションの入力として使いたい場合、これだけではできない。

要は一旦出力したものを、別の入力に入れればいいのだが、ハードでやると (すなわちケーブルをループバックさせる感じになる) ノイズ的に不利だし、接続が煩雑になる。

Sound Flower

ソフトウェアとしては Sound Flower というのが良く使われている。これは Mac 上で仮想オーディオデバイスとして働くもの。しかし Yosemite ではクリッピングノイズのようなもの (プチプチ音) が発生することがあり、この問題は未だ解決していない。どうしても気になる場合ハードに一度デジタルで出してしまうのが確実そう。

ノート:音声通信用にスピーチプロセッサについて考える

もともとアマチュア無線の音声通信の了解度を、何らかの手軽な方法で上げられないかと考えて調べたはじめた。

アマチュア無線で、特にSSBという変調方法の場合、声の大きさがそのまま送信パワーになる (無音時 0W・最大で設定した出力電力)。なので、昨今の SSB 無線機には必ずスピーチプロセッサというのがついている。

スピーチプロセッサは何をしているか? というと、基本はただのコンプレッサーで、音声のダイナミックレンジを圧縮している。小さい声も大きい声もできるだけ一定の大きさに保たれるようにして、平均送信電力を上げている。

凝った人は、このスピーチプロセッサ部分を無線機組み込みではなく、外部でやってより自由に調整するらしい。特にSSBで凝ったことをやってる人場合、Hi-Fi SSB とか言ってるらしい。

アマチュア無線では占有周波数帯域幅を抑えるため、上限 3kHz 程度までで音声周波数をカットして送信 (SSBの場合、音声の帯域幅≒占有周波数帯域幅) しているので、Hi-Fi とはいっても、原音に忠実という本来の意味ではなく、了解度の向上(相手が聞きとりやすいこと・複数人同時送信されていても、耳につきやすいこと)を目指しているようだ (周波数帯域的に原音忠実というのは不可能)

(ちなみにAM中波放送の場合、音声信号は上限約10kHz程度の帯域、FM短波放送の場合約15kHz で切られている。)

音声の通信を聴いていると、確かに人によって聞きやすかったり、そうでなかったりする人がいる。声質や滑舌もあると思うが、何らかの前処理によって了解度が向上するなら、それは良いことだ。

信号処理での戦略

実際のところ、あまりやれることはなくおおざっぱに言うと以下3点になりそう。

  1. ノイズをとにかく減らす
  2. イコライザを自分の声にあわせて設定する
  3. コンプレッサをかける

しかしそれぞれ調整するとかなり時間がかかる。

ノイズを減らすのは必須。余計なノイズを送信すれば確実に了解度は下がる。しかし一番確実な方法というのがないので、発生している場合減らすのはなかなか難しい。以下のような方法を全て試す。

  • 指向性マイクを使う (環境ノイズを軽減)
    • 無線機付属のPTT付きのものとか
    • いわゆるカラオケマイク的なもの
    • できれば差動出力 (XLR コネクタ) のマイクを使うほうがいい
  • シールドケーブルを使う (外来ノイズを軽減)
    • アナログのラインはすべてシールドする。地味だけど確実に効果がある
  • グラウンドループを切る (ハムノイズなどを軽減)
    • 無線機周辺でループがあると大きなノイズが入る
  • マイク入力ではなくデータ入力ラインから音声を入れる (PC出力をできるだけ大きくとって内部雑音とのSN比を改善する)
    • マイク入力は内部的に増幅率が高く設定されていることがあり、過大入力になりやすい。SN比を上げにくい

イコライザは声にあわせて設定する必要がある。了解度向上という意味では150Hz以下には殆ど声としての情報がないので完全に切って良く (ただのノイズになる)、200〜300Hz は上げると少し落ち着いた感じなるが、音が籠って了解度は下がる。400〜800Hz は人によるがあまりいじらないのが良いようだ。

SSBでは原理的に「無音」を送信することができず、常に喋っていないと受信機側のAGCによってノイズでうるさくなってしまって悩ましい。同じく AGC によって、受信側で強制的にコンプレッサ相当のことが起きるため (小さい音は大きく、大きい音は小さく)、送信時に最大限コンプレッサをかけたほうがSN比が向上し了解度はあがる。

テスト方法

無線機に入力する直前の信号を聴いても、実はあまり意味がない。他の無線機で送信される電波そのものをモニタするほうが良い。というのも、受信機側のAGCのかかり具合に印象が大きく影響されるので、送信機に入力する信号とかなり印象が変わってしまうからだ。

実際のところダミーロードをつけて漏れた電波を聞くか、同軸切替器(アイソレーションが60dB程度あっても十分漏れてくる)とダミーロードを使う。

総合的な了解度向上策

声の特性を知って適切で効果的なスピーチプロセッサをかけられる知識は、エンジニアリング的な範囲の音声による通信技術のひとつといえそう。

ただし、機械処理に頼った了解度向上策には限界があると感じる。滑舌が悪かったり、声が出てなければ結局意味がない。アナウンサーという職業があるように、明瞭な音声を出せることというのは、それ自体がある程度特殊な技術であるし、これもまた音声通信の技術向上であると感じる。

アマチュアは、スピーチプロセッサの使いかたのようなエンジニアリング的部分と、声の出しかたのようなオペレーション的部分を、一人で行うので、了解度向上のためには、総合的なこれら通信技術の向上が必要に思う。

CW に比べ音声は喋るだけなので技術がいらないと思われた (実際敷居は低い) が、ノイズが多く、限られた周波数帯域で了解度を上げるには、実際は思った以上の技術がいると感じる。CW は遠くに効率良く届けるという意味では、技術的難易度は音声よりも案外低いのかもしれない。

Behringer(ベリンガー) ベリンガー ダイナミックマイク ボーカル ULTRAVOICE XM8500 - Behringer(ベリンガー)

Behringer(ベリンガー)

5.0 / 5.0

  1. トップ
  2. tech
  3. AU Lab をスピーチプロセッサとして使う
  1. トップ
  2. ham
  3. AU Lab をスピーチプロセッサとして使う

use strict;
use warnings;
use utf8;
use Encode;

sub encode_with_limit {
	my ($encoding, $str, $limit) = @_;
	$encoding = Encode::find_encoding($encoding);

	my $encoded = '';
	for (my $i = 0; $i < length($str); $i++) {
		my $chr = $encoding->encode(substr($str, $i, 1));
		if (length($encoded . $chr) > $limit) {
			last;
		} else {
			$encoded .= $chr;
		}
	}
	$encoded;
}

use Test::More;

is encode_with_limit('UTF-8', 'あいうえお', 1), encode_utf8('');
is encode_with_limit('UTF-8', 'あいうえお', 2), encode_utf8('');
is encode_with_limit('UTF-8', 'あいうえお', 3), encode_utf8('あ');
is encode_with_limit('UTF-8', 'あいうえお', 4), encode_utf8('あ');
is encode_with_limit('UTF-8', 'あいうえお', 5), encode_utf8('あ');
is encode_with_limit('UTF-8', 'あいうえお', 6), encode_utf8('あい');
is encode_with_limit('UTF-8', 'あいうえお', 9), encode_utf8('あいう');

done_testing;

こうしたんだけど、もっと簡単にできないんだろうか…

#!/usr/bin/env perl

use strict;
use warnings;
use utf8;
use Encode;

sub encode_with_limit {
	my ($encoding, $str, $limit) = @_;
	$encoding = Encode::find_encoding($encoding);

	my $encoded = $encoding->encode($str);
	my $short = $encoding->decode(substr($encoded, 0, $limit), Encode::FB_QUIET);
	$encoding->encode($short);
}

use Test::More;

is encode_with_limit('UTF-8', 'あいうえお', 1), encode_utf8('');
is encode_with_limit('UTF-8', 'あいうえお', 2), encode_utf8('');
is encode_with_limit('UTF-8', 'あいうえお', 3), encode_utf8('あ');
is encode_with_limit('UTF-8', 'あいうえお', 4), encode_utf8('あ');
is encode_with_limit('UTF-8', 'あいうえお', 5), encode_utf8('あ');
is encode_with_limit('UTF-8', 'あいうえお', 6), encode_utf8('あい');
is encode_with_limit('UTF-8', 'あいうえお', 9), encode_utf8('あいう');

done_testing;

もっと簡単に書けたけど、効率は悪そう。

  1. トップ
  2. tech
  3. Perl でバイト数を制限しつつ、文字列を妥当なバイト列に変換したい

WebAudio での通信用に使おうと思って書いていたけど、やる気が失せてしまった。WebAudio 非依存部分だけ習作的に書いた。思ったよりややこしいデコード方法になることがわかった。

プリアンブルとして 1 (01) を n 回連続して送信したあと、0 (10) を送信してクロック同期をとり、任意長のビットをデコードするかたち。(イーサネットのプリアンブルとは互換性なし)

ManchesterEncoding = function () { this.init.apply(this, arguments) };
ManchesterEncoding.prototype = {
	/**
	 * @constructor
	 */
	init : function (opts) {
		var self = this;
		self.clock = opts.clock;
		self.preamble = opts.preamble || 8;
	},

	/**
	 * @param {Array|ByteArray|string} bytes
	 */
	encode : function (bytes) {
		var self = this;
		var preamble = self.preamble;
		var clock = self.clock;

		if (typeof bytes === 'string') {
			var tmp = [];
			for (var i = 0, len = bytes.length; i < len; i++) {
				tmp.push(bytes.charCodeAt(i));
			}
			bytes = tmp;
		}

		var data      = [];
		var current   = 0;

		function sendBit(bit) {
			// Send 1 as 01 (_-)
			//      0 as 10 (-_)
			for (var i = 0; i < clock; i++) {
				data[current++] = bit ? -1 : 1;
			}
			for (var i = 0; i < clock; i++) {
				data[current++] = bit ? 1 : -1;
			}
		}

		// preamble: send repeated 1
		for (var i = 0; i < preamble; i++) {
			sendBit(1);
		}
		// start bit: after repeated 1 sync with logic 0
		sendBit(0);

		for (var i = 0, len = bytes.length; i < len; i++) {
			var byte = bytes[i];
			for (var b = 0; b < 8; b++) {
				//  msb first
				if (byte & (1<<(7-b))) {
					sendBit(1, 1);
				} else {
					sendBit(0, 1);
				}
			}
		}

		return data;
	},

	/**
	 * @param {Function} callback
	 * @return {{ reset: function(), decode: function(Array|ByteArray) }}
	 */
	decoder : function (callback) {
		var self = this;
		var logic = true, count = 0, clock = self.clock;
		var sync  = false, syncAvg = 0, syncCount = 0;
		var byte = 0, bitCount = 0, bit;
		var short = 0, long = 0;
		var state = 'start';
		return {
			reset  : function () {
				// reset and re-wait for preamble
				this.decode = self.decoder(callback).decode;
			},
			decode : function (data) {
				for (var i = 0, len = data.length; i < len; i++) {
					var current =
						data[i] < -0.5 ? false :
						data[i] >  0.5 ? true :
						current;

					var logicChanged = logic !== current;

					if (logicChanged) {
						// clock adjustment
						if (clock * 0.5 <= count && count <= clock * 1.5) {
							syncAvg += count;
							syncCount++;
							clock = syncAvg / syncCount;
						} else
						if (clock * 1.5 <= count && count <= clock * 2.5) {
							syncAvg += count / 2;
							syncCount++;
							clock = syncAvg / syncCount;
						} else {
							// ERROR
							clock = self.clock;
							sync = false;
							syncAvg = 0;
							syncCount = 0;
						}

						logic = !logic;

						if (!sync) {
							// surely synchronized with preamble clock
							// and detect transition to logic zero
							// ~_-_-_-_-_--_
							if (syncCount >= self.preamble && clock * 1.5 < count) {
								sync = true;
								bit = logic;
							}
						} else {
							if (count <= clock) {
								short++;
							} else {
								long++;
							}

							if (long === 1) {
								long = 0;
								bit = !bit;

								if (bit) {
									byte = byte << 1 | 1;
								} else {
									byte = byte << 1;
								}

								bitCount++;
							} else
							if (short == 2) {
								short = 0;

								if (bit) {
									byte = byte << 1 | 1;
								} else {
									byte = byte << 1;
								}

								bitCount++;
							}

							if (bitCount == 8) {
								callback(byte);
								byte = 0;
								bitCount = 0;
							}
						}
						count = 0;
					}

					count++;
				}
			}
		};
	}
};


for (var clock = 1; clock < 10; clock++) {
	var code = new ManchesterEncoding({ clock: clock });
	var data = code.encode([1, 0, 24]);

	var result = '';
	var decoder = code.decoder(function (byte) {
		// console.log([byte, String.fromCharCode(byte)]);
		result += String.fromCharCode(byte);
	});

	var data = code.encode("Hello, World");
	var noise = [];
	for (var i = 0; i < 100; i++) noise.push(Math.random() < 0.5 ? 1 : 0);
	decoder.decode(noise.concat(data));

	console.log(result === 'Hello, World');
}

ref. Manchester Coding Basics

  1. トップ
  2. tech
  3. Manchester Encoding を JS で

Google+ の画像自動バックアップは、デフォルトだとカメラで撮影されたものしかアップロードされない。(いつのまにかこういう仕様になってた)

なので、スクリーンショットや、他のアプリケーションが独自に保存する画像がアップロードされない。

ググると Google によるドキュメント中に「他のアプリの写真をバックアップする(Android のみ)」というのがある

ここに書いてある「フォト」アプリというのは、Google+ をインストールすると作られるショートカットのこと。

最初「メーカーカスタマイズのギャラリーアプリしかねーよ!!」と思って、設定する方法がないのかと絶望しかけた。

「フォト」アプリが見つからない場合、Google+ アプリから以下の方法で該当する画面を開ける。

  1. Google+アプリを起動する
  2. 上部メニューの「すべて」から「フォト」を選択
  3. あとは上記説明と一緒
  1. トップ
  2. tech
  3. Google+ の画像自動バックアップで、一部画像がアップロードされないとき

TOMPA チタンコーティング 3本セット 穴あけ ステップドリル タケノコ 六角軸 - TOMPA

TOMPA

5.0 / 5.0

手持ちのドリルは 6mm までなので、少しおおきめの穴をあけたいときはそこからリーマーで広げていたのだけれど、手動でリーマーというのは大変疲れるとともに、だんだんひっかかりが生じて星型の穴になってしまうことが多々あった。

なので、ステップドリルというのを買ってみたら、予想以上に便利だった。今迄がんばってリーマーであけてたのはなんだったの?というレベルですぐに目的の穴をあけられるし、なおかつ真円に近い綺麗な穴になった。

いわゆる鉄工用ドリルのように勝手に進まないので、電動ドリルであけるとき急に食いこんでウオッっと思うこともなくて良い。

なお空転しないように六角軸のものを買ったけど正解っぽい。

前年

前年は技術的にはエレクトロニクス関係のスキルセットを多少上げることができたのが、自分の中では非常に大きかった。

ソフトウェア関係ではファームウェア書いてIOいじったりするのがアプリケーションレベルではできるようになったが、アルゴリズム関係が根本的に苦手なので、ファームウェアはあまり得意になれそうな気はしてない。

go 言語で自分的には実用的なアプリケーションを書いて毎日使っているので、そういうのは良かった。

これら、残念ながら本業のウェブ開発には一切生かせていないし、ウェブ開発まわりで自分の中で技術的に進歩があったかなというのは Web Audio まわりの信号処理だけで、これまた一切仕事に生かせなさそう。

今年

抱負とか考えても、実際のところ3日も経てば忘れてしまうが思っていることだけ書いておく。

とりあえず、引き続きエレクトロニクス関係でできることを増やしたい。具体的にはアナログ回路まわりの設計を多少でもできるようになりたい。

単純に「おもしろい」という感じのことをしたい。エレクトロニクスに絡むともっと面白い気がしてるけど、それに限らずに、とにかくおもしろいことをして、おもしろいことを共有したい。

冬は寒い。寒いとブレッドボードに向きあったりするのはとても辛い。なので、布団に入っていても回路と格闘できるようにするため、回路シミュレーションツールである LTspice に手を出した。

LTspice は Linear Technology (半導体メーカー) が提供している回路シミュレーションソフトウェアであり、Windows 版と Mac 版がある。Mac 版しか触ってないが、検索すると Windows 版の画面ばっかり出てくる。UI は Windows 版と Mac 版で結構違う。

回路シミュレーションツールは、だいたい全て SPICE というソフトウェアを元にしており、元のソフトウェアの記述形式がデファクトスタンダードになっているっぽい。LTspice は比較的使いやすい UI 及び、自由度が高く、なおかつ無償のため、アマチュアで良く使われるっぽい。

ハマったところ

GND がない

Mac 版の場合、ショートカットを覚えないと、絶対に呼びだせない機能が存在する。特に罠なのは GND で、Components には存在しないし、メニューから追加できなくて困るが、キーボードショートカットの「G」で配置できる。

いずれにせよキーボードショートカットを覚えないと著しく作業効率が悪いので、公式に提供されているpdf を開いておいたほうがよさそう。

RUN できない

何も考えずに RUN しても、エラーしかでない。Windows 版だと親切なダイアログが出るらしいが、Mac 版では出ない。

シミュレーションコマンド を、キーボードショートカットの「S」を押して出てくるダイアログに入力して、画面内に配置することで、RUN が可能になる。

この S で出てくるダイアログの入力エリアを右クリックすると Help me Edit というメニューがあり、シミュレーションコマンドを対話的に入力できる。

RUN しても結果がでない

RUN をすると、回路図上の任意のポイントで、ポインターがプローブの形に変わる。クリックするとその部分の電圧または電流が見れる。続けで他のポイントをクリックすると、波形が追加される。同じポイントを2度クリックすると、それだけを表示させることができる。

  1. トップ
  2. tech
  3. 冬だし LTspice に入門するぞ!!

デフォルトで入っていないオペアンプを使いたい場合、追加する必要がある。


部品追加の考えかた

オペアンプの場合、最初から、汎用の opamp2 というシンボルが用意されている。これは中身(マクロモデル=等価回路) の設定されていないテンプレみたいなやつ (だと思う)。

この opamp2 を配置した上で、Value にマクロモデルの名前を指定することで、指定したマクロモデルを持つオペアンプにすることができる。

ただ、マクロモデルを適当なディレクトリに置いただけでは読みこまれないので、SPICE directive を追加し、.lib コマンドで使いたいライブラリを読みこむ必要がある。

また、提供されているマクロモデルのピンアサインが、opamp2 と一致するようにする必要がある。

オペアンプの追加

よく使う JRC のオペアンプを追加する。今回は NJU7043 を使いたかった。

JRC はマクロモデルで無償提供しており、これは (本来の対象ではないが) LTspiceでも使うことができる。展開して適当に配置する (lib/sub 以下に配置すると .lib コマンドのとき比較的パスを指定しやすい)

mv ~/Downloads/Operational_Amplifiers_Macromodel ~/Library/Application\ Support/LTspice/lib/sub/JRC_OPAMP

そして、

1. Components から opamp2 を選択して配置する
2. 配置されたオペアンプを右クリック
3. Value を nju7043_s とする (サブサーキット名と一致させる)
4. S を押して SPICE directive を追加し .lib JRC_OPAMP/NJU7043/nju7043_2.lib とする (パスを指定)

OK

サブサーキット名は

grep SUBCKT JRC_OPAMP/NJU7043/nju7043_2.lib 

で名前とピン配置をさがせる。

この .SUBCKT の指定は、opamp2 とピンの順番を一致させる必要がある。ピンの名前 (VDD とか VSS とか) は元のままで順番だけ一致させる。opamp2 のピン配置は右クリックして Open Symbol して、Netlist Order を全部見ていくとわかる (一発でわからない?)

結果として

.SUBCKT nju7043_s  IN+ IN- VDD VSS OUT

みたいになる。

こんな感じ

このオペアンプはオフセット電圧が最大10mVと結構大きいので、それがよく出てる(と思う)


  1. トップ
  2. tech
  3. LTspice で任意のオペアンプを追加する

最近 NXP Smartphone Quick-Jack Solution というドキュメントを読んだ。要約すると

  • スマフォのオーディオジャックに繋ぐアクセサリについて
  • 電源を音量最大にしたヘッドフォン端子の R チャンネルからとる
    • チャージポンプダイオード昇圧 + LDO レギュレータで 3.3V を得る
  • L チャンネルをスマフォ → マイコンの通信経路とする
  • マイク入力をマイコン → スマフォの通信経路とする

というもので、特に電源をヘッドフォンジャックからとってしまおうというところが、自分の中では結構びっくりだった。確かにヘッドフォンを駆動しているわけで、多少の電流はとれるだろうけど、マイコン動かすほどとれると思っていなかった。

このソリューションの良いところは

  • 電源と信号線と一括で接続できてお手軽
  • オーディオ出力とマイク入力でコミュニケーションするので、WebAudio からでも応用可能

ウェブエンジニア的には後者は特に夢が広がるところで、デバイスを用意してもらって、繋いでもらえれば、普通のウェブページから直接ハードウェアを殆ど面倒な手続きなしで利用できる (マイク入力が必要な場合だけブラウザの確認画面がでるぐらい)。もし何かしら出力してマイコンに処理させたいだけならば、権限取得的なことが一切いらない (ただし、音量は上げてもらう必要がある…)

やってみた

やってみたといっても、特に気になる電源部分だけ。

手元にある HTC J butterfy (旧) を実際に使い、オーディオ出力を最大にして、どれぐらい電流をとれるか、LED を光らせることはできるか? を検証した。

気になるところ

とりあえず、無負荷時の出力をとっておいた。こんな感じで電圧は出ていた。

回路

回路図書かずにさくっとやってしまった。

NXP のドキュメントだとチャージポンプ+LDOなのだが、チャージポンプ部分で無極性10uFのコンデンサを要求しており、手元にないので、この通りやるのはさっそく面倒になった。

なので、効率は落ちると思われるが手元にあるもので

  • 普通に全波整流を行う
    • 一応ショットキーで4本で整流
  • 3.3V へステップアップするICに突っ込む
    • HT7733A というICで効率は最大でも85%

という方法で3.3Vを得た。

これに200Ωの抵抗と高輝度な白色LEDを繋いだところ、冒頭の写真のように十分 (というか眩しく) 明るく光ってくれた。最近のLEDは微小な電流でもクソ明るい…

LED 光らせてるて安定した状態でこんな感じだった。黄色はステップアップ後の電圧 (ちょっと3.3Vより下がってる)、赤色は整流後の電圧 (600mV程度になってる)。

結果

適当な大きめの抵抗負荷をかけてみた感じ、今回の構成では最大でも5mA程度が限界のようだった。

あとやっていて気付いたのだが、20kHz の出力を使うとなぜかしっかり電流がとれず、10kHz のほうが良い結果になるみたいな現象があった。ちょっとよくわからない。

今後

突発的にやる気を出して2時間ぐらいでやったので、もうちょっと検証したいが、またやる気がでたらにする。

NXP のドキュメントのように大きなチャージポンプを組むほうが効率が良い?のだろうと思うのでやる気がでたらやりたい。

WebAudio でのコミュニケーションは作ったらまぁできるだろうという感じだけど、これもやる気がでたら (つまり良いアプリケーションが思いついたら) やりたい。

  1. トップ
  2. tech
  3. よしお前ら!!! WebAudio で LED を光らせるぞ!!

KX3 は、自宅に置いてる間は ACC1 (シリアル接続) と RX I/Q を Mac に接続しており、普通に繋ぐとグラウンドループが発生する。(KX3 -> ACC1 -> Mac -> RX /IQ -> KX3 のループ)

純正のシリアルケーブルだとあまりノイズは気にならないのだけれど、他のシリアルケーブルを転用したところ、シリアル信号にあわせたノイズが激しく観測され、ちょっと我慢ならないレベルだった。そこで (効果があるかは定かではないが) まずグラウンドループを対策することにした。

使ったのは ST-71 (600Ω:600Ω) で、ステレオなので2個使って絶縁を行った。低周波領域は比較的ロスが大きいが、試したところそこまで気にならなかった。RX I/Q は現在 96kHz でサンプルしていて、ST-71 はオーディオ帯域 (20kHz) までしか特性が書いてなくてちょっと心配だったが、帯域も問題なさそう。

でもって、絶縁してみたところ、完全にノイズが消えてくれた。どうやら本当にここのグラウンドループが原因だったようだ。

やはり無線機から出るケーブルはできる限り全て絶縁するのが良さそう。もちろんコストはかかる (トランスは500円ぐらいして案外高価)。

この他、気になるところを全部やるとすると、アンテナ線以外で

  • オーディオ出力を絶縁
    • 自宅では常時接続している
    • オーディオセレクタでグラウンドも一緒のスイッチしているので、基本は必要はないが、中継コネクタなどでグラウンドが露出する部分があり、うっかりループを作りがち。ステレオ
  • マイク入力を絶縁
    • 基本繋いでないが、PC 出力を使いたいときは絶縁が必要そう。モノラル
  • シリアル接続を絶縁
    • ACC1 絶縁する
    • TTL USB Serial 変換と、フォトカプラだけでいけそう。
  • 電源をわける
    • 別の無線機と共通の電源を使いつつ、グラウンド共有の同軸切替器も使っているので、ここで大きなグラウンドループがある
    • コストがかかる。KX3 用の 最大 3A なら自作したほうが早そう。

現状では対処策はないので諦めるしかない。

ref.
https://github.com/RogueAmoeba/Soundflower/issues/19

  1. Audio MIDI 設定で機器セットを作り、使うデバイスをまとめる
  2. クロックソースを適当に設定する
  3. 「音ずれ補正」のチェックを全部はずす

をやるとプチプチノイズがなくなる

子供が生まれてから、洗濯機がアンモニア臭でものすごいことになることがあった。ちゃんと処理してるつもりなんだけど、どこかのなにかに尿が付着したままなのか、よくわからないが、とにかく何も対策をとれないでいたら、ものすごくひどいことになった。

アンモニア臭は何度洗っても落ちることがない。空っぽで洗濯機まわしなおしてもダメ。洗濯漕クリーナーとかしても完全に無駄。

結局、最終的にクエン酸大さじ1ぐらいを柔軟剤を入れるタイミングで投入することで完全におさめることができた。尿は水と反応してアンモニアになるらしく、水には良く溶けるので、水に溶けてる段階で化学的に完全に中和するのが最強っぽい。

多く入れすぎるとクエン酸臭が残るが、アンモニア臭よりはマシ。

NICHIGA(ニチガ) 無水 クエン酸 3kg 食品添加物規格 粉末 サプリメント 炭酸水 TK0 - NICHIGA(ニチガ)

NICHIGA(ニチガ)

5.0 / 5.0

  1. トップ
  2. 育児
  3. 洗濯機からアンモニア臭

驚異の防臭袋 BOS(ボス)Sサイズ大容量200枚入り 赤ちゃん用 おむつ 処理袋 (袋カラー:ピンク) - BOS

BOS

5.0 / 5.0

みんな知らないと思うけど、うんこは臭い。これは確実に臭いを遮断できる。一見高価に感じるけど1枚約10円の課金アイテムなので、レジ袋に10円課金されるスーパーがあることを考えると特に高価ではない。

じゃあスーパーの袋とかでいいと思うじゃろ? あれは結構空気通すんやで。

キユーピー キューピー 全身ベビーソープ 泡タイプ ポンプ400ml 無香料 - キユーピー

キユーピー

4.0 / 5.0

泡で出てくるので使いやすい。むしろ、風呂のとき100%片手+α塞がってるので、石鹸タイプはかなり辛いと思う。

洗浄力はあまり高くないけど、あらいすぎるとアトピーになるみたいな話もあるので、そこそこの洗浄力でいいのでは??と思ってる。

ファルスカ 3way 防水シート 746024 - farska(ファルスカ)

farska(ファルスカ)

4.0 / 5.0

外でおむつ替えするなら必須。

  1. おむつ台が綺麗とは限らない。
  2. おむつ台を汚さないように。

ファルスカ コンパクトベッド ブラウン/エレファント 746012 - farska(ファルスカ)

farska(ファルスカ)

5.0 / 5.0

家が狭くていわゆるベビーベッドは置くスペースがないので選択肢に入らず、これをベッドとして使っている。6ヶ月ぐらいまでは夜と昼とでリビングと寝室をいったりきたりしてたので、簡単に動かせて良かった。

ただ最近動くようになってきて、夜中にベッドから抜けだすことがあって悩みどころがある。

家が広いんならベビーベッド買っておけばいいんじゃないですかね〜 (鼻クソほじほじ)

ラングスジャパン オーボール ラトル グリーン - ラングスジャパン

ラングスジャパン

4.0 / 5.0

街中で見掛けるベビーカーの殆どについててビビるぐらいの定番アイテムっぽい。ただ、最近うちの子供は最近興味を失いつつある。いろんな色がある。ベビーカーにつけっぱにしてる。

EDISONmama(エジソンママ) 歯がため カミカミBabyバナナ(3ヶ月から対象) 1個 (x 1) - EDISONmama(エジソンママ)

EDISONmama(エジソンママ)

5.0 / 5.0

なんか知らないがとても気に入ってカミカミしてくれる。手元がおぼつかないうちは、ちょっと目に入ったりしそうで怖い感じがするけど、慣れてくれば平気っぽい。

大人的にはバナナの先端をかじってほしいと思うじゃろ? むしろ足側を噛みまくる。足側にも形がちがういくつかの突起がついていて、考えられてるなあという商品だった。

 -

5.0 / 5.0

ベビーカーは不要とか言ってる人もいるけど、そういう人は大抵車持ってるブルジョアジーなので無視して良い。車ないなら必ず必要というレベル。

ベビーカーもピンキリで難しい。案外罠なのが「車高」で、安いと (上記製品は安いカテゴリ) 車高がかなり低い。車高が低いと、下の収納がほとんどないのと、夏はアスファルトの照り返しをもろにうけるのでちょっとかわいそう。

もうちょっと車高高めのがよかったかな〜 と思ってるけど、まぁいいです…

A型B型兼用 レインカバー - イマージ

イマージ

3.0 / 5.0

雨降ったら必要なのでベビーカーに常にいれとく。

LaVie おもちゃホルダー トリコロール ライン セット - LaVie

LaVie

3.0 / 5.0

おもちゃホルダーは必須。2セット買って使ってる。ベビーカーにつけっぱ。

ダイヤ (Daiya) ベビーカー フック BK 2個入 耐荷重3㎏ 滑り止め付き 荷物掛け ダブルフック 360度回転 頑丈 030504 A.ブラック 2個 (x 1) 030504 - ダイヤ

ダイヤ

4.0 / 5.0

どうしても出掛けるときは荷物が多くなるので、ベビーカーにかけられると便利。

ただし、かけすぎるとベビーカーが転倒するのでほどほどに… 産婦人科で転倒させてるのを見たことがある。子供が乗ってなかったので良かったけど、乗ってなかったからバランスが崩れたっぽい。

やりがちだけど、荷物をかけたまま子供をだっこしては絶対ならない。

赤ん坊カンパニー ブランケットクリップ ブラック 2個 (x 1) - 赤ん坊カンパニー

赤ん坊カンパニー

4.0 / 5.0

夏でも冬でも必要。かけておくだけだと動いたときに落下するし、車輪に絡まったりすると危険。

 -

5.0 / 5.0

エルゴは言わずと知れた抱っこ紐だけど、この手のものは必ず必要だと思った。街中で見かける抱っこ紐も8割ぐらいはエルゴだと思う。

出掛けるときだけじゃなく、寝かしつけたりするときも使ってる。15分〜30分動く子供を抱っこし続けるとほんとに腕が死ぬ。ただ、寝かしつけに使う場合、起こさずおろすのに技術力がいる。

エルゴベビー【正規代理店2年間保証付】インファントインサート(新生児からのエルゴに)(ギャラクシーグレー[CKEGR01003]) - Nikitea

Nikitea

3.0 / 5.0

首が座るまでしか使わないが、首が座るまでは必須なので買わざるを得ない。うちの子は2500gをちょっと下まわるぐらいで生まれてきたが、新生児のころはインサートを使ってもかなりスッカッスッカだった。

CBジャパン ジョイントマット(JOINTMAT) 厚め 12mm カラーマット チョコレート 30x30センチメートル (x 8) - シービージャパン(CB JAPAN)

シービージャパン(CB JAPAN)

5.0 / 5.0

結構じたばた暴れるし、倒れるのでフローリング直で置くとこわい。こういったマットは必ず必要だと思う。

トミーアルバム 命名セット TRU-1200 写真も貼れて簡単な記録も書き込める命名書 - トミーメモリアル

トミーメモリアル

3.0 / 5.0

せっかくなので命名!!!ってのをやった。手形足型もとったけど、インクがちょっと石油臭かった。

リッチェル 赤ちゃんおしりシャワー - リッチェル

リッチェル

5.0 / 5.0

最近じたばたするようになって使う機会が減ってきたが便利だった。おしりふきで擦るとすぐ赤くなるので、できるだけ洗い流すようにしたい。結構水圧出せる。冬は寒そうなので厳しいかも。

和光堂 ベビーのじかん 赤ちゃんの純水 [0か月頃から] 2L×6本 ベビーウォーター - 和光堂

和光堂

3.0 / 5.0

ミルクの調乳時だけ使ってる。冷蔵庫に入れておいて、半分は沸騰させて調乳し、もう半分ペットボトルから直接入れて適温にしてる。

普通の水だと全量沸騰させてさますみたいなのをやるハメになって、これはかなり辛い。

なお空きペットボトルでだいぶ長いこと遊ぶので捨てないで子供に渡すと便利。

【指定医薬部外品】ユースキンA 120g (手荒れ かかと荒れ 保湿クリーム) - ユースキン

ユースキン

5.0 / 5.0

【指定医薬部外品】ユースキンA スタンディングチューブ60g (手荒れ かかと荒れ 保湿クリーム) - ユースキン

ユースキン

5.0 / 5.0

おしり赤くなったとき風呂あがりに塗っていた。新生児から使えてなおかつ効果が著しく高く、大人まで使えるので買って全く損はしない。ユースキンは神。

【おしりふき 本体】グーン 肌にやさしい 70枚 - グーン

グーン

4.0 / 5.0

可愛いくていいんだけど、それ以上に目立つのが良い。ただ、楕円形なので交換のとき蓋をしめるのための位置あわせが若干面倒。

 -

4.0 / 5.0

呼吸時の微小な動きをセンシングして、動きがない場合警告を出すというしろもの。ちょっと高価だけど、ないと安心して寝れない (特に新生児の場合寝てるのか死んでるのかわからない) 産婦人科で使ってて知った。

動きだしつつあると、ベッドから抜け出したときにも反応するのは良い。ただ、近くに大人が寝ると、大人の振動にも当然反応するので、基本的には完全に独立したところに寝かさないとダメ

ピジョン 哺乳びん野菜洗い 本体 800ml - ピジョン

ピジョン

3.0 / 5.0

あんまり洗浄力は高くない。なんかラムネっぽい匂いがするので、人によっては嫌がるかもしれない。

うちでは3つ哺乳瓶があって、全部使いかった洗って消毒する運用だけど、使いおわったらすぐすすいで、この洗剤を入れてふっておいとくと結構それだけでも落ちてくれる

ピジョン ミルカー - ピジョン

ピジョン

3.0 / 5.0

出掛けるなら必要だけど、出番は多くない。

D-89授乳ケープBL - Sanko

Sanko

3.0 / 5.0

混合なので出掛けるときあると便利だけど、案外授乳室があるところにしか行かないので、それほど出番は多くない。とはいえ、いざというときないと困る。

【防除用医薬部外品】アースノーマット 60日用 蚊取り 蚊とり黒ブタ - アースノーマット

アースノーマット

5.0 / 5.0

子供が蚊に刺されたら面倒だなーと思って導入した。乳幼児がいても安全らしい。無臭なので設置したことを忘れるけど、いちおう定期的に換気が必要。

コンビ 哺乳びん除菌ケース 除菌じょーずα バニラ - コンビ

コンビ

5.0 / 5.0

哺乳瓶消毒はこれだけでやってる。電子レンジだけでいけるので簡単。

塩素系の消毒液は一切買ってない。

エールベベ マカロンをイメージしたオシャレでかわいい「3WAYクッション」 マカロン クリーミーショコラ(ベージュ) BB707 - カーメイト(CARMATE)

カーメイト(CARMATE)

5.0 / 5.0

授乳クッションはないと死ぬ。母乳だけでなく、ミルクのときも使う。

リッチェル ふかふかベビーバスR グリーン - リッチェル

リッチェル

3.0 / 5.0

首が座る4ヶ月ぐらいまでずっとこれで沐浴させてた。普通は1ヶ月ぐらいで普通の風呂に入れるらしいけど、首すわってない状態で普通に風呂入れるのはおそろしく難易度高く感じた。

ちなみにそれでも1回溺れさせた。ごめんよ… 男性の場合沐浴指導とか産科で受けないので、事前によくシミュレーションとレクチャーをうけること。

 -

4.0 / 5.0

がっちり座らせることができるので便利。背骨が整うまでは、あんまり座らせないほうが良いみたいなことも聞くので、それほど使用頻度は高くないけど、どうしても座っておとなしくしてほしい場合とかはしばらく静かに見ててくれるようになるので便利。]

ベビービョルン 【日本正規品保証付】 ソフトスタイ サンフラワー 046160 - ベビービョルン

ベビービョルン

3.0 / 5.0

離乳食はじまると必ず必要になる。全部プラスチックでできている。現在は事情があって使えてない… というのも、これを見ただけでなぜかまじでギャン泣きするため……

布製+コーティングされた前かけなら平気なので (貰いものなので詳細がわからない)、今はそれを使ってる。ただ、布製+コーティングのものはしっかり乾燥できないので臭くなりがちで、さっさとプラスチックにしたい…

最新決定版 はじめての育児 (暮らしの実用シリーズ) - 細谷亮太

細谷亮太

5.0 / 5.0

定番らしい。月齢別にできるようになることみたいなのが書いてあるけど、ものすごく個人差があるので、そこまでアテにはならない。この点ではもう一冊ぐらい定番の本がほしい。

病気の対応とか、離乳食とか、一通り網羅されており便利。

買わなかったもの

柔軟剤・ベビー用洗剤

ベビー用は別で洗えという人もいるけど、そんな面倒なことしてられないので普通に一緒にあらっている。かぶれたら考えようと思ってたけど、何の問題もでてないのでそのまま。

トップ ハイジア 洗濯洗剤 液体 詰替特大 1020g - トップ ハイジア (HYGIA)

トップ ハイジア (HYGIA)

5.0 / 5.0

洗濯用洗剤はずっとこれ。

紙おむつ処理ポット的なもの

ちょっと検討はしたけど買わなかった。

おしっこの場合はそのままデカいゴミ袋 (普通の半透明ものです) に入れ、うんちの場合は上記 BOS の袋に入れており、これで一切臭いはしないので買わなかった。案外カートリッジが高価なので、うんちの場合だけ BOS の最強の袋に入れるほうがコスパいいかなという感じ。

ベビーパウダー

お尻が赤くなったとき購入を検討したけど、昨今では「良くない」というのが主流の意見だったのでやめた。上記の通りユースキンが最強。

  1. トップ
  2. 育児
  3. 年末だし子供関係で買ったものを一括でレビューするぞ!!!

加湿器の除菌タイム 液体タイプ 無香料 給水タンク内の除菌・ヌメリ防止専用除菌剤 500ml - 除菌タイム

除菌タイム

4.0 / 5.0

うちで使ってる空気清浄機 (ダイキン製) は加湿器の機能もついたもので、空気清浄機なので気化式なんだけど、結構気をつけて手入れをしていても、うっかり3日ぐらい水を入れたまま放置すると即臭くなり、一度臭くなるとかなり頑張らないと臭いがとれず、かなりの労力がかかっていた。

もうマジで面倒なのでと思い、半信半疑で上記製品を導入したら完全に解消された。前シーズンから使いはじめたけど、今のところかなり良い。

成分にカチオン系抗菌剤と書いてあるが、カチオンって 陽イオンってことなので、逆性石鹸と同じっぽい。ただ、具体的な成分はよくわからない。十分安全なのかよくわからないが、安全って書いてあるし信じとく。なによりとにかく利便性が高い。ちなみに加湿器に逆性石鹸 (オスバン) を添加するというのはググるとよく出てくる。

また、柿しぶエキスとも書いてあるが、気化させると多少これ由来っぽい乾いた匂いがする。あんまり好きではないが強力な匂いではなく、排気口に鼻を近づけないとわからないレベルなので気にするほどではない。

加湿タンクの容量に対してほんのちょっと (キャップの最低メモリのさらに半分程度) しか入れていないが十分効果がある。この容量でも一生ぶんぐらいありそう。

 -

5.0 / 5.0