2011/07/31

64-bit MATLABでpa-wavplayを使う

pa-wavplayはMATLABからオーディオ入出力を行える非常に有用なツールであるが,32-bitバイナリしか公開されておらず64-bit MATLABからでは使えない。ソースは公開されているので手元でビルドしてみたところ,特に問題なく動作するようだ。ただし,ASIO環境以外については未調査。

作業環境:
  • MATLAB 2008a
  • Visual C++ 2010 Express SP1
  • Windows SDK 7.1

作業手順:
  • pa-wavplayのソースをダウンロード。
  • PortAudio 18.1ASIO SDK 2.2をダウンロードし,適当な場所に展開。なお,ASIO SDKのダウンロードには開発者登録が必要。
  • Visual C++でソリューションを開き,プラットフォームをx64に設定。
  • インクルードディレクトリ,ライブラリディレクトリを適切に設定。既存の設定の修正に加え,ライブラリディレクトリにWindows SDKへのパスを加えることが必要。
  • [構成プロパティ]-[全般]の[ターゲット名]をpawavplaya,[ターゲットの拡張子]を.mexw64に変更。
  • [構成プロパティ]-[リンカー]の[出力ファイル]を親またはプロジェクトの規定値から継承に変更。
  • ビルドしてできるpawavplaya.mexw64を,pa-wavplayのディレクトリにコピー。

出来上がったバイナリを添付しようと思ったが,Bloggerではファイルの添付ができないらしい。

2011/07/23

SCD-XE800 デジタル出力改造 #2

今回の改造ポイント:

外部DACクロック同期

外部DACが出力するマスタークロック(22.5792MHz=512x44.1kHz)に、SCD-XE800を同期させる。SCD-XE800は27MHzが基準クロックとなっているが、単純に22.5792MHzから27MHzを生成するだけでは、入力する22.5792MHzと再生成する22.5792MHzの位相が不確定(電源投入毎に異なる)となってしまい都合が悪い。今回は、入力する22.5792MHzと再生成する22.5792MHzの位相差を使うPLLを構成する。つまり、既存のPLLを分周器として新設するPLLに組み込む構成。一応、単純なシミュレーションでは安定動作が確認できているが、本当に動作するのかちょっと不安。

DSDデジタル出力

アマチュアが使えるような標準化された方式はないので、独自形式で出力することになる。今回は何も考えずに、生信号をそのまま出力する。コネクタ/ケーブルにはHDMI(4ツイストペア+6結線)を使い、これにより1本のケーブルですべての入出力をまかなう。