Armadillo-640 MQSオーディオの音量調整

Armadillo-640にて、動作確認を実施しています。

その確認で、音の再生は、以下のURLのHowtoを参照しながら行った結果、音を再生することができました。
https://armadillo.atmark-techno.com/howto/mqs-a640

音量を調節するためには、どのようにすれば良いでしょうか。

製品: 
Armadillo-640

中村です。

> その確認で、音の再生は、以下のURLのHowtoを参照しながら行った結果、音を再生することができました。
> https://armadillo.atmark-techno.com/howto/mqs-a640

この回路でどの程度の音がでるのか興味があり、
動かしてみました。
こんな簡単なものでもソコソコ使える音が鳴るんですね。

> 音量を調節するためには、どのようにすれば良いでしょうか。

記事にあるaplayでは音量調節はできませんが、
(何年か前に調べたときはaplayではできませんでした)
alsaplayerやmpg123などを使えば音量調節できます。

alsaplayerやmpg123以外の方法もあると思いますが、
(ミキサーを使うとか、別の再生プログラムとか...)
alsaplayerとmpg123での簡単な動作確認手順を
書いておきます。

// Kalimba.mp3はWindows7に入っているサンプル音源です

● alsaplayer
// alsaplayerはwavの他にmp3なども再生できます

インストール
# apt-get install alsaplayer alsaplayer-daemon

まず、GUIなし(-i daemon)で、音源ファイルも指定せずに、
バックグラウンドで動かします。
$ alsaplayer -i daemon -d hw:0 > /dev/null 2>&1 &

音源ファイルを設定すると再生が始まります。
(設定したときに再生させない方法もありますが割愛)
$ alsaplayer -e Kalimba.mp3

音量は、0~1の間の値で指定します。
$ alsaplayer --volume 0.0 # 消音
$ alsaplayer --volume 0.1 # 10%
$ alsaplayer --volume 0.2 # 20%
$ alsaplayer --volume 0.35 # 35%
...
$ alsaplayer --volume 1.0 # 100%

状態表示
$ alsaplayer --status

再生停止
$ alsaplayer --stop
またはフォアグランドにしてCTRL-C

● mpg123
// mpg123はwavファイルは再生できません

インストール
# apt-get install mpg123

音源ファイルを指定せずにリモートモード(-R)で起動。
$ mpg123 -a hw:0 -R

音源ファイルを設定すると再生が始まります。
L Kalimba.mp3

音量調節
画面に連続的に表示が出ますが、
それらを無視して%で入力します。
V 0 // 消音
V 10 // 10%
V 20 // 20%
V 35 // 35%
...
V 100 // 100%

再生停止
S
または
CTRL-C

--
なかむら

中村様

はじめまして。
奥田です。

貴重な情報有難う御座います。
実機で動作確認してみます。

また、追加でお教え頂けますでしょうか。

なぜ、アプリケーションにより音量が調節出来たり、出来なかったりするのでしょうか。

また、ミキサーを使うとありますが、ミキサーを使用すれば、aplayでも音量調節出来ると
いうことでしょうか。
(そもそもミキサーがわかっていません。)

以上、宜しくお願い致します。

中村です。

お断りしておきますが、Linuxのオーディオはそれほど
詳しいわけではなく、6年くらい前にArmadillo-440で
オーディオ再生アプリを作るのにいろいろ調べて、
何とか動かせた、という程度の知識しかありません。
また、そのあとはLinuxオーディオはいじってませんので、
記憶があやふやな部分や間違いもあるかもしれません。
もし間違いがあったときには、どなたがご指摘ください。

昨日の音量調整の実行例は、Armadillo-640で実際に
試してから投稿しましたので、そのとおりに動くと思います。

> なぜ、アプリケーションにより音量が調節出来たり、出来なかったりするのでしょうか。

aplayは、再生に専念するプログラムだからです。

> また、ミキサーを使うとありますが、ミキサーを使用すれば、aplayでも音量調節出来ると
> いうことでしょうか。

amixerやalsamixerが音量設定(など)をして、
aplayが再生、という役割分担をしています。

amixerやalsamixerはALSAのデバイスレベルで
音量設定をします。
これに対して、昨日使ったalsaplayerやmpg123は、
アプリレベルで音データの音量値を変更して、
ALSAデバイスへ出力します。

パソコンでのOSレベルのでスピーカーの音量調節と、
再生アプリでの音量調節のようなものです。

ここまでは、ALSAの一般的な説明です。
(間違いがないか、ちょっと不安)

ALSAの仕組みと関連するプログラムについては、
ここで簡単に説明できるものではありませんので、
解説書やwebの情報(玉石混交ですが)で調べてください。

Armadillo-640のMQSオーディオでは、
私が試したところではamixerとalsamixerは
動きませんでした。

amixerは何も表示せず、
alsamixerは「Card: mqs-audio」と表示されますが、
「This sound device does not have any controls.」
と出て、何もできません。

--
なかむら

中村です。

> Armadillo-640のMQSオーディオでは、
> 私が試したところではamixerとalsamixerは
> 動きませんでした。
>
> amixerは何も表示せず、
> alsamixerは「Card: mqs-audio」と表示されますが、
> 「This sound device does not have any controls.」
> と出て、何もできません。

原因切り分けのために、USBスピーカーを試してみました。

Armadillo-640の標準イメージではUSBオーディオはOFFなので、
カーネルのコンフィグレーションでUSBオーディオを有効に。

市販のUSBスピーカーを接続して、

# aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: mqsaudio [mqs-audio], device 0: HiFi fsl-mqs-dai-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 0: mqsaudio [mqs-audio], device 1: HiFi-ASRC-FE (*) []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
card 1: Device [USB Audio Device], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

amixerの場合:

# amixer -c 1
Simple mixer control 'PCM',0
  Capabilities: pvolume pswitch pswitch-joined
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 62
  Mono:
  Front Left: Playback 42 [68%] [-20.00dB] [on]
  Front Right: Playback 42 [68%] [-20.00dB] [on]
 
# amixer -c 1 set PCM 50%
Simple mixer control 'PCM',0
  Capabilities: pvolume pswitch pswitch-joined
  Playback channels: Front Left - Front Right
  Limits: Playback 0 - 62
  Mono:
  Front Left: Playback 31 [50%] [-31.00dB] [on]
  Front Right: Playback 31 [50%] [-31.00dB] [on]

alsamixerの場合:
# alsamixer -c 1

amixerとalsamixerの"-c 1"は"-D hw:1"でもいいみたいです。

--
なかむら

中村様

早速の御回答有難うございます。

ご丁寧なご説明により、aplayで音量調整理解出来ないことが理解出来ました。

以上、宜しくお願い致します。

中村様

連続での御回答有難うございます。

ミキサーについての御回答ですが、あまりに知識がないので良く理解出来ていません。

以下の認識で間違いないでしょうか?

 1.ミキサーとして、amixer・alsamixerの2種類がある。

 2.MQSを使用した場合、どちらのミキサーも使用できない。(ミキサーが認識出来ない?)

 3.本当にミキサーが使用できないかどうか確認するために、USBオーディオを試した場合、ミキサーが使用できる状態になる。

 上記より、MQSの場合、ミキサーを使用しての音量調節は出来ない。

以上、宜しくお願い致します。

中村です。

> 以下の認識で間違いないでしょうか?
>  1.ミキサーとして、amixer・alsamixerの2種類がある。

他にもあるかもしれませんが、私は知りません。

>  2.MQSを使用した場合、どちらのミキサーも使用できない。(ミキサーが認識出来ない?)

alsamixerで試したときの表示を見る限りでは、
認識できないのではなくて、
MQSがボリュームコントロールの機能を持っていないようです。

>  3.本当にミキサーが使用できないかどうか確認するために、
> USBオーディオを試した場合、ミキサーが使用できる状態になる。

「USBオーディオ(で)...使用できる状態になる」ではなくて、
MSQデバイスではamixerとalsamixerが使えなかったが、
USBオーディオでは(予想通り)amixerとalsamixerが使えた、
ということです。

>  上記より、MQSの場合、ミキサーを使用しての音量調節は出来ない。

現状で私が試した範囲ではできないみたいですけど、
次の資料を見るとできるみたいです。

[i.MX Linux® Release Notes - Rev. L4.9.88_2.0.0-ga, 05/2018]
https://www.nxp.com/docs/en/release-note/i.MX_Linux_Release_Notes.pdf

「Table 9. Supported features」の中の「SAI/MQS」ところに、
  6ULL: Supports amixer alsamixer control from user space.
と書いてあります。
P15の表の中です。

アットマークテクノさんが用意してくれたMQSの実装(ソース)が古いのか、
別の理由(たとえば使い方の問題など)なのかは、わかりません。

--
なかむら

中村様

御回答有難うございます。

全くの認識違いで、誠に申し訳御座いません。

あまりの知識のなさを反省し、自分自身でも学習・調査してみます。

その上で、また新たな疑問が発生した場合、御質問させて頂ければと思います。

以上、宜しくお願い致します。