2008-01-01から1ヶ月間の記事一覧

FM音源プログラム (18) -- オペレータ (11)

フェーズアキュムレータから 14 ビット分を抽出して、下の図のように b13 を「S」ビット、b12 を「D」ビットと呼ぶことにします。

FM音源プログラム (17) -- オペレータ (10)

今度は、サイン波テーブルの参照方法についての話です。 前の議論で、フェーズアキュムレータを N ビットとしましたが、その上位 M ビットを抽出して、サイン波テーブルの参照に使うものとします。

FM音源プログラム (16) -- オペレータ (9)

F-NUMBER 計算 以前示した F-NUMBER の計算式には、サンプリング周波数が含まれていますから、F-NUMBER の値はサンプリング周波数に依存します。 FM音源プログラムでは、サンプリング周波数の切り替え機能を持たせたので、何も対策しないと、 F-NUMBER テ…

FM音源プログラム (15) -- オペレータ (8)

ポルタメント処理 アナログシンセでは、キーボード回路のサンプル&ホールド (正確にはトラック&ホールド) 回路にポルタメント機能を持たせることが多いようです。 ホールド・コンデンサと、ポルタメント時間調整用の可変抵抗で1次 RC 回路を構成し、その…

FM音源プログラム (14) -- オペレータ (7)

OPL3 の音源チップでは、F-NUMBER/BLOCK の組で受け取ったピッチ情報に対して、チップ内部でビブラートをかけます。 ピッチベンド/ポルタメントなどに関しては、チップにその機能はないので、ドライバ/アプリケーション・プログラム側で実現することになりま…

FM音源プログラム (13) -- オペレータ (6)

OPL3 の音源チップでは、リニア周波数的な表現である F-NUMBER、BLOCK の組でピッチ情報を指定します。 一方、KSL (Level Key Scale) では、1 オクターブ当り何 dB という形で出力レベルに補正が加えられます。 この変換は、下の表にしたがって、チップ内部…

FM音源プログラム (12) -- オペレータ (5)

F-NUMBER 「YMF715x (OPL3-SA3) -Register Description Document-」(以下「rege」と略記) では、 F-NUMBER について、 Frequency Information : These bits determine the frequency information for one octave. と説明しています。

FM音源プログラム (11) -- オペレータ (4)

次は、フェーズ・ジェネレータ (phase generator) まわりの話です。

FM音源プログラム (10) -- オペレータ (3)

今回は、「表の分割」と「補間」についての話です。

FM音源プログラム (9) -- オペレータ (2)

今回は、サイン波テーブルについての話です。

FM音源プログラム (8) -- オペレータ (1)

順序が前後しましたが、FM音源のオペレータの話です。

アナログシンセの VCO ブロック (25) -- アンチログ回路(8)

これまでは、純アナログ的に連続時間で PTAT スケーリングをする話でしたが、今度は PWM で時間平均としてスケーリングする方法です。

ディジタルオーディオ用 DAC をマイコンにつなぐ(6)

DAC

最後は、SH2 の場合です。 これは Web では公開していない、インターフェース 2006 年 6 月号付録基板 SH7144F を使用したものです。

ディジタルオーディオ用 DAC をマイコンにつなぐ(5)

DAC

今度は Atmel ATtiny シリーズの USI (Universal Serial Interface) モジュールを使った場合です。 USI を SPI (3線動作) モードで使うと、ハードウェア的には 8 ビット・シフトレジスタ + 4 ビット・カウンタ程度の回路であり、お世辞にも使いやすいとは言…

ディジタルオーディオ用 DAC をマイコンにつなぐ(4)

DAC

次は Atmel ATmega シリーズの SPI モジュールを使った場合です。

ディジタルオーディオ用 DAC をマイコンにつなぐ(3)

DAC

ここからは、各マイコンごとに、FM音源プログラムでの実例を示します。 まず最初は CQ 出版「インターフェース」2007年5月号付録基板 (CQ_V850) の V850 の例です。

ディジタルオーディオ用 DAC をマイコンにつなぐ(2)

DAC

マイコンにディジタルオーディオ用 DAC をつなぐ場合、専用インターフェース・ハードウェアが存在するわけではなく、ソフトウェア的に実現しなければならない部分が出てきます。 割り込み応答時間は、一般には一定値ではなく、ある程度の時間幅で変動します。…

FM音源プログラム (7) -- EG (7)

次はディケイ/リリース・レートについて検討します。

FM音源プログラム (6) -- EG (6)

「YMF715x(OPL3-SA3) -Register Description Document-」(以降「rege」と省略) のエンベロープ・レートと時間との対応表について、詳細に検討してみました。

FM音源プログラム (5) -- EG (5)

EG プログラムの処理方法を、簡略化した C プログラムの断片を示しながら説明していきます。

FM音源プログラム (4) -- EG (4)

lb ドメインでの EG 計算の続きです。

FM音源プログラム (3) -- EG (3)

乗算によらない減衰エンベロープ ディケイおよびリリースの、エクスポネンシャルで減衰するエンベロープは、減衰が急激でない場合には、乗算なしで、シフトと減算だけで実現できます。

FM音源プログラム (2) -- EG (2)

音色データ中の EG パラメータの値のいくつかについて、その意味を説明します。

FM音源プログラム (1) -- EG (1)

唐突ですが、ここで話題をFM音源プログラムの EG (Envelope Generator) の話に変えます。

平均率関数のシュトレーレ近似

またまた、ちょっと脱線します。 「ikuro」さんの web サイトのコラムに興味深い記事がありました。 それは、2 を底とする指数関数の近似式で、1743 年にシュトレーレが発見したというものです。

アナログシンセの VCA ブロック (1)

OTA の話が出たついでに、少し VCA に寄り道します。 LTspice で LM13700 のリニアライジング・ダイオードを使った場合と、使わなかった場合の特性をシミュレーションしてみました。

アナログシンセの VCO ブロック (24) -- アンチログ回路(7)

OTA を乗算器的に使う方法の続きです。 特性を実現できれば、と言いましたが、それ自体は簡単なことです。 差動トランジスタ対の差動電圧入力と差動電流出力との関係が になるわけですから、入力と出力を逆にして、差動電流入力、差動電圧出力が実現できれば…

アナログシンセの VCO ブロック (23) -- アンチログ回路(6)

次は、OTA (Operational Transconductance Amplifier) を乗算器的に使う方法です。 もともと OTA 自体に、差動入力信号とバイアス電流との乗算機能は備わっていますが、裸の作動増幅器の入力特性としては、良好な直線性を持つのは ±10 mV 程度に過ぎません。

アナログシンセの VCO ブロック (22) -- アンチログ回路(5)

アンチログ回路入力の絶対温度 () スケーリングの話に戻ります。 純粋にアナログ的手段による方法として、 ギルバート・セル型アナログ乗算器 (4象限) ログ-アンチログ型アナログ乗算器 (2象限) OTA を乗算器的に使う を取り上げます。 また、ディジタル的…

アナログシンセの VCO ブロック (21) -- リニア VCO 回路(16)

今度は Exar 社のリニア VCO チップ XR-2209 です。 三角波と方形波を出力できます。 「RJB」さんの Blog を見て初めて知りました。 例によって、私はこのチップを見たことも、使ったこともないので、データシートをネタに話を進めます。