🔖コンピュータ, とくに🐧Linuxのサウンド/オーディオ周りのまとめ.

サウンドシステム

  • サウンドカード: 物理回路.
  • オーディオデバイスドライバ
  • ドライバインタフェース
  • サウンドサーバー

用語がわからなすぎる…

サウンドカード

オーディオのデバイス. オーディオデバイス, サウンドカード. サウンドボード.

  • オーディオをインプットするためのハードウェア部分.
  • コンピュータに音響信号の入出力機能を付加または強化する拡張用の回路基板(サウンドカード - Wikipedia).

  • hw:0
  • PCH

入力デバイス

arecord -l

出力デバイス

aplay —list-devices

Linixでの確認方法

  • CLI: lspci | grep Audio

オーディオデバイスドライバ

サウンドカードのためのドライバ. Linuxが周辺機器を制御するIF.

📝デバイスドライバ

cat /proc/asound/modules

オーディオインタフェース

オーディオインタフェースという用語は, 個々のサウンドカードに対する個々のデバイスドライバをまとめたライブラリ.

🔌ハードウェアインタフェース

🔈ALSA

Linuxにおけるデファクトスタンダードなオーディオドライバ. 📝Linux Kernelのコンポーネント.

Advanced Linux Sound Architecture - Wikipedia

  • 色んなサウンドカードを統一的に操作出来るようにする仕組み.

snd-virmidi/aconnect

snd-virmidiはALSAで提供されている仮想MIDIポートのkernel module.

$ sudo modprobe snd-virmidi
$ aconnect -l

aconnect -l でport確認.

alsamixer

CLIから音量調整できるツール. archだとalsa-utilsにある.

alsamixer -c 0

サウンドサーバ

オーディオシステム. 複数のアプリの音を制御する交通整理のサーバ.

🔈PulseAudio

  • pavucontrol: GUI
  • pactl: CLI

🔈JACK

DAWとかオーディオ周りで人気. 遅延が少ない. PulseAudioは遅延が多い.

  • Qjackctl: GUI


  • 👨ジャック・マー
  • <2024-07-26 Fri 08:13> Bitwig Studioだと複雑な音を鳴らすとPulseAudioはテンポがスローダウンするがJackはテンポが維持される. 改善した.

🔈PipeWire

Redhatが開発した最近でてきたやつ.


  • pipewire: 本体
  • wireplumber: セッションマネージャー. 交通整理的な. wpctlがCLI
  • pipewire-alsa: ALSA APIを利用するApp
  • pipewire-pulse: pulseaudio client
  • pipewire-jack: jack client, pw-jack
  • qpwgraph: GUIのオーディオ設定可視化.
  • pwvucontrol: https://github.com/saivert/pwvucontrol
    • pulseaudioのpavucontrolみたいなGUIツール.

settings

  • /usr/share/pipewire: defaultの初期設定ファイル. コピーまたはsimlinkする.
    • /etc/pipewire: システム全体の設定
    • ~/.config/pipewire: ユーザ個別設定
$ sudo cp /usr/share/pipewire/pipewire.conf /etc/pipewire
$ sudo cp /usr/share/pipewire/pipewire-pulse.conf /etc/pipewire
 
$ sudo pacman -S pipewire pipewire-pulse pipewire-jack pipewire-alsa wireplumber qpwgraph

PipewireでJackアプリをつかうには?

pw-jackコマンドでアプリを起動する. pipewire-jackに含まれてる.

pw-top

latencyを調整するためにつかう.

refs

Tools/CLI

Topics

💡PulseAudioとJACKは共存できない

ATTENTION: The playback device “hw:0” is already in use. Please stop the application using it and run JACK again

Realtime Scheduling有効化

よくわかってない.

ulimit -lで8092だった. /etc/sequlity/limits.d/jack.conf or 99-pipewire.confを作成して以下を記入したらRealtime Schedulingが有効化されたか?

@audio - rtprio 95 @audio - memlock unlimited

🔗References