home( Japanese,  English)  articles  categories  archives (Japanese,  English)  profile (Japanese,  English)  bulletin_board  

Search powered by unicode msearch
>> search options

gccの最適化オプション

前回、symphonic-mpdを紹介しましたが、このソフトの特徴の一つは「ラズパイ3向けの最適化オプションでビルド」です。以下、ご本家トップページから引用します。

特徴として24項目あるのですが、そのうち5項目が最適化オプションの使用です。また、初版公開後に WAV/ALAC/AAC/mp3コーデックの再ビルドされた修正も試験公開されています。
というわけで、「どんな最適化をされているのかな」と興味をもって、サイトを拝見していました。

同じタイミングでネット仲間から、

lightmpdのbbb(bbg)向けの公開されているbuildrootのソースを見ていただくと
わかるのですが、/package/mpd-native-dsd/mpd-native-dsd.mkでは、CFLAGS,
CCFLAGSが設定されているんですよね。buildrootでシステム全体に最適化オプション
をかける場合、make menuconfigで、Toolchain-->Target Optimizationsのところに
CFLAGSを設定したらいいはずなんですが,これをやりますとビルドが通らないんです。
digififanさんもここには、-O2しか入力されてません。

そこで、音楽再生に使われるものだけ最適化オプションをかけてビルドしてみたところ
あっさりビルドは通りました。そして、出てきた音は、lightmpd1.04では聴けなかった音
でした。これに感動してしまったため音楽を聴きなおすことに忙しくなり、、、というのが
私の近況です。パパリウスさんもalsa-libなどを最適化オプションでビルドなんてうたって
ますので、こういう基本的なことを失念していたことは、恥ずかしいの一言です。

というメールを頂戴しました。

これは試してみないわけにはいきません。というわけで、「arch linux でUPnP」は一回お休みして、脱線します。前回も、実質、脱線ですから、脱線続き。どこにたどり着くことやらですが、まあ仕方がないですね(^^;;;。


まず、情報のありか。

というところですかね。他にもググればいくらでも情報は出てきますが、キリがないのでこの位にします。
ご本家マニュアル(一番目のリンク)を見ただけで、スイスイ出来ちゃうという方は相手にしないことにして(^^;;;、リンク先の解説です。
二つ目の「GCC compiler optimization for ARM-based systems」というページがコンパクトにまとまっていますので、お勧め。三番目の「Best Compilation Flags for RPi3 on Raspbian 32 bit?」は Raspbian掲示板サイトのやりとりですが、実践的なので、役に立ちます。
四番目と五番目のリンクはarm社が提供するcコンパイラのオプションの日本語解説ページです。六番目は同じサイトの内容をPDFファイルとしてまとめたものです。htmlページは読みやすいとはいいづらいので、htmlページでどこに情報があるか確認してPDFファイルで読むという方法をお勧めします。
七つ目の「ARM FPU (VFP/NEON) の種類」はARMアーキテクチュアマシンの FPU構成について綺麗にまとめたサイトです。目を通しておかれるとよいと思います。八番目の「SIMDの組み込み関数のことはじめ」はSIMD命令(amdの場合はneon)の最適化に関する解説です。
最後のリンク先はたかじんさんのサイトの記事ですが、以前にも紹介したことのあるmpdビルドの最適化オプションが記載されています。

ここでは、僕のネット仲間が使った最適化パラメータとたかじんさんの最適化パラメータから出発することにします。まず二つを紹介します。

僕のネット仲間が使った最適化パラメータ。NanoPi-NEO2用です。ハードは異なりますが、内容的にはr-pi3と同じということになります。

CFLAGS="-O2 -march=armv8-a -mtune=cortex-a53 -ffast-math" CXXFLAGS="${CFLAGS}"

たかじんさんの最適化パラメータです。r-pi3専用です。

CFLAGS="-O2 -march=armv8-a -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard" \
CXXFLAGS="-O2 -march=armv8-a -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard"

違いは『-ffast-math』と『-mfpu=neon-fp-armv8 -mfloat-abi=hard』です。
『-ffast-math』については四番目のリンク先に

このオプションを設定することで、強力な浮動小数点の最適化を実行するようコンパイラに指示します。
その結果、ISO C および C++ 標準に対して完全には準拠しない動作となります。ただし、数値的に頑健な
浮動小数点プログラムは正しく動作します。

とあります。「数値的に頑健な」とはナンジャホイですね。
-mfloat-abiについては、三番目のリンク先で

浮動小数点演算にハードウェア命令を使用するか、ソフトウェアライブラリ関数を使用するかを指定し、
浮動小数点パラメータおよび戻り値を渡すために使用するレジスタを指定します。

とあり、soft、softfp、hard が指定できます。r-pi3は hard を指定することができます。
-mfpuについては、同じサイトで

ターゲットの FPU アーキテクチャを指定します。これはターゲットで使用できる浮動小数点ハードウェアです。

とあり、armv8アーキテクチャを指定することになります。

まとめると、-ffast-math だけ指定すれば問題なさそうですが、よく分からない。とりあえず、全部入りにして試してみました。

./configure CFLAGS="-O2 -march=armv8-a -mtune=cortex-a53 -ffast-math -mfpu=neon-fp-armv8 -mfloat-abi=hard" CXXFLAGS="${CFLAGS}"

ビルドは問題なく通りましたので、これでいけそうです。
さて、次に、気になるのは、三番目のリンクでやりとりされている内容です。
スレッドを起こした MikeMelbourne さんが一番目(gccご本家のマニュアル)のリンクから拾いだしているのは

-O2 -Otime
-marm
-mabi=aapcs-linux
-march=armv8-a+crc
-mfloat-abi=hard
-mfpu=neon-fp-armv8 #other options are 'fp-armv8', 'neon-fp-armv8', and 'crypto-neon-fp-armv8'
-funsafe-math-optimizations
-mhard-float
-mlittle-endian
-mtls-dialect=gnu2 #or just gnu if gnu2 doesn't work
-mtune=cortex-a53
-munaligned-access
-mvectorize-with-neon-quad
#-ftree-vectorize (removed since Autovectorizing (-ftree-vectorize) for NEON gives between zero and negligible performance gains)

それぞれのオプションについてはご本家のインデックス(Option Index)から参照することもできます。+crcとcrypto-については MikeMelbourne さんが示しているリンク先(Raspberry Pi 3 (ARMv8/Aarch32, with CRC, without Crypto)))に記述があり、また、日本語ではちょっと古いですがここ(gcc 4.9でARMv8の暗号化命令を使うときのオプションメモ)に情報があります。
問題はこれらのリンク先を読んでみても、どれが必要でどれが不要なのかよく分からないことです(^^;;;。

試してみるしかないですね。
まず、minidlnaを使って確認します。途中のプロセスは省略して、結論となる結果だけ示しておきます。
オプションが無指定の時の結果です。

[root@rpiarch minidlna-1.1.6-dsd]# ls -l /usr/bin/minidlnad
-rwxr-xr-x 1 root root 255352 Jun  1 08:20 /usr/bin/minidlnad

ここまでは、効果がありました。

[root@rpiarch minidlna-1.1.6-dsd]# ./configure CFLAGS="-O2 -march=armv8-a -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -ffast-math -ftree-vectorize" CXXFLAGS="${CFLAGS}"
[root@rpiarch minidlna-1.1.6-dsd]# ls -l minidlnad
-rwxr-xr-x 1 root root 211444 Oct 10 12:48 minidlnad

あとは変化なしです。

[root@rpiarch minidlna-1.1.6-dsd]# ./configure CFLAGS="-O2 -marm -mabi=aapcs-linux -march=armv8-a+crc -mtune=cortex-a53 -mfpu=crypto-neon-fp-armv8 -mfloat-abi=hard -mhard-float -ffast-math -ftree-vectorize -funsafe-math-optimizations -mlittle-endian -munaligned-access -mvectorize-with-neon-quad -mtls-dialect=gnu2" CXXFLAGS="${CFLAGS}"
[root@rpiarch minidlna-1.1.6-dsd]# ls -l minidlnad
-rwxr-xr-x 1 root root 211444 Oct 10 11:51 minidlnad


mpdでも確認してみることにしました。

CFLAGS="-O2 -march=armv8-a -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -ffast-math -ftree-vectorize -funsafe-math-optimizations" CXXFLAGS="${CFLAGS}"
[root@rpiarch mpd-0.20.9]# ls -l /usr/local/bin/mpd
-rwxr-xr-x 1 root root 2864012 Oct  6 05:34 /usr/local/bin/mpd

一行目はmyconfigの最終行です。

CFLAGS="-O2 -march=armv8-a+crc -mtune=cortex-a53 -mfpu=crypto-neon-fp-armv8 -mfloat-abi=hard -ffast-math -ftree-vectorize -funsafe-math-optimizations" CXXFLAGS="${CFLAGS}"
[root@rpiarch mpd-0.20.9]# ls -l src/mpd
-rwxr-xr-x 1 root root 2864012 Oct 10 23:13 src/mpd

+crcとcrypto-はmpdでも関係ないようですね。次に全部入りで試してみます。

CFLAGS="-O2 -marm -mabi=aapcs-linux -march=armv8-a+crc -mtune=cortex-a53 -mfpu=crypto-neon-fp-armv8 -mfloat-abi=hard -mhard-float -ffast-math -ftree-vectorize -funsafe-math-optimizations -mlittle-endian -munaligned-access -mvectorize-with-neon-quad -mtls-dialect=gnu2" CXXFLAGS="${CFLAGS}"
[root@rpiarch mpd-0.20.9]# ls -l src/mpd
-rwxr-xr-x 1 root root 2864012 Oct 10 23:56 src/mpd

minidlnaと同じ結果です。+crcとcrypto-は MikeMelbourne さんがこだわっていますが、関係ないようです。
従って、以下の通り環境変数を設定すれば、よさそうです。

export OPT="-O2 -march=armv8-a -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -ffast-math -ftree-vectorize -funsafe-math-optimizations"

以下、ビルドの仕方。./configure のあるものは、たいていそこで設定できるはずです。ないものはMakefileを弄る方針でいきます。何をビルドするかも悩ましいですが、

を対象にしました。リンク先はダウンロードに関連するページです。mp3対応が抜けていますが、僕は使わないので、パス。

Alsalib

wget ftp://ftp.alsa-project.org/pub/lib/alsa-lib-1.1.4.1.tar.bz2
tar xf alsa-lib-1.1.4.1.tar.bz2
cd alsa-lib-1.1.4.1
./configure CFLAGS="${OPT}" CXXFLAGS="${OPT}"
make && make install

Flac

git clone https://git.xiph.org/flac.git
cd flac/
./autogen.sh
./configure CFLAGS="${OPT}" CXXFLAGS="${OPT}"
make && make install

audiofile。今のところ –disable-docs しないとビルドは通りません。

git clone --depth 1 https://github.com/mpruett/audiofile.git
cd audiofile
./autogen.sh
./configure --disable-docs CFLAGS="${OPT}" CXXFLAGS="${OPT}"
make && make install

libcurl

git clone --depth 1 https://github.com/curl/curl.git
cd curl
./buildconf
./configure CFLAGS="${OPT}" CXXFLAGS="${OPT}"
make && make install

mpd、upmpdcli、polipoもビルドします。polipoはconfigureが無いのでMakefileを修正して対応します。

cd polipo
export OPT="-march=armv8-a -mtune=cortex-a53 -mfpu=neon-fp-armv8 -mfloat-abi=hard -ffast-math -ftree-vectorize -funsafe-math-optimizations"
nano Makefile
CDEBUGFLAGS = -O2 -Wall -fno-strict-aliasing ${OPT}


効果の程はなかなかです。最適化オプションなしの状態と比較して、ヴェールを一枚剥いだという感じになります。r-pi3用の電源を良質なものに変えるのと同じような効果がありますね。これほどの効果があるOSのチューニングは初めて経験しました。
簡単に試せるので、お勧めします。

p.s. 私事ですが、一ヶ月位インタネットが出来ない環境になりますので、サイトの更新を中断します。また掲示板へのレスポンスも出来なくなります。ご了解よろしくお願いします。

(PC_Audio)   2017/10/21

コメントする

arch linux でUPnP(4)


例によって脱線。

symphonic-mpdという rpi3-i2s接続専用の新しい音楽再生ディストリビューションを試してみました。内容についてはたかじんさんが適切に紹介されていますので、そちらを参照して下さい。

「『raspbian、nas接続、webコントロール』という三重苦(^^;;;のなかでも、作り込めば、これだけ素晴らしい音を出せるがでるのだなぁ」と感嘆しました。名前の通りコンサートホールの空気感がよく出ていますね。「VOLUMIOやMOODEの音じゃ満足できない? ラズパイ3には symphonic-mpd があるじゃない!」と作者が豪語されるだけのことはあると思いました。
ちょっと残念なのはi2s専用だということ。ガルバティック変換型フィルターを使えば、usb接続でもi2sに匹敵する音は出せますので、是非とも usb出力に対応してもらいたいです。
ご本家のサイトのトップページに「日本語」というボタンがあり、今のところ押しても無効なようです。十分にグローバル対応出来るソフトだと思います。usb出力も可能にして、海外に打って出てほしいですね。



このソフトrpi3専用ということですが、rpi2で動かすことができます。実は試聴はその状態で行いました。僕の rpi3は頑丈なオーディオ専用箱に入っていてi2s用の基板(TerraBerry)を付けることが困難だったので。
rpi2で動かすためには/boot/config.txtを以下の通り変更する必要があります。

# over clock
#force_turbo=1
#arm_freq=1440
arm_freq=960

また、mpd.confはディフォルトの状態ではdsd再生に対応していません。こちらも手作業での追加修正が必要です。
さて、raspbian lite でもチューニング次第でこれだけの音が出せるとわかったので、『arch linux、dlna接続、luminコントロールポイント』で同じようにチューニングしたらどうなるか、試してみようと思いました。何をチューニングしたかは symphonic-mpd ご本家のサイトに記述があります。関係するものを取り出すと、

というところですね。簡単に出来そうなものは試してみるつもりです。成果の程はこのシリーズの中でご紹介したいと思います。

脱線ついでに(^^;;;、関連しますので、前回のカーネルのビルドで紹介を省略していたチューニングについて解説します。

不要な機能の削除

ネットワーク関連

[*] Networking support  ---> 
           --- Networking support                                                          
                 Networking options  --->                                                  
           [ ]   Amateur Radio support  ----                                               
           < >   CAN bus subsystem support  ----                                           
           < >   IrDA (infrared) subsystem support  ----                                   
           < >   Bluetooth subsystem support  ----                                         
           < >   RxRPC session sockets                                                     
           < >   KCM sockets                                                               
           [*]   Wireless  --->                                                            
             --- Wireless                                                                  
           < >   cfg80211 - wireless configuration API                                    
                 *** CFG80211 needs to be enabled for MAC80211 ***                        
           < >   WiMAX Wireless Broadband support  ----                                    
           < >   RF switch subsystem support  ----                                         
           < >   Plan 9 Resource Sharing Support (9P2000)  ----                            
           < >   CAIF support  ----                                                        
           < >   Ceph core library                                                         
           < >   NFC subsystem support  ----                                               
           < >   Packet-sampling netlink channel  ----                                     
           < >   Inter-FE based on IETF ForCES InterFE LFB  ----                           
           [ ]   Network light weight tunnels                                              
           < >   Network physical/parent device Netlink interface                          

要するに Networking options を除いて全て削除しています。Networking optionsはディフォルトのままです。
Bluetooth、Wireless も当然省かれます。

ドライバの削除

Device Drivers  --->
               Generic Driver Options  --->                                                
               Bus devices  --->                                                           
           <M> Connector - unified userspace <-> kernelspace linker  ----                  
           <M> Memory Technology Device (MTD) support  --->                                
           -*- Device Tree and Open Firmware support  --->                                 
           < > Parallel port support  ----                                                 
           [*] Block devices  --->                                                         
           < > NVM Express over Fabrics FC host driver                                     
           < > NVMe Target support                                                         
               Misc devices  --->                                                          
               SCSI device support  --->                                                   
                  < > RAID Transport Class
                  < > SCSI device support
           < > Serial ATA and Parallel ATA drivers (libata)  ----                          
           [ ] Multiple devices driver support (RAID and LVM)  ----                        
           [*] Network device support  --->                                                
               <*>   USB Network Adapters  --->                                                
               あった方がよいものをモジュール登録
               [ ]   Wireless LAN  ----    
               < >   IEEE 802.15.4 drivers  ---- 
               [ ]   Wan interfaces support  ----
               以外はディフォルトのまま

Generic Driver Options はディフォルトのままです。SCSI device support、Serial ATA and Parallel ATA drivers (libata)は削除しています。従って、USB HDは認識しません。

           [ ] Open-Channel SSD target support  ----                                       
               Input device support  --->                                                  
               Character devices  --->                                                     
               I2C support  --->                                                           
           [*] SPI support  --->                                                           
           < > SPMI support  ----                                                          
           < > HSI support  ----                                                           
               PPS support  --->                                                           
               PTP clock support  --->                                                     
               Pin controllers  --->                                                       
           -*- GPIO Support  --->                                                          
           < > Dallas's 1-wire support  ----                                               
           [ ] Adaptive Voltage Scaling class support  ----                                
           [*] Board level reset or power off  --->                                        
           -*- Power supply class support  --->                                            
           <M> Hardware Monitoring support  --->                                           
           <*> Generic Thermal sysfs driver  --->                                          
           [*] Watchdog Timer Support  --->                                                
               Sonics Silicon Backplane  --->                                              
               Broadcom specific AMBA  --->                                                
               Multifunction device drivers  --->                                          
           [*] Voltage and Current Regulator Support  --->                                 
           < > Multimedia support  ----                                                    
               Graphics support  --->                                                      
                   Frame buffer Devices  --->
                       < > OpenCores VGA/LCD core 2.0 framebuffer support
           <*> Sound card support  --->                                                    
               --- Sound card support
               <*>   Advanced Linux Sound Architecture  --->
                    --- Advanced Linux Sound Architecture                           
                    < >   Sequencer support                                       
                    < >   OSS Mixer API                                           
                    < >   OSS PCM (digital audio) API                               
                    [ ]   PCM timer interface                                     
                    <*>   HR-timer backend support                                  
                    [ ]   Dynamic device file minor numbers                         
                    [ ]   Support old ALSA API                                    
                    [*]   Sound Proc FS Support                                   
                    [*]     Verbose procfs contents                                 
                    [ ]   Verbose printk                                          
                    [ ]   Debug                                                 
                    [ ]   Generic sound devices  ----                               
                          HD-Audio  ----                                          
                    <*>   HR-timer backend support                                  
                    [ ]   Dynamic device file minor numbers                         
                    [ ]   Support old ALSA API                                    
                    [*]   Sound Proc FS Support                                   
                    [*]     Verbose procfs contents                                 
                    [ ]   Verbose printk                                          
                    [ ]   Debug                                                 
                    [ ]   Generic sound devices  ----                               
                          HD-Audio  ----                                          
                    (64)  Pre-allocated buffer size for HD-audio driver               
                    [ ]   ARM sound devices  ----                                 
                    [ ]   SPI sound devices  ----                                 
                    [*]   USB sound devices  --->                                 
                    <M>   ALSA for SoC audio support  --->                          
               < >   Open Sound System (DEPRECATED)  ----                                      
               HID support  --->                                                           
           [*] USB support  --->                                                           
               [ ]   OTG support
               < >   Inventra Highspeed Dual Role Controller (TI, ADI, AW, ...)
               < >   USB Gadget Support  --->
           < > Ultra Wideband devices  ----                                                

不要なものをだいぶ残しているような気がするが、そのままにしてあります。Multimedia supportのみ完全削除。

USB support の OTG supportは排除しました。理由は r-piのUSBの実力に限界があるので、OTG を削除した方が音には良いと考えたからです。異論もあるかと思いますが、プレーヤとして使う場合はethnet回線があれば、adapterとは繋がるので、usbは音源接続用に専用化すべし考えました。

その他、大幅にいじったのは Graphics support(HDMIの削除)、Sound card support(不要機能の削除とi2sモジュールの追加)、USB support(otg機能の追加) です。

           <*> MMC/SD/SDIO card support  --->                                              
           < > Sony MemoryStick card support  ----                                         
           -*- LED Support  --->                                                           
           [ ] Accessibility support  ----                                                 
           [ ] EDAC (Error Detection And Correction) reporting  ----                       
           [*] Real Time Clock  --->                                                       
           [*] DMA Engine support  --->                                                    
               DMABUF options  --->                                                        
           [ ] Auxiliary Display support  ----                                             
           <M> Userspace I/O drivers  --->                                                 
           [ ] Virtualization drivers  ----                                                
               Virtio drivers  --->                                                        
               Microsoft Hyper-V guest support  ----                                       
           [*] Staging drivers  --->                                                       
           [ ] Platform support for Goldfish virtual devices  ----                         
           [ ] Platform support for Chrome hardware  ----                                  
               Common Clock Framework  --->                                                
               Hardware Spinlock drivers  ----                                             
               Clock Source drivers  --->                                                  
           [ ] Mailbox Hardware Support  --->                                              
           [ ] IOMMU Hardware Support  ----                                                
               Remoteproc drivers  --->                                                    
               Rpmsg drivers  ----                                                         
               SOC (System On Chip) specific Drivers  --->                                 
           [ ] Generic Dynamic Voltage and Frequency Scaling (DVFS) support  ----          
           <M> External Connector Class (extcon) support  --->                             
           [ ] Memory Controller drivers  ----                                             
           <M> Industrial I/O support  --->                                                
           [ ] Platform support for Goldfish virtual devices  ----                         
           [ ] Platform support for Chrome hardware  ----                                  
               Common Clock Framework  --->                                                
               Hardware Spinlock drivers  ----                                             
               Clock Source drivers  --->                                                  
           [*] Mailbox Hardware Support  --->                                              
           [ ] IOMMU Hardware Support  ----                                                
               Remoteproc drivers  --->                                                    
               Rpmsg drivers  ----                                                         
               SOC (System On Chip) specific Drivers  --->                                 
           [ ] Generic Dynamic Voltage and Frequency Scaling (DVFS) support  ----          
           <M> External Connector Class (extcon) support  --->                             
           [ ] Memory Controller drivers  ----                                             
           <M> Industrial I/O support  --->                                                
           [*] Pulse-Width Modulation (PWM) Support  --->                                  
           < > IndustryPack bus support  ----                                              
           [ ] Reset Controller Support  ----                                              
           < > FMC support  ----                                                           
               PHY Subsystem  --->                                                         
           [ ] Generic powercap sysfs driver  ----                                         
           < > MCB support  ----                                                           
               Performance monitor support  --->                                           
           [ ] Reliability, Availability and Serviceability (RAS) features  ----           
               Android  --->                                                               
           {*} NVMEM Support  ----                                                         
           < > System Trace Module devices                                                 
           < > Intel(R) Trace Hub controller                                               
               FPGA Configuration Support  --->                                            
               FSI support  --->                                                           

どこをどういじったか覚えていないのですが(^^;;;、削除したものがいくつかあります。 symphonic mpdのconfigをチェックしましたが、raspbian lite ディフォルトのままで、不要なモジュールをコンフィグで外すという方法はとっていませんね。ブート時のconfig.txtとrc.localで使わない機能を宣言するという方法をとっています。menuconfigで行う方法との音への違いはよくわかりませんね。

この他のパラメータはほぼディフォルトのままです。File systems など弄れそうな部分はあるのですが、とりあえず保留しています。

menuconfigからの引用だらけとなりましたが、ここまで来たら「毒食わば皿まで」、i2s接続に関連する ALSA for SoC audio support をどうしているか引用して、終わりにします。

         <M>   AMD Audio Coprocessor support                                 
         <M>   SoC Audio for the Atmel System-on-Chip                        
         <M>   SoC Audio support for the Broadcom BCM2835 I2S module         
         <M>   Support for Google voiceHAT soundcard                         
         <M>   Support for HifiBerry DAC                                     
         <M>   Support for HifiBerry DAC+                                    
         <M>   Support for HifiBerry Digi                                    
         <M>   Support for the HifiBerry Amp                                 
         <M>   Support for Cirrus Logic Audio Card                        
         <M>   Support for RPi-DAC                                           
         <M>   Support for Rpi-PROTO                                         
         <M>   Support for JustBoom DAC                                      
         <M>   Support for JustBoom Digi                                     
         <M>   Support for IQaudIO-DAC                                       
         <M>   Support for IQAudIO Digi                                      
         <M>   Support for RaspiDAC Rev.3x                                   
         <M>   Support for ADAU1977 ADC                                      
         <M>   Support for audioinjector.net Pi add on soundcard             
         <M>   Support for audioinjector.net Octo channel (Hat) soundcard    
         <M>   Support for Red Rocks Audio DigiDAC1                          
         <M>   Support for Dion Audio LOCO DAC-AMP                           
         <M>   Support for Dion Audio LOCO-V2 DAC-AMP                        
         <M>   Support for Allo Piano DAC                                    
         <M>   Support for Allo Piano DAC Plus                               
         <M>   Support for Fe-Pi-Audio                                       
         <M>   Support for Allo Boss DAC                                     
         <M>   Support for Allo DigiOne                                      
         <M>   Support for Blokas Labs pisound                               
         <M>   Synopsys I2S Device Driver                                    
         < >     PCM PIO extension for I2S driver                            
               SoC Audio for Freescale CPUs  --->                            
         [*]   Audio support for Imagination Technologies designs            
         <M>     Imagination I2S Input Device Driver                         
         <M>     Imagination I2S Output Device Driver                        
         <M>     Imagination Parallel Output Device Driver                   
         <M>     Imagination SPDIF Input Device Driver                       
         <M>     Imagination SPDIF Output Device Driver                      
         <M>     Support for Pistachio SoC Internal DAC Driver               
         <M>   XTFPGA I2S master                                             
         <M>     Imagination I2S Input Device Driver                         
         <M>     Imagination I2S Output Device Driver                        
         <M>     Imagination Parallel Output Device Driver                   
         <M>     Imagination SPDIF Input Device Driver                       
         <M>     Imagination SPDIF Output Device Driver                      
         <M>     Support for Pistachio SoC Internal DAC Driver               
         <M>   XTFPGA I2S master                                             
               CODEC drivers  --->                                           
                    <M> Build generic ASoC AC97 CODEC driver                            
                    <M> Analog Devices ADAU1701 CODEC                                   
                    <M> Analog Devices ADAU7002 Stereo PDM-to-I2S/TDM Converter         
                    <M> AKM AK4104 CODEC                                                
                    <M> AKM AK4554 CODEC                                                
                    <M> AKM AK4613 CODEC                                                
                    <M> AKM AK4642 CODEC                                                
                    <M> AKM AK5638 CODEC                                                
                    <M> Realtek ALC5623 CODEC                                           
                    <M> Dummy BT SCO codec driver                                       
                    <M> Cirrus Logic CS35L32 CODEC                                      
                    <M> Cirrus Logic CS35L33 CODEC                                      
                    < > Cirrus Logic CS35L34 CODEC                                      
                    < > Cirrus Logic CS42L42 CODEC                                      
                    <M> Cirrus Logic CS42L51 CODEC (I2C)                                
                    <M> Cirrus Logic CS42L52 CODEC                                      
                    <M> Cirrus Logic CS42L56 CODEC                                      
                    <M> Cirrus Logic CS42L73 CODEC                                      
                    <M> Cirrus Logic CS4265 CODEC                                       
                    <M> Cirrus Logic CS4270 CODEC                                       
                    <M> Cirrus Logic CS4271 CODEC (I2C)                                 
                    <M> Cirrus Logic CS4271 CODEC (SPI)                                 
                    -M- Cirrus Logic CS42448/CS42888 CODEC (I2C)                        
                    <M> Cirrus Logic CS4349 CODEC                                       
                    <M> Cirrus Logic CS53L30 CODEC                                      
                    < > Everest Semi ES8328 CODEC (I2C)                                 
                    < > Everest Semi ES8328 CODEC (SPI)                                 
                    <M> GTM601 UMTS modem audio codec                                   
                    <M> InvenSense ICS43432 I2S microphone codec                        
                    <M> Inno codec driver for RK3036 SoC                                
                    <M> Maxim MAX98504 speaker amplifier                                
                    <M> Maxim MAX9860 Mono Audio Voice Codec                            
                    < > Qualcomm MSM8916 WCD DIGITAL Codec                              
                    <M> Texas Instruments PCM1681 CODEC                                 
                    <M> Texas Instruments PCM179X CODEC (I2C)                           
                    <M> Texas Instruments PCM179X CODEC (SPI)                           
                    <M> Texas Instruments PCM3168A CODEC - I2C                          
                    <M> Texas Instruments PCM3168A CODEC - SPI                          
                    -M- Texas Instruments PCM512x CODECs - I2C                          
                    <M> Texas Instruments PCM512x CODECs - SPI                          
                    <M> Realtek RT5616 CODEC                                            
                    <M> Realtek ALC5631/RT5631 CODEC                                    
                    -M- Freescale SGTL5000 CODEC                                        
                    <M> SiRF SoC internal audio codec                                   
                    <M> S/PDIF CODEC                                                    
                    <M> Analog Devices SSM2602 CODEC - SPI                              
                    <M> Analog Devices SSM2602 CODEC - I2C                              
                    <M> Analog Devices ssm4567 amplifier driver support                 
                    <M> STA326, STA328 and STA329 speaker amplifier                     
                    <M> STA350 speaker amplifier                                        
                    <M> codec Audio support for STI SAS codec                           
                    <M> Texas Instruments TAS2552 Mono Audio amplifier                  
                    <M> Texas Instruments TAS5086 speaker amplifier                     
                    <M> Texas Instruments TAS5711/TAS5717/TAS5719/TAS5721 power ampli   
                    <M> Texas Instruments TAS5720 Mono Audio amplifier                  
                    <M> NXP Semiconductors TFA9879 amplifier                            
                    <M> Texas Instruments TLV320AIC23 audio CODEC - I2C                 
                    <M> Texas Instruments TLV320AIC23 audio CODEC - SPI                 
                    <M> Texas Instruments TLV320AIC31xx CODECs                          
                    <M> Texas Instruments TLV320AIC3x CODECs                             
                    <M> TI Headset/Mic detect and keypress chip                         
                    <M> Wolfson Microelectronics WM8510 CODEC                           
                    <M> Wolfson Microelectronics WM8523 DAC                             
                    <M> Wolfson Microelectronics WM8580 and WM8581 CODECs               
                    <M> Wolfson Microelectronics WM8711 CODEC                           
                    <M> Wolfson Microelectronics WM8728 DAC                             
                    -M- Wolfson Microelectronics WM8731 CODEC                           
                    <M> Wolfson Microelectronics WM8737 ADC                             
                    -M- Wolfson Microelectronics WM8737 DAC                             
                    <M> Wolfson Microelectronics WM8750 CODEC                           
                    <M> Wolfson Microelectronics WM8753 CODEC                           
                    <M> Wolfson Microelectronics WM8770 CODEC                           
                    <M> Wolfson Microelectronics WM8776 CODEC                           
                    <M> Wolfson Microelectronics WM8804 S/PDIF transceiver I2C          
                    <M> Wolfson Microelectronics WM8804 S/PDIF transceiver SPI          
                    <M> Wolfson Microelectronics WM8903 CODEC                           
                    <M> Wolfson Microelectronics WM8960 CODEC                           
                    <M> Wolfson Microelectronics WM8962 CODEC                           
                    <M> Wolfson Microelectronics WM8974 codec                           
                    <M> Wolfson Microelectronics WM8978 codec                           
                    <M> Wolfson Microelectronics WM8985 and WM8758 codec driver         
                    < > Nuvoton Technology Corporation NAU85L40 CODEC                   
                    <M> Nuvoton Technology Corporation NAU88C10 CODEC                   
                    -M- Texas Instruments TPA6130A2 headphone amplifier                 
         <M>   ASoC Simple sound card support                                
         <M>   ASoC Simple SCU sound card support                            
         <M>     Imagination I2S Input Device Driver                         
         <M>     Imagination I2S Output Device Driver                        
         <M>     Imagination Parallel Output Device Driver                   
         <M>     Imagination SPDIF Input Device Driver                       
         <M>     Imagination SPDIF Output Device Driver                      
         <M>     Support for Pistachio SoC Internal DAC Driver               
         <M>   XTFPGA I2S master                                             
               CODEC drivers  --->                                           
         <M>   ASoC Simple sound card support                                
         <M>   ASoC Simple SCU sound card support                            

全てモジュールとして登録しています。これによってメモリが圧迫されることはないだろうという判断です。

(PC_Audio)   2017/10/14

コメントする

arch linux でUPnP(3)


続いて、カーネルビルドですが、その前に例によって脱線。何故、UPnP化にこだわるかについて。

理由は単純で「DLNAの方がNASより、音がよく、操作性もいい」からです。

音につては「オンメモリ再生の方が優位だ」という意見があるかもしれません。その通りだと思いますが 、polipoを使って、実質オンメモリ化すれば、差はありません。従って、操作性を犠牲にしたオンメモリ再生にこだわる理由はないでしょう。

UPnPのコントロールポイントの操作性については否定的な意見が多いようですが、僕は慣れの問題だろうと思っています。旧来のnas接続方式のクライアントの操作性には、優秀なものがあることは認めますが、滅びゆくものにこだわってもしかたがないでしょう。Windows、IOSなどで動くクライアイント数はどんどん減っているという状況ですから、シーラカンス化しないためにはさっさと切り替える一手だと思います。新しいクライアントが登場しない理由は、WebGUIを使ったクライアントが主流になってきたためですが、こちらの操作性は確実にDLNAコントロールポイントより悪いですね。
操作性の中には設定の容易性があります。この点ではUPnPはその名前(Universal Plug and Play)の通りで、圧倒的に優位だと思います。クライアント方式のソフトもWEB方式のソフトのMPDのDB設定、ネットワーク設定の難しさをカバーするためそれなりの工夫をしていますが、DHCPを使って、コントロールポイントから名前だけでサーバとレンダラーを選択できる操作性には、従来のクライアント方式やWEB方式のものは敵わないと思います。

という訳で、UPnP化にこだわって、カーネルのビルドです。
modprobe + zcat でconfigを取り出す方法は4.9.30番台のころの arch linux ではうまくいかなったのですが、40番台ではOKのようですね。このあたりがローリングリリース arch linuxの本領発揮ですね(^^;;;。
カーネルのビルドについては第1回にやり方を紹介していますので、整理してコマンドだけ再掲します。

pacman -S bc

modprobe configs
zcat /proc/config.gz > ../config-this-machine

[root@rpiarch ~]# uname -a
Linux rpiarch 4.9.40-rt30-v7-volpre1000CFQ-play+ #12 SMP Thu Aug 24 09:25:18 UTC 2017 armv7l GNU/Linux

git clone --depth 1 https://github.com/raspberrypi/linux.git -b rpi-4.11.y
git clone --depth 1 https://github.com/raspberrypi/firmware.git
wget https://www.kernel.org/pub/linux/kernel/projects/rt/4.11/patch-4.11.12-rt14.patch.gz
cd linux
cp ../firmware/extra/Module7.symvers Module.symvers
gzip -dc ../patch-4.11.12-rt14.patch.gz | patch -p1

make menuconfig
make -j4 zImage modules dtbs
make modules_install
cp arch/arm/boot/dts/*.dtb /boot/
cp arch/arm/boot/dts/overlays/*.dtb /boot/overlays/
scripts/mkknlimg arch/arm/boot/zImage /boot/kernel7.img

ところで、menuconfigで BCM2835 VCHIQ というキーワードに関連するモジュールを削除するとビルドエラーになるのですが、何故ですかね。BCM2835_VCHIQというのは

    Device Drivers  --->
      [*] Staging drivers  --->
        <*>   Videocore VCHIQ

で指定されるBroadcomの BCM2835 ALSA driver というものらしいのですが。
あと、rpi3用の64ビット版のカーネルのビルド方法です。
あっちこっちに情報はあります。

ビルドは出来るのですが、arch linux環境で実行させようとするとエラーになります。最後のdigififanさんの情報を除いて、リンク先はraspbianでの話なので、arch linuxでは何か制限があるのですかね。
一応、ビルドを通すやり方を残しておきます。

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- bcmrpi3_defconfig
make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig
make -j 4 cp ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig
cp arch/arm64/boot/Image /boot/kernel8.img
cp arch/arm64/boot/dts/broadcom/bcm2710-rpi-3-b.dtb /boot/
make ARCH=arm64 modules_install

rpi3用のカーネルのレベルはrpi3用が4.13ですので、かなり新しくなります。当然、新しいレベルを選択したがいろいろな面で有利です。何故、rpi2用は4.9のままなのか、謎です。
rpi2用のシステムでも、自前でビルドすることにより 4.11系列、4.12系列にできます。こちらの方が音も良くなりますので、お勧めします。

カーネルのチューニングですが、基本的には不要なモジュールを削除しコンパクトにしていくことになります。
チューニングでポイントとなるパラメータがいくつかありますので、ご紹介します。

High Resolution Timer Supportをオン

General setup  ---> Timers subsystem  ---> [*] High Resolution Timer Support 

これは当たり前ですがオンにした方がいいです。ディフォルトはオンだと思います。

Default I/O schedulerの選択

Enable the block layer  ---> IO Schedulers  ---> Default I/O scheduler ---> 

Deadline、CFQ、No-op が指定できます。Deadlineは雰囲気のある柔らかい音、CFQはハードで解像度の高い音、No-opはその中間という感じです。音の良さの優劣はありませんので、好みで決めるしかないと思います。
ただし、この内容は後からコマンドを使って変更することもできます。

Kernel Featuresの選択

Kernel Features  ---> 

- No Forced Preemption (Server) 
- Voluntary Kernel Preemption (Desktop) 
- Preemptible Kernel (Low-Latency Desktop) 
- Preemptible Kernel (Basic RT)
- Fully Preemptible Kernel (RT)

から選択します。「rtカーネルでないと駄目」という人もいますが、僕はそうは思いません。
特に、UPnP方式でpolipoを使った場合はサーバに近い動きとなりますので、Preemptionが弱い方がいいと思います。ということで、「Voluntary Kernel Preemption」がお勧めです。
また4番目と5番目のRTカーネルはrtパッチがかかっていないと選択できません。これもrt化の足かせとなります。
理論的には低レイテンシーのrtカーネルの方が音楽再生に有利というのはその通りなのですが。

あと、xenomaiというロボット用rtカーネルがあります。これはアプリケーションがxenomaiが提供する命令に対応している必要があります。いまのところ音楽再生用アプリでこれに対応しているアプリはないので、あまり意味がないと思います。また、xenomaiは対応するカーネルのバージョンがrtカーネル以上に制約されます。
xenomaiは、確かに、ロボットの制作のようにアプリが手作りでどうにでもなるという時は千人力です。将来的にはrt機能はカーネルに統合され便利に使えるようになるとは思うのですが、先は長そうです。この記事を参照。

Timer frequency値を1000 Hzに設定

Kernel Features  ---> Timer frequency (1000 Hz)  ---> 

100Hz、200Hz、250Hz、300Hz、500Hz、1000Hzが指定できます。値が大きくなるほど、解像度が高く、切れ味が鋭くなります。ハード性能次第ですが、問題なければ 1000 Hzを指定しましょう。


カーネルのビルドで失敗談を一つ。

チューニングを行っている時、あるタイミングから音源の音が出なくなりました。この時変だったのはコントールポイントからみると、全く正常に再生されているように見えたことです。しかし、変えたののは menuconfig のパラメータだけですから、当然その内容を疑います。最終的にどうにも分からないので、menuconfigのパラメータを完全に元に戻して試しましたが、それでも音が出ない。変だなぁと、音源の状態を確認したら

[root@alarmpi ~]# cat /proc/asound/cards
 0 [Dummy          ]: Dummy - Dummy
                      Dummy 1
 1 [Loopback       ]: Loopback - Loopback
                      Loopback 1
 2 [DSDAC10R       ]: USB-Audio - DS-DAC-10R
                      KORG INC. DS-DAC-10R at usb-3f980000.usb-1.2, high speed

となっています。「なるほど、これなら音が出ないのはごもっとも。でも、Dummy、Loopbackは削除したのにどうなっいるの」。make menuconfig してみて確認してみました。

Device Drivers  ---> Sound card support  --->  Advanced Linux Sound Architecture  ---> Generic sound devices  ---> 
    <*>   Dummy (/dev/null) soundcard (NEW)
    <*>   Generic loopback driver (PCM) (NEW)

となっていました。「うーむ。削除したはずなのに何でだろう? 」と悩んでみたら、分かりました。カーネルのレベルを4.9から4.12と大きく変えていたのですね。ビルドの条件が大きく変わるから、結果、以前の設定が元に戻ったということらしい。これで二日ロスしました。「やっぱり、コントロールポイントからみると正常に見えるのに、音が出ないないという変な状況になった時は、まず、基本に戻り音源の状態を確認すべし」だったなぁと、サルでも出来る反省をしました(^^;;;。

解説は不要と思いますが、DummyとLoopbackが音源として見なされていますから、/etc/mpd.confの

audio_output {
        type                                    "alsa"
        name                                    "USB Dac"
        device                                  "hw:0,0"    <======この番号
#       priority                                "FIFO:99"
        mixer_type                              "disabled"

の順番が変わって、音が出なくなっていたということですね。

(PC_Audio)   2017/10/07

コメントする

Galvanic変換


「USB接続は音を悪くする」という件について、以前、このサイトで話題にしたことがあります。詳しくはI2Sに関するこの記事この記事を参照して下さい。
この対策の製品として、以前にこんな記事(JCAT USBカードとINTONA USBアイソレータ)を書いたことがあります。また、Intona社の製品(USBノイズ対策)については掲示板で話題になったことがあって、ここにスレッドがあります。

リンク先に紹介されている情報はPC/ネットワークオーディオをやっていく上では必須の情報ではないかと思いますが、雑誌でも、ネットワークでも取り上げられることは少ないですね。プロモーションに不要な情報は無視されるということでしょうか?
というわけで、いわゆるPC/ネットワークオーディオにおいて構成のポイントは「USB接続に伴うノイズにどう対策するか」です。僕が有効だと思う方法は次の三つです。

i2s接続
一番目は単純で、USB接続そのものをやめてしまおうというもの。USB接続しなければ、USB関連のノイズも発生しないわけだから、これが一番分かりやすい。問題はi2s接続の可能なDACがほとんどないこと。基板レベルで自作という方法はあるのですが、制限が多くメイジャーになりそうもないですね。
電源分離型USBボード
二番目の対策は独立したusbボードを使い、電源など分離することで、ノイズの発生を回避しようというもの。これが正攻法ということになるかと思いますが、問題は独立したボードを刺せるマザーボードが必要なこと。そんなものは、今時、希少価値です。
ガルバニックUSBアイソレータ
三番目の対策はパソコン側でノイズが発生するのは仕方がないとして、パソコンとDACの間に入って発生したノイズを、無理矢理、除去してしまおうというもの。三つ中では一番荒っぽい方法ですが、使う側からみると、パソコンとDDC/DACの間に製品を入れるだけなので、一番簡単、使いやすいです。
課題はノイズを除去する性能。音楽信号から綺麗にノイズだけを分離し除去するというノイズフィルターがほとんど無いことですね。僕の経験の範囲ではガルバニック方式のUSBアイソレータが唯一効果がはっきり感じられる製品だと思います。

この三つの方法をそれぞれ試したことがあります。
i2s接続については過去何度も書き込んでいるますね。ノイズ対策としては、USBは使わないという一番分かりやすい方法なので、お勧めなのですが、問題は機種が限定されることですね。詳しくは過去の記事を参照して頂くとよいかと思います。僕はaitlaboのDACを使っています。
試してみるには、r-piやbbb/bbgに直接差し込む基板形式のものがお勧めですかね。

電源分離型USBボードも製品は数種類しかありません。正攻法の対策であり、JPLAYをお使いであれば、この方法がお勧めかもしれません。問題はボードが刺さるマザーボードが必要なことです。ノートパソコンやlinux SOCマシンでの対策にはなりません。

僕は、乱暴ですが、単純明快な方式である三番目のガルバニックUSBアイソレータ対策製品に興味を持っています。これは既存のUSB接続の間に製品を入れるだけで、「あら不思議、DACがワンランクレベルアップしたのかな」という位に効果があります。SOCと普通のDACという組み合わせで問題なく使えるので、重宝しています。

ガルバニックUSBアイソレータの新製品としては ifiから最近 iGalvanic3.0 という製品が日本で販売が開始されました。
この製品、5月ごろに発売開始予定でした。「試しに聞いてみたいのだけど」と近所のオーディオ屋さんに頼んだら、「トラブルが発生していて、試聴機入手の予定は分からない」というご返事。僕の持っているIntona社製品で、半年位、繋げられる繋がらないのトラブルが続いていたことを知っているので、「なるほどなぁ」と思いました。オーディオ屋さんに事情を説明してあげて、「という訳だから、気長に待ちますよ」とお願いしておいたら、8月にようやく届きました。案外、トラブルの収束が速かったですね。さすが ifiということかしら。
ifi社によるガルバティック変換についてレポートが公開され、日本語訳がPhileWEBに掲載されていますね。新製品のプロモーションが目的だとは思いますが、興味深く読みました。

iGalvanic3.0 ですが、良い製品だと思います。手持ちのIntonaと比較して、効果の程はいい勝負ですね。Intonaの古いファームで動かなかった DAC でも問題なく動きました。Intonaのように、ご本家のサイトでPayPalを使わなくても、日本の普通のオーディオショップで現金を使って購入できます。コンパクトな製品ですが、高級なオーディオ装置らしいしっかりした作りです。まっとうなオーディオファンにはお勧めだと思います。

それでは、まっとうなオーディオファンでない僕はどうしたかなのですが、iGalvanic3.0 は価格が高かったので、パスしました。そして、同じタイミングでIntonaから「新製品が出来たよ。10%引きにするからどう」という案内が届きましたので、こちらを入手しました。

発端のIntonaからのメールですが、こんな感じです。



htmlメールはウイルスの元ですから普段は開けないのですが、Intonaのアドレスを確認できたので、シュテムラーさんとのやりとりを思い出し、開けて、読んでみました。ifi社のiGalvanic3.0を意識した内容で興味深く読みました。面白い内容なので、簡単にご紹介します(画面をクリックすれば、英文の全文がでます)。

顧客様各位

Intona社のちょっとしたアップデートについてお伝えする時がきました。

この二年間、良いことは一杯ありました。産業分野で多数のプロジェクトを受注し、オフィスも拡大し、従業員数も増えました。

しかし、もっと重要なのは『皆様のおかげで我々のUSBアイソレータが大成功』したことです。

そして、この成功はオーディオファイル・コミュニティにおける皆様方の積極的なご支援の賜物であると思います。厚く御礼申し上げます。直接のメール、フォーラムへの書き込み、レビューなど様々な形で多数の積極的かつ好意的なご意見を頂きました。この製品はもともと産業分野向けにデザインされたものであることをご存じだと思います。しかしながら皆様方の積極的なフィードバックにより、産業分野以外のプロオーディオ分野で認知されるようになりましたので、我々はオーディオファイル・コミュニティ向けに特化した製品を開発することにしました。

その間にも、我々のテクノロジーに興味を持ついくつかの会社と彼らの製品への我々の技術のOEM提供について議論を重ねてきました。これは、USB接続におけるハイレソデジタル音楽データの取り扱いに関して新しい視点を切り開くものとなりました。

また、少なからぬ数の会社がバスに乗り遅れまいとこの分野に参入してきました。我々はこのことを歓迎しています。我々の最初の製品の重要性と意味について改めて教えてくれたわけですから。グローバルに、我々は、サードパーティからのチップベースのソリューションに頼らずに、透過型のガルバニック変換とUSBバスのリクロッキングができる唯一の会社です。

ドイツから初めてのちょっとしたアップデートは完了しました。次に、我々が声をあげる時は皆様がお待ちの興味深く、重要な製品が誕生した時だけです。

という内容です。このあと「10月末まで10%ダウンで提供するよ」というお誘いと

Please feel free to share this link with any of your friends who deserves a great upgrade of their audio system!

というご案内が続きます(この案内を見て、メールの内容をそのまま紹介しても問題なかろうと判断しました)。ちなみに this link というのはここです。

メールの文面ですが、なかなかの自信ですね。
文面読んで、ついフラフラとリンク先のボタンをクリック。安かったので、またついふらふらとget。同じようなプラスチック製のボロい箱が3個並ぶことになりました(^^;;;。



新製品は写真の黒いやつです。旧製品のクリーム色のものが2台ありますが、二つ買ったというわけではなくて、一番最初の製品のファームウェアでは一部のdac(ddc)が繋がらなかったので、「何とかしてよ」とメールしたら、二つ目が送られてきたというわけです。そのあたりの詳細はこちらを参照して下さい。

製品の内容で何が変わったかについてはリンク先(this link)を参照して下さい。
気分転換に真っ黒のやつを頼んでみました。残念ながらあまりかわりばえはしないようですね。新製品と言っても外見は全く変わっていません。

ただし、音は随分変わります。ますます透明度が上がり、雰囲気がよくなったという気がします。楽器の実在感が新製品の方が高く感じます。楽器との距離がますます近づいたという印象で、全ての音がよりクリア聞きとれるようにになりました。ファームウェアの改良だけでこれだけの違いがでるとは驚きです。このレベルまでいけば、i2s接続にこだわる理由はなくなりますね。さすが、シュテムラーさんが「 When we raise our voice for the next time, be sure that there will be very interesting and exciting product updates, you might have been waiting for! 」と豪語するだけのことはあると思いました。
送料込みで235ドル位でしたから、ちょっと円安ぎみのタイミングですが、まあ満足。とてもよい買い物をしたと思います。ケースのボロさ(^^;;;を無視できるなら、お勧めです。

購入にはPayPalのアカウントが必須です。PayPalに登録してある住所が自動的に選択されますので、購入のための操作は簡単です。処理は迅速で、僕の場合は、月曜日に注文したら、その週の木曜日に届きました。ヨーロッバからでは最速でした。

(PC_Audio)   2017/09/29

コメントする

top page          previous page

mail