TidalCyclesに出会って2年目を振り返る

TidalCyclesに出会って2年目の活動をまとめました。昨年はTidalcyclesに出会って1年を振り返るという記事を書きましたが、今回はその続編でもあります。

主な出来事

BEAT GRANDPRIX バーチャル映像部門2位

OTAIRECORD presents ビートグランプリ のバーチャル映像部門で2位に選出いただきました!

画像
引用:https://twitter.com/beatgrandprix/status/1438860862207315969

応募作品は以下動画です。後述しますが、TidalとopenFrameworksの組み合わせで音楽と映像を作りました。OSCで曲と映像を同期しているので、オーディオリアクティブな映像になっています。豪華な審査員からたくさんのコメントもいただいており、嬉しかったです。去年のビートグランプリ Chill/Ambientでは3位で、2年連続でランクインするのは快挙とのことでした!

ストリーミング配信イベント出演

Tidal Club Presents… The Longest Night というストリーミング配信イベントに参加しました。その時の様子は以下動画です。

本番ではPC負荷が重すぎてソフトが落ちてしまい苦戦しましたが、後半持ち直して最後までやりきれました。上記映像では、ソフトが落ちたところはカットしています。

今回のライブ配信のシステムは以下です。

  • TidalCyclesでLivecodingしながらoFにOSCを送ってoFで映像表示
  • すでに用意したコードをxfadeで繋いでいくDJ風スタイル
  • たまにAbleton LiveをMIDIコントローラーで制御してエフェクトをかける
  • Coding画面とoF映像はOBSでクロマキー合成

ちなみに去年の映像は以下です。このときから比べると色々な進歩が見られると思います。

NFT出品

twitter上でのお誘いもあり、NFT作品を共作で出品しました。低価格で出品でき、環境負荷が低いXTZ(テゾス)を使っているhicetnuncから出品しました。

今の所1作品のみの出品ですが、継続して出品したら面白くなりそうだと思っています。

Music Video作成

こちらもtwitterでお誘いを受けて、なんとMusic Videoを作成しました。音楽ではなく映像でのお誘いは初めてでしたが、後述のTidalとoFを使ったVJシステムを使用しました。

TidalCycles

ブログ記事作成

Tidalcycles functionの使い方(随時更新) という記事を書きはじめました。TidalCyclesの使い方は基本的に英語記事で、日本語の記事は少ないです。functionは自分でもなんとなくしか理解しておらず、自分でまとめて発信することで理解が深くなるだろうということで、この記事作成を始めました。記事作成にあたって、「概要をつかめること」「基本的な使い方がわかること」「実際に使いこなせる応用事例を用意すること」を心がけました。twitterを見ていると、記事を活用いただいているのも見受けられるのでありがたいです。

他にも、自分の備忘録も兼ねて、いくつか記事を書きました。

TidalCyclesでやったこと

1年間Tidalをやっていて、新たにやったこと・気づいたことを列挙します。これらのネタだけで記事が書けそうです。私の過去ツイートに詳細記載しているので、気になる方は検索してみてください。

  • every を every”<1 2 3>”みたいにパターン化
  • s “[bd|sn|arpy]”というようにバーティカルバー | を使えばパターン内でランダムにできる
  • whenmod,while,spreadr を組合わせて自動的にフィル作成
  • # nudge perlin とすればルーズなドラムにできる
  • bassにはscaleを使えばフレーズが作れる
  • bd(1,16,[0,-1,-4]) とすればbdを好きな位置に配置できる
  • ADSR Sample Manager を使ってサンプル管理
  • allを使って全体にfunctionを適用する
  • whenmod’ を新たに定義して使う
  • 同じフォルダにbass drum,snare, hihat を格納して、n で番号指定することでドラムの定形を作る
  • オリジナルのfunctionをletで定義
  • TidalCyclesを1.7.2にupdate
  • TidalCyclesの公式サイトが刷新されたようです

TidalCyclesによるAbleton LiveのMIDI制御

TidalからAbleton LiveにMIDI CCを送信して、Ableton Live側のエフェクトを操作できるようにしました。エフェクトは、RolandのSP-404のエフェクトをAbleton Liveで再現する記事があったので、それを参考に作りました。SP-404のエフェクトはBeat Liveするにはもってこいです。この自動操作をTidalで常に走らせておくと、勝手にいいタイミングでBeat Live風のエフェクトをかけてくれます。

TidalCyclesと映像

この1年は映像にも力を入れました。p5.jsやNFTを中心としたCodingによる表現が活発化しており、Codingによる映像への興味が強くなりました。twitter上でかなり多くの作品があるので刺激を受けました。

p5.js挑戦

以下動画のように、processingではなくp5.jsを使って映像を作りました。p5.jsは最近ユーザー急増&コミュニティ活性化という面白い状況になっており面白そうでしたので始めました。

openFrameworks導入

今年のトピックスとして大きかったのはoFの導入です。「p5jsやprocessingと違ってoFは大規模なものが作れる」と記事で読んで、軽い気持ちで始めました。実際やってみると、「OSC受信」「動画の再生」「3Dの読み込み」「GLSL」など多様なメディアを扱える事がわかり、ハマっていきます。

oFでVJシステム開発

p5jsだとOSCの扱いが難しそう(できない?)ので、oFでOSC受信をできるようにしました。やり方はyoppa.orgのこの記事を参考にしています。この記事はスマホとPC間のOSC通信なので若干工夫が必要でした。連携できたときのツイートは以下です。

「OSC受信できる」ということは、「Tidalから出力するOSCに合わせて映像を反応させられる」ので、Tidalをベースとした面白い作品が作れそうだと踏んで開発を進めました。その中で、もともとの目標である「VJ自動化」に取り組みました。「OSC受信したらoFの画面を切り替える」というコードを組んだのが以下動画です。

これにより、Tidalに完全同期して映像を切り替えられるようになりました。ポイントは、演奏に使うTidalのOSCは無視して、VJ制御専用のトラック(私の場合トラックd9)を用意したことです。このトラックからは音を出さず、OSCでoFの映像を制御するためだけに使うようにしました。

このシステムを使って、ビートブランプリに応募する作品を作りました。VJ映像が曲に合わせて自動で切り替わるので、映像編集ソフトでの作業は文字をつけるだけですみました。

oF拡張:ofxPostGlitch

ofxPostGlitchという定番?のグリッチエフェクトを使えるようにしました。さらにofxPostGlitchを、TidalからコントロールできるようにoFのOSC受信のコードを改良しました。例えばTidalで# lpf “0 1 2 3″とすると、lpfの番号に合わせてGlitchエフェクトを切り替えられます。つまり、Tidalのビートに合わせてエフェクトを切り替えられるようになりました。

oF拡張:3Dデータ読み込み

3Dデータを読み込んでVJに使えるようにしました。読み込んだデータは、「同じデータを複数回表示する」「カメラをいろんな方向に動かす」「カメラを切り替える」といった工夫でVJとして面白い映像になるように工夫しました。

oF拡張:Shader

Shaderにも挑戦しました。動画読み込みはCPU負荷が非常に重いので、激しい映像を軽いCPU負荷で作るには、CPUではなくGPUを主に使うshaderが最適です。shader芸とも呼ばれるshaderを使ったVJ映像をtwitterで見ているととても面白いです。

まとめ

Tidalと並行してoFに向き合った一年でした。もともとプログラマーではないのでプログラミングに自信がなかったのですが、oFでのVJシステム作成を通して、自己流でもここまでできるんだ、と自信が持てました。各方面で作品を評価していただいたり、声をかけていただいたりして、色々と前進した一年だったと思います。

次の1年もよろしくおねがいします。