←2025年第一期 2025年第三期→
2025年7月20日
SunoAIが楽しい
昔作った曲を
SunoAI に突っ込むとかなり楽しいことに気付きました。生成してみたものを一例貼ってみます。
"♪光輝へ消える(Arranged)"
元々
Soundcloud にアップしていたドラムンベース調の曲で、
私にしては音量バランスの調整がぶっ壊れてない曲でありがたかったのだけど(誰への感謝?)、
作った時は「そうだ、
Deep Clear Eyes(リンク先はYouTube) の
サックスっぽい音いいよな……」ということで、
Synth1 によるサックスを導入したのを覚えています。
それがこんなにリッチになって解釈されるとは……。
SunoAI、あまりに楽しいので、音程調整用の
Melodyne Editor(かStudio)
を購入することが優先的に入ってきて、Max9 とどちらを先に買おうか悩んでいるくらいです。
まあ、Melodyneの方はブラックフライデーに安くなることが多いらしいので、
そちらはその時に買うだろうけど……(出費が痛い……)
Bytebeat勉強中
Max9を買う予定なのですが、前哨戦として(w 、非常に短い式で作曲を行う「Bytebeat」という手法にチャレンジしてみています。覚えたところまでまとめ。
*効果
- 時間カウンタ
t
- ビットレートに従って増加していく。線型に単調増加してループするため、単体ではのこぎり波を形成する。
t*2
などで音程が調節可能(ただしサンプリングレートとの差が生じるせいか微妙にジャギジャギする=味)。
t*9/4
としても効く(長9度上の鋸波が鳴る)ので、純正音程の知識 があれば便利。
- ビット抽出
a&b
- 各ビット位置が一致した時のみ
b
を与える。
t&128
なら、
00000000 <---- これは8ビット列(2進数)
0 0 0 0 0 0 0 0
128 64 32 16 8 4 2 1 <---- こんな風に見る。
00000000 ^
: |
01111110 |
01111111 v ここまで0 = 00000000 をOUT
10000000 ^
10000001 |
: |
11111111 v ここまで128 = 10000000 をOUT
となり、周期256の矩形波が与えられる。
式 | 効果 |
(t&128) | 矩形波を与える |
(t&64) | 以降、音は高くなり、矩形波の音量が半分になっていく |
(t*n&128) | n倍音の矩形波を与える(純正音程の理屈が効く) |
(t&128)*2 | 音が消える(1000000b * 2 = 00000000 。 桁溢れ) |
- 右にnビット切り捨て
>>n
- 左の項を監視したまま、その右nビットを捨てて出力。
- 鋸波の進行を遅くするイメージ。
t>>11
などとしてリズム作りに使う。
t>>2
なら、10010011
を、左側の2ビット、11
を捨てて、00100100
にするイメージ。
t>>n
で考えるなら、
t : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
t>>2 : 0 0 0 0 1 1 1 1 2 2 2 2 3 3 3 3 ...
t>>3 : 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 ...
t*2 : 0 2 4 6 8 ...
(t*2)>>2 : 0 1 1 2 2 3 3 4 4 5 5 6 6 7 7 8 ...
(t&2)>>2 : 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
t (t)b (t&2)b ((t&2)>>2)b
0 00000000 00000000 00000000
1 00000001 00000000 00000000
2 00000010 00000010 00000000
3 00000011 00000010 :
4 00000100 00000000 :
5 00000101 00000000 :
6 00000110 00000010 :
7 00000111 00000010 :
- ビット論理和
a|b
- 左の項
a
と、右の項b
のビット表現を比較し、1
のビットがどちらかにあれば、1
とする。どちらにもない場合のみ、0
とする。
t | (t*2)
などのようにすると、分離した和音が聞こえる。
t : 0 1 2 3 4 5 6 7 8 9 ...
t | t*2 : 0 3 6 7 12 15 14 15 24 28 ...
t (t)b (t*2)b (t|t*2)b (t|t*2)
0 00000000 00000000 00000000 = 0
1 00000001 00000010 00000011 = 3
2 00000010 00000100 00000110 = 6
3 00000011 00000110 00000111 = 7
4 00000100 00001000 00001100 = 12
5 00000101 00001010 00001111 = 15
6 00000110 00001100 00001110 = 14
7 00000111 00001110 00001111 = 15
8 00001000 00010000 00011000 = 24
9 00001001 00010010 00011011 = 28
*作例
t*((t>>3)&65) | (t*(1/8)<<3) | t
t*((t>>3)&65)
リズム+ベース部分のエンジン。
元々は、t*(((t>>3)&64)+1)
のみからスタートしました。
&64
でビットを照合するので+1
がいないとビット未整合時は全体が無音に。
その後、色々式を弄っているうちに、あれ、&65
でよくない? となりこうなりました。
末尾の| t
が同じくドローンっぽい動きをするので&64
でいい可能性もあります。
(t*(1/8)<<3)
(1/8)
の分子の方は可変。メロディ部分のエンジンに。
<<3
は整数を変えると全体のバリ感が変わります。3
くらいが落ち着いていて好き。
実際は、/8
と<<3
は「捨てて、戻して、」みたいな処理になってる気がするんだけど、
聴感的にこちらを採用します。(実際、下位3ビットを捨てた『ステップ鋸波』のようなものになっているようです)
( ( t*(9/8)|t*(6/8) )<<3 )
みたいにすると複数音扱える。なんと。
メジャーナインスが好きなので、この響きは作っていて気持ちが良かった。Bytebeat楽しいじゃん、と思えました。
t
ドローン部分。ドー……と低くC音を鳴らしています。
ご興味のある方は、ぜひ
https://wurstcaptures.untergrund.net/music/ に
t*((t>>3)&65) | ( t*(9/8)|t*(5/8) )<<3 | t
この式を突っ込んで鳴らしてみてください。
⚠️ただし音量注意! かなり大きい音がするので、音量はゼロに絞ってからスタートした方がいいかもしれません。
型理論?
ジョジョ、うみねこ、Undertale、DDLC、Baba Is You……などの特殊能力とかメタフィクション要素とか存在論とかが、
「どの層に効いて(あるいは越境・破壊して)」、「何に」、「どういった効果を及ぼすのか」を整理したいという気持ちがずっとあります。
こういった込み入って文脈が混乱しがちな話を調べるのに型理論が役に立つかもしれないということで、個人的にちょっとブームが来ています。
もちろん私はただの高卒・文系・数学ファンに過ぎないので、ただのメタファー以上のものにはならない気もしているけど……
それでもなんとなくChatGPTと会話をしながら横好きを進めています。
今日はそれについて個人的なメモにまとめるつもりでもあったのだけど、Bytebeatをやってる間に時間がないなってしまいました……。
人生が永遠に欲しい。
今日のかずのこちゃん

……フフフ……?
2025年7月16日
やってること
画像を読み込んでMother2戦闘背景風の効果を与えるJavaScriptをChatGPT o3と作ってみました。
元々
Pigmhall氏の動画(リンク先はニコ動)
などがかなり好きで抽象的・幾何学的な映像処理には興味があり、今回試してみました。
もともとMother2の戦闘背景にどのような効果が使われているのかを
動画(リンク先YouTube)で予め知ることが出来たこと及び、
DeepSearchでも
先行の研究(リンク先はGitHub) がヒットしたおかげで、
ChatGPTへの説明はかなり簡単だったと言えます。出来栄えは上々で満足しています。
(書いているコードがどういう意味なのかちゃんと宿題しておきたい)
*できたこと
- ChatGPTへのオーダーの際の言語化が上手くできた。要するにHorizontal Oscillation ≒ FM変調だと気づけば話が早かった。
- スクリプトを書き変える際に、ファイルを分けて変更前のものを保持する(=履歴を残す。VSCodeなら元々復元出来そうな気もするが、これも悪い習慣ではないと思う)
- 諦めずにオーダーを伝え切った。
*気付いたこと・今後の課題
- 前回テトリスを試作した(アップはしてない)時もそうなのだが、動かない時はまず最初にF12でコンソールを見るクセをちゃんと持った方がよい。
- 通信の関係かChatGPTはCanvas(JavaScriptじゃなくて付属のメモソフト)への書き込みを途中で失敗することがあるので、そういう時は元のコードを貼り直してあげてからの方がいいかも
*今後やりたいこと
- MAX9→Jitter→MAX9の組み合わせにやはり興味がある。スペクトルを画像処理で変形してMAX9に返す。今回の結果は割と関係してくる。
- フーリエ変換に詳しくなっておく。Pythonで試す。色々な波形を定義してスペクトルを調べる。
- フーリエ変換は高校時代からかなり興味があり、出来ればDFT、FFTのみならずもっと深く理論面まで知りたい。
- そうそう、あとBytebeat!(DeepResearchで一応どういうものかは調査済)
- 次の画像系の目標は『万華鏡ふう処理』か『BattlesのTitanium 2 Step風の菱形・三角形によるアート生成』か『Processing』とか。
- Gemini CLIがいいらしいのでそれも試しておきたい。
-
そのほか趣味の数学。環とか圏とか型とか……。
今日のかずのこちゃん

お花と一緒に。
2025年7月14日
やってること
なんとなーく小話を書いたり、数学したり、プログラムを勉強したり……。
いいかげん、それなりに「人生何が出来るか?」を考えた方がいいような気もしつつ、
なんとなくそんなことは定まらないまま、それなりにムダ知識を蓄えてばかりいる。
(やっぱりあんまり成果物を上げることに興味がないのかも……)
「Π型とかΣ型ってなにー?」とか、「物語って
線状性があって
その場面にその人物がいることはその人物の描写や発言がなされることで証明されるなー」とか、
「そもそも
2Dゲームのマップってどうやって出来てて、
NPCってどう配置されてるのー?」とか、
「MOTHER2の戦闘の背景かっこよくない?」とか……。
MOTHER2の戦闘の背景については学びが多かった(リンク先YouTube)。パレットの色をぐるぐる入れ替える「Palette Cycling」、背景画像をスクロールさせる「Background Scrolling」、
HDMA(Horizontal Direct Memory Access)という機能によって走査線ごとに横・縦方向のオフセットに異なる値を送り込んでズラす「Horizontal/Vertical Oscillation」……(サイン波になるように制御するらしい)。
自分はこのところなんだかスーパーファミコンなどのひと昔(今やひと昔でもないのか)のゲームのこと、特に抽象的だけどクールな画像処理とか音楽、
あるいはこちらを魅了するような(あるいは本当に何でもないような)様々なイベントが、どのようにして出来ているかについて気になったりする。
ChatGPTはすごく便利で、Deep Researchを使うと、インターネットにいる偉大な人々の調査の成果をしっかり拾い上げて来てくれる。
それらの成果や研究などを、(何か有益なことを出力・お返しできるわけでもないままに)ただ読んでいる。
「何者かになろうとすること」についてSNSでたまに読む。
自分が思うに、「何者かになる」こととは本質的には、黙っていても人から勝手に真似をされるような、公益性のあることを成し遂げることだ。
自分が今更そうした「何者か」になれるとは思わない(そんなものになりたいとも思わない、むしろ早くベーシックインカムが始まって欲しいと感じる)一方、
社会は確実に「何者か」の(そして「何者というほどのこともないが、確かに存在する人々」の)日々の行いの中で出来ているとも感じる。(良くも悪くも、ね)
日々考えていることを社会に還元すべきなのではないかと思うけど、否定されるのが怖くて、やっぱりまだ書かない。
(単純に間違っていて有害である可能性の方が、今はまだ高いしね……)
2025年7月8日
エラーが導くバッドメンタルの管理
ある時あるケースにおいて何かが出来なかったからと言って、
- それが一生出来ないこと
- それ以外のことも一生出来ないこと
- そのせいで自分の命や世界が終わること
は導けない。有限回の失敗をもとにそれらを証明しようとするのは不可能だ。
なぜなら冷静になって考えてみれば、
『一生出来ない』と断言できるほどに膨大な回数の試行をすること自体が現実的には無理だし、
実際死ぬ程のインシデントに繋がるかどうかは外部条件の比重も大きい。
そしてこの世界は簡単には滅びはしないからだ。
だから、そんなことを気にする前に、
『そもそもそのタスクを自分はやりたいかどうか、何かの見返りに我慢できるとしたらその報酬は何でなければならないか?』
にフォーカスする方が賢そうだ。
同様に、誰からも怒られない方法を探そうとしても同じく無限の時間がかかるし土台無理、
なぜなら、
それを検証するにも無限に時間がかかるし、そんなことをしている間に人も環境も変わる。
批評者の全体集合は開世界、潜在的に無限に存在していてあらゆる価値観を持っている……。
たまたま機嫌が悪かったり、まだらボケている可能性だってある。
だから、人に怒られたことと、所要時間・出来・難易度などを勘案した自分の仕事の『客観的評価』本体はあくまでゆるく紐づけつつ、
怒られる頻度の多いパターンに重みを付けて避ける戦略を探る方が有益だ……というようなことを考えた。
のだけど、気になる時はやっぱ気になるから、不健全な時はクールダウンこそが必要なのかも……。
自分の自動思考状態に気付けるように余裕を常に持ち、
偶発的な状況でもそれを崩されないようにすることが必要なのだろうな。
まあ、それが出来れば苦労はないのだけど……。
要するに、思考のバグ(過剰な一般化・破局的思考)にハマる前に、
「有限回の失敗から無限の絶望を導くのは無理」という冷静な視点で自分を救いましょう、という提言です。
Xensampling?
音をFFTで分析、その性格で自動に振り分けて素材管理する仕組みを空想した。
というのも、グリッチノイズ素材を作る時に、「ハイハット」とか「キック」と分類するのは難しい。
「ドギュルルル」とか「ブガボリュ」といったオノマトペで管理してもいいかもしれないんだけど、
やっぱりキリがなさそう……と思うと、これはもう一音一音を
音域、広がり、動き、密度、エンベロープの形といったマトリクスで管理する必要が出てくる。
(あるいは逆にもう、とにかくある一音から始め、そこからMaxのパッチで全てを実現することもあり得るのかも。正反対に見えて近い)
ある音を「何に似ているか」で判断するのではなく、
むしろ逆に、そのマトリクスのどこかに、既存のドラム音が入って来て収まる、要するに、音の扱いをより広く考える。
Xenharmonic,
Xenrhythmに倣って、
Xensampling とでも名前を付けてみようかしら。
グリッチアートについての雑感
グリッチアート作りについてなのだけど、
ChatGPTいわくどうやら
型安全性がある種の障壁となるらしい。
昔のゲームがあんなに「バグれた」のは要するにバイナリで読み込んでいたからだとか。
だから、その読む側の型チェックを突破して無理やり読み込む必要があるそうだ(ここ三文ぜんぶ伝聞形)
例えばRPGみたいな仕組みを作っておいて、そのフォーマットの上で、
「異常なマップデータ」への遷移として、JPGやらなにやらを読み込ませる。
もちろん未定義コードやゼロ除算が実行されると困るので、それは回避することとする。
- 要するにイベント層を捨ててしまうか、何か適切な層を読み込んでおけばよさそう。
FCやSFCで顔グラの一部がバグったりするのも、
スプライト管理→そのスプライトがシートの不正な部分や外側を無理やり読み込もうとするのでわけわからないものが生まれる、という機序。
結局はこちらも『正常に動いている読み取り手側(ただし型不安定)にバイナリを突っ込む』、こそが起きていること。
画像だけでなく音について言えば、例えば
AudacityにJPGを無理やり読み込ませるとかが近い。
具体的にどう活用するか……例えばそれを通しで聞いて、面白いものを抽出、
上の「素材自動割り振り機構」すなわちXensamplingによって適切なマトリクスに割り振っていく……
そして、「楽曲上で何を起こしたいのか」に基づいて素材選びを行っていく、というワークフローが想像されるが……。
←2025年第一期 2025年第三期→