FIRフィルターチャンネルデバイダの作成【8】(ソフトウェア後編@SPDIF→DSP→DAC編

 

マルチアンプシステム向け、FIRフィルター搭載チャンネルデバイダー(チャンデバ)自作に関連する記事の一覧はこちら!

 

DSPを組んで音出しまでいきましょう。

 

  入力・出力を追加

今回は、I2S → ASRC とのルーティングをしているので、ASRCからの入力を追加します。

まず、中央画面の Schematic を開いてください。まあ、何もしていないので空っぽです。

 

次に左のリストから、IO → ASRC → From ASRC → Asrc Input、をドラッグ&ドロップします。

 

また、左のリストから、出力として、IO → Output → Output 2個、ドラッグ&ドロップします。

 

そうすると、以下のようになるはずです。

左のASRCの入力側では、0/1が選択されている(I2S input のLeft、Rightの信号)状態、

右の出力は、

  • 0 → I2S output Ch0 の Left となり、
  • 1 → I2S output Ch0 の Right となります

よって、

  • 入力 → I2S input Ch0 Left、Right
  • 出力 → I2S output Ch0 Left、Right
となり、ココで記載した、配線と同じとなります。

細かいチャンネルの話などは、また別途解説します。

 

  配線

次に配線をしていきましょう。

とはいっても、かんたんで、以下のような感じで接続してください。

単純に、ASRCの入力(元はI2Sの入力)を、単純に出力しているだけとなります。

 

  コンパイル

まずは、ここまでの設定を、ADAU1467に送り込まなくてはなりませんのでツールバーの、 Link Compile Download をクリックして、コンパイル・書き込みしましょう。

ただ、書き込みといっても、ADAU1467の内部のRAMに書き込むだけなので、リセットや、電源を入れ直すと消えてしまいます(そのためにE2Promがありますが、そのあたりの話はまた後で)。

 

無事に完了すると、以下のような画面となるはずです。

中央画面の下部には、緑のライン、右下には、Active Downloaded、右には、Fs = 96.0kHz 3%、との表示がでているはずです。

ちなみに、Fs = 96.0kHz 3%とは、96kHzで処理する場合の、3%の、処理時間を使っているという表示です。

なので、ここが100%を超えてしまうと、処理が追いつかなくなり、正しく音声処理ができません。

 

  動作確認

やっと、動作確認できるところまで来ました。

ここでは、Audacityを利用していきます。

 

まず、Audacityを起動します。

 

そして、上記メニューから、音声を設定 → 再生デバイス を選択、

ここで、実際にSPDIFが接続されているデバイス設定してください(画面は参考になりません・・・)。

 

次に、テストトーンを作成します。

上記メニューから、ジェネレーター → トーン を選択

 

デフォルトのままだと、440Hzのトーンが生成されます。

 

生成された波形を再生していきましょう。

メニューの緑矢印をクリックで再生です。右の、ループボタンを押してループ再生にしておくと便利です。

 

さあ、これで、パソコンから、SPDIFを通して、I2S信号が発生し、ADAU1467のDSPに渡り、それをそのままOutputとして再びI2Sで出力、DACで音声信号に変換、されているはずです!

 

  確認

ということで、実際に音声信号がでているか、オシロスコープで見てみましょう。

 

こんな感じで、出力されているはずです。

アンプ・スピーカーに接続すれば、440hZ音声が聞こえるはずです。

 

なんら、音声処理もしていない、非常にかんたんなサンプルですが、DSPの内部を通って、処理がおこなわれていると言う所が確認できた、最初の一歩となります。

 

実際にチャレンジされている方、ぜひがんばってください!

 

そして、これで、基本中の基本は、完了です。

 

ここまでの手順については、パラメータを変更してみるなどすると(例えば内部動作48kHzを試してみるとか)実際にどのように動作しているか、理解がすすむかと思います。

 

このあとは、ボリュームとか、チャンネルごとのGAIN調整とか、FIRフィルターの実装とかに進んでいきたいと思います。

つづく

 

にほんブログ村 音楽ブログへ
にほんブログ村
にほんブログ村 その他趣味ブログへ
にほんブログ村