はじめに
バイトの片山です。久しぶりにBPSに来たら仕事が全く無かったので仕方なく記事を書いています。
最近ミリシタをやり始めました。スマホゲーはこれまで全部三日坊主でなかなか続かなかったのですが、ミリシタに関しては大学生活最後の夏休みをほとんど持っていかれてます。
大学生の夏休みといえばビーチでキャッキャウフフなイメージですが、今年も僕はご縁がありませんでした。自室で独り、ふと知り合いのInstargramを見てみるとカレシカノジョでナイトプール行ったり、旅館でアラアラウフフタイムだったりしてしょんぼりするわけです。
ちなみに僕はこの前青春18きっぷで京都・大阪まで行ってきました。JRには藤沢から乗ったのですが、台風の影響で大垣で立ち往生してしまい、結局10数時間かかってしまいました。
去年の夜行バスもそうでしたが、結構キツかったので二度とやりたくありません。
......さて、前置きが長くなりましたが、今回は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 遊びを通した学び
なんか心意気について書いてあります。よく読んでおきましょう。
おわりに
キリが良いので今回はここまでということにします。