ラベル PPTP の投稿を表示しています。 すべての投稿を表示
ラベル PPTP の投稿を表示しています。 すべての投稿を表示

2017年6月27日火曜日

[PPTP]GPIOの電源ノイズ削減のテスト[Raspberry Pi]

こちらでRaspberry Pi 3をGPIOから給電する実験を少ししました。

【前回までのあらすじ】
GPIO給電はUSB給電と違い、パスコン等で電源を綺麗にできるならノイズが減るかも。

さて、前回は幾つかパスコンの容量を変更してテストしましたが、
もう少しいろんなパターンで実験してみます。
※私の環境はRaspberry Piをギターのエフェクターとして使う関係で、
以下の理由でリスニング用途とはチューニングが違います。
参考程度に留めてください。
・サウンドカードは録音機能も使う(ノイズ混入も必然的に多くなります)
・バッファアンプのアナログ回路とRaspberry Piのデジタル機器混在のためノイズも多くなる


実験して思いましたが、すごく選定がシビアです。。


ノイズが多い場合に最初段(ブリッジダイオードのマイナス)にGNDを繋ぐと
ノイズが改善する場合がありました。
が、パスコンの手前に付けるか後に付けるか謎なので実験しました。
結論、パスコンの前に入れたほうがいいです。
  1. パスコン無し、GND接続
  2. パスコン100uFの後にGND接続
  3. パスコン100uFの前にGND接続


前回は大雑把にパスコンの容量を変えて、220uFがノイズ削減に良さそうだったのですが、
もう少し細かく調べてみました。
自分の環境では100uFが良さそうです。
※ここから先の音源は全てパスコンの手前でGND接続して実験しています。
  1. パスコン無し
  2. 220uF
  3. 100uF
  4. 47uF


先ほどの実験で100uFが良さそうですが、パスコンを並列にして合成容量にした場合のテストです。
これについては失敗。
220uFでも少し効果が見られたので、100uF x2個のほうが良さそうです。
  1. パスコン無し
  2. 100uF
  3. 47uF x2個


というわけで、100uFを複数、並列で付けた場合のノイズの増減を調べました。
220uFもノイズ削減効果が見られたので、案の定、100uF1~2個でノイズが減ります。
  1. 100uF
  2. 100uF x2個
  3. 100uF x3個
  4. 100uF x4個



パスコンは複数の別の容量を組み合わせて使う場合もあるようで、
100uFに他の容量を追加して実験しました。
が、う~ん、やたらめったら足してもダメなようです。難しい。
  1. 100uF
  2. 100uF + 10uF
  3. 100uF + 1uF
  4. 100uF + 0.1uF
  5. 100uF + 0.01uF















2017年6月22日木曜日

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

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

【前回までのあらすじ】
積極的にパスコン等の対策で綺麗な電源を用意できるならばGPIOからの給電も良し。
でもパスコンの容量次第では心なしか原音も音が変わってる・・・?
とりあえずやたらに大きな容量のパスコンを入れても効果ない場合がある事は分かった気がする。


なんというド素人の実験!


・・・話は元に戻るのですが、あちこちでノイズが発生したら電源の最上段のGNDにまとめて繋いでいるので、
グラウンドループで酷くなっている?のか、スター型GNDでむしろノイズ減った?のか
よく分からない状態になっています。


インプット・アウトプットのバッファ回路も同じ状況で、
最上段のGNDに繋ぐとブツッブツッのノイズが消えているのでそのままにしてます。
・・・バッファの電源って絶縁型DDコンを使ってるのですが、
一次側のGNDに繋いでる今ではあんまり効果ないんでは?と思いました。
という事で、この部分の電源周りを触ってみました。

結果からいうともうDDコン、若干良いですが、でも劇的に変わらなかった。
なおGPIO給電は引き続き実施しています。


Buffers_PowerSupply(CleanTests).flac
ギターの腕前はご容赦ください。。
どちらかというと弾いてない時とのノイズの比較・参考程度に考えてください。
収録内容は、、

  1. DDコン有り→2200uFパスコン(これ、パスコンの使い方を知らなかったバカな時代のなごり)
  2. DDコン無し、パスコン無しの直でバッファに給電
  3. DDコン無し、1uFパスコンで給電
  4. DDコン無し、220uFパスコンで給電
  5. DDコン無し、470uFパスコンで給電
  6. DDコン無し、2200uFパスコンで給電
DDコンの有無で一番よく分かるのがブーンというノイズです。
でもこの手のノイズ、こっちで付けた秋月のキットのほうが除去は得意かもしれない。
入手して実験してみたいところです。
→購入して使ってみました!



さて、購入してバッファの電源をDDコンと以下の秋月のキットと比べてみました。
解消するといいなぁ、、

TPS7A4700使用 超ローノイズ・プログラマブル可変電源キット
結論からいうと、秋月のキットではブーンというノイズは消えませんが、
別対策でブーンのノイズは消えました。

[ver2]Buffers_PowerSupply(CleanTests).flac

  1. バッファにDDコンのみ(ブーンのノイズは小さい)
  2. DDコン外して12Vをバッファに直で給電(ブーン)
  3. 先ほどの構成に220uFのパスコンを挟む(変わらずブーン)
  4. DDコン外してキットで9Vに降圧してバッファに給電(変わらずブーン。でもホワイトノイズ減ってる・・・?)
  5. DDコン&キット(ブーン変わらず)
  6. MICROEサウンドカード(WM8731)の給電にも実は使っている、キットの入力側のGNDをブリッジダイオード初段のGNDに直で繋ぐ
さて、解説致しますと、1に比べて2~5はずっとブーンのノイズは減りません。
ただ、心なしかバックグラウンドのホワイトノイズは減っているような、、、

そこで最後、ダメ元で6の構成にしたところ、ブーンのノイズがかなり消えました。
GNDの取り方、侮りがたし。。
そして、買ったキットもブーンのノイズには効果がありませんが、ノイズフロアを少し下げたような印象です(もともとリップルフィルタ用途で売ってる)。
電池給電したくないけど消費電力1A以内でノイズ対策したい場合によさげです。
※このキットも2次側にはパスコン10uFを5発並列で付けています。
パスコン入れるときはスペースが許せば同じ容量を複数入れたほうがいいのかもしれません。


2017年5月25日木曜日

[PPTP]MICROE-506サウンドカードを使うテスト その2[WM8731]

【新型Fix】
いろいろアドバイス頂きまして、以下の構成でバッファを作成しました。
ただし、条件付き。
図に書いてあるRaspberry Pi向けのGND接続は、
もっと最上段に接続したほうがいいです(Pi The Headの構成だとRaspberry Piよりもはるか上位、ACアダプター直下のブリッジダイオードのマイナス側)
GND繋ぐ箇所によってブチブチ鳴るノイズが激減します。

とはいえノイズ出ますね。。
→新たに実験したので更新しました。
raspberry pi 3はUSB給電は止めてGPIOから直接5V送り込んで給電します。
具体的には、5Vを4ピン、GNDを6ピンに繋ぎます(逆接に気を付けてください)
更に、給電直前にデカップリングコンデンサを各種容量を変えてフィルタ掛けてます。
効果は良いか悪いかの好みがありますが、あります。
サンプル音源は以下の通り。
いずれもキャビネットシミュレータ掛けてますが
クリーン(ノイズゲート無し)
クリーン(ノイズゲート有り)
ハイゲイン(ノイズゲート無し)
で録音しました。
ハイゲインについては、フィルタの掛かる周波数をよく体感できるため収録しています。
また、いずれもクリーンとハイゲインは個別にノーマライズ掛けているので、
波形編集ソフト等で弾いてない部分のノイズ波形の大きさを見てみたほうが違いが分かります。
クリーン(ノイズゲート有り)でまだノイズがあるので、
原因っぽいバッファあたりの電源も見直ししてみようかと思います。
※ハイゲインでパコン!というノイズが入りますが原因不明で探っています。
この点についてはご容赦ください。
GPIO_power_supply(no cap).flac
これについては先日アップロードしたUSB給電の音源と同じです。
が、デカップリングコンデンサ無しでGPIO給電するのと大してノイズは変わりません。

GPIO_power_supply(101~105).flac

セラミックコンデンサ101~105までを並列(なので合成容量か、、ほぼ1.1uFやんw)
でフィルタ入れました。
容量小さい割には意外と効果ある。
が、USB給電のほうがブチブチのノイズが少ない。

GPIO_power_supply(101~105_pulus440u).flac
先ほどの合成容量にプラスして440uFの電解コンデンサを追加しました。

GPIO_power_supply(2200uOnly).flac
こちらは思い切って2200uFの電解コンデンサ1発をフィルタに使いました。

できるだけ同じ条件でパスコン替えても実験やってみました。
クリーントーンなのでボリューム上げないと
バックグラウンドのノイズは分かりづらいです。
なお、このパスコンの最終段のGNDをブリッジダイオードのマイナスに繋ぐと
うっすら掛かっていたブツブツのノイズが消えました。
とりあえず困ったら大元のGNDに全部繋いでるな(苦笑)
GPIO_PowerSupply(CleanTests).flac

  1. GPIO直、前述のGNDの対策も無し
  2. GPIO直、GND対策済。パスコン無し
  3. GPIO直、GND対策済。パスコン1uF
  4. GPIO直、GND対策済。パスコン220uF
  5. GPIO直、GND対策済。パスコン440uF
  6. GPIO直、GND対策済。パスコン2200uF

ダメだ、クリーンだと大して違いが分からん、
もしかしたらraspberry pi側は限界までノイズを取り切っていて、
バッファあたりの電源が汚いのかもしれないし、、






【以下、旧回路の古い情報】
こちらでプリアンプ側の作成を行い、大体調子よくなってきたので
WM8731のヘッドフォンアウト側からギターアンプに送るまでのオペアンプを付けました。
まだ試作品です。

【新型試作品。前段のHPFの定数を変更】
前段のハイパスフィルタをもう少し一般的なヘッドフォンアンプの定数に近づけました。
220μF→10μF
100Ω→10kF
今回、以下に置いてある音声サンプルでノイズが「大きく」軽減しているのは、
drugscore様よりアドバイス頂いて、オーディオ設定を全開で運用する方法を採用したからのような気がします。
全てZOOM U-22のギターインプットへ直で録音しています。

10u10k.flac
adc~
|
dac~
のパッチ構成で録音。


10u10kV8.flac
自分の作成したパッチで一番ハイゲインなパッチを使いました。
V8customPreamp
|
CabinetEQ
|
CabinetAir
|
NoiseGate

0:00 エフェクトOFF
0:13 V8custom On(Rythm mode)
0:38 V8custom On(Lead mode)
0:42 CabinetEQ Presense Half UP
1:13 NoiseGate On

今後はU-22の入力トリムが3~4程度と結構低い状態に設定してもクリップしそうな勢いなので、
最後段に2連ボリューム入れるか帰還の抵抗を少し小さくするかするといい感じになりそうです。


【旧型。前段のHPFがピーキーなパターン】

DCoutput_test.flac
全体的にバックグラウンドノイズが乗っています。
→よくよく考えるとノイズはオーディオ設定側の出力を全開にしたほうが
ノイズを小さくできます。

サンプルではバイパス音とV8customPreampを鳴らしているのでそれなりにノイズがのるのですが、
全般的に聞こえるチリチリしたノイズの原因はプローブで追う限り、
前段のBIAS直後で加わっているようなので、電源周りの問題かも。
ただ、オペアンプの電源を電池に変えても変化がないので悩ましい。。

2017年5月20日土曜日

[PPTP]MICROE-506サウンドカードを使うテスト その1[WM8731]

drugscore様に紹介して頂いたサウンドカードMICROE-506なのですが、
RaspbianにWM8731のドライバがありソフトウェア的な導入が楽、かつレイテンシーもかなり速いのです。

が、そんなに甘くなかった!
毎度の事ながら電源周りの原因と思われますがノイズに悩む事になります。
ここの記事ではその実験結果と打開方法を模索するページです。

【ここまでのまとめ構成】

電源は結局USBでPi、GPIOでWM8731へ供給にしました。
これで電源供給が安定しました(他の方法は起動が不安定になる場合あり)。
うすーくドドドドとノイズ乗りますが、ギターの弦触るとノイズが落ちるので、
まぁ現状はいいかなと妥協しました。
どうしても気になるなら図の場所にパスコンかフェライトコア入れようかと思います。

また、プリアンプの抵抗を小さくしました。
手元にパーツが無いのですが、ピックアップの出力が大きいベース等に
汎用的に使えるようにするなら2連ボリュームを入れたほうがいいです(後述)。

市販品のノイズと比べるために
ZOOM U-22にギター直で録音したものと、
WM8731で録音したもの(既に増幅率を小さくしている)を比べてみたのですが
発見したことがあります。
前半はU-22の綺麗なハムバッカーのサウンド。
一方後半のWM8731は図の通りクリップ・歪んでいます。
調べてみるとWM8731のライン入力で音が歪んでいる模様。
意外と歪んでいました。
オーディオ設定で入力をツマミの半分にすればほぼ音割れしませんが、
ピックアップの出力ごとにオーディオ設定弄るのも煩雑なので
一般的なオーディオインターフェースに習い、WM8731のライン入力の手前に
2連ボリューム入れたいところです。

これでプリアンプ側はだいたいFIXかなと思います。
後はアンプ出力側の回路か。。




以下、まとめまでの実験内容
*************************************************************
【パターン1:とりあえず最小構成でサウンドカードを繋ぐ】
図の通り、サウンドカードをそのままRaspberry Piに接続します。
ラインインを使用しましたがノイズが小さい!オーディオクオリティ!
が、ギターを繋ぐにはマイク端子なりラインインなり、それなりにプリアンプが要るのですよ。。



【パターン2:電池供給のプリアンプ】
こんな感じでデュアルオペアンプをステレオで使いました。
オペアンプなんかLM386をスモーキーアンプ回路でしか使ったことないので
ずいぶん苦労しましたが、いかにもテンプレ的な回路で鳴りました。
増幅しすぎてちょっとだけ歪んでますが、おいおい改良しよう。。
なお、プリアンプ自体は元気のあるサウンドですよ!

図に書いてあるGNDを結線しない場合、相当ノイズが乗ります。
結線した場合、改善されます。どこか浮いてたGNDが繋がっていい感じになったんだろうか?
ただ、この状態でも少しだけサーッとノイズが乗ります。
Puredataを
adc~
|
dac~
直結させたパッチで若干ノイズが乗っているので改善したほうがよさそうです。



【パターン3:プリアンプの電源を主電源から取る】
さて、このパターンでハマりました。
凄まじいノイズが乗ります!

こちらの藤本先生のページはeVY1シールドの場合ですが、
ほぼこの動画と同種のドドドドドドドというノイズが、動画より酷い爆音で鳴ります。
ページの解説と私の書いた図を眺めてみますと、
GNDが直接繋がって輪っかを描いている訳ではないのですが、
プリアンプ→降圧キット→Raspberry Pi→サウンドカード→プリアンプ
で確かに輪っかを描いています。
これ、絶縁型DC/DCコンバータでもどうにもなりません。
→パターン4で解決しました。


【パターン4:プリアンプの電源を主電源から取る(GND接続)】

drugscore様より助言頂きまして、プリアンプのGNDが浮いているので
Raspberry Pi側のGNDに繋ぎました。
見事にドドドドのノイズが消えました!
USB5V_GND.wav
前半がGNDを繋いだ状態のサウンド、後半がGNDが浮いたドドドドのノイズです。
改善して良かった。。
ちなみに原因はわからなかったのですが、このドドドドのノイズ、
Piに給電するUSBケーブルによっても出るときと出ない時があります。
ただ、いずれにしてもGNDが浮くとサーッとノイズは多くなるので繋いだほうがいいです。


【パターン5:Piの給電をGPIO直にする】
GPIO_5V.wav
一部で行われているPiの給電をUSBからではなく、
GPIOの
Pin4・・・5V
Pin6・・・GND
より給電する方法を使いました。
・・・あまり変わらない?
もしくは微かにドドドドのノイズが出ています。
→簡易的な対処方法でフェライトコアをプリアンプの電源の直後
(図だと12V DDコンの直後)に入れるとドドドドのノイズが消えました。
ただし、全体的に聞こえるサーッというノイズは消えません。



【パターン6:Piの給電をGPIO直にする(パスコン追加)】
パターン5の降圧キット~PiのGPIO間の5V・GNDに並列に
0.1μFと220μFのパスコンを入れました。
結論、ほぼ効果無し。
USB_GPIO_GPIOpascon.wav
前半・・・降圧キット→USB給電(Pi内部にレギュレータあり)
中盤・・・降圧キット→GPIO直(Pi内部のレギュレータをショートカット)
後半・・・降圧キット→パスコン→GPIO直(Pi内部のレギュレータをショートカット) 
です。この2200μFパスコン→降圧キット自体、
粗悪なUSB電源アダプターよりはノイズ対策の効果がありますが
降圧キット以降は大して変化はありません。

※以下、今後試してみようと思う事。
・降圧キットから直で取っているので大きな容量のパスコンを入れる。
・プリアンプの増幅前後にフィルタを入れてみる。





*********************************************************
【番外編1:サウンドカードの電源を主電源から直で取る】
よく見るとDC/DCコンバータで3.3Vにして供給ですが。
この状態、サウンドカードはRaspbianで認識するのですが音が鳴りません。
正確には、サウンドカードまでは音が来て鳴るのですが、
Raspberry Piには音が来ていない状態のようです。
オーディオのプロパティにある
Output Mixer Line Bypassをオンにするとヘッドホン端子から音が聞こえるのですが、
Puredataで音がエフェクト加工できていないあたり、
Output Mixer Line Bypassはラインインの音をそのままヘッドホンにダイレクトモニタリング的に返す機能の模様です。
という事で、MICROEのサウンドカードでは今のところ
電源をRaspberry Piから取るしか手段はなさそうです。
でも他のWM8731使ったサウンドカードなら上手くいくのかもしれない。う~ん。。

※サウンドカードのGNDをPiに直結しましたが、やっぱり鳴らず。そんなに甘くなかった。



【番外編2:プリアンプの電源をPiから取る】
昇圧パーツが絶縁型DC/DCコンバータしか手持ちになかったので上記のようになっています。
効果は目に見えてあり、グラウンドループのドドドドのノイズは無くなりました!
ただし、ドドドドに比べればまだマシですが、
かなり大きなザーッというノイズは残ります。
これについては絶縁型DDコンはGNDが分離されているようなのですが、
DDコンの前後のGNDを繋いだほうが若干ノイズが和らぎます。

これはギターについての話で、実は上記構成でスマホのヘッドホン端子から繋ぐと
実用に耐えるノイズの少なさになります。
・・・ということはプリアンプがダメなのか?
ちょっとプリアンプを見直してみます。
→オペアンプの100kΩを22kΩに変更で入力レベルで音が歪むのを若干和らげます。
もっと小さい抵抗でもいいかも。

前述のザーッというノイズですがPuredataの簡易VUメーターでー50db程度なので
全く使えない訳ではない?ノイズゲート入れればもちろん気にはなりませんが、
やっぱりハイゲインで歪ませると気になりますか。。




2017年4月16日日曜日

[PPTP]帰ってきたオーディオインターフェースの選定 その2

いきなりですがZOOM U-22を買いました。



いままではNative InstrumentのKOMPLETE AUDIO 6をWinows用に使ってます。
(ごめん、動画で誤記載してますがずっと"AUDIO KONTROL"という名前だと思ってました)

これも長いこと使っているので(もう4年くらい前?これ以来NI社からI/Oの新商品出てるのか、、?)新しいI/Oを試したかったのと、
PPTP用にU-22使えるならやってみようと購入。
さてRaspberry Piではこの両者、どうなのでしょうか?

以下、人柱的なコメントなので試す方は自己責任でお願いします。
結論としては両方とも認識して使えます。
レイテンシーは正直、Behlinger UCG102と大して変わらないです。
(Behlinger UCG102の記事はノーマルカーネルリアルタイムカーネルの2つあります)
こうして考えるとUCG102はもし中古で買い叩けるならコスパ高い。


【Raspbianでの互換性】
U-22もKOMPLETE AUDIO 6も使えました。
KOMPLETE AUDIO 6についてはNI社からLINUX互換性あると情報公開されています。
設定もWindowsライクにGUIから設定でき、PuredataでもALSAで使えます。

さて、U-22ですが、ZOOM公式ではLINUX対応しているかどうかも情報ありません。
しかしながらWindos(これだけドライバ要)・MacだけでなくiOSで動作します。
「これ、USBクラス・コンプライアント対応かもしれん」
特に公表されている情報無いですが上位機種は対応っぽいです。
よし、使ってみよう!


使いました!ちょっと特殊ですが「Puredataなら」すぐ使えます。
VNCでスクリーンショット取りました。
写真左上部を見ると分かるとおり、USBで挿してもタスクバーではそのまま認識されません。
(やり方あるかもしれないですか)

ただしPuredataを立ち上げると認識・デバイスを選べるようになっています。
ALSAで使うと快調です。
JACKは知らない。設定ヘタクソなのですぐ音飛びしてしまいます。


【レイテンシーについて】
正直、UCG102もKOMPLETE AUDIO 6もU-22もトントン、といった感じです。
U-22はNO-GUIでパルス撃つ試験したので載せておきます。
Samplerate:44100
Block Size:64
Delay:6

レイテンシー:16ms




さて、PPTPでは何のオーディオインターフェースを使うか迷うところですが、
UCG102かU-22になりそうです。
KOMPLETE AUDIO 6は大きすぎる・高価なので却下。




【PPTP向けUSBオーディオインターフェースのまとめ】
レインテンシーはUSB2.0で使うぶんにはどれもトントンです。
どれもドライバ無しで挿せば少々の設定すれば動きます。
USB3.0? Raspberry PiのUSBポートが対応してない。





【感想】
・マイクイン(3V程度のコンデンサマイク用直流がRingから出てるのでギターをそのまま挿せない。改造ないし変換プラグを一考する必要あり)
・ヘッドフォンアウト(アンプに挿すにはパッド入れる等しないと調整大変)
・そのため改造要るが、いかんせん外装が滅茶苦茶硬い金属製。
・それと反対に、脆いジャック。取り外そうとハンダ吸おうとしたらプリントパターンごと剥がれて難しい程度に。
その代わり失敗しても痛くないくらいコスパ最強。時間と苦労を厭わない人向け。
・音は値段相応ですがエフェクター用途で使うならそんなに悪くない気がします。
更にインにバッファ入れたり・アウトにパッドやフィルタ入れる等の改造次第で化けそうな気もします。




【感想】
・Hi-Zインが付いてそのままギター挿せるUSBオーディオインターフェースの中ではたぶん最小。
・ヘッドフォンアウト(アンプに挿すにはパッド入れる等しないと調整大変)
・外装の分解が簡単(3点ネジ止め)
・このためジャック交換程度の改造は楽。
・音はエフェクター用途ならいいと思う。むしろヘッドフォンアウトの音が意外と素直。
・以外と高いので中古で探そう。




【感想】
・Hi-Zインが付いてそのままギター挿せるUSBオーディオインターフェースの中ではたぶん二番目に小さい。まだ手のひらサイズ。
・ヘッドフォンアウト(アンプに挿すにはパッド入れる等しないと調整大変)
・でもラインアウトもある。ヘッドフォンアウトよりは調整が楽?ただしLRのRCAメス。
・ちょっと高い。でもUCG102を定価で買うくらいならこっちでもいいかも。迷う。
・ネジが見当たらない。分解し辛そう。変換プラグで頑張る人向き。
・何気に24bit。96kHzにも変更できる(がレイテンシ増えます。仕方ない)
・音はちょっとクセがあります。ZOOM独特の硬い音?妙なバッファなのか、この辺の味付けはG2.1uから変わらない。



2017年4月13日木曜日

[PPTP]帰ってきたオーディオインターフェースの選定 その1

Raspberry Pi用のオーディオインターフェースを再び探す旅に出かけます。
今回はウチにあるもので試験しましたが失敗です。
ただ、面白いデータも取れました。
続きが読みたい方はどうぞ。


さて、
PPTP(Puredata with Pi The Pedal)Mk Iオーディオインターフェースで使用しているものは、Behringer UCG102です。

ただ、こいつは既に製造年も4~5年落ちと古く、
チップもC-Mediaの古いもので長方形のチップが乗っています(型番は掠れてて読めない)

このため更なる音質・レイテンシー改善の向上を目指して
再びオーディオインターフェースを探しています。

ちなみにRaspberry Piエフェクターでよく使われている
Plugable USB オーディオ変換アダプタはC-Mediaのエントリーモデルですが
新しいチップHS-100Bが乗っており、PuredataではNo-GUIでレイテンシー12ms強まで短縮できるようです。



でも、これ以上のレイテンシーを縮めるのはUSB2.0やチップ性能も検討しないといけない気がしてきました。
物色してますがなかなか小さい筐体でよい物を見つけるのは至難の技で、
しかも大抵Linuxでの動作実績はありません。

というわけでまだ時間が掛かるのですが、
手っ取り早く我が家にある機器で使用可能か調べました。

ZOOM G2.1u
もはやディスコンで調べてみたら10年前!?のマルチエフェクターですが、
当時としては斬新なUSBオーディオインターフェースが付いているという太っ腹です。
付属のCubase LEなんか未だに使っとるがな。
音質の好き嫌いが結構でる機種でもあったのですが、、
で、いつものパルス試験を実施しようとしました。

ですが、RaspbianではUSB機器でALSA認識はすれども
Delyaやバッファをいくら増やしても音切れが止まらず失敗。

ん~こりゃ難しいかなと思ってましたが、
測定環境を組んでいたので
USBオーディオとしてではなく、エフェクターとして測定してみました。
改めて構成は。。

オシレータ

G2.1u(すべてのエフェクターOFF設定)


WindowsのオーディオI/O

そして測定結果が、、
ん、、0.3~、、、4ms、、
ほぼゼロでない?

当時でも滅茶苦茶レスポンスが速いという謳い文句だったと思いますが、
あまりの爆速にPPTP Mk2作るのがだんだんアホ臭くなってきたというオチです。


2017年4月12日水曜日

[PPTP]Raspbianのreal-timeカーネル導入とPuredataのレイテンシー効果

表題の通りです。
とりあえず設備導入しなくてもすぐできるところから試してみます。

optimize — Pd Community Site - Pure Data
にて
Realtime, low latency kernel patches (does not apply to PPC achitecture!)
とあるので導入しました。
結果:あるような、ないような。。
以下、長文なので興味ある方のみ読んでください。


Real Timeカーネルの導入方法はたぶんこちらのサイトが一番楽です。
といいますか、あっさり導入できました。
ただし、一度私、失敗してRaspbianが立ち上がらなくなったことがあるので、
SDカードのイメージのバックアップは取っておいてください。

$ uname- a
を叩いてコンソールの返したカーネルの内容が
導入前:Linux raspberrypi 4.X.XX-vX+
導入後:Linux CuiPi3 4.4.4-rt9-v7+ #7 SMP PREEMPT RT 
rtとPREEMPT RTあればOK。
また、導入後はraspi-configで更新掛けるとカーネルが元に戻るらしいので要注意です。

Real-Timeカーネル導入しまして、
以下の状態でパルス撃つレイテンシー試験しました。



【VNCでX起動したGUIあり】
Samplerate:44100
Block Size:64
Delay:9(11から短縮できました。)
とりあえず音切れ無いところまで調整して
レイテンシー20ms

RTカーネル導入前は
Delay:11
でレイテンシー:22ms
なので僅かながら効果ありました。



【NO-GUIで】
Samplerate:44100
Block Size:64
Delay:8(ノーマルのカーネルだと6で音切れしないギリギリでしたが増えた!?)
*.pdsettingsを弄って-nogui -rtオプションを付けています。

レイテンシー17ms
前回から2ms増加です。
no-guiで一番恩恵が得られそうな気がしていたのですが、そうでもない模様。

もっと設定追い込まないといけないのかもしれませんが、
自分の小手先の設定変更ではレイテンシーは縮まりませんでした。


ただ、ひょっとするとこちらの記事の結果をみるに
Realーtime Kernelのほうが不慮の音切れが減って安定するのかもしれません。


2017年4月11日火曜日

[PPTP]Puredata with Pi The Pedal Mk IIの作成開始

唐突ですがPuredata with Pi The Pedal Mk IIの作成開始しました。



まず始めに現在?のMk Iの構成は以下の通り。
Raspberry 3にGUIもPuredataの音声処理もやらせています。
【メリット】
PuredataパッチがWindows PCで作成したものをそのまま走らせるので
パッチ入れ替えなどメンテナンス・運用が容易

【デメリット】
X Window含めたGUIの処理も音声処理もRaspberry Pi3単独でやるので
レイテンシーが発生。


さて、Mk Iの物理構成でGUI有りと無しでパルス撃つ簡易試験を実施しました。
いつものこのパッチでサイン波を送り込みます。

結果はこちら。(GUIありは前回の結果そのまま転載しています。)
設定
Samplerate:44100
Block Size:64
Delay:11ms

レイテンシー:22ms

検証ではX起動状態でPuredataを使うとレイテンシが増加するので
次はX Windowは切って、コンソールでpd -nogui test.pdで同様の実験をします。

設定
Samplerate:44100
Block Size:64
Delay:6ms
レイテンシー:15ms

ちょっと縮まりました。
これ以上はUSBオーディオの性能と思われます。


さて、話は戻りましてMk IIですが、
相変わらずGUI操作の利便性は捨てきれなかったので
以下の図の構成を現在作成中です。
我が家で余っているRaspberry Pi 1をGUI処理・タッチパネル操作のみの仕事をさせ、
LANケーブルで繋いだRaspberry Pi 3はNO-GUIで音声処理をさせます。
まだ音出しできる状態ではありませんが、
Pi1からPi3へのnetsendとnetreceiveは成功しました。
Pi1のCPU負荷が100%に跳ね上がりますが、
GUIの動作やOSCもサクサク動いているようです。

ちなみにこのやり方、
optimize — Pd Community Site - Pure Data
The poor man's multithreading!
のあたりにOSC使っちゃえよ!とあります。


まだたくさんやらないといけない事がありますが、
まだRaspberry Piでは見かけない構成なので引き続き細々とやりたいと思います。

[以下、やりたいこと備忘録]
・イーサネットコンバータ化(現状LAN繋ぐと外部のWindowsPCからsshできない)
--->使うWiーFiアダプタでうまくブリッジ化できないかもしれない。
raspberry pi3側をGUI(イーサネットコンバータ化)にしてraspberry pi2側をCUIにしたほうがいいかも。


・Raspberry Pi3側のreal-timeカーネル導入(1回失敗したが再チャレンジしたい)
--->余り効果なし。場合によっては不安定になる。


・ケース作り(Mk Iのケースでは既に収まらない!サイズほぼ倍になるかな?)
--->Arduino Megaのコンパチでスイッチやロータリーエンコーダーをなんとか使えるようになりました。


・USBオーディオI/O探し(予算と候補があれば。こっちの記事ではトラブってますがzoomのU-44をLinux mintで運用している模様)
ーーー>U-44でもUSBオーディオとALSAではレイテンシーに限界があります。
そこで、紹介してもらいましたWM8731のサウンドカードを使います。
レイテンシーは速く良好です。しかしraspberry piから電源を取るとノイズを拾う模様。
そこでサウンドカードの電源3.3Vを個別に用意したのですが、何故かサウンドカードを認識しません。う~ん。。

2017年4月9日日曜日

[Puredata]レイテンシー考察 その2


前回までのあらすじ

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

2回の記事で、体感上のレイテンシーよりもPDのツールで測定したレイテンシーが遥かに高いので何が本当のレイテンシーか分からなくなってきたところで終了。

その後、こちらのシンプルにパルスを打つ測定法も試しましたがPD謹製のツールとレイテンシーが変わらず苦悩しました。
→結果としてこの後書く、ほぼパルス撃つ試験と同成績になります。正解です。


そして悟りを開いた結果、
「そうだ、自分で測定パッチを作ろう」
→失敗しました
最下部に前回記事だけ残しておきますが、
微弱な信号?ノイズに反応して測定開始するというピーキーなパッチでした。

drugscore様に良い試験方法を教えて頂き、
PPTPで実験してみました。

オシレータだけスマホでサイン波を用意している以外は構成は同じ方法です。
【バイパス構成】

この構成で実験しました。
Samplerate:44100
Block Size:64
でDelayだけ変えてみます。
Delay20msで35ms


Delay11msで22ms

うん、自分の耳がおかしかっただけで、測定結果はツールとほぼ同じ(哀)
Delay弄ればレイテンシーも実は変化していたというオチでした。


【実際のパッチ運用構成】
悲しいオチでしたが、いい試験方法が見つかったので、
今度は実際に使っているエフェクトパッチを運用するとどれ位遅延するのか測定しました。
用意したパッチはこちら。GUIの順番がバラバラですが、全部直列に繋いでいます。
順番は、、
Adjust adc~(入力レベル調整)*

NoiseGate信号検出側パッチ*

WahWah

Tube Scuttle OverDrive

V8custom Preamp

Cabinet EQ

NoiseGate動作パッチ

Cabinet Air(中身はほぼディレイ)

専用dacパッチ*

*は接続の関係でバイパス時も常にOnです。
Puredataは
Samplerate:44100
Block Size:64
Delay:11ms
で設定。。


23ms。1msくらいは誤差でるのでadc~→dac~直結の最小構成と考えてもほぼ同じ遅延。
速い!


Preampを追加でOn。
23ms。
フィルタやexprでクリッピングを多くしてますが、バイパスと変化無く、
思っていたよりも速い。



Preamp + Cabinet EQ & AirをOn。
Airは単発とはいえショートディレイ使っているので遅いかとおもいきや
23msとまだ変わらず。



NoiseGate動作パッチ以外はワウもオーバードライブも全部On。
ここで25msとすこし遅延が増えました。
NoiseGateもOnにしました。
35ms。閾値を大して調整してなかったせいもありますが
一気に遅延したのでNoiseGateはまだ改良の余地があるかもしれません。


以上、パッチの実際の運用を含めてレイテンシー測定しましたが、
Puredataでの処理自体は高速なので遅延はあまり気にしなくてよさそうです。


********************************************************







【以下、自分でパッチを作って失敗した例】
→完全に失敗作でしたが、env~とmoses使ってシグナル検知する方法を使っています。
もう少し閾値を高く設定しておけば誤差も少なかったと思われます。


自分の思っているレイテンシーと謹製パッチの測定結果で違和感があるのは、
これぐらいシンプルで、弾いたギターの生音とヘッドホンから出てきた音のレイテンシーが知りたいのですが、
謹製ツールはやたら複雑なオブジェクトが多く、処理が重い分レイテンシーが水増しされているんでは?と考えたからです。
実際に使われている、アタック検出するbong~ですが、
これ2個をならべてtimerで測定した簡単な測定パッチを作っても結果は謹製パッチとほぼ同等になります。
どうもシビアな測定をしようと思うとこのあたりがボトルネックになっていると考えました。





考えました!雑!
(でもやり方に疑問あるかたはご指摘ください!むしろいい方法を教えてほしい!)
できるだけ軽そうなオブジェクトを選んでみました。
試験音は立ち上がり検出の速いphasor~で。
実際の測定方法は写真のStartのBangではなくdac~直前の
env~
|
moses 1
|
bang
|
timer
です。
このあたりはギターのストローク開始ではなく、ギターの弦にヒット・発音したというのをイメージして、ここからスタートとしています。

本当はthresholdでbangしたかったですがうまくbang出来なかったので、
mosesで代用しました。
何発か無駄なbangしてしまいますが、しかたがない。

さて物理ケーブルでアウトプットからインプットまでループして戻ってきたら、
同様にmoses でbang打ってtimerを止めます。

計測結果はコンソールにプリントアウトします。
これはStartのbangが何発か無駄弾を打つので測定結果を上書きしないようにするためです。

それでは測定結果を見てみましょう。。


【測定結果(Windows)】
Samplerate:44100
Block Size:64
Delay:30
で何回か測定。。

70ms



81ms(中段付近。コンソールリセットせずに測定しました。見づらくてすみません)






81ms







58ms!?


WindowsでMMIOのせいか、だいぶんバラつきがでます。
でも謹製ツールより若干短くなります。


【測定結果(PPTP)】
こちらも
Samplerate:44100
Block Size:64
で測定してますが、Delayは変えています。
若干無駄Bangと入出力レベルの調整不足で0msを吐いていますが、
なかなか面白い結果がでました。




 Delay:5で11.6ms(音飛ますが一応測定するとこうなります)



Delay:11で11.6ms
Delay:20で11.6ms


さすがに11.6ms以下の結果も揃いすぎてるのは気持ち悪いですが、
PPTPはDelayを変えても聴感上のレイテンシーが変わっていないという体感は
あながち間違いではないのかもしれません。

2017年4月8日土曜日

[Puredata]レイテンシー考察 その1

drugscore様よりPuredataのライブラリ内に
レイテンシーを測定するツールがあることを教えて頂き、使ってみました。
Windows版・Linux版共に
Pd\doc\7.stuff\tools\latency.pd
のパッチです。
【使い方】
パッチを開くとサイン波が出力されています。
これをお手持ちのオーディオI/Oのアウトプットから出力→インプットから音を拾って測定します。
これはWindows環境でNI社のAudio Kontrolの構成ですが、右のヘッドフォンアウトから左のインプットへ接続します。
ループさせるようなイメージの接続です。

次にパッチのWindowを見まして、
"adjust gain here"でサイン波の入力ゲイン調整できるので調整して、
"RMS amplitude in"が"RMS amplitude out"の値に近づくようにします。

これで1秒毎に"latency in milliseconds"でレイテンシーが表示されます。

それでは測定結果を見てみましょう!

【測定結果(PPTP)】
さて我がPuredata witn Pi The Pedalですが、どれほどの速度がでるか楽しみです!

写真のようにインプットとアウトプットとループさせまして、、
(オシロの校正みたいだな、、)
Puredataは
Samplerate:44100
Block size:64
の設定にしてみて、Delay(msec)を変えて測定してみます。

以前の記事で「聴感上の」測定では、設定を切り詰めても10ms強かな、、
という印象ですが果たして結果は、、

Delay(msec):20で
測定結果は34ms。




Delay(msec):11で
測定結果は23ms。

ん、、予想より遅い。いやまあ前回の測定では自分の耳が腐ってちょっと良く盛ってたと思えばそれまでの事(悲)

次にWindowsの測定に取り掛かります。

【測定結果(Windows)】
こちらは
Windows10
Audio Kontrol
の構成です。
普段パッチの紹介動画はこれにWindows10標準搭載のXbox動画撮影機能で撮影しています。
いつもレイテンシーが厳しくて録画に苦戦しています。

以下のPuredataのオーディオ設定で測定しました。
Samplerate:44100
Block Size:64
Delay(msec):30
これよりDelayを下げるとバッファが切れます。

その結果、、
レイテンシーが101ms!?
PPTPより遅いとは認識していましたが、いや幾らなんでも遅すぎる、、
これでは動画を撮りながらギターを弾くのはいくらなんでも無謀すぎます。。

このパッチ、レイテンシーの測定以外にもバッファ切れの測定もしているので
ひょっとすると正解よりも多めにでるのかも?

測定パッチの中身も覗いてみました。

del 800
|
snapshot~
|
* 1000
|
float(レイテンシーの数値表示)

レイテンシー表示の直前にdel 800という怪しい記述あり。
おそらく数値の調整で入れているとは思われますが、、
また、こちらの記事ではALSAを使うと10msを切れるのかもしれません。

というような、謎な事もありまして、
バッファ切れは度外視して、
短いパルス1発撃ってレイテンシーだけ測定するような
シンプル設計の測定方法に改造できないか妄想中です。



※前述の「聴感上の」測定ですが、
Audio Kontrolにはダイレクトモニタリング機能が付いています。
これとDSP処理後の音をミックスすれば①単発ディレイが掛かっているような音になります。
この音を聴き、Puredataにはdelwrite~とdelread~があるので、
(よほど短いレイテンシーでなければの条件付きですが)
Puredataで作成したadc~から入った音+数msのディレイ音を②ミックスします。

①②を比べて似たような遅延音になったあたりがおよそのレイテンシーという、
ものすごく曖昧な人力測定を行っておりました。

あながちlatency.pdの測定結果は間違いではなさそうです。
パルス1発撃ってみる試験を実施するとほぼ同程度の結果になります。
次回分で内容掲載します。

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にすると急激にバッファ不足で音切れが発生します。




[機材]Boss Mega Distortion MD-2 MOD

こちらの記事 で無改造のVanillaを紹介していますが、 今回紹介するのは自分で改造したものです。 紹介動画は以下。 内容は、 Vanillaの低音域が効きすぎて少々使いづらかったので 1:低音をカット(ただしゲインも少なくなるので) 2:ブースター...