動画!4chマイクのゲインをALSAで変更する~Python | ..あちゃ! no mic's

..あちゃ! no mic's

クラウドファンディング予定~2026年度
何度でもチャレンジ!
ただいまソーラーピックアップのテスト中

SANTA no Mix

前回の、続き、

ポッド4個でボリューム、エレキギターのレガシーなインターフェース?を継承したいとかで、

発想は、せっかく用意した省エネ小型デジタルアンプに、アナログメーターつけて、針がビヨーンビヨーン動くようにしてくれ的な、メーターだけで、かなりの大きさになり、、

今の自分には、割り込み用のLoudnessボタンを一つ用意しないと、スマートなものはできそうにありません。

苦肉の策として、今回、投げ出さないで、トライした結果を載せておきます。

ボリュームとADCの値段、もったいないので、没ネタにして、「Up:Down」×4組のボタンを用意して、余計な操作なしに、ダイレクトに音量に反映できたほうがよさそうです(チャタリングの問題で、ずっこけて、居たり、するかも)。

 

https://ameblo.jp/math-physics/entry-12816904698.html 

 

 

4チャンネルなピックアップを4個のボリュームで、操作できるように、しています。

 

テキトーに、USBポートへ繋いだ4個のマイクをALSAでボリューム調整、の、テスト。

ターミナルから、

$ amixer -c*

PnP-USB-Audioは、"Mic."として認識されています。

 

$ alsamixer

「F6」でサウンドカード選択

 

「F4」でキャプチャ画面へ

 

$ amixer -c1 sset Mic capture 70%

(dB)表記もできる、

 無事に、ボリュームが70%になりました。この手順を前回のコードに追加で、Pythonのsubprocessで、ボリューム(Bカーブ10kΩ)4個の電圧の値から、4個のマイクの音量を設定するテストをしました。

 

 ボリュームの電圧、(0~3.3V) ÷ 3.3V × 100%で、計算しました。

ローカルなラズパイのGUI起動な状態で、4個の接続に、6秒くらいは、かかりました。

 

どこをどうするかは、今後の、課題ですが、とりあえず、4個のポッドから、一つ一つ、順番に、電圧の値を読んでいき、その度に、ひたすらALSAの音量を変える操作を無限ループで、繰り返してみました。これ以上、重たい処理は、なさそうなので、これ以下(ダメダメ)、な、処理はあり得ません(ほぼ最終なコードは末尾に載せてあります)。

 ALSAの接続に、時間がかかり、処理が、追い付きません。

 

CPU使用率40%、

 

 

#追記23/08/23

とりあえず、本日、最終、

ADS1115の全チャンネルをひたすら読み続ける操作、CPUを14%食らっています。

いじくって、思ったことは、ボリュームをゼロに絞ると、電圧もちゃんと0Vに決まるので、それを音量調整のサインにしました。


P0

P1

P2 _________

P3        ↓

P0   1秒くらいだと、

P1     思う、

P2 ____↑_____

P3


ボリュームをゼロに(1~1.5秒)したら、そのチャンネルの音量変更が可能になります。5秒以内に、ボリュームを設定したい音の大きさに合わせます。合わせた後、5~6秒で、セットされます。

ボリューム調整モードに入ると、各チャンネルの読み込みは、中断するので、CPU使用率は5%くらいまで、下がります。

 

 

一番、つまみやすい格好で、ポッドを握って、いったん、ゼロにして、元の位置に戻すと、結構狂いなく合ってるので、楽器の奏者ともなれば、そのへんは、器用にできると思います。

ポッドの電圧の値は、アナログなので、毎回違います(ゆらぎ)が、いったん固定すると、変更はポッドをゼロにするまで、更新されません。

 

おそらく、ポッドを握ったたきの、ノイズで、エラーを、吐いて、プログラムが、停止したことがあったので、原因は、ハッキリ、させておきたい、ところです。
 
0Vの精度を上げるために、round()で桁を丸めてみたら、効果がありました。そもそも、ポッドが劣化すると、0Vを読み取れない事態が起こるかもしれないので、今後の課題になります。
 

 

 

 

次回、以降、サウンドカードを載せて、音を出してみたいと思っています。

 

 

本日も、Picsartに、お願い、