# Booklog - 演奏するプログラミング、ライブコーディングの思想と実践

Author: 田所 淳

## 2025-06-23

- Read count: 1
- Pages: 1 ~ 15 (pages read: 15)

数年本棚に鎮座されてたので読む。 F# で次何やるか考えるとき参考になるかな。
ライブコーディングは即興プログラミングによるパフォーミングアート。
個人的にライブコーディングは楽器の演奏で、 OSS なんかは推敲を重ねるような執筆活動のようなイメージ。
インタープリタ言語を使うことで、コードの即時実行が可能。 compile が必要な場合も hot reload ができれば同じことができそうやな。
ライブコーディングはコードとプログラマとの緊密なフィードバックループが生まれる。
demo のやつはインテンショナルプログラミングみたいな話か。
今日の OSS のように、コードが公開されてても量が膨大で認知負荷的に black box というのもママあるので、自分が制御可能な範囲にコードを取り戻すみたいな感じの理解でいいかな。

## 2025-06-24

- Read count: 1
- Pages: 16 ~ 35 (pages read: 20)

ライブコーディングが生まれるまで。古来音楽が即興演奏の流れを汲んでいる。
コンピュータ音楽は 1950 年代から始まったが、一般的なコンピュータでリアルタイム音響合成が可能になったのが 1990 年代、 laptop PC でのライブパフォーマンス Laptoronica (Laptop computer + Electronica) が生まれ、 laptop による演奏の観客に見えない構造的問題を解決する手段としてライブコーディングが生まれた。
2000 年の Slub に始まるライブコーディングの発展。
ライブコーディングのためのソフトウェアの等。 TOPLAP の GitHub repo "All things livecoding" に膨大なリストがまとめられている。
知らないことばかり。プログラミングが呼吸のように生活に溶け込んでくる。これは自分の方向性とも通じてていいな。
ライブコーディングには音響合成とグラフィクスの 2 要素があって、音響合成には SuperCollider がよく使われてるのか。

## 2025-06-25

- Read count: 1
- Pages: 36 ~ 77 (pages read: 42)

Chapter 2 初級編 ライブコーディングにふれる Sonic Pi 。
Sonic Pi は Ruby を基にした教育用途の言語で平易で理解しやすい。利用環境毎に言語が違うのでそこそこに読んで概念を掴むつもり。
Synth と Sample がある。 Synth は音階を奏でる。音色毎に独自の parameter を持ち音色を調整できる。
Sample は音階がないが再生速度で音程を変化させられる。他にはエフェクトを掛けたり。ランダムに音程音色を変化させたり。
ランダムな条件分岐。 1/2 はコイントスというのか。コード演奏やスケールの指定。ルートを変数化した転調ができたり。やっぱ音楽理論が必要と。
live loop で途切れることなく演奏できる。 live loop は複数実行できて全部同期してる。
複数の live loop が同時並行して実行される概念は新鮮やな。記述は手続き的やけど live loop と全体は宣言的なんだ。

## 2025-06-26

- Read count: 1
- Pages: 78 ~ 98 (pages read: 21)

Chapter 3 中級編 ライブコーディングをマスターする TidalCycles 。
インストール周りは古めなので調べながら見た。
TidalCycles は Haskell のライブラリ。要はライブコーディングの DSL か。
SuperCollider に SuperDirt 経由で OSC(Open Sound Control) 通信して音を鳴らす。
SuperDirt は Dirt Sampler の SuperCollider 実装らしい。 SuperCollider がサウンドエンジン。
GUI でサウンドエンジンを起動して SuperDirt を起動するってのがちょっとな。 CLI でできないのか。
ライブコーディングはエディタからやるみたい。 VS Code も使える様子。楽曲をコードで管理できていいな。
関わる software が多いし TidalCycles は package manager での install が推奨みたい。
ただ全部入りなのがちょっとなー。 今だと Pulsar(Atom の後継)が入るし自分でやるなら個々にやったほうがいい。
d1 ~ d0 までのコネクション(トラックのようなもの)がある。演奏のパターンは文字列の中に書く。
パターン文字列が 1 小節。 Haskell なので関数適用演算子が使えるし、 TidalCycles の独自の演算子もパターン構築に使えるっぽい。

## 2025-06-27

- Read count: 1
- Pages: 99 ~ 123 (pages read: 25)

リズムパターンの記述について。 TidalCycles 0.9 に基づいた内容。
リズムの細分化、繰り返し、ポリリズム、ポリメーター、再生速度と実行タイミングの変更、パターンの反転、確率的な変更。
リズムパターンにエフェクトをかける。
アルゴリズミックパターン。ユークリッドの互除法(Euclidean algorithm)を用いたユークリッド・シーケンス。
パターンを変数に入れたりパターンを反転させたもの、バイナリー・パターンという。
あと実践的な組み合わせと 1.0 での変更点。
急に functor 出てきてびっくりしたが Haskell なんだったわ。
いま 1.10 だったり 2025-06-13 には hosting が GitHub から Codeberg 移ってたり随分変わってるな。

## 2025-06-28

- Read count: 1
- Pages: 124 ~ 139 (pages read: 16)

Chapter 4 応用編 オリジナルな表現へ。
TidalCycles に Sample を取り込む。公開音源を利用する場合はライセンスに気をつけましょう。
SuperCollider 組み込みの Synth を使うのと SuperCollider で書かれたコードの読解。
SuperCollider で独自の Synth を定義すれば TidalCycles で使える。 SuperDirt で使うためにそれ用の書き方が必要。
音を生成するオブジェクト UGen(Unit Generator) を mix して新たな Synth を定義する。
SuperCollider は音響合成に関して非常に多機能なので TidalCycles 以外からも利用される理由がよく分かるな。

## 2025-06-29

- Read count: 1
- Pages: 140 ~ 155 (pages read: 16)

Chapter 5 応用編 2 映像のライブコーディング。
映像でライブコーディングすることは VJ と違って Visualist と呼ぶこともある。
LiveCodeLab は On-the-fly(すぐ) に映像をライブコーディングするためのツールで Processing や openFrameworks に比べて過激派で、 WebGL を利用しながら面倒な部分を極力排除し制御することにのみ注力できる環境。
CoffeeScript の文法でアルゴリズミックな形態の生成、 Autocode による自動改変で、ジョン・ケージの実験音楽のような偶然の要素を取り入れることもできる。
Autocode すごいな、この概念は汎用プログラミング言語やってるだけでは出会えないわ。

## 2025-06-30

- Read count: 1
- Pages: 156 ~ 172 (pages read: 17)

Hydra は GLSL(OpenGL Shading Language) を出力して GPU で映像を生成する。
思想も LiveCodeLab と違って、モジュラーシンセのように装置のパラメータ調整と装置同士の接続によって複雑な映像を生成する。
各関数を method chaining で繋いでいくことでそれを実現してるって感じ。
またカメラや音声入力の信号をリアルタイムで映像に反映することができる。
これで終わり。数年の進歩で陳腐化してるところも見られたが、ライブコーディングの歴史や基礎的な部分は参考になったのでまた読も。この先は手を動かしてみた方が良さそう。
