今日はKinoを弄っていました。
— phi16 (@phi16_) 2020年11月16日
これは唯のメモ書きをしていた様子を撮っただけなんですが想像以上にふぁぼが来た。わかるよ。わかる。
実際こうやって好きなところで「考える作業」が出来るのはめちゃくちゃ良いです。図書館からはすぐ水路があるので飽きたらぱーっと水上走り回ったりしてました。楽しい。
で、その考察の結果出来たのがこれ。
Reverbで優勝した図 pic.twitter.com/nhfzSXyxOp
— phi16 (@phi16_) 2020年11月16日
これ、っていうか…この「押した場所が残っていくUI」です。
元々は押しっぱなしにしないと音が出ないので指が大変しんどかったわけですが、それをどうしようかと悩んでいました。
「石を乗せる」みたいな解釈をしてみようとも思ったんだけどあまり結びつかなくて。
で、思い出したのが、エレクトロプランクトンのこいつです。
つまり「周囲と中心という二領域に、強める機能と弱める機能を分割する」。
どっちをどっちに割り当てるかは選択の余地がありますが、中心からの距離から遠いほど大きな音になるという解釈を採用することで決定させました。
てきとうにぱっと押したときには基本的に「鳴らしたい」と思ったっていうのもあります。まぁこれは対照的に「音を止めづらい」という現状になっちゃってたりもしますが、これはambient的にはそう異常なことではないとも思いました。
というわけでぐっと実装しました。内部構造をがっと弄ったのでちょっと大変だった。
でもそれによって背景の六角形の雰囲気とか全部変えられたのでよかったなぁと思います。まだ確定ではないけれど。あとやっぱり色が入ると良いですね。感情があって。
それでのんびり遊びつつ、ReverbとかDistortionとかを適当に組んでみたら割と「いい感じ」になったというのがあの動画です。Reverbの実装はコレ。
const b = S.X.createBuffer(2, S.X.sampleRate*4, S.X.sampleRate); const f0 = b.getChannelData(0); const f1 = b.getChannelData(1); let u = 0; for(let i=0;i<S.X.sampleRate*4;i++) { const t = i/S.X.sampleRate; const amp = Math.exp(-t*0.05) * Math.sin(u*100*6) + Math.sin(t*2*6) * Math.exp(-t*0.08) + Math.exp(-t*2.00); u += (Math.random() * 2 - 1) * 0.4; f0[i] = amp * Math.cos(u); f1[i] = amp * Math.sin(u); } c.buffer = b;
つまりなんでもありません。実際どんな感じなのかわからないんですよね。擬似的に見てみると…
…なんだこれ。もうちょっとマシなアレあるでしょ。まぁちゃんと設計して計算すれば出ると思います…
あとDistortionは tanh(v*32.)
とか floor(v*4.)/4.
とか試してました。音が変わります。そうね。
glslはこの辺の処理がやりやすくて (やりやすすぎて) おもしろいのよねー。そういえばサンプル直前に t
を加工したりもできますね、今。
まぁ音作りに関しては色々試すしかないんかなとは思っています… あと音源。
そのうちやりまーす。
そんな今日でしたが、メインタスクはほぼ出来ていません。ちょっとだけやることを決めたりはしてた。
明日はおそとにでる予定があるのでその時に頭回せたらいいなと思っています。
Kino弄りたすぎてこっちに頭回せなかったので。今日消化出来てよかった。
人生やっていきたいですね。
ではおやすみなさい。