wann poker live vol. 1
2019-06-14
一月程前にnyan氏を招待してwann poker liveなるイベントを開催しました。ライブコーディングによる音楽とポーカーを楽しむ会です。
そもそもは我々のポーカーをドローポーカーからテキサスホールデムへ進化させるための勉強会をする予定だったのですが、その3日前にライブコーディングなるものを知り(ライブコーディングについて詳しく知りたい方はyoppa先生の講義資料をどうぞ。本も良かったです)、これは面白い!となったので急遽ライブコーディングとポーカーをする会に変更になったのです。
ついでにロゴも作ってみました。こんなのです。本番には1分くらいで考えて描いたスケッチを使って、後日時間のある時にパスを引きました。全てがiPadで完結したので良い時代になったものだなあと思いました。
止めておきなさいと言われたけれど、ネオンバージョンも作ってみました。こっちを公式にしようかな。
コーディングをするので「wann live」部分は等幅フォントっぽくして、「poker」はなんとなくイメージで筆記体っぽくしました。等幅と筆記体と言えば、Tabulamore Scriptがアツいですね。そもそもTabular Type Foundry自体がアツいです。等幅フォントだけのファウンドリーなんてわくわくしかありません。そういえば、Source Han Code JPのPan-CJKバージョンのSource Code Monoも最近リリースされましたね。私もプログラミングフォントを合成したり、等幅フォントを作ったりしてみたいです。
まあ話を戻して、wann poker liveです。
ライブコーディング
音にしても映像にしてもライブコーディングにしても超ド級の初心者なため、映像も出したかったのですが両方一緒にするのは絶対に無理だと思ったので、音に反応するProcessing1のスケッチを用意しました。ほぼyoppa先生の講義資料そのままの、FFT解析を利用したものです。
また、音楽についても何も分かっていないので、場をつなぐために必要だろうと思ってPacemakerというDJをするiOSアプリを用意しておきました2。これもProcessingに入力として与えたかったのですが、一方で話し声など外部の物音は拾わないようにしたかったのでMacのマイクを使うのではなく、iPadの音声出力をMacのMIDI入力として使いました。また、SunflowerとLadioCastを使って音をルーティングしました。結構スムーズにできました。
やはりプロジェクターの方が雰囲気が良かろうと思って、プロジェクターとディスプレイの両方を使いました。プロジェクターで壁にコーディング画面を投影し、ディスプレイにはProcessingスケッチを映しました。
肝心の音のライブコーディング部分には、Sonic Piを使いました。Rubyライクな文法でループが作れる楽しいやつです。単体で動くのでインストールも楽ちん。ライブコーディングには他にもいろんなツールがあって、一覧はここにまとまっています。Extemporeとか、Lispライクなのが多いような気がします。Haskellも多いかなあ、有名なTidalCyclesとか。あ、FoxDotはPython製だよ!
今回はSonic Piを使ったわけですが、私が作った音楽は宇宙との交信と評されました。途中でnyan氏のターンになり、なんだか落ち着いたカフェのような感じになりました。記録のためにできたコードを置いておきます。nyan氏の方が、演奏しているっぽさがありますね。Sonic Piにコピペすると聞くことができます。
wann's code
tempo = 60
root = :C2 + 7
use_bpm tempo
live_loop :riff do
use_bpm tempo * 4
use_synth :pluck
16.times do
play scale(root, :major, num_octaves: 1).shuffle.take(2),
release: rand(3), amp: 1, pan: rrand(-0.7, 0.7)
sleep 0.5
end
end
live_loop :harmony do
use_bpm tempo * 2
use_synth :sine
if one_in(2)
with_fx :wobble do
2.times do
play chord(root, :M7, num_octaves: 4)
sleep 1
end
2.times do
play chord(root, :M, num_octaves: 4)
sleep 1
end
end
else
2.times do
play chord(root, :M7, num_octaves: 4)
sleep 1
end
2.times do
play chord(root, :M, num_octaves: 4)
sleep 1
end
end
end
live_loop :random_bd do
if one_in(3)
sample :bd_haus, amp: 1.0, cutoff: 80
end
sleep 0.25
end
live_loop :drums do
sample :bd_808, amp: 2.5, cutoff: 80
sleep 0.5
if one_in(4)
2.times do
sample :bd_haus, amp: 1.5
sleep 0.5 / 2
end
else
4.times do
sample :bd_klub, amp: 1.5
sleep 0.5 / 4
end
end
end
nyan's code
use_bpm 80
live_loop :nya do
6.times do
sample :drum_bass_soft
sleep 0.5
end
end
live_loop :nyanya do
sample :drum_snare_soft
sleep 1
end
live_loop :nyanyanya do
use_synth :tri
play chord(:g3, :m7)
sleep 0.5
play chord(:g3, :m7)
sleep 0.5
play chord(:g3, :m7)
sleep 0.5
play chord(:g3, :m7)
sleep 0.5
play chord(:c3, :m7)
sleep 0.5
play chord(:c3, :m7)
sleep 0.5
play chord(:c3, :m7)
sleep 0.25
play chord(:c3, :m7)
sleep 0.25
play chord(:c3, :m7)
sleep 0.25
play chord(:c3, :m7)
sleep 0.25
play chord(:e3, :m7)
sleep 0.5
play chord(:e3, :m7)
sleep 0.5
play chord(:e3, :m7)
sleep 0.5
play chord(:e3, :m7)
sleep 0.5
play chord(:c3, :m7)
sleep 0.5
play chord(:c3, :m7)
sleep 0.5
play chord(:c3, :m7)
sleep 0.25
play chord(:c3, :m7)
sleep 0.25
play chord(:c3, :m7)
sleep 0.25
play chord(:c3, :m7)
sleep 0.25
end
live_loop :nyanyanyanya do
use_synth :tri
play :g2
play :c3
sleep 0.25
play :a3
play :e3
sleep 0.25
play :b3
play :b4, amp: 0.6, cuttoff: 80
sleep 1.5
if one_in(4)
play :c4, cutoff: 80
sleep 0.25 / 2
play :e4, cutoff: 80
sleep 0.25 / 2
play :a3
play :e3
sleep 0.25
play :b3
play :b4, amp: 0.6, cuttoff: 80
sleep 1.5
end
end
ポーカー
その後、テキサスホールデムのルールを学んで、二人でテキサスホールデムをしました。楽しかった。けれど私の態度が悪いとの苦情を受けて、今ではポーカーで遊んでもらえません。またポーカーがしたいです。
余談ですが(余談ばかりですが)、ProcessingのProce55ing表記を先日imoutoid’s websitoidで初めて知った。そもそもライブコーディングに辿り着いたのも元はと言えばimoutoidのSuperCollider関連の記事を読んだから。 ↩︎
こいつはiPhoneとiPadでインターフェイスが結構異なっていて、iPhoneだと波形の操作がメインだけどiPadだとターンテーブルを回す要領で色々できるから楽しい。 ↩︎