ちょっとした動画用に作成した MIDI ファイルの音色を変えたものを録音したくて、Web 上で使える MIDI プレイヤー「MIDI Player」を利用させていただきました。アップロードした手持ちの MIDI ファイルの Instrument (音色)を変えるだけでなくサウンドフォント(音源)も指定できたりして、めちゃくちゃ便利です。手元にあるプレイヤー timidity より使い勝手が良いです。
ソフトウェア音源といえば、今から20年くらい前の高校生の時に YAMAHA の XG ソフトウェア音源やローランドの VSC 音源を聞いて感動したのがめちゃくちゃ懐しいです。MIDI 音楽や着メロ全盛期で、それまでオンボードのポンコツ音源でしか再生できなかったので、同じ楽譜でここまで違うものかと。
DTM は全然ダメで高校生の頃に「てきとーシーケンサ」なんかで打ち込みをして遊んだ程度でそこからの知識は全然ありません。調べてみるとサウンドフォントって GM 系の音源なんですね。コマンド履歴を確認してみると、はるか前に
sudo apt install freepats fluid-soundfont-gm fluid-soundfont-gs
と、インストールしていました。
今回はそれっぽく聞こえるメロディを動画に使いたいだけですので、音源に関してのこだわりはありません。とりあえず鳴っている音を録音できればそれでよしとしました。
MIDI 界隈どころか、Linux の音関連の情報って PulseAudio だったりJACK だったり ALSA だったり、なんか色々なサウンド関連の用語が出てきて覚えてません。一度調べながら設定したら、全部忘却の彼方へ置いてくるルーチンなんです。
なので、ほぼ自分用の覚え書きにこの記事を書いています。
手順
ffmpeg で録音を開始します。初めに録音を開始しておくのがミソです。
ffmpeg -f pulse -i default -y rec.mp4
「サウンドとビデオ」メニューにありがちな「PulseAudio 音量調整」を開き、録音中のアプリケーションリストを表示します。
録音中のアプリケーションがなければここに表示されないので、最初に録音を開始する必要があります。
録音対象を「Monitor of (現在出力しているデバイス名)」に設定されていることを確認します。
上のスクショの場合は、SONY SRS-XG300 を Bluetooth 接続して音声出力させている状態です。それをモニター(監視、つまり録音対象に)します。
あとは録音したい音を鳴らすだけです。録音終了は ffmpeg のコンソールに対して q キーです。いつもどおりですね。
余談
僕が使っている LMDE の標準の「サウンド」は「アプリケーション」タブに音声を出力しているアプリケーションリストが表示され出力音量を調整することが可能です。
でも、録音対象を指定することができません。
「出力」「入力」タブはそれぞれデバイスを表わしており、「入力」はマイクやラインインといった本当の意味での外部入力デバイスなんですよね。それをアタッチする手段がないので、上記の「PulseAudio 音量調整」を別途入れた気がします。
あとちょっと気になる点も。
今回の件とは直接関係はありませんが、リモートワークのミーティングのために奮発して購入した(しかも嫁ちゃんの分も合わせて2つも) Bluetooth ワイヤレスイヤホン SONY WI-C400 と相性が悪いようで、出力プロファイルを指定してもプツプツとノイズが入って使いものになりません。また、常時イヤホンに搭載されているマイクの音が出力されてしまう始末。
同じ SONY 製品の SRS-XG300 や SRS-XB20 だと、上のように High Fidelity Playback (A2DP Sink) でスピーカーもマイクも問題なく動作してるんですけどねー。なんだろうな。
WI-C400 はスマホでは問題なく使えているので、多分 OS 側の設定かバグか、対応しきれていないプロファイルのせいなのか、そんな感じで諦めモードになってます。
あ、でも XG300 でも XB20 でもたまに死ぬことがあるので、やっぱ OS 側が不安定なのかな。