[ Tags :: DSD ]
DSDネイティブ再生 DoPとDSD出力の比較(修正版)
2016/8/4
DSD再生の場合ドライバ−単体でみればWindowsのASIO2の方がlinuxのDoP方式より優れていたと思います。
linuxでのDSD再生音はWindows+ASIO2に比べて劣っている状態が続いていたが?
kernelとmpdにDSDネイティブ再生を可能とするパッチがリリースされ実用に
耐えるものとなりお陰で両者を比較しても差を感じる事は無くなったと思う。
linuxでDSDを再生する仕組み(DoP)としてDSD信号入力のUSB-DACの殆どのモデルは
DoP(DSD over PCM)という方式で信号を伝達している。
これはDSD信号を通常のPCMの枠を使って伝送するという方式。
本来PCM伝送のための枠組みを使って裏技的にDSD信号を通すために
24ビットデータの先頭に8ビットのMarkerを付加してDSDデータと判別できるようにしてから
ホスト側からストリーミングを開始ホスト側では付加されたMarkerを判断して信号処理を行い
アナログ出力へ変換します。Markerが付加されるので
データ量は1.5倍強に増える事となり且つデータが転送されるごとに
PCMかDSDかの判断を行なっているためCPU負荷が大きくなる等の問題があり
再生音に影を落とす事となっていた様に思います?!
(DSD64(2.8MHzのデータ)の場合の転送にはPCMの176.4kHzが必要となる)
DSD64再生時動作状況の例
--------------------------------------
カード 0: Combo384
access: RW_INTERLEAVED
format: S32_LE
subformat: STD
channels: 2
rate: 176400 (176400/1)
period_size: 22050
buffer_size: 88200
--------------------------------------
DoP方式で一般的なDSD信号(2.8MHzサンプリング)を通すには、PCM換算で24bit/176.4kHzの帯域幅が必要。
一方、同じハードウエア環境でDSDネイティブ再生を可能とするパッチを適応した場合は
--------------------------------------
カード 0: Combo384
access: RW_INTERLEAVED
format: DSD_U32_LE
subformat: STD
channels: 2
rate: 88200 (88200/1)
period_size: 11025
buffer_size: 44100
--------------------------------------
DSDフォーマットの直接出力となっているため88200kHzとなっている
(注1)※以下は先輩に教えていただきました(^_^;)Dop方式の再生が出る以前には
DSD再生はPCMに変換して聴いていました。当時はPCMに変換しないという意味で
Dop方式をDSDネイティブ再生と呼んでいました。
その後に独Steinberg Media TechnologiesがASIO2.1を開発し
DSDデーターをASIOドライバーを使って無変換で再生する事が出来るようになりました。
現在ではこの方式をDSDネイティブ再生と呼んでいる様です。
ASIOの使用はOSがWindows環境である事が必要でMACやLINUXで使えません。
linuxでのDSD再生音はWindows+ASIO2に比べて劣っている状態が続いていたが?
kernelとmpdにDSDネイティブ再生を可能とするパッチがリリースされ実用に
耐えるものとなりお陰で両者を比較しても差を感じる事は無くなったと思う。
linuxでDSDを再生する仕組み(DoP)としてDSD信号入力のUSB-DACの殆どのモデルは
DoP(DSD over PCM)という方式で信号を伝達している。
これはDSD信号を通常のPCMの枠を使って伝送するという方式。
本来PCM伝送のための枠組みを使って裏技的にDSD信号を通すために
24ビットデータの先頭に8ビットのMarkerを付加してDSDデータと判別できるようにしてから
ホスト側からストリーミングを開始ホスト側では付加されたMarkerを判断して信号処理を行い
アナログ出力へ変換します。Markerが付加されるので
データ量は1.5倍強に増える事となり且つデータが転送されるごとに
PCMかDSDかの判断を行なっているためCPU負荷が大きくなる等の問題があり
再生音に影を落とす事となっていた様に思います?!
(DSD64(2.8MHzのデータ)の場合の転送にはPCMの176.4kHzが必要となる)
DSD64再生時動作状況の例
--------------------------------------
カード 0: Combo384
access: RW_INTERLEAVED
format: S32_LE
subformat: STD
channels: 2
rate: 176400 (176400/1)
period_size: 22050
buffer_size: 88200
--------------------------------------
DoP方式で一般的なDSD信号(2.8MHzサンプリング)を通すには、PCM換算で24bit/176.4kHzの帯域幅が必要。
一方、同じハードウエア環境でDSDネイティブ再生を可能とするパッチを適応した場合は
--------------------------------------
カード 0: Combo384
access: RW_INTERLEAVED
format: DSD_U32_LE
subformat: STD
channels: 2
rate: 88200 (88200/1)
period_size: 11025
buffer_size: 44100
--------------------------------------
DSDフォーマットの直接出力となっているため88200kHzとなっている
(注1)※以下は先輩に教えていただきました(^_^;)Dop方式の再生が出る以前には
DSD再生はPCMに変換して聴いていました。当時はPCMに変換しないという意味で
Dop方式をDSDネイティブ再生と呼んでいました。
その後に独Steinberg Media TechnologiesがASIO2.1を開発し
DSDデーターをASIOドライバーを使って無変換で再生する事が出来るようになりました。
現在ではこの方式をDSDネイティブ再生と呼んでいる様です。
ASIOの使用はOSがWindows環境である事が必要でMACやLINUXで使えません。
— posted by くま at 11:12 am TrackBack [0]
Linux native DSD playback support
一言で言えば「LinuxでASIO 2.1/2.2ドライバーと同等の機能を実現させた」って事
凄いんですけど話題になってない何故?(^_^;)
参考リンク:https://github.com/lintweaker/xmos-native-dsdLink
Native DSD support for XMOS based devices
XMOS based USB DACs and converters can support native DSD playback using a 32-bit sample format.
DACs that support this feature expose it using a Alternate Setting on the USB interface.
On Windows systems this feature can be used with a ASIO 2.1/2.2 driver from the DAC manufacturer.
I have added a new DSD sample format to ALSA and the Linux kernel (DSD_U32_LE) to support it on Linux and added the needed quirks to support it for a few XMOS based USB DACs/boards.
Currently native DSD playback on Linux is supported for the following
XMOS based DACs/USB converters:
iFi Audio micro iDSD [max DSD512]
iFi Audio nano
iDSD [max DSD256, with latest 4.04 firmware]
DIYINHK USB to I2S/DSD converter
[max DSD128] ..more to follow
-------------------------------------------------------------------------------------------------------------------
XMOSベースのUSB_DACとDDC(コンバータ)は32ビットのサンプルフォーマットを使用してネイティブDSD再生をサポートすることができます。
この機能をサポートしているDACはUSBインターフェース上の代替設定を使用して聴く事を可能にします。
ASIO2.1/2.2ドライバーはWindowsシステム上でメーカーにより製造されたDACからで使用することができます。
私は、Linux上でそれをサポートするためにALSAとLinuxカーネル(DSD_U32_LE)に新しいDSDサンプルフォーマットを追加し、
いくつかのXMOSベースのUSB_DAC/DDCボードをサポートするために必要な癖を追加しました。
現在Linux上でネイティブDSD再生は以下のXMOSベースのDAC/USBコンバータでサポートされています。
凄いんですけど話題になってない何故?(^_^;)
参考リンク:https://github.com/lintweaker/xmos-native-dsdLink
Native DSD support for XMOS based devices
XMOS based USB DACs and converters can support native DSD playback using a 32-bit sample format.
DACs that support this feature expose it using a Alternate Setting on the USB interface.
On Windows systems this feature can be used with a ASIO 2.1/2.2 driver from the DAC manufacturer.
I have added a new DSD sample format to ALSA and the Linux kernel (DSD_U32_LE) to support it on Linux and added the needed quirks to support it for a few XMOS based USB DACs/boards.
Currently native DSD playback on Linux is supported for the following
XMOS based DACs/USB converters:
iFi Audio micro iDSD [max DSD512]
iFi Audio nano
iDSD [max DSD256, with latest 4.04 firmware]
DIYINHK USB to I2S/DSD converter
[max DSD128] ..more to follow
-------------------------------------------------------------------------------------------------------------------
XMOSベースのUSB_DACとDDC(コンバータ)は32ビットのサンプルフォーマットを使用してネイティブDSD再生をサポートすることができます。
この機能をサポートしているDACはUSBインターフェース上の代替設定を使用して聴く事を可能にします。
ASIO2.1/2.2ドライバーはWindowsシステム上でメーカーにより製造されたDACからで使用することができます。
私は、Linux上でそれをサポートするためにALSAとLinuxカーネル(DSD_U32_LE)に新しいDSDサンプルフォーマットを追加し、
いくつかのXMOSベースのUSB_DAC/DDCボードをサポートするために必要な癖を追加しました。
現在Linux上でネイティブDSD再生は以下のXMOSベースのDAC/USBコンバータでサポートされています。
— posted by くま at 11:09 am TrackBack [0]
mpd-0.19.17 install
$ uname -aLinux arch 4.6.2-rt5-ARCH #9 SMP Sun Jul 24 18:11:12 JST 2016 x86_64 GNU/Linux
$ patch -p1 < 0001-Extend-native-DSD-support-for-MPD-0.19.16.patch
$ patch -p1 < 0008-native-DSD-u32le.patch
$ ./configure --prefix=/usr/local --enable-soxr --disable-ipv6 --enable-libmpdclient --enable-nfs --enable-smbclient --enable-httpd-output --enable-httpd-output --disable-largefile --enable-mad --disable-un --enable-shout --enable-werror --enable-soundcloud --enable-mikmod --enable-pipe-output --enable-recorder-output --enable-shout --enable-vorbis --enable-database
$ make -j 3
# make install
$ patch -p1 < 0001-Extend-native-DSD-support-for-MPD-0.19.16.patch
$ patch -p1 < 0008-native-DSD-u32le.patch
$ ./configure --prefix=/usr/local --enable-soxr --disable-ipv6 --enable-libmpdclient --enable-nfs --enable-smbclient --enable-httpd-output --enable-httpd-output --disable-largefile --enable-mad --disable-un --enable-shout --enable-werror --enable-soundcloud --enable-mikmod --enable-pipe-output --enable-recorder-output --enable-shout --enable-vorbis --enable-database
$ make -j 3
# make install
— posted by くま at 11:05 am TrackBack [0]
Comments