SigmaStudio Development Tips

A DIY Audio Processor FreeDSP SMD A/B Application Development Project.


Introduction

SigmaStudio は優れたGUIベースのDSP開発環境ですが、内蔵された強力なシミュレーション機能について解説しているページをほとんど見かけないので、使った事がない方も多いと思っ たので私なりの活用の例を書いてみます。 この機能をうまく活用することで実測した測定データをベースにしながら、特性を補正するセッテイング等をカット&トライでインタラクティブに作っていく事が可能になりま す。 ここではMLSSAシミュレーション機能の使いかたと、実行に必要なステップ数の確認方法について解説します。


Simulation Elements

シミュレーションで使用する重要な要素は以下の3つで、これらはTreeToolBoxの一番 上のSchematic Designツリーの中にあります。

Simulation Elements

Element
Icon
Comment
Simulation Stimulus
信 号経路の途中に配置して信号をスルーさせる事もできるが、ボタンを押す事で仮想的 にフラットな信号を注入することができる。
Simulation Probe
信号経 路の途中に配置し、ボタンを押す事で通っている信号を解析して冒頭の画像のようなボード線図(周波数特性、位相特性)を表示するこ とができる。右クリックしAdd pinする事で複数の信号を重ねて表示することができる。
Speaker Response : MLSSA
かつて のWindows3.1時代の定番スピーカー測定システムが採用していたMLSSA形式に倣った測定データファイル(テキスト形式)を読 み込 ん で伝達関数をシミュレーションすることができる。



Basic Analysis Layout Example

最初はただスルーするだけの解析レイアウト例を示します。下の例ではINPUT0側にシミュレーション要素を入 れました。

Signal Through Response Analysis Setting

Probeボタンを押し、Stimulusボタンを押すと以下のような解析ウインドがポップ アップします。当然ですが何も加工していないのでフラットな特性となります。

Simulated Through Response

当たり前ですが周波数特性も位相特性も超フラットですね。




Simulated Crossover Response Analysis Example

チャンネルデバイダーやバッフルステップ補正などの特性を含めて特性を確認したいケースが多々ある と思います、周波数分割したものを空間で合成した特性をシミュレートする場合、時間的なアライメントが揃ったものとして表されているという制約はありますが フィルターの群遅延や位相特性を反映したシミュレーションができるので、例えば12dB/octのクロスオーバーであれば片方を逆相にしなくてはならない 事と か、バタワース特性のHPFとLPFの群遅延の特性を補正するためにHPF側にディレイを入れると櫛形に周波数特性にうねりが生じたり、クロス周波数に+3dBのピークを 生じるなどの事象をシミュ レーションで確認することができます。

2wawy Crossover Simulation Circuit

上記のような接続でクロスオーバーのフィルタータイプを切り替えながらシミュレーションを実施しました。

Buttworth 2pole Crossover (12dB/oct) Setting

アマチュアのパッシブネットワークでは広く一般的に使われているバタワース型の 12dB/octのセッテイングは以下のように設定します。HPFとLPFは逆相接続にする必要があるのでPolarityオプションの"Invert" にチェックを付けます。

Crossover Setting1 (Butterworth 12dB/oct)
クロス周波数1kHzでのレスポンスはHPF・LPFともに−3dB点です。クロス周波数で HPFとLPFの位相がズレていくのが認められますし、何よりクロス周 波数で+3dBのピークを生じていることが特徴的です。 この問題を解消するためにクロス周波数を離したり、ツイターの取り付け位置をオフセットしたりと様々な対策が講じられているのが現実で、実に悩みどころ満載の方式でもあり ます。

Buttworth 4pole Crossover (24dB/oct) Setting

ハイパワー駆動を要求されるPA業務機などでたまに見かける24dB/octのクロスオーバー は以下のようにセッテイングします。

これも-3dB点でクロスしますが、やはり+3dBのピークを生じます。 カット域が急峻なのでパ イパワーで鳴らす用途では好まれます。またスロープがシャープになった分だけ狭い帯域で盛り上がる形状になっています。


Linkwitz-Riley 4pole Crossover (24dB/oct) Setting

業務用スタジオモニタースピーカー等で採用されているのをよく見かけるL-R型ですが、以下のよう にセッテイングします

バタワース型よりも切れは緩やかですが、クロス周波数付近で位相がほぼ完全に一致するので-6dB 点をクロス周波数にしても打ち消すことがないために両者を合成した特性は足し算どおりにフラット(緑線)になります。 つまり軸上での特性を平坦にできるとい う特徴が業務機モニターSP等で採用されてている第一の理由です。

Linkwitz-Riley 8pole Crossover (48dB/oct) Setting

近代的なラインアイレイ型のSR業務機などで採用される事が多いこの方式は以下のようにセッテイン グします。

鋭いキレと、軸上での平坦な特性はタイムアライメントと併用することで、複数の帯域別のスピー カーを現場で使用する用途では効率的な運用とパワーハンドリングの両方の観点から重宝されている理由がこの特性グラフからも十分に読み取る事ができます。




MLSSA Simulated Speaker Response Analysis Example

続いてSpeaker Response: MLSSA をToolBoxから信号経路上に配置して伝達特性測定データを読み込んでみましょう。

 Adding MLSSA Speaker Response Simulation

"Click to open a speaker file"とある部分をクリックするとMLSSA形式の特性ファイルを読み込むポップアップウインドが開きます。
この特性ファイルは標準的なテキストファイルで、先頭2行が固定文字列で、これに続く行に 半角文字で以下の形式で伝達関数を記述します。Omni MicやARTA等で伝達特性を測定した結果の数値データを利用することができます。

レスポンスと位相特性の両方を測定できればベストなのですが、周波数レスポンスのグラフだけしか無い状況では仕方ないので、全ての位相角を0度としてデータを作成します、 数値データが無い場合でもビットマップのグラフ画像があればWebPlotDigitizerと いうwebページでグラフの画像から数値データを比較的簡単に抽出することができます(日本語で使 い方を詳しく解説しくてれているページがあります)
以下のリンクに周波数測定のグラフから作成したスピーカーの特性を記述した例を置いておきま す。

Download


この特性ファイルの記述方法は以下のようにします。最初の2行の文字列はほぼ固定でコピペでも構い ません

MLSSA Speaker Response  Data File Format Description

先頭行 "Sensitivity Excess Phase - dB SPL/watt (8 ohms, @0.50 meters) (High)"
2行目       "Hz"  "Mag (dB)"       "deg"
3 行目以降(繰り返し) 周 波数(Hz), レスポンス(dB), 位相(degrees)  [改行文字]
(改行文字は windows標準形式なので CRとLFです)

例: (某SPの測定結果グラフから適当に読み取って捏造したデータなので位相角は 全て0 です)
"Sensitivity Excess Phase - dB SPL/watt (8 ohms, @0.50 meters) (High)"
      "Hz"  "Mag (dB)"       "deg"
20,30,0
30,55,0
40,65,0
50,75,0
60,81,0
70,80,0
80,83.5,0
90,83,0
100,83.5,0
120,85,0
140,84,0
160,86,0
190,82.5,0
200,83,0
250,84,0
300,83,0
350,82.5,0
400,83,0
500,84.5,0
600,83,0
700,83.5,0
800,84,0
900,85.5,0
1000,85,0
1500,85,0
1750,83.5,0
2000,87.5,0
2500,88.7,0
3000,87.5,0
4000,89,0
5000,88,0
6000,83,0
7000,85,0
8000,86.5,0
9000,88,0
10000,88.5,0
13000,85,0
20000,88.5,0

Speaker Response1のボタンを押して上記の特性ファイルを読み込むとProbeの解析結果を表すグラフは以下のように変わります。



Simulated Crossover Response Adjustment Example

チャンネルデバイダーやバッフルステップ補正などの特性を含めて特性を確認したいケースが多々ある と思います、周波数分割したものを空間で合成した特性をシミュレートする場合、時間的なアライメントが揃ったものとして表されているという制約はありますが フィルターの群遅延や位相特性を反映したシミュレーションができるので、例えば12dB/octのクロスオーバーであれば片方を逆相にしなくてはならない事と か、バタワース特性のHPFとLPFの群遅延の特性を補正するためにHPF側にディレイを入れるとクロス周波数に+3dBのピークを生じるなどの事象をシミュ レーションで確認することができます。



このようにプローブ結果を表示しながら、同時にクロスオーバーの設定画面を開いて特性をリアル タイムに見ながら調整を進めることができます。

  現実では個別のウーハーとツイターから発せられた音は空間で合成されてリスナーの耳に到達します、そこでクロスオーバーで分離した信号それぞれにウーハーの特性とツイター の特性を持たせて、ミキサー でミックスする(つまり加算する)こともできます、加算した結果は実際の空間で2wayの各ユニットの音を合成して聴くものと同じような意味をもちますから、 より現実に近いシミュレーション環境といえます。以下に順にシミュレーションに必要な要素を含んだ片チャンネルだけで例を示していきます。

この例においてMLSSAで設定しているスピーカー特性ですが、2kHz付近でバッフルステッ プ効果と思われ る大陸棚状の周波数特性の段差が認められます。

Non Compensated Frequency Response

緑線:総合特性
赤線:ウーハー側出力
青線:ツイター側出力


フルレンジ+サブウーハーという構成なのでクロス周波数を200Hzに設定しました、そこで、 このフルレンジSPの特性を補正するバッフルステップ補正をオンにします、設定はカット&トライで以下のようなセッテイングに落ち着きました。

Buffle-Step Compensation Setting

Simulated Frequency Response (with Baffle-Step Compensation)
2kHzから上の段差が解消されているのが判ると思います。 

厳密にやるのであればサブウーハーの特性も収集してクロスオーバーの出力側にそれぞれの MLSSAのモジュールを配置すればより現実に近くなるものと思われますが、180Hz付近のピークはウー ハーのカット周波数を僅かに下げるか、レベルの微調整でも済みそうな程度で、実際には部屋の形状や配置が支配的なので、ここでの補正は行わず実際の出音を確認 しながら補正するのが良いと思われます。放射パターンにより反射音の量 とかも違ってくるので聴こえる音とかなり違う可能性もありますが、音を出す前に事前にある程度の検討ができるという点で実に日本の家庭事情にマッチした手法ではないか思 えます。


Download




Delay and Phase Affects

これまで簡単なシミュレーションモデルで評価を行ってきましたが、実際には物理的なSPユニッ ト位 置の違いによる遅延時間の違いで総合特性が大きく変化してしまうという現象をディレイの遅延時間を変えて、シミュレーションでお見せしたいと思います。

2pole L-R型のクロスオーバーの特性(ディレイなしの場合)

ツイター側を12サンプル遅らせた場合の特性

ツイター側を24サンプル遅らせた場合

このシミュレーションは96kHzで行っているので12サンプル =0.125mS =4.25cm のずれに相当します。24サンプル =0.25mS =8.5cmの例に至っては逆相接続にした方が良いくらいズレてしまっているのが判りますね。 このように現実のスピーカーシステムでは微妙な電気的な位相のずれを気にする事も大切ですが、コーンの物理的な形状とか取り付け位置の違いによる振動板とリスナーの距離の 違いについても、もっと神経質なくらい気にする必要があることが理解してもらえるものと思います。


プロジェクトの実行ステップ数の確認方法

最初のページでADAU1701の場合48KHzサンプルでは最大で1024ステップ、96kHz なら512ステップ、192kHzならたったの256ス テップしかDSP命令が実行できないとお知らせしましたが、ではどうやって確認すればいいのか? この情報はSingStudioでコンパイルした時に、プロ ジェクトファイルである「プロジェクト名.dspproj」があるフォルダーの中に、「IC 2_プロジェクト名」 というフォルダーが生成され、さらにその中に「net_list_out2」という名前のフォルダーが生成され、その中に 「compiler_output.txt」 という名前のテキストファイルが出来るので、これをWindowsの「メモ帳」などのテキストエディタで開くと以 下のような記述が見つかると思います。具 体的には以下ようにフォルダーツリーを辿ります

ProjectFolder >> IC 2_ProjectName  >> net_list_out2  >> compiler_output.txt

compiler_output.txtの例:

Analog Devices Graphical Compiler Tool for Sigma DSP build date =  2008
 
 
Done Reading Nodelist ... 
 
Done reading file,
 
Done Reading Parameter list ... 
 
 
################## Summary ########################
(Note: Estimates are based on a 48 kHz sample rate)
 
Number of instructions used (out of a possible 1024 ) = 124
 
Data RAM used (out of a possible 2048 ) = 30
 
Parameter RAM used (out of a possible 1024 ) = 9
 
Files written: 
 
program_data.dat - load file for downloading code using ADI loader
 
hex_program_data.dat - load file for downloading code using microcontroller
 
spi_params.dat - file of parameter values for each instance, used by gen_spi program to make download file
 
spi_map.dat - Parameter RAM locations for each schematic instance
 
trap.dat - lists the values to enter in the trap registers to output a signal to the data-capture output pin.

この中の、「Number of instructions used (Out of a possible 1024)=」の次にある数字が実行に必要な命令ステップ数です、上記の例では「124」なので192kHzサンプリングまで動作できる事が判ります。コンパイルしたコー ドが実行できない時は、可能なステップ数を超えてしまっていないか確認してみてください。



適当に読み漁って得た自己流の知識なので正しいインプリではない場合があります、違っていたらあしからず・・・・・


引続き更新中です

Return to Project Main Page

[注意事項]
 本情報は、あくまでも部分的情報の公開が目的であり、確実で完全な情報であることを保証するものではありません。 ユーザー個人の趣味であり またメーカを冒?したり営業妨害を意図するものでもありません。 従って本情報に基づいて機器を改造した際に、機器が動作しない、もしくは、期待した 性能が得られない等の 障害が発生したり、万が一に事故等が発生したとしても、当方は一切の責務において関知しないものであります。 実際に機器の改造を行う際は、あく ま でも各自、個人の責任において行ってください、腕に自信の無い方は絶対にトライしないで下さい。 本設計の回路やアイディアの無断転載や商用化はご遠 慮ください。
[Caution:] If you use above information, At Your own risk!
inserted by FC2 system