MDX Player for iOS音質向上研究

MDX Player ver 2.0 から再生周波数の切り替え機能(22,44,48,62Khz)がつきました。

22, 44, 48KHzはわかりますが(CD,DATなどの周波数で一般的によく使われる)、62KHzというのは何かというと、X68000のOPMチップに与えられる4MHzの周波数を64分周したADPCMが15.6KHzなので内部処理を楽にするために?44,48,62KHzのときは15.6×4=62.5KHzがOPMチップの出力周波数となります。ということでGAMDX(MDXドライバ)内部では62.5KHzで処理しており、そのデータをそのままiPhoneのCoreAudioに渡すモードということになります。実際に62KHzで出力されるのではなく、CoreAudio内部で44KHzに変換されて出力されているようです(iPhoneのイヤホン出力をUSB-DAC/ADCに繋いで解析しました)。44, 48KhzのときはGAMDX内部で62KHzから周波数変換されて返されます。なお、22KHzのときだけなぜかGAMDX内部でも22Khzで処理されています(謎)

(追記:上記消去した部分はGAMDXドライバというかMXDRVgを作られたGORRYさんから直接Twitterで指摘されました)

iPhoneは48KHzの出力にも対応しているはずですが、48KHzモードでも44KHzで出力されているようです?と思ってMDX Player for iOSのソースを見てみたらAVAudioSessionのsetPreferredSampleRateが設定されていませんでした。直しておきましょう。

さて本題です。

MDXファイルを再生していると高音域がやけに耳に響くものがあります。もともとFM音源の音はそんなものだという考え方もありますが、とくにADPCMの音が響くと思います。そこで再生周波数の変化でデータがどのように違うか見てみましょう。iPhoneのイヤホン出力をAudacityというソフトで取り込んで(96KHz)、スペクトル表示にしてみました。

62KHz(実際の出力時には44KHzに変換されています)

62KHz

44KHz

44KHz

22KHz

22KHz

特に44KHzは本来の音の周波数以外のところにノイズが乗って全体的に水色がかった感じになっていると思います。62KHzで水色が多いのはADPCMが鳴っているところのようですドラムが鳴っているところで、ノイズを出力しているからこうなるようです。22KHzは44KHzよりもややノイズが少ないといえるでしょうか。ということで、ver 2.0では62.5KHzで聴くのが一番いいと思います。

 

このようなノイズの原因はおそらくGAMDX内蔵の周波数変換ルーチンの性能が良くないからと思われます(62KHzのときはAppleの周波数変換ルーチンが使われるのでノイズが乗らないのでしょう)。また、ADPCMはどうしてもGAMDXの内部で周波数変換されるので、高音域ノイズが乗ってしまうようです。

ということで、しばらくGAMDXを改造してAppleの周波数変換ルーチンを使うようにして(フリーの周波数変換ライブラリはいくつかあるのですが、使うのが面倒なのと巨大です(そして著作権の問題も。GPLみたいですが))、音質向上を図ってみます。まずはADPCMからのアップコンバートでノイズが乗らないことを目標にしてみます。

広告

MDX Player for iOS音質向上研究」への1件のフィードバック

  1. ピンバック: MDX音質向上研究:GAMDX改造 | 晴耕雨programming – Farm when it's sunny, programming when it rains

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中