CUI(キャラクタユーザーインターフェース)環境で利用できる音楽再生ツールは多数ありますが、新しいものや注目されているものをいくつか紹介します。これらのプレーヤーは、最新の機能やモダンな設計思想を取り入れていることが特徴です。
cmus
:cmus
(C* Music Player)は、非常に軽量で効率的なCUIベースの音楽プレーヤーです。幅広いオーディオフォーマットのサポート、プレイリスト管理、ライブラリ検索、キュー機能などがあります。
ncmpcpp
:ncmpcpp
(NCurses Music Player Client Plus Plus)は、mpd
(Music Player Daemon)のための強力なCUIクライアントです。グラフィカルなインターフェースを持ちながらも、CUIベースで操作できるのが特徴です。
moc
:moc
(Music On Console)は使いやすさを重視したCUI音楽プレーヤーです。サーバー/クライアントアーキテクチャを採用しており、バックグラウンドで動作させつつ音楽をコントロールできます。
musikcube
:musikcube
は、最新のC++言語機能を活用したモダンなCUI音楽プレーヤーで、多数のオーディオフォーマットに対応し、プレイリスト管理やストリーミングサポートが可能です。
これらのプレーヤーは、Linuxのほか、一部はmacOSやWindowsでの使用も可能です。インストールと使用は、通常、各Linuxディストリビューションのパッケージ管理システムを通じて行われます。各プレーヤーの機能やインターフェースは異なるため、自分のニーズに合ったものを選択することが重要です。また、これらのプレーヤーはオープンソースであり、コミュニティによるサポートや拡張が活発に行われている点も魅力の一つです。まずは、cmusをインストールします。
もしかすると下記のコマンドで簡単にインストールできるかもしれません。
sudo apt install cmus
make
および ./configure
を使用してインストールする方法と、パッケージマネージャーを通じてインストールする方法の主な違いは、インストールプロセスの複雑さ、カスタマイズの柔軟性、およびパッケージ管理にあります。
make と ./configure を使用する方法
- カスタマイズ性:
./configure
スクリプトは、ソフトウェアをシステムに合わせてカスタマイズするためのオプションを提供します。これにより、特定の機能を有効/無効にしたり、特定のパスにインストールするなどの詳細な設定が可能です。
- 最新バージョン:
- ソースコードから直接ビルドする場合、最新または開発中のバージョンにアクセスできることが多いです。
- 依存関係の手動管理:
- 依存関係は手動で管理する必要があり、必要なライブラリやツールを事前にインストールしておく必要があります。
- プロセスの複雑さ:
- ビルドプロセスは技術的な知識を要し、エラーのトラブルシューティングが必要になる場合があります。
パッケージマネージャーを使用する方法
- 簡易性と利便性:
- パッケージマネージャー(例:
apt
、yum
、dnf
など)を使用すると、コマンド一つでインストールが完了します。これは初心者にも優しい方法です。
- パッケージマネージャー(例:
- 自動的な依存関係の解決:
- パッケージマネージャーは、必要な依存関係を自動的に解決し、必要なパッケージをダウンロードしてインストールします。
- 安定性と互換性:
- パッケージマネージャーで提供されるソフトウェアは、通常、システムとの互換性が保証され、安定しています。
- 簡単なアップデートと管理:
- システム全体のアップデートとともにソフトウェアを簡単にアップデートでき、管理も容易です。
結論
make
と./configure
を使用する方法は、カスタマイズ性が高く、最新または特定のバージョンをインストールする場合に適していますが、より技術的な知識が必要です。- パッケージマネージャーを使用する方法は、利便性が高く、依存関係の管理が容易で、一般的にはこの方法が推奨されます。
ここでは、学習がてら前者のインストール方法にします。まずは、クローンを作成し、所定のディレクトリに移動します。
git clone https://github.com/cmus/cmus.git
cd cmus
次に./configure
とコマンド入力します。
./configure
は、ソフトウェアのコンパイルとインストールを準備するために使用されるスクリプトです。特にUNIXやLinuxのようなシステムで一般的です。このスクリプトは通常、ソースコードパッケージの一部として提供され、以下のような目的で使用されます:
- システムのチェック:
./configure
スクリプトは、ソフトウェアをコンパイルするためにシステムが適切なツールやライブラリを持っているかどうかを確認します。これには、コンパイラ(gccなど)、必要なライブラリ、その他のツールが含まれます。 - 設定の生成: システムのチェックが完了すると、スクリプトは
Makefile
というファイルを生成します。このMakefile
は、ソフトウェアのコンパイルプロセスを指示するためにmake
コマンドによって使用されます。 - カスタマイズ: ユーザーは
./configure
スクリプトにオプションを渡すことで、ソフトウェアのビルドをカスタマイズすることができます。たとえば、インストールされる場所や特定の機能の有効化/無効化などを指定できます。 - クロスプラットフォームの対応:
./configure
スクリプトは多くの異なるタイプのシステムで実行することができ、それぞれの環境に適した設定を自動的に生成します。
使用例
基本的な使用方法は、ソースディレクトリで次のコマンドを実行することです。
./configure
追加のオプションを指定することもできます。例えば、ソフトウェアを特定のディレクトリにインストールしたい場合は、次のようにします。
./configure --prefix=/path/to/directory
注意点
./configure
スクリプトは、主にCやC++で書かれたプログラムで使用されます。- このスクリプトは、Autoconfというツールによって生成されることが多いです。Autoconfは、ソースコードをさまざまなシステムにポータブルにするために使用されます。
./configure
の実行には、しばしばシェルスクリプトが使用されます。これは、様々なUNIX系システムで互換性を持たせるためです。
./configure
checking for program gcc… no
configure failed.
./configure
でエラーが出る場合、特に checking for program gcc... no
というエラーメッセージが表示された場合、これはGNU Compiler Collection(GCC)がシステムにインストールされていないことを示しています。GCCはC言語やC++などのプログラムをコンパイルするために使用されるコンパイラです。
解決策
- Cコンパイラのインストール:
- UbuntuのようなLinuxディストリビューションでは、通常
gcc
(GNU Compiler Collection)を使用します。 - 次のコマンドを実行して
gcc
とその他の開発ツールをインストールします。sudo apt update
sudo apt install build-essential
- このコマンドは、
gcc
のほかにもmake
や必要なライブラリファイルもインストールします。
- UbuntuのようなLinuxディストリビューションでは、通常
- パスの確認:
- インストール後、
gcc
が正しくパスに含まれているか確認してください。次のコマンドで確認できます。gcc --version
- このコマンドは
gcc
のバージョン情報を表示し、インストールが成功したことを確認します。
- インストール後、
- 再度
./configure
を実行:- Cコンパイラをインストールした後、再度
./configure
スクリプトを実行してください。 - これでスクリプトは正しく実行され、
Makefile
を生成するはずです。
- Cコンパイラをインストールした後、再度
sudo apt install build-essential
再度 ./configure
スクリプトを実行すると、最後にエラーが発生しました。
mamu@ubuntu22s:~/cmus$ ./configure
checking for program gcc… /usr/bin/gcc
checking for program gcc… /usr/bin/gcc
checking for C11 (with atomics support)… yes
checking for CFLAGS -pipe -Wall -Wshadow -Wcast-align -Wpointer-arith -Wwrite-strings -Wundef -Wmissing-prototypes -Wredundant-decls -Wextra -Wno-sign-compare -Wformat-security… yes
checking for CFLAGS -Wold-style-definition… yes
checking for CFLAGS -Wno-pointer-sign… yes
checking for CFLAGS -Werror-implicit-function-declaration… yes
checking for CFLAGS -Wno-unused-parameter… yes
checking for CFLAGS -Wno-missing-field-initializers… yes
checking if CC can generate dependency information… yes
checking byte order… little-endian
checking for DL_LIBS (-ldl -Wl,–export-dynamic)… yes
checking for PTHREAD_LIBS (-lpthread)… yes
checking for realtime scheduling… yes
checking for program pkg-config… no
checking for NCURSES_LIBS (pkg-config)… no
checking for NCURSES_LIBS (-lncursesw)… no
checking for NCURSES_LIBS (pkg-config)… no
checking for NCURSES_LIBS (-lncurses)… no
checking for NCURSES_LIBS (pkg-config)… no
checking for NCURSES_LIBS (-lcurses)… no
configure failed.
エラーメッセージ「configure: error: could not find (n)curses libs or includes, which are required」は、mp3blaster
のビルドに必要な (n)curses
ライブラリがシステムにインストールされていない、または見つからないことを示しています。(n)curses
はテキストベースのユーザーインターフェースを作成するためのライブラリです。
解決策
今回の ./configure
のエラーは、pkg-config
および ncurses
ライブラリが見つからないことが原因であることが分かります。以下のステップで問題を解決できる可能性があります。
pkg-config
のインストール:pkg-config
はライブラリを検索し、コンパイル時のフラグを取得するためのツールです。これがないと、configure
スクリプトが必要なライブラリの情報を見つけることができません。- Debianベースのシステム(Ubuntuなど)では、以下のコマンドでインストールできます。
sudo apt-get update
sudo apt-get install pkg-config
ncurses
ライブラリのインストール:ncurses
はテキストベースのユーザーインターフェースを作成するために使われるライブラリです。ncurses
をインストールするには、次のコマンドを実行します。sudo apt-get install libncurses5-dev libncursesw5-dev
これらのインストールが完了した後、もう一度 ./configure
を実行してみます。これで問題が解決するはずです。それでもエラーが発生する場合は、エラーメッセージに基づいてさらなる対処が必要になるかもしれません。
sudo apt install pkg-config
sudo apt install libncurses5-dev libncursesw5-dev
再度 ./configure
スクリプトを実行します。次の結果になりました。
mamu@ubuntu22s:~/cmus$ ./configure
checking for program gcc… /usr/bin/gcc
checking for program gcc… /usr/bin/gcc
checking for C11 (with atomics support)… yes
checking for CFLAGS -pipe -Wall -Wshadow -Wcast-align -Wpointer-arith -Wwrite-strings -Wundef -Wmissing-prototypes -Wredundant-decls -Wextra -Wno-sign-compare -Wformat-security… yes
checking for CFLAGS -Wold-style-definition… yes
checking for CFLAGS -Wno-pointer-sign… yes
checking for CFLAGS -Werror-implicit-function-declaration… yes
checking for CFLAGS -Wno-unused-parameter… yes
checking for CFLAGS -Wno-missing-field-initializers… yes
checking if CC can generate dependency information… yes
checking byte order… little-endian
checking for DL_LIBS (-ldl -Wl,–export-dynamic)… yes
checking for PTHREAD_LIBS (-lpthread)… yes
checking for realtime scheduling… yes
checking for program pkg-config… /usr/bin/pkg-config
checking for NCURSES_LIBS (pkg-config)… -lncursesw -ltinfo
checking for NCURSES_CFLAGS (pkg-config)… -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=600
checking for working ncurses setup… yes
checking for function resizeterm… yes
checking for function use_default_colors… yes
checking for A_ITALIC… yes
checking for ICONV_LIBS (-liconv)… no
assuming libc contains iconv
checking for working iconv… yes
checking for uchar compatible wcwidth… yes
checking for header … yes
checking for function strdup… yes
checking for function strndup… yes
checking for CDDB_LIBS (pkg-config)… no
checking for CDDB_LIBS (-lcddb)… no
checking for CDIO_LIBS (pkg-config)… no
checking for CDIO_LIBS (-lcdio_cdio -lcdio -lm)… no
checking for FLAC_LIBS (pkg-config)… no
checking for FLAC_LIBS (-lFLAC -lm)… no
checking for MAD_LIBS (pkg-config)… no
checking for MAD_LIBS (-lmad -lm)… no
checking for MODPLUG_LIBS (pkg-config)… no
checking for MODPLUG_LIBS (-lmodplug -lstdc++ -lm)… no
checking for header … no
checking for header … no
checking for VORBIS_LIBS (pkg-config)… no
checking for VORBIS_LIBS (-lvorbisfile -lvorbis -lm -logg)… no
checking for OPUS_LIBS (pkg-config)… no
*** Package opusfile was not found in the pkg-config search path.
*** Perhaps you should add the directory containing opusfile.pc’ *** to the PKG_CONFIG_PATH environment variable *** No package ‘opusfile’ found checking for LIBSYSTEMD_LIBS (pkg-config)… no *** Package libsystemd was not found in the pkg-config search path. *** Perhaps you should add the directory containing libsystemd.pc’
*** to the PKG_CONFIG_PATH environment variable
*** No package ‘libsystemd’ found
checking for LIBSYSTEMD_LIBS (pkg-config)… no
*** Package libelogind was not found in the pkg-config search path.
*** Perhaps you should add the directory containing libelogind.pc’ *** to the PKG_CONFIG_PATH environment variable *** No package ‘libelogind’ found checking for LIBSYSTEMD_LIBS (pkg-config)… no *** Package basu was not found in the pkg-config search path. *** Perhaps you should add the directory containing basu.pc’
*** to the PKG_CONFIG_PATH environment variable
*** No package ‘basu’ found
checking for WAVPACK_LIBS (pkg-config)… no
checking for WAVPACK_LIBS (-lwavpack)… no
checking for header … no
checking for header … no
checking for header … no
checking for FFMPEG_LIBS (pkg-config)… no
*** Package libavformat was not found in the pkg-config search path.
*** Perhaps you should add the directory containing libavformat.pc’ *** to the PKG_CONFIG_PATH environment variable *** No package ‘libavformat’ found *** Package libavcodec was not found in the pkg-config search path. *** Perhaps you should add the directory containing libavcodec.pc’
*** to the PKG_CONFIG_PATH environment variable
*** No package ‘libavcodec’ found
checking for header … no
checking for PULSE_LIBS (pkg-config)… no
*** Package libpulse was not found in the pkg-config search path.
*** Perhaps you should add the directory containing libpulse.pc’ *** to the PKG_CONFIG_PATH environment variable *** No package ‘libpulse’ found checking for ALSA_LIBS (pkg-config)… no *** Package alsa was not found in the pkg-config search path. *** Perhaps you should add the directory containing alsa.pc’
*** to the PKG_CONFIG_PATH environment variable
*** No package ‘alsa’ found
checking for JACK_LIBS (pkg-config)… no
*** Package jack was not found in the pkg-config search path.
*** Perhaps you should add the directory containing jack.pc’ *** to the PKG_CONFIG_PATH environment variable *** No package ‘jack’ found checking for SAMPLERATE_LIBS (pkg-config)… no *** Package samplerate was not found in the pkg-config search path. *** Perhaps you should add the directory containing samplerate.pc’
*** to the PKG_CONFIG_PATH environment variable
*** No package ‘samplerate’ found
checking for AO_LIBS (pkg-config)… no
checking for AO_LIBS (-lao)… no
checking for program artsc-config… no
checking for header … no
checking for SNDIO_LIBS (-lsndio)… no
checking for header … no
checking for ROAR_LIBS (pkg-config)… no
*** Package libroar was not found in the pkg-config search path.
*** Perhaps you should add the directory containing `libroar.pc’
*** to the PKG_CONFIG_PATH environment variable
*** No package ‘libroar’ found
creating config/cdio.h
creating config/mpris.h
creating config/datadir.h
creating config/libdir.h
creating config/debug.h
creating config/tremor.h
creating config/modplug.h
creating config/mpc.h
creating config/mp4.h
creating config/curses.h
creating config/ffmpeg.h
creating config/utils.h
creating config/iconv.h
creating config/wcwidth.h
creating config/samplerate.h
creating config/xmalloc.h
creating config.mk
./configure
の結果を見る限り、make
を実行してビルドを開始することができます。
ただし、いくつかのライブラリ(例えば libsystemd
, libavformat
, libavcodec
, libpulse
, alsa
, jack
など)が見つからなかったというメッセージがあります。これらのライブラリは、cmusの特定の機能に必要かもしれません。例えば、特定のオーディオフォーマットのサポートや特定のオーディオ出力システムのサポートなどです。
もし、これらの機能が必要な場合は、関連するライブラリをインストールしてから再度 ./configure
を実行することをお勧めします。それらのライブラリが不要であれば、現在の状態で make
を実行してビルドを進めることができます。
ライブラリをインストールする場合は、以下のようなコマンドを使用します(必要なライブラリに応じて)。
sudo apt-get install libpulse-dev libalsa-ocaml-dev libjack-jackd2-dev libsamplerate0-dev libao-dev
上記は、一般的なオーディオ関連のライブラリをインストールするためのもので、多くの場合に適用可能です。しかし、./configure
のログに基づいて、必要なライブラリを特定してインストールする方がより適切かもしれません。./configure
のログに挙げられたライブラリに基づいて、以下のようなコマンドを検討します。
sudo apt install libpulse-dev libalsa-ocaml-dev libjack-jackd2-dev libsamplerate0-dev libao-dev libavcodec-dev libavformat-dev libcdio-dev libmad0-dev libmodplug-dev libmpcdec-dev libvorbis-dev libopusfile-dev libsystemd-dev libwavpack-dev libroar-dev
これらのコマンドは、./configure
のログで見つかった不足しているライブラリに対応しています。ただし、すべてのライブラリが必ずしも必要であるとは限りません。cmusでどのような機能やオーディオフォーマットを使用するかによって、インストールするライブラリを選択することができます。
たとえば、特定のオーディオフォーマットのサポートが不要であれば、それに関連するライブラリ(例えば libmad0-dev
はMP3のサポートに関連しています)をインストールする必要はありません。しかし、将来的に全ての機能を利用したい場合は、上記のコマンドでライブラリをインストールすることをお勧めします。
インストール後、再度 ./configure
を実行して、以前のエラーが解決されたことを確認します。ライブラリ不足の問題がなくなったので、make
コマンドを入力します。
もし、いくつかのライブラリが不足している状態で make
を実行すると、次のような結果が生じる可能性があります。
- ビルドの成功:
- 不足しているライブラリがcmusのコア機能に影響を与えない場合、ビルドは成功する可能性があります。この場合、cmusはインストールされ、基本的な機能は利用できますが、不足しているライブラリに関連する特定の機能やフォーマットのサポートは利用できない可能性があります。
- 特定の機能の欠如:
- 例えば、
libavcodec
が不足している場合、cmusは一部のオーディオフォーマットをサポートしないかもしれません。その結果、特定のファイル形式のオーディオファイルを再生できないことがあります。
- 例えば、
- ビルドの失敗:
- 一部のライブラリはcmusのビルドにおいて必須かもしれません。そのようなライブラリが不足している場合、
make
プロセス中にエラーが発生し、ビルドが完了しない可能性があります。
- 一部のライブラリはcmusのビルドにおいて必須かもしれません。そのようなライブラリが不足している場合、
- 後からのライブラリ追加:
- ビルドが成功しても、後で追加機能が必要になった場合、必要なライブラリをインストールしてから、cmusを再度ビルドする必要があるかもしれません。
要約すると、不足しているライブラリがない場合、cmusのビルドは成功するかもしれませんが、全ての機能が利用できるわけではないことを意味します。具体的な機能が必要かどうかに基づいて、ライブラリをインストールするかどうかを決定することをお勧めします。make
は、ソフトウェアのビルドプロセスを自動化するためのツールです。主にUNIXやLinuxシステムで使用されますが、Windowsのような他のシステムにも利用可能です。make
コマンドは、ソースコードから実行可能なプログラムをコンパイルし、関連ファイルを適切な場所に配置するための一連のタスクを実行します。
主な機能と特徴
- 自動ビルド:
make
は、ソフトウェアのコンパイルとリンクのプロセスを自動化します。これにより、開発者は複雑なビルドコマンドを手動で実行する必要がなくなります。
- 依存関係の管理:
make
はファイル間の依存関係を追跡し、変更されたファイルのみを再コンパイルします。これにより、ビルド時間が短縮されます。
Makefile
の使用:- ビルドプロセスは
Makefile
という特別なフォーマットのファイルによって指示されます。このファイルは、どのファイルをコンパイルし、どのコマンドを実行するかなど、ビルドプロセスの詳細を記述します。
- ビルドプロセスは
- カスタマイズ性:
Makefile
はカスタマイズ可能で、プロジェクトの特定のニーズに合わせて調整することができます。
一般的な使用例
- ソースコードディレクトリ内で
make
コマンドを実行すると、Makefile
に従ってビルドプロセスが開始されます。 - ビルドの後、
make install
コマンドを使用してプログラムをシステムにインストールすることが一般的です。
make
いくつかの警告が出ました。
CC op/roar.lo
op/roar.c: In function ‘op_roar_drop’:
op/roar.c:213:9: warning: ‘roar_vs_reset_buffer’ is deprecated [-Wdeprecated-declarations]
213 | if (roar_vs_reset_buffer(vss, ROAR_VS_TRUE, ROAR_VS_TRUE, &err) == -1) {
| ^~
In file included from /usr/include/libroar/libroar.h:209,
from /usr/include/roaraudio.h:137,
from op/roar.c:20:
/usr/include/libroar/vs.h:255:9: note: declared here
255 | int roar_vs_reset_buffer(roar_vs_t * vss, int writering, int readring, int * error) _LIBROAR_VS_STDATTRS _LIBROAR_ATTR_DEPRECATED;
| ^~~~~~~~
op/roar.c: At top level:
op/roar.c:354:46: warning: missing braces around initializer [-Wmissing-braces]
354 | const struct mixer_plugin_ops op_mixer_ops = {
| ^
LD op/roar.so
表示されたメッセージは、make
コマンドの実行中に発生した警告です。これらの警告は、特に roar_vs_reset_buffer
関数が非推奨(deprecated)であることを示しています。非推奨とは、将来のバージョンで削除されるか、すでにより良い代替手段が存在することを意味します。
この種の警告は、以下のことを示しています。
- コードの実行に影響を与えない:
- 警告は、コンパイルエラーではなく、プログラムのコンパイルや実行に直接的な影響を与えるものではありません。コンパイルプロセスは、これらの警告にもかかわらず進行します。
- 将来の問題の可能性:
- ただし、非推奨の関数を使用していることは、将来的な互換性の問題につながる可能性があります。ライブラリがアップデートされ、非推奨の関数が削除された場合、プログラムが正しく動作しなくなる可能性があります。
- コードのメンテナンスに関する情報:
- この情報は、ソフトウェアのメンテナンスや開発者にとって重要です。将来的には、これらの非推奨の関数を代替する方法にコードを更新することが望ましいでしょう。
現時点では、これらの警告はビルドプロセスの完了を妨げるものではありません。make
コマンドがエラーなく終了すれば、次のステップとして sudo make install
を実行して、プログラムをシステムにインストールできます。ただし、将来的にソフトウェアを更新する際には、これらの警告を考慮に入れることが重要です。
sudo make install
sudo make install
コマンドは、ソフトウェアのビルドプロセスの最終段階で使用される重要なコマンドです。このコマンドの意味と目的は以下の通りです。
sudo
:sudo
(superuser doの略)は、スーパーユーザー(通常はrootユーザー)の権限でコマンドを実行するために使われます。多くのシステムファイルやディレクトリには、通常のユーザー権限ではアクセスできないため、sudo
を使用して必要な権限を得ます。
make install
:make install
は、make
コマンドによってビルド(コンパイル)されたプログラムをシステムにインストールするために使用されます。このステップでは、実行可能ファイル、ライブラリ、設定ファイルなどがシステムの適切な場所(例えば/usr/local/bin
や/usr/local/lib
など)にコピーされます。- このプロセスには、通常、システムの重要なディレクトリにファイルをコピーするため、スーパーユーザー権限が必要です。
- 安全性と利便性:
sudo make install
を使用することで、ソフトウェアがシステム全体で利用可能になり、全てのユーザーがそのソフトウェアを使用できるようになります。- また、
sudo
を使用することで、システムの重要な部分に影響を与える可能性のある操作を安全に行うことができます。不適切な使用はシステムの安定性に影響を与える可能性があるため、慎重に使用する必要があります。
要するに、sudo make install
はビルドされたソフトウェアをシステムにインストールし、適切な権限でシステムの保護された場所にアクセスするために使用されるコマンドです。
インストールが完了したら、cmusと入力してプログラムを起動します。プログラムが起動したらまずは数字の7を押して、再生ボタンなどを確認します。プログラムをやめる時は英語のqを入力します。数字の5を押すと、ツリー表示されるので、後は矢印キーで移動できます。早速何か曲を聴いてみます。しかし、エラーが発生しました。
Error: opening audio device: No such device
プログラムを起動するコマンドとして以下を入力することで音楽を再生できました。
sudo cmus
続いて、ncmpcppをインストールします。
UbuntuなどのDebianベースのLinuxディストリビューションでは、sudo apt install ncmpcpp
コマンドを使用して ncmpcpp
をインストールすることができます。ncmpcpp
は Music Player Daemon(MPD)のクライアントで、CUI(キャラクターユーザーインターフェース)ベースの音楽プレーヤーです。
インストールを行うには、次の手順を実行します。
- ターミナルを開く:
- Ubuntuのターミナルを開きます。
- パッケージリストの更新:
- 最新のパッケージ情報を取得するために、次のコマンドを実行します。
sudo apt update
- 最新のパッケージ情報を取得するために、次のコマンドを実行します。
ncmpcpp
のインストール:- 以下のコマンドで
ncmpcpp
をインストールします。sudo apt install ncmpcpp
- 以下のコマンドで
- インストールの確認:
- インストールが正しく完了したことを確認するために、
ncmpcpp --version
コマンドを実行することができます。
- インストールが正しく完了したことを確認するために、
ncmpcpp
は MPD のクライアントであるため、MPD サーバーが設定され、動作している必要があります。MPD がまだインストールされていない場合は、同様に sudo apt install mpd
コマンドを使用してインストールできます。その後、MPD の設定を行い、ncmpcpp
で音楽を再生できるようになります。
Music Player Daemon (MPD) の設定は、主にその設定ファイルを編集することで行われます。Ubuntuや他のLinuxディストリビューションでの基本的な設定手順は以下の通りです。
MPDの設定手順
- MPDのインストール:
- まだインストールされていない場合は、以下のコマンドでMPDをインストールします。インストール直後は、サービスが起動していませんでした。インストールに加え、サービスも起動しました。また、PCを再起動すると、サービスは停止していました。
sudo apt install mpd
sudo systemctl start mpd
- まだインストールされていない場合は、以下のコマンドでMPDをインストールします。インストール直後は、サービスが起動していませんでした。インストールに加え、サービスも起動しました。また、PCを再起動すると、サービスは停止していました。
- 設定ファイルの編集:
- MPDの設定ファイルは通常
/etc/mpd.conf
にあります。このファイルを編集して、MPDの動作を設定します。 - 設定ファイルを編集するには、好きなテキストエディタを使います(例:
sudo nano /etc/mpd.conf
)。
- MPDの設定ファイルは通常
- 主要な設定オプション:
- 音楽ディレクトリ: MPDが音楽ファイルを探すディレクトリを指定します。
music_directory "/path/to/your/music"
- プレイリストディレクトリ: MPDがプレイリストを保存するディレクトリ。
playlist_directory "/path/to/your/playlists"
- データベース: MPDの音楽データベースファイルの場所。
db_file "/var/lib/mpd/tag_cache"
- ログファイル: MPDのログファイルの場所。
log_file "/var/log/mpd/mpd.log"
- オーディオ出力: オーディオ出力の設定。多くの場合、デフォルトの設定で十分ですが、必要に応じて調整できます。
- 音楽ディレクトリ: MPDが音楽ファイルを探すディレクトリを指定します。
- 設定の適用:
- 設定を変更した後、MPDを再起動して新しい設定を適用します。
sudo systemctl restart mpd
- 設定を変更した後、MPDを再起動して新しい設定を適用します。
- パーミッションの確認:
- MPDが音楽ファイルや設定ファイルにアクセスできるように、適切なパーミッションが設定されていることを確認します。
注意点
/etc/mpd.conf
ファイル内の設定は、システム全体に影響します。注意深く編集します。- MPDはバックグラウンドで動作するデーモンなので、設定を変更した後は、サービスを再起動する必要があります。
- MPDはネットワーク越しにも操作できるため、必要に応じてネットワーク関連の設定も行うことができます。例えば、SSH接続したリモートPCにインストールしても、通常はリモートPCで音が鳴ります。SSH接続をしているPCでも音を鳴らすことが可能になります。
実践
まずは、上記のように、クライアントとサーバーを同じPCにインストールした状態で動作確認します。音楽ファイルは適切な場所に配置しておきます。ncmpcpp
コマンドを入力すると、Volumeがn/aとなっており、再生できません。
そこでmpd.confファイルを編集します。
sudo vi /etc/mpd.conf
編集した場所は以下になります。最初はコメント扱いになっていたので先頭の#をはずしただけです。
audio_output {
type "alsa"
name "My ALSA Device"
mixer_type "hardware"
}
MPDを再起動して新しい設定を適用します。
sudo systemctl restart mpd
今度は、Volumeのn/aの問題は解消され、音楽を聴くことができるようになりました。ただし、音量調整しても反映されない問題が残っています。また、時々音が出ない問題もあり、上記の記述では間違っている可能性があります。対処法はaplayコマンドを使用して、デバイス情報を出力することです。後ほど、それを示します。
SSHを介してリモートPCに接続し、そこでMusic Player Daemon (MPD) を操作して音楽を再生する場合、音楽はリモートPCのオーディオ出力(つまり、そのPCのスピーカーや接続されたオーディオデバイス)から再生されます。
もしSSHを介して接続しているPC(ローカルPC)で音楽を聴きたい場合は、以下のいずれかのアプローチを取る必要があります。
- 音声ストリーミング:
- リモートPCで音楽をHTTPストリーミングとして配信し、ローカルPCでそのストリームをキャッチして再生します。これには、MPDの設定を変更してHTTPストリームを有効にする必要があります。
- PulseAudioのネットワーク転送:
- PulseAudioを設定して、リモートPCからローカルPCへ音声をネットワーク経由で転送します。これはやや複雑で、両方のPCにPulseAudioがインストールされている必要があります。
- ファイル転送:
- SSHを使用して音楽ファイル自体をローカルPCに転送し、ローカルで再生します。これはストリーミングではありませんが、ファイルベースで音楽を聴くのに有効な方法です。
mpd.confファイルで、音楽ディレクトリが初期値で/var/lib/mpd/musicになっていたので、ここに音楽ファイル配置するか、場所を変更して保存します。
Ubuntuでオーディオデバイスがシステムに認識されているか確認するには、複数の方法があります。最も一般的な方法はコマンドラインツールを使用することです。以下に、いくつかの方法を紹介します。
1. aplay コマンドを使用
aplay
は、ALSA(Advanced Linux Sound Architecture)サウンドカードドライバの一部で、オーディオデバイスの情報をリストアップするのに使われます。
- オーディオデバイスのリストを取得するには、次のコマンドを実行します。
aplay -l
このコマンドは、システムに接続されているすべてのサウンドカードとデジタルオーディオデバイスを表示します。
2. arecord コマンドを使用
arecord
は録音用のコマンドですが、利用可能なキャプチャデバイス(マイクなど)をリストアップすることもできます。
- キャプチャデバイスのリストを取得するには、次のコマンドを実行します。
arecord -l
3. pacmd コマンドを使用
PulseAudioを使用している場合は、pacmd
コマンドを使ってオーディオデバイスの情報を取得できます。
- すべてのPulseAudioデバイスの情報を表示するには、次のコマンドを実行します。
pacmd list-sinks
これは出力デバイス(スピーカー、ヘッドフォンなど)の情報を表示します。pacmd list-sources
これは入力デバイス(マイクなど)の情報を表示します。
これらのコマンドは、システム上のオーディオデバイスが正しく認識されているかどうかを確認するためのものです。オーディオデバイスがリストされていない、または問題がある場合は、デバイスドライバーの再インストールや設定の確認が必要になる場合があります。Ubuntuでオーディオデバイスの情報を確認するためのコマンドが「存在しない」という状況であれば、それらのツールがインストールされていない可能性があります。以下は、これらのツールをインストールする方法です。
1. ALSAツールのインストール(aplay、arecord)
ALSAユーティリティは、私が確認したところ、Ubuntuにデフォルトでインストールされていませんでした。もし存在しない場合は次のコマンドでインストールできます。
sudo apt-get install alsa-utils
このコマンドは、aplay
、arecord
などのALSA関連ツールをインストールします。
2. PulseAudioツールのインストール(pacmd)
PulseAudio関連のツールは、PulseAudioパッケージに含まれています。もしPulseAudioがインストールされていない場合、次のコマンドでインストールできます。
sudo apt-get install pulseaudio
実際に行った作業
mamu@ubuntu22s:~$ aplay -l
aplay: device_list:274: no soundcards found…
mamu@ubuntu22s:~$ sudo aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: I82801AAICH [Intel 82801AA-ICH], device 0: Intel ICH [Intel 82801AA-ICH]
Subdevices: 1/1
Subdevice #0: subdevice #0
上記は、aplay -lのコマンドが見つからないのでインストールします。aplay -lではサウンドカードがないと表示されたので、sudoをつけてコマンド入力しました。これにより、デバイスが表示されました。
aplay -l
コマンドの出力に基づいて、MPD(Music Player Daemon)の mpd.conf
ファイルでのオーディオ出力設定を次のように行います。
MPDの設定
出力結果から、利用可能なオーディオデバイスがカード0、デバイス0であることがわかります。この情報をもとに、mpd.conf
ファイルのオーディオ出力セクションを次のように設定します。
audio_output {
type "alsa"
name "Intel 82801AA-ICH"
device "hw:0,0" # カード0, デバイス0
mixer_type "software" # ソフトウェアミキサーを使用
}
この設定では、ALSA(Advanced Linux Sound Architecture)を使用して、指定されたオーディオデバイスに音声を出力するようにしています。mixer_type
が software
に設定されているため、MPDがソフトウェアレベルで音量を制御します。そして、この記述をしたのち、mpdの再起動をすると、音量調整が可能となり、時々音が出ない問題が解消されました。
mpd.conf ファイルの場所
mpd.conf
ファイルは通常、以下の場所のいずれかにあります:
/etc/mpd.conf
~/.mpd/mpd.conf
- または、MPDが特定のカスタムパスで起動されている場合はそのパス
適切なアクセス権限(通常はroot権限)でエディタを開いて編集する必要があります。
sudo vi /etc/mpd.conf
MPDの再起動
設定を変更した後、MPDを再起動して新しい設定を反映させる必要があります。
sudo systemctl restart mpd
これで、MPDは新しいオーディオ出力設定を使用して音声を再生するようになります。音量も調整することができたので、多分あっていると思います。もし音が出ない場合は、オーディオデバイスの設定やシステムのオーディオ設定を確認する必要があります。
make
コマンドと make install
コマンドの実行時間について
make
コマンドと make install
コマンドの実行時間は、それぞれが行う作業の内容に基づいて異なります。
make コマンド
make
コマンドは、ソースコードから実行可能なプログラム(またはソフトウェアの他の成果物)をビルドするために使用されます。- このプロセスには、ソースコードのコンパイル、リンクなどの一連のビルド手順が含まれるため、プロジェクトのサイズや複雑性に応じて時間がかかることがあります。
- 大規模なプロジェクトや多くの依存関係がある場合、
make
コマンドの実行には相応の時間がかかることがあります。
make install コマンド
make install
コマンドは、make
によってビルドされたプログラムをシステムにインストールするために使用されます。- このプロセスには、コンパイルされたバイナリファイルのコピー、設定ファイルの配置、ライブラリのインストールなどが含まれます。
- 通常、
make install
はmake
よりも短い時間で完了します。これは、ビルドプロセスが既に完了しており、単にファイルを適切な場所にコピーするだけだからです。
結論
- 一般的に、
make
コマンド(ビルドプロセス)はmake install
コマンド(インストールプロセス)よりも時間がかかります。 - しかし、これはプロジェクトのサイズや複雑性、システムの性能によって異なる場合があります。
make install
の実行時間は通常短いですが、システムの速度やディスクの書き込み速度に依存します。