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 |