コグノスケ


2013年9月6日

FacebookとTwitterの未読の差

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

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

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

編集者:すずき(2014/03/17 00:07)

コメント一覧

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



2013年9月9日

ALSAその1 - 使ってみよう

目次: 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を使う準備はバッチリです。

編集者:すずき(2022/05/22 15:06)

コメント一覧

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



2013年9月12日

ALSAその2 - カードとデバイス

目次: ALSA

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再生については詳しくないので知りません…。

編集者:すずき(2022/05/22 15:07)

コメント一覧

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



2013年9月13日

ALSAその3 - デバイス名の指定方法

目次: ALSA

では、実際に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にデバイス名をパースする仕組みが書いてあります。

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

編集者:すずき(2022/05/22 15:10)

コメント一覧

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



2013年9月19日

模様替え

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

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

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

編集者:すずき(2013/09/20 00:36)

コメント一覧

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



2013年9月20日

ALSAその4 - 音量の設定方法

目次: ALSA

前回、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キーを押してヘルプを参考にして下さい。

編集者:すずき(2022/05/22 15:09)

コメント一覧

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



こんてんつ

open/close wiki
open/close Linux JM
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 2018年
open/close 2019年
open/close 2020年
open/close 2021年
open/close 2022年
open/close 2023年
open/close 2024年
open/close 過去日記について

その他の情報

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