Linux Mint 20.3 で楽譜作成アプリMuseScoreを使って楽譜を作ろうと思いました。しかしMIDIキーボードを認識してくれませんでした。アプリのバージョンを変更し、「I/O」の「ALSAオーディオ」にチェックを入れることでMIDIキーボードを認識してくれて、音符入力が楽になりました。
※この記事は2022年2月7日に作成したものです。
短く言うと
Linux Mint 20.3 なPCで楽譜作成アプリMuseScoreを使おうと思ったら
MuseScore3.6.2ではMIDIキーボードを認識してくれませんでした。
MuseScore3.2.3ではMIDIキーボードを認識してくれました。
3.2.3でもはじめは認識してくれないので 「I/O」の「ALSAオーディオ」にチェックを入れます。
MuseScoreがMIDIキーボードを認識してくれれば音符の入力がとても楽になります。
※Ubuntu Studio 20.04 ではあらかじめMuseScore3.2.3 がインストールされています。
<<前の記事 【Linuxで音ゲーを実行#1】Linux Mintをインストールしたらヘッドホンから音が出なかった
【Linuxで音ゲーを実行#5】WineHQでMIDI出力アプリがフリーズ/音が出なかった 次の記事>>
はじめに
LinuxにMIDIキーボードを接続して演奏練習をしようと思いました。音ゲーで遊びながら練習しようと思いましたがandroid版「Chordana Play」もWindows版「Synthesia」も初心者には難しすぎました。そこで、楽譜から作ってしまおうといろいろやってみたら準備にとても時間がかかりました。
※この記事は【Linuxで音ゲーを実行】の4番目の記事です。
今回の環境
はじめはJACKをインストールして使おうと思ったのですがPulseAudioで足りました。JACKをインストールするとサウンドシステムのレイヤーがとても深くなってしまうので、より操作が簡単なPulseAudioを用います。
MuseScoreをインストールした
過去のバージョンMuseScore 3.2.3をインストールすることでMIDIキーボードを接続することができました。
Linux Mintでは「ソフトウェアの管理」から簡単にアプリケーションのインストールができます。そこで「MuseScore」を検索するといくつかの候補が上がります。今回は最新の安定版と思われる「MuseScore」をインストールしました。バージョンはMuseScore 3.6.2になります。
MIDIキーボードをUSBコネクタに接続してからこの3.6.2を起動しましたが、認識してくれませんでした。そもそも「MIDI入力を有効にする」の項目がグレーになっていて、有効にできません。また、パネルにMIDI接続を表す「I/Oコネクタのマーク」があるはずですが表示されません。理由はわかりませんがMIDIキーボードを受け付けてくれない仕様のようです2。
3.6.2をあっさり諦めて「ソフトウェアの管理」で削除しました。あらためて「MuseScore」を検索すると「MuseScore」のほかに「MuseScore3」も候補に上がります。今度は__「MuseScore3」__をインストールしました。こちらは過去のバージョンで3.2.3となります。
起動してみると「MIDI入力を有効にする」にチェックを入れることができ、パネルにMIDI接続を表す「I/Oコネクタのマーク」も表示されます。それでもMIDIキーボードを認識してくれませんでした。
MIDIキーボードの接続にひとクセある
MuseScore 3.2.3 はALSAオーディオに接続するとMIDIキーボードを認識します。
MuseScore 3.2.3 の設定の既定値は
- 「編集」→「環境設定」→「音符入力モード」→「MIDI入力を有効にする」ON
- 「編集」→「環境設定」→「I/O」→
「PulsuAudio」にチェック
となっていますが、これだとMIDIキーボードを認識してくれないし、音も出ません。
- 「編集」→「環境設定」→「音符入力モード」→「MIDI入力を有効にする」ON
- 「編集」→「環境設定」→「I/O」→ 「ALSAオーディオ」にチェック
これでMIDIキーボードを使って音符入力が可能になります。
PulseEffectsを使うとなんとなく仕組みがわかってくる
ここではALSAとPulseAudioをアプリとして扱います(本来は「カーネルモジュール/ライブラリ」と「サウンドサーバ」)。
いろいろいじってみたところ、以下のサウンドシステム(≒アプリの数珠つなぎ)だとMuseScoreはMIDIキーボードを認識しません/音が出ません。
×:「MIDIキーボード→MuseScore→×→PulseAudio→ALSA→」
MuseScoreはALSAに接続することでMIDIが扱える(MIDI入力を認識する/MIDI音を出力する)仕様のようなので、
○:「MIDIキーボード→MuseScore→(ALSAに偽装した)PulseAudio→ALSA→」
となればよいようです。PulseAudioによる偽装は自動で行われるのでユーザーが設定する必要はありません。MuseScoreの「I/O」で「ALSAオーディオ」にチェックを入れる(ALSAに接続したと思わせる)だけです。
PulseAudioのGUIにあたる「PulseEffects」で確認してみました。「ソフトウェアの管理」で「pulseeffects」と検索し 「PulseEffects」 をインストールします。私は、アイコンやイコライザーがかっこいいので、このアプリケーションをOSのインストール直後から使うようにしています。
PulseEffectsを起動してPulseAudioの振る舞いを見てみると以下のことがわかります。
- 前述のとおり3MuseScoreを既定値のまま起動すると、PulseAudioはそれを認識しますが音声が入力されません。
- 設定を変更して4MuseScoreのI/OをALSAオーディオにすると、MuseScoreとPulseAudioが「ALSAプラグイン」を介して接続され、音声が入力されます。同時にMIDIキーボードが使えるようになります。
- たとえばyoutubeなども同時に立ち上げてMuseScoreとyoutube両方から同時に音声が出力されたとき、PulseAudioは2系統を入力しミキシングして(ALSAにMIDI音声をわたして)スピーカーから音を出します。
ALSAは、音声入力が1つしかないのでMuseScoreが本当にALSAを専有してしまうと、ほか(youtubeなど)からの音声を受け付けられません。PulseAudioは複数系統の音声入力を受け入れてミキシングすることができるのでALSAに偽装して接続を仲介する仕組みとなっています。
おわりに
LinuxのアプリにはALSAに接続することで機能を十分に活かせるものがあります。
PulseAudioには自動で複数系統の音声入力をミキシングして1系統にまとめる機能があります。
ALSAの音声入力は1系統しかありません。
Linuxで楽譜を作ろうと思いたち、いろいろ調べたところ以下のようなサウンドシステム(≒アプリの数珠つなぎ)を構築すれば良いと考えました。
MIDIキーボード→MuseScore→fluidsynth→JACK→ALSA→音声出力デバイス
たぶんこれで良いと思うのですが、JACKはMIDIデータを扱える専門的なアプリケーション群を束ねるために必要なものなので、今回の「初心者がMIDIキーボードを使って音符入力をする」「初心者がMIDIキーボードを使って音ゲーで遊ぶ」といった限定的な目的ではJACKを使いこなせません。
JACKは専門的なアプリを扱えるメリットがある分、
- アプリの数珠つなぎをユーザーが行う必要がある。
- JACKがALSAの音声入力を占有するとPulseAudioが機能しなくなる。
- JACKとPulseAudioを共存させる方法はあるものの、結果、サウンドシステムが複雑になる。
以上のことから、ユーザーが複数のオーディオ/MIDIアプリを立ち上げるたびに数珠つなぎを見直す必要がある。といった初心者ならではのデメリットもあります。
今回は、繰り返しになりますが、以下のようなサウンドシステムが構築されました。
MIDIキーボード→MuseScore→(ALSA?)PulseAudio→ALSA→音声出力デバイス
こうなったのは
- MuseScoreはソフトウェア・シンセサイザーを内蔵しているので追加する必要がない。
- MuseScoreはALSAに接続することでMIDI機能を発揮する。
- PulseAudioは自動でALSAに偽装してMuseScoreのMIDI機能を発揮させる。
以上のことからMuseScoreの「I/O」を「ALSAオーディオ」にチェックすればあとはPulseAudioが自動でサウンドシステムを構築してくれた。からでした。
PulseAudioは自動でいろいろ世話をしてくれるので、初心者はPulseAudioに頼ると良いようです。
参考サイト
<<前の記事 【Linuxで音ゲーを実行#1】Linux Mintをインストールしたらヘッドホンから音が出なかった
【Linuxで音ゲーを実行#5】WineHQでMIDI出力アプリがフリーズ/音が出なかった 次の記事>>
-
サウンドサーバのひとつ。低レイテンシーで呼び出されたJACK対応アプリケーション同士でのオーディオ、MIDIデータ両方の接続を提供する。 https://ja.wikipedia.org/wiki/JACK_Audio_Connection_Kit ↩
-
受け付けてくれない理由を探しましたがわからないままです(2022/02/07)。 ↩
-
【認識しない/音が出ない】MIDIキーボード→MuseScore→×→PulseAudio→ALSA ↩
-
【認識する/音が出る】MIDIキーボード→MuseScore→(ALSAに偽装した)PulseAudio→ALSA ↩