1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

最新のPipewireまで、Linuxによる音を鳴らす歴史

Posted at

Ubuntuで音がならなかったのでトラブルシューティングしてたら基礎的なことまで立ち戻りました。
そこで学んだ成果をまとめます。

そもそも音がなるまで

コンピュータで「音が鳴る」までの流れを整理すると、いくつかの階層を経て信号が伝わっていきます。大きく分けると (1) ソフトウェア層 → (2) OS/ドライバ層 → (3) ハードウェア層 → (4) 音響出力 です。


1. ソフトウェア層

  • アプリケーション(音楽プレイヤー、ゲーム、ブラウザなど)が「音を出したい」と命令する。
  • 音の表現は通常 デジタル音声データ(PCM: Pulse Code Modulation) で、サンプリング周波数(例: 44.1kHz)、ビット深度(16bitなど)、チャンネル数(ステレオ/モノラル)が指定される。
  • 圧縮フォーマット(MP3, AAC, Ogg Vorbisなど)の場合は、アプリ内またはOSライブラリでデコードしてPCMに戻す。

2. OS/ドライバ層

  • アプリケーションが生成したPCMデータは オーディオAPI を経由してOSに渡される。

    • Windows → WASAPI, DirectSound など
    • macOS/iOS → CoreAudio
    • Linux → ALSA, PulseAudio, PipeWire
  • OSのミキサーが複数アプリの音声を合成(ミックス)し、共通のサンプルレート/ビット深度に変換する。

  • デバイスドライバがサウンドカード(あるいは内蔵オーディオチップ)に命令を送る。


3. ハードウェア層

  • サウンドカード/オーディオチップには DAC (Digital-to-Analog Converter) があり、PCMの数値データをアナログ信号(電圧の波形)に変換する。
  • 変換された信号は アンプ回路で増幅される。
  • デジタルのまま出力する場合(HDMIやUSB DAC)は、外部機器に渡ったあとでDAC処理が行われる。

4. 音響出力

  • 最終的に電気信号が スピーカーやヘッドホンに伝わる。
  • スピーカーは電気信号に応じて 振動板を動かし、空気を振動させる → 人間の耳に届いて「音」として認識される。

サウンドカードがでる以前の標準がなかった時代

「コンピューターが音を鳴らした」と言える例はいくつかあります。

1. CSIRAC(オーストラリア)による最初の「音を鳴らした」コンピューター

  • **CSIRAC(Commonwealth Scientific and Industrial Research Automatic Computer)**は、1949年に稼働を開始したオーストラリア初の電子式デジタルコンピューターです。これが「世界初で音を鳴らしたデジタルコンピューター」とされています。(ウィキペディア)
  • 1951年には “Colonel Bogey March” をはじめとする当時のポピュラー曲を演奏しました。ただし、この演奏は記録されておらず、現存するのは再現されたバージョンのみです。(120 Years of Electronic Music, ウィキペディア)

(※録音は残っていませんが、再現された音源や詳細な解説を見られるサイトもあります)

2. Ferranti Mark 1(イギリス)による最初の「録音された」コンピューター音楽

  • Ferranti Mark 1 は、1951年にマンチェスター大学で稼働した、世界初の商用電子汎用コンピューターです。(ウィキペディア, 情報の歴史)
  • 同年末、Christopher Strachey によってプログラムされた演奏が、BBC の外部放送ユニットによって録音されました。曲目は「God Save the King」「Baa Baa Black Sheep」「In the Mood」など。これが 現存する最古のコンピューター音楽録音とされます。(ウィキペディア, ガーディアン, New Atlas, 情報の歴史)
  • この録音は2016年に英国図書館のチームによって音色を修復され、元の音により近い形で聴けるようになりました。(New Atlas)

3. もっと単純に「ビープ音」を出した例

1940年代の**初期コンピュータ(ENIACやManchester Babyなど)**でも、
計算機の状態確認や警告のために「スピーカーやリレー音を制御」する試みがありました。
ただしこれは「音楽」ではなく、「ノイズやビープ的な信号」でした。

サウンドカードの歴史

今のコンピューターの基礎であるPC/AT互換機

IBMがPC/AT互換機の元祖であるPC/ATを開発した頃、PCの音源といえばBEEP音しかありませんでした。

EcoBD8qU8AAnAHt.jpeg

PC/AT互換機の元祖であるPC/AT

余談になりますが、PC/AT互換機とは現代の大多数のPCのことを言い、以下の特徴があります。

  • x86 CPU(Intel/AMD互換)
  • BIOSによる標準化
  • ISAバスに代表される拡張性
  • DOS/Windows対応ソフト資産
  • 多メーカーによる互換機市場の形成

オープンな仕様はIBM以外のメーカーを巻き込み、様々な拡張が加えられていくことになります。
サウンドカードもその一つで、最初はAdLib Music Synthesizer Cardが道を切り開きました。

初めてのサウンドカード(1980年代後半 - 1990年代)

1987年にPC/AT互換機用の拡張カードとしてAdLib社がAdLib Music Synthesizer Cardを発売しました。
これは、モノラルのFM音源のサウンドカードでしたが、PC/AT互換機にサウンドという分野を切り開きました。

そこにやってきたのが、Sound Blasterシリーズです。ゲームやマルチメディアコンテンツの普及とともに、この分野のデファクトスタンダードとなりました。
主な機能は、デジタル音声をアナログ信号に変換してスピーカーに出力するDAC (Digital-to-Analog Converter)と、マイクなどのアナログ信号をデジタルに変換するADC (Analog-to-Digital Converter)でした。

オンボード化 (1990年代後半 - 2000年代)

PCの進化とコストダウンが進むにつれ、サウンド機能はマザーボード上に直接組み込まれるようになりました。これをオンボードサウンドと呼びます。

これにより、サウンドカードが必須ではなくなり、多くのユーザーが手軽に音を楽しめるようになりました。

この頃から、単なる音の再生・録音だけでなく、サラウンドサウンド(例:5.1ch、7.1ch)や、ハードウェアによるゲームサウンドの高速処理(例:EAX)といった機能が重視されるようになりました。

現代のサウンドカード

現在でも、より高品質な音を求めるオーディオ愛好家や、プロの音楽クリエイター向けに、高性能な外付けのUSBオーディオインターフェイスや内蔵型のサウンドカードが販売されています。

これらは、ノイズの少ないクリアな音質、低レイテンシ、そして高品質な入出力端子(XLR、TRSなど)を備えています。

サウンドサーバーの歴史

サウンドカードがハードウェアであるのに対し、サウンドサーバーはソフトウェアです。

  • サウンドサーバーの役割

    • 複数のアプリケーションからの音声をミックスし、一つのストリームとしてサウンドカードに送る交通整理役。

    • 音声のボリューム調整、ルーティング、エフェクト処理などの高度な機能を提供する制御役。

サウンドサーバー黎明期

Sound Blasterという現代まで続く強力なサウンドカードが出たあとはソフトウェア側の問題でした。
Linuxはサウンドをサポートし始めた1992年頃、最初に対応したのがSound Blasterでした。

当時は、Sound Blaster のハードウェアを直接叩くことを前提にしており、/dev/dsp に対して write() するだけで音が出せました。

Sound Blaster はハードウェア、/dev/dsp はそのハードを抽象化したUNIXのデバイスファイル。
OSS初期の設計がSound Blaster依存だったため、両者は歴史的に強く結びついています。

ただし、この方式には欠点があり、この方式では、複数のアプリが同時に音を出そうとすると競合が発生し、音が出せなくなることがありました。

そこでサウンドサーバーが導入されます。

第一世代:独立型サウンドサーバー (1990年代後半 - 2000年代前半)

この課題を解決するため、複数のアプリケーションからの音声ストリームをミックスし、単一の出力としてハードウェアに送るサウンドサーバーが開発されました。アプリケーションは直接サウンドカードにアクセスするのではなく、一度サウンドサーバーに音声を送るようになり、サウンドサーバーがその音声をまとめて、最終的にサウンドカードに送ることで、競合が解消されました。

  • ESD (Enlightened Sound Daemon, 1997〜): GNOMEデスクトップ環境で広く使われた初期のサウンドサーバーです。シンプルな機能を提供しましたが、遅延(レイテンシ)の問題や安定性の課題がありました。

  • ARTS (analog Real-time Synthesizer, 1998〜): KDEデスクトップ環境で使われました。ESDよりも高度な機能を目指しましたが、設計の複雑さからメンテナンスが困難になり、普及には至りませんでした。

第二世代:高機能サウンドサーバー (2000年代前半 - 2010年代前半)

前の時代の流れを受け、よりサウンドサーバーは高機能に進化しました。
PulseAudioは未だに動いているところも多いと思われます。

  • JACK (Jack Audio Connection Kit, 2002〜): プロ音楽制作向けに登場したサウンドサーバーです。超低レイテンシを実現し、ソフトシンセやDAWで必須ともいえる存在になりました。音楽制作分野では現在でも広く使われる一方で、汎用デスクトップ用途には使われなかった経緯があります。

  • PulseAudio (2004〜): Fedora、Ubuntu など主要ディストリビューションが採用しています。Linuxデスクトップの事実上の標準になっており、後述のPipeWireもPulseAudioとの互換性を残した動きをすることをできます。

    • アプリ間の音声ミキシング
    • 音量管理(アプリ別音量)
    • ネットワーク転送も可能

現代:統一プラットフォーム PipeWire (2010年代後半 - 現在)

PulseAudioとJACKのそれぞれの利点を統合し、さらに動画(ビデオ)も扱えるようにRed HatのWim Taymansらによって設計されたのがPipeWireです。PipeWireは、現在のLinuxデスクトップ環境で次世代の標準として広く採用されています。

  • PipeWireの主な特徴:

    • 統合プラットフォーム: PulseAudioが担っていたデスクトップオーディオの役割と、JACKが担っていたプロフェッショナルオーディオの役割を一つのシステムで実現します。

    • 低レイテンシ: JACKと同等の低レイテンシを実現し、プロのオーディオ用途にも対応します。

    • 映像も扱う: 音声だけでなく、動画ストリームの管理も行えます。これは、スクリーンキャストやリモートデスクトップなど、映像と音声を同時に扱うアプリケーションにとって重要です。

    • セキュリティ: アプリケーションごとに細かくアクセス権を制御できるため、セキュリティが向上しました。

PipeWireは、従来のサウンドサーバーが抱えていた断片化や機能のトレードオフといった問題を解決し、Linuxにおける音声・映像システムの未来を形作っています。現在では、多くの主要なLinuxディストリビューションでデフォルトのサウンドサーバーとして採用されています。

まとめ

コンピューターにおけるサウンドシステムは、サウンドカードとサウンドサーバーの二つの側面から成り立っています。サウンドカードはハードウェア、サウンドサーバーはソフトウェアであり、両者は密接に関わって進化してきました。

参考

  • Ferranti Mark 1 の録音について(解説記事)
    → BBC が録音した最古のコンピューター音楽に関するガーディアン紙の記事。(ガーディアン)

  • 録音の修復と詳細な解説
    → 英国図書館による修復プロジェクトを紹介する記事。(New Atlas)

  • 歴史的背景と学術的記録
    → Ferranti Mark 1 の演奏歴史や録音内容についてのまとめ。(情報の歴史, マンチェスター大学, CS Project)

  • CSIRAC による最初の演奏(録音なし)について
    → 当時の演奏の様子や技術的な背景の説明。(120 Years of Electronic Music, ウィキペディア)

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?