【ソロジャーナル】+VV0 ЄCHO(仮)プレイまとめ
これは、廃品漁りの青年が戦闘メカのAIを見つけたことで語られるジャーナリングRPG「+VV0 ЄCHO(仮)」
● 企画の経緯
企画の経緯として、Inktober2023もここ2〜3年の試み同様にMixさせたジャーナリングRPGを利用してお題を消化しようと企んでいたが、丁度9月に「Cemetery of Swords」で似たようなことをやったばかりだった。
じゃぁ、未来の私に真心を(仮)のように何作かMixさせるかっ!!と思い立って今回に至る。戦闘メック(AI)が絡んでくる作品を3つ程Mixしてみたが、うまく混ぜられなかった印象がある。音声ログ用のテキストと合わせると一ヶ月分のログを書いた気分ではあるが、inktoberとしては完走できなかったので……そこは残念。
あと、ヘクスシートを印刷したのだから、もっと地図制作に力を入れれば良かったなぁ。地図制作もまだ、探り探りの状態である。
Mixしたのは以下3作品
● 音声ログについて
自分で書いたテキストの下書きをCopilot in Windowsに解釈してもらって、TIdalCyclesという即興演奏用ライブコーディング環境の再勉強がてら記録した。
生成AIが、私のテキストをどう解釈したのかもネタバレしていこうと思う。
テキスト自体は、今回は見せないようにする。まぁ、ジャーナリングRPGの遊び方の実験と思っていただければ、幸い。
⚫︎ +VV0 ЄCHO(仮) プレイログまとめ
◾️ No.0
◾️ No.0-TRANSCRIPT
夢を見た。
俺はすごく小さくて、誰かの小指をギュッと掴んで海を見ていた。隣はパイロットスーツを着ていて顔が見えない。でも、祖父だと直感した。
パルス嵐が強すぎ。ウェブに繋げられないから紙に日記を書く事にした。今は“見限られた場所”の荒野。ここで漁れるジャンクで、3ヶ月分は稼ぎたかった。
◾️ 音声ログ.0 - 夢に見たものは
これは、廃品漁りの主人公が最初に見ていた夢を……機体乗りだった祖父も見ているという『繋がり』みたいなモノを表現したかった。そのため、生成AIがどんな解釈をするのかをテストするのも兼ねて最初の投稿が使われている。
setcps(150/60/4)
-- 夢のシーンを表現するメロディー
-- 小さくて高い音で、小指を掴む感じを表現
-- パイロットスーツの隣にいる祖父への思いを表現
d1 $ s "superpiano"
# n (irand 24 + 72)
# legato 1.2 # room 0.8 # gain 0.8 # sustain 4
|+| shape "0.3"
|+| delay "0.25"
|+| delaytime "0.125"
|+| delayfeedback "0.5"
-- パルス嵐のシーンを表現するノイズ
-- 強いパルス波で、ウェブに繋げられない感じを表現
d2 $ s "[[~ hc*16] [~ hc*16] ~ hc*16]/2" # gain "[1.2 [0.8 0.6] [0.4 0.2]]/2" # pan rand
|+| shape "[0.8 [0.6 0.4] [0.2 0]]"
|+| speed "~ <1 1 1 0.9> ~ 1"
-- 荒野でジャンクを漁るという、夢から現実へ戻ってくる感じを表現
d5 $ sound " ~ [~ ~ ~ house:5] ~ house:4" # speed "~ <1 1 1 0.9> ~ 1" # room "~ 1 ~ <0 0 0 0.3>"
◾️ No.1
◾️ No.1-TRANSCRIPT
溜め息が出る程の大雨。まだまだパルス嵐が収まらず、サーチ範囲が広がらなかった。しかも、暫定政府のスパイダー・スカベンジャー。ジャンクが潤沢な証拠だ。駆動音がウルサイが、川が流れているような音が聞こえる。
ヤツに踏み潰されない様に注意して漁っていたら、ブラックボックスを見つけたんだ。
◾️ No.2
◾️ No.2-TRANSCRIPT
3つのブラックボックスが回収できた。稼ぎには十分だと信じたいが、ここだと解析できないんだよなぁ。悪天候のため、足止め中。
信じられないが、自分のタグが反応している。ブラックボックスの1つから「Path Connected」と電子音声が聞こえてきた。いやいや、遺棄戦争時にMIAになったメックのAIだぞ?
◾️ No.3
◾️ No.3-TRANSCRIPT
第1004部隊だって。ブラックボックスにある小さなディスプレイには、確かに祖父の名前が表示された。こんな、運命のイタズラ的なことってある? 授業でも“見限られた場所”は、遺棄戦争の主戦場だと習った。
最後の作戦にて機体が大破。機密保持のため、AIユニットのみ機体から秘密裏に投棄されたようだ。
◾️ No.4
◾️ No.4-TRANSCRIPT
何か、AIから2文でお願い事をされてしまった。それ以降はアクションを見せないので、電力消費を抑えているのだろう。
どうしよう? ひとまず、廃材でアームターミナルを作ってみた。こんな適当な装置では、AIの稼働電力を補うことはできないかなぁ。無傷の動力源を積んだ機体……引き当てられるのか?
◾️ 音声ログ.1 - それは記録か自分の意思か
ここから、音声ログ編である機体乗りだった祖父の記録がスタートする。「- -」の方は、基本的には生成AIが付けたコメントを、コードを手直しする際に一緒に直している。正直手書き版とは対極的な絶望的な状況でのスタートとなる。生成された音は、淡々としていたけれども。
-- テンポを150BPMに設定
setcps(150/60/4)
-- たった数千人を乗せただけの方舟に囮として見捨てられた呆然とした様子を、ドラムやベースなどの低音サンプルで表現している
d1 $ stack[
s "bass" # n (irand 8) # gain 0.8,
s "[bd:2, sn:3, hh*4, cp*2]" # gain 0.7,
s "gabba" # gain 0.4 # speed (choose [0.5, 1, 2]) # delay 0.25 # delaytime 0.125
]
-- 現実に戻り始めるが、すでに仕込まれた神経言語のウィルスに侵食される様を表現するためにノイズを乗せている
d2 $ stack[
s "superpiano" # n (scale "minor" (slow 4 $ choose [0, 2, 5, 7])) # vowel "u a e" # gain 0.8,
s "arpy bass:2 bass:3 bass:4 bass:5" # n (choose [0,2,4]) # pan (rand) # gain 0.5,
s "noise2(5,16,[0,1,5,7])" # crush (irand 8) # gain 0.4
]
◾️ No.5
◾️ No.5-TRANSCRIPT
ようやく雨が止んで、視界が晴れた。AIが示した最初のポイントは……すごい光景が。
元々は軍事施設?朽ちた壁に囲まれた敷地の中央に、朽ち果てた機体が鎮座していた。その土手っ腹を黄金に輝く巨大な槍が貫いている。
地面には沢山の供物や篝火……祭壇まであった。
この槍を、信仰対象にしてるとか。
◾️ 音声ログ.2 - その黄金の槍は……
それは、囮として見限られた自分たちへ向けられた憎悪。降ってきたのは、黄金の大質量兵器だった。激しい音にならなかったのは、やはり驚き。どこか現実を受け入れられない感が出ているような気がする
-- テンポを150BPMに設定
setcps(150/60/4)
-- 神経言語ウイルスの侵食を表現するパターンを、僅かに聴こえるようにして気づかれにくく侵食が広がっていく様を表現している
d4 $ every 5 (iter 4) $ every 4 (stut 8 0.5 0.8) $ s "[future:1 future:3]*3 [~ future:2]" # n (range 0.5 1.5 $ slow 12 sine) # gain "0.5 0.6"
-- 黄金の大質量射出兵器を表すパターン。兵器としての恐ろしさではなく、それはウィルスと同様に穏やかに落ちてくる様を表現していく。
d2 $ every 8 (slow 2) $ s "metal*4" # n (irand 8) # gain "0.7 0.8"
-- 戦友がフラグ回収をしたことを表すパターン。はっと気づく感じに。
d1 $ every 4 (rev) $ every 2 (chop 2) $ s "bd*2 [sn:2 sn:3] [~ sn]" # gain "0.8 0.9"
-- 槍に貫かれて死ぬ巨人や空中戦艦を表すパターン。爆発音のサンプルがないため、ドラムのパターンで連続した爆発を表現している。
d3 $ every 6 (jux rev) $ every 3 (density 2) $ s "[gabba:2 gabba:3]*2 [gabba:4 ~]" # n (run 16) # gain "0.6 0.7"
-- 神経言語ウィルスに対抗すべく、戦闘支援AI「GA2S5」の学習能力に期待を表すパターン
d5 $ every' 7 6 (ply "1 1 1 12" . (|* gain 0.9)) $ sometimesBy 0.4 (jux(rev)) $ sometimesBy 0.1 (density 2) $ s "[arpy arpy:1 arpy:2 arpy:3]*2" # pan (range 0.3 0.7 rand)
◾️ No.6
◾️ No.6-TRANSCRIPT
ようやく濾過した飲料水が、5本分溜まった。濾過剤が無かったから、サバイバルキットを初めて使ったよ。そうそう、ゆっくりと水がポタポタと落ちているとき、音楽みたいな音を聴いたんだ。音楽というより、爪弾いている感じ。
発信源は、ブラックボックス。質問してみたら、通知音が1度だけ鳴った。
◾️ 音声ログ.3 - 声はコップに滴り落ちず
神経言語ウィルスが、自分の話す言葉だけではなく視覚認識情報すらも改竄をしていく……途方に暮れる音声ログ。ここから、生成AIによる解釈の自由奔放具合が増していく(笑
解釈された変数と関数の内容を理解して、実行可能なコードへ書き戻すのに苦労した。
-- テンポを150BPMに設定
setcps(150/60/4)
-- 通信回線は繋がるが市民軍が何を話しているかわからないことを表現するために、音を短くつまびくようにノイズを乗せている。
d1 $ stack [
every 15 (rev . chop 4) $ s "arpy bass:2 bass:3 bass:4 bass:5" # n (choose [0,2,4]) # pan (rand) # gain 0.5,
every 10 (spread fast[2,4]) $ s "noise2" # n (irand 7) # gain 0.6
]
-- 自分たちは方舟に見限られたことを伝え続けるが無駄のようだということを表現するために、切迫感や悲しみを感じさせるメロディーやドラムを表現している。
d2 $ stack [
every 8 (density 2 . striate' 16 (1/16)) $ s "bleep" # cut 1 # gain 0.5 # pan (range 0.3 0.7 rand),
every 12 (jux rev) $ stut' 4 0.065 (|+ speed (choose[2,4,-1.8,-1,2,5])) $ s "rave2" # cut 2 # gain 0.7 # pan (range (-1) 1 rand),
every 6 (iter 4 . (# speed "-1")) $ n (scale "minor" "<[0 2 3] [4 5] [6 7] [8]>") # s "supersaw" # cut 3 # gain 0.6 # legato 1.2,
every 4 (degradeBy 0.6) $ s "[bd sn cp bd]*2" # gain 0.8
]
-- 誰かが墜落した場所には旨いコーヒー店があったという思い出すイメージを表現したパターン
d3 $ stack [
every 30 (const silence) $ s "cpu2" # cut 4 # gain 0.7 # pan (range (-0.5) (-0.3) rand),
every 30 (smash 4 [1, 2, 3, 4]) $ s "em2" # cut 5 # gain 0.9 # pan (range (0.3) (0.5) rand)
]
◾️ No.7
◾️ No.7-TRANSCRIPT
また、雨だ。
雨季では無いはずなのに、天候が安定しない。でも、不思議なことにセンサー類や電波はよく通るんだ。調べるべき次のポイント候補が、複数表示される。
廃材に落ちる雨音を聴いていたら、TOADの鳴き声が聞こえた。遺伝子拡張農作……何だっけかな?蛙ぽい旧型ドローンは、割と高値が付く。
◾️ 音声ログ.4- アナログな方法で覆す方法
広がる戦火、理解されない言葉、絶望しかなかったのに、戦友の僅かな行動が希望をくれたログ。この音声ログの後、祖父の機体は損傷する
-- テンポを150BPMに設定
setcps(150/60/4)
-- 農作物の畑が、戦火に飲み込まれる音を表現
d1 $ every 4 (rev) $ s "[fire*8,claus*8,control*8,ulgab*8]/2" # gain 0.7
-- 戦火の音を表現するために、爆発音や銃声のようなサンプルをを重ねる
d2 $ stack [
every 3 (density 2) $ s "[cosmicg,cosmicg*2,cosmicg*3,cosmicg*4]/4" # gain 0.4,
every 5 (jux rev) $ s "[short,sid,sine,speedupdown]/2" # gain 0.8
]
-- 悲しみや怒りの感情を表現するために、ノイズやディストーションをかけたシンセサイザーの音を使う。
d4 $ every 6 (slow 2) $ s "superpiano" # n (irand 12) # gain 0.6 # crush 4 # shape 0.7
-- 勇敢な戦友の行動や最期を表現するためのパターン
d5 $ stack [
every 8 (rev) $ s "[miniyeah,mash2]/4" # gain 0.5 # pan rand,
every 12 (density 2) $ s "moog/4" # gain 0.9 # speed rand
]
-- 「私は敵ではありません」のモールス符号表現
d7 $ s "casio/1.3 blip/4 blip/4 blip/4 ~ ~ blip/4 casio/1.3 blip/4 casio/1.3 casio/1.3 blip/4 blip/4 ~ ~ casio/1.3 blip/4 blip/4 blip/4 ~ ~ casio/1.3 casio/1.3 blip/4 casio/1.3 casio/1.3 casio/1.3 casio/1.3 blip/4 ~ ~ casio/1.3 blip/4 blip/4 casio/1.3 blip/4 casio/1.3 casio/1.3 casio/1.3 blip/4 ~ ~ blip/4 casio/1.3 blip/4 casio/1.3 blip/4 ~ ~" # gain 0.5
◾️ No.8
◾️ No.8-TRANSCRIPT
マークされたポイントの1つは、トンネルの門の役目を担っているような機体の残骸だった。半壊した胴体と片腕と頭部のみ。後からオブジェとして設置されたのかと思いきや、残骸の頭部から抜きだされた映像は……宛ら地獄だった。
味方の機体が、背後から攻撃された瞬間が映像の最後。
それが、探してる機体!?
◾️ 音声ログ.5 - それでも、絶望は背後からやってくる
前回の音声ログ直後に、背後からの攻撃が直撃する(ゲームシステム的に)。ほんの少し気を失ったという状態の覚醒からこのログは始まる。この回は、生成AIがとても流暢に膨大なコメントを残したので思わず二度見してしまった。
-- テンポを150BPMに設定
setcps (150/60/4)
-- 「私は敵ではありません」のモールス符号表現
d7 $ s "casio/1.3 blip/4 blip/4 blip/4 ~ ~ blip/4 casio/1.3 blip/4 casio/1.3 casio/1.3 blip/4 blip/4 ~ ~ casio/1.3 blip/4 blip/4 blip/4 ~ ~ casio/1.3 casio/1.3 blip/4 casio/1.3 casio/1.3 casio/1.3 casio/1.3 blip/4 ~ ~ casio/1.3 blip/4 blip/4 casio/1.3 blip/4 casio/1.3 casio/1.3 casio/1.3 blip/4 ~ ~ blip/4 casio/1.3 blip/4 casio/1.3 blip/4 ~ ~" # gain 0.5
-- 君の声で、意識が戻った。モヤモヤと覚醒を表現するため
-- slowspreadやrandcatなどの関数を使って、
-- サンプルの再生速度や順序を変化させています。
d1 $ slowspread ($) [slow 2, slow 4, id] $ randcat [
s "mp3*8",
s "notes*4",
s "[mp3*2, notes]*2",
s "notes:1*8"
] # gain 0.8
-- ブースターがやられて回避できないという焦りを表現するために、
-- everyやchopなどの関数を使って、
-- サンプルの再生タイミングや長さを変化させています。
d2 $ stack [
every 4 (chop 4) $ s "dsynth:2*4",
every 3 (rev) $ s "arp:0(3,8)",
every 5 (iter 2) $ s "arp:1(5,8)"
] # gain 0.7
-- 抵抗することに意味があるのかという疑問と、
-- 君との別れを思い出すことで生じる感傷を表現するために、
-- シンセやピアノなどの音色を使っています。
d3 $ stack [
s "supersaw" # n "[c g a f]*2" # gain 0.9 # pan (-0.5),
s "superpiano" # n "[~ [c g] ~ [a f]]" # gain 0.9 # pan 0.5
]
-- 死ぬことを拒否し、望みに賭けて、言葉を伝えようとするという決意と行動を表現するために、
-- ドラムやベースなどのリズミカルなサンプルを使っています。
-- ドラムは、闘志や勇気を示し、ベースは、力強さやエネルギーを示しています。
-- また、densityやfastなどの関数を使って、サンプルの再生密度や速度を変化させています。
d4 $ stack [
density 2 $ s "bd*2 [~ bd] bd*2 [~ bd/2]" # gain 0.7 , -- ベースドラム
density 2 $ s "[~ sn] sn cp*2 [~ cp]" # gain 0.7 , -- スネアドラムとクラップ
density 2 $ s "~ hh*8 [~ hh/3]" # gain 0.7 , -- ハイハット
fast 2 $ s "bass:1(3,8)" # n (run 8) # cut 1 # gain 0.6 # pan (-0.5), -- ベース
fast 4 $ s "bass:2(5,8)" # n (run 16) # cut 2 # gain 0.5 # pan 0.5 -- ベース
]
◾️ No.9
◾️ No.9-TRANSCRIPT
AIがゆっくりと、ドット抜けした文字と奇妙な音を織り交ぜて、祖父の話を表示し始めた。まるで、思い出を噛み締めながら……。
そういえば、父は祖父の話をしなかった。祖父のことは何も覚えていないって話していたっけ。
AIが、祖母の話をして欲しいと表示した。何だか、恋敵の情報を探っている感じが……。
◾️ 音声ログ.6 - 君に別れを告げたはずなのに
ダメージを負った機体を動かしながら、思いつく限りの知り合いへのメッセージを残していく回。メッセージを録音しつつも、自分が敵ではないアピールも以前続けているが……攻撃は止む様子を見せない。前回のコメントの熱弁さはどうした!!?と思わず画面に文句を言った(w
-- テンポを150BPMに設定
setcps (150/60/4)
-- 「私は敵ではありません」のモールス符号表現
d7 $ s "casio/1.3 blip/4 blip/4 blip/4 ~ ~ blip/4 casio/1.3 blip/4 casio/1.3 casio/1.3 blip/4 blip/4 ~ ~ casio/1.3 blip/4 blip/4 blip/4 ~ ~ casio/1.3 casio/1.3 blip/4 casio/1.3 casio/1.3 casio/1.3 casio/1.3 blip/4 ~ ~ casio/1.3 blip/4 blip/4 casio/1.3 blip/4 casio/1.3 casio/1.3 casio/1.3 blip/4 ~ ~ blip/4 casio/1.3 blip/4 casio/1.3 blip/4 ~ ~" # gain 0.5
-- 損傷した機体を動かす様を表現したパターン
d1
$ slow 2
$ sound "[bd*2 [~ sn/2] cp*2 [~ sn/3] cp*4 [~ sn/4], bd*3 [~ sn/2] cp*2 [~ sn/3] cp*4 [~ sn/4]]"
# crush 3
# gain 0.7
-- いろいろな方法で知り合いにメッセージを送る様子を表現したパターン
d2 $ sound "[future*8, mute(3,8)]"
# vowel "[a e i o u]*4"
# n "[0, 2, 4, 7]"
-- 君へのメッセージを残しつつ、物心ついていない息子へ残す言葉のチョイスを悩みを表現したパターン。長々しいメッセージにしない配慮は「#delay」変数に込めている
d3 $ stack [
every 4(jux(iter 7)) $ sound "gabba*4" # gain 0.5,
every 4(rev) $ sound "[gabba(5,8), gabba(3,8)]" # delay 0.5 # gain 0.8
]
-- 自分の息子への簡単なメッセージを表現したパターン
d5 $ sound "arpy*8"
# n "0 4 7"
◾️ No.10
◾️ No.10-TRANSCRIPT
ドット抜けした文字に始まり、ブラックボックスの調子が悪くなり始めた? 心配していた矢先、地図とマークしていたポイントが消えてしまう。でも、オーロラが見えたので、パルス嵐の再来が犯人だ。
少しの間、廃材漁り相手のコミューンの世話になる。お、見知ったサインだ。一緒に祖母に怒られたことがある奴。
◾️ 音声ログ.7 - 恐ろしい前兆
次の異変へ向かう、嵐の前の静けさのような回……と個人的には思っていた。だが、出てきた解釈はそんなことはなかった(w 「オーロラ」という文字を音への解釈がこうなるのかーとも思った回になる。でも、しっかりとウィルスによって狂っていく。
-- テンポを150BPMに設定
setcps (150/60/4)
-- 「私は敵ではありません」のモールス符号表現
-- パルス嵐の音を表現するために、ノイズとビープのサンプルを使う
d1 $ stack [
-- ノイズをランダムに変化させる
s "noise2" # n (irand 8) # cut 1 # gain "0.8",
-- ビープを高速で鳴らす
s "mp3*8" # speed "1.5 2 2.5 3" # gain "0.7",
s "casio/1.3 blip/4 blip/4 blip/4 ~ ~ blip/4 casio/1.3 blip/4 casio/1.3 casio/1.3 blip/4 blip/4 ~ ~ casio/1.3 blip/4 blip/4 blip/4 ~ ~ casio/1.3 casio/1.3 blip/4 casio/1.3 casio/1.3 casio/1.3 casio/1.3 blip/4 ~ ~ casio/1.3 blip/4 blip/4 casio/1.3 blip/4 casio/1.3 casio/1.3 casio/1.3 blip/4 ~ ~ blip/4 casio/1.3 blip/4 casio/1.3 blip/4 ~ ~" # gain 0.5
] # room 0.5 # size 0.5
-- 方舟が宇宙に飛び立つ音を表現するために、2種類のサンプルを使う
d2 $ stack [
-- ロケットの発射音のようなサンプルを鳴らす
s "nano002:3" # speed "0.5" # gain "0.7",
-- ジェットの飛行音を表現したサンプルを鳴らす
s "juno" # speed "0.8" # gain "0.6"
] # room 0.4 # size 0.4
-- オーロラの美しさと神秘性を表現するために、シンセとベルのサンプルを使う
d3 $ stack [
-- シンセの和音を鳴らす
s "superpiano" # n "<c'maj7 e'min7 f'maj7 g'maj7>" # gain "0.8",
-- ベルの旋律を鳴らす
s "superfork" # n "<[c d e g] [e f g a] [f g a c] [g a b d]>" # gain "1.0"
] # room 0.6 # size 0.6
-- 違和感に気がつくタイミングを表現するために、ドラムとベースのサンプルを使う
xfade 3
$ sometimesBy 0.2 (rev)
$ whenmod 5 3 (slow 2)
$ every 4(0.125 <~)
$ often(jux(iter 7))
$ stack [
-- ドラムのリズムを鳴らす
s "[bd sn cp]*2 [bd sn cp bd]" # gain "1",
-- ベースのラインを鳴らす
s "bass" # n "<[c3 c3 e3 g3] [e3 e3 g3 a3] [f3 f3 a3 c4] [g3 g3 b3 d4]>" # gain "0.9"
] # room 0.7 # size 0.7
◾️ No.11
◾️ No.11-TRANSCRIPT
ブラックボックスが改善されるまで、やはり数日を要した。今回の稼ぎ様々で、コミューンで一旦換金できたしね。
見知ったサインを目にしたからか、台所を借りて祖母から母に受け継がれた味を作ってみた。
マサラの混ぜ合わせ唄とか、久しぶり。スパイスを挽ながら、ブラックボックスの稼働音を聞いたよ。
◾️ 音声ログ.8 - AIが思い出した違和感
神経言語ウィルスが、更なる猛威を振るう回となる。祖父は視覚だけでなく、記憶や経験という部分までも改竄されてしまった。侵食具合のクロスフェードは、さらなる攻撃に晒された合図となる。
setcps (150/60/4)
-- 不協和音とノイズの不信感を表現したパターン
d1 $ stack [
s "bd*2 [~ bd] bd*2 [~ bd]/2",
s "~ [~ hc] ~ [~ hc]/3",
chop 16 $ sound (samples "arpy*8" (run 16)),
s "[~ mp3*4]/2",
chop 4 $ sound "noise:0(5,8)"
] # gain "0.8"
-- 戦友たちが奇妙なことを伝え始めた様子を逆再生やピッチシフトで加工して表現。
d2 $ stack [
sometimes (rev) $ slow 2 $ sound "[nano000:1, nano002:2]*2" # speed "0.8 1.2",
sound "[voodoo:0, ~]/2" # speed "0.5",
sound "gtr:0(5,8)" # n (irand 8) # speed "0.75"
]
-- 思わず叫びたくなった感情を表現したパターン
xfade 2 $ stack [
sound "[~ sn, ~ cp]*3 [sn cp]",
sound "~ [casio:1 ~ casio:2 ~]"
] # gain "0.7"
-- 飛び立つ音の表現を前回のコードから流用。
d3 $ stack [
s "nano002:3" # speed "0.5" # gain "0.8",
s "juno" # speed "0.8" # gain "0.7"
] # room 0.4 # size 0.4
-- 神経言語ウィルスの侵食具合をクロスフェードで被せて表現している
xfade 3
$ sometimesBy 0.2 (rev)
$ whenmod 5 3 (slow 2)
$ every 4(0.125 <~)
$ often(jux(iter 7))
$ stack[
sometimes (rev) $ slow 2 $ sound "[nano000:3, nano002:4]*2" # speed "0.8 1.2",
sound "[voodoo:0, ~]/2" # speed "0.5",
sound "gtr:0(5,8)" # n (irand 8) # speed "0.75"
]
◾️ No.12
◾️ No.12-TRANSCRIPT
標高、高っ!?
それが、昇降機初乗りの感想。巨人兵器の残骸郡が、まるで波のように山の方へ押し寄せている様子が見えた。墓場? 太古の芸術品……?
戦争の爪痕。
と、AIが途切れ途切れ話し出す。
残骸の海に、AIが探している祖父の機体が無いそうだ。
保護措置とはいえ、離れ離れは不本意らしい。
◾️ 音声ログ.9 - ウィルスを超えて
またも攻撃が被弾し、ブラックアウトから覚醒する回。あと1度か2度で完全に機体が大破してしまう状態にまで追い込まれてしまった。焦りと不安と生命維持装置が不具合を起こし始めた息苦しさ……。今回はやたらと多重チャンネル構造にしたがって、生成AIがstack関数を一度も使ってくれなかった。
-- 想い人が料理中に口ずさんでいる歌を表現するパターン
d1 $ stack[
s "bd(3,8)" # gain "0.8",
s "[hh*4, hh*4, hh*4, ~ hh]" # gain "0.6",
s "[~ sn, ~ sn, sn*2]" # gain "0.7",
s "[~ cp, cp(3,8), ~ cp, cp(5,8)]/2" # gain "0.5" # speed "1 0.9 1 1.1",
s "latibro(5,8)" # n (irand 8) # speed "0.55" # gain "0.7"
]
-- 正気を保つために、同じ歌を真似て歌おうとする様子を表現するパターン
xfade 1 $ stack[
s "[~ glitch:2/3, ~ glitch:1/3, glitch:2/3 ~]" # gain "0.8" # speed "1 0.8 1.2" # pan "0.5 -0.5 0",
s "[~ noise:2/3, ~ noise:1/3, noise:2/3 ~]" # gain "0.7" # speed "1 0.9 1.1" # pan "-0.5 0.5 0"
]
-- 生命維持装置がダメージを受けて、息苦しさと絶望感を感じ始める様を表現するパターン
d3 $ stack[
s "{bd*2 [~ sn/2] cp*2, [~ sn/3] cp*4 [~ sn/4], bd*3 [~ sn/2] cp*2, [~ sn/3] cp*4 [~ sn/4]}/2" # crush 3 # gain "0.5",
s "[~ metal:2/3, ~ metal:1/3, metal:2/3 ~]" # gain "0.6" # speed "1 0.85 1.15" # pan "-0.5 0 -0.5",
s "[~ breath:2/3, ~ breath:1/3, breath:2/3 ~]" # gain "0.8" # speed "1 0.9 1.1" # pan "0 -0.5 0",
s "[~ mp3:2/3, ~ mp3:1/3, mp3:2/3 ~]" # gain "0.7" # speed "1 0.95 1.05" # pan "-0.5 0 -0.5"
]
-- 戦闘支援AI「GA2S5」から読めるメッセージが返ってきたことで、少しの希望を見出す様を表現するパターン
xfade 1 $ stack[
s "[~ speech:1/3, ~ speech:6/3, speech:7/3 ~]" # gain "0.9" # speed "1 1 1" # pan "-0.5 -0.5 -0.5",
s "[~ blip:2/3, ~ blip:1/3, blip:2/3 ~]" # gain "0.8" # speed "1 1 1" # pan "-0.5 -0.5 -0.5",
every' 7 6 (ply "1 1 1 12" . (|* gain 0.9)) $ sometimesBy 0.4 (jux(rev)) $ sometimesBy 0.1 (density 2) $ s "[arpy arpy:1 arpy:2 arpy:3]*2" # pan (range 0.3 0.7 rand)
]
◾️ No.13
◾️ No.13-TRANSCRIPT
自分が目にした光景に、思わず息を飲んだ。多分、宇宙戦艦が墜落した後に残った船尾部分を……強固な城のように活用している。突き刺さった戦闘メカの腕や足の残骸を支柱に、テントや家があちこちに建っていた。
住人達の言葉は、どれも初めて聞く。AIが、祖父も似たような言葉を使うと教えてくれた。
◾️ 音声ログ.10 - 信じられない目の前の光景
自分たちが何処へ向かって戦火を逃れようとしているかが明らかになる回。それは偶然でも何でもなくて、囮になった場合の計画が練られていた。希望の火が強まってもそれは一瞬なこと。生成AIはこの一連のテキストを「不穏・計画者の裏切り」と判断していた。個人的には違うんだけどなぁ。
-- テンポ設定
setcps (150/60/4)
-- 代表的なスケールは、メジャースケール(major)・リディアンスケール(lydian)・メジャーペンタトニックスケール(majPent)・ナチュラルマイナースケール(minor)・ハーモニックマイナースケール(harmonicMinor)・メロディックマイナースケール(melodicMajor)・ドリアンスケール(dorian)・フリジアンスケール(phrygian)・ミクソリディアンスケール(mixolydian)・ディミニッシュスケール(diminished) など。
-- 安心感や希望を表すために、明るく穏やかなメロディーと和音を利用している
d1 $ stack [
n (scale "major" "<0 2 4 7 9>") # s "superpiano" # gain "1.0",
n (scale "minor" "<0 4 7>") # s "superpiano" # gain "0.8"
] # legato 1.2 # room 0.5 # delay 0.25 # delaytime 0.125
|+ speed (slow 8 $ range 0.1 1.5 sine)
|+ pan (slow 4 $ sine)
|+ shape (slow 8 $ range 0.2 0.8 $ sine)
|+ end (slow 8 $ range 0.5 1 $ sine)
|+| vowel "[a e i o u]*4"
-- |+ gain (density "<0.5 [1.0 0.6]>" $ range 0.8 1.2 sine)
# cut 1
-- 電子音とノイズ。宇宙船の通信やナビゲーションを表すために、電子音やノイズを使いました。また、ガイドビーコンの信号を表すために短いビープ音を繰り返す。クロスフェードさせることで、心情と現実を入れ替える。
xfade 1 $ stack [
s "[~ [~ glitch:1]*2]*2 [~ glitch:2]*4" # gain "0.8",
s "[~ sine]*3 [sine ~]*2 [sine ~ ~ ~]" # gain "0.6"
] # speed "<1 0.5 0.75 1.25>" # cut 2
|+ pan (slow 2 $ range 0.1 1 rand)
|+ shape (slow 4 $ range 0.5 1 $ rand)
|+ end (slow 4 $ range 0.5 0.8 $ rand)
|+| vowel "[a o i u e o]*8"
-- |+ gain (density "<1 [1.0 0.6]>" $ range 0.8 1.2 rand)
-- 不協和音と不安定なリズム。ガイドビーコンを受信している様子を表現
d3 $ stack [
n "<[~ [~ f+2]*2]*2 [~ f+3]*4>" # s "superpiano" # gain "0.7",
n "<[~ [~ f+6]*2]*2 [~ f+7]*4>" # s "superpiano" # gain "0.7",
n "<[~ [~ f+8]*2]*2 [~ f+9]*4>" # s "superpiano" # gain "0.7"
] # legato "<[1.5 0.75] [0.75 1.5]>"
|+| speed "<[1 -1] [0.5 -0.5]>"
|+ pan (slow 3 $ range 0.1 1 rand)
|+ shape (slow 3 $ range 0.5 1 $ rand)
|+ end (slow 3 $ range 0.5 1 $ rand)
|+| vowel "[i e o u a]*12"
-- |+ gain (density "<0.5 [1.0 0.6]>" $ range 0.8 1.2 rand)
# cut 3
-- 歪んだ声と断片的な言葉。自分たちの預かり知らずところで亡命の話が進んでいた事に感ずる不信感などが織り混ざっている様を表現
d4 $ stack [
s "[[gabba gabba gabba gabba] ~ ~ ~ ~ [gabba gabba gabba gabba] ~ ~ ~]" # gain "0.6",
s "[[hh:3 hh:4 hh:5 hh:6] ~ ~ ~ ~ [hh:6 hh:5 hh:4 hh:3] ~ ~ ~]" # gain "0.4"
] # speed "<[0.75 -0.75] [0.5 -0.5]>"
|+ pan (slow 6 $ range 0.1 1 rand)
|+ shape (slow 6 $ range 0.5 1 $ rand)
|+ end (slow 6 $ range 0.5 1 $ rand)
|+| vowel "[a e i o u]*16"
# cut 4
-- 驚きや恐怖を表すために、高音や爆発音を使いました。また、旗艦の崩壊を表すために、音量やピッチを急激に下げました。
xfade 1 $ stack [
s "[~ sine sine sine sine sine sine sine sine]" # gain "0.8",
s "[~ bd bd bd bd bd bd bd bd]" # gain "0.8"
] # speed "<[32 -32] [16 -16]>"
|+ pan (slow 12 $ range 0.1 1 rand)
|+ shape (slow 12 $ range 0.5 1 $ rand)
|+ end (slow 12 $ range 0.5 1 $ rand)
|+| vowel "[a e i o u]*32"
|+ gain (density "<0.5 [1.0 0.6]>" $ range 0.0 0.5 rand)
◾️ No.14
◾️ No.14-TRANSCRIPT
◾️ 音声ログ.11 - 悪あがきの決意
祖父の機体が更なる攻撃にさらされた回。そして、誰がこんな追撃を仕掛けてきたのかも判明する。今回の生成AIは日本語で質問しても、必ず英語で返答を返してきた。物語が終盤に差し迫ってきたのを感じたかのように音が派手になってきたような気がする(あくまで気がするだけ
-- テンポ設定
setcps (150/60/4)
-- define a pattern of samples for the impact of the attack on the body
d1 $ stack [
s "[~ sine sine sine sine sine sine sine sine]" # gain "0.8",
s "[~ bd bd bd bd bd bd bd bd]" # gain "0.8"
] # speed "<[32 -32] [16 -16]>"
|+ pan (slow 12 $ range 0.1 1 rand)
|+ shape (slow 12 $ range 0.5 1 $ rand)
|+ end (slow 12 $ range 0.5 1 $ rand)
|+| vowel "[a e i o u]*32"
|+ gain (density "<0.5 [1.0 0.6]>" $ range 0.0 0.5 rand)
xfade 1 $ stack [
sound "[bd(3,8), sn(3,8,3)]",
sound "~ snare*2 clap*2",
sound "bd*2 ~ sn*2",
sound "~ snare*2 ~ clap*2"
] # gain "1.2"
-- define a pattern of samples for the right arm being blown off
d2
$ whenmod 8 4 (jux(rev))
$ sound "[gabba*4 crash, metal*4 gabba]" # gain "1.5"
-- define a pattern of samples for the question of who predicted the bullet trajectory
d3 $ stack [
sound "[arpy(3,8), ~ arpy(5,8)]",
sound "[arpy(7,8) ~, ~ arpy(9,8) ~]"
] # gain (range 0.6 0.8 sine)
-- define a pattern of samples for the answer that it was the Ark
d4 $ stack [
sound "[pluck(3,8), ~ pluck(5,8)]",
sound "[gtr(3,8), ~ gtr(5,8)]",
sound "[pluck(7,8) ~, ~ pluck(9,8) ~]",
sound "[gtr(7,8) ~, ~ gtr(9,8) ~]"
] # gain (range 0.6 0.8 sine)
-- define a pattern of samples for the tension of the operation continuing
d5 $ stack [
sound "[cp(5,8), ~ cp(7,8)]",
sound "[bass(3,8), ~ bass(5,8)]",
sound "[cp(9,8) ~, ~ cp(11,8) ~]",
sound "[bass(9,8) ~, ~ bass(11,8) ~]"
] # gain (range 0.4 0.6 sine)
xfade 1 $ stack [
n (scale "mixolydian" "<0 2 4 7>") # s "superpiano" # gain "1.0",
n (scale "diminished" "<1 3 5 9>") # s "superpiano" # gain "0.8"
]
|+ speed (slow 8 $ range 0.1 1.5 sine)
|+ pan (slow 4 $ sine)
|+ shape (slow 8 $ range 0.2 0.5 $ sine)
-- |+ end (slow 8 $ range 0.5 1 $ sine)
|+| vowel "[a e i o u]*2"
◾️ No.15
◾️ No.15-TRANSCRIPT
ダガーの刃を眺めていたら、脳裏を過ぎるものがあったんだ。
このAIは最初から、目的の機体を探すべき場所がわかっていたんじゃないか?
明らかに動作不良が目立ち始めた様は、トラウマを刻み込まれた場所へ向かおうとする人間に似ていた。
何故か私の中で、真偽を確認する事への躊躇いが生じている。
◾️ 音声ログ.12 - 残すメッセージ、残さないメッセージ
いよいよ、行動不能になる。支援AIが機密保持のためにパージされた。またひとりぼっちのコクピット内で、最後のメッセージを本体メモリに録音する。聴いてもらえたらラッキーぐらいのノリで。そういえば、後半はよくクロスフェードを使ってる印象。
-- テンポを150BPMに設定
setcps (150/60/4)
-- 機体のダメージを表すノイズとビープ音(これは使い回し)
d1 $ stack [
sound "[bd(3,8), sn(3,8,3)]",
sound "~ snare*2 clap*2",
sound "bd*2 ~ sn*2",
sound "~ snare*2 ~ clap*2"
] # gain "0.8"
xfade 1 $ stack [
s "mp3*8" # gain "0.5 0.6 0.7 0.8 0.9 1 0.9 0.8",
s "bd*4 [~ bd] [~ bd/2] [~ bd/3]" # gain "0.7" # pan(rand)
]
-- GA2S5がパージされるシーンを表す高音と低音のコントラスト
d2 $ slow 16 $ s "{[arpy(3, 8) arpy(3, 8, 3)]*4, [gabba(3, 8) gabba(5, 8, 4)]*4}" # n (irand 12) # gain "0.9"
xfade 1 $ stack [
s "mp3(3, 8)" # gain "0.4",
s "{[~ bd] [~ bd/2] [~ bd/3]}" # gain "0.4" # pan(rand)
]
xfade 2 $ stack[
s "{bd*2 [~ sn/2] cp*2, [~ sn/3] cp*4 [~ sn/4], bd*3 [~ sn/2] cp*2, [~ sn/3] cp*4 [~ sn/4]}/2" # crush 3 # gain "0.5",
s "[~ metal:2/3, ~ metal:1/3, metal:2/3 ~]" # gain "0.6" # speed "1 0.85 1.15" # pan "-0.5 0 -0.5",
s "[~ breath:2/3, ~ breath:1/3, breath:2/3 ~]" # gain "0.8" # speed "1 0.9 1.1" # pan "0 -0.5 0",
s "[~ arpy3:2/3, ~ arpy:1/3, arpy:2/3 ~]" # gain "0.7" # speed "1 0.95 1.05" # pan "-0.5 0 -0.5"
]
-- AIがパージされる前に質問された事に対する返答のメッセージを表現したパターン
d5 $ s "supersaw" # n "<c'maj e'maj g'min a'min>" # vowel "<a e i o u>" # gain "0.8"
xfade 5 $ s "supersaw" # n (run 4) # vowel "<a e i o u>" # gain "0.6"
-- 最後のメッセージを表現したパターン
xfade 5 $ s "metal*8" # n (run 8) # gain "1.2" # speed "-1"
◾️ No.16 & End
◾️ No.16 & End -TRANSCRIPT
(No.16)
朽ちた祖父の機体は、以前見た槍で右腕が砕かれ、右脚が貫かれている。槍に寄りかかる様に、自然に蝕まれた姿で直立していた。
AIの指示で繋ぎ直すと、機体が僅かに息を吹き返す。
何か感情の乗った音楽が聴こえた。
連れて来てくれて、本当にありがとう
その言葉を最後に、AIは何も表示しなくなった。
(End)
私は遺物を動かした愉快犯として、住人達にこっぴどく怒られた。その後に、ひどく感謝された。
何で? と思ったら、多くが祖父に命を救われたらしい。正直なところ現実味がなかった。もっと、祖父の事を知れたら……。アームターミナルに、注釈付きの音楽ファイルが保存されていた。
AIからの贈り物か。
◾️ 音声ログ.13 - AIが最後に聞いたメッセージ
これは支援AI「GA2S5」が、機体に接続されたことで聴けた最後のメッセージ。廃品漁りの主人公は、ジャーナリングRPGのプレイ外……帰路の中でこれを聴くことになる。これだけは、きっとこそばゆい想いになったのではないだろうか? また、遺棄戦争について興味をもったかは……どうなんだろうなぁ。
生成AIがこれまでとは違った様子でコードを生成してきたのも、驚いた。この最後のコードだけはあまり手を加えていない。
-- テンポは80BPMに設定
setcps (80/60/4)
-- 機体がかすかに目覚めていく様を表現するパターン
d1
$ whenmod 8 7 ((#lpf (rangex 200 4000 $ saw)). (# lpq 0.4))
$ whenmod 16 15 (# gain 0)
$ swingBy(1/6) 8
$ stack [
s "bd(3,16)" # gain 0.8, -- ベースドラム
s "cp(5,8)" # gain 0.6, -- クラップ
s "[~ hh]*4" # gain 0.4, -- ハイハット
s "sn(3,8)" # gain 0.7, -- スネアドラム
s "metal*8" # n (run 8) # gain 0.5 # speed "-1"
] # lpf 8000 # shape 0.2 # coarse 3
-- シンプルなコード進行を作る。支援AIが機体へ再接続されたことでデータをダウンロードしている様子を表現するパターン
d2
$ whenmod 16 15 (# leslie 0.9)
$ whenmod 8 7 (# hpf 400)
$ slow 4 $ s "superpiano" # n "<[c3 e3 g3] [d3 f3 a3] [e3 g3 b3] [f3 a3 c4]>" # gain 0.5 # room 0.8 # sz 0.7 # leslie 0.5 # coarse 3 # hpf 150
-- サポートをしてくれたことへの感謝を一行目のsuperpianoで、ウィルスによって改変された言葉を理解してくれたことでもらった勇気を二行目のsupersawで、3行目のSupersawまでをすべて重ねて最後に伝える言葉を表現している
d3 $ stack [
s "superpiano" # n "<[c5 e5 g5] [d5 f5 a5] [e5 g5 b5] [f5 a5 c6]>" # gain 0.6,
s "supersaw" # n "<[c6 e6 g6] [d6 f6 a6] [e6 g6 b6] [f6 a6 c7]>" # gain 0.7,
s "supersaw" # n "<[c7 e7 g7] [d7 f7 a7] [e7 g7 b7] [f7 a7 c8]> <[g6 b6 d7] [a6 c7 e7] [b6 d7 f7] [c7 e7 g7]>" # gain 0.8
] # lpf 8000 # shape 0.2 # coarse 3
よろしければ、サポートをお願いいたします。 紹介もチョイスも未熟なところがありますが、“こういった遊びがあるんだー”というのをお伝えし続けられればと思います。