Linux/Rosegarden他で音楽作成

Rosegarden他で音楽の作成(2018-06-11)


Lubuntu16.04 環境で音楽素材をつくります。

(いきなり余談からですが)
昔できごころで買った音楽作成ソフト(既にサポート期間切れ)
が遂に動かなくなったので
いっそLinuxでやれないか、と思ったのが調べてみたきっかけです。
音楽作成で私が持っていたイメージって
「楽譜を書くと、音が出て、音楽ファイル(mp3とか)も作成できる」
という流れだったのですが、実際は
「楽譜作成」、「音を鳴らす」、「音楽ファイル(mid/wav/mp3/oggなど)作成」
それぞれが別のソフトでやるイメージなんですね・・・
あと、音楽作成=楽譜では無く、「うちこみ」で作る?サウンドフォント?なにそれおいしいの?
いや、小中学校でDAWとか習わなかったから、用語がさっぱり分かりません...


(もくじ)


さておき、
楽譜作成ソフトの Rosegarden 起動直後の
「Rosegardenへようこそ」メッセージにも色々書いてあったのですが、
他にもMIDIの音源や再生用パッケージを入れる必要があるようなのです。
具体的には、
Qsynthとか、DSSIシンセサイザーとして使うfluidsynth-dssiとか、
あとは Synaptic Package Manager が rosegarden と一緒に自動で入れてくれた
Jack も重要になります。

これは一通り苦戦した後に、たどり着いたのですが、
最初にFedoraのドキュメントを見つけていれば、
もっと楽にイメージがつかめたかもしれません。
https://docs-old.fedoraproject.org/ja-JP/Fedora/16/html/Musicians_Guide/chap-Musicians_Guide-Rosegarden.html

必要なパッケージ

もちろん、何を使うか次第ですが、
わたしは結局、最初は以下でスタートしました。

Lubuntu 16.04 環境で、
Synaptic Package Manager から以下のファイルをインストール。

  • rosegarden (一緒にjack と qjackctl も入ることを確認)
  • fluidsynth-dssi
  • qsynth

依存するパッケージも自動インストール任せです。
あとは、録音で使った「audacity」と
楽器の音を確認するための「jack-keybord」を後で入れました。

あと自分への備忘録としては、Rosegarden設定画面に書かれていた
sfxload コマンドも使えるように、awesfx パッケージも追加しましたが、
いまのところは使っていません。

楽譜を書いて音を鳴らす(が、鳴らない)

とりあえず、ためしに音が出る段階まで頑張ります。
Rosegarden の楽譜画面で適当な四分音符を連打するかして
サンプルの楽譜をつくりましょう。
(適当なMIDIファイルをWebかどこかで拾って、Rosegardenで開いてもOK)

以下、イメージ画像(4ステップの)

Rosegarden画像イメージ

音が鳴らない件は後述ですが、
楽譜作成の流れは、前述のFedoraのドキュメントが分かり易かったです。

Rosegardenで[シンセサイザープラグイン]から音を鳴らす場合

まずはシンセサイザーの場合ですが、
何か仮の楽譜ができている状態で

[トラックパラメータ]
 -再生パラメータの[デバイス]
  -[シンセサイザープラグイン]
を選んだ後に、
[インストゥルメントパラメータ]
 -左上ボタンの[プラグイン]
  -[FluidSynth DSSI plugin]
を選択した後に、同じ画面で
[エディタ]
 -[Load SoundFont]
  で適当な sf2 ファイルを読み込む。例としては、
  /usr/share/sounds/sf2/FluidR3_GM.sf2
 -[プログラム]
  で適当な楽器が選べるようになる

再生ボタンを押すと、音が鳴ります。

ただ、楽器の指定方法が面倒です。楽器(トラック)が増えるたびに上記を繰り返さないといけない?
後日、もっといい方法に気が付くかもしれませんが・・・

次はjackを使う場合です。

Rosegardenで[標準MIDIデバイス]から音を鳴らす場合

まずは他のパッケージの起動と設定が必要になります。

(以下、最初はGUIでやりたいのでQsynthとQjackctl を使いましたが、
synth も jack もコマンドラインからパラメータ与えて起動しても良いようです)

Qsysnthの設定

まずは [Setup] - [Soundfonts] - [Open] で「サウンドフォント」を読み込みます。
(例として、/usr/share/sounds/sf2/FluidR3_GM.sf2 )
私の環境だと、結局ここだけ追加設定すれば音が出ました。

QjackCtlの設定

QjackCtl を起動して、緑色の「開始」ボタンを押して、jackd を起動します。

そして、[メッセージ]ボタン、動作ログとの長い戦いが始まります。

  • 「"Cannot lock down memory area (Cannot allocate memory)"」について

https://wiki.archlinux.jp/index.php/JACK_Audio_Connection_Kit
で解説されていたのですが、
実行しているユーザを audio に追加して(sudo adduser ユーザ名 audio)
再起動する必要があります・・・あるのですが、
これは通常、audioグループだとメモリロック設定が無制限だよね*1、という前提での話で、
その設定がうちの Lubuntu16.04 環境だと、「/etc/security/limits.d/audio.conf.disabled」に書いてありました。
そう、最後が「.disabled」だったので、リネームする必要がありました。
(.disabledは消す、あるいは別の設定でメモリロック制限を十分な値に変更する)

それで、audioやユーザの設定変更を反映するためにOS再起動したら
メモリロックのサイズが更新されていることも確認でき(ulimit -l または -a で確認)
Cannot allocate memory のエラーは消えました。

  • デバイスの指定

更にWebで探し回ると(まぁ、色々情報はあったのですが、英語で)
/proc/asound/cards に書かれている情報を元に
[設定]-[パラメータ]-[インターフェース]やら
[設定]-[Advanced]-[入力デバイス]やらに設定しないとダメらしい。
つまり「既定」や「default」といった値ではなく、具体的な値を指定します。
そうすると QjackCtl のウィンドウバーが復活したではありませんか!
・・・というか「今までバーが正しく表示されていなかった」という衝撃の事実が
ここにきてようやく判明します。
(つまり、最初からウィンドウがちゃんと表示されている環境なら、
入力デバイスはdefaultのままでも良いのかも??)

  • その他

あとは色々Web検索した結果、
場合によっては 「rm ~/.jackdrc 他」の残存した設定ファイルを
変更の都度、消す必要もあるらしいですが、
上記の手順が一通り判明した後にリトライした結果、
私の場合は特に、rm する必要はありませんでした。

あと、まだ Socket err が出てますが、放置します。知らん。

Rosegardenの設定

上記、Qsynth と Qjack を起動済みの状態で

[編集] - [MIDI] - [おのおのの再生開始時にすべてのMIDIコントローラに送ります]
を有効にして、
[スタジオ] - [MIDIデバイスの管理] - [MIDI出力]の選択肢の中から
[Synth input port ~]みたいな synthへ行く出力を選びます。

そうすると、Qjack の[接続] ボタンで見れる画面、
[ALSA]タブあたりが、rosegarden と Synth input の線が繋がるはず、です。
Qjackも、Qsynthも、設定変更の度に再起動が必要で、
その度に接続が切れるので、再接続やら再起動やらをするのを忘れないようにしましょう。

あとは、ようやく、
Rosegardenの再生ボタン(またはCtrl + Enter)を押します。
(再生済みの場合は一旦、再生ボタンの左にある
「最初に巻き戻しボタン」(または「HOME」キー)をその都度押すことを忘れずに)

これで音が出るはずです。
出ましたよね?出たって言ってください。

私の場合は前述の通りここまで相当苦戦しました。
ひとまずは Jack の[接続]ボタン見て、rosegarden と各パッケージの接続を確認、
再生ボタンを押すとQsynthまで届くのを確認(Qsynthの再生ランプ?が点滅する)
それでも音が鳴らなければ、サウンドフォント読込やら、デバイス指定やらを確認する、
という流れにたどり着くまでが、長かった。

これは音が出てからの話ですが、
パーカッションマトリクスエディタで作った音で、打楽器っぽい音が出ない場合は、
[インストゥルメンタルパラメータ]-[チャンネル] が
(Fixedではなく) Auto になっていることを確認しましょう。

あと、うちの環境だとわりと落ちたので、
まめに上書き保存(Ctrl + S)しとくと安全です。

Audacityで録音する

今回は音楽ファイルを作成することが目的なので、
Synaptic Package Manager で audacity もインストールしました。

Audacityを起動したら
[編集] - [設定] - [デバイス] で

インタフェース - ホスト から「JACKなんとか」を選んでJackと繋げます
そして、同じく
録音 - デバイス で 「qsynth」 を選択して、qsynthからの音を受け付けましょう
それから
[録音]タブ - [音による録音起動] チェックボックスを有効にしておきます
(これを使うと、音楽に合わせてAudacityが録音開始停止してくれる。
ただし、曲に無音パートがある場合はこの方法は使えないので注意)


マイク?のボタンを押して [モニターを開始] すると、
QJackCtlの接続確認画面、オーディオタブにも新たに「PortAudio」が出現して、
qsynth から PortAudio への音のやりとりができるようになります。

この状態で、録音ボタンを押すとスタンバイ状態になり、
rosegarden で曲を再生すると、連動して録音も開始、停止してくれました。

あとは、[オーディオの書き出し] (Ctrl+shift+E) で任意のファイルで出力できます。


ところで、Audacityからデバッグ文?らしきポップアップが表示されて
最初は何度も中断していましたが
(いま、その画面が手元にないのでうろ覚えですが)
あれはポップアップ時に、次から表示しないとか、そのまま続行するとかも選べるので
特に支障が無さそうなメッセージなら次から無視して良いと思います。

jack-keyboardで楽器の音を確認する

Rosegardenで何か作るとき、音程やら楽器やらを試しに鳴らしながら確認したい
ということで jack-keyboard を使いました。

事前に Qsynthを起動して、Qsysnthの「+」プラスボタンを押してから、
[MIDI] - [MIDI Driver]には「jack」を指定して起動します。
(わざわざ追加したのは、Rosegarden用のMIDI Driver(alsa_seq)と別口に用意したいからです)
あと、[Soundfonts]も忘れずに追加します。
(例: /usr/share/sounds/sf2/FluidR3_GM.sf2)

次に jack-keybord で [Connected to] で「Qsysnth」を選べばOKです。
QjackCtl の[接続] - [MIDI]タブで 接続状態を確認しましょう。
jack-keyboard から Qsynth へ線が繋がっていれば音が出るはずです。

押した感じ、
ミミミレレレドレミファミレ~だと、キーボードで、
CCC XXX ZX CVCX ですね。
シ(M)の次はド(Q)で、黒鍵はSとか、2とかの行になるっぽい。

キー入力のすすめ

Rosegardenも、jack-keybord もキーボードから音符入力はできますが、
それぞれ並びは違います。
(よくわからないのでキーボードを片っ端から押してみました)
Rosegardenだと 数字(音符の長さ)と y (音符-休符の切り替え)を使うだけでも
入力が格段に楽になりました。

というのも、別に私は音楽が得意な訳では無いので
なんとなく思いついた節を実際の音にするには
入力する、鳴らす、修正する、を延々と繰り返すだけなのです。

つまり、

  1. 適当な音符をマウスクリックで入力(キーボードでも可)
  2. 再生(Ctrl+Enterでも可)と巻き戻し(HOMEキー)
  3. 何か、おかしいので、やりなおして(Ctrl+Z)
  4. 8分音符(8)ではなく16分音符(6)で入れなおす、とか

という試行錯誤を繰り返すときに、
キーボードとマウスの両方でやると作業が楽で速いです。

昔できごころで買った音楽ソフトよりも格段に使い勝手が良いので、驚きました。
たまに急に強制終了するけどね!*2

蛇足(著作権とか素材とか)

音楽自体は有名なクラシック曲の有名なメロディーを、
どこか(Webやら図書館やら)で入手して、気合いで入力するだけで楽しめます。
でも、これを「公開する」となると、
著作権の問題が出て来るので気をつけましょう。
(クラシックでも最近のものだと著作権期間内かもしれないので、先に確認しましょう。
もちろん商業目的なら、何か有料の素材を購入して経費で落とせば効率も品質も良いですが)

そもそも、何か試しにアプリを作って、自分で好きな音を鳴らすのに、
フリーの音楽素材を探す根性が無かったのが
今回の音楽作成の発端でした。
簡単な効果音も、音楽作成ソフトで強引に作れますし。
(32分音符とかを適当に重ねて「バシッ」という音を作ったり、
打楽器やカスタネット音で「クリック音」に代用したり)

私のやっていることは、
子供の頃、良い感じの長さの棒を拾って、振ると(ぶんぶん音がして)楽しい
の延長に過ぎないので、そこはまぁ、気楽に。

自力で楽しんで作る分には、何作っても良いと思いますよ!楽しければ良いんです!


*1 制限、というのは ulimit -a コマンドで一覧が表示されるんですが、ユーザ毎やシステム全体で使って良い数の上限があるという話です。今回はメモリ制限数に引っかかったので、root権限でその制限数を増やしました。
*2 それは Windowsも同様。いや、むしろ Windowsの方が...