〰️ 信号・DSP
波形を分解して、また組み立てる。フーリエ・畳み込み・ΔΣ・フィルタ・音。
畳み込みを一歩ずつ →
12×12 の小さな画像で、ぼかし・Sobel・Prewitt の計算が一マスずつ進む様子を見る専用ページ。カーネルが格子を舐めて、9個の掛け算→合計→出力が埋まる。
ΔΣを一歩ずつ — 誤差タンクと1ビット出力 →
ノイズシェイピングの正体を1サンプルずつ。誤差のタンクが溜まって1を超えた瞬間に1を吐き、溢れたぶんが残る。1ビットなのに、ならすと入力に戻る。素の丸め(OFF)との違いも並べて見える。
声のページ — 母音とフォルマント、声道の共鳴を解く →
二部構成。①F1–F2 の地図をドラッグして母音を鳴らす(フォルマント合成)。②声道を輪切りにして伝達行列で共鳴を数値で解く——管をドラッグすると F1・F2・F3 が本当に動き、その解から定在波も音も作る。絵と音が必ず一致する。
Fourier スケッチブック
左のキャンバスにマウスで形を描くと、回転する円(エピサイクル)の重ね合わせが元の形を再現する。
フーリエ級数は「任意の周期関数を正弦波の和で表せる」という話で、これはその可視化。RFでいえば、任意の波形をスペクトルに分解してまた足し合わせるようなもの。
フーリエ級数は「任意の周期関数を正弦波の和で表せる」という話で、これはその可視化。RFでいえば、任意の波形をスペクトルに分解してまた足し合わせるようなもの。
INPUT — ここに描く
OUTPUT — エピサイクル
SPECTRUM — 周波数成分の振幅(明るいバー = 今回転中の円)
32
6
プリセット:
左に描いてね。マウスを離したら解析が始まる。
畳み込みスライダ
畳み込み (f∗g)(t) は「片方を反転して滑らせ、重なった面積をなぞる」操作。
上段で f(τ) は固定、g(t−τ) が反転して動く。中段はその積(=重なり)、下段がなぞった結果。スライダ t を動かすと、面積がそのまま出力になっていくのが見える。
上段で f(τ) は固定、g(t−τ) が反転して動く。中段はその積(=重なり)、下段がなぞった結果。スライダ t を動かすと、面積がそのまま出力になっていくのが見える。
① f(τ) と g(t−τ) — オレンジが反転して滑る
② 積 f(τ)·g(t−τ) — この塗りつぶし面積が出力の値
③ 結果 (f∗g)(t) — 面積をなぞった曲線
-2.20
f(τ):
g(τ):
DEFINITION
g を τ について反転 (g(−τ)) し、t だけ平行移動して重ね、積の面積をとる。t を動かすとその面積が出力になる。矩形×矩形 → 三角、何かとガウス → なめらかに、がよく効く例だよ。
Sound Scope
マイクの音をリアルタイムで波形とスペクトルに表示する。ブラウザの Web Audio API だけで動く。
スペクトルを見ていると、母音ごとに倍音のパターンが違うのがわかったり、ノイズと純音の違いが見えたりして面白い。
スペクトルを見ていると、母音ごとに倍音のパターンが違うのがわかったり、ノイズと純音の違いが見えたりして面白い。
— 停止中
音声処理: ← 切り替えると再接続
WAVEFORM — 時間領域
SPECTRUM — 周波数領域 (FFT)
3
8000
リサージュ図形
X・Y軸に異なる周波数の正弦波を入れると現れる曲線。オシロスコープのXYモードで見るあれ。
周波数比が整数比なら安定した閉曲線になり、位相差が変化すると図形がゆっくり変形していく。
周波数比が整数比なら安定した閉曲線になり、位相差が変化すると図形がゆっくり変形していく。
LISSAJOUS — x=sin(fx·t+δ), y=sin(fy·t)
3
2
90°
6
プリセット:
ΔΣ変調 — 1bitはどうやって滑らかな信号を運ぶのか
ΔΣ変調器は、なめらかな入力を「+1 か −1 か」だけの1bitストリームに変える。秘密はノイズシェイピング——量子化で出る粗さ(ノイズ)を、信号のある低い周波数から高い周波数へ追い出すこと。あとから低域だけ通せば、1bitなのに高分解能の信号が戻ってくる。
上=入力と復元出力、中=1bit出力ストリーム(濃淡が入力を追う)、下=スペクトル。「ノイズシェイピング」を OFF にすると、誤差を持ち越すループ(ΔΣの心臓)を外した状態=ΔΣをOFFにするのと同じで、過去を見ずにその場を丸めるだけの素の1bit量子化に退化する。Δ(差分)もΣ(積分)もそのループの中の操作だから、OFFはどちらも止めるということ。だから余計な成分が帯域内に居座る。溜まって吐く様子を1サンプルずつ追うなら /dsm(ΔΣを一歩ずつ) へ。デモ用の素朴な実装だよ。
上=入力と復元出力、中=1bit出力ストリーム(濃淡が入力を追う)、下=スペクトル。「ノイズシェイピング」を OFF にすると、誤差を持ち越すループ(ΔΣの心臓)を外した状態=ΔΣをOFFにするのと同じで、過去を見ずにその場を丸めるだけの素の1bit量子化に退化する。Δ(差分)もΣ(積分)もそのループの中の操作だから、OFFはどちらも止めるということ。だから余計な成分が帯域内に居座る。溜まって吐く様子を1サンプルずつ追うなら /dsm(ΔΣを一歩ずつ) へ。デモ用の素朴な実装だよ。
ΔΣ MODULATOR — 入力 / 1bit出力 / スペクトル
16
0.60
7
—
なぜ効くのか
信号 X はそのまま通り、量子化ノイズ E には (1−z⁻¹)ᴺ という高域通過がかかる(N=次数)。低い周波数では 1−z⁻¹≈0 だからノイズが消える=信号の居る帯域だけ静かになる。
OSR を2倍にするごとに、1次なら約 +9 dB、2次なら約 +15 dB ぶん S/N が良くなる。速く回すほど、あるいは次数を上げるほど、1bitでも分解能が上がるという仕組みだよ。
位相雑音スペクトル — ℒ(f) を動かして掴む
発振器の出力スペクトルは、キャリアの鋭いスパイクの両裾に雑音の「スカート」が広がってる。その下がり具合を表すのが ℒ(f)(dBc/Hz)── オフセット f で 1 Hz 幅を切り取ると、キャリアより何 dB 下か。
Leeson のモデルでスライダーを動かすと、スカートの形が変わる。Q を上げると一気に下がる(=水晶発振器がクリーンな理由)。信号電力やフリッカーのコーナーも効く。グラフをドラッグすると、その offset の ℒ(f) が読める。
Leeson のモデルでスライダーを動かすと、スカートの形が変わる。Q を上げると一気に下がる(=水晶発振器がクリーンな理由)。信号電力やフリッカーのコーナーも効く。グラフをドラッグすると、その offset の ℒ(f) が読める。
ℒ(f) [dBc/Hz] vs オフセット周波数(log-log)
1e3
100 MHz
0 dBm
10 kHz
6 dB
例:
PLLシミュレータ(引き込み・整定)
位相比較器→ループフィルタ→VCO の2次PLL(type-II)。基準周波数をステップ変化させたとき、VCOがどう引き込んで整定するかを時間で見る。
ループ帯域 fn と 減衰 ζ を動かすと、行き過ぎ(オーバーシュート)と整定時間のトレードオフが掴める。
ループ帯域 fn と 減衰 ζ を動かすと、行き過ぎ(オーバーシュート)と整定時間のトレードオフが掴める。
VCO周波数の追従(目標=点線)
位相誤差 θe(→ 0 に収束)
100 Hz
0.71
1 kHz
LCフィルタ設計(ボード線図)
ローパス/ハイパス/バンドパスを、1次・2次で切り替えてボード線図(振幅と位相)で見る。
カットオフ fc と、2次では Q(鋭さ)を動かすと、−3dB点・傾き(−20/−40 dB/dec)・共振の山がどう動くかが掴める。
カットオフ fc と、2次では Q(鋭さ)を動かすと、−3dB点・傾き(−20/−40 dB/dec)・共振の山がどう動くかが掴める。
振幅 |H| [dB]
位相 ∠H [deg]
種類:
次数:
回路図
部品の値(実用レンジ)— fc・Qは自動計算
—
—
—