Howto

Armadillo-500 でUSBオーディオを使う

USBオーディオを使用して録音/再生を行なう方法を紹介します。録音/再生を行なうアプリケーションにはalsa-utilsを使用します。

なお、本Howtoでは、以下の環境を想定しています。ご利用の環境に合わせて適宜読みかえてください。

項目 動作確認環境
対象製品 Armadillo-500開発セット
atmark-dist atmark-dist-20090318
Linuxカーネル linux-2.6.26-at6
スピーカ AUDIOJACK-USB
マイク Qcam Orbit AF
ATDE atde2-20090403
alsa-utils バージョン1.0.13-2
libasound2 バージョン1.0.13-2

本Howtoで作成するイメージファイルは以下からダウンロードすることができます。

項目 イメージファイル
ユーザランド romfs-usb-audio-a500.img.gz
Linuxカーネル linux-usb-audio-a500.bin.gz

1. LinuxカーネルのUSB Audioドライバを有効にする

LinuxカーネルのUSB Audioドライバを有効にします。atmark-distのコンフィギュレーションで以下のように設定してください。

Main Menu

Vendor/Product Selection  ---> 
--- Select the Vendor you wish to target
(AtmarkTechno) Vendor
--- Select the Product you wish to target
(Armadillo-500) AtmarkTechno Products 

Kernel/Library/Defaults Selection  --->
--- Kernel is linux-2.6.x
(default) Cross-dev
(None) Libc Version
[*] Customize Kernel Settings (NEW)
[ ] Customize Vendor/User Settings (NEW)

次に、カーネルのコンフィギュレーションを行ないます。

Linux Kernel Configuration

Device Drivers  --->
  Sound  --->
    <*> Sound card support
        Advanced Linux Sound Architecture  --->
          USB devices  --->
            <*> USB Audio/MIDI driver                      <-チェックをいれます

2. ビルドする

alsa-utilsのバイナリをイメージファイルに組み込むためにいちどatmark-distをビルドします。以下のコマンドを実行してビルドしてください。

[PC ~]$ cd atmark-dist-20090318
[PC ~/atmark-dist-20090318]$ make all

3. alsa-utilsの動作環境を構築する

まずはATDEにlibasound2をインストールします。手順はHOWTO: クロス開発用ライブラリをインストールする方法を参考にしてください。

設定ファイルはATDEにインストールされないため、libasound2に含まれるファイルを取り出してをatmark-dist/romfs内にコピーする必要があります。

[PC ~]$ ls
atmark-dist-20090318    linux-2.6.26-at6    libasound2_1.0.13-2_arm.deb
[PC ~]$ dpkg -x libasound2_1.0.13-2_arm.deb libasound2
[PC ~]$ cp -r libasound2/usr/share/alsa atmark-dist-20090318/romfs/usr/share

次にalsa-utilsに含まれる、

  • aplay
  • arecord
  • alsamixer

をatmark-distに組み込みます。手順はHOWTO: Debianのパッケージに含まれるコンパイル済みのバイナリをArmadilloで動作させる方法を参考にしてください。

4. alsa-utilsが組み込まれたイメージファイルをビルドする

alsa-utilsが組み込まれたイメージファイルをビルドします。以下のコマンドを実行してビルドしてください。

[PC ~]$ cd atmark-dist
[PC ~/atmark-dist]$ make romfs image

5. フラッシュメモリを書き替える

生成したイメージファイルでArmadillo-500のフラッシュメモリを書き替えます。詳しくは、Armadillo-500 ダウンロードページからダウンロードすることのできる"Armadillo-500開発ボード - ソフトウェアマニュアル"を参照してください。

以上で動作環境の構築は完了です。

6. 動作確認

動作確認に使用しているハードウェアは、USBポートがHi-Speedでなければ動作しません。Armadillo-500では、2つのUSBポートを同時にHi-Speedで動作させることができないため、同時に録音と再生を行なうことができません。Armadillo-500 開発ベースボードでは、デフォルトでCON3の上段がHi-Sppedで動作するようになっています。この設定を変更するには、USBポートの Hi-Speed / Full-Speed 切り替え方法を参照してください。

録音

まず、USBオーディオのカード番号を調べます。以下のコマンドを入力してください。

[armadillo ~]$ arecord -l
      :
card 1: U0x46d0x994 [USB Device 0x46d:0x994], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

"card 1"という表示からカード番号が"1"であることがわかりました。次に、オーディオデバイスの設定を調べるを参照して設定を調べてください。

ここまでで調べた値を使用して録音を行ないます。以下のオプションを使用します。

オプション 説明
-c チャネル数を指定
-f サンプルフォーマットを指定
-r サンプルレートを指定
-D 使用する PCM を指定

以下のコマンドを入力すると録音が開始されます。

[armadillo ~]$ arecord -c 1 -f S16_LE -r 16000 sample.wav -D hw:1

また、"-D"オプションの引数に"plughw:x"を指定することで、任意の設定で録音することができます。

[armadillo ~]$ arecord sample.wav -D plughw:1

再生

まず、USBオーディオのカード番号を調べます。以下のコマンドを入力してください。

[armadillo ~]$ aplay -l
      :
**** List of PLAYBACK Hardware Devices ****
card 1: Audio [USB Audio], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0

"card 1"という表示からカード番号が"1"であることがわかりました。次に、オーディオデバイスの設定を調べるを参照して設定を調べてください。

ここまでで調べた値を使用して再生行ないます。以下のオプションを使用します。

オプション 説明
-c チャネル数を指定
-f サンプルフォーマットを指定
-r サンプルレートを指定
-D 使用する PCM を指定

ここまでで調べた値と再生するwavファイルのフォーマットが同じであることが確認できた場合は以下のコマンドを入力すると再生が開始されます。

[armadillo ~]$ aplay sample.wav -D hw:1

また、"-D"オプションの引数に"plughw:x"を指定することで、任意の設定で再生することができます。

[armadillo ~]$ aplay sample.wav -D plughw:1

音量調節

"-c"オプションで、録音または再生で調べたUSBオーディオのカード番号を指定します。

[armadillo ~]$ alsamixer -c 1

オーディオデバイスの設定を調べる

以下の設定を調べる方法を説明します。

  • サンプルフォーマット
  • チャネル数
  • サンプルレート

オーディオデバイスの設定を調べるために、アプリケーション"hw_params"を実行します。ソースコードはこちらからダウンロードすることができます。

以下はUSBスピーカ(カード番号1)を接続した状態でのコマンド実行例です。

[armadillo ~]# wget http://download.atmark-techno.com/misc/demos/usb-audio-a500-howto/hw_params
[armadillo ~]# chmod +x hw_params
[armadillo ~]# ./hw_params
PLAYBACK
        Device: hw:0 (type: HW)
        Access types: MMAP_NONINTERLEAVED
        Formats: S16_LE
        Channels: 2
        Sample rates: 8000 32000 48000 96000
        Interrupt interval: 166-256000 us
        Buffer time: 333-1024000 us

        Device: hw:1 (type: HW)
        Access types: MMAP_INTERLEAVED RW_INTERLEAVED
        Formats: S16_LE
        Channels: 2
        Sample rates: 48000
        Interrupt interval: 1000-2730667 us
        Buffer time: 2000-5461334 us

CAPTURE
        Device: hw:0 (type: HW)
        Access types: MMAP_NONINTERLEAVED
        Formats: S16_LE
        Channels: 2
        Sample rates: 8000 32000 48000 96000
        Interrupt interval: 166-256000 us
        Buffer time: 333-1024000 us

再生を行なうデバイスは"PLAYBACK"、録音を行なうデバイスは、"CAPTURE"以下にオーディオデバイスの情報が表示されます。"Device"に表示されるハードウェア番号とUSBオーディオのカード番号が同じ項目を参照してください。上記コマンド実行例から、USBスピーカの設定が以下のようになっていることがわかります。

項目 設定
サンプルフォーマット S16_LE
チャネル数 2
サンプルレート 48000