JACKで音楽制作環境を構築する

オーディオサーバー/接続キットのJACK(JACK Audio Connection Kit)を使うと、オーディオアプリケーションやMIDIコントローラーなどで入出力されるオーディオストリームやMIDI信号をつなぎ合わせて、柔軟な音楽制作環境を構築できます。

インストール:

$ sudo apt-get install jackd qjackctl


インストール後はメニューバーの「アプリケーション」→「サウンドとビデオ」→「JACK Control」からJACKのGUI設定ツールであるQjackCtlにアクセスできます。


JACKはオーディオサーバーです。オーディオアプリケーションやオーディオデバイスやMIDIコントローラーのポートをJACKサーバーに接続してオーディオストリームやMIDI信号を共有します。

例えば...コントローラーからのMIDI入力をシーケンサーにつなぎ、シーケンサーのMIDI出力をシンセサイザーにつなぎ、シンセサイザーのオーディオ出力をエフェクターにつなぎ、エフェクターから出力されるオーディオと、マイク入力やライン入力を、マスターミキサーにつなぎ集めて...というように、MIDI信号やオーディオストリームの流れをJACKで柔軟に構築できます。


JACKサーバーのGUI設定ツールであるQjackCtlの「Start」ボタンを押すとJACKサーバーがスタートします。「Stop」ボタンを押すとJACKサーバーは停止します。


「Connect」ボタンを押してオーディオやMIDIの接続を設定しましょう。設定ウインドウにはオーディオアプリケーションやオーディオデバイスやMIDIコントローラーのイン/アウトプット可能なポートが並びます。ポートを接続したいポートまでドラッグアンドドロップすると接続できますよ。


「Setup」ボタンを押してJACKサーバーの設定を行います。設定ウインドウの「Settings」タブの「Parameters」覧で「Realtime」にチェックを入れて「Priority」の値を増やすとJACKサーバーをリアルタイム処理モードで実行できます。また「Frames/Period」の値を増やすと音飛びを改善できます。設定はJACKサーバーの再スタート後に有効になります。

JACKサーバーはLinuxでの音楽制作において動脈となる重要な存在です。これは必須のシステムと言えるでしょう。

制限を緩めてリアルタイム処理を有効にしよう!
リアルタイムカーネルを導入してパフォーマンスを高めよう!


ヒント:
JACKサーバーにオーディオアプリケーションを接続する場合、アプリケーション側で利用するオーディオドライバ/インターフェイスの種類をJACKに設定する必要があります。高機能なオーディオアプリケーションの多くは、自動的にJACKサーバーへ接続を試みるか、JACKの利用が必須となっています。

QjackCtlはJACKサーバーの操作・設定を行うためのGUIフロントエンドです。JACKはサーバープログラムであり、コマンドや異なるアプリケーションからもコントロール可能なので必ずしもQjackCtlは必要ではありません。

27 comments:

Jippei さんのコメント...

Saladaさん、Saladさん!
JACKを繋いだ後は、何をすればMIDIキーボードを使えるようになるのでしょうか・・・!?

Akira Ohgaki さんのコメント...

Jippei さん
PCのキーボードを使って演奏する...ソフトウェアMIDIキーボードであれば、多くのシーケンサーやシンセサイザーが標準で備えているので、特に問題はないはず?です。

PCに接続したMIDIキーボードデバイスからのMIDI入力、ということであれば次のように。

まず、シーケンサー側のMIDI設定でドライバーを「JACK」に設定します。設定後は一度シーケンサーを起動し直します。

次にJACKの接続設定で「MIDI」タブか「ALSA」タブを見てください。MIDIキーボードとシーケンサーの入出力ポートが現れています。画面左側のMIDIキーボードの出力ポートを右側のシーケンサーのMIDI入力ポートに繋ぎます。

それぞれに複数のポートがあるはずです。MIDIキーボードがどのポートでMIDI出力を行っているかは利用しているMIDIキーボードの設定によります。シーケンサーのどのポートに入力するかはJippeiさんの目的や都合で決めることになるでしょう。

ドライバーの設定とポートの接続。これでMIDIキーボードを利用することができます。


それから、比較的簡単に操作できるシーケンサー機能を持ったアプリケーションを紹介しておきます。

LMMS:
LMMSはJACKに依存しません。LMMSは、テクノ、ダンス、エレクトロニックなどの曲制作に向いたアプリケーションです。LMMSは統合制作環境として必要なセットが揃っていて、すぐに音を出して試すことができますよ。JACKに依存せずにMIDIキーボードも利用できるので、LMMSはLinuxで音楽をはじめやすいでしょう。

LMMSインストール:
$ sudo apt-get install lmms

インストール後メニューに現れない場合は自分でメニューアイテムを追加する必要があります。

Rosegarden:
Rosegardenは汎用的なシーケンサーです。内部に音源を持っていないので、音を出すためには「ZynAddSubFX」や「QSynth(FluidSynth)」のようなシンセサイザーと接続する必要があります。

Rosegarden & ZynAddSubFX & QSynthインストール:
$ sudo apt-get install rosegarden
$ sudo apt-get install zynaddsubfx qsynth

QSynthはFluidSynthというシンセサイザーのGUIです。FluidSynthはサウンドフォント(SoundFont)を利用したシンセサイザーで、音源となるサウンドフォントファイルが必要です。サウンドフォントはさまざまなサイトで配布されているので、好みの音を探すと良いでしょう。


Hmm....準備をするだけでもややこしいかもしれませんね...簡単にはじめるにはLMMSがオススメです。

音楽は多様です。Linuxは音楽に関してはクレイジーなほど種類と選択肢があり、機能は細分化されて磨かれています。JACKはそれらのパーツを繋ぎあわせるオーディオジャックです。
Akira Ohgaki(Linux Salad)

Jippei さんのコメント...

ちょっと頑張ってみます♪
まだ掴めてないんですが、進展があったらまたコメントします!
ありがとうございます♪

Jippei さんのコメント...

お久しぶりです!
ご報告に上がりました♪

取り合えず、Jackサーバーを立ち上げて、amSynthのVirtual KeyboardでPCのキーボードから音が出すことは出来ました!

ですがLMMSに関しては、PCのスピーカーそのものから音を出す設定がわからず、まだ音を出せていません・・・


なんとかJackが(名前の通り!)アプリケーション同士を繋いでいるということが実感で来ました♪

これからは「何をどう繋げると正しく音を出るのか」を試行錯誤してみようと思います!

いつもありがとうございます!

Akira Ohgaki さんのコメント...

音を聴けてよかった!

LMMSはパターンやピアノロールにキーを入力してゆけば音は鳴ります。鳴らない場合は、メニューの「Settings」→「Show settings dialog」からスピーカーやキーボードのアイコンをクリックして、オーディオやMIDIの設定を確認すると良いかも。

LMMSを単独で利用するなら「ALSA」でOKですが、JACKと連携する場合は「JACK」に設定する必要がありますよ。
Akira Ohgaki(Linux Salad)

Jippei さんのコメント...

LMMSもピアノロールから音が鳴りました!

…どうもJackと上手く繋げていなかっただけで、MIDIキーボードを接続せずに単体で立ち上げたみたら、普通に音が鳴りました!

ありがとうございます!
お手数かけてすみません…
助かります…!(-^△^-)ゞ


あと、ZynAddSubFXは、amSynthとVirtualKeyboardの組み合わせと同じく、単体でもきっちり音が出るので、パソコンのみで音が作れそうで、とても楽しみです♪

Jippei さんのコメント...

JACKサーバーでMIDIキーボードと繋いでみたら、

Horgand、Hextar、mx44、Nekobeeは音が上手くでました!!

やった〜〜〜♪


…ただ一つ、残念なことに自分の環境では、前述のソフトウェアシンセ単体で音を鳴らしたときと違い、極小さな「プッ…」というノイズが発生してしまいます…

これはアプリケーションの追加や設定の見直しで、なんとかなりますか…??

Akira Ohgaki さんのコメント...

そう、ノイズ!それはJACK利用時に付きまとう問題。

JACKは音の合成処理を一定の間隔でピリオドしながら処理しているので、間隔内で処理が終わらなかった場合は未処理分がノイズとなって聞こえてしまうのですよ。ZGGG!

まずは、そのピリオドされる間隔を延ばすと良いでしょう。

JACKの設定で「Frames/Period」の値を「2048」や「4096」などに増やし合成処理の間隔に余裕を持たせればノイズをある程度減らせるはずです。ハイパフォーマンスな環境ならノイズが出ない程度に値を減らすと良ですね。

より本質的な改善のためには、JACKの動作速度自体をリアルタイムに近づけると効果的ですよ。

JACKの設定でリアルタイムオプション「Realtime」にチェックを付けて「Priority」の値を「89」くらいに設定すると良いでしょう。

事前にシステムの設定でアプリケーションのリアルタイム動作を許容できるようにする必要があります。

制限を緩めてリアルタイム処理を有効にしよう!

Akira Ohgaki(Linux Salad)

Jippei さんのコメント...

JACKの設定で「Frames/Period」の値を「4096」にしたら、プツプツ音が消えました!


ただRealTime処理は、自分のマシンだと無理みたいです・・・

リアルタイムカーネルやリアルタイム処理規制を緩めるところまで来たので、後一歩・・・!
という悔しさもありますが、音が出てシンセが使える嬉しさが勝っちゃって・・・♪


音源によってはプツプツ音が出るものもあったりするようで、マシンが高負荷だとなる場合もあるようで、そこは自分のセッティングにかかっているような感じがします。

Akira Ohgaki さんのコメント...

ライブ演奏ではなくシーケンスを組んで曲を作ってゆくのであれば、なんとかなるかもしれませんね。プレビュー時にノイズが出るかもしれませんが、ある程度作ったらレンダリングして確認しながら作業を進めると良いですね。
Akira Ohgaki(Linux Salad)

Jippei さんのコメント...

Firefox3が正式版になったので、アップグレードついでにUbutnu8.04をクリーンインストールしました♪

その後にUbuntuStudioのオーディオ関連のパッケージをインストールしたら、Jackがリアルタイム処理できるようになりました!

UbuntuStudioを入れるときにリアルタイムカーネルも自動的にインストールされて、音飛びやノイズも無くなり、Hexterの音もキレ〜に鳴るようになりましたよ〜!!

(これがメッチャ嬉しい!)


それもこれもSaladさんのおかげです!
Saladさんの投稿がなかったら、

「…あれ?カーネルに‘rt’って書かれてる…???」

ってなったままのだけでした…!


ふふふ…♪

ついに欲が出てきて…どう録音すれば良いのかで迷っていますよ…♪♪

Saladさん、JackでMIDIキーボードとソフトウェアシンセサイザーを繋いだ状態で、録音をしようと思ったらどうするのが正攻法なのでしょうか…?

Akira Ohgaki さんのコメント...

簡単ですよ。
PCのオーディオ出力を本物のジャックでレコーダーに繋いで録音します。これなら録音のためにPCに余計な負担もかかりません。

別の方法を?
JACK環境での演奏をシンプルに録音するなら、JACK Timemachineを使うと良いでしょう。

JACK Timemachineインストール:
$ sudo apt-get install timemachine

JACK Timemachineは録音のボタンしかありません...とてもシンプルなレコーディングツールです。録音したオーディオはホームフォルダにw64(Wave 64)ファイルで保存されます。

w64は制作向きのフォーマットです。ArdourやAudacityや...多くのオーディオアプリケーションがw64に対応していますよ。
Akira Ohgaki(Linux Salad)

Jippei さんのコメント...

録音出来ました!

しかしw64をArdourで読み込むと、聞き取れないほど小さなパルス表示しかされません・・・

これはどうしたら良いのでしょう・・・???

まだJackサーバーの真価を引き出せずにいます・・・!
(悔しい・・・!! ;-< )

Akira Ohgaki さんのコメント...

hahaha...そう、Timemachineはシンプルすぎるかも。別途ミキサーでピークレベルを見ながら録音音量を調整しておく必要がありますよ。

Ardourを利用しているのであれば、Ardourで録音してそのままマスタリングに持って行くと良いですね。
Akira Ohgaki(Linux Salad)

匿名 さんのコメント...

poosanといいます。初心者です。質問があります。よろしくお願いします。
私のノートPCでは、jack を立ち上げるとオーディオが鳴りません。録音しようとしても、mic からの音は聞こえるんですが、「録音用フォルダがないか、書き込みできません」エラーになります。システムの音も出なくなります。 Rosegarden ではmidiの音も出ません。
ところが jack を off すると、Rosegarden で midi の音が鳴るんです。その代わり オーディオのトラックが作成すらできません。起動時 「jack を走らせろ 」メッセージが出ます。ちなみに ArdorGTR2 Hydrogen
ともに、jack なしで録音・再生できます。で、オーディオ・midi 両方を録音・再生出きるようにするには jack をどう設定すればよいのでしょうか?
素人の私には???すぎて困ってます。  教えていただけませんか?

Akira Ohgaki さんのコメント...

Hi poosan さん
Umm...おそらく...JACKではなくRosegardenの設定が原因かも。

Rosegardenで音が鳴らない場合は、Rosegardenのメニューの「設定」→「Rosegardenを設定」から設定ウインドウを開いてオーディオ設定の「JACK起動」タブで「Rosegarden起動時にJACKを起動」のチェックをはずしてください。JACKの起動はQjackCtl(JACK Control)で行うと良いでしょう。音も出るはずです。

Rosegardenでオーディオ録音を行う場合は、Rosegardenのメニューの「コンポジション」→「ドキュメントプロパティの編集」から設定ウインドウを開いてオーディオ設定の「オーディオファイルパス」に適当なフォルダを指定してください。標準ではユーザーのホームフォルダ内の「rosegarden」フォルダに録音したオーディオを保存しようとします。実際にフォルダが存在しない場合はエラー表示されます。

それから、実は、ArdourはJACK必須のアプリケーションで、内部的な処理でJACKを自動起動します。

RosegardenとArdourは、それぞれのアプリケーション自体にJACKの接続設定機能が備わっているので、JACKが起動していればQjackCtl(JACK Control)を使わずにMIDIやオーディオの接続設定を行えます。なので、RosegardenとArdourの利用時にJACKの接続設定を気にしなくても大丈夫ですよ。

余計に???にしてしまった?

匿名 さんのコメント...

poosanです。 akiraさん、ご返答ありがとうございます。ご指摘とおりでした。
rosegarden というフォルダが自動で作られる、とばかり思っていました。自分でフォルダを作ってから、録音したら、、、チャアンとrecされてます、うれしい! デモm,midiデータの音が再生されません。rosegarden のデモファイル
.rp を 開いても、メーターは降れているのに、音が鳴らない、、、。またしても、、mmm? 一体、どうして? 普通に gm音源が指定されているのに鳴りません。もしかして、別途にmidi 音源を起動させる必要がある?
tiMidity を先に起動しても音鳴りません。  Configure の midi の訓細を見ると、、、WriteOnly です。
14,0 - (Midi Through, Midi Through Port-0) (DUPLEX) [ctype 2, ptype 655362, cap 99]
128,0 - (TiMidity, TiMidity port 0) (WRITE ONLY) [ctype 1, ptype 2, cap 66]
128,1 - (TiMidity, TiMidity port 1) (WRITE ONLY) [ctype 1, ptype 2, cap 66]
128,2 - (TiMidity, TiMidity port 2) (WRITE ONLY) [ctype 1, ptype 2, cap 66]
128,3 - (TiMidity, TiMidity port 3) (WRITE ONLY) [ctype 1, ptype 2, cap 66]

Creating device 0 in Play mode for connection 128:0 TiMidity port 0 (write)
Default device name for this device is MIDI software device
Creating device 1 in Play mode for connection 128:1 TiMidity port 1 (write)
Default device name for this device is MIDI software device 2
Creating device 2 in Play mode for connection 128:2 TiMidity port 2 (write)
Default device name for this device is MIDI software device 3
Creating device 3 in Play mode for connection 128:3 TiMidity port 3 (write)
Default device name for this device is MIDI software device 4
Creating device 4 in Play mode for connection 14:0 Midi Through Port-0 (duplex) (not connecting)
Default device name for this device is MIDI output system device
Creating device 5 in Record mode for connection 14:0 Midi Through Port-0 (duplex) (not connecting)
Default device name for this device is MIDI input system device
Current timer set to "system timer" with timer checks
AlsaDriver::initialiseMidi - initialised MIDI subsystem

さて、どうしたらmidiもならせますでしょうか? ながながと申し訳ありませんです。  よろしくお願いします。midi keyboad からのデータは記録されているので、何とかLinux de DTM
したいです。

Akira Ohgaki さんのコメント...

poosanさん。
大丈夫、すぐにDTMできます。

TiMidity音源をRosegardenで利用するには、MIDI再生デバイスにTiMidityを指定する必要があります。

Rosegardenのメニューの「スタジオ」→「MIDIデバイスの管理」から設定ウインドウを開いて「再生デバイス」欄のデバイス設定を見てください。General MIDI デバイスの「接続」に「128:0 TiMidity port 0 (write)」などTiMidityのポートを設定すると、TiMidity音源でMIDI再生できるようになりますよ。

「MIDI external device *」など他にもデバイス設定を追加できるので、複数の音源を利用する場合は、それぞれに割り当ててゆくと良いでしょう。

OK, Linuxで曲作りを楽しんでください。

Akira Ohgaki(Linux Salad)

匿名 さんのコメント...

poosan です。 akira さん、丁寧な返答をありがとうございます。ご指摘の設定は Rosegarden 起動時にすでに設定されているようです。それでも midi は音でません。 私が設定すべきは何でしょうか? jack を off の時、 Rosegarden に midi ファイルをインポートすると gm 音源で鳴るようです。
jack を start して Rosegarden を起動すると midi は音出ません。設定は両方同じです。??? どう対処すればよいのでしょうか? 袋小路、、、。

Akira Ohgaki さんのコメント...

Hmmmm...ちょっと出発地点から考えます。利用しているTiMidityがJACKで利用しているデバイスとコンフリクトしているか、そもそもJACKに対応していないのかも?

Ubuntuの場合は、Ubuntuのリポジトリから「timidity」パッケージをネットワークインストールするだけです。インストールされるTiMidityはJACKに対応し、インストール後にシステムに常駐するので手動で起動する必要もありません。

TiMidityインストール:
$ sudo apt-get install timidity

Ubuntuのリポジトリ以外からパッケージをインストールした場合は、そのTiMidityがJACKに対応している必要があります。TiMidityをソースからコンパイルしているのであれば、コンパイル時にjackサポートを有効化する必要があります。

まずは、QjackCtlの「Connect」ボタンを押して「MIDI」か「ALSA」タブでTiMidityが表示されているか確認してみてください。
Akira Ohgaki(Linux Salad)

匿名 さんのコメント...

Akiraさん、色々考えていただいてありがとうございます。 poosan です。jack Connect では
Alsa のタブに TiMidity が表示されています。Rosegarden 起動時も、TiMidity は接続されています。 が、音出ません。midi のタブにはありません。
ちなみに、jack の SetUP
タブで サーバーのドライバーを alsa から oss に変更してみましたら、midiの音はでました。その代わりオーディオの音は出ません。dummy も試しましたが、midi はO.K.、オーディオは ダメ、でした。 両方音の出るドライバーがありません。また Output Device を変更してみましたが、サーバーが接続できなくなった上、修復できず、Ubuntu 全部再インストールとあいなりました、、、。

一体、両方音の出る方法はあるんでしょうか?

お手(頭)をわずらわせて、すみませんがもし思いつくことがあれば、おしえてください。

Akira Ohgaki さんのコメント...

poosanさんの話を聞くと、JACKやLinuxのオーディオシステムの問題ではないだろうと私は考えます。

TiMidityが実際にはJACKと連携していない?のかもしれません。次のことを試してみると状況が解りそうです。

1. 既に起動しているTiMidityを終了
$ sudo killall timidity
2. JACKサーバーをスタート
3. インターフェイスにALSAを、アウトプットモードにJACKを指定してTiMidityを起動
$ timidity -iA -Oj
4. RosegardenなどでMIDI再生

これでMIDI音が鳴れば、自動起動するTiMidityの設定に問題がある可能性がありますね。けれど、私がその場合の良い対処法を思いつかない...Ubuntu環境でUbuntuのリポジトリからjackd, rosegarden, timidityをインストールしている場合、通常問題は起きないはずなのだけれど...

TiMidityの代わりに、QSynth(FluidSynth)を使ってみるのも良いかもしれません。
Akira Ohgaki(Linux Salad)

匿名 さんのコメント...

poosan です。 Akira さん、ながながお付き合いいただいて有難うございました。指示のとおりやってみると、再生のタイミングは遅れるようですが、midi もオーディオも再生されるようになりました。うれしいです。 OutputDevice を
default や hw0 ,hw4,,,,と色々変えてもmidiが鳴ったり鳴らなかったり、と思えばオーディオが鳴らなくなったり、、。てっきりデバイス関係が原因?と思ってました。jack も Rsegarden も Timidity も Synapticマネジャ より Ubuntustudio 関係を一括でインストールしたので、設定に問題はない、とも思ってました。
初心者はとんちんかんでいけませんなあ。 Akira さんのおかげで、Linux de DTM 、遊べます。soundfontもすでにいっぱいDLしてまして、ワクワクです。 どうもありがとうございます。

Akira Ohgaki さんのコメント...

音鳴るようになってよかった!
UbuntuStudio関係のパッケージには気をつけないといけないみたいですね。私も勉強になりました。
Akira Ohgaki(Linux Salad)

匿名 さんのコメント...

アシッドに使いたいですけど、きゅべーすにつかいたいけどできますか?

匿名 さんのコメント...

CDにする場合はどうしたらいいですか?

Akira Ohgaki さんのコメント...

Hi, 匿名さん
Er? Wineの上で動かしているACIDやCubaseとJACKを連携させたいってこと?umm...Wineの設定でオーディオドライバをJACKに設定して試してみて。オーディオの入出力なら接続できるかも。

音楽CDの作成はUbuntu標準のBraseroディスク書き込みツールを使えば良いよ。
Akira Ohgaki(Linux Salad)

コメントを投稿

ラベル

アーカイブ

Linux Salad 検索

コメント