ライブコーディング入門:Sonic Pi篇パート1

はじめに バイトの片山です。久しぶりにBPSに来たら仕事が全く無かったので仕方なく記事を書いています。 最近ミリシタをやり始めました。スマホゲーはこれまで全部三日坊主でなかなか続かなかったのですが、ミリシタに関しては大学生活最後の夏休みをほとんど持っていかれてます。 大学生の夏休みといえばビーチでキャッキャウフフなイメージですが、今年も僕はご縁がありませんでした。自室で独り、ふと知り合いのInstargramを見てみるとカレシカノジョでナイトプール行ったり、旅館でアラアラウフフタイムだったりしてしょんぼりするわけです。 ちなみに僕はこの前青春18きっぷで京都・大阪まで行ってきました。JRには藤沢から乗ったのですが、台風の影響で大垣で立ち往生してしまい、結局10数時間かかってしまいました。 去年の夜行バスもそうでしたが、結構キツかったので二度とやりたくありません。 ↓宇治の大吉山です ↓某ベンチです。座りたかったのですが、お兄さんたちが釣りしてたので断念しました。 ↓大阪のどっかの夕焼けです ↓伏水酒蔵小路に行ってきました。17種で1700円 ……さて、前置きが長くなりましたが、今回はSonic Piでライブコーディングに挑戦してみようと思います。 あ、書き忘れていましたが桜守歌織ちゃん推しです。 Sonic Piに入門 音楽におけるライブコーディングというと、HaskellベースのTidalCyclesやLISPベースのExtemporeあたりが有名ですが、関数型ベースでちょっと分かりにくかったり導入が面倒くさかったりで取っ付きにくい印象があります。 その点、Sonic Piは導入が超簡単でRubyベースなので入門にうってつけ(らしい)です。 ケンブリッジ大学のSam Aaron氏によって教育用に作られた環境で、ラズパイ、Mac、Windows、Linuxで動きます。 インストール まずは公式サイトで使用OSに合わせてディスクイメージを入手します。 Macの場合は最初に立ち上げる時に開発元がうんたらで開けませんと言われて開けないと思いますので、Dockとかに入れて右クリックからの開くをやるといけます。 無事起動出来るとこんな感じの画面が出てくると思います。 最初からなんか書いてあります。左上のRunボタンを押してみるとアンビエントな感じの音が出てくるはずです。 入門 上記コードの数値を変えてRunボタンを押してみるとなんとなく雰囲気が出るのではないでしょうか(適当) Sonic Piには開発環境の左下に教材が付いています。ご丁寧なことに日本語版が表示されています。さすが教育用です。 このチュートリアルに沿って試していきたいと思います。 1.1 ライブコーディング 心を解き放てと書いてありますがよくわかりません。 それはさておき、以下のコードをコピペしてRunしろとあるのでとりあえずやってみます。 live_loop :flibble do sample :bd_haus, rate: 1 sleep 0.5 end bd haus(バスドラム)というサンプルが鳴った後に0.5秒間待機する、という感じに上から順番に処理されていって、それがループされてる感じですね。流れはけっこうイメージし易いかなと思います。 rateをいじると少し音が変わる感じがします。 ちょっとだけ応用して以下のようにしてみると、bd_haus >> 0.5sec待機 >> ambi_choir >>0.8sec待機 >> bd_haus >> 0.5sec待機 >>………..という感じになります。 live_loop :flibble do sample :bd_haus, rate: 1 sleep 0.5 sample :ambi_choir, rate: 1 sleep 0.8 end sampleの名前わかんなきゃ書けないじゃないか!という方、安心してください。sampleと入力すると候補が一杯表示されます。 また、コメントアウトもちゃんと出来るようで、#を使います。 live_loop :flibble do sample :bd_haus, rate: 1 sleep 0.5 # sample :ambi_choir, rate: 1 end 複数行コメントはどうすんねん!?と思いましたが、Rubyベースなのを思い出して試しにやってみたらSonic PiでもRubyと同じく、=beginと=endで囲めばオッケーでした。 live_loop :flibble do sample :bd_haus, rate: 1 sleep 0.5 =begin sample :ambi_choir, rate: 1 sleep 0.5 =end end 次は、空いているバッファに次のコードをコピペしてRunしろとあります。僕の場合はBuffer0からBuffer3までデフォルトでコードが入っていたのでBuffer4を選択しました。 live_loop :guit do with_fx :echo, mix: 0.3, phase: 0.25 do sample :guit_em9, rate: 0.5 end # sample :guit_em9, rate: -0.5 sleep 8 end live_loop :boom do with_fx :reverb, room: 1 do sample :bd_boom, amp: 10, rate: 1 end sleep 8 end パッと見よくわかりませんが、コメントアウトを外したり、mixの値を0~1で動かしてみろとのことなので色々とやってみます。 コメントアウトを外すとギターの音が逆再生されるみたいですが、これはrateがマイナスの値になっているからなのかな? おそらくrateはサンプルファイルの再生スピードなのでしょう。(この辺の界隈ではマイナスの値を入れると逆再生という仕組みはよくあることなので) mixをいじるとエフェクトのかかりが変わっている感じがしますね。phaseとあるのでフェイザーをどれだけミックスして音を出すかということを調整しているのだと思います。 1.2 インターフェースの探索 ここの項目は直にチュートリアルを見てもらったほうがわかりやすいと思いますので割愛しますが、一つ気になったのがスコープビューアです。 画面右上のScopeというところをクリックすると音の波形が見られるようになります。下図赤枠部分をクリックすると波形を表示してくれる青枠のボックスが出現します。 まぁ波形が見られるからなんてことはないんですが、鳴ってる音がどんな感じの波形なのかわかると音響合成の感覚が身につくかもしれません。さすが教育用です。 1.3 遊びを通した学び なんか心意気について書いてあります。よく読んでおきましょう。 おわりに キリが良いので今回はここまでということにします。 関連記事(サウンドとコンピュータ) python-oscを使ってみる:前編 python-oscを使ってみる:後編 応用編1: pythonとopenFrameworksをOSCで接続する 応用編2: PythonとopenFrameworksとPuredataをOSCで接続する iPhoneとopenFrameworksをOSCで接続する