yoppa.org


Strudel入門 4 – ビジュアルエフェクト

Strudelでは、音楽のライブコーディングにビジュアルエフェクトを追加できます。今回は、Strudelを用いてライブコーディングの演奏にビジュアルエフェクトを追加する方法を学びます。

いろいろなビジュアルエフェクト

ミニ・ノーテーションの強調表示

「二重引用符 “”」または「バッククォート “」を使用して記述すると、アクティブな部分が強調表示されます。

n("<0 2 1 3 2>*8")
.scale("<A1 D2>/4:minor:pentatonic")
.s("supersaw").lpf(300).lpenv("<4 3 2>*4")

色を変更したり、パターンを変更したりすることもできます。

n("<0 2 1 3 2>*8")
.scale("<A1 D2>/4:minor:pentatonic")
.s("supersaw").lpf(300).lpenv("<4 3 2>*4")
.color("cyan magenta")

グローバルビジュアルとインラインビジュアル

これ以降で紹介するビジュアルエフェクトは、すべて2つのバリエーションで提供されます。

  • グローバルビジュアル (プレフィックスなし): は、ビジュアルをページの背景にレンダリングします。
  • インラインビジュアル (接頭辞「_」を付ける): コード内でビジュアルがレンダリングされます。複数のビジュアルを使用できます。

グローバルビジュアル:

note("c a f e").color("gray").punchcard()

インラインビジュアル:

note("c a f e").color("gray")._punchcard()

punchcardとpianoroll

これら2つの関数はピアノロール形式のビジュアルをレンダリングします。2つの関数の唯一の違いは、 はpianorollパターンを直接レンダリングするのに対し、 はpunchcardその後に発生する変換も考慮に入れるという点です。

punchcard: 色が適用される

note("c a f e").color("white")
._punchcard()
.color("cyan")

pianoroll: 色が適用されない

note("c a f e").color("white")
._punchcard()
.color("cyan")

spiral (スパイラル)

スパイラルビジュアルを表示します。

note("c2 a2 eb2")
.euclid(5,8)
.s('sawtooth')
.lpenv(4).lpf(300)
._spiral({ steady: .96 })

Scope

同義語: tscope

オーディオ信号の時間領域のオシロスコープをレンダリングします。

s("sawtooth")._scope()

Pitchwheel

1オクターブ内の周波数を視覚化するためにピッチサークルをレンダリングします

n("0 .. 12").scale("C:chromatic")
.s("sawtooth")
.lpf(500)
._pitchwheel()

Spectrum

入力オーディオ信号のスペクトル アナライザーをレンダリングします。

n("<0 4 <2 3> 1>*3")
.off(1/8, add(n(5)))
.off(1/5, add(n(7)))
.scale("d3:minor:pentatonic")
.s('sine')
.dec(.3).room(.5)
._spectrum()

markcss

ハイライト表示されたイベントのCSSを上書きします。必ずシングルクォーテーションを使用してください。

note("c a f e")
.markcss('text-decoration:underline')

Hydra

Hydraは、ライブコーディングのためのビジュアルプログラミング環境です。Strudelでは、Hydraを使用して高度なビジュアルエフェクトを作成できます。

await initHydra()
osc(10, 0.9, 300)
.color(0.9, 0.7, 0.8)
.diff(
osc(45, 0.3, 100)
.color(0.9, 0.9, 0.9)
.rotate(0.18)
.pixelate(12)
.kaleid()
)
.scrollX(10)
.colorama()
.luma()
.repeatX(4)
.repeatY(4)
.modulate(
osc(1, -0.9, 300)
)
.scale(2)
.out()

note("[a,c,e,<a4 ab4 g4 gb4>,b4]/2")
.s("sawtooth").vib(2)
.lpf(600).lpa(2).lpenv(6)

H patterns

Hパターンを hydra への入力として使用できる特別な関数があります。

await initHydra()
let pattern = "3 4 5 [6 7]*2"
shape(H(pattern)).out(o0)
n(pattern).scale("A:minor").piano().room(1)

オーディオ検出

hydra オーディオ キャプチャを使用するには、構成パラメータinitHydraを指定して呼び出します。{detectAudio:true}

await initHydra({detectAudio:true})
let pattern = "<3 4 5 [6 7]*2>"
shape(H(pattern)).repeat()
.scrollY(
  ()=> a.fft[0]*.25
)
.add(src(o0).color(.71 ).scrollX(.005),.95)
.out(o0)
n(pattern).scale("A:minor").piano().room(1)

feedStrudel

このfeedStrudelオプションを使用すると、Strudelの視覚化をhydraで変換できます

await initHydra({feedStrudel:1})
//
src(s0).kaleid(H("<4 5 6>"))
.diff(osc(1,0.5,5))
.modulateScale(osc(2,-0.25,1))
.out()
//
$: s("bd*4,[hh:0:<.5 1>]*8,~ rim").bank("RolandTR909").speed(.9)
$: note("[<g1!3 <bb1 <f1 d1>>>]*3").s("sawtooth")
.room(.75).sometimes(add(note(12))).clip(.3)
.lpa(.05).lpenv(-4).lpf(2000).lpq(8).ftype('24db')
all(x=>x.fft(4).scope({pos:0,smear:.95}))

Strudel入門 3 – 最初のエフェクト

Strudelの基本としてサウンド(sound)とノート(note)を修得しました。次は様々なエフェクトを試していきましょう。

いくつかの基本的な効果

ローパスフィルタ

note("<[c2 c3]*4 [bb1 bb2]*4 [f2 f3]*4 [eb2 eb3]*4>")
.sound("sawtooth").lpf(800)

lpf =ローパスフィルター​​​

  • lpfを200に変更してください。音がこもっているのが分かります。クラブのドアを閉めて目の前に立っているような感じを想像してみてください
  • さあ、ドアを開けてみましょう… 5000 に変更します。明るくなるのに注目してください!

フィルターのパターン

note("<[c2 c3]*4 [bb1 bb2]*4 [f2 f3]*4 [eb2 eb3]*4>")
.sound("sawtooth").lpf("200 1000 200 1000")
  • さらに値を追加してみましょう
  • lpfのパターンが全体のリズムを変えないことに注目してください
  • Waves で自動化する方法については後ほど学習します

vowel (母音)

note("<[c3,g3,e4] [bb2,f3,d4] [a2,f3,c4] [bb2,g3,eb4]>")
.sound("sawtooth").vowel("<a e i o>")

ゲイン (音量)

$: sound("hh*16").gain("[.25 1]*4")

$: sound("bd*4,[~ sd:1]*2")
  • リズムはダイナミクスが重要です!
  • 取り外して.gain(…)、音がいかにフラットであるかに注意してください

上記のすべてを組み合わせて、小さな曲を作ってみましょう。

$: sound("hh*8").gain("[.25 1]*4")

$: sound("bd*4,[~ sd:1]*2")

$: note("<[c2 c3]*4 [bb1 bb2]*4 [f2 f3]*4 [eb2 eb3]*4>")
.sound("sawtooth").lpf("200 1000 200 1000")

$: note("<[c3,g3,e4] [bb2,f3,d4] [a2,f3,c4] [bb2,g3,eb4]>")
.sound("sawtooth").vowel("<a e i o>")

ADSRエンベロープでサウンドを形作る

note("c3 bb2 f3 eb3")
.sound("sawtooth").lpf(600)
.attack(.1)
.decay(.1)
.sustain(.25)
.release(.2)

数字が何を表しているか調べてみましょう。次の数字を比較してみましょう。

  • attack: .5 vs 0
  • decay: .5 vs 0
  • sustain: 1 vs .25 vs 0
  • release: 0 vs .5 vs 1
  • attack:フェードインにかかる時間
  • decay:減衰して持続するまでにかかる時間
  • sustain:減衰後のレベル
  • release: 音符が終わってからフェードアウトするまでの時間
height:360

adsr 短縮表記

note("c3 bb2 f3 eb3")
.sound("sawtooth").lpf(600)
.adsr(".1:.1:.5:.2")

ディレイ (delay)

$: note("[~ [<[d3,a3,f4]!2 [d3,bb3,g4]!2> ~]]*2")
.sound("gm_electric_guitar_muted").delay(.5)

$: sound("bd rim").bank("RolandTR707").delay(".5")
  • delay0から1の間の値を試してください。ちなみに、.5は0.5
  • .delay(“.8:.125”) を使用するとどうなりますか?
    2番目の数字が何をするか推測できますか?
  • .delay(“.8:.06:.8”) を使用するとどうなりますか?
    3番目の数字が何をするのか推測できますか?
delay("a:b:c")
  • a: ディレイボリューム
  • b: 遅延時間
  • c: フィードバック(数字が小さいほどフェードが早くなります)

room、別名リバーブ

n("<4 [3@3 4] [<2 0> ~@16] ~>")
.scale("D4:minor").sound("gm_accordion:2")
.room(2)
  • さまざまな値を試してください。
  • ディレイも追加してください!

ちょっとしたダブチューン

$: note("[~ [<[d3,a3,f4]!2 [d3,bb3,g4]!2> ~]]*2")
.sound("gm_electric_guitar_muted").delay(.5)

$: sound("bd rim").bank("RolandTR707").delay(.5)

$: n("<4 [3@3 4] [<2 0> ~@16] ~>")
.scale("D4:minor").sound("gm_accordion:2")
.room(2).gain(.5)

ベースを追加して完成させましょう。

$: note("[~ [<[d3,a3,f4]!2 [d3,bb3,g4]!2> ~]]*2")
.sound("gm_electric_guitar_muted").delay(.5)

$: sound("bd rim").bank("RolandTR707").delay(.5)

$: n("<4 [3@3 4] [<2 0> ~@16] ~>")
.scale("D4:minor").sound("gm_accordion:2")
.room(2).gain(.4)

$: n("[0 [~ 0] 4 [3 2] [0 ~] [0 ~] <0 2> ~]/2")
.scale("D2:minor")
.sound("sawtooth,triangle").lpf(800)

.hush()スタック内のパターンの 1 つの最後に追加してみてください…

pan (定位)

sound("numbers:1 numbers:2 numbers:3 numbers:4")
.pan("0 0.3 .6 1")

スピード

sound("bd rim [~ bd] rim").speed("<1 2 -1 -2>").room(.2)

slowとfast

sound("bd*4,~ rim ~ cp").slow(2)
  • 値を変更してください。 slowをfastに置き換えてみてください。
  • 次のようなパターンを使用するとどうなりますか.fast(“<1 [2 4]>”)?

ちなみに、ミニ表記では、fastは*であり、slowは です/。

sound("[bd*4,~ rim ~ cp]*<1 [2 4]>")

信号による変調

値を段階的に変更する代わりに、信号で制御することもできます。

sound("hh*16").gain(sine)
  • 信号の基本波形は sine, saw, square, tri です
  • ランダム信号も試してみてください。 rand, perlin
  • ゲインはピアノロールの透明度として視覚化されます。

範囲を設定する

デフォルトでは、波は0から1の間で振動します。これを次のようにrangeで変更できます。

sound("hh*16").lpf(saw.range(500, 2000))
  • 範囲の値を反転するとどうなりますか?

変調速度を低速/高速で変更できます。

note("<[c2 c3]*4 [bb1 bb2]*4 [f2 f3]*4 [eb2 eb3]*4>")
.sound("sawtooth")
.lpf(sine.range(100, 2000).slow(4))

全体の変調が繰り返されるには 8 サイクルかかります。

パターン効果

これまで見てきた機能のほとんどは、サウンドのシーケンス、音符の演奏、エフェクトのコントロールなど、他の音楽プログラムが通常実行できる機能です。

この章では、tidal に特有の機能について説明します。

revでパターンを反転

n("0 1 [4 3] 2 0 2 [~ 3] 4").sound("jazz").rev()

パターンを左に再生し、juxで右に変更

n("0 1 [4 3] 2 0 2 [~ 3] 4").sound("jazz").jux(rev)

これは次と同じです:

$: n("0 1 [4 3] 2 0 2 [~ 3] 4").sound("jazz").pan(0)
$: n("0 1 [4 3] 2 0 2 [~ 3] 4").sound("jazz").pan(1).rev()

ここで何が起こるかを視覚化してみましょう。

$: n("0 1 [4 3] 2 0 2 [~ 3] 4").sound("jazz").pan(0).color("cyan")
$: n("0 1 [4 3] 2 0 2 [~ 3] 4").sound("jazz").pan(1).color("magenta").rev()
  • // を行の前に追加して、2つのうち1つをコメントアウトしてみてください。

複数のテンポ

note("c2, eb3 g3 [bb3 c4]").sound("piano").slow("0.5,1,1.5")

これは、以下と同じです

$: note("c2, eb3 g3 [bb3 c4]").s("piano").slow(0.5).color('cyan')
$: note("c2, eb3 g3 [bb3 c4]").s("piano").slow(1).color('magenta')
$: note("c2, eb3 g3 [bb3 c4]").s("piano").slow(1.5).color('yellow')
  • //行の前に追加して1つまたは複数をコメントアウトしてみてください

add (追加)

setcpm(60)
note("c2 [eb3,g3] ".add("<0 <1 -1>>"))
.color("<cyan <magenta yellow>>").adsr("[.1 0]:.2:[1 0]")
.sound("gm_acoustic_bass").room(.5)
  • 音符に数字を追加すると、その音符は数字として扱われます。

好きなだけ追加できます。

setcpm(60)
note("c2 [eb3,g3]".add("<0 <1 -1>>").add("0,7"))
.color("<cyan <magenta yellow>>").adsr("[.1 0]:.2:[1 0]")
.sound("gm_acoustic_bass").room(.5)

スケールで追加

n("0 [2 4] <3 5> [~ <4 1>]".add("<0 [0,2,4]>"))
.scale("C5:minor").release(.5)
.sound("gm_xylophone").room(.5)

時間を積む

$: n("0 [2 4] <3 5> [~ <4 1>]".add("<0 [0,2,4]>"))
.scale("C5:minor")
.sound("gm_xylophone")
.room(.4).delay(.125)
$: note("c2 [eb3,g3]".add("<0 <1 -1>>"))
.adsr("[.1 0]:.2:[1 0]")
.sound("gm_acoustic_bass")
.room(.5)
$: n("0 1 [2 3] 2").sound("jazz").jux(rev)

ply

sound("hh hh, bd rim [~ cp] rim").bank("RolandTR707").ply(2)

これは以下と同じです

sound("hh*2 hh*2, bd*2 rim*2 [~ cp*2] rim*2").bank("RolandTR707")
  • 関数をパターン化してみましょうply。例えば、”<1 2 1 3>”

off

n("0 [4 <3 2>] <2 3> [~ 1]"
.off(1/16, x=>x.add(4))
//.off(1/8, x=>x.add(7))
).scale("<C5:minor Db5:mixolydian>/2")
.s("triangle").room(.5).dec(.1)

.off(1/16, x=>x.add(4))という表記は、次のように表されます。

  • 元のパターン x を取得する
  • x に .add(4) を適用して変更
  • 元のパターンに対して1/16周期分オフセットして再生する。

off は他のサウンドを変更するのにも便利で、ネストすることもできます。

s("bd sd [rim bd] sd,[~ hh]*4").bank("CasioRZ1")
.off(2/16, x=>x.speed(1.5).gain(.25)
.off(3/16, y=>y.vowel("<a e i o>*8")))

Strudel入門 2 – 最初のノート (音程のある音)

スライド資料

前回の「最初の音」に引き続き、Strudelの初歩を学んでいきます。今回は、前回のサンプリングされた音でリズムを作成する方法から発展させて、音程のあるノートを使用したメロディや和音の作成に挑戦します。音符を数字や文字で演奏する方法、異なるサウンドを組み合わせる技術、長いシーケンスの再生方法、さまざまな音階の使い方を説明しています。また、繰り返しや音の長さの変更、パターンの自動化に関する技術も取り上げ、複数のパターンを同時に演奏することも可能です。

本日の資料もStrudelのチュートリアルを使用しています。元の資料は以下にあります。

数字と音符

数字を使って音符を演奏する

note("48 52 55 59").sound("piano")
  • いろいろな数字を試してみましょう!
  • 55.5のような小数を試してみましょう

文字で音符を演奏する

note("c e g b").sound("piano")
height:300
  • さまざまな文字 (a – g) を試してください。
  • 実際に言葉になっているメロディーを見つけられますか?

黒鍵を演奏するためにフラットまたはシャープを追加します

note("db eb gb ab bb").sound("piano")

note("c# d# f# g# a#").sound("piano")
height:300

異なるオクターブの文字で音符を演奏する

note("c2 e3 g4 b5").sound("piano")
height:300

音符のアルファベット表記に慣れていない場合は、数字を使う方が簡単です。そのため、以下の例のほとんどでは数字を使用しています。正しい音符を演奏しやすくする方法については、後ほど説明します。

音を変える

無音程音の場合と同様に、次のようにして音符の音を変更できます

note("36 43, 52 59 62 64").sound("piano")

さまざまなサウンドを試してみましょう。

  • gm_electric_guitar_muted
  • gm_acoustic_bass
  • gm_voice_oohs
  • gm_blown_bottle
  • sawtooth
  • square
  • triangle
  • bd、sd、hhはどうですか?
  • .sound(“…”) を除去すると?

音を切り替える

note("48 67 63 [62, 58]")
.sound("piano gm_electric_guitar_muted")

複数のサウンドを重ねる

note("48 67 63 [62, 58]")
.sound("piano, gm_electric_guitar_muted")
  • noteとsoundのパターンが組み合わされています。
  • パターンを組み合わせる方法については後ほど詳しく説明します。

より長いシーケンス

シーケンスを分割して/速度を落とす

note("[36 34 41 39]/4").sound("gm_acoustic_bass")
  • /4括弧内のシーケンスを 4 サイクル (=8 秒) にわたって再生します。
  • したがって、4 つの音符はそれぞれ 2 秒の長さになります。
  • 括弧内にさらに音符を追加してみて、速度が速くなるかどうかを確認する。\

1サイクルごとに1つプレイ< … >

前のセクションでは、< … >(山括弧) を使用してサイクルごとに 1 つだけを再生できることを学びました。これは、より長いメロディーにも役立ちます。

note("<36 34 41 39>").sound("gm_acoustic_bass")

括弧内にさらに音符を追加してみて、テンポが同じままであることに注目してください。

  • 山括弧は実際には単なるショートカットです。
  • <a b c> = [a b c]/3
  • <a b c d> = [a b c d]/4

1サイクルごとに1つのシーケンスを再生する

2種類の括弧は様々な方法で組み合わせることができます。

以下は反復的なベースラインの例です。

note("<[36 48]*4 [34 46]*4 [41 53]*4 [39 51]*4>")
.sound("gm_acoustic_bass")

複数のことを交互に行う

note("60 <63 62 65 63>")
.sound("gm_xylophone")

これは音程のない音にも役立ちます:

sound("bd*4, [~ <sd cp>]*2, [~ hh]*4")
.bank("RolandTR909")

スケール

正しい音符を見つけるのは難しい場合があります。スケールが役立ちます。

setcpm(60)
n("0 2 4 <[6,8] [7,9]>")
.scale("C:minor").sound("piano")

いろいろな数字を試してみてください。どの数字でも良い響きになるはずです!

さまざまなスケールを試してみましょう。

  • C:major
  • A2:minor
  • D:dorian
  • G:mixolydian
  • A2:minor:pentatonic
  • F:major:pentatonic

スケールを自動化する

他のものと同様に、パターンを使用してスケールを自動化できます。

setcpm(60)
n("<0 -3>, 2 4 <[6,8] [7,9]>")
.scale("<C:major D:mixolydian>/4")
.sound("piano")

これらのスケールの意味が分からなくても心配はいりません。これらは、相性の良い異なる音符の組み合わせを表すラベルです。

ゆっくり時間をかけて、お好みのスケールを見つけてください。

繰り返して伸ばす

@で延長

note("c@3 eb").sound("gm_acoustic_bass")

@を使用しないのは@1を使用するのと同じです。上記の例では、cは3単位の長さで、ebは1単位の長さです。

番号を変えてみて下さい!

サブシーケンス内で伸長する

setcpm(60)
n("<[4@2 4] [5@2 5] [6@2 6] [5@2 5]>*2")
.scale("<C2:mixolydian F2:mixolydian>/4")
.sound("gm_acoustic_bass")

このグルーヴは shuffleと呼ばれます。各ビートには2つの音符があり、最初の音符は2番目の音符の2倍の長さになります。これはトリプレット・スウィングと呼ばれることもあります。ブルースやジャズでよく見られます。

複製する

setcpm(60)
note("c!2 [eb,<g a bb a>]").sound("piano")
  • !と*と@を切り替えてみてください
  • 違いは何ですか?

サンプルプログラム

上品なベースライン

note("<[c2 c3]*4 [bb1 bb2]*4 [f2 f3]*4 [eb2 eb3]*4>")
.sound("gm_synth_bass_1")
.lpf(800)

上品なメロディー

note(`<
[~ 0] 2 [0 2] [~ 2]
[~ 0] 1 [0 1] [~ 1]
[~ 0] 3 [0 3] [~ 3]
[~ 0] 2 [0 2] [~ 2]
>*4`).scale("C4:minor")
.sound("gm_synth_strings_1")

上品なドラム

sound("bd*4, [~ <sd cp>]*2, [~ hh]*4")
.bank("RolandTR909")

上記のすべてを同時にプレイする方法があったら…

できます!! $: で!

複数のパターンを演奏する

複数のパターンを同時に再生したい場合は、各パターンの前に「$:」を記述する。

$: note("<[c2 c3]*4 [bb1 bb2]*4 [f2 f3]*4 [eb2 eb3]*4>")
.sound("gm_synth_bass_1").lpf(800)

$: n(`<
[~ 0] 2 [0 2] [~ 2]
[~ 0] 1 [0 1] [~ 1]
[~ 0] 3 [0 3] [~ 3]
[~ 0] 2 [0 2] [~ 2]
>*4`).scale("C4:minor")
.sound("gm_synth_strings_1")

$: sound("bd*4, [~ <sd cp>]*2, [~ hh]*4")
.bank("RolandTR909")

コードとスケール

// 音を同時に鳴らす
$: sound("piano*4")
  .note("[c, e, g]")

// --------------------------------------------
// コード (Chord = 和音)
// コードを演奏する
$: sound("piano*4")
  .n("[1, 2, 3]")
  .chord("C").voicing()

// いろいろなコードを試してみる
$: sound("piano*4")
  .n("[1, 2, 3]")
  .chord("<C F G>").voicing()

// カノン
$: sound("piano*4")
  .n("[1, 2, 3, 4]")
  .chord("<C G Am Em F C F G>").voicing()

// 王道進行
$: sound("piano*2")
  .n("[1, 2, 3, 4, 5]")
  .chord("<FM7 G7 Em7 Am>").voicing()

// 王道進行アンサンブル
$: sound("supersaw(11, 16)")
  .n("[1, 2, 3, 4, 5]")
  .chord("<FM7 G7 Em7 Am>").voicing()
  .lpf(sine.slow(32).range(1000, 8000)).resonance(10)
  .room(0.9)
$: sound("supersaw(9, 16)")
  .note("<F2 G2 A2 E2>".add("<-12 0 12>*4"))
  .lpf(sine.slow(24).range(1000, 8000)).resonance(8)
  .room(0.9).gain(1.8)
$: sound("bd(3, 8), hh(4, 8, 1)").bank("RolandTR909")
  .gain(1.2)

// 王道進行アンサンブル + 分数コード
$: sound("supersaw(9, 16, 3)")
  .n("[1, 2, 3, 4, 5]")
  .chord("<FM7 G7 Em7 Am>").voicing()
  .lpf(sine.slow(32).range(1000, 8000)).resonance(10)
  .room(0.9)
$: sound("supersaw(9, 16)")
  .note("<F2 E2 D2 [C2 A1]>/2".add("<-12 0 12>*4"))
  .lpf(sine.slow(24).range(1000, 4000)).resonance(10)
  .gain(1.8)
$: sound("bd(4, 8), hh(4, 8, 1)").bank("RolandMC303")
  .delay(0.5).delaytime(3/8)
  .gain(1.3)

// --------------------------------------------
// スケール (scale = 旋法)
// イオニアンスケール
$: sound("piano*8")
  .n("0 1 2 3 4 5 6 7")
  .scale("C:ionian")

// スケール内の音をランダムに演奏する
$: sound("piano*8")
  .n(irand(12))
  .scale(“C:hirajoshi")

// スケールによる即興
$: sound("supersaw(5, 8)")
  .n(irand(19))
  .scale("C1:pentatonic").jux(rev).room(0.8)
  .delay(0.7).delaytime(3/8)
  .lpf(rand.range(400, 5000)).resonance(12).legato(1.2)
$: sound("supersaw*16")
  .n(irand(19))
  .scale("C3:pentatonic").jux(rev).room(0.8)
  .lpf(rand.range(400, 4000)).resonance(8)
  .delay(0.7).delaytime(5/8).legato(0.75)

いよいよ本物の音楽のような音になってきました!音と音符は揃いましたが、あとはエフェクトというパズルの最後のピースが残っています。


Strudel入門 – 最初の音

スライド資料

Strudelで音を鳴らす

Strudelの使い方を学んでいきます。まず始めに、Strudelで音を鳴らす方法を学びましょう。Strudelでは公式のチュートリアルが用意されていて、そこに従って進めていくと、簡単に音を鳴らすことができます。本日はそのチュートリアルを一緒に進めていきましょう。

参考映像

ドラムマシン (リズムマシン) について。

Jeff Mills Exhibitionist 2 Mix 3
Roland TR-1000 Rhythm Creator | Egyptian Lover Performance
16 Legendary Beats – A short history of the 808 | Drum Patterns Explained
A short history of the 909 in 16 songs from TECHNO and HOUSE to POP | Drum Patterns Explained

この動画で紹介されているTR-808を使用した曲のプレイリストをSpotifyで作成してみました!

コードフィールド

このワークショップは、インタラクティブなコードフィールドで構成されています。まず、その使い方を学びましょう。以下がその例です。

sound("casio")
  1. 上のテキストフィールドをクリックします
  2. ctrl+enter を押して、音を再生します
  3. casiometal に変更します
  4. ctrl+enter を押して、変更を反映します
  5. ctrl+. を押して、演奏を停止します

おめでとうございます。これでライブコーディングの準備が整いました。

サウンド

先ほどは sound を使って、このように音を再生しました。

sound("casio")

casio は、標準で用意されているサウンドの一つです。

他のサウンドも試してみましょう。

insect wind jazz metal east crow casio space numbers

サウンドの読み込みに、少し時間がかかる場合があります。

: を使ってサンプル番号を変更する

一つのサウンド名には、複数のサンプル(オーディオファイル)が含まれている場合があります。

サウンド名の後に : と数字を追加すると、サンプルを選択できます。

sound("casio:1")

いろいろなサウンドとサンプル番号の組み合わせを試してみましょう。

数字を追加しない場合は :0 を指定したのと同じです。

これで、さまざまなサウンドを使い分ける方法を学びました。
ここでは、あらかじめ用意された少数のサウンドのみを使用しますが、後ほど独自のサウンドを読み込む方法も学びます。

ドラムサウンド

Strudelには、デフォルトで豊富なドラムサウンドが用意されています。

sound("bd hh sd oh")

これらの文字は、ドラムセットの各パートを表します。

  – bd = bass drum
  – sd = snare drum
  – rim = rimshot
  – hh = hihat
  – oh = open hihat
  – lt = low tom
  – mt = middle tom
  – ht = high tom
  – rd = ride cymbal
  – cr = crash cymbal

さまざまなドラムサウンドを試してみましょう。

bank を使うと、ドラムの音色(ドラムマシン)を変更できます。

sound("bd hh sd oh").bank("RolandTR909")

この例では RolandTR909 が使用しているドラムマシンの名前です。
これはハウスやテクノのビートで有名な、歴史的なドラムマシンです。

RolandTR909 を以下のいずれかに変更してみてください。※ ( ) 内は省略した表記。

  • AkaiLinn (linn)
  • RhythmAce (ace)
  • RolandTR909 (tr909)
  • RolandTR808 (tr808)
  • RolandTR707 (tr707)
  • ViscoSpaceDrum (viscospacedrum)

ドラムマシンは他にもたくさんありますが、ここでは話をシンプルに進めます。

  • Pro-Tip: 名前をダブルクリックで選択し、コピー&ペーストしましょう。

シーケンス

前の例で見たように、スペースで区切ると複数のサウンドを順番に再生(シーケンス再生)できます。

sound("bd hh sd hh")

現在再生中のサウンドは、コード内でハイライト表示されます。また、画面下部にも視覚的に表示される点に注目してください。

シーケンスにさらにサウンドを追加してみましょう。

シーケンスが長いほど、再生速度は速く

sound("bd bd hh bd rim bd hh bd")

シーケンスは、サイクルという単位の中に収まるように再生されます。1サイクルの長さは、デフォルトで2秒です。

< .. > で囲み、サイクルに合わせる

先ほどと同じシーケンスですが、今回は < .. > (山括弧)で囲まれています。

sound("<bd bd hh bd rim bd hh bd>")

こうすると、シーケンス全体が1サイクルに収まるように再生されます。この括弧を使う利点は、シーケンス内の音を追加したり削除したりしても、テンポが変わらない点です。

このままでは非常に遅いですが、次のようにして速く再生できます。

sound("<bd bd hh bd rim bd hh bd>*8")

この *8 は、全体の再生速度を8倍にすることを意味します。

待ってください。これは < … > を付けずに *8 を指定した場合と同じではないでしょうか。なぜ、わざわざこのような記法が必要なのでしょう。

その通りです。この記法の重要な点は、シーケンス内の音を追加・削除してもテンポが一定に保たれることです。ぜひ試してみてください。

最後の数字を変更して、テンポを変えてみましょう。

setcpm でテンポを変更する

setcpm(90/4)
sound("<bd hh rim hh>*8")

cpm = cycles per minute(1分あたりのサイクル数)

デフォルトのテンポは毎分30サイクル(30cpm)です。これは1サイクルが2秒であることを意味し、一般的なBPM表記では 120/4 に相当します。

西洋音楽の用語に詳しい方向けに説明すると、上記の例はBPM90の4/4拍子における8分音符のシーケンスです。しかし、これらの専門用語を知らなくてもStrudelで音楽は作れますので、ご安心ください。

– または ~ でシーケンスに休符を追加する

sound("bd hh - rim - bd hh rim")

[角括弧] でサブシーケンスを作成する

sound("bd [hh hh] sd [hh bd] bd - [hh sd] cp")

角括弧の中に、さらにサウンドを追加してみましょう。

全体のシーケンスと同様に、サブシーケンスもその中の音符が均等に分割されて再生されます。

乗算 (*): 速度を上げる

sound("bd hh*2 rim hh*3 bd [- hh*2] rim hh*2")

乗算 (*): サブシーケンスを速くする

sound("bd [hh rim]*2 bd [hh rim]*1.5")

乗算 (*): さらに速くする

sound("bd hh*32 rim hh*16")

非常に速いリズムは、音の高さ(ピッチ)のように聞こえます。

[[二重角括弧]] でサブ・サブシーケンスを作成する

sound("bd [[rim rim] hh] bd cp")

角括弧は、好きなだけ深く入れ子(ネスト)にできます。

カンマ (,) でシーケンスを並列再生する

sound("hh hh hh, bd casio")

カンマは好きなだけ使えます。

sound("hh hh hh, bd bd, - casio")

カンマはサブシーケンスの中でも使用できます。

sound("hh hh hh, bd [bd,casio]")

上の2つが同じ結果になることに気づきましたか?
同じ音楽的なアイデアを、複数の方法で表現できることはよくあります。

バッククォート(`…`)で複数行を記述する

sound(`
    bd*2, - cp, 
    - - - oh, hh*4,
    [- casio]*2
`)

サンプル番号をまとめて指定する

これまでのようにサンプル番号を一つずつ指定する代わりに、

sound("jazz:0 jazz:1 [jazz:4 jazz:2] jazz:3*2")

n 関数を使うと、より簡潔で読みやすいコードになります。

n("0 1 [4 2] 3*2").sound("jazz")

まとめ

ここでは、TidalCyclesのリズム言語であるミニノーテーションの基本を学びました。学習した内容は以下の通りです。

コンセプト構文
シーケンススペースsound(“bd bd sd hh”)
サンプル番号:sound(“hh:0 hh:1 hh:2 hh:3”)
休符– または ~sound(“metal – jazz jazz:1”)
サイクル内均等再生<>sound(“<bd hh rim oh bd rim>”)
サブシーケンス[]sound(“bd wind [metal jazz] hh”)
サブ・サブシーケンス[[]]sound(“bd [metal [jazz [sd cp]]]”)
速度アップ*sound(“bd sd*2 cp*3″)
並列再生,sound(“bd*2, hh*2 [hh oh]”)

ミニノーテーションは、通常は何らかの関数と組み合わせて使用します。これまでに登場した関数は以下の通りです。

名前説明
sound指定した名前のサウンドを再生するsound(“bd sd [- bd] sd”)
bankサウンドバンクを選択するsound(“bd sd [- bd] sd”).bank(“RolandTR909”)
setcpmテンポを1分あたりのサイクル数で設定するsetcpm(45);
sound(“bd sd [- bd] sd”)
nサンプル番号のシーケンスを作成するn(“0 1 4 2 0 6 3 2”).sound(“jazz”)

作例

基本的なロックビート

setcpm(100/4)
sound("[bd sd]*2, hh*8").bank("RolandTR505")

クラシックなハウス

sound("bd*4, [- cp]*2, [- hh]*4").bank("RolandTR909")

この2つのパターンは、非常によく似ています。
特定のドラムパターンが、ジャンルを超えて使い回されることはよくあります。

We Will Rock You

setcpm(81/2)
sound("bd*2 cp").bank("RolandTR707")

Yellow Magic Orchestra – Firecracker

setcpm(120/2)
sound("bd sd, - - - hh - hh - -, - perc - perc:1*2")
.bank("RolandCompurhythm1000")

16ステップシーケンサーの再現

setcpm(90/4)
sound(`
[-  -  oh - ] [-  -  -  - ] [-  -  -  - ] [-  -  -  - ],
[hh hh -  - ] [hh -  hh - ] [hh -  hh - ] [hh -  hh - ],
[-  -  -  - ] [cp -  -  - ] [-  -  -  - ] [cp -  -  - ],
[bd -  -  - ] [-  -  -  bd] [-  -  bd - ] [-  -  -  bd]
`)

もう一つの例

setcpm(88/4)
sound(`
[-  -  -  - ] [-  -  -  - ] [-  -  -  - ] [-  -  oh:1 - ],
[hh hh hh hh] [hh hh hh hh] [hh hh hh hh] [hh hh -  - ],
[-  -  -  - ] [cp -  -  - ] [-  -  -  - ] [~  cp -  - ],
[bd bd -  - ] [-  -  bd - ] [bd bd - bd ] [-  -  -  - ]
`).bank("RolandTR808")

一風変わったドラム

setcpm(100/2)
s(`
jazz*2, 
insect [crow metal] - -, 
- space:4 - space:1,
- wind
`)

これでビート作りの基本は分かりました。次は、メロディー(ノート)の演奏方法を見ていきましょう。

アンケート

アンケート


最終課題について・課題制作の手順

スライド資料

今期の工学デザイン実習IIの情報メディアデザイン分野の最終課題の内容の説明と、その制作の手順について解説します。しっかりと理解して課題を提出するようにしてください。

最終課題

書籍「Generative Design」のサンプルを元にして、p5.jsを用いてジェネラティブデザインの作品を制作して提出してください。コーディングには生成AI (Github Copilot) などを用いて構いません。

最終課題提出フォーム

課題提出期限: 2026年1月25日 23:59

参考資料

GitHub Copilot を極める会

制作の手順

1. Generative Design (p5.js版) のサンプルをダウンロード

2. Visual Studio Code でサンプルのフォルダを開いて「Go Live」

  • Visual Studio Code起動
  • 上部メニューから File > Open Folder 選択
  • 展開したフォルダ「Code-Package-p5.js-1.4.3」を選択
  • 画面右下にある「((.)) Go Live」ボタンを押す
  • Webブラウザでサンプル一覧が表示されるはず
height:600

3. Webブラウザでサンプルを閲覧、気にいったスケッチを1つピックアップ

  • サンプルのサムネイルをクリックすると、スケッチが表示される
  • 気にいったサンプルを1つ選択しその番号を記録 例: P_1_0_01
  • Visual Studio Codeから同じ名前のフォルダ内の「sketch.js」を開く
height:360

4. Visual Studio Code + Github Copilotの環境を駆使してプログラムを解析

  • Visual Studio Codeの上部にある「ふきだし」のアイコンを押してチャット画面を表示
  • プロンプト入力覧の下部の設定を「Ask」「Auto」に
  • プログラムを解析するプロンプト (質問) を入力
    • 例: 「このコードの内容を説明してください」…etc.
height:320

5. プログラムを改造して独自の作品にする (Github Copilot使用可)

  • プロンプトからいろいろリクエストしてみる
    • 「変化する図形を正方形ではなく円にしてください」
    • 「色が変化しながら回転するようにしてください」など
  • コードが生成されたらコード画面上部の「Apply」ボタンを押す
  • コードが更新されたら「Keep」を選択して確定する
height:300
  • ブラウザで表示したスケッチが更新されているはず!
height:480

6. 提出フォームからコードを提出 (sketch.js)

以下のフォームから提出してください!

height:400

Beyond p5.js – 次のステップへ!

この講義ではp5.jsを使用してクリエイティブ・コーディングの基礎を学んできました。今回は、これまでのまとめと、ここから先へ進むためのステップについて解説します。

p5.jsの基礎を身に付けてから次に進む様々な手段がありますが、ここでは次の3つの方法を紹介します。

  • さらに高速化を追い求める – openFrameworks
  • ノードベースのビジュアルプログラミング – TouchDesigner
  • ゲームエンジンの活用 – Unreal Engine

openFrameworksは、クリエイティブコーディングのためのC++のオープンソースツールキットです。その最大の利点はスピードです。p5.jsでは処理が追いつかずコマ落ちしてしまうような表現も高速な演算で実現可能です。より本格的な作品制作を目指す方にはp5.jsを習得した後、openFrameworksにステップアップすることをお勧めします。openFrameworksには、p5.jsのライブラリーにあたるアドオン(addons)という拡張機能があり、膨大な数のアドオンが公開されているのも魅力の一つです。

TouchDesignerは、ノードベースのビジュアルプログラミング環境です。様々な機能が内包された箱(オペレーター)を画面上に配置して、それらをパッチケーブルで接続していくことで、多彩で高機能なプログラム開発が可能となります。ただし、TouchDesignerはDerivative社が開発販売している製品であり、p5.jsやopenFrameworksとは違いオープンソースのプロジェクトではありません。ただし、非商用の利用で、画像の最大サイズが1280×1280 Pixel以内であれば、無料で使用することが可能です。

Unreal Engineは、ゲームエンジンに分類されるゲームを開発するための環境です。様々な最新技術をとり入れることで驚くようなリアリティーのある表現が可能となります。Unreal Engineもオープンソースのアプリケーションではありませんが、学生のみなさんであれば完全に無料でフルの機能を使用可能です。

自分の作品の表現形態やテーマにあわせて、次のステップへ進んでいきましょう!

スライド資料

アンケート

本日の講義に参加した方は以下のアンケートに答えてください。

アンケート


openFrameworks Addon 3 – 映像を使ったインタラクション ofxOpenCv、ofxCv

今回は、Addonの利用の3回目として、ofxOpenCvとofxCvを扱います。メディアアート作品では、カメラから取得した映像を用いてインタラクションを行う事例が沢山存在しています。映像を使ったインタラクションは、特別なセンサーを使用することなく、また鑑賞者に直接接触することなく高度なインタラクションが可能となり、多くの可能性を秘めた手法です。また、近年では映像の中から物体を認識したり、映像の中の微妙な差分や動きを検出したりといった、コンピュータ・ビジョン(Computer Vision = CV)の技術が発展し、高度な映像解析が活用できるようになりました。今回は、こうしたCVの技術の中でもオープンソースで多くの利用実績のあるOpenCVというCVのためのライブラリをopenFrameworksで活用する方法について紹介していきます。

スライド資料

サンプルプログラム

課題提出+アンケート


AIを使ったコード生成 1: VScode + Github Copilotを使用したコーディングの基本

今回の実習の演習として、VScode + Github Colilot + p5.jsを使用したコーディングの基本を行います。まず環境設定が正しく完了しているか確認します。その後は、様々な方法でGithub Copilotを使用したコーディングのテクニックについて解説していきます。

最後に、最終課題に向けての練習として、書籍「Generative Design」のサンプルコードをダウンロードして実行し、さらにGithub Copilotを用いて、そのコードが何をしているのか解析してみましょう!

スライド資料

スライド資料

アンケート

アンケート


AI Creative Future Awardsの受賞作品紹介

スライド資料

本日の内容

今回は、この実習のテーマである「生成AIと創作」のヒントとして、先日初回の結果が発表されたAI Creative Future Awardsの受賞作品を紹介します。今どのようなAIを活用した作品が評価されているのか、実際の受賞作品を紹介しながら考えていきたいと思います。

height:400

AI Creative Future Awardsについて

AICA(AI Creative Future Awards)は、2025年にローンチされた日本発の新しいクリエイティブアワードです。AIによる表現が人の感覚や社会にどんな新しい可能性をもたらすのかを探るものであり、贈賞そのものよりも、議論・対話・記録を重視しています。

初年度(ゼロ期)は、世界中のAIクリエイティブをAICA側がリサーチ・キュレーションし、時代を象徴するプロジェクトを選出する形式をとりました。AI表現の現在地を俯瞰し、議論の土台をつくることを目的としています。

AI Creative Future Awards – FAQ

議論メンバー

  • 清水 幹太(Chairman / BASSDRUM テクニカルディレクター)
  • 緒方 壽人(デザインエンジニア)
  • 徳井 直生(アーティスト / AI研究者)
  • 戸村 朝子(プロデューサー / 株式会社ARTn代表)
  • 三宅 陽一郎(立教大学大学院 人工知能科学研究科 特任教授)
  • AKI INOMATA(アーティスト / 武蔵野美術大学客員教授)
  • 土屋 泰洋(リサーチャー / Dentsu Lab Tokyo)

AI Creative Future Awards – 議論メンバー

受賞作品の概要とその評価

受賞した作品について

  • 作品の概要
  • 使用されているAI技術
  • 評価されたポイント

についてまとめていきます

Grand Prix: Pichet Klunchun他, Cyber Subin: Evolving Cultural Heritage through Human-AI Co-dancing

Webサイト

作品の概要

本作品は、タイの伝統舞踊とAIを高度に融合させた「Human-AI co-dancing(人間とAIの共創ダンス)」のプロジェクトである。タイ語で「Subin(夢)」を意味する本作は、世界的な振付家ピシェ・クランチェン氏と、MITメディアラボのパット・パタラヌタポーン氏らによる共同制作によって誕生した。伝統舞踊の身体技法をAIが学習し、仮想のパートナーとして人間のダンサーとリアルタイムで共演する実験的なパフォーマンスである。

作品概要 (AICAサイトより)

本プロジェクトは、タイの伝統舞踊の原理から導き出された計算モデルを活用し、人間のダンサーと仮想のパートナーを融合させる「ヒューマン-AI協働ダンス(Human-AI co-dancing)」を紹介するものです。「Cyber Subin(スビンはタイ語で『夢』を意味します)」において、学際的なチームは、テッパノムの典拠にある59のポーズの分析から抽出された六つの原則をAIシステムに変換しました。このシステムは、仮想キャラクターの動きをリアルタイムで動的に振り付けます。

この対話型システムにより、ダンサーは音声制御を通じてAIエージェントと即興で共演することが可能となり、出演者、振付師、観客がタイ伝統舞踊の要素を表現するパラメーターを調整できます。AIは単に動きを生成するのではなく、ダンサーの身体と対話し、パフォーマーが解釈し、抵抗し、あるいは拡張するような挑発を提示します。これにより、舞台は人間の直感とアルゴリズムによる介入が絡み合う、共同創造の場へと変貌します。

ヒューマン-AI間のリハーサルからは、人間と機械の相乗効果と摩擦から生まれるハイブリッドな動きの美学が誕生しました。ダンサーたちはAIと協働し、リアルタイムの即興を通じて伝統的な言語を新たな可能性へと拡張します。伝統は静的なものではなくなり、文化遺産はヒューマン-AIのパートナーシップを通じて再構築され、動的なものへと変化します。

「Cyber Subin」は、無形文化遺産を知的技術とポストヒューマン振付術と組み合わせる潜在的な可能性を示しています。この作品は、過去、現在、未来にわたる対話、すなわち**生きた生態系(リビング・エコシステム)**として機能します。そこでは、タイ舞踊が人間の身体と人工知能との協働を通じて進化し、伝統的な知恵を現代的な文脈で保全しつつ、芸術的表現を拡大しています。

活用されているAI技術

振付知能(Choreographic Intelligence)のモデル化

  • 伝統知のアルゴリズム化:タイ舞踊の基本ポーズ「メー・ボット・ヤイ」を解体し、エネルギー、曲線、軸点など6つの振付原理へと計算モデル化しています。
  • モーションデータの動的生成:キャプチャされた静的なダンスデータに対し、AIがリアルタイムでアニメーションのキーフレームや各関節の動きを動的に変更します。

動作制御のアルゴリズム

  • 数学的フィルタリング:ガウス平滑化フィルタや低域・広域通過フィルタ(Low-pass/High-pass filter)を回転クォータニオンに適用し、動きの曲線美や流動性を制御しています。
  • 逆運動学(IK)の応用:インバース・キネマティクスと線形補間を用い、身体の各部位を特定の軸点(Axis Points)に向けて正確かつ自然に誘導します。
  • タイミングの非同期制御:各肢体のキーフレームに時間的なオフセット(ずれ)を加えることで、伝統的な同期運動と現代的な非同期運動を自在に切り替えます。

リアルタイム・インターフェース

  • 音声認識によるパラメータ操作:Google Cloud Speech-to-Textなどの音声認識技術を統合し、ダンサーや観客が声で振付のパラメータを瞬時に変更できる仕組みを構築しています。
  • Webベースの3Dレンダリング:Vue.jsとThree.jsを用いたインターフェースにより、AIが生成した動きを低遅延で3D空間に視覚化し、人間との即興的な対話を可能にしています。

身体的限界の拡張

  • ポストヒューマン的表現:物理的な制約を排除した仮想空間ならではの「関節回転パラメータ」を設定し、人間には不可能な身体構成や動きを生成することで振付の語彙を広げています。

コメント (AICAサイトより)

タイの伝統舞踊とAIを結びつけ、人間とAIが共に踊るという挑戦的な試みを高く評価した。ダンサーの確かな技術によって、作品としてのダンスの質がしっかりと担保されている点も特筆に値する。

また、タイ伝統舞踊の身体原理や所作をCG上でモデル化し、視覚的かつ分析的に提示している資料も非常に興味深く、文化的・技術的両面から新しい理解をもたらすものであった。

Domestic Data Streamers, Synthetic Memories

Webサイト

認知症患者や高齢者が抱く「写真に残っていない記憶」をAIで可視化し、失われた家族のアルバムを再現する試みである。対話を通じて記憶の断片を抽出し、画像生成AIを用いて修正を繰り返すことで、対象者の内面にある情景を具体化する。単なる画像生成を超え、人々の尊厳や心の平穏に寄り添うセラピー的な役割も果たす。

作品概要 (AICAサイトより)

「Synthetic Memories」は、加齢、強制移住、あるいは神経変性疾患によって失われる危機にある個人の記憶を再現し、保存するためのプロジェクトです。Domestic Data Streamersが主導するこの取り組みは、綿密なインタビューと生成AIを組み合わせることで、口頭による記憶の語りを「Memory Vectors(記憶のベクトル)」と呼ばれる視覚イメージへと変換します。

生成される画像は、写真のような写実性(フォトリアリズム)ではなく、あえて「夢の中のような」美学に基づいてデザインされています。これは、事実としての正確さよりも「感情的な共鳴」を優先させ、かつ歴史的な記録写真とは明確に区別するための意図的な選択です。

本プロジェクトは、認知症患者への回想療法の支援や、故郷を追われたコミュニティが自身のルーツと再びつながる手助け、さらには無形文化遺産の保存など、多岐にわたる社会的意義を担っています。同意とデータ保護を最優先する厳格な倫理的枠組みの下で運営される「Synthetic Memories」は、テクノロジーを通じて世代間の対話を促進し、人間のアイデンティティの連続性を守り抜くことを目指しています。

コメント (AICAサイトより)

強制移住や認知症などにより揺らぐ個人の記憶と尊厳に、丁寧なインタビューによる文脈の分析を用いて、AIによる失われかけたナラティブの再構築と感情の回復を試みる実践的活動。公共サービスへの実装を通じ、人間性を支える技術の社会的可能性を国際的協働として具体的に示している。

  • 使用技術: 画像生成AIを活用し、対話に基づくプロンプトの調整とフィードバックのループによる記憶の精緻化。
  • 評価ポイント: AIを高度な計算機ではなく、対話を促し記憶を救い出す「共生」のメディアとして定義した社会的意義。

木原 共 + Playfool, Deviation Game

Webサイト

人間が「AIには認識できないが、人間には正解が伝わる」絶妙なラインの絵を描き、AIと対決するお絵描きゲームである。AIが学習データのパターンに依存している特性を逆手に取り、そこから「逸脱」することで勝利を目指す。遊びを通じて、AIの認識アルゴリズムの限界と、人間ならではの文脈理解や創造性を直感的に理解させる。

作品概要 (AICAサイトより)

「デヴィエーション・ゲーム」は、人間がAIが学習した知識を超えて新しい表現を生み出せるかを探る、ゲーム形式のプロジェクトです。このゲームでは、プレイヤーは「ネコ」といったお題を、他の人間のプレイヤーには理解できるが、画像認識AIモデルには理解できないように描かなければなりません。このゲームは、コンピューターサイエンスの父、アラン・チューリングが1950年に考案した「イミテーション・ゲーム」から着想を得ています。のちに拡張され、チューリングテストとして知られるようになったこの思考実験では、AIが人間を模倣できるかどうかが焦点でした。私たちはこの関係性を逆転させ、AIの理解から人間を逸脱させることを試みます。とある人間の表現が過去に存在したかどうかをAIに見分けさせることで、過去に存在しなかった新たな表現の可能性を世界中のプレイヤーたちと探ります。

コメント (AICAサイトより)

AIを簡単なゲームに組み込むことで、人間的な創造性の拡張を試みる批評的・ハッキング的なアプローチ。ゲームとしての完成度も高く、遊びの体験を通じて学びが生まれる点が高く評価された。
AIの性能の性質を利用するという点が今後のゲームのあり方の一つの可能性を示したといえる。

  • 使用技術: AIによるリアルタイム画像認識・分類技術。AIが予測するカテゴリーの確率分布を可視化。
  • 評価ポイント: AIの「限界」を遊びのルールに変え、AI時代の新たなリテラシー教育をエンタメとして成立させた点。

九段理江 / 博報堂他, 九段理江に95%AIで小説書いてもらってみた。

height:500

Webサイト

芥川賞作家の九段理江氏が、本文の95%をChatGPT(GPT-4)に委ねて執筆した短編小説プロジェクトである。作家による執筆プロセス(プロンプトの全履歴)を公開し、AIとの対話の中でいかにして文学性や作家性が立ち上がるかを検証した。AIの「空虚さ」や「非人間的な文体」を逆手に取り、批評的な奥行きを持つ作品へと昇華させている。

作品概要 (AICAサイトより)

『東京都同情塔』で第170回芥川賞を受賞した九段理江氏は、受賞記者会見で「小説の5%をAIで書いた」と発言し大きな話題と議論を巻き起こした。AIを活用したクリエイションを私たちはどう捉えるべきか…? 実際の受賞作を読めば「5%をAIで書く」ことの必然性は一目瞭然。何より、新しく、面白い。では、もしその条件を逆にするなら? つまり「95%をAIで書く」ことを前提とするなら、どんな物語が、「うれしい事件」が、生まれるのだろうか?
この野心的な実験を九段理江氏に引き受けていただき、生成AIと九段氏が共同で執筆した4000字の短編小説『影の雨』が完成。九段氏が生成AIに指示を出した壮大な「プロンプト」全文とともに雑誌およびWebサイトにて公開した。

コメント (AICAサイトより)

小説の実際の分量の何倍ものプロンプトを使ってAIとの「対話」を通じて「書いた」本作は、現在のLLMをベースにしたAIシステムで何ができるのか/できないのかを見極める上でも試金石とも言える作品。

大学のレポート作成にも AI が広く用いられるようになった 2025 年において、AI を使ってテキストを生成するという行為自体は、すでに特別なものではない。しかしその一方で、本プロジェクトでは プロの小説家が実名で AI による小説制作に挑み、さらにそのプロンプトをすべて公開している。
この透明性と姿勢は非常に大胆であり、「創作とは何か」「作者とは誰か」という本質的な問いを社会に投げかけている点で、特に高く評価された。

  • 使用技術: 大規模言語モデル(LLM)を用いた「生成→評価→指示」の高速リライトサイクル(チェーン・オブ・リライト)。
  • 評価ポイント: 著作者性の境界を揺さぶり、AI時代の「書くことの価値」を問い直した極めて批評性の高い文学的実験。

Nao Tokui他, Neutone Morpho — Real-time AI Audio Plugin and Platform

Webサイト

演奏される音色を、AIを用いてリアルタイムで別の音色へと変換するオーディオプラグインである。ピッチや音量を保ちながら、楽器の音を環境音や架空の音へと瞬時に変容させ、既存の楽器の概念を拡張する。クリエイターが自らAIモデルを学習・公開できるプラットフォームも備え、音楽制作におけるAI活用の民主化を推進している。

作品概要 (AICAサイトより)

「Neutone Morpho」は、高度な機械学習技術を搭載した、DAW(デジタル・オーディオ・ワークステーション)向けのリアルタイム音色モーフィング・プラグインです。元の音の形状やニュアンスを保ちつつ、入力された音を全く異なるスタイルの音へと再合成します。また、業界初の試みとして、アーティストが自身の音源素材をアップロードし、独自の音響テクスチャを生み出すためのカスタムモデルを学習できるサービスも提供しています。

Neutone Morphoを通じ、私たちは、巨大テック企業がWeb上から無断で収集(スクレイピング)した大規模かつ無機質なデータセットに依存しがちな、現在のAI音楽ツールの支配的なあり方に一石を投じています。

本プラグインは世界各地の大学講義で導入されているほか、CTMやMUTEKといった国際的な音楽フェスティバルにおけるアーティスト・ワークショップでも活用されています。さらに、心身に障害のある若者たちの支援施設とも密接に連携し、音楽をつくる喜びを共有するワークショップも実施してきました。

AIがアーティストに新たな音の可能性をもたらし、すべての人にとって音楽制作がより身近で楽しいものになる未来へ。Neutone Morphoは、そんな未来に向けた私たちの第一歩です。

コメント (AICAサイトより)

特筆すべきは、リアルタイムでオーディオ入力を別の楽器の音色へと変容させる “トーン・モーフィング(音色変換)” 技術と、それを音楽制作環境で自在に扱えるプラグインとして提供している実用性である。また、オープンな SDK を通じて、研究者・エンジニア・アーティストが各々の視点からモデルを開発・共有できる「共創のプラットフォーム」として機能している点も極めて重要だ。

AI 研究の最前線にある技術を、プログラミング知識を持たない音楽制作者にも開かれた形で提供し、創造の民主化を実質的に推進している点は高く評価される。

AI とアーティスト/音楽家とをつなぎ、これまで実現し得なかった新しい音の可能性を提示するこのプロジェクトは、きわめて意義深く、また同時代性を強く帯びている。今後、ハードウェア開発を含むさらなる展開にも注目したい。

  • 使用技術: リアルタイム音色変換(トーン・モーフィング)と、ユーザー独自のモデル学習を支援するクラウド基盤。
  • 評価ポイント: 音楽表現における「即興性」や「身体性」をAIに持ち込み、新たな楽器としての可能性を提示した実用性。

Dan Moore他, The Great American Pastime

height:500

Webサイト

アメリカ文化の象徴である野球を、AIを用いて無限に再解釈し続ける映像作品である。過去の膨大な試合映像や文化的イメージを学習させたモデルが、実在しないが「野球らしさ」に溢れたシーンを絶え間なく生成し続ける。永遠に続くループの中で、我々が抱くノスタルジーや文化的儀式の本質を浮かび上がらせる。

作品概要 (AICAサイトより)

「The Great American Pastime」は、アメリカにおける最も重要な文化的儀式の一つである「野球」を、人工知能を通じて捉え直す作品です。本作では「Infinite Baseball Radio Network」を通じ、AIによって生成された野球の試合を24時間絶え間なく放送し続けます。それぞれの放送は、生のスポーツラジオ番組が持つリズム、口調、そして感情の機微を捉えており、長きにわたり親しまれてきた実況中継の響きを彷彿とさせます。試合のシミュレーションには、過去20年分の野球統計データを学習した小規模言語モデル(SLM)と、試合の物語を鮮やかに描き出す大規模言語モデル(LLM)が組み合わせて使用されています。これらのシステムが連携することで、一球一球、そしてイニングごとに展開される、完全な試合が生み出されるのです。本プロジェクトは、野球を「データのシステム」であると同時に「物語のシステム」として考察する試みでもあります。数字、記憶、そして信じる心が重なり合い、そこに意味と情緒的な結びつきが形成されます。「The Great American Pastime」は、野球というゲームを、ノスタルジーと想像力を絶えず喚起する「生きた文化的シグナル」へと昇華させます。

コメント (AICAサイトより)

AIによってコンテンツのあり方に新しい疑問符を投げかけた好事例。アメリカの国民的娯楽として親しまれ、どこか懐かしさを感じさせる野球の実況中継が、AIによって無限生成されるという対比が印象的である。AIという最新技術とその特徴とも言えるある種のハルシネーションによって、ノスタルジーや文化的記憶とは何なのかをアイロニカルに問い直している。

  • 使用技術: 無限のループ映像を生成する独自の拡散モデル(Diffusion Model)とデータ学習技術。
  • 評価ポイント: 文化的アイコンをAIで再構築し、デジタル時代における「永遠のノスタルジー」を視覚化した芸術的表現。

Circus Grey他, Natural Intelligence

Webサイト

AI生成画像が氾濫する現代において、あえて「現実の風景」をプロンプト風のテキストと共に提示した広告キャンペーンである。一見AIが生成した超現実的な景色に見える写真は、全て実在する場所で撮影されたものである。AI時代の視覚体験を逆手に取り、写真というメディアが持つ「真実性」や「現実世界の豊かさ」を再認識させる。

作品概要 (AICAサイトより)

人工知能が文化的な話題を席巻し、数え切れないほどの人々がわずか数行のプロンプト入力で非現実的な風景を生成しているこの時代。ニコンは、世界にある本質的なことを思い出させるために立ち上がりました。 それは、「現実は、いかなる合成物(シンセティック)よりも驚異に満ちている」ということです。
「Natural Intelligence」は、世界各地の息をのむような絶景で撮影された、本物の写真のみで構成されたキャンペーンです。それぞれの写真には架空の「AIプロンプト」が添えられ、まるでそれがあり得ない空想の世界であるかのように描写されていますが、実はすべて実在する風景なのです。CGIも、AIも使用していません。そこにあるのは、ニコンのレンズを通して捉えられた、驚くべき大自然のありのままの姿だけです。
このキャンペーンは、私たちの地球のかけがえのない美しさと写真という「技」を称えることで、テクノロジーを巡る議論を再定義しました。ニコンを単に「AIに対抗する存在」としてではなく、本物の探求、本物の発見、そして本物の体験を支持するブランドとして位置づけたのです。
圧倒的に肯定的な反響とブランド認知の向上を達成した「Natural Intelligence」は、多くの人々を屋外へと誘い、カメラを手に取らせ、現実世界とのつながりを取り戻すきっかけを与えました――目の前に広がる、その驚くべき風景とともに。

コメント (AICAサイトより)

画像生成AIが汎用化する今において、写真産業を牽引してきたNIKONが「自然知能」と謳い、撮る行為の価値を問い直した問題提起の作品。元素材の出元と加工の可能性をめぐる議論も含みながら、写真家の創造性や産業構造そのものへの影響に正面から向き合う姿勢が評価された。

  • 使用技術: 画像生成AIのプロンプト構文を用いた、写真表現と広告コミュニケーションの再定義。
  • 評価ポイント: AI技術そのものではなく、AIブームという「文脈」を巧みに利用して現実の価値を訴求した逆転の発想。

藤村憲之, 那珂湊駅と話す2.0

height:500

Webサイト

那珂湊駅という「場所」そのものと対話ができるAIインスタレーションである。駅の歴史や地域の記憶を学習したAIが、駅舎の「人格」として訪問者と会話を交わす。デジタルツイン的なアプローチにより、物理的な場所と人間の間に新しい感情的な繋がりを創出し、地域のアイデンティティを再定義する試みである。

作品概要 (AICAサイトより)

那珂湊駅と会話する体験そのものが、この作品です。
観客がスマートフォンからAIに話しかけると、どんな話題も駅の物語へとつなげ、ユーモアを交えて応答し、会話の雰囲気に応じてホームの照明が変化します。たとえば、駅に住んでいる猫について尋ねると、猫の話とともに、黄色と猫の毛色を映した光がホームを染めます。
チャットは https://mmm-ai-nakaminato.web.app から体験できますが、光の変化は現地でしか見ることができません。
作家は、このAIと建築が融合した存在が、駅を訪れる人々のあいだに静かなつながりを生むことを願っています。そこでバージョン2.0の画面では、あなたとAIの対話の隣に、他の来訪者との対話も表示しています。

コメント (AICAサイトより)

本作は、駅という公共空間にAIを介した対話を導入し、通過点だった場所を記憶と感情が蓄積するメディアへと変容させた。ボディを持たないAIが情報空間から物理空間へと滲み出し、人々の言葉を受け止め、応答として返すことで、断片化されていた日常の声が緩やかに接続され、地域や場の関係性、さらには時間の層そのものを編み直していく。

  • 使用技術: 地域の歴史データを学習させた大規模言語モデルと、音声合成・認識を組み合わせた対話システム。
  • 評価ポイント: 場所という物理的存在をAIで擬人化し、観光や地域活性化に新たな視点をもたらした体験デザイン。

evala, Studies for

Webサイト

音響アーティストevala氏の過去の空間音響作品を学習したAIによる、新たな空間音響の生成実験である。AIが作者特有の音の配置や質感の癖を抽出し、人間では思いつかないような新たな音響空間を提示する。人間とAIが創作のプロセスを共有し、アーティストのスタイルを拡張・解体していく試みである。

作品概要 (AICAサイトより)

本作は、これまでにevalaが発表してきた36の立体音響作品のサウンド・データを学習したサウンドエフェクト生成AIを用いて、空間的作品をつくる試みである。サウンド(evalaがシグネチャーとして作品の始まりに用いている音)とテキスト(学習に用いられた作品のうち8作品のタイトルをチャンネルごとに選択)の二つをリファレンス(プロンプト)として、リアルタイムかつマルチチャンネルで「evalaのような音」が生成され続ける。このプロジェクトは、作家不在でも立体音響作品を永続的に継承・制作しうる新しいアーカイヴのかたちを探求する実験であり、本作品はその最初のスケッチとなる。

コメント (AICAサイトより)

AIを用いて作家不在後も創作が続く構想を作家本人が研究開発チームと共に協同し、リアルタイムに展開し続ける動的アーカイブという形で、一期一会の作品として提示した点が、新規性と問題提起の両面で高く評価された。会期中約3ヶ月24時間マルチチャンネルで生成する技術的挑戦も同時に行われている点も注目された。

  • 使用技術: 独自の音響空間データを学習したサウンド生成AIと、マルチチャンネル音響出力システム。
  • 評価ポイント: 聴覚表現におけるAIの可能性を追求し、作家の個性をデータ化して拡張しようとする前衛的な姿勢。

Qosmo, Spot-if-AI

height:500

Webサイト

Spotify上の楽曲がAI生成されたものかどうかを判定するブラウザ拡張機能である。AIコンテンツがストリーミングサービスを埋め尽くす「AI Slop(AIの泥)」現象に対し、楽曲の透明性を高めることでアーティストの権利と音楽エコシステムを守ることを目的としている。ユーザーに聴取の選択肢を与え、プラットフォームの姿勢に問いを投げかける。

作品概要 (AICAサイトより)

近年、SunoやUdioといったツールで生成された楽曲が、ストリーミング・プラットフォームへ自動的に大量アップロードされるケースが急増しています。こうしたAIコンテンツの氾濫は、人間のミュージシャンの生計を脅かすだけでなく、音楽のエコシステムそのものを希薄化させる懸念があります。
私たちのツールは、AIによって生成された楽曲を特定することで透明性を確保し、アーティストの正当な収益を守ることを目的としています。
2025年5月にQosmoよりリリースされた「Spot-if-AI」は、ウェブサイトおよびオープンソースのChrome拡張機能として提供されています。本ツールは、Rahmanらによる先行研究(2025年)の「SONICS」に基づいた独自のAIモデルを使用しており、ある楽曲がSunoやUdioなどのAI音楽プラットフォームによって「完全に生成されたものか否か」を判定します。
Deezerのように、プラットフォーム上でAI生成楽曲へのタグ付けを開始した事例もありますが、多くのサービスでは未だ対応が進んでいないのが現状です。
私たちは「Spot-if-AI」を通じ、Spotifyなどのプラットフォームにすでにどれほどの規模でAI楽曲が存在しているのかをリスナーが理解する一助となり、そしてこれらのプラットフォームが将来どうあるべきかについて、より広範な議論が生まれることを願っています。

コメント (AICAサイトより)

音楽配信サービスで配信された楽曲がAI生成であるかを判定するシステム。AIによって生成された音楽の蔓延に対する批評的な対抗手段として、その「社会的意義」と問題提起性が評価された。

  • 使用技術: 音声波形からAI生成特有のパターンを検知する深層学習モデルのローカル動作実装。
  • 評価ポイント: AIの負の側面に対する実践的な解決策を提示し、創造性の倫理と透明性に寄与する技術的貢献。

安野貴博+チーム安野,「チーム安野」東京都知事選プロジェクト

Webサイト

2024年東京都知事選における、AIエンジニア安野貴博氏によるデジタル民主主義の実験である。「AIあんの」というアバターを通じて、有権者数千人の質問に24時間体制で答え、政策へのフィードバックを収集した。個別の声を政治に反映させるためのインターフェースとしてAIを活用し、民主主義のアップデートを試みた事例である。

作品概要 (AICAサイトより)

2024年東京都知事選挙に無所属で立候補したAIエンジニア安野貴博(現参議院議員・チームみらい党首)によるプロジェクト。「デジタル民主主義」を掲げ、AIとオープンソースを活用した新しい市民参加型の選挙を実践した。①GitHubでマニフェストを公開し、AIを活用して市民からのPull Requestで改善提案を受け付ける仕組みを構築②政策を学習したAIアバター「AIあんの」により、市民がいつでも質問・提案できる環境を整備③ポスター掲示板の地図マッピングによるゲーミフィケーションの導入などを行った。これらをすべてオープンソースで公開し、「ブロードリスニング」を含むデジタル民主主義の新たな実践として、その後の政治・行政に影響を与えた。

コメント (AICAサイトより)


単なるツールの導入にとどまらず、政治活動におけるクリエイティブな提案として非常に価値が高いと判断された。AIを活用して効率的に政策を伝えようとする姿勢そのものや、今後の政治や公的な活動におけるAI・デジタル活用の重要なベンチマークとなり得る点が高く評価された。

  • 使用技術: 政策集を学習させたRAG(検索拡張生成)ベースの対話AIと、音声合成アバター技術。
  • 評価ポイント: 政治参加のハードルをAIで下げ、テクノロジーによる社会変革の具体的かつ力強いモデルを示した点。

諸星 岬他, 『モンスターハンターワイルズ』筋肉シミュレーションの機械学習

height:500

Webサイト

ゲーム『モンスターハンターワイルズ』における、機械学習を用いたモンスターの筋肉シミュレーション技術である。物理演算だけでは困難だった複雑な筋肉の収縮や揺れを、事前学習したモデルによって軽量かつ高精度に再現する。架空の生物に圧倒的な生命感とリアリティを吹き込み、没入感の高いゲーム体験を実現している。

作品概要 (AICAサイトより)

『モンスターハンターワイルズ』に登場するモンスターの筋肉表現に使用されたZivaのセットアップワークフローの解説。
Zivaでは筋肉シミュレーションに使用されるZivaVFXと機械学習を用いたZivaRTがあります。
ZivaRTの機械学習を用いることでリニアブレンドより多くの情報を盛り込むことができ、キャラクターのよりリアルな表現を実現できたので、テクニカルアーティストが試行錯誤により得られた知見をまとめMLDeformerを使うために必要な情報を共有します。

コメント (AICAサイトより)

アニメーションの制作パイプラインを根底から変革する可能性を秘めた技術研究。クリエイティブの「インダストリへの影響」や、他の人が視点を置きにくいところでの取り組みによりアウトプットを結実させている点が評価された。

  • 使用技術: 筋肉の物理挙動を近似するニューラルネットワークを用いたランタイム・シミュレーション。
  • 評価ポイント: エンタメ分野でのAIの実用化において、最高峰の技術力と職人的なこだわりが結実している点。

Scott Allen, Unreal Pareidolia -shadows-

Webサイト

影の中に特定のパターンを見出す心理現象「パレイドリア」をAIで増幅させるインスタレーションである。カメラが捉えた何気ない影の形から、AIが動物や顔などの意味を見出し、プロジェクションによって可視化する。人間の知覚の曖昧さと、AIのパターン認識の特性を重ね合わせ、現実と非現実の境界を問いかける。

作品概要 (AICAサイトより)

ある対象を見たときに、普段見慣れているパターンを心に思い浮かべてしまう――「パレイドリア」と呼ばれる知覚の傾向があります。日本では古くからこれを「見立て」と呼び、茶道や日本庭園など、様々な芸術や文化の中に深く浸透してきました。
人は視覚的な観察を行う際、自身の記憶の中から視覚的な類似性を探し出し、想像を巡らせます。私は、非人称的(Impersonal)なパレイドリア装置を作ることで、鑑賞者の想像力を拡張できるのではないかと考えました。
本作では、Stable Diffusionの「img2img」と「BLIP-2」を使用し、日用品やおもちゃが作る「影」に対して、リアルタイムに画像とキャプションを生成します。鑑賞者が影絵を作ってボタンを押すと、AIによる生成が開始されます。続いてキャプションが表示され、生成された画像がプロジェクターによるプロジェクションマッピングで影絵に重ね合わされることで、影とAIのイメージの対応関係を確かめることができます。

コメント (AICAサイトより)

子どもの頃の遊びやコミュニケーションなど人間が古くから行ってきた営みをAIで拡張した、「人間ありき」の新しい遊びを発明している点が高く評価された。

  • 使用技術: 入力映像からリアルタイムでパターンを検出・変換する、画像認識および生成アルゴリズム。
  • 評価ポイント: 人間の認知の癖をAIで拡張し、日常の見慣れた風景を驚きに満ちた芸術体験へと変容させた点。

飯田羊 / 株式会社電通他, おぼえたことばのえほん

height:500

Webサイト

子供が覚えたての言葉を入力すると、その単語をテーマにした世界に一冊だけの絵本をAIが自動生成するサービスである。親子のコミュニケーションを軸に、AIが子供の語彙形成や想像力の発達を支援する。技術を冷たい自動化ではなく、家族の物語を編むための温かなツールとして活用している点が特徴的である。

作品概要 (AICAサイトより)

「おぼえたことばのえほん」は、子どもが覚えた言葉を入力すると、AIが関連語とつなげて一冊だけの物語を自動生成するサービスです。言葉同士のつながりを可視化し、興味の世界を広げる体験として読書週間に限定公開しました。興味語彙に出会ったときの記憶の定着に着目し、「その子らしい語彙」を学びの起点にする新しい絵本の形を提案。物語に問いの構造や意外性を組み込み、子どもの好奇心に寄り添う“体温のあるAI”として教育×テクノロジーの可能性を探りました。

コメント (AICAサイトより)

子供による言葉の獲得という日常的なプロセスを単なる記録にとどめず“物語性のある表現”へと昇華させられるようにした点は新しく、AIの強みを活かしたクリエイティビティの広げ方が高く評価された。

  • 使用技術: 児童向けに適した語彙を制御する言語モデルと、一貫性のあるキャラクター描写を実現する画像生成AI。
  • 評価ポイント: AIを日常の教育や育児に自然に溶け込ませ、創造的な体験を家族に提供するプロダクトデザイン。

Leo Mühlfeld他, Large Language Writer

Webサイト

文章執筆において、AIが生成する言葉を単に受け入れるのではなく、人間とAIが「縫い目(seam)」のある相互作用を行うためのインターフェース研究である。AIの提案を疑い、取捨選択し、あるいは意図的にズラすプロセスを重視する。便利さの追求ではなく、あえて不自由さや摩擦を残すことで、人間の思考を深める執筆の在り方を提案する。

作品概要 (AICAサイトより)

未来において、私たちはどのように「書く」のでしょうか? そして、なぜ私たちはあえて「シームフル(継ぎ目のある)」なインタラクションをデザインすべきなのでしょうか?
「Large Language Writer (LLW)」は、大規模言語モデル(LLM)との誠実なインタラクションを探求するプロジェクトです。 多くのデジタルツールが「魔法のように機能する」体験の裏側にその仕組みを隠蔽してしまうのに対し、LLWは異なるアプローチを提案します。それは、ユーザー自身を生成プロセスの中に位置づけることです。
オペレーターはテキスト生成の過程でその方向性を自ら操る(ステアリングする)ことができ、直接的かつ直感的なコントロールが可能となります。また、本プロジェクトはソフトウェアの枠を超え、AI搭載技術におけるハードウェアがいかに進化すべきかについても問いかけています。そのモジュール式の構造は、技術の陳腐化に対してもしなやかに適応し、ユーザーと共に進化していくデバイスのあり方を提案しています。
クリティカル・デザインの文脈に根ざしたLLWは、現在の生成AI統合の流れに疑問を呈し、透明性が高く、ユーザーの主体性を尊重する(エンパワリングな)、人間中心の代替案を提示します。
本プロジェクトは問いかけます。 「未来において、私たちはどのように書くのか?」 そして、「すべてが『魔法のように』機能してしまう現在のAI主導の世界において、いかにして信頼と主体性(エージェンシー)を育むツールを生み出せるのか?」と。

コメント (AICAサイトより)

LLMを用いて文章を書く・編集するために特化したUI/UXのあり方をデザインするプロセスを通して、LLMの本質を批評的に炙り出そうとしている点が評価された。

  • 使用技術: 執筆者の意図を反映しつつ、多様な視点を提示するLLMの制御インターフェース開発。
  • 評価ポイント: 「AIに書かせる」のではなく「AIと共に考える」ための道具の在り方を追求した、デザイン思想の鋭さ。

Yuqian Sun他, AI Nüshu

Webサイト

中国・湖南省で女性たちの間で密かに受け継がれてきた文字「女書(Nüshu)」をAIで復元・拡張するプロジェクトである。失われつつある独自の文化形式をAIに学習させ、現代の文脈で新しいメッセージを生成できるようにする。文化の死を防ぐだけでなく、AIを通じてその精神性を現代に再活性化させる試みである。

作品概要 (AICAサイトより)

「Nüshu(女书)」は、中国・湖南省の女性たちによって何世紀にもわたり独自に創り出され、使用されてきた、世界でも類を見ない女性専用の文字です。正規の教育を受ける機会を奪われていた当時の女性たちが、互いに意思疎通を図るために生み出した手段でした。
AIは、近代以前の中国の女性たちから学び、自らの「秘密の言語」を創り出すことができるのでしょうか?
「AI Nüshu」は、計算言語学と女書の歴史的遺産を融合させたインタラクティブ・インスタレーション作品です。 本作では、読み書きの教育を受けられなかった近代以前の女性たちを模倣するようAIエージェントを学習させ、全く新しい言語システムを構築させます。これは、家父長制的な抑圧に対する抵抗の象徴であるとともに、非西洋的かつフェミニズムの文脈における「言語の発生」を表現する試みです。

コメント (AICAサイトより)

古代中国の女性たちが抑圧の中で生み出した「女書」というテーマの選択自体が、きわめて意義深い。本プロジェクトは、その歴史的背景を踏まえつつ、AI によって新たな言語を生成しようとする大胆な試みによって、言語がどのように生まれ、誰がそれを創りうるのかという本質的な問いを投げかけている。
計算言語学とフェミニズム的視座を交差させながら、AI が“学習者”という従来の位置付けを超え、文化的・社会的制約を内在化したかのように独自の言語体系を形成していくプロセスは非常に先鋭的である。
人間と機械、権力と表現、既存の言語観と新たな言語生成の可能性が交錯する本作は、言語とは何かという根源的な問いを鋭く突きつける、極めて重要なプロジェクトである。

  • 使用技術: 希少言語や独自文字の構造を学習・生成する、特化型の大規模言語モデル。
  • 評価ポイント: 絶滅の危機にある文化をAIで救い上げ、未来へと受け渡す「デジタル・アーカイビング」の先駆的事例。

Dentsu Lab Tokyo, FANTOUCHIE: Generative Haptic AI

Webサイト

入力した言葉のイメージに基づいて、AIがリアルタイムで「触覚」を生成するシステムである。例えば「ふかふか」「刺すような」といった言葉から、それに対応する振動や圧力を振動素子を通じて提示する。視覚や聴覚に偏りがちなAI表現を、皮膚感覚というより原初的な身体領域へと拡張する挑戦的な試みである。

作品概要 (AICAサイトより)

FANTOUCHIE(ファンタッチー)は、ユーザーが入力した言葉から触り心地を生成しフィードバックするシステムです。

本システムは、テキスト入力から触覚フィードバックを生成し、振動スピーカーを通じて出力します。「ユニコーンの角」のような架空のものの触感も表現できることが特徴です。

開発にあたっては、ピエゾセンサを搭載した爪型デバイスを実装し、さまざまな素材の触り心地を音として収集。これらの音データとオノマトペを紐づけることによって、独自のデータセットと触覚生成モデルを構築しました。

コメント (AICAサイトより)

言葉から触り心地を生成するシステム。LLMや感性AIなど普遍的な技術をユニークなインタラクション設計に落とし込んだ点が評価された。

  • 使用技術: 言語概念と物理的な振動パターンを紐付ける、マルチモーダルな生成AIモデル。
  • 評価ポイント: AIが「質感」を理解し、物理的な感覚として人間にフィードバックする新たなインターフェースの可能性。

朝日新聞社, AI短歌プロジェクト

Webサイト

日本最古の公募歌壇「朝日歌壇」の膨大なデータを活用し、AIと歌人が共創するプロジェクトである。過去の名歌を学習したAIが短歌を生成し、それを歌人が批評・添削することで、短歌という定型詩の表現の極北を探る。伝統的な韻律とAIの意外性が衝突し、言葉の持つ感性を再発見する場となっている。

作品概要 (AICAサイトより)

朝日新聞社のAI短歌プロジェクトは、短歌生成AIの開発と歌人との対話を軸に、「人間にとって短歌とは何か」を問い直す研究・実践である。歌人や参加者を交えたイベントの実施に加え、AIによる短歌検索基盤「朝日歌壇ライブラリ」の開発や社外研究者との共同研究を通じ、活動を継続的に展開している。

コメント (AICAサイトより)

LLMの技術を日本の伝統的な詩歌である短歌の創作に応用したプロジェクト。LLMブームにおける文章領域の革新を体現し、短歌という文化形式にどうAIが関わるかという批評的・文学的な視点が評価された。

  • 使用技術: 1995年以降の入選歌約5万首を学習させた短歌生成モデルと、感情に基づく検索エンジン。
  • 評価ポイント: 100年以上の歴史を持つ文化をAIで再解釈し、創作の本質を歌人と共に問い直した文学的・社会的な活動。

Jacob Adler, Total Pixel Space

Webサイト

「あらゆるデジタル画像が含まれる全ピクセル空間」という概念をAIで表現した写真作品群である。過去から未来まで、存在し得た全ての光景がピクセルの組み合わせの中に既に存在しているという哲学的視点を、AIによる膨大な画像生成を通じて提示する。写真という媒体の限界と、デジタル空間の無限性を対比させている。

作品概要 (AICAサイトより)

「Total Pixel Space」には、理論上可能なすべてのデジタル画像が内包されています。
そこには、あなたの全人生を記録した映画も、あなたが生きることのなかった無数の人生も、さらには地球の内外を問わず、実在した、あるいは決して存在しなかったあらゆる生物や物体の「生」が、ありとあらゆる角度から収められています。

コメント (AICAサイトより)

あらゆる文字の組み合わせのすべてを収めたというボルヘスの『バベルの図書館』の映像版とも言える作品である。文字をピクセルに置き換え、映像が“膨大だが有限なピクセルの時間的・空間的な組み合わせ”であるという原理そのものを題材にし、AIによってノイズから生成されたこの作品自体がそれを体現しているという自己言及的な構造が秀逸である。膨大な可能性の総体とその中で立ち現れる意味や価値の希少性を描き、創造性とは何かを問い直している。

  • 使用技術: 広範な概念を横断的に生成する、大規模な画像生成AIモデル。
  • 評価ポイント: 物理的な「撮影」という行為を、情報空間からの「抽出」という概念に変換した現代的な写真論。

dadabots (cj carr, zack zukowski) 他, PROMPT JOCKEYS – The Rise of DJing with a Neural Network

Webサイト

AIモデルをリアルタイムで操作しながらDJを行うパフォーマンス、およびその活動を追ったドキュメンタリーである。AIを便利な自動再生ツールとして使うのではなく、あえてコントロールが難しい複雑な楽器として扱い、演奏を「より困難にする」ことで、AI時代の卓越したパフォーマーの在り方を提示する。

作品概要 (AICAサイトより)

本ドキュメンタリーは、自ら音楽AIモデルをトレーニングする「ミュージック・ハッカーDJ」たちの集団を追った作品です。彼らの目的は、人間のDJに取って代わることではありません。むしろ、DJプレイを「格段に困難なもの」へと変えることにあります。
通常のDJは他人の作った既存の楽曲をかけますが、「プロンプト・ジョッキー」において、かけるべき曲はまだこの世に存在していません。それはGPUからダイレクトに生成される、生の「ニューラル・パイレーツ・ラジオ(海賊放送)」です。
架空のアーティスト、ジャンルの融合、決して起こり得なかったコラボレーション――。観客と共に創り上げられる、その場限りの熱狂的なアンセム(Ephemeral Bangers)。
これらのトラックは、その瞬間まで存在せず、そして演奏後には直ちに削除されてしまいます。 (ああ、なんと無常なことでしょう。だからこそ、私たちはその瞬間を深く味わうのです。)

コメント (AICAサイトより)

「まだ“存在しない音楽”を、リアルタイムで AI に プロンプトを与えてその場で生成し、DJ/ライブのように扱う」という発想の挑戦。音楽生成とプロンプトエンジニアリングの融合の好事例として評価された。

  • 使用技術: ライブ環境で音響生成パラメータを動的に操作する、カスタム学習されたニューラルネットワーク。
  • 評価ポイント: AIによる「自動化」に抗い、人間の習熟とスキルを必要とする「新しい楽器」への昇華を試みた点。

谷口 恭介他, everies

Webサイト

日常のありふれた物体をスキャンすると、AIがその形状や質感から独自の「キャラクター」を生成し、ARで命を吹き込むアプリである。コップや靴が目を持ち、喋り出す体験を通じて、子供のような好奇心で周囲の世界を再発見させる。AI技術を身近な「魔法」のような体験へと落とし込んでいる。

作品概要 (AICAサイトより)

everies は、身のまわりのあらゆるモノをユニークなキャラクターに変えるARアプリです。スマホで物体をスキャンすると、目や口が現れ、そのモノならではの性格・声・会話を持つキャラクターが誕生。声で話しかければ会話が続き、日常の景色がインタラクティブで遊び心あふれる世界に変わります。お気に入りのキャラは保存して、楽しい会話を続けることも。Googleによる「Gemini API Developer Competition」でBest Use of ARCoreを受賞。LLM×ARの組み合わせにより、あらゆる物に命を宿すこれまでにない体験を提供します。近日公式リリース予定!!

コメント (AICAサイトより)

日常のあらゆる物体に“キャラクター性”と“対話性”を付与し、世界の見え方そのものを変えてしまう AR × AI 体験であり、AIだからこそ可能な世界の再解釈 といえる。
発想力・AI特性・体験としての表現力が高いレベルで揃った作品 として評価された。

  • 使用技術: 物体認識(Object Detection)と、キャラクターの性格・対話を生成する言語モデル。
  • 評価ポイント: 高度な技術を意識させず、ユーザーの環境全体をプレイグラウンドに変える優れたUXデザイン。

Sihwa Park, Diffusion TV

Webサイト

1970年代の古いブラウン管テレビ(CRT)を用い、AIの生成プロセスを可視化するインスタレーションである。砂嵐のようなノイズから徐々に画像が立ち上がる「拡散モデル」の過程を、アナログテレビの物理的な質感と共に提示する。ブラックボックス化しがちなAIの内部処理を、ノスタルジックなメディアを通じて解読(デミスチファイ)する。

作品概要 (AICAサイトより)

「Diffusion TV」は、懐かしいブラウン管テレビを通して、AIの「拡散モデル(Diffusion Model)」におけるブラックボックス化されたプロセスを直感的に解き明かす、インタラクティブなAIアートインスタレーションです。
鑑賞者がテレビのダイヤルやアンテナを操作すると、AIによって生成された映像や音が変化します。カオスなデータノイズが「デノイズ(ノイズ除去)」のプロセスを経て、徐々に意味のある像へと結実していく様子を、実際に手を動かしながら体験することができます。
本作は、複雑なAIの仕組みと私たちの理解との間にある溝を埋める架け橋となり、生成AIという技術を、実際に触れて楽しみながら探求する機会を提供します。
テレビには3つのチャンネルが用意されています。「過去(絶滅した動物たち)」、「現在(絶滅危惧種)」、そして「未来(AIが想像する未知の生物)」。これらを通じて、人間、テクノロジー、そして自然環境の間に横たわる相互関係について深く考えるきっかけを与えます。
芸術的な解釈と体験型のAI技術を融合させた『Diffusion TV』。技術の進歩を追い求める過程で、私たちが守り続けてきたものは何か、そして失ってしまったものは何か――。その意味を、鑑賞者に静かに問いかけます。

コメント (AICAサイトより)

テレビという人々が慣れ親しんだインターフェースで生成AI画像・映像の仕組みを直感的に操作可能とし、人間の感覚と複雑なAI技術を高いレベルで橋渡しする体験として評価された。

  • 使用技術: 拡散モデルの生成過程をフレームごとに分解し、アナログ信号に変換して出力するシステム。
  • 評価ポイント: 最新の生成技術と旧世代のメディアを衝突させ、AIの物質性とプロセスを詩的に表現した点。

Senaida Ng / Brian Ho, KUNST KAPUTT

height:500

Webサイト

AIによって生成された楽曲、映像、3D空間を融合させた没入型のウェブ・エクスペリエンス・アルバムである。音楽制作の全工程にAIを介入させ、AI特有の「バグ」や「違和感」を芸術的なスタイルとして取り入れている。デジタル・プラットフォーム上での新たなアルバムの形態と、AI時代のポップ・カルチャーの在り方を提示する。

作品概要 (AICAサイトより)

「KUNST KAPUTT」は、没入型のウェブ体験として展開される、ジェネレーティブかつコラボレーティブなアルバム作品です。
本作は、音楽制作と利益分配における新たなエコシステムを構築するために、生成AIツールをどのように活用できるかを探求しています。
音楽分野での生成AI技術の発展に伴い、アーティストやクリエイターは、コンテンツの制作・消費における新たな課題とチャンスに直面しています。これらは、インタラクションやマネタイズ(収益化)における、これまでにない可能性を切り拓くものとなっています。

コメント (AICAサイトより)

音楽生成AIを用いて、個々のリスナーがアルバム内の楽曲の独自のリミックスを作成し、ブロックチェーン上でリリースすることを可能にした生成的アルバム。アーティストとリスナーの間の新しい関係性やこれまでにない音楽配信の方法を提示する。最新のAI技術の存在があって初めて可能になった野心的な試みが評価された。

  • 使用技術: 音楽、歌詞、ビジュアルの生成を一貫して行う複数の生成AIモデルの連携。
  • 評価ポイント: AIを補助的に使うのではなく、その特性を全方位的に受け入れ、新しい美的感覚を構築した実験的姿勢。