Edited at

Live Programming環境のORCΛを試してみる①基本操作編

ライブコーディング環境、SonicPiやFoxDotやTidalCycles等色々あるけど、結局どれが一番いいかな?と迷っている内に、また新たな選択肢が増えてしまいました。

というわけでORCΛです。

preview.jpg

マインスイーパー的でマトリックス的でライフゲーム的なヴィジュアルかつミニマムでかわいらしい、このUIの魅力は動画で見た方がわかりやすいと思うので、まずはインスタやtwitterに#ORCΛタグであがっている作品をチェックしてみることをおすすめします。


ORCΛの導入

まずは以下からインストール。

https://github.com/hundredrabbits/Orca

驚くのがマニュアルの簡潔さです。というか、実質的なチュートリアルはすべて動画に丸投げしている感なので、一旦この動画をみて使い方の雰囲気を掴んでみるのがいいです。

公式チュートリアル充実してきました!特にワークショップ用の解説を一通り試してみるのが入門に良いとおもいます。Craftwifeさんによる日本語訳記事もあります。(2019/06/01追記)

ORCA workshop 翻訳

動画を見るだけでも操作の大枠はつかめると思いますが、日本語の解説記事もまだ出ていなかったため、この記事では自分の理解の整理も含め、ごく基本的な動作についてまとめていきたいと思います。


基本コンセプト

ORCΛでは、いわゆるトリガーとか発火のタイミングのことをbangと言っています。

ORCΛをSonicPiやTydalCycles的な演奏用途で使う場合、最終的にはこのbangのタイミングでMIDIまたはOSC信号を音源ソフト側に送信するという流れになると思います。

つまり、いかに思った通りに(または思いもしなかったような)bangのパターンを生成するか、というのが目標になりますが、ORCΛではいくつかの「オペレーション」を組み合わせることによってこれを実現します。


オペレーションを使ってみる

ORCΛではアルファベット1文字が個別の「オペレーション」です。各々のアルファベットには異なる役割のオペレーションが割り当てられていますが、大きく分けるとそれはbangを生成するものと、そうではないものです。

例としてbangを生成するオペレーションの中で一番基本的な「D(delay)」を使ってみます。

ORCΛ上の任意のグリッドにDと打ってみると、その下に「*」マークがちょいちょい出てきますが、これが定期的にbangを生み出してる状態なわけですね。

Dは左右に1グリットずつ入力をとり、入力の数値によってbangするタイミングを変えます。

例えばこんな感じ

スクリーンショット 2019-04-07 11.46.42.png

ここからORCΛの独特なところなのですが、この入力の2とか4とかの数値を、他の音楽系ソフトのように2分音符とか4分音符とか、ビートに対する分数…1拍のdurationを分割する(1/2,1/4)ようなイメージで考えてしまうと躓きます。

Dへの入力は数字が大きくなるだけビートが細かくなるのではなく、むしろその逆です。

マニュアルに”Bangs on a fraction of the runtime frame.”とあるように、ビートではなくframeに対するbang発生の割合になっているのです。

例でいうと、まず右側の入力に4と置いてみると、Dは4frameごとに1回の割合でbangを生成するということになります。

デフォルトのBPMは120、frameは1ビートあたりに4進むので、この場合はちょうど4frameごとに1回=1ビートあたりに1回bangが生成されることになります。

さらにDの左側の入力に2と置くと(画像のような2D4の並びにする)、1/4の割合のさらに1/2の割合、ということで1/8の割合(8frameごとに1回=2ビートに1回)でbangが発生します。

このように、ORCΛでは大文字アルファベットのオペレーターたちはビートではなくframeを基準に実行される、ということを意識するとわかりやすくなります。

これで単純なbangの生成はできるようになったので、冒頭に貼ったサンプル画像を参考に、もっとシーケンサーっぽいものを組み立てていきます。

Dの次によく使われているオペレータがC(clock)です。これはその名の通りframeごとに数値をカウントアップするオペレータです。Cの出力はbangではなく数値という点に注目してください。つまりこれは主に他のオペレータに接続してモジュレーションするために使用することになります。

Cも左右に2つの入力をとります。左側の入力はクロックのrateを設定でき、例としてここを2にすると、2frame進むごとに1カウントアップされる…という風にスピードを変化できます(Dの入力と同じ考え方です)。右側の入力はカウントアップの上限です。

続けてずぱりシーケンサーっぽい機能をもった便利なオペレーターのT(track)です。これでドミソラドミソラ(CEGACEGA)…と繰り返すような単純なシーケンスを作ってみます。

まずシーケンサーでいうところのステップ数を決めたら(4T)、各ステップのnoteを置いていきます。(4TCEGA)

これでシーケンサーの基盤は完成で、あとは4の左隣のグリッドでステップの番号を指定すればアウトプットとして選ばれたnoteが出てきます。

ここでステップ番号の指定を規則的に0,1,2,3…と繰り返すために、さっきのCを活用します。

文章だとわかりにくいですが、試してみると簡単です。

スクリーンショット 2019-04-07 20.36.46.png


OSCで情報を送信する

さて、これだと単にORCΛの画面上にnoteを出力しているだけのことですから、この情報をMIDIかUDPかOSC信号で音源ソフト側に送ってあげる必要があります。ここでは(自分にMIDIの環境がないので…)OSCを使います。

OSC信号を送るには「=」を使い、=のあとにOSCのアドレスとメッセージを続けるような形にします。=a123なら/aのアドレスに1,2,3というメッセージを送るようになります。

bangのタイミングでOSC信号を送信するようにしたいので、ここでDを登場させ、bangと=を接続します。

さらに、さっきCとTで作ったシーケンサーの出力をnote情報として送信するため、このように組み合わせます。

スクリーンショット 2019-04-07 20.35.13.png

急にJというのが出てきましたが、これは上側のグリッドの数値を下側にワープさせるオペレーションで、複数のオペレーションを組み合わせる時の配置の調整などに使えます。

これでbangのタイミングでC,E,G,Aというnote情報をループして送るモジュールが完成しました。

というわけで自分もまだまだ初心者なので、今回は初歩的なところまで。

次回はSuperColliderと通信して実際音を鳴らしてみるところを書こうと思います。

公式連携シンセのPILOTを使って音を出してみる編を更新しました。