ライブコーディングツール「ORCΛ」と「SonicPi」の連携（備忘録、初心者向け）

## はじめに  

こんにちは。初めまして。ひろつぐと申します。 

ブログを投稿しようと思い、この内容を選びました。
ビジュアルプログラミング環境「**ORCΛ**」と 同じくライブコーディングやサウンドプログラム、プログラム教育に使用される「**Sonic Pi**」の連携について、最初のインストールから順を追ってこの記事で紹介したいと思います。
難易度はあまり難しいものではなく、記事内の文や画像と同じように手順を踏めばどなたでも操作できるように書いております。
そんなに長くもないです。

不備もあるかもしれませんが、その際はTwitter[@donbeumai](https://twitter.com/donbeumai)か、メールアドレス(hirotsugu2016@gmail.com)までご連絡頂くか、コメントしていただければ幸いです。以下のように、順を追って説明していきます。


### 目次

1. ORCΛについての説明

2. ORCΛとSonicPiの間で行われていること

3. ORCΛ, SonicPiのインストール

4. ORCΛから信号を出し、SonicPiで受け取る

5. SonicPiのサンプルを使い音を出す。

6. 終わりに



## 1. ORCΛについての説明

ORCAとは[Rekka](https://twitter.com/RekkaBell)氏と[Devine](https://twitter.com/neauoire)氏のデザインスタジオ[**Hundredrabbit**](https://100r.co/)によってリリースされたライブパフォーマンスも視野に入れられた`ビジュアルプログラミング言語環境`です。
![alt](https://raw.githubusercontent.com/hundredrabbits/Orca/master/resources/preview.jpg)

> Orca is a visual programming playground. [*`ORCΛから引用`*](https://hundredrabbits.itch.io/orca)


アルファ版が2018年12月にリリースされ、現在もかなりの頻度でアップデートが行われています。
その特徴は誰でも目を引く独特なドット調のGUIにあるかと思います。大文字のアルファベットや記号にそれぞれOperatorという機能が付加されており、それらを組み合わせて信号を送信する役割を持ちます。対応している規格は**udp**,**midi**,**osc**などです。
ORCΛ単体では音を鳴らす機能はversion167の時点ではありません。ORCΛは信号を送るだけの環境であり、最低もう一つ信号を受け取り音を鳴らす環境と同時に使用することで初めて音楽生成が可能になります。

例えば、ORCΛ開発元であるHundredrabbitsが公式にリリースしている[**Pilot**](https://github.com/hundredrabbits/Pilot)という`ORCΛ用コンパニオンシンセサイザー`がそれに該当すると思います。
![alt](https://img.itch.zone/aW1nLzE5OTY5MTkucG5n/original/WbLDHb.png)
[*ORCA x PILOT の映像*](https://youtu.be/YkwTpUUc5Yo)

> Pilot is a UDP synthetiser designed to be controlled externally. It was created as a companion application to the livecoding environment ORCA. [*`Pilotから引用`*](https://hundredrabbits.itch.io/pilot)


この記事内では紹介しませんが、ORCΛの機能やPilotとの連携については既に日本語の記事や解説動画もあるのでそちらを参照していただければと思います。


-------------------------------------------------------------------------------------------------------
rucochanman氏
[Live Programming環境のORCΛを試してみる①基本操作編] (https://qiita.com/rucochanman/items/98a4ea988ae99e04b333)


361°アートワークス氏
[ORCΛ(ORCA)日本語チュートリアル(Japanese Tutorial)](https://youtu.be/FOipn_cIa0Y)

-------------------------------------------------------------------------------------------------------

## 2. ORCΛからSonicPiへ

1の章でも解説した通り、ORCΛは信号を飛ばす役割を持った環境です。ORCΛの特質上、Operatorを駆使すれば**ミュージックシーケンサーのように自由に信号を送信する**ことができます。そしてSonicPiはその信号の受信が可能でありその信号の受信に応じて内臓のサンプルやシンセサイザーの音を鳴らせます。また、SonicPiは出力した音を加工するエフェクト機能を持っています。
つまり**`SonicPiの操作で音色を自由に作り、ORCΛの操作で好きなタイミングで作った音色を鳴らす`**。より自由度の高い音楽を生成することが可能になります。



## 3. ORCΛ, SonicPiのインストール

書く必要がないような気もしますが、一応ORCΛ、SonicPi双方のインストール先と手順は載せておきます。

#### ORCΛ(ver167時点)のインストール

1. [ORCΛ](https://hundredrabbits.itch.io/orca)に行き、Downloadボタンをクリック。
2. ドネーションのポップアップが出るので、ご支援される方は金額やメールアドレスを。そうでない方は*`No thanks, just take me to the downloads`*というリンクをクリックしてダウンロード先に。
3. ダウンロードボタンが並ぶページの飛ぶので、自分のPCのOSに合ったダウンロード先をクリックしてダウンロード、解凍。


#### SonicPi(3.1.0時点)のインストール

1. [SonicPi](https://sonic-pi.net/)に行き、ページ上部の自分のOSに合ったボタンをクリックするか、画面ページ下部に移動。
2. Get Sonic Pi for ○○(OS名) という項目があるのでそこからインストーラーをダウンロード。
3. インストーラーを起動してインストール。


## 4. ORCΛから信号を出し、SonicPiで受け取る

まずORCΛを起動します。
この記事内では**OSC**を使用する手順で説明をします。上のメニューバーからOSCというタブを開くと`SonicPi`という項目が既にあると思います。
![ORCAキャプチャ１png.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427487/a58900a4-c9f3-19b1-d522-65fc8807087d.png)

SonicPiをクリックして**Active**にします。もう一度タブを開いて横にActiveと出ていれば問題ないと思います。
これでORCΛ側の設定は終わりです。**Bang**が行われればOSCが飛んでいることになります。

次にSonicPiを起動します。
SonicPiの上メニューからPrefを選択して設定メニューを開きます。
環境設定>入出力に移動しNetworked OSCのメニューの「OSCメッセージをリモートから受信する」にチェックを入れます。
![sonicpiキャプチャ.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427487/f18e69d3-1386-d5fa-7ca0-6d2bc0809e01.png)

これでSonicPiの設定は終わりです。

それではORCΛからoscメッセージが送信されていてSonicPiが受信していることを確認する為に、ORCΛとSonicPiを開いた状態で、ORCΛ上でOperatorを使いBangを出してみてください。

試しにORCΛで以下のように記述してみます。

![orca-osca.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427487/8963860b-cb82-ece6-c4bc-37c686bb91b4.png)
`=`はoscプロトコルを使用するためのOperatorです。Bangが行われるたびに、`aというoscが送信される形`になります。

その際SonicPiの画面は以下のようになります。

![osc-a.PNG](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427487/6264087e-5276-6b66-084b-768939450da7.png)

Cue Viewerに**`/osc/a`**というログがORCΛ内部のBang発生のたびに更新されていると思います。
これでORCΛでシーケンスした音をSonicPiで鳴らす準備が整いました。

## 5. SonicPiのサンプルを使い音を出す。

準備が整ったのでORCΛのoscに合わせてSonicPiで音を鳴らしていきます。
4章の状態から引き続き、osc送受信が行われている状態があることを前提に説明します。
音を出すためにはSonicPi内蔵のシンセやサンプルを指定するなどの操作が必要です。
試しにサンプルを呼び出して鳴らします。

``` 
liveloop :drum1 do 
  use_real_time
  sync "/osc/a"
  sample :bd_fat, rate: 1
end
``` 
SonicPiのエディタに上記を入力して**Run**ボタンをクリックするか、Windowsでは**`Alt+R`**で実行します。
ORCΛ上のBangに合わせてサンプルbd_fatの音が鳴ってれば問題ありません。




これを利用していくつか組み合わせると以下のようにリズムトラックを作成することができます。

![capture2.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/427487/c75e2911-7883-31f0-a7d7-6e335cd74a56.gif)




## 終わりに
SonicPiでの音作りや詳しい記述に関してはいろいろ調べてみると幅が広がるかと思います。（私も勉強中です。）


また、Twitterで#ORCΛ のタグで検索するとSonicPiの他にもTouchDesigner,SuperCollider,GLSLなどさまざまなアプローチで連携している投稿の動画たくさんがあり面白いです。
音やプログラムに興味のある方はこれを機に是非始めてみてはいかがでしょうか。




最近はTouchDesignerも触る機会が多いので、また何か調べてまとまったら記事にしたいと思います。それでは。