Sonic PiからLogic Proのソフトウェア音源を使う


まえがき

こんにちは。最近Sonic Piを触り始めてライブコーディングを楽しんでいます。
Sonic Piはとても有能なソフトウェアですが、ひとつだけ不満な点があります。それは、synthの種類少なくない...!?という点です。というわけで、今回はその問題を解決するために、Logic Proの豊富なソフトウェア音源をSonic Piから呼び出してみようと思います。

環境

OS: macOS Big Sur 11.4
Sonic Pi: v3.3.1
Logic Pro: 10.7.0

方針

具体的な設定手順を説明する前に、ざっと方針を説明しようと思います。
まずはSonic Piの出力先として仮想MIDIデバイスを設定します。(ちなみにMIDI Outに対応していることを利用するとポケットミクを歌わせることもできるらしいです1)
次にLogic Pro側でMIDI入力のチャンネルを各トラックに割り当てます。
基本的には以上の2ステップです

設定の手順

1. 仮想MIDI出力を有効にする

MIDI出力先として仮想MIDIデバイスを有効にする必要があります。それはAudio MIDI設定.appで設定できます。
起動したら、ウインドウ>MIDIスタジオを表示をクリック。

するとMIDIスタジオというウインドウが出てきます。

そうしたらIACドライバをダブルクリック。

IACドライバのプロパティというウインドウが開くので、装置はオンラインにチェックを付けて、適用をクリックすれば完了です。

Audio MIDI設定を使った設定は以上なので閉じてしまって大丈夫です。

2. Sonic Piの出力先を仮想MIDIにする

見出しの通りなので説明は不要かもしれませんが、、、入出力>MIDI Outputsにさきほど設定したIACドライバが表示されているので、これを選択して出力先をIACドライバにします。

3. Sonic PiからのMIDI出力をLogic Proで受け取る

まずはLogic Proを起動して、普段と同じように楽器をトラックに割り当てていきます。トラックの設定もデフォルトで大丈夫です

今回はトラック1にClassic Electric Pianoを、トラック2にAcoustic Guitarを割り当てました。

ウインドウ>MIDIエンバイロメントを開くをクリックしてエンバイロメントウインドウを表示させます。ちなみにこれはデフォルトでは非表示なので、もし出てこない場合は
⌘+0を押すと出てくるはずです。

これがエンバイロメントウインドウです。ややこしそうですが、設定内容は簡単なので安心してください。

まずウインドウ内の新規からフィジカルインプットをクリックします。

こんなものが出てきたら成功です。


同様の手順で、モニタとチャンネルスプリッターも表示させます。


ここまでで、ウインドウ上にフィジカルインプット、モニタ、チャンネルスプリッターの3つが出てきていたらOKです。

最後にこれらをつないでいきます。
ドラッグすると線が伸びるので、まずはフィジカルインプットとモニタを接続。

次にモニタとチャンネルスプリッターも同様の手順でつなぎます。

最後にチャンネルスプリッターと楽器をつないでいきます。このチャンネル数はあとでSonic Piから呼び出すときに使うので覚えておきましょう。

今回はチャンネル1にClassic Electric Pianoを、チャンネル2にAcoustic Guitarを接続しました。以上で設定は完了です!次はいよいよSonic Piから呼び出します。

4. Sonic Piから使ってみる

live_loop :classic_electric_piano do ; tick
  midi (ring :c4, :eb4, :f4, :g4).look, channel: 1 # チャンネル1にClassic Electric Pianoを割り当てたので、ピアノで再生される
  midi_cc 0, (line 50, 100, steps: 40).look, channel: 1
  sleep 0.25
end

live_loop :accoustic_guitar do ; tick
  sync :classic_electric_piano
  midi (ring :c4, :eb4, :f4, :g4).look, channel: 2 # チャンネル2にAcoustic Guitarを割り当てたので、ピアノで再生される
  midi_cc 0, (line 50, 100, steps: 40).look, channel: 2
  sleep 0.25
end

設定がうまくいっていれば音が流れたはずです!

(コード内にもコメントしてありますが、channelはLogic Proのエンバイロメントで割り当てた番号になります。)

参考