2017年4月7日金曜日

[PPTP]セットアップとレイテンシーについて


表題についてリクエスト頂きましたので記事にしたいと思います。
長文になると思われますので先に話のオチをしておきます。

1)Raspbian PIXEL・Puredata vanillaの構成でALSAだけどUSB Audio Codecで動作。
2)PuredataでDelay(レイテンシー)は20msだろうと11msだろうと、設定してもレイテンシーは変わらないが一定して速い(後述)。
3)実測値の測り方の手段がないが実際のレイテンシーは10ms強ではなかろうか。
4)特にドライバも要らずWindowsにUSBオーディオ挿して鳴らすくらい、簡単に鳴る。

こんな感じです。
2)3)についてはもはやオカルトですが、いままで弾いてレスポンスであまり苦労してなかったのでレイテンシー設定まわりをほぼ気にしていませんでした。
ハードについてはこちらの記事を見て頂くとして、
残りのセットアップについて書いてみます。
でも、ほぼこちらのサイトのセットアップ方法のままで
RaspbianをGUI起動、Puredataを動かしてもCPU20%超えるか超えないかくらいの軽快なパフォーマンスです。

*************************************
【①Puredataインストールまでの基本的なセットアップ】
OSはRASPBIAN JESSIE WITH PIXELのイメージファイルをNOOBS使わずにそのままSDカードに焼きます。
このあたりの方法は他サイトと同様なので省略。
他、日本語化やファイルシステムのサイズ変更等、Raspi-configで設定するあたりも他サイトと同様なので省略。

PPTPでは5インチタッチパネルを使用しています。
画面表示させるだけならGPIOにタッチパネルを装着、HDMIを繋ぐだけでとりあえず映ります。
このままだと表示領域が4:3?で狭いので、AdafruitでLCD-showドライバをインストールしてconfig.txtを編集して全画面表示&パネルのタッチ操作を可能にします。
*セットアップ方法はハマる人もいるようなのでAmazonのカスタマーレビューを参考に切り分けしたほうがよさそうです。

さて最後にPuredata Vanillaをインストールしますが、こちらのサイトで紹介されているのコマンドそのままでVanillaをインストールします。
zexyやcycloneは私、使ってないのですがとりあえずインストールしています。
*Puredata-extendedですが、数年更新されていないので使いません。


ここまで、オーディオ周りのセットアップは一切ナシです。
ちなみにHDMIで音声出力するraspi-configの設定もしません。
タッチパネルはスピーカーまでは内蔵してないので設定しても意味がありません。



【②Raspbianのオーディオ設定】
RaspbianをGUIで起動して、USBオーディオをRaspberry Piに接続します。
このままだとたぶん使えないだけで認識はしていると思います。
*USBオーディオはUCG102を使っていますがPlugableのUSBオーディオアダプタでも基本的に設定は同じです。


画面右上のタスクバーにスピーカーのアイコンがあるので右クリックから
USB Device Settingを選びます。


サウンドカードはUSB Audio Codecを選び、適宜コントロールの選択でボリュームスライダーを追加します。


これでVLCあたりのソフトで再生テストしてみて音が出ていればOK。



【③Puredataのオーディオ設定】
そのままPuredata Vanillaを起動したら上部のメニューから
Mediaを選び、ALSAにします。

次にMedia>>Audio Settingを開いて、、
Input DeviceとOutput DeviceにUSB Audio Codecを選びます。
このときUSB Audio CodecにHardwareとPlug-inの2種類ありますが、
私、違いが判りません。どちらでも動作します。



注意しておく事はbcm2835 ALSAは選びません。
選んでも動作しません。

さて、
Samplerate:44100
Block size:64
固定と高品質ではありませんが、使っているUCG102のスペックならこんな感じかな?という程度の設定になりました。

でもDelay(レイテンシー)の設定は弄っていません。
弄ってもいいのですが実は変化が無いのです!
25msにしても11msにしても聴感上のレイテンシーが明らかに変わらず、
(常に最小のスピードで動作しているのか)速いのです。
聴いた限りでは10ms程度のレイテンシーと思われます。
Androidですがこんな話もあるので、簡単な設定で10msも出れば上々と思われます。
余談ですが、レイテンシーを10msにすると急激にバッファ不足で音切れが発生します。




3 件のコメント:

  1. 早速記事を書いていただきありがとうございます!結構シンプルな設定で大丈夫なんですね、参考になりました。
    レイテンシー測定パッチはWindowsだとPd\doc\7.stuff\toolsフォルダにあるので、私はそれを使っています。

    返信削除
  2. レイテンシー測定パッチのご紹介ありがとうございます。
    早速WindowsのMMIO環境とPPTPのALSA環境を調べてみました!
    これがまたなかなか面白い結果が出ておりまして、、
    インプットとアウトプットのループが一番実測値を測るのによさそうな方法なのですが、
    測定値は2倍~3倍程度多い方向へ盛られているような雰囲気があります。
    PPTPが20~30ms程度なのでひょっとしたらこんなものかな?とも思ったのですが、
    WindowsがDelay30msに設定しているところ、100ms(!?)叩き出してしまいました。
    さすがに100msではV8customのリフはまともに弾けないので、だんだん自分でも何が正しいか分からなくなってきました(苦笑)
    ちょっとLatency.pdの中身を覗いてみます。

    返信削除
  3. 私も自分の測定結果が多めに出ているのかなと思いました。そこで原始的な方法(パルス波を出力して録音する)で測定した場合も同じぐらいの値だったので、やはり測定パッチの結果は正しいのだろうと思います…また私も再試験してみます。

    返信削除

[PPTP]バッファの電源ノイズ削減のテスト

一回、回路の全体図をまとめたほうがいいような気がしてますが、 (実はブツッブツッと鳴る明らかに使用に堪えないマズいノイズが乗った際に、 各箇所のGNDを、 電源の最上段のGNDにまとめて繋いでいる のです。。) こちら の冒頭にてRaspberry Piのノイズ削減テス...