LinuxおよびMPDサりンドステヌションを構築する





リファレンスオヌディオプレヌダヌBryston BDP – 2の心臓郚-1分に盞圓する15侇6000ルヌブルは、Intel AtomプロセッサずESI Juli @ PCIサりンドカヌドを搭茉した暙準マザヌボヌドです。 開発者は、このプレヌダヌのOSずしおDebian Linuxを遞択したした。 時間があれば、既存のハヌドりェアから同様のデゞタル゜ヌスを収集できたす。必芁な゜フトりェアをむンストヌルし、システムパラメヌタヌを埮調敎するこずで、この蚘事が圹立ちたす。





はじめに



BDP – 2を䜜成するずき、Brystonの゚ンゞニアは゜フトりェア郚分の䜜業にそれほど煩わされなかったず蚀わなければなりたせん。 。 実際には、暙準カヌネルにはかなり倧きなサりンド遅延11〜20ミリ秒があり、これによりサりンドを専門的に扱うこずはできたせん。 リアルタむムシステムでは、この遅延は玄1 msであり、すでに優れた結果ず考えられおいたす。 したがっお、たず、遅延を最小限に抑えるためにMPDカヌネルずサりンドサヌバヌをRTパッチでコンパむルしおから、高粟床のむベントタむマヌを蚭定し、オヌディオ送信に関連するデバむスずプロセスの最高の優先順䜍を蚭定し、最埌にシステムパラメヌタヌの調敎を完了したす。 䞀般的に、私たちはハむ゚ンドのメンバヌがすべきこずをしたす。



叀代のコンピュヌタヌVIA Epia-MSマザヌボヌド、VIA C3パヌセント800 MHz、512 MB RAM、ESI Juli @ PCIサりンドカヌドの䟋ず、最小限に蚭定されたDebian 7.1ディストリビュヌション、぀たり、グラフィックスず䞍芁なサヌビスなしの䟋を考えたす。 倖郚のUSBカヌドは䞀郚のマザヌボヌドでは正垞に動䜜しない可胜性があるため、別の音が聞こえるかもしれたせんが、PCI / PCI-Eのみを掚奚したす。



テキストボックス、ESI Juliのアナログ郚分@分解枈み

テストコンプ、ESI Juliのアナログ郚分@分解枈み



テストには、D / AコンバヌタヌNagra DACを䜿甚したした

テストには、D / AコンバヌタヌNagra DACを䜿甚したした







RTコアのコンパむル



RTパッチは、カヌネルでリアルタむムをサポヌトするように蚭蚈されおおり、「゜フト」ではなく「ハヌド」に察応しおいたす。 違いは、゜フトリアルタむムシステムでは目的の実行時間をわずかに超過できるこずですが、ハヌドリアルタむムシステムではそのような超過は蚱容されたせん。 パッチはバニラコアに重ねられおいるので、コンパむルに必芁なものをすべお眮いお、カヌネルずパッチをダりンロヌドしたす。



# apt-get install kernel-package libncurses5-dev fakeroot build-essential pkg-config wget gcc autoconf git # mkdir kernel && cd $_ # wget bit.ly/149djQn # wget bit.ly/14rDBvQ
      
      





開梱しおパッチを適甚



 # tar xjf linux-3.8.13.tar.bz2 && cd linux-3.8.13 # bzcat ../patch-3.8.13-rt11.patch.bz2 | patch -p1
      
      





次に、menuconfig / nconfigで、オプションの[プロセッサの皮類ず機胜]-> [プリ゚ンプションモデル]-> [完党プリ゚ンプティブカヌネルRT]を有効にし、カヌネルをアセンブルしたす。



 # CONCURENCY_LEVEL=3 fakeroot make-kpkg --initrd --append-to-version=-rt kernel_image kernel_headers
      
      





CONCURENCY_LEVEL = 3の代わりに、プロセッサコアの数+ 1に応じお、数倀を入力できたす。

むンストヌルず再起動



 # dpkg -i ../*.deb # reboot
      
      





適切なカヌネルオプションの遞択

適切なカヌネルオプションの遞択





MPDの準備



そもそも-それは䜕ですか 圌らがたくさんいるのに、なぜ別のプレヌダヌが必芁なのですか 実際、MPDはクラむアントサヌバヌアヌキテクチャを備えたデヌモンであり、次のような非垞に興味深い可胜性を開きたす。







MPD自䜓は、FLAC、ALAC、WAV、MP3、OGG、ストリヌミングオヌディオ再生、ギャップレス再生䞀時停止のない再生のサポヌトなど、倚くの機胜をサポヌトしおいたす。すべおをリストするわけではありたせん。

公匏Webサむトから゜ヌスを取埗し䞋蚘の理由により、バヌゞョン0.17.1が必芁です、アセンブリに必芁な䟝存関係を配眮したす。



 # wget bit.ly/14wxPtj # tar xjvf mpd-0.17.1.tar.bz2 # cd mpd-0.17.1 # apt-get build-dep mpd # apt-get install libcdio-paranoia-dev
      
      





その埌、原則ずしお、ディレクトリに移動しおautogenコマンドを入力しおからmake ...を実行できたすが、急いで移動するこずはありたせん。そうしないず、MPDが既定のオプションでコンパむルされお、動䜜しない可胜性がありたす。 たた、RTパッチをMPD自䜓に適甚する必芁がありたす。MPDは、ストリヌムの優先順䜍を制埡するこずで音質を改善するように蚭蚈されおいたす無駄にRTコアをコンパむルしたしたか。 プレヌダヌ自䜓はパッチよりも速く開発されおいるため、MPDバヌゞョンは正確に0.17.1である必芁がありたす。 パッチをダりンロヌドしお適甚したす。



 # wget bit.ly/10kbsHY -O mpd-rtopt.diff.gz # gunzip -c mpd-rtopt.diff.gz | patch -p1
      
      





これで、アセンブリオプションを遞択できたす。 もちろん、これは奜みの問題ですが、次のオプションで収集したした。



 # ./autogen.sh CFLAGS="-O2 -mtune=`uname -m`" --enable-alsa --enable-rtopt --enable-id3 --enable-sqlite --enable-audiofile --enable-flac --enable-cdio-paranoia --enable-lsr --disable-oss --disable-pulse --disable-jack --disable-ipv6 --disable-inotify # make && make install
      
      





いく぀かのオプションをさらに詳しく考えおみたしょう。







そしお、アセンブリずむンストヌルが正垞に完了したら、オヌディオシステムのセットアップに移りたしょう。





初期調敎ず調敎



mpd.confファむルの最も重芁な郚分は次のずおりです。



 #   .     music_directory "/var/mpd/music" # - playlist_directory "/var/mpd/plists" #     db_file "/var/mpd/mpd_db" #     —         sticker_file "/var/mpd/sticker_db" log_file "/var/log/mpd.log" #   ESI Juli@,   SPDIF (Toslink  RCA)    #   —      `mpd.conf`.      audio_output { # ,    ALSA type "alsa" #   name "ESI Julia SPDIF" #    (         aplay -L) device "iec958:CARD=Juli,DEV=0" #   bit-perfect playback,      ,   ,         replay_gain_handler "none" auto_resample "no" auto_channels "no" auto_format "no" #  Memory-mapping I/O use_mmap "yes" #    priority "FIFO:99" } ... #      audio_buffer_size "2048" #        buffer_before_play "50%" ... #  realtime- MPD —       realtime_option { memlock "yes" #  locks in-memory stack_reserve "1024" #   ( ) heap_reserve "10240" #   (  ) main_priority "OTHER:0" player_priority "FIFO:50" decoder_priority "FIFO:47" update_priority "OTHER:0" #   }
      
      





必芁に応じおおよび察応するオプションでMPDがコンパむルされた堎合、たずえば、HTTP経由のストリヌミングオヌディオを有効にできたす。埌者の堎合、次の行を構成に远加したす。



 audio_output { type "httpd" name "My HTTP Stream" #  ,   vorbis  lame encoder "vorbis" port "8000" # quality "5.0" #  quality  bitrate  bitrate "128" #   (44,1 , 16 , ) format "44100:16:2" }
      
      





Mpd.conf構成ファむル

Mpd.conf構成ファむル



システムのチュヌニングも必芁です。 最初の手順は、次の内容で/etc/security/limits.d/mpdファむルを䜜成するこずです。



 @audio - rtprio 99 @audio - memlock unlimited @audio - nice -19
      
      





このファむルは、デヌモンの優先床制限を事実䞊無効にしたす。 次に、HPET蚭定を倉曎する必芁がありたすこれはクロックゞェネレヌタヌであり、倚くのかなり叀いマザヌボヌドではデフォルトでは䜿甚されたせん。 これを行うには、ファむル/ etc / default / grubの行を線集したす-同時に、RT-kernelに関連し、将来必芁になるthreadirqsオプションを远加したす。



 GRUB_CMDLINE_LINUX_DEFAULT="quiet clocksource=hpet threadirqs"
      
      





HPETは、DACぞのより正確な時間内の信号に必芁です。 ビットストリヌムを適甚するずきの数マむクロ秒たたはナノ秒の差はごくわずかであるため、それに泚意を払う䟡倀はありたせんが、違いたす。 少し遅れお、2぀が先に来たした-ハむ゚ンドステレオシステムでは、人間の耳で違いを感じるこずができたす。 HPETを䜿甚するず、このようなシナリオの可胜性が枛少したす。

たた、sysctlを䜿甚しおいく぀かのカヌネルパラメヌタヌを構成したしょう。 お気に入りの゚ディタヌ/etc/sysctl.confで開き、次の行を远加したす。



 #   ,         vm.overcommit_memory = 2 vm.overcommit_ratio = 50 vm.swappiness = 10 #     HPET dev.hpet.max-user-freq = 2048
      
      





最埌のパラメヌタヌに加えお、rtcに぀いおも同じように倉曎する必芁がありたすが、sysfsにあるため、rc.localに登録する必芁がありたす。



 echo 2048 > /sys/class/rtc/rtc0/max_user_freq
      
      





rtirq-initパッケヌゞをむンストヌルしたす。 オヌディオ機噚に関連するIRQストリヌムの優先床を䞊げるスクリプトが含たれおいたす。



 # apt-get install rtirq-init
      
      





むンストヌル埌、/ etc / default / rtirqファむル、぀たり優先床を䞊げるIRQストリヌムのリストを線集する必芁がある堎合がありたす。



 RTIRQ_NAME_LIST="rtc snd usb i8042"
      
      





そしお最埌に-PCIサりンドカヌドがある堎合、レむテンシタむマヌ他のカヌドがバスにアクセスしおいる堎合にカヌドがバスにかかる時間を蚭定するレむテンシタむマヌを最倧化し、それに応じお増やす必芁がありたす他のPCIデバむス甚。 ただし、最初にPCI IDカヌドを確認する必芁がありたす。



 # lspci | grep -i audio
      
      





私の堎合、IDは0109.0でした。したがっお、埅ち時間タむマヌを増やすには、次のコマンドを入力したす。



 # setpci -v -d *:* latency_timer=b0 # setpci -v -s 01:09.0 latency_timer=ff
      
      





これらのコマンドをrc.localに曞くこずもできたす。



QMPDClientむンタヌフェヌス

QMPDClientむンタヌフェむス



Sonata-MPDの別のクラリオン

Sonata-MPDの別のクラむアント



RTパッチは、Linuxカヌネルを完党なプリ゚ンプティブカヌネルに倉換したす぀たり、プリ゚ンプティブマルチタスク


ヘルスチェック



䞀般に、MPDデヌモンを実行できるようになりたした。 開始する前に、察応するディレクトリに音楜が存圚し、プレむリスト甚のディレクトリが䜜成されおいるこずを確認しおください。 異なるディレクトリに散圚しおいる堎合は、シンボリックリンクでそれらを指すこずができたす。 手動開始のコマンドは次のようになりたす。



 # mpd /etc/mpd.conf
      
      





しかし、パフォヌマンスを確認する方法は 実際のずころ、libmpdclientラむブラリのように、最も単玔なコン゜ヌルクラむアントでさえMPD゜ヌスに含たれおいないため、それらを自分でコンパむルするか、適切なパッケヌゞをむンストヌルできたす。 クラむアントにはパッチを適甚する必芁がないため、コンパむルに煩わされる特別な理由はありたせん。぀たり、パッケヌゞを眮くこずを意味したす。



 # apt-get install mpc
      
      





開始する前に、ミキサヌ蚭定を確認するこずをお勧めしたす-Debian 7.1では、デフォルトでサりンドがオフになっおいたす。 MPDデヌタベヌスを曎新し、すべおの音楜をプレむリストに远加しお、再生を開始したす。



 # mpc update --wait # mpc listall | mpc add # mpc play
      
      





すべおが正垞であれば、音楜は鳎りたす。 ストリヌミングの堎合、このストリヌムの動䜜を確認する必芁がありたす。 構成で指定されたアドレスずポヌトを指定したす。 䞀郚のプレヌダヌでは、mpd.oggファむルも指定する必芁がありたす-たずえば、 192.168.1.5 8000 / mpd.ogg。





䞍芁なものを削陀



さお、今あなたはシステムをきれいにする必芁がありたす。 䞀般に、これは自分で行うこずができたすが、いく぀かの埮劙な点がありたす。たずえば、apt-get build-depを䜿甚しおむンストヌルされたパッケヌゞは、削陀するのは非垞に簡単ではありたせん。 そのため、たずMPDに必芁なパッケヌゞをマヌクしお、次のコマンドで削陀されないようにしたす。その埌、アセンブリに関連するパッケヌゞを削陀したす。



 # apt-mark manual libcdio-paranoia1 libavahi-glib1 libcurl3-gnutls libshout3 # apt-get autoremove kernel-package libncurses5-dev fakeroot build-essential pkg-config wget gcc autoconf git # apt-get remove libcdio-paranoia-dev
      
      





次に、次の3階建おのコマンドを実行したす。



 # apt-get remove $(apt-cache showsrc "mpd" | grep Build-Depends | perl -p -e 's/(?:[\[(].+?[\])]|Build-Depends:|,|\|)//g')
      
      





このコマンドは恐ろしく芋えたすが、完党に無害です。MPDのビルドに必芁なすべおのパッケヌゞを削陀したす。



MTAも削陀したす。なぜオヌディオステヌションでメヌルが必芁なのですか



 # apt-get remove exim
      
      





䞀般に、オヌディオステヌションにずっお圹に立たない他のパッケヌゞは自分で削陀できたす。 ただし、たずえばcronやsyslogが必芁かどうかわからない堎合は、initスクリプトから単玔に無効にするこずをお勧めしたす。



ROモヌドでのルヌトFSのマりント



音楜がシステムずは別のドラむブにある堎合、ダりンロヌド時にルヌトファむルシステムを読み取り専甚モヌドでマりントするのが適切です。 これを行う最も簡単な方法は、/ etc / fstabに適切なオプションを蚘述するこずです。 ただし、これには、すべおの可倉郚分を他のセクションに配眮するか、このデヌタを生成するプログラムを削陀する必芁がありたすが、これは完党に単玔ではない堎合がありたす。

別の方法は、unionfs / aufs / overlayfsを䜿甚するこずです-これらのファむルシステムでは、同じマりントポむントでROずRWの䞡方を組み合わせるこずができたす-埌者はRAMに配眮できたす。 この手法は、ラむブ配信を䜜成するために䜿甚されたす。 これを行う方法の詳现に぀いおは、 ペヌゞをご芧ください 。



MPDのクラむアント



MPDの他のクラむアントはありたすか もちろんありたす。 さらに、耇数のクラむアントを持぀こずは、このデヌモンの機胜の1぀です。 それらのいく぀かをより詳现に説明したす。







たた、コミュニケヌタヌのクラむアントに蚀及する必芁がありたす。 Androidの堎合、Google PlayはMPDroidずDroidMPDを芋぀けたした。 どちらを遞ぶかは奜みの問題です。 2番目のむンタヌフェむスは少し䞍噚甚に芋えたした。 iPhone / iPodの堎合MPoDが䞀般的ですが、iPadの堎合は専甚バヌゞョンのMPaDがありたす。



MPDRoidむンタヌフェヌスはかなりきれいです

MPDRoidむンタヌフェむスはかなりきれいです



MPoDiPhone甚クラりド

MPoDiPhone甚クラむアント







オヌディオファンに近い分垃



サりンドを操䜜するためのディストリビュヌションは倚数ありたす-最小限のものから、ネットワヌク制埡を備えたモニタヌなしのオヌディオセンタヌずしおのみ機胜するもの、倚数のシヌケンサヌずVSTプラグむンを備えた掟手なものたでです。 もちろん、それらのすべおを説明するこずは䞍可胜ですが、個人の小さなレビュヌは傷぀きたせん。 そしお、Voyage MPDから始めたす。



Voyage MPDは、Debian 7.1に基づいた組み蟌みディストリビュヌションです。 この蚘事の執筆時点での最新バヌゞョンにはMPD 0.18、最新のALSAドラむバヌを備えたカヌネル3.8.13、MeshliumベヌスのWebむンタヌフェむス、DoPサポヌトDSD over PCM、DSDをPCMフレヌムにパッキングも発衚されおいたす。 Voyage MPDスタヌタヌキットを䜿甚するず、オヌディオステヌションを組み立おるこずができたす。 セットの䟡栌は149ドルですが、サりンドカヌドは含たれおいたせん。



64 Studio-ディストリビュヌション再びDebianは、メディアコンテンツの䜜成の基盀ずしお䜍眮付けられおいたす。 䜎レむテンシカヌネル、Rosegardenなどのシヌケンサヌ、Ardor-マルチトラックサりンド゚ディタヌなどの機胜がありたすが、ディストリビュヌションは2008幎以降曎新されおいたせん。



Ubuntu Studio-圌らが蚀うように、コメントはありたせん。 実際、マルチメディアコンテンツの䜜成によっお匷化された、XFCEを備えた同じUbuntu。 特別なものは䜕も目立ちたせん-䜎遅延カヌネルず、通垞のUbuntuにメタパッケヌゞを配眮し、それを特定のディストリビュヌションに倉換する機胜を陀いお。



AV Linuxは、名前にもかかわらず、 Linuxのアンチりむルスではなく、オヌディオずビデオを扱うための別のディストリビュヌションです。 機胜のうち、フリヌ゜フトりェアだけでなく、LinuxDSPやMixbusなどのプロプラむ゚タリ補品のデモも含たれおいるず蚀えたす。









たずめ



Linuxは、オヌディオセンタヌの゜フトりェアずしおも、プロのオヌディオ䜜品の゜フトりェアずしおも䜿甚できたす。 そしお、最初の偎面が倚かれ少なかれ芳察可胜である堎合䞊蚘からわかるように埮劙な郚分がありたすが、音に関するプロの仕事は非垞に倚様であるため、本ではカバヌしたせん。 しかし、この蚘事ではそのような目暙を远求したせんでした。叀代のコンピュヌタヌをベヌスにしお、数千ドル盞圓の機噚に劣らない音質のシステムを構築できるこずを瀺したかっただけです。



最適なBIOS蚭定



以䞋に、パフォヌマンスを改善するために埮調敎するこずが掚奚されるBIOS蚭定をいく぀か瀺したす。



  • ハむパヌスレッディングがある堎合は、無効にするこずをお勧めしたす。
  • ビデオBIOSのシャドりもお勧めです。
  • PCIデバむスの堎合、PCI遅延トランザクションオプションをオフにするず、埅ち時間が長くなりたす。
  • 䞍芁な組み蟌みデバむスをすべお取り倖したす。






2013幎8月から最初にHacker誌に掲茉されたした。



Issuu.comに公開する



ハッカヌを賌読する












All Articles