100%を超える音量設定の課題をどのように解決したのか
以前紹介したように、100%を超える音量を設定すると、特定の状況で音量の設定が100%に戻ってしまう問題があります。「Ubuntu 17.10」ではこの問題の解決に向け作業が行われ、現在問題は解消されています。
さて開発チームがこの問題にどのように取り組んだのか、以下でその取り組みが紹介されています。
100%を超える音量設定の必要性
サウンドデバイスの中には、音量を最大に設定しても非常に小さい音量でしか出力されないデバイスがあります。例えばX220がこれに該当します。
YouTudeで動画を再生した時やRhythmboxで音楽を聞いている時、音量を最大に設定しても、十分な音量の出力が得られません。
サウンドサーバーである「Pulseaudio」は、サウンドデバイスが出力先に対し音量を増幅する機能を持っているかどうかを検出し、可能ならば出力を増幅させることができます。
この増幅は音質が犠牲になりますが、少なくとも搭載されているスピーカーから聞けるだけの音量を出力できるようになります。
「Ubuntu」では「Pulseaudio」がデフォルトでインストールされています。
関係する3種類のコンポーネント
音量を増幅するということは、ユーザーから見て100%を超える音量を設定することになります。音量の設定では、以下の3種類のコンポーネントが関係しています。
- gnome-control-center
- gnome-settings-daemon
- gnome-shell
1.gnome-control-center
「gnome-control-center」は、「GNOME Control Center(設定)」のことです。増幅をサポートしている出力先なら、「設定」の「サウンド」から、100%を超える音量を設定することができます。
2.gnome-settings-daemon
「gnome-settings-daemon」はユーザーのログイン時に起動し、ユーザー環境の各種設定や設定に対応した動作を行うバックグラウンドサービスです。「gnome-settings-daemon」は、キーボードに付いているマルチメディアキーを検出し、ボリュームのアップ・ダウンキーが押された時に音量の調整を行います。
3.gnome-shell
「gnome-shell」は「Ubuntu 17.10」から採用される「Ubuntu」のデスクトップ環境です。「gnome-shell」のボリュームメニューには、音量を調整するスライダーバーが配置されており、ユーザーはここから音量の調整を行うことができます。
現在の設計上の課題
さて音量を100%を超えて設定するには、現在の設計ではいくつか課題があります。音量がリセットされる
ユーザーが「GNOME Control Center」で100%を超える音量を設定したあと、マルチメディアキーの音量アップキーを押すと、音量が100%にリセットされます。そのためユーザーは、100%を超えて音量を調整することができません。
「gnome-shell」の音量調整バーにも同様の挙動があり、バーを操作すると最大音量が100%にリセットされます。
この様子は、以下の動画を参照してください。
つまりこれらの機能は、100%を超える音量の調整機能に対応していない、ということです。
100%を超える音量を利用しているユーザーにとって、期待する動作と異なる動作が起きるため、ちょっと厄介な結果になります。
すでにUbuntu 14.04で仕組みを導入
以前「Ubuntu」の開発チームは、条件付きですが、100%を超える音量の設定を可能にするアイデアを導入しました。そのアイデアをUbuntu 14.04に取り込み、「Unity Control Center(システム設定)」、「Ubuntu(Unity) settings daemon」及び「Unity」で、100%で超える音量の設定を可能にする実装を行いました。
Ubuntu 17.10での実装
上記で紹介したように、「GNOME Shell」では100%を超える音量の設定に課題があります。実装方針
デフォルトでは、100%を超える音量の設定はオフになっています。そしてオフにした場合は一貫性を確保するため、「GNOME Control Center」、マルチメディアキー及び「gnome-shell」から、100%を超える音量を設定する機能を取り除きます。
100%を超える音量の設定オプションは、サウンドの出力先が音量の増幅をサポートしている時のみ表示します。
それ以外はこのオプションを非表示にします。
サウンドの出力先が音量の増幅をサポートしており、かつ、ユーザーがこのオプションを有効にすると、音量の増幅機能が有効になり、一貫した手法で各音量の調整スライダーバーと同期した動作を行います。
この動作は以下の動画を参照してください。
どうやって実現したのか
開発チームは「Ubuntu 17.10」で現状の課題を解消するため、また、GNOMEセッションでの動作が変わらないように及び影響を与えないようにするため、「XDG_CURRENT_DESKTOP」を見てこの振る舞いを行うように実装が行われました。結果、GNOMEセッションでは上記の動画で示した動作が行われ、アップストリームのGNOMEの挙動には影響を与えません。
一方Ubuntuセッションでは、修正された以下のソフトウェアが動作します。
またGNOMEが利用するgsettingsの設定に影響を与えないようにするため、設定の保存に「org.gnome」名前空間を使用せず、「com.ubuntu」を使用しています。
com.ubuntu
org.gnome
以前のバージョンから自動的に設定が引き継がれる
「Ubuntu 17.04」以前のバージョンからアップグレードすれば、自動的に音量の設定が引き継がれます。GNOMEはどうなる?
元々上記の課題は「GNOME」の挙動により発生している課題です。「Ubuntu」で行われた修正は、「GNOME」にとっても価値のある修正です。
アップストリームである「GNOME」での議論は、以下を参照してください。