日々

link permalink

Facebook と Twitter の未読の差

Facebook の公式サイト&公式アプリは、どこまでが未読で、どこまでが既読なのかさっぱりわからなくて使いづらい。そんなに真剣に読まなくても良いじゃない、ってメッセージなのかなあ?

Twitter もどこからどこまで読んだのかさっぱりわからないけど、読んでも読まなくてもどうでも良いことを書くのが基本なので、あまり気にならない。

メモ: 技術系?の話は Facebook から転記しておくことにした。

[編集者: すずき]
[更新: 2014年 3月 17日 00:07]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

ALSA

突然ですが、ALSA について何回か書こうと思います。仕事で使ったのがきっかけで、ここ最近 ALSA を家でいろいろ調べていたのです。

せっかく調べたので、いつか忘れたときに見直せたら便利であろう情報、つまづいたポイント、などをまとめておこうと思います。

ALSA って何?

ALSA とは Advanced Linux Sound Architecture の略で、Linux 2.6 から採用された Linux のサウンドシステムです。それ以前は OSS(Open Sound System)というサウンドシステムが採用されていました。が、OSS をこれから使う人はいないし、解説できるほど詳しくもないので無視します。

サウンドシステムって何かというと、基本は LPCM(Linear Pulse Code Modulation)音声データを再生、もしくは録音するための仕組みです。LPCM 音声データは、圧縮されていない音声データと思っていただければ差し支えないと思います。

実は LPCM の再生だけではなく、シーケンスデータである MIDI の再生もでき、この点が OSS との大きな違いだったりしますが、そちらは良く知りませんもので、華麗にスルーします。

ALSA の構成

後でまた説明しますが、ALSA は大きく 4つの部分に分けられます。

ユーザ空間で動作する「ライブラリ(共通処理)」
ALSA を使うアプリケーションと ALSA とのインタフェース(API)の定義、LPCM を扱うために共通の処理をまとめた部分です。
ユーザ空間で動作する「ライブラリ(プラグイン)」
ALSA に入力された LPCM を加工するための部分です。
カーネル空間で動作する「ドライバ(共通処理)」
LPCM の再生/録音機能を実現するために共通の処理をまとめた部分です。
カーネル空間で動作する「ドライバ(ハードウェア依存処理)」
ハードウェアの機能を使って LPCM の再生/録音機能を実現するための部分です。

具体的にどのファイルなの?というと環境の差などによって違いますが、あえて細かい点は無視してざっくり言うと下記のようになります。

  • 「ライブラリ(共通処理)」=/usr/lib/libasound.so
  • 「ライブラリ(プラグイン)」=/usr/lib/libasound.so など
  • 「ドライバ(共通処理)」=/lib/modules/<Linux のバージョン>/kernel/sound/core/snd.ko など
  • 「ドライバ(ハードウェア依存処理)」=/lib/modules/<Linux のバージョン>/kernel/sound/pci/snd-hda-codec-realtek.ko など

LPCM の流れとしては、おおまかには、
ALSA を使うアプリケーション
→ ALSA ライブラリ(libasound.so)
→ ALSA プラグイン(libasound.so など)
→ ALSA ドライバ共通処理(snd.ko など)
→ ALSA ドライバハードウェア依存処理(snd-hda-codec-xxxx.ko など)
→ サウンドカード

となります。

俺の PC に ALSA は入っているの?

Fedora や Debian などの一般的な PC 向けディストリビューションを使っていれば、この章以降の作業はおそらく自動的に行われており、既に ALSA が使える状態になっているはずです。

トラブルシューティング、特殊な(組み込み向けとか)環境、中身に興味がある、などなど、そんな方はご一読ください。特に興味がなければ無視して構いませんので、次の記事(そのうち掲載予定)へどうぞ。

説明はこれくらいにして、自分の Linux PC で ALSA ドライバが使えるか?を確かめてみましょう。下記のコマンドを打つと、ALSA ドライバ(共通処理部分)のバージョンが取得できます。

ALSA ドライバ(共通処理部分)のバージョン確認
katsuhiro@falcon:~$ cat /proc/asound/version
Advanced Linux Sound Architecture Driver Version 1.0.25.

そんなファイルはありません!と言われたら、ALSA ドライバのロードが必要です。

ALSA ドライバ(共通処理部分)ロード
falcon:~# lsmod | grep snd
(何も表示されない)

falcon:~# modprobe snd

falcon:~# lsmod | grep snd
snd_seq                39243  0
snd_timer              14562  1 snd_seq
snd_seq_device          4013  1 snd_seq
snd                    40302  3 snd_timer,snd_seq,snd_seq_device
(↑ドライバがロードされた)

もしそれでも怒られる場合は、お使いの Linux カーネルが ALSA を使う構成になっていないと思われます。ALSA を使うには Linux カーネルのコンフィグを変更してビルドしなおす必要があるでしょう。

どのコンフィグを有効にすべきかは、使っているサウンドカードによりますが、例えば Intel の内蔵サウンドチップであれば、下記のコンフィグを有効にすることになると思います。

ALSA ドライバを有効にする
falcon:~# cd /usr/src/linux

falcon:/usr/src/linux# make menuconfig
Device Drivers  --->
  <*> Sound card support  --->
    <M>   Advanced Linux Sound Architecture  --->
      [*]   PCI sound devices  --->
        <M>   Intel HD Audio  --->

falcon:~# make modules
  AS [M]  arch/x86/crypto/aes-i586-asm_32.o
  CC [M]  arch/x86/crypto/aes_glue.o
(...略...)

falcon:~# make modules_install
  INSTALL arch/x86/crypto/aes-i586.ko
  INSTALL arch/x86/crypto/aesni-intel.ko
(...略...)

ビルドできたでしょうか。先ほどの modprobe snd はドライバ(共通処理)をロードしただけで、ドライバ(ハードウェア依存処理)すなわち、実際にサウンドカードを制御するドライバがロードされていませんので、このままでは音を鳴らすことができません。

ドライバ(ハードウェア依存処理)をロードするには、PC に搭載されているサウンドカードを調べて、適切なドライバをロードする必要があります。サウンドカードの調査は、カタログスペックを検索するも良し、lspci コマンドの出力結果なども参考になります。

私の PC は Intel の内蔵サウンドが搭載されているため、対応するドライバは snd_hda_intel となります。

ALSA ドライバ(ハードウェア依存処理)ロード
falcon:~# lsmod | grep snd
snd_seq                39243  0
snd_timer              14562  1 snd_seq
snd_seq_device          4013  1 snd_seq
snd                    40302  3 snd_timer,snd_seq,snd_seq_device

falcon:~# modprobe snd_hda_intel
snd_hda_intel 0000:00:1b.0: irq 49 for MSI/MSI-X

falcon:~# lsmod | grep snd
snd_hda_codec_hdmi     20592  1
snd_hda_codec_realtek    48172  1
snd_hda_intel          18380  0
snd_hda_codec          59097  3 snd_hda_codec_realtek,snd_hda_codec_hdmi,snd_hda_intel
snd_pcm                56936  3 snd_hda_codec_hdmi,snd_hda_codec,snd_hda_intel
snd_seq                39243  0
snd_timer              14562  2 snd_pcm,snd_seq
snd_seq_device          4013  1 snd_seq
snd                    40302  8 snd_hda_codec_realtek,snd_timer,snd_hda_codec_hdmi,snd_pcm,snd_seq,snd_hda_codec,snd_hda_intel,snd_seq_device
snd_page_alloc          5509  2 snd_pcm,snd_hda_intel
(↑ドライバがロードされた)

もし間違って異なるドライバをロードした時は、rmmod でアンロードしましょう。

俺の PC で ALSA は使えるの?

ドライバが無事ロードできたら、ALSA がサウンドカードを認識できているかどうか?を確かめます。

もし間違ったドライバをロードしている場合は、サウンドカードの一覧に何も出ない場合が多いです。今一度ドライバが合っているかどうか確かめましょう。

ALSA カードの一覧を取得
katsuhiro@falcon:~$ cat /proc/asound/cards
 0 [Intel          ]: HDA-Intel - HDA Intel
                      HDA Intel at 0xdff00000 irq 49

例ではサウンドカードが 1つ認識されています。ここまで来れば ALSA を使う準備はバッチリです。

[編集者: すずき]
[更新: 2013年 9月 12日 23:36]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

ALSA その 2

ALSA を使う準備ができたので早速、音を鳴らしたいところですが、その前に ALSA の「サウンドカード」と「デバイス」の概念について簡単に説明したいと思います。

ALSA のサウンドカード

下記のように PCM の入力、出力を複数備えたサウンドカードが 2枚刺さっているコンピュータがあるとします。


図 1: システムの例

このとき ALSA のカード一覧を見ると下記のように、2つ検出されるはずです。以降、1枚目の AAAAA 社製カードを「サウンドカード 0」、2枚目の BBBBB 社製カードを「サウンドカード 1」と呼びます。

ALSA カードの一覧取得、例
katsuhiro@falcon:~$ cat /proc/asound/cards
 0 [AAAAA          ]: HDA-AAAAA - HDA AAAAA
                      HDA AAAAA at 0xXXXX00000 irq xx
 1 [BBBBB          ]: HDA-BBBBB - HDA BBBBB
                      HDA BBBBB at 0xXXXX0000 irq xx

カードにはいくつかのアナログやデジタルの入出力がついています。ALSA ではこれらを「デバイス」と呼ぶようです。

デバイスは、現状 4種類の能力を持つことができます。このうち 1種類の能力しか持たないデバイスもいますし、複数の能力を持つデバイスもいます。

  • PCM の再生(出力)
  • PCM の録音(入力)
  • MIDI の再生
  • ハードウェア固有機能

今回はこれらの能力のうち、PCM の再生、録音にのみ触れます。

ALSA のデバイス

図1 に示した例だと、デジタル入出力のデバイスと、アナログ入出力のデバイスに別れて、ALSA は下記の図2 のようにデバイスを認識するでしょう(※1)。

(※1)なおデバイスの番号付けはドライバ(ハードウェア依存処理)の作りによって違うため、同じデバイス数のハードウェアでも、必ずこの順番になるわけではありません。


図 2: ALSA のカードとデバイスの構成例

図2 の右側「デバイスファイル」とか「snd_pcm_open() の引数」の部分は、また後で説明しますので気にしないで下さい。

今回、大事なことは、サウンドカード 0 として、

  • PCM を再生しデジタルで出力する能力と、PCM をデジタルで入力し録音する 2つの能力を持ったデバイス 0
  • PCM を再生しアナログで出力する能力のみを持ったデバイス 1

2つのデバイスが ALSA に認識され、

サウンドカード 1 として、

  • PCM をアナログで入力し録音する能力を持ったデバイス 0
  • PCM を再生しデジタルで出力する能力のみを持ったデバイス 1

2つのデバイスが ALSA に認識された、ということです。

お使いのコンピュータで ALSA が認識した PCM 再生、録音デバイスの一覧を確かめるには、/proc/asound/pcm を見て下さい。

ALSA PCM デバイスの一覧取得
katsuhiro@falcon:~$ cat /proc/asound/pcm
00-00: AAAAA Digital : AAAAA Digital : playback 1 : capture 1
00-01: AAAAA Analog : AAAAA Analog : playback 1
01-00: BBBBB Analog : BBBBB Analog : capture 1
01-01: BBBBB Digital : BBBBB Digital : playback 1

一覧に出ている数字は、サウンドカードの番号 - デバイスの番号となっています。00-01 であればサウンドカード 0 のデバイス 1 という意味です。

以降の表記について

以降、サウンドカードという表記を省略することがあります。デバイス 0-1 のように書きますので、サウンドカード 0 のデバイス 1 なんだな、とご理解下さい。

また、PCM の再生と録音のためのデバイスをひっくるめて、PCM デバイスと表記することがあります。

デバイスの能力 4種類のうち「ハードウェア依存機能」については、/proc/asound/hwdep にて一覧を見ることができます。MIDI 再生については詳しくないので知りません…。

[編集者: すずき]
[更新: 2013年 9月 14日 22:57]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

ALSA その 3

では、実際に ALSA で音声を鳴らしてみましょう。

私の使用しているマシンにはオンボードのサウンドカードとして Intel HD Audio が搭載されており、デバイスは図 1 のように構成されています。

今回使用する ALSA PCM デバイスの一覧
katsuhiro@falcon:~$ cat /proc/asound/pcm
00-00: ALC892 Analog : ALC892 Analog : playback 1 : capture 1
00-01: ALC892 Digital : ALC892 Digital : playback 1
00-02: ALC892 Analog : ALC892 Analog : capture 1
00-03: HDMI 0 : HDMI 0 : playback 1


図 1: Intel HD Audio のデバイス構成

以降の章はこの構成を使って説明していきます。

ALSA のデバイス名

適当な WAV ファイルを用意して、aplay コマンド(※1)で鳴らしてみましょう。使い方は下記の通り。

(※1)もしお使いの環境に aplay コマンドがインストールされていなければ apt-get install alsa-utils など(Debian)でインストールしてください。

ALSA で PCM を再生(成功例)
katsuhiro@falcon:~$ aplay -D hw:0,0 test.wav
再生中 WAVE 'share/chimes.wav' : Signed 16 bit Little Endian, レート 44100 Hz,  ステレオ

音は聞こえたでしょうか?もしかするとどの端子からも何も聞こえないかも知れませんが、ここはひとまずエラーらしき表示が出なければ成功とします。

コマンドラインの -D hw:0,0 という部分は「再生するときにサウンドカード 0、デバイス 0 の PCM 再生機能を使って下さいね」という意味です。

もしデバイス 1 で再生したければ hw:0,1、デバイス 2 で再生したければ hw:0,2 と指定しますが、今回使用しているサウンドカードのデバイス 2 は PCM の再生能力を持たない(図1 参照)ため、指定するとエラーになります。

ALSA で PCM を再生(失敗例)
katsuhiro@falcon:~$ aplay -D hw:0,2 share/chimes.wav
aplay: main:682: audio open error: そのようなファイルやディレクトリはありません

みなさんがお使いの環境で PCM の再生を試したとき、上記のようなエラーが出る場合は hw:0,0 以外のデバイスを試してください。

もし何も指定しなかった場合「default」というデバイスを指定したことになりますが、以降の説明では default デバイスは使いません。なぜかというと default がどのデバイスとひも付くかは、お使いの環境に寄って異なり、どのデバイスを使っているかわからなくなるためです。

最近の Linux ディストリビューションですと default デバイスは PulseAudio(Wikipedia の PulseAudio の項参照)などのサウンドサーバとひも付いていることが多いようですが、残念ながら一概には言えません…。

デバイス名 hw:0,2 の正体

先の例で再生デバイスに hw:0,2 を指定したとき「そのようなファイルやディレクトリはありません」というエラーメッセージが出ました。そもそも aplay は何の「ファイル」がない、と怒っているのでしょうか?

実は ALSA は hw:0,2 といったデバイス名を受け取ったとき、対応する /dev/snd ディレクトリ以下のデバイスファイルを開いていて、目的となる「デバイスファイルがない」と怒っているのです。

ALSA デバイスファイル

ALSA のデバイスファイルは /dev/snd ディレクトリにあります。ひとまず /dev/snd 以下を ls してみましょう。

ALSA のデバイスファイル一覧
katsuhiro@falcon:~$ ls -la /dev/snd
合計 0
drwxr-xr-x  3 root root      220  9月 10 01:52 .
drwxr-xr-x 15 root root    13400  9月 10 01:52 ..
crw-rw---T  1 root audio 116,  7  9月 10 01:52 controlC0
crw-rw---T  1 root audio 116,  6  9月 14 02:13 pcmC0D0c
crw-rw---T  1 root audio 116,  5  9月 14 22:26 pcmC0D0p
crw-rw---T  1 root audio 116,  4  9月 14 13:54 pcmC0D1p
crw-rw---T  1 root audio 116,  3  9月 10 01:52 pcmC0D2c
crw-rw---T  1 root audio 116,  2  9月 14 13:54 pcmC0D3p
crw-rw---T  1 root audio 116,  1  9月 10 01:52 seq
crw-rw---T  1 root audio 116, 33  9月 10 01:52 timer

様々なファイルがありますが PCM 再生、録音に関連するのは、pcm で始まる名前のファイルです。

ALSA PCM デバイスファイル

PCM 再生、録音のデバイスファイル名は 4つの部分に分かれていて、それぞれ命名にルールがあります。たとえば pcmC0D0p を例にとって分解してみましょう。

pcm
PCM のデバイスであることを意味します。どのデバイスファイルでも pcm です。
C0
サウンドカード番号 0 を意味します。カード 1 なら C1 となります。
D0
デバイス番号 0 を意味します。デバイス 2 なら D2 となります。
p
PCM の再生能力があることを意味します。録音能力の場合は c となります。

先ほど aplay に hw:0,2 と指定しましたが、このとき ALSA はサウンドカード 0、デバイス 2、PCM の再生能力があるデバイスを探します。

このデバイスファイルを先ほどのデバイスファイル名の命名ルールに従って表すと「pcmC0D2p」となりますが、/dev/snd 以下には PCM 録音用の pcmC0D2c はあっても、pcmC0D2p はありません。

このため ALSA は aplay に対して「(デバイス)ファイルがない」とエラーを返します。aplay はそれを受けてエラーメッセージを出していたのです。

デバイスファイルの作成

Fedora や Debian などの一般的な PC 向け Linux ディストリビューションを使っていれば、この章以降の作業はおそらく自動的に行われており、ALSA デバイスファイルが使用可能な状態になっているはずです。

トラブルシューティング、特殊な(組み込み向けとか)環境、中身に興味がある、などなど、そんな方はご一読ください。特に興味がなければ無視して構いませんので、次の記事(そのうち掲載予定)へどうぞ。

最近の Linux ディストリビューションではデバイスファイルが自動的に生成されますが、自分で生成しなければならないときはどうしたら良いでしょうか?

デバイスファイルを生成する際に必要なのは、メジャー番号、マイナー番号(※2)です。詳しい説明は別のサイトを見ていただいた方が良いと思いますが、メジャー番号とマイナー番号についてざっくり説明します。

(※2)キャラクタデバイスか、ブロックデバイスか、という情報も必要ですが、ALSA のデバイスファイルは全てキャラクタデバイスなので調べる必要はありません。

メジャー番号
Linux 内で有効な、各ドライバが持っている ID のようなものです。/proc/devices を見ると各ドライバがどの番号を使っているかわかります。
マイナー番号
各ドライバ内で有効です。ドライバが制御対象にしているデバイスなどが持つ ID のようなものです。ドライバが変わるとマイナー番号の意味も変わります。
ALSA のマイナー番号は ALSA が管理しているデバイスと 1対 1にひも付いていて、/proc/asound/devices を見ると各デバイスがどの番号を使っているかわかります。

まずはメジャー番号を探しましょう。

メジャー番号の一覧
katsuhiro@falcon:~$ cat /proc/devices
Character devices:
(...略...)
 10 misc
 13 input
 14 sound
 21 sg
116 alsa
128 ptm
136 pts
180 usb
189 usb_device
253 BaseRemoteCtl
254 bsg
(...略...)

一覧の左端の数字がメジャー番号です。どうやら 116番が割り当てられているようです。次にマイナー番号を探します。

ALSA のマイナー番号の一覧
katsuhiro@falcon:~$ cat /proc/asound/devices
  1:        : sequencer
  2: [ 0- 3]: digital audio playback
  3: [ 0- 2]: digital audio capture
  4: [ 0- 1]: digital audio playback
  5: [ 0- 0]: digital audio playback
  6: [ 0- 0]: digital audio capture
  7: [ 0]   : control
 33:        : timer

一覧の左端の数字がマイナー番号です。なお、他の部分の意味は下記の通りです。

ALSA のマイナー番号の調べ方
  5: [ 0- 0]: digital audio playback
 ↑   ↑ ↑                ↑
 ↑   ↑ ↑                PCM 再生用デバイス
 ↑   ↑ ↑
 ↑   ↑ デバイス番号 0
 ↑   ↑
 ↑   サウンドカード番号 0
 ↑
 マイナー番号

たとえば pcmC0D0p(サウンドカード 0、デバイス 0、PCM 再生能力)デバイスファイルを作成する場合は、メジャー番号 116、マイナー番号 5 のキャラクタデバイスファイルを作れば良いということです。

コマンドで書くと mknod /dev/snd/pcmC0D0p c 116 5 ですね。

マイナー番号の振り方

Linux カーネルのコンフィグによって、ALSA デバイスとマイナー番号の関係が変わります。

最近はデバイスを検出した順番に、マイナー番号を 0, 1, 2, ... と振っていく、マイナー番号を動的に割り当てるコンフィグが主流だと思われます。自動的にデバイスファイルを作成してくれるような環境であれば、マイナー番号を動的に割り当てても不自由はないでしょう。

ALSA のマイナー番号の動的割り当てコンフィグ
Device Drivers  --->
  <*> Sound card support  --->
    <M>   Advanced Linux Sound Architecture  --->
      [ ]   Dynamic device file minor numbers

もし自分でデバイスファイルを作成しなければならない環境の場合、デバイスの認識順序が変わったらマイナー番号も変わってしまい、いちいちデバイスファイルを作り直さなければならないため、非常に面倒です。

動かすものは最小限にしたい、udev すら動かしたくないなど、特殊(?)な環境を使っている場合は、いっそコンフィグを無効にしてしまうのも手ですね。

余談

ALSA のマイナー番号の動的割り当てコンフィグを無効にした場合のマイナー番号もお見せしたかったのですが、Intel HD Audio のドライバを使う場合は、マイナー番号動的割り当てコンフィグが有効でないとドライバが使用できないらしく、コンフィグを無効に出来ませんでした。

理由は調べていませんが、どうもそうなっているみたいです…。残念。

(コメントを受けて)補足

勘のいい人は、なぜデバイス名を hw:0,0 と書くのか?が気になると思います。また、今後出てくる周波数変換しつつ再生するデバイス名の書き方 plughw:0,0 はもっと気になると思います。

つまり、hw や plughw という名前はどこから来たのか?なぜ、コロン、カンマ、カンマ、と変な区切り方をするのか、「hw:0:0」や「hw,0,0」はダメで「hw:0,0」と書かなければならない理由は何なのか?という疑問です。

この疑問に対して、私は一切説明せず「こういうもんです」としか書いていませんが、実はコメントで指摘いただいた通り /usr/share/alsa/alsa.conf にデバイス名をパースする仕組みが書いてあります。

この仕組みは一見の価値有りだと思いますが、この仕組みを解説しても誰得?感が満載なので、申し訳ないですが、今後も特に説明する予定はありません。ご勘弁。

[編集者: すずき]
[更新: 2013年 9月 15日 01:21]
link 編集する

コメント一覧

  • hdk 
    hw:0,0 といった表記が実は libasound によって /usr/share/alsa/alsa.conf にある定義に従って解釈されていると知った時は ALSA の奥深さにビビりました。出力先の指定を変えるだけで、周波数変換や、ファイル出力、複数プロセスの出力の合成などもできるというもので、よくできています。 
    (2013年09月15日 00:44:18)
  • すずき 
    >hdkさん
    はい、ご指摘の通り可変なのですが…。
    そこまでいじっているシステムは見たことないし、そんな説明しても誰得?って感じがするので今回のような説明に留めています。 
    (2013年09月15日 00:52:26)
  • hdk 
    デスクトップ用途だと、デフォルトの出力先を変えようとかいう時に、alsa.conf あるいは .asoundrc を書かないといけなくなって、そのへんの知識が必要になったりしますね。HDMI 出力は周波数の選択肢が少なくて、単純に hw: で指定すると周波数が一致しないと再生できないとか、そういうこともありました。 
    (2013年09月15日 01:06:47)
  • すずき 
    .asoundrc を書く場合も hw:0,0 という書き方は変えないと思います。hwの意味を変えたり、名前を iw とか jw にしても嬉しくないし…。
    組み込み SoC のドライバを見ていたら、周波数が 1通りで固定なんてのもありました。こういうときに plug は便利ですね。 
    (2013年09月15日 01:29:59)
open/close この記事にコメントする



link permalink

模様替え

デザインを変えました。もういい加減、対応していないブラウザは無いだろうと思い CSS level 3 に手を出してみました。

CSS 3 とは言っても、使った要素は border-radius(枠線の角を丸める)と、linear-gradient(グラデーション)くらい。

最近の流行はどちらかというと、脱!角丸!って感じがしますが、時代に逆行して角丸を増やしまくりました。あまり増やすと見づらいのでこれくらいにしておきます。

[編集者: すずき]
[更新: 2013年 9月 20日 00:36]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link permalink

ALSA その 4

前回、aplay にて WAV ファイルの再生に成功するところまできました。今回は音量の設定方法のご紹介です。

再生は成功しているのに音が出ない!という方も居られるかと思います。原因として、音量が 0 になっているか、消音(ミュート)されている、ことが考えられます。

音量の設定

前回と同様に、サウンドカードの構成は下記の図の通りです。以降の章はこの構成を使って説明していきます。


図1: Intel HD Audio のデバイス構成

音量を確認、変更するには alsamixer を使用します。

起動方法は alsamixer -D hw:0 です。-D はデバイス名を指定するオプションで、-D hw:0 でサウンドカード 0 の設定を行ってくれ、という意味になります。別のサウンドカードの設定をする場合は hw:0 を hw:1 なり 2 なりに適宜変更すれば良いです。


図2: alsamixer -D hw:0 の画面

ひとまず全てのボリュームを 0 にして、全てのミュートを解除し、左端のボリュームから上げていけば、どこかを上げた段階で音が聞こえるようになると思います。

ボリュームを最大にしてミュート解除すると、突然、馬鹿でかい音が鳴って耳がおかしくなるかもしれませんので、ご注意を…。

なおボリューム調整はカーソルの上下キーで、ミュートの設定・解除は M キーです。音量ゲージの下にある 2つの文字が MM ならミュートされていますので、M キーを押して OO に変えてください。

操作方法がわからなければ、H キーを押してヘルプを参考にして下さい。

[編集者: すずき]
[更新: 2013年 9月 21日 04:18]
link 編集する

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



こんてんつ

open/close wiki
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報