RRR日記(11)
長嶋 洋一
2026年1月2日(金)
2026年になったが、日々はそれ程、変わることもなく過ぎていく。 昨年末の大晦日の午後には「ももいろ紅白」(NHKと違ってフルコーラスを口パク無しでフル歌唱)を堪能し、晩はいつものようにNHK紅白は全く見ずに終わった。 昨日の元日には、いつものパターンで近所の白山神社と信貴山にお参りしてから、施設に寄って義母を乗せて奥さんの実家に(下の息子の家族3人と)集合してお寿司、という事になったが、実家近くの三嶋神社参拝は今年はパスとなった。そして新年2日目となって、とりあえずのお仕事はロボット教室のミドルコースのサンプル教材作りぐらい(RP1の電子工作は作るほどのこともなく生徒と同時進行でOK)なのでこれは明日にして、まずは新年最初のsunoと遊んでみることにした。 去年から謎だったのは、「suno」ともう一つ、「suno AI Music」という似たものもゲットしていた(サブスク登録したのは前者のみ)ので、とりあえずYAHOOに「suno と suno AI Music 違い」と聞いてみると、上のような新しい情報リンクをゲットする事が出来た。
![]()
新年の敬虔な気持ちを込めて、今回のsunoには「アカペラ・ミサ曲」を作ってもらおう・・・と思った。 そこでまず、「a capella chorus (5 parts)」・「Alto, Top tenor, Second tenor, Baritone, Bass」・「16 century missa style」・「duration = 3 minutes」とスタイルを記述して、歌詞は「Kyrie eleison; Christe eleison; Kyrie eleison.」を3行にわたって並べた。 イメージはバードとかタリスのようなものが出来てくれれば・・・というものだった。
●本日のsuno生成音楽(2026.01.02)●
Prompt : 「a capella chorus (5 parts)」・「Alto, Top tenor, Second tenor, Baritone, Bass」・
「16 century missa style」・「duration = 3 minutes」
Result : Kyrieタイトルは「Kyrie」であるが、これは酷いものになった。 2曲のうち1曲はたった2秒であり、速攻でゴミ箱行きとなった。 上のもう1曲もたった1分であり、「duration = 3 minutes」は無残にも無視された。 そしてこれは全く期待したものとは違う代物なのだった。 sunoはどうもポリフォニックというのは無理っぽくて、メロディーパートに和音(コーラス)が付いて、さらに要らないのに後半にはドラムが入ってきた。 正に「余計なお世話」である。
●本日のsuno生成音楽(2026.01.02)●
Prompt : 「a capella chorus (5 parts)」・「polyphony (not homophony)」・「Alto, Top tenor, Second tenor, Baritone, Bass」・
「no instruments」・「16 century missa style」・「duration = 3 minutes」
Result : Kyrie2そこでさらに「polyphony (not homophony)」と「no instruments」を加えてみたタイトルは「Kyrie2」であるが、これもまた酷いものになった。 2曲のうち片方はまたまた2秒でゴミ箱行き、残ったこちらも12秒しかない。 ドラムは消えたものの、全く駄目だった。
●本日のsuno生成音楽(2026.01.02)●
Prompt : 「a capella chorus (5 parts)」・「polyphony」・「not homophony : not [melody + chorus]」・「Alto, Top tenor, Second tenor, Baritone, Bass」・
「counterpoint」・「no instruments」・「16 century missa style」・「duration = 3 minutes」
Result : Kyrie3そこでさらに「counterpoint」(対位法)とか「not homophony : not [melody + chorus]」とか入れた「kyrie3」としてみたが、今度は2曲とも2秒しかなくて、こちらの希望はほぼ完全に無視されたままだった。 要するにsunoの世界観(音楽の世界)にはポリフォニーの古楽という知識は存在していなくて、学習していない音楽はそれっぽく生成することなど不可能なのだろうか。 なかなか意義深い実験となった。
2026年1月3日(土)
土曜日ということで、新年と関係なくこのところずっと続けている土曜ルーティンを行った。 まず、CPAPのマスクとタンクは毎日洗って干しているのだが、土曜日にはそれに加えてマスク装着のためのヘッドギア、さらに顎サポーター2種を中性洗剤に漬けた後で脱水して乾かす、というのをいつものように行った。
そして土曜ルーティンとして、今日はMartin Guitarの「弾き初め」となったのだが、どうもMartin弦が「交換して・・・」と言っているような気がしたので、だいぶ久しぶりに弦を交換した。 Martinギターには当然、Martin弦の相性が最高なので、僕はいつも同じ弦を張っているのだが、「martin guitar strings bronze 0.12 0.54」と検索してみると、同じ「Martin MA540 acoustic phosphor bronze strings」にもMP540Tという兄弟みたいなのがいて、スペックは同じなのにちょっと不思議だった。
今回、張り替えたのは上のいちばん上のものだったが、どうも最近はパッケージも変わっているようだ。 そして、張りたての「Martin弦を張ったMartinギター」の素晴らしい音色を堪能することになった。
午前中にはロボット教室のミドルクラスの新サンプル教材を完成させて、来週末の金・日の教室への準備も完了した。 まだ「前半」で、その後に改良する段取りなので、今回は動画撮影はナシである。
★★★★★★★★★★ ★★★★★★★★★★ ★★★★★★★★★★
![]()
そして午後には、sunoで「お経」の生成を試みた。 「グレゴリオ聖歌」というプロンプトだとあまりにそのものが出来そうなので、ここは「和」というか「仏」ということである。 提示した「歌詞」は、以下のネットから拾ってきた「般若心経」(全文)である。
そしてプロンプトは、「male solo voca」・「very slow tempo」・「no ensemble」・「no chorus」・「no instruments」・「like Gregorian Chant」・「Japanese traditional scale」・「total time 3 minutes」・「religious」・「dignified」・「solemn」・「grave」としてみた。 このぐらい、くどい程に「男声のソロで伴奏もコーラスも無し」と念押しすればいいだろう・・・という読みだった。仏説摩訶般若波羅蜜多心経 観自在菩薩 行深般若波羅蜜多時 照見五蘊皆空 度一切苦厄 舎利子 色不異空 空不異色 色即是空 空即是色 受想行識 亦復如是 舎利子 是諸法空相 不生不滅 不垢不浄 不増不減 是故空中 無色無受想行識 無眼耳鼻舌身意 無色声香味触法 無眼界 乃至無意識界 無無明 亦無無明尽 乃至無老死 亦無老死尽 無苦集滅道 無智亦無得 以無所得故 菩提薩埵 依般若波羅蜜多故 心無罣礙 無罣礙故 無有恐怖 遠離一切顛倒夢想 究竟涅槃 三世諸仏 依般若波羅蜜多故 得阿耨多羅三藐三菩提 故知般若波羅蜜多 是大神呪 是大明呪 是無上呪 是無等等呪 能除一切苦 真実不虚 故説般若波羅蜜多呪 即説呪曰 羯諦羯諦 波羅羯諦 波羅僧羯諦 菩提薩婆訶 般若心経
●本日のsuno生成音楽(2026.01.03)●
Prompt : 「male solo voca」・「very slow tempo」・「no ensemble」・「no chorus」・「no instruments」・「like Gregorian Chant」・
「Japanese traditional scale」・「total time 3 minutes」・「religious」・「dignified」・「solemn」・「grave」
Result : budda(1) - budda(2)今回はdurationの指定が効いたらしくていずれも3分を超えたものの、いきなり伴奏ピアノから開始したので、またまだ駄目なものだった。 また「般若心経」の冒頭はタイトルのようなので、この部分をカットした歌詞にしてみた。 プロンプトにはさらに追加で「no accompaniment」・「only vocal solo from beginning to end」・「Japanese pronunciation」というのも追加してみた。 これだけ念押ししても、もしかするといつものように無視されるのでは、という確認でもある。
●本日のsuno生成音楽(2026.01.03)●
Prompt : 「male solo voca」・「very slow tempo」・「no ensemble」・「no chorus」・「no instruments」・「like Gregorian Chant」・
「Japanese traditional scale」・「total time 3 minutes」・「religious」・「dignified」・「solemn」・「grave」・「no accompaniment」・
「only vocal solo from beginning to end」・「Japanese pronunciation」
Result : budda(3) - budda(4)そして案の定、これでもピアノ伴奏が入り、さらに尺八っぽい楽器まで乱入してきた。 これは全く、駄目駄目だった。
2026年1月4日(日)
いまは1月4日の午後であるが、実は昨日の日記の「★★★★★★★★★★ ★★★★★★★★★★ ★★★★★★★★★★」から下の部分は、HTML原稿としては昨日のうちに書いていたもののWebに上げる暇もなく、今日になって追記したものである。
その昨日の午後には、ある電話を受け取り、急遽、荷造りしてタクシーで浜松駅に駆け付けた。 そして新春Uターンラッシュの新幹線自由席のデッキに2時間、立ち続けて東京に行き、さらにつくばに行ったのだった。 詳細は伏せるが、その晩、そして今日の朝に色々あって、昼過ぎに浜松に戻って、帰宅したところなのである。 今日のところは、それだけ。2026年1月5日(月)
![]()
まだまだ届くアラビア語?の読めないメイルと共に、新年の仕事始めの月曜日となった。 我がマンションの可燃ゴミ回収日は月・木なのだが前回が元日でパスだったので2回分となり、集積所(カラス対策で完全防備の)は以下の写真のようなパイプ製の「小屋」の、もっと本格的(太いパイプとコンクリ基礎)・もっと大きなもの(約2倍の幅)なのだが、いつもはスカスカなのに今朝は満杯だった。
![]()
そして仕事始めらしく、ちょっと長めのリプライを要するメイルが2件届いて、あれこれまとめつつ返信するのに1時間以上かかった。 ちょっとまだ、その内容をいちいちここに書くことも出来なかったり必要なかったりするのだが、きっちり対応したい相手からのメイルなのだ。 その返信のためにスマホの待受画面(アプリ一覧)を撮ったので、せっかくだから以下にも置いておくが、別になんということでもない。
![]()
![]()
そして午後になって、明日から3日間、僕と奥さんとでつくばに行くことを決めて、宿とレンタカーを予約した。 もう普通の平日に戻ったので、おそらく新幹線「こだま」の自由席は座れるだろう。 新年早々、この日記はしばしストップしそうである。
2026年1月16日(金)
2026年は1月から激動の日々を送っている。 1月3日につくばの施設の母親(92歳)が緊急搬送された・・・というので筑波に駆け付けて1/3-4の2日間。 肺炎の抗生剤治療という方針を聞いていったん浜松に帰って(ロボット教室)、翌週の1/6-8の3日間は奥さんと筑波に行ってレンタカーで毎日午後20分間だけの面会で、時間の空いている午前中にはせっかくなので筑波山に行ったりした。 いったん浜松に帰って(ロボット教室)、今週の1/13-15は僕がまず筑波に行って送迎バスで毎日20分間だけの面会。 そして昨日、1/15は柏に移動して奥さんと息子と合流して葬儀に参列、その後に筑波に行って20分間だけ面会して浜松に帰着。 来週もとりあえず1/19-22の4日間の宿だけ押さえつつ、今日の午後に弟が病院で医師と転院についての相談をする連絡待ち。 胃瘻や輸血などの延命治療を望まないといっても、嚥下できないためにブドウ糖点滴を続けるのが本人にとって家族にとってどうなのか、極めてシリアスな日々が続いているのである。
![]()
![]()
![]()
![]()
この間、金土日とロボット教室のある期間には浜松にいるために、毎週routineのMartin弾きは続けているものの、平日に行くJoyJoyヒトカラは予約をキャンセルして、行けていない。 ただし筑波の宿泊先から、1/6には「BIG ECHO研究学園」にて完全素面にて3時間32曲、1/13には「カラオケBanBanつくば駅前」にて3時間29曲、と歌唱力維持修行は継続している。
ChatGPTからは、しばらくアクセスしていないためか、以下のようなお節介メイルも届いた。
![]()
この期間に世界中で騒ぎとなっていたのは「Grokによる問題動画生成」の話題で、僕もこんな凄い動画 ★ ★ ★ をゲットしたが、プロンプトだけでこんなのが簡単に生成されるというのは、ちょっと驚きである。 かつてSUACで、映像系の学生が手作業のスクリプトで「ダンス動画」を制作していたのとは隔世の感がある。
そんな中、ようやく来月に迫ってきた日本音楽即興学会(JASMIM)の大会のプログラムが発表されていた。 僕はトップバッターということのようだが、もう肝心の大阪万博2025なんてのは忘却の彼方に行ってしまっているのがやや心配である。 とりあえず会員MLに、 このページ を眺めてみて下さい・・・というのを出しておくことにした。日本音楽即興学会 第17回大会 大会テーマ:「即興と認知・情報科学」 ■ 2月21日(土) 【11:00】 受付開始 【12:00】 挨拶+司会者確認等 【12:10-12:40】 「成り行き即興」と「作り込み即興」についての考察 ー EXPO2025に参加して ー 【12:50-13:20】 「身体は即興において自由か−日本舞踊経験者の動きにみる「素」と「習練」−」 【13:30-14:00】 「集団即興演奏中に何を考えていたか―即興演奏の経験豊富な演奏者と経験の少ない大学生を対象としたケーススタディ―」 【14:20-15:20】 「即興カフェVol.12 『《幻聴妄想かるた》のサウンドスケープ〜〈きく〉と〈みる〉の境界で対話する』」 対話者:新澤克憲 【15:30-17:00】 基調講演 「予測する脳と即興する身体:創造的感性を支える身体知の探求」(仮) 【17:00-17:45】 総会 ■ 2月22日(日) 【09:30】 開場 【10:00-10:30】 「場面に応じた即興演奏は,どのように「見える」ようになるのか」 【10:40-11:10】 「生成」としての即興,「蕩尽」としての身体:「身体のサウンドスケープ」と「歴史的身体」の再解釈 【11:20-11:50】 「ダウン症成人男性との音楽療法:既成曲と即興における表現の相違に着目して」 【11:50-13:10】 昼休憩 【13:10-13:30】 「インクルーシブ楽器「ハンドルドラム」を用いての即興演奏」 【13:40-14:10】 「学生は集団即興演奏の経験をいかに語るのか:大学一般教養科目の授業実践を手がかりに」 【14:30-15:30】 「オンガクに開いていく身体〜礫(こいし)を題材として〜」 【15:50-16:50】 「<ワークショップ>テーブルサイズの即興音楽(仮)」 【16:50】 学会賞授賞式,閉会式2026年1月17日(土)
![]()
たった20分間の面会のためにつくばに1日滞在する、というのを今月は3週にわたって計8日ほど続けてきたが、救急治療(肺炎)を終えた母親は来週末あたりに転院することになった。 点滴が無理なのでこれまでの高齢者施設に帰ることは叶わず、転院先で終焉を迎えることになる母親の顔を見るために、来週も2日間ほどつくばに面会に行く予定を立てた。 去年の6月にはまだ元気だったが、まぁ92歳ということで老衰も進んで、まだ先になるが、穏やかに旅立つ日をこちらも穏やかに迎えるばかりである。
![]()
2026年1月18日(日)
今朝は久しぶりに、デンマークのAnthony Brooks先生からのメイルが届いた。 現在では僕のこの日記も、AI翻訳でお見通しなのだ、というなかなか微妙な時代である。 私信のメイルなのだが、Google翻訳で日本語化したものが以下である。うーーーむ、僕の書き方が悪かったのか、まだ今日のところは亡くなっていない母親へのお悔やみを受けてしまったようである。 まぁ、ちかぢかこれは現実となるので、passingというのは正に現在進行形なのだが、うーーーーむ(^_^;)。 近況として、リンクを英語化した 「ロボット」と「Arduino」のページ を作って、礼状メイルに書き添えてみた。このメールがお手元に届いていることを願っております。ご連絡が滞り、申し訳ございません。 前回のやり取り以来、世界では多くの出来事がありました。 私は名誉教授として退職し、時間に余裕ができたので、また連絡を取り合う必要があると思います。 2026年1月17日(土)の投稿を拝見しました。お母様のご逝去に際し、心よりお見舞い申し上げます。 お二人とご家族の皆様に、力強いお力がありますように。世界中から心よりお見舞い申し上げます。
そしてJSAMIMからは2月の大会での発表コマの移動の打診を受けてOKした。 参加者にはそれぞれの事情があり、たまたま問題なく受諾できるということで協力できたのは有難い。
![]()
今日のロボット教室では、午前にミドルの2回目、午後にアドバンスの4回目、というそれぞれラストの制作となった。 開始前に、せっかくなので教室で写真と動画を撮ってみたが、なかなか今回は面白いものだった。 上の「テケテケドリ」の動画が これ 、下の「アルクンダーZ」の動画が これ である。
2026年1月22日(木)
一昨日の1/20に行き(上の写真はその車窓からの富士山)、昨日の1/21に浜松に帰ってきた(どす黒い雪雲で富士山は完全に消えた)が、つくばの病院の母親はほぼ安静のまま、来週に転院の予定が決まって、また来週の日曜からとりあえず3泊4日の旅程を立てた。 何度も新幹線とつくばエクスプレスで往復を繰り返していると、いま何処にいるのか一寸分からなくなったりするのが面白い。
新科目担当の京都精華大の教務からの書類が届いたものの、開講時期という重要情報に大きな間違いがあり、まだシラバス作成の作業に入れないが、これは移動中にお仕事することになりそうだ。 ここには書かないものの、さらにこの期間に親族/家族にも重大なことが頻発して、なんだか地に足の着かないような日々が続いている。 本来であれば「プーチンの馬鹿野郎」とか「トランプの馬鹿野郎」とか「ネタニアフの馬鹿野郎」とか「高市の馬鹿野郎」とか書かないといけない(馬さんと鹿さんには本当に申し訳ない)世界情勢なのだが、それもままならないのだ。
![]()
そして、先日の王将戦第1局に関して、いつもの「ひふみんEYE」が出てこなかったので心配していた事が午後のニュースで現実となった。 加藤一二三九段の訃報である。 これまで何度となく、ひふみんの熱い将棋愛に感銘を受けてきたのだが、やはり、この時は到来してしまった。 色々と思うことの多い2026年1月である。
合掌。2026年1月23日(金)
久しぶりにsunoに触れる時間が作れたので、やってみた。 イメージはYESの"Close to the Edge"とか「海洋地形学の物語」によくある、8ビートのロックが2拍3連符によって3拍子の、いわば「ワルツロック」へと行き来するという、あの「技」である。
●本日のsuno生成音楽(2026.01.23)●
与えた指定 : Instrumental
与えたPrompt : 70s progressive rock, 2-beat triplet, 2 and 3 beat exchange, Waltz Rock, Consistently the same tempo
出てきたPrompt : rock, Cinematic 70s prog rock with shifting meters over an unwavering tempo; Hammond organ swells, overdriven lead guitar, and melodic bass trade 2-beat triplet and 3-beat phrases inside a waltz-rock pulse, Drums lean on toms and ride bell for the exchanges, then open to crashy, majestic choruses, Male vocals sit slightly saturated, with stacked harmonies on the hook and a mid-song instrumental break that rides the time-play like a spinning mechanical fairground, progressive rock
Result : Clockwork Carousel_1 - Clockwork Carousel_2勝手に作ってくれたタイトルは「Clockwork Carousel」(時計仕掛けの回転木馬)である。 与えたPromptに対して、勝手に出てきたPromptはえらく長大になっていて、おそらくこの分野で膨大に生成させた「元プログレ少年」が世界中にいる・・・という熱気を感じさせた。 残念ながら想定したものとは違っていて、2拍3連はあってもワルツロックには全然なっていないのだが、サウンドとしてはなかなか良いものが出来たので、とりあえずPublishしてみた。
2026年1月25日(日)
一昨日はロボット教室アドバンス、昨日はロボプロ、と日々の講師稼業もこなしつつ(これが曜日を確認できる指標)、今月の新幹線での筑波行きを数えてみると、1/3-4, 1/6-8, 1/13-15, 1/20-21, そして今日から1/25-28、と計14日となって、月の半分は浜松を離れて行き来していた。 今日は午後から筑波に行って前泊し、明日の朝に母親が千葉の柏の病院に転院するのに付き添い、その後は毎日、15分だけの面会のための一日を過ごすのである。正式な依頼も来たのでここに書いておくと、2026年度の京都精華大の新科目「生成音楽論」(クウォーター制・全7週、オンデマンド講義)の非常勤を担当することになり、去年から新MacBookAirでsunoを始めたのもその関係なのだ。 現在のお仕事環境のMacではsunoが走らないので仕方ないのだが、ChatGPTとか他の色々も実験できるので、この新環境は歓迎である。 そしてこれから約1週間で、「生成音楽論」のシラバスを仕上げなければならないのだが、落先生からは去年の11月か12月には、ChatGPT-5に提案された、上のようなこの科目の「授業計画(全7回)」案まで届いていたのだ。第1回 イントロダクション:生成音楽の思想 ・ 生成音楽の定義と背景 ・ 偶然性(ケージ)、規則性(バッハ、サイコロ音楽)、環境音楽(イーノ) ・ 「作曲 vs 生成」の視点で考える 第2回 コンピュータ以前の生成的発想と初期コンピュータ音楽 ・ ケージ《Music of Changes》、クセナキス《Metastaseis》 ・ Illiac Suite(1957)など黎明期の事例 ・ コンピュータを「楽譜を書かせる道具」とした初期の試み 第3回 PCによる自己生成音楽(1):ルールとアルゴリズム ・ マルコフ連鎖やセル・オートマトン(数理的詳細は概念的に紹介) ・ Terry Riley《In C》にみる「ルールに従う演奏」 ・ 簡単なルール生成を文章やリズムで体験する演習 第4回 PCによる自己生成音楽(2):インタラクションと空間 ・ センサー、MIDI、Max/MSPによる自動生成的演奏 ・ サウンドインスタレーション(長嶋洋一の作品例、Ryoji Ikedaなど) ・ 「身体・空間・テクノロジー」が生成に関わる例を考察 第5回 AIによる音楽生成(1):AI作曲の仕組み ・ 統計モデルからディープラーニングまでの流れ(概念レベル) ・ RNNやTransformerがどう音楽を扱うかを図解で理解 ・ 実例:Google Magenta, OpenAI Jukebox 第6回 AIによる音楽生成(2):ツール体験 ・ Suno, Magenta Studio, AIVAなど実際のツールを体験 ・ 学生がテキストプロンプトや入力素材を試し、生成結果を共有 ・ 「人間らしさ」「創造性」についてディスカッション 第7回 AIによる音楽生成(3):未来と批評的視点 ・ 生成音楽が持つ社会的・倫理的課題(著作権、オリジナリティ) ・ 環境音楽・ゲーム音楽・映像音楽など応用分野の可能性 ・ 学生によるショートプレゼン:生成音楽をどのように活用したいか
ただし、ずっと眺めていたのだが、上の授業計画では全く駄目だと次第に確信するようになって、今日からの東方遠征では、新しい発想での「授業計画」を練る・・・というのがメインタスクなのである。 この日記では、おいおいぼちぼち、シラバスだけでなくその中身も(オンデマンド教材ということは、正に自分のサイトに置いたコンテンツそのものでOK)、メモしていきたいと思う。2026年1月28日(水)
千葉県柏市の東横インでこれを書いている。 3日前の1/25には東横イン研究学園に前泊して、翌1/26には入院していた筑波記念病院から転院移動のための介護タクシーに同乗して、母親のストレッチャーの横に1時間ずっと付き添って、病院面会は20分なのに対してとても密な時間を得られた。 転院先はTEX「柏たなか」駅のすぐ隣にある「柏たなか病院」であり(ここの面会時間は15分)、東横イン柏駅東口に宿泊して午前中にみっちり4時間かけて「生成音楽論」のシラバスを完成させた。 昨日1/27には、柏から東武アーバンパークラインでスグの流山おおたかの森に、そしてTEXで柏たなかに行って面会して、昨夜は東横イン柏駅西口に宿泊したのである。 今日は再び15分の面会に行って、その後は浜松に帰宅することになる。ChatGPTに作ってもらっていたシラバス案は不採用となり、ゼロからiPadにアイデアメモを書きつけていたスケルトンに肉付けして完成したのが、上のシラバスである。 これは学科の担当である落先生のチェックを受けてから公開となるのだが、最初は「生成音楽」ということでアルゴリズム作曲のあたりを膨らませることになるのか・・・と思っていたが、実は「音楽の全て」が対象であると気付いて全面改訂したのだ。 sunoは既に実用レベルの音楽を生成するので、肝心なのはsunoに与えるpromptであり、そのpromptを考えることが実は音楽そのものを色々な視点で考えることなのだった。 こんなのを7回のクウォーター科目で行うのは本質的に不可能であり、ある意味ではゼミから卒論、あるいは大学4年間ぐらいじっくり取り組むべきテーマなのだ。 シラバスはあくまで「見出し」であり、これから各回のオンデマンド教材を作っていくのだが、この日記の中で取り上げていくメインテーマになりそうな気がしてきた。第1週 音楽生成AIとの付き合い方 イントロダクション とりあえずsuno サンプルを体験 とりあえずcreate 肝は「prompt」 生成AIとは(概論) ニューラルネットワーク 深層学習 LLM 学習Dataから何かを生成するもの 音楽の「スタイル」・「ジャンル」とは 音楽生成AIと取り組む事 = 音楽そのものと取り組む事 音楽生成AIと「歌声」について コンピュータがしゃべる コンピュータが歌う 第2週 音楽生成AIと音楽理論 「要素」を組み上げる(Composition)従来の作曲 音響全体から「要素」を抽出するのが「採譜」(Transcription) sunoは詳しい要素を問わない 詳しい要素を記述する(DTM)従来スタイルの生成AI 楽典と楽譜 音楽の構成要素 メロディー コード スケール リズム ビート 調(Key) Tonal Center 移調 転調 「アレンジ」とは何? 第3週 音楽生成AIと感情 音楽心理学の奥深さ 音楽の構造 起承転結 序破急 ソナタ形式 イントロ Aメロ・Bメロ サビ エンディング 音楽の知覚と認知 ヒトの認知科学的特性 和声理論と音響心理学 メジャーとマイナー 不協和音の歴史 「協和」と「解決」 予定調和と意外性 音楽と情動 ドミナントモーション 第4週 音楽生成AIと文化人類学(1) 音楽の起源 民俗音楽 宗教音楽 伝統音楽 芸術音楽 商業音楽(ポピュラー音楽) 音楽嗜好の要素 メロウ(甘美) アーバン(都会的) ソフィスティケイト(洗練) インテンシティ(激しさ) キャンペストラル(田園的) ダンスと音楽の身体性 第5週 音楽生成AIと楽器 音響物理学と音響心理学と楽器音響学 sunoは「メロディー」を求める 「楽器」の歴史 自然楽器 電気楽器 電子楽器 サンプリングとコンピュータ 民族楽器・伝統楽器 第6週 音楽生成AIと文化人類学(2) 美学/哲学との関係 現代音楽 実験音楽 前衛音楽 電子音響音楽 MIDIとDTM MIDI シーケンサ DTM・DAW ゲーム音楽 サウンドスケープと環境音楽 図形楽譜と音響クラスター音楽 CGM(Consumer Generated Media) 第7週 音楽生成AIとアルゴリズム作曲の可能性 アルゴリズム作曲 サイコロ音楽 確率統計音楽 「1/fゆらぎ」音楽 ファジイ音楽 遺伝アルゴリズム(GA)音楽 インタラクティブ音楽 Interactive Live Computer Music ライヴ・コーディング音楽 音楽生成AIの可能性と限界 「新しい音楽」の創生は?上のリンク集は、当初のChatGPTシラバス案にあった情報などを調べてメモしていたものだが、これもここに置いておくことにした。 テキストから適宜、リンクを参照することになるだろう。 「音楽生成AIに与えるプロンプト」関係サイトを調べていて、シラバス案の全面改訂を思い付いたので、これは記念碑的な情報なのである。
- Illiac Suite
- ケージ 《Music of Changes》
- クセナキス 《Metastaseis》
- Terry Riley 《In C》 ★ ★ ★ ★ ★
- 「音楽生成AIに与えるプロンプト」関係サイト ★ ★ ★ ★ ★ ★ ★ ★
2026年1月30日(金)
「つくば〜柏」ツアー4日間から帰ってきた水曜日の晩は12時間ほど爆睡したが、やはりCPAPをしていないと熟睡できない身体になったのかもしれない。 昨夜は夜中に目覚めてあれこれ考える時間を2-3時間も持てたお陰で、ちょっとアイデアが色々と浮かんできたのでまずはここにメモしておこう。
以下は今月のヒトカラ記録で、なんとほぼ毎週欠かさず行っていた地元(自宅から徒歩数分)のJoyJoyには一度も行けなかったので、来週の月曜に久しぶりに予約してみた。 ちなみに先月の記録およびそれ以前の情報へのリンクは、 この日記のPart10 の「2025年12月27日(土)」のところにある。さて、京都精華大から「生成音楽論」という新科目の非常勤講師の依頼が来たのは去年の秋頃だったのだが、「生成音楽」という用語は未知だったので調べてみると、どうも日本語としてはauthorizeされていなかった。 英語の Generative Music というのはまぁ、Maxを使ってアルゴリズム作曲するという古典的なやつなのだが、これとは違うのだった。 なんとこの科目の「授業の目的・到達目標」(大学から与えられていて担当講師が手を出せない)は以下のように、「AIを活用した音楽生成の仕組みと特徴を説明できるようになる」・「代表的な音楽生成AIツールの機能と使い方を習得できるようになる」・「AIを用いて独自の楽曲を制作し、その過程を分析できるようになる」という3行なのである。 時代がまさに「生成AIべったり」となっている中、軸足は完全に時代のキャッチフレーズ「生成AI」にあったのだ。
- 2026年1月6日(火) 3時間 32曲 (BIG ECHO研究学園、完全素面)
- 2026年1月13日(火) 3時間 29曲 (カラオケBanBanつくば学園)
- 2026年1月20日(火) 3.5時間 37曲 (カラオケBanBanつくば学園)
- 2026年1月25日(日) 4時間 43曲 (バックス研究学園)
![]()
古典的なGenerative Musicsというのは、この文脈から「狭義の生成音楽」として一つの項目にはなるものの、求められているのは「広義の生成音楽」なのだった。 そこで僕は上のような「授業の概要」とすることに到達した。 肝心の「授業計画」については後述するとして、ついでにシラバスに書かれている関連情報も以下に置いてこう。
![]()
そして、「狭義の生成音楽」の感じでChatGPTが提案してくれたのが以下の「授業計画」案だった。 テキスト版としてはこの日記の「2026年1月25日(日)」のところにある。
![]()
そして、「広義の生成音楽」の感じで僕がシラバスとして作ったのが以下の「授業計画」案である。 テキスト版としてはこの日記の「2026年1月28日(水)」のところにある。
![]()
これをベースとして、実際の講義は6月からのクウォーターなのだが、講義資料とサンプルmp3やYouTube動画については、かなりじっくりと作ってみたい気がしてきた。 今月下旬の日本音楽即興学会での発表もあるのだが、こちらの作業は、日々、少しずつ進めていくことになりそうだ。
また、上記の「狭義の生成音楽」と「広義の生成音楽」の間あたりに存在する新領域についても気付いた。 ChatGPTとかに指示して、「狭義の生成音楽」を生成するプログラム/アルゴリズムを生成させる・・・というチャレンジングなテーマである。 プラットフォームとして、Maxとか、 この日記のPart10 でいろいろ遊んだRNBOの「Max External Export」によって出来上がる「インタラクティブWebコンテンツ」とか、のコーディングを生成AIにさせるというものだ。 ただし最も肝心なのは、「その生成されたプログラムは正しいの?」というチェックが出来る人間の育成なのだった。
●本日のsuno生成音楽(2026.01.30)●
与えた指定 : Instrumental
与えたPrompt : piano solo, no drums, no bass, no other instruments, slow, 4-beats, sad feeling, total 60sec duration
出てきたPrompt : Sparse, rubato solo piano in a minor key, almost whispered touch on the keys, Slow 4-beat pulse implied by phrasing, with long pauses letting notes hang and decay, Dynamic arc swells gently to a small emotional peak halfway through, then recedes into fragile, high-register voicings that fade on a lingering unresolved chord, beats, slow, sad
Result : One Minute In The Dark 1 - One Minute In The Dark 2そして久しぶりなのでsunoもやってみた。 条件としては、なるべくシンプルにしたいので「Instrumental」指定で、さらにpromptとして「piano solo」だけでなく「no drums」・「no bass」・「no other instruments」とした。 そして曲調もシンプルに「slow, 4-beats, sad feeling」だけにして、なんとか全体の長さを指定したい(これまでずっと無視され続けている)ので「total 60sec duration」とした。 ところが、「長さ1分間」というリクエストはタイトルの「One Minute In The Dark」に反映されただけで、結局、3分7秒と3分37秒の曲が生成され、いずれも邪魔なドラムが途中で入ってきた。 つまり、流石の生成AI、sunoはまたまた馬鹿丸出しを演じてくれた。
そこで「困った時のChatGPT」である。 上のやりとりは、「1分間という長さの指定ができない」・「ピアノソロというのに余計なドラムが出てくる」という2つの問題点を聞いたやりとりである。 今日はこれからロボット教室があるので、これを試すのは今後になるのだが、やはり「this is a known Suno limitation」ということで、sunoに余計なドラムが入り込む問題点がある、というのは広く共有されているのだ、という収穫となった。You said: I am using suno. I want to create the fixed length (duration) of music, and in my prompt "total duration = 60sec" etc. ChatGPT said: Ah, yeah — this is a very common Suno gotcha. Short version first, then the practical workaround. ________________________________ Can Suno make exactly fixed-length music (e.g. 60 sec)? No, not perfectly. Right now Suno does not guarantee exact duration, even if you write: total duration = 60 sec length: 1 minute The model treats that as a soft instruction, not a hard constraint. What does work (best practices) ________________________________ 1. Use duration hints Suno actually listens to Put duration instructions early and clearly in the prompt: 60-second instrumental track. Structure fits exactly within 1 minute. No fade-out. End cleanly at 60 seconds. This improves accuracy, but still expect ±3–10 seconds. ________________________________ 2. Control structure instead of raw time (VERY important) Suno responds better to musical structure than seconds. Example for ~60 sec: 60-second instrumental track. Structure: 0–15s intro 15–45s main section 45–60s ending End abruptly at 60s, no fade. This works better than just saying “60 sec”. ________________________________ 3. Avoid fades unless you want extra time If you say “fade out”, Suno often extends the track. Use: No fade-out. Hard ending. Final note stops cleanly. ________________________________ 4. Generate shorter, then stitch (most reliable method) For exact timing (video, CM, reels, etc.): Generate 45–55 sec tracks Trim or loop the last bar in a DAW OR generate two parts: Part A: 40 sec Part B: 20 sec (same key & tempo) This is what pros actually do. ________________________________ Prompt example (copy-paste friendly) 60-second instrumental electronic track. Tempo 120 BPM. Structure: 0–10s intro 10–40s groove 40–60s ending No fade-out. Hard stop at exactly 60 seconds. Clean final hit. Still not perfect — but this gives the highest success rate today. ________________________________ You said: Thanks, I will try later. I only hope piano solo, and I set "Instruments" and my prompt says "no drum, no bass, no other instruments", however, the created music is not plano solo, some drum/percussion part joins. How to avoid other instrument ? ChatGPT said: Yeah… you’re not doing anything wrong — this is a known Suno limitation, especially with piano solo. Percussion sneaking in is very common. Here’s how to minimize it as much as possible (from most to least effective). ________________________________ The uncomfortable truth (so expectations are right) Suno cannot 100% guarantee “piano only, zero other sounds”. Why: The model strongly associates structure and rhythm with percussion Even “no drums” is treated as a soft negative, not a hard ban Piano solo is harder than band music for the model That said, you can push success rates way up. ________________________________ (1)Put piano-only as the FIRST constraint (critical) Suno weights the first lines more heavily. Do this: Solo piano only. One acoustic grand piano. No other instruments under any circumstances. Then put style, mood, length, etc. ________________________________ (2)Be very explicit about what NOT to generate Don’t just say “no drums”. Name everything: No drums. No percussion. No bass. No pads. No strings. No synths. No sound effects. No clicks or rhythmic hits. Yes, it’s verbose — but it works better. ________________________________ (3)Use “classical / recital” language (huge boost) Avoid modern production terms. Good keywords: classical piano solo piano recital concert hall recording unaccompanied piano rubato no rhythm section Bad keywords (avoid): beat groove cinematic modern soundtrack ________________________________ (4)Tell it the piano is unaccompanied This phrasing matters a lot: Unaccompanied solo piano. No backing instruments. No rhythmic accompaniment. ________________________________ (5)Force silence instead of replacement sounds Sometimes Suno fills “empty space” with percussion. Tell it silence is OK: Sparse arrangement. Natural pauses and silence. No background textures. ________________________________ (6)Example prompt that works well (copy-paste) Solo piano only. Unaccompanied acoustic grand piano. Classical piano recital style. No drums. No percussion. No bass. No strings. No synths. No pads. No sound effects. No rhythmic accompaniment. Sparse, expressive performance with natural pauses. Recorded as a single piano in a quiet concert hall. Hard ending, no fade-out. This is about as strong as Suno allows today. ________________________________ (7)If percussion STILL appears (last resort tricks) Regenerate with same prompt (often fixes it) Suno randomness matters — hit regenerate 2–3 times. Change style slightly Try: “romantic era piano” “impressionist piano solo” “Debussy-style solo piano” (style reference, not imitation) These reduce rhythm injection. ________________________________ ... thanks, I will try ! You’re welcome! Have fun experimenting — and don’t be discouraged if the first take isn’t perfect. With Suno, regenerate + tiny prompt tweaks really do make a difference, especially for piano solo. When you try it later, a quick checklist: “Solo piano only” at the very top Classical / unaccompanied wording Long, explicit “no ___” list Regenerate a couple of times if percussion sneaks in If you hit a stubborn case or want a very specific piano vibe (e.g. slow melancholic, Debussy-like, Japanese film-style, minimalist), just drop a line — I’m happy to fine-tune it with you.2026年1月31日(土)
急なつくば行きとなったために、予約していた視野検査の日程を変更して、今日は午前中に眼科に行くことになっている。 その出掛ける前にやってみたのが、昨日のChatGPTのアドバイスを受けてた「sunoでの1分間の音楽」生成である。 ネタとしては、いつも僕がヒトカラで この曲 を歌うときに、間奏部分でシャウトしているフレーズを歌ってもらうことにした。 スタイルとしては「Death Metal」として、かなり頑固にDuration指定したのだが、20秒とかの舐めた結果となった。
登場人物は5人、もちろん架空の名前である。まずはプーチン。結果は30sec, 27secであった。
●本日のsuno生成音楽(2026.01.31)●
与えたタイトル : 死ねプーチン
Prompt : 60-second instrumental electronic track, Structure: 0–40s intro, 40–45s groove, 55–60s ending, No fade-out, Hard stop at exactly 60 seconds, Clean final hit, Death Metal, wild shout
Result : 死ねプーチン 1 - 死ねプーチン 2次はトランプ。結果は21sec, 36secであった。
●本日のsuno生成音楽(2026.01.31)●
与えたタイトル : 死ねトランプ
Prompt : 60-second instrumental electronic track, Structure: 0–40s intro, 40–45s groove(vocal), 55–60s ending, No fade-out, Hard stop at exactly 60 seconds, Clean final hit, Death Metal, wild shout
Result : 死ねトランプ 1 - 死ねトランプ 2次はネタニアフ。時間指定を厳しくしてみたのだが、結果は28sec, 29secであった。
●本日のsuno生成音楽(2026.01.31)●
与えたタイトル : 死ねネタニアフ
Prompt : 60-second instrumental electronic track, Structure: 0–40s intro, 40–45s groove(vocal), 55–60s ending, No fade-out, Hard stop at exactly 60 seconds, Clean final hit, Death Metal, wild shout
Result : 死ねネタニアフ 1 - 死ねネタニアフ 2次は習近平。結果は35sec, 55secであった。「China」と添えてみた。
●本日のsuno生成音楽(2026.01.31)●
与えたタイトル : 死ね習近平
Prompt : 60-second instrumental electronic track, Structure: 0–40s intro, 40–45s groove(vocal), 55–60s ending, No fade-out, Hard stop at exactly 60 seconds, Clean final hit, Death Metal, wild shout, China
Result : 死ね習近平 1 - 死ね習近平 2最後は金正恩。結果は28sec, 30secであった。「North Korea」と添えてみた。
●本日のsuno生成音楽(2026.01.31)●
与えたタイトル : 死ね金正恩
Prompt : 60-second instrumental electronic track, Structure: 0–40s intro, 40–45s groove(vocal), 55–60s ending, No fade-out, Hard stop at exactly 60 seconds, Clean final hit, Death Metal, wild shout, North Korea
Result : 死ね金正恩 1 - 死ね金正恩 2結局、時間指定はまだまだ無視してくれるsuno君というのを確認できた。 「ネタニアフ」という名前だけで「Israel」とか入れていないのに、アラブっぽいサウンドになったのは、流石のsunoと言うべきか。 それぞれ架空の登場人物の名前がシャウトするボーカルの中に確認できるかどうか・・・はなかなか微妙だったが、二度聞きしてみると結構それっぽく歌っていたようである。
2026年2月1日(日)
昨日の午後には、週一routineでMartinを弾いたり、ロボット教室ミドルクラスの新サンプル教材を作ったりした。 今日も束の間の休日ということで、アドバンスクラスの新サンプル教材を作ったり、出来ればロボプロの教材を3回目に向けて改訂していく予定である。
柏の母親に面会した弟からのメイルでは、「腕がずいぶん細くて、内出血?なのか、何か所か青くなっていて、顔色はよく、呼吸も安定した感じですが、ちょっと弱くなった印象を受けました」とのこと。 まぁ、基本的に「穏やかに衰弱していくのを見守る」という体制なので、これは完全に想定内なのだ。上のような記事がネットで流れてきたが、まぁ2016年と言えば、ウクライナのクリミアを併合したロシアを世界が黙認していて、世界に「ポケモンGO」が発表された年だった。 僕は脳天気に、まだ日本では公開されていない「ポケモンGO」をやっている人を NIME2016 のBrisbaneのバスの中で見たり2026年に入り、世界的なキーワードとして注目されている「2016年」。当時のファッションやメイク、カルチャーを再現したり、 写真を投稿したりするリバイバルブームが広がり、TikTokでは「#2016」をつけた投稿が流行。Instagramでも10年前を 振り返るインフルエンサーらの投稿が目立つ。 動きの背景にあるのが「ノスタルジー」だ。当時のSNSは今ほどビジネス色が強くなく、どこかプライベート感があった。また 分断や対立を煽る場というより、他者とコミュニケーションを取る楽しさも感じられた。過去の良さと現在を照らし合わせる行為が 「2016年リバイバル」を後押ししているのではないだろうか。
![]()
2度目の Sabbatical2016 として行った 欧露ツアー2016 では6カ国7都市を巡り、シベリア横断鉄道の寝台車で行ったMoscowではクレムリンのすぐ隣に泊まって、西欧化したMoscowの街を散歩したりしていた。 確かに世界的に、まだ現在の異常な世界を感じる兆候は微塵も無かったのだった。
![]()
午後には快調にロボプロの教材までを片付けて、さていよいよ・・・と15時からトライしたのが、阪神タイガースファンクラブのサイトへの接続である。 一般販売より前にあるファンクラブ(FC)レギュラー販売、それより前にあるFC先行販売、さらにそれより前にある「FC先行抽選」というのに応募したいのだが、何度やっても上の画面に直行して、まず「入れない」のだった。
しかし、「先着順ではありません」という抽選予約なので、ちょっと粘ったら上のように入れて、そこから会員IDでログインして・・・と粛々と申し込みが進んで、「2試合まで申し込み可能」という2試合を無事に入力完了した。 あとは2/10の15時以降に順次メイルで発表されるという抽選結果を待つばかりである。 どちらの日程になってもいいように、いつもの東横イン野田駅前も両方を別々に予約してあり、「果報は寝て待て」体制となった。
![]()
その後、2週間後にある「浜松シティマラソン」の交通規制が、僕がロボット教室に行くルートと完全にバッティングしている・・・という事実を確認することになった。 上はその様子で、いつもであれば、僕はA地点の自宅を出て、途中でB地点のセブンイレブンでランチのお買い物をして、C地点の教室会場に向かうのだが、時間的に完全にマラソンコースと交錯しているのだった。 結論としては、いつもは朝9時に自宅を出ているのだが、この日だけは1時間ほど繰り上げて8時には出掛ける必要がありそうだ、ということになった。 やれやれである。
2026年2月2日(月)
今日は午後に久しぶりのJoyJoyヒトカラの予約を入れていたのだが、体調が完全ではないためにキャンセル連絡して、代わりに木曜日に予約を入れた。 体調bestでない時のカラオケが不毛なのは何度も痛い経験をしているので、これは正しい判断なのだ。
日本赤十字社【ラブラッド】からは「前回は献血にご協力いただきありがとうございました。本日から400mL献血にご協力いただけます」とのメイルが届いた。 そこで、どうせスーパーに買い出しに出掛けるので、駅前の「みゅうず」に献血の予約を入れて行ってきた。 これで、晴れて「67歳にして67回目の献血」達成である。
![]()
午前中から午後にかけてハマッていた作業は、京都精華大の「生成音楽論」に絡めた資料として、 「イントロ」の考察 というページの作成である。 要するに自分の好きな曲のイントロを並べているのだが、これはなかなか楽しいのだった。 一応、ネットで「○○○なイントロ集」という記事も多少、参考にしたが、ほぼ全部が自分の記憶をソースとしている。 最近では「タイパ」によってイントロ軽視の風潮があるらしいが、「いえいえどうして」というこのページは今後も、何か思い出したら追加していこう。 ちなみに、「sunoにかっこいいイントロを作らせるためのprompt」なんてのがあれば人気になりそうなので、これは「生成音楽論」の課題候補でもあるのだ。
そして明日と明後日の2日間は、また柏に出掛ける。 毎週たった15分間の面会(今回は2日)で母親の様子を見守るというroutineで、これが続く限り母親は生き長らえているし、これが続く限り僕の日々は通常運転にならない、という2026年である。2026年2月5日(木)
昨日と一昨日はまた柏の病院に、母親との面会(15分×2日)のために行った。 腕はガリガリに細くなって、もはや点滴の針が刺せないので脚に点滴しているようなのだが、それでもコミュニケーションが続いている。 ホテルの部屋では、 「イントロ」の考察 のページにどんどん曲を追加していた。
そして今日もちょっとだけ、sunoしてみた。
●本日のsuno生成音楽(2026.02.05)●
与えた指定 : Instrumental
与えたPrompt : acoustic guitar solo, high speed fingering, slow tempo, blues
出てきたPrompt : folk, Raw fingerstyle acoustic blues, male vocals, Fast, intricate picking at a relaxed tempo; thumb drives a steady low-end pulse while high strings flash with quick runs, Intimate, close-mic’d guitar, subtle room reverb, Vocal sits gritty and upfront, verses hushed and conversational; chorus opens in volume with stretched notes and a touch of rasp, Occasional short guitar fills answer vocal phrases, ending on a lingering, bent-note turnaround, acoustic, slow, blues
Result : Midnight Freight Line 1 - Midnight Freight Line 2タイトルは「Midnight Freight Line」である。 例によってパーカッションとかベースとかストリングとか、要らないサウンドが入っているのだった。 しかし流石のBlues、思いのほか、なかなか良いものが出来たので、これもPublishしてみた。
そして体調が完全復活していないものの、やはり週一routineだろう・・・ということで、1ヶ月以上ぶりのJoyJoyに行って、素面で3時間30曲を大人しくこなしてみた。
昨日から、とても久しぶりの人からのメイルが届いてやりとりしているのだが、この件がこれから登場するかどうかは。まだ未定である。2026年2月6日(金)
なんとか「体調が復活してきた」という体感と共に目覚めたが、内受容感覚から自覚→確信へと実感するこの「治癒方向への体感」というのは、いつになっても嬉しいものである。 今月は2回も祝日があって、柏の病院の面会ルールは「祝日NG」とあるために、今週と来週に関して、なかなか予定が立ちにくい状況になっている。この日記のPart10 の「2025年11月3日(月)」のところに書いていた、日本音楽即興学会大会へのエントリーを上に再録してみたが、ぼちぼちこれをベースとして「プレゼン」を準備する時期になってきた。 もっとも、この「要旨」でほぼ言いたいことは網羅されているので、そこだけちょっと悩ましい。「成り行き即興」と「作り込み即興」についての考察 ー EXPO2025に参加して ー 情報処理学会・音楽情報科学研究会において、「EXPO2025プロジェクトに参加して」というタイトルで報告した★(https://nagasm.org/ASL/SIGMUS2509/)。 本発表では、この体験(詳細は報告★を参照のこと)を契機として再発見することになった、即興における対極的な特性 : 「成り行き即興」と「作り込み即興」に注目して 考察した事項について報告すると共に、即興の本質に関する問題提起を試みる。 筆者がこれまでComputer Musicの領域で行ってきた作曲/公演活動において、即興性を「環境として作り込む」ことは公演を事故なく成立させるために不可欠であり、 個々の音楽要素を即興的にライヴ生成するアルゴリズムにしても、演奏者の即興的身体表現のセンシングにしても、音響/映像を聴衆に提示するシステムにしても、 事前に十分に作り込んで会場に持ち込み、トラブルに対する安全装置を二重三重に準備することは常識だった。いわば「お釈迦様の掌の空間内で即興する孫悟空」と いう世界観である。 一方、成功裏に終わったと言われる大阪万博2025において筆者が参加した「伝統文化未来共創Project(The Future in Tradition)」の中の「伝統の中にある未来 ー Japanese Experience ー」など多くの企画については、公演の「場」としてのパビリオンは建設し割り当てられたものの、時間的・運営的・財政的などの要因から個々の 公演内容の準備は直前まで不透明なまま当日を迎えた。これは従来手法での即興の実現というよりも、「場」そのものの存在や運営が即興的という対極的な皮肉となり、 関係者を翻弄した。この貴重な体験から「成り行き即興」と「作り込み即興」という視点、「どんな時でも揺るがない即興」について体験した事例を報告すると共に、改めて 即興について見つめ直してみたい。
まぁ、事前にJASMIMの会員にはMLで このページ を読んでおいてね・・・と告知しているし、中身としては色々と思うところもあるので、あまり準備については焦っていない。 関連してちょっと調べてみた 偶然性の音楽 とか 不確定性の音楽 とか 実験音楽 とか 現代音楽 とか 即興演奏 とかの中身を整理して、それぞれプレゼンの1ページとする作戦も有効そうである。
他にネタとしては、「作り込み即興」の事例として、まだJASMIMでは報告していなかった Final Lecture/Workshop by YN で公演した作品"Profound Recursion" ★ ★ のためのMaxパッチを、Live GraphicsパートとLive Soundパートに分けてそれぞれDemoとして走らせて見せる・・・という構想もあるので、中身は十分なのだ。
●本日のsuno生成音楽(2026.02.06)●
与えた指定 : Instrumental
与えたPrompt : poly-rhythm, whole-tone scale, mysterious, magical, sutras, Hell's Abyss, horse harp, Curse Ritual, no vocal
出てきたPrompt : Ritualistic dark fantasy score built on layered polyrhythms and whole-tone harmony; low drums and taiko patterns in 5:4 and 7:8 under wavering strings and eerie horse-harp-like plucks, Sparse low brass swells and distant throat-chant-style pads enter and retreat like breathing shadows, Dynamics rise from a hushed opening mantra to a swirling, disorienting mid-piece climax, then decay into a single trembling drone that fades into black, vocal, magical, harp, tone
Result : Curse Sutras of the Abyss 1 - Curse Sutras of the Abyss 2そして今日もsunoで作ってみた。 タイトルは「Curse Sutras of the Abyss」であるが、僕が与えたpromptのうち「poly-rhythm」・「whole-tone scale」・「no vocal」などは例によって無視されていたが、「深淵の呪経」という雰囲気は何となく出ている感じもする。 こういうのが好きな人も多いのだろうが、一歩誤れば安易なムードBGMになってしまう危うさもあった。
2026年2月7日(土)
来週の柏行きは「2/9-10」の2日間と決めたが、その直前、今日と明日の2日間は関東地方でも雪が降るとかいう寒波で、交通への影響が懸念されている。 昨晩のロボット教室、そして明日の午前〜午後はまたロボット教室があるものの、狭間の今日はたまたま空白、サンプル教材ロボットも完成しているので、まずまずの休息日となりそうだ。
そして昨日のsunoに「whole-tone scale」が完全無視されていたのが気になっていたので、ちょっと明示的にクドく指定してみることにした。
●本日のsuno生成音楽(2026.02.07)●
与えた指定 : Instrumental
与えたPrompt : consistently whole tone scale (C, D, E, F#, G#, A# only), no drums, no percussion, no vocal, no bass, no voice, deep space, flexible rhythm without a beat, very slow, deep reverberation, long decay sound, meditation
出てきたPrompt : Glacial deep-space ambient soundscape; slow-evolving synth pads in a strict whole-tone palette, swelling like distant nebulae, Flexible, pulse-free phrasing with long reverb tails and cavernous decay, tones blooming and dissolving into each other, Sparse, floating upper-register bell-like plucks answer low, organ-like swells while widening stereo shimmer suggests endless cosmic meditation; ideal for sustained, breath-synced listening, meditation, deep, slow, vocal, tone
Result : Deep Drift Between Stars 1 - Deep Drift Between Stars 2sunoが勝手に作ってくれたタイトルは「Deep Drift Between Stars」である。 結果としては、「whole-tone scale」が完全無視、そしてno指定している筈の楽器や声が登場して、普通のコードも鳴っていて、まったく期待とは外れた「良くあるmood music」になってしまっていた。 もしかすると僕が過去に指定している「70' progressive rock」というテイストを学習しているのかもしれない。 出てくるもののqualityは凄いものの、sunoクンはなかなか困った生成AIなのだった。
![]()
![]()
そんな午前中に上のように届いたのが、Kickstarterでプレッジしていた新デジカメである。 写真の最小サイズが無駄に大きい「3264×2448」だったり、操作性が地獄的に悪くて閉口したが、何とか使えるようになった。 ただし最大の欠点としては、これまでSONYを愛用してきたからかもしれないが、とにかく「暗い」のだった。 自分の部屋をこのように「暗く」撮れるとは思ってもいなかった。
![]()
まぁ、小さくて軽くて動画も撮れるらしいので、とりあえず持ち歩いてみようか・・・という程度で、とても日常的にこちらに切り替える、という感じにはなりそうもない。
2026年2月8日(日)
全国的に大雪でえらい事になっているのだが、浜松ではちらっと舞っただけだった。 午前のミドル、午後のアドバンスとロボット教室で暖かい部屋にいたので、寒さも気にならなかった。 今回はいずれも「1回目」ということで、あまり面白くない準備段階ぐらいで終わってしまって、けっこう時間を持て余したので、生徒たちは僕の電子工作(ゲーム)で遊んで過ごした。
![]()
アドバンスの「ピッキングロボ」の1回目は、ロボットアームの先端部分がメインであり、今回だけは手元のスイッチ(光センサ)で開閉できるアームという感じになった。 次回は先端だけ残して壊してしまうので、とりあえず「物を運ぶ」という動作を録画してみた。 これ である。
2026年2月11日(水)
もう何度目になるのか分からなくなってきたが、今年に入って毎週欠かさずの「筑波行脚」→「柏行脚」(生きてるうちに母親と会う)がまだまだ続いている。 以下の上2枚は一昨日2/9の浜松→東京の車窓の富士山、下1枚は昨日2/10の復路の車窓の富士山である。 たった15分間の面会のために1日を費やすので「時間潰し」というのも大変なのだが、一昨日の晩はBIG ECHO柏駅前で3時間35曲を完全復活で完走したものの、昨日の午前はカラオケBanBanのフリータイムに入って完全な「休憩タイム」となり、暖房の入った部屋で体力回復のためにウトウト過ごすという時間になった。
![]()
昨日の午後には阪神タイガースファンクラブから「会員先行抽選」の結果メイルが届いて、希望を出した2試合のうち1試合が当選となり、これで今年も甲子園ライトスタンドでの巨人戦に行けることになった。 なんだか面倒なのだが、1週間の期限内にローソンに走ってチケットを入手することになる。
今日と明日はロボット教室のサンプル教材の改訂や改造をする期間(さらに処方箋のための通院)、そして週末はいよいよ3日間連続のロボット(2/15の朝は浜松シティマラソンの交通規制を避けるのがやや心配)という日々である。 来週末の日本音楽即興学会での発表プレゼンの準備は、それらの合間に少しずつ進めることになり、sunoで遊ぶ余裕はちょっとないかもしれない。
![]()
今日は祝日で、朝日杯の準決勝を同時にやっていて、午後には決勝まである。 このところ忙しいのであまりウォッチできていないのだが、確か王将戦で永瀬九段に1勝2敗、棋王戦で増田九段に0勝1敗、といずれも藤井六冠が苦戦している(ある意味で面白い展開)ようで、ちょっと気になっているのだった。
![]()
そして、当初の予定では明日にやるつもりだった「ミドル」のサンプル教材「メリーゴーランド」を、一気に片付けてしまった。 いつもの感じのメロディー(許容音階がCDEFGABの7音のみ)なのは仕方ないとして、まぁこんなものだろう。 録画してみたYouTube動画は これ である。
![]()
ちなみに朝日杯の決勝は予想通りに「藤井vs伊藤」となったのだが、なんと放送事故というのか通信事故というのか、Abemaの中継画面が真っ黒になって止まり、その後に上のような無音静止画が延々と続くことになった。 コメント欄は生きているので、皆んなどんどんYouTube中継に引っ越ししている様子が刻々と分かる・・・という面白いことになった。
2026年2月12日(木)
昨日の朝日杯は藤井勝利の瞬間を見届けたが、流石の「3ニ歩」だった。 そして昨日の買い物の後でローソンに行ったところ、抽選に当たったチケットを購入するだけの筈だったのに、「Loppi」(ローソンチケット端末)の前でスマホの当選通知メイルがQRコードを表示せずにフリーズする、という現象に泣かされた。 今日、再び通院の後でチャレンジしようと思っているのだが、その理由が判明した。
![]()
僕は1週間前の「ファンクラブ先行抽選受付」に応募して当選したのだが、その当選通知連絡は一昨日の15時からで、抽選に落ちた「ファンクラブ先行一般受付」というのが昨日の12時にスタートしていたのである。 上のニュースヘッドラインで気付いたのだが、抽選に落ちた多数の阪神ファンが一斉に「甲子園チケット」にアクセスしていた時間帯だったのだろう。 1日たって、甲子園巨人戦ライトスタンドは、ほぼファンクラブ枠として売り切れて、後日の「一般販売」にはもう殆ど残っていないのだ。
![]()
そして午後には余裕があったので、数日前に完成していた「ロボプロ」クラスのサンプル教材ロボット(プレステのリモコンで操縦するタンク)に、optionとして8*8マトリクスLEDモジュールを搭載して、リモコン操縦の合間に色々なパターンを表示する・・・というマルチタスクのサンプルを作ってみた。 録画してみたYouTube動画は これ であり、Arduinoスケッチは以下のようになった。
まぁ、例によって過去に作ったものの流用(都合の悪いものはどんどんカットするだけ)なのだが、今回初めてArduino IDEのエディタ機能(一括変換)を活用してみて、まずまず出来る奴だ、と確認できたのも収穫である。 最初はLEDがウンともスンとも表示せず、という忘却の彼方にあるところを、1列単位で表示する命令がライブラリに無くてロボプロ初級の「画素ごと表示」ルーチンに渡していちいち表示したり・・・とけっこう苦労したのだが、後半はかなり飛ばして一気に完成した。 まぁ、たまにこういうのをやらないと呆けてきてしまうので、自主リハビリという事なのだ。#include <RPlib.h> #include <PS2X_lib.h> #include <Sprite.h> #include <Matrix.h> Matrix myMatrix = Matrix(11, 13, 1); RPmotor mc1(MC1); RPmotor mc2(MC2); PS2X ps2x; int rx, lx; int x,y,x1,y1,x2,y2,counter,mode; int timing1=0, timing2=0, disp_speed=2500, scan_timer=0; int ttable[8][8]; long pattern[3]; void setup(){ table_set(); myMatrix.setBrightness(2); myMatrix.clear(); ps2x.config_gamepad(13, 11, 10, 12, true, true); randomSeed(analogRead(0)); } void loop(){ display_patterns(); if(++timing1 > 1000){ timing1 = 0; rx_controller(); delay(10); if(++timing2 > 500){ timing2 = 0; pattern[0] = random(0,22); pattern[1] = 0; pattern[2] = 0; } } } void rx_controller(){ ps2x.read_gamepad(); rx = ps2x.Analog(PSS_RY); lx = ps2x.Analog(PSS_LY); mc1.rotate(-rx); mc2.rotate(lx); } void matrix_disp(int y,int z){ for(int i=0; i<8; i++){ if( (z & (1<<i)) != 0 ) myMatrix.write(i, y-1, HIGH); else myMatrix.write(i, y-1, LOW); } } void display_patterns(){ int k,n; switch(pattern[0]){ case(2): if(pattern[2] == 0){ if(pattern[1] == 8) for(k=1; k<9; k++) matrix_disp(k, 0x00); else{ for(n=0; n<8; n++){ matrix_disp(1+n, bit_reverse(ttable[7-pattern[1]][n])); } } if(++pattern[1]>8) pattern[1] = 0; } if(++pattern[2] > disp_speed*3) pattern[2] = 0; break; case(1): if(pattern[2] == 0){ if(pattern[1] == 8) for(k=1; k<9; k++) matrix_disp(k, 0x00); else{ for(n=0; n<8; n++){ matrix_disp(1+n, bit_reverse(ttable[pattern[1]][n])); } } if(++pattern[1]>8) pattern[1] = 0; } if(++pattern[2] > disp_speed*3) pattern[2] = 0; break; case(0): if(pattern[2] == 0){ if(pattern[1] == 8) for(k=1; k<9; k++) matrix_disp(k, 0x00); else{ for(n=0; n<8; n++){ matrix_disp(8-n, bit_reverse(ttable[7-pattern[1]][n])); } } if(++pattern[1]>8) pattern[1] = 0; } if(++pattern[2] > disp_speed*3) pattern[2] = 0; break; case(5): if(pattern[2] == 0){ if(pattern[1] == 8) for(k=1; k<9; k++) matrix_disp(k, 0x00); else{ for(n=0; n<8; n++){ matrix_disp(8-n, bit_reverse(ttable[pattern[1]][n])); } } if(++pattern[1]>8) pattern[1] = 0; } if(++pattern[2] > disp_speed*3) pattern[2] = 0; break; case(7): if(pattern[2] == 0){ if(pattern[1] == 8) for(k=1; k<9; k++) matrix_disp(k, 0x00); else{ for(n=0; n<8; n++){ matrix_disp(1+n, ttable[7-pattern[1]][n]); } } if(++pattern[1]>8) pattern[1] = 0; } if(++pattern[2] > disp_speed*3) pattern[2] = 0; break; case(9): if(pattern[2] == 0){ if(pattern[1] == 8) for(k=1; k<9; k++) matrix_disp(k, 0x00); else{ for(n=0; n<8; n++){ matrix_disp(1+n, ttable[pattern[1]][n]); } } if(++pattern[1]>8) pattern[1] = 0; } if(++pattern[2] > disp_speed*3) pattern[2] = 0; break; case(11): if(pattern[2] == 0){ if(pattern[1] == 8) for(k=1; k<9; k++) matrix_disp(k, 0x00); else{ for(n=0; n<8; n++){ matrix_disp(8-n, ttable[7-pattern[1]][n]); } } if(++pattern[1]>8) pattern[1] = 0; } if(++pattern[2] > disp_speed*3) pattern[2] = 0; break; case(13): if(pattern[2] == 0){ if(pattern[1] == 8) for(k=1; k<9; k++) matrix_disp(k, 0x00); else{ for(n=0; n<8; n++){ matrix_disp(8-n, ttable[pattern[1]][n]); } } if(++pattern[1]>8) pattern[1] = 0; } if(++pattern[2] > disp_speed*3) pattern[2] = 0; break; case(3): if(pattern[2] == 0){ for(n=7; n>-1; n--){ if(n == pattern[1]) matrix_disp(8-n, 0xff); else matrix_disp(8-n, 0x80 >> pattern[1]); } if(++pattern[1]>7) pattern[1] = 0; } if(++pattern[2] > disp_speed*4) pattern[2] = 0; break; case(15): if(pattern[2] == 0){ for(n=7; n>-1; n--){ if(n == pattern[1]) matrix_disp(8-n, 0xff); else matrix_disp(8-n, 1 << pattern[1]); } if(++pattern[1]>7) pattern[1] = 0; } if(++pattern[2] > disp_speed*4) pattern[2] = 0; break; case(16): if(pattern[2] == 0){ for(n=0; n<8; n++){ if(n == pattern[1]) matrix_disp(n+1, 0xff); else matrix_disp(n+1, 0x80 >> pattern[1]); } if(++pattern[1]>7) pattern[1] = 0; } if(++pattern[2] > disp_speed*4) pattern[2] = 0; break; case(21): if(pattern[2] == 0){ for(n=0; n<8; n++){ if(n == pattern[1]) matrix_disp(n+1, 0xff); else matrix_disp(n+1, 1 << pattern[1]); } if(++pattern[1]>7) pattern[1] = 0; } if(++pattern[2] > disp_speed*4) pattern[2] = 0; break; case(20): if(pattern[2] == 0){ if(pattern[1] == 4){ for(k=1; k<9; k++) matrix_disp(k, 0x00); } else if(pattern[1] == 3){ matrix_disp(1, 0x81); matrix_disp(8, 0x81); matrix_disp(2, 0x00); matrix_disp(7, 0x00); matrix_disp(3, 0x00); matrix_disp(6, 0x00); matrix_disp(4, 0x00); matrix_disp(5, 0x00); } else if(pattern[1] == 2){ matrix_disp(1, 0x81); matrix_disp(8, 0x81); matrix_disp(2, 0x42); matrix_disp(7, 0x42); matrix_disp(3, 0x00); matrix_disp(6, 0x00); matrix_disp(4, 0x00); matrix_disp(5, 0x00); } else if(pattern[1] == 1){ matrix_disp(1, 0x81); matrix_disp(8, 0x81); matrix_disp(2, 0x42); matrix_disp(7, 0x42); matrix_disp(3, 0x24); matrix_disp(6, 0x24); matrix_disp(4, 0x00); matrix_disp(5, 0x00); } else{ matrix_disp(1, 0x81); matrix_disp(8, 0x81); matrix_disp(2, 0x42); matrix_disp(7, 0x42); matrix_disp(3, 0x24); matrix_disp(6, 0x24); matrix_disp(4, 0x18); matrix_disp(5, 0x18); } if(++pattern[1]>4) pattern[1] = 0; } if(++pattern[2] > disp_speed*6) pattern[2] = 0; break; case(19): if(pattern[2] == 0){ if(pattern[1] == 0){ for(k=1; k<9; k++) matrix_disp(k, 0x00); } else if(pattern[1] == 1){ matrix_disp(1, 0x81); matrix_disp(8, 0x81); matrix_disp(2, 0x00); matrix_disp(7, 0x00); matrix_disp(3, 0x00); matrix_disp(6, 0x00); matrix_disp(4, 0x00); matrix_disp(5, 0x00); } else if(pattern[1] == 2){ matrix_disp(1, 0x81); matrix_disp(8, 0x81); matrix_disp(2, 0x42); matrix_disp(7, 0x42); matrix_disp(3, 0x00); matrix_disp(6, 0x00); matrix_disp(4, 0x00); matrix_disp(5, 0x00); } else if(pattern[1] == 3){ matrix_disp(1, 0x81); matrix_disp(8, 0x81); matrix_disp(2, 0x42); matrix_disp(7, 0x42); matrix_disp(3, 0x24); matrix_disp(6, 0x24); matrix_disp(4, 0x00); matrix_disp(5, 0x00); } else{ matrix_disp(1, 0x81); matrix_disp(8, 0x81); matrix_disp(2, 0x42); matrix_disp(7, 0x42); matrix_disp(3, 0x24); matrix_disp(6, 0x24); matrix_disp(4, 0x18); matrix_disp(5, 0x18); } if(++pattern[1]>4) pattern[1] = 0; } if(++pattern[2] > disp_speed*6) pattern[2] = 0; break; case(18): if(pattern[2] == 0){ if(pattern[1] == 3){ matrix_disp(1, 0xff); matrix_disp(8, 0xff); matrix_disp(2, 0x81); matrix_disp(7, 0x81); matrix_disp(3, 0x81); matrix_disp(6, 0x81); matrix_disp(4, 0x81); matrix_disp(5, 0x81); } else if(pattern[1] == 2){ matrix_disp(1, 0x00); matrix_disp(8, 0x00); matrix_disp(2, 0x7e); matrix_disp(7, 0x7e); matrix_disp(3, 0x42); matrix_disp(6, 0x42); matrix_disp(4, 0x42); matrix_disp(5, 0x42); } else if(pattern[1] == 1){ matrix_disp(1, 0x00); matrix_disp(8, 0x00); matrix_disp(2, 0x00); matrix_disp(7, 0x00); matrix_disp(3, 0x3c); matrix_disp(6, 0x3c); matrix_disp(4, 0x24); matrix_disp(5, 0x24); } else{ matrix_disp(1, 0x00); matrix_disp(8, 0x00); matrix_disp(2, 0x00); matrix_disp(7, 0x00); matrix_disp(3, 0x00); matrix_disp(6, 0x00); matrix_disp(4, 0x18); matrix_disp(5, 0x18); } if(++pattern[1]>3) pattern[1] = 0; } if(++pattern[2] > disp_speed*8) pattern[2] = 0; break; case(17): if(pattern[2] == 0){ if(pattern[1] == 0){ matrix_disp(1, 0xff); matrix_disp(8, 0xff); matrix_disp(2, 0x81); matrix_disp(7, 0x81); matrix_disp(3, 0x81); matrix_disp(6, 0x81); matrix_disp(4, 0x81); matrix_disp(5, 0x81); } else if(pattern[1] == 1){ matrix_disp(1, 0x00); matrix_disp(8, 0x00); matrix_disp(2, 0x7e); matrix_disp(7, 0x7e); matrix_disp(3, 0x42); matrix_disp(6, 0x42); matrix_disp(4, 0x42); matrix_disp(5, 0x42); } else if(pattern[1] == 2){ matrix_disp(1, 0x00); matrix_disp(8, 0x00); matrix_disp(2, 0x00); matrix_disp(7, 0x00); matrix_disp(3, 0x3c); matrix_disp(6, 0x3c); matrix_disp(4, 0x24); matrix_disp(5, 0x24); } else{ matrix_disp(1, 0x00); matrix_disp(8, 0x00); matrix_disp(2, 0x00); matrix_disp(7, 0x00); matrix_disp(3, 0x00); matrix_disp(6, 0x00); matrix_disp(4, 0x18); matrix_disp(5, 0x18); } if(++pattern[1]>3) pattern[1] = 0; } if(++pattern[2] > disp_speed*8) pattern[2] = 0; break; case(14): if(pattern[2] == 0){ matrix_disp(((15-pattern[1])%8)+1, (0xaa00 >> (pattern[1]+1)) & 0xff); if(++pattern[1]>15) pattern[1] = 0; } if(++pattern[2] > disp_speed*2) pattern[2] = 0; break; case(12): if(pattern[2] == 0){ matrix_disp((pattern[1]%8)+1, (0xaa00 >> (pattern[1]+1)) & 0xff); if(++pattern[1]>15) pattern[1] = 0; } if(++pattern[2] > disp_speed*2) pattern[2] = 0; break; case(10): if(pattern[2] == 0){ matrix_disp(((15-pattern[1])%8)+1, (0xcc00 >> (pattern[1]+1)) & 0xff); if(++pattern[1]>15) pattern[1] = 0; } if(++pattern[2]>disp_speed*2) pattern[2] = 0; break; case(8): if(pattern[2] == 0){ matrix_disp((pattern[1]%8)+1, (0xcc00 >> (pattern[1]+1)) & 0xff); if(++pattern[1]>15) pattern[1] = 0; } if(++pattern[2] > disp_speed*2) pattern[2] = 0; break; case(6): if(pattern[2] == 0){ matrix_disp(((15-pattern[1])%8)+1, (0xff00 >> (pattern[1]+1)) & 0xff); if(++pattern[1]>15) pattern[1] = 0; } if(++pattern[2] > disp_speed*2) pattern[2] = 0; break; case(4): if(pattern[2] == 0){ matrix_disp((pattern[1]%8)+1, (0xff00 >> (pattern[1]+1)) & 0xff); if(++pattern[1]>15) pattern[1] = 0; } if(++pattern[2] > disp_speed*2) pattern[2] = 0; break; } } int bit_reverse(int k){ return( ((k&1)<<7)|((k&2)<<5)|((k&4)<<3)|((k&8)<<1)|((k&16)>>1)|((k&32)>>3)|((k&64)>>5)|((k&128)>>7) ); } void table_set(){ int i; ttable[0][0] = 0x01; for(i=1; i<8; i++) ttable[0][i] = 0x00; ttable[1][0] = 0x02; ttable[1][1] = 0x03; for(i=2; i<8; i++) ttable[1][i] = 0x00; for(i=0; i<2; i++) ttable[2][i] = 0x04; ttable[2][2] = 0x07; for(i=3; i<8; i++) ttable[2][i] = 0x00; for(i=0; i<3; i++) ttable[3][i] = 0x08; ttable[3][3] = 0x0f; for(i=4; i<8; i++) ttable[3][i] = 0x00; for(i=0; i<4; i++) ttable[4][i] = 0x10; ttable[4][4] = 0x1f; for(i=5; i<8; i++) ttable[4][i] = 0x00; for(i=0; i<5; i++) ttable[5][i] = 0x20; ttable[5][5] = 0x3f; for(i=6; i<8; i++) ttable[5][i] = 0x00; for(i=0; i<6; i++) ttable[6][i] = 0x40; ttable[6][6] = 0x7f; ttable[6][7] = 0x00; for(i=0; i<7; i++) ttable[7][i] = 0x80; ttable[7][7] = 0xff; }2026年2月14日(土)
なるべくこの日記では、文章だけでなく写真などを入れるように努力しているのだが、今日は文字だけになりそうだ。
昨日はロボット教室のアドバンス1回目があったのだが、明日のミドルとアドバンスは2回目なので、今日の午前はサンプル教材ロボットを「アドバンス1回目→2回目」に改訂する作業に追われた。 もちろん既に「ミドル1回目→2回目」という改訂は完了していて、午後には「ロボプロ(RP1)」の教室に出掛けることになる。 ちなみにアドバンスのテーマは「ピッキングロボ」なのだが、RP2でやった「ロボットアーム」の最終形がかなり近いものだったので、しばらく放置していたロボットアームにArduinoを繋いでSketchを書き込んだところ、 この動画 のような動作を確認できたので、機会があればアドバンスの生徒に見せてみよう。
奈良学園大からはまた来年度も「先端リハビリテーション論」の非常勤の依頼が届いた。 15週のうちの5週分の担当で、去年と一昨年はカリキュラム改訂の重複時期で2回同じことをやったのだが、ようやく2日間(1日目の3-5限と2日目の1-2限)というペースに戻る。
Amazonからは、CPAP用「口閉じテープ」と一緒に注文していたブツが届いたのだが、これはまたちょっと厄介そうで、しばらくは手元に寝かせて眺めていることになりそうだ。2026年2月18日(水)
一昨日と昨日もまた、柏に出掛けて母親に面会(15分×2日)をしてきた。 酸素吸入は無くなって自然呼吸でSP02はほぼ100、栄養補給が点滴のみなのでさらに痩せ細っているものの、アイコンタクトや頷きやミニホワイトボードを使っての筆談など、まだコミュニケーションが生きているのだ。 忘れてしまいそうなので以下にカレンダーを置いてみたが、赤線の日には筑波/柏に行っていて、来週2/24-25も予約済である。
![]()
今回は東京までの新幹線の車内で、今週末に迫ってきたJASMIM(日本音楽即興学会)での発表プレゼン作りを大幅に進めて、ほぼ完成まで到達した。 現状でKetnoteのスライド数は45ページと例によって時間切れの恐れが多い盛り沢山な内容だが、最後が肝心なので、尻切れにならないように進めたい。
また、大会発表者の「抄録集」が届いたが、なかなか今回も面白そうな内容が目白押しであり、とても内職でArduinoプログラミングなどを進めては勿体無い・・・と判明した。 当初は持参予定だったArduino一式は持たず、ここは集中して日本音楽即興学会大会に臨むことにした。
ネットからは、水面下で盛り上がっているらしいGrokで作ったという 天安門 という動画も届いたが、まぁ水面下の人々にはあまり深入りしないでおこう。2026年2月19日(木)
今週末の学会出張に向けてちょっとだけ余裕があったので、久しぶりにMacBookAir(Apple Silicon)を立ち上げてみると、繋いでいた筈のWiFiが外れて(見失われて)いたり、OSを15.7.4にアップロードを求められたり・・・と色々追われた。 そして、せっかくなのでsunoもやってみた。
●本日のsuno生成音楽(2026.02.19)●
与えた指定 : Instrumental
与えたPrompt : instrumental only, no vocal part, no singing, dark midnight, horror, deep reverb, eccentric, crazy, scream, very slow tempo, scary, magical, gradually awe-inspiring, pessimistic, faint glimmer of hope in the far distant future
出てきたPrompt : metal, Eerie cinematic soundscape at glacial tempo: bowed metal, warped piano clusters, sub-bass swells in cavernous reverb, Start almost inaudible with distant rumbles and unstable drones; gradually introduce detuned strings, reversed impacts, and mangled choral pads that feel like distant screams, Final third blooms into awe-struck, ominous harmony with a thin, high, hopeful synth thread barely cutting through the gloom, faint, inspiring, deep, vocal, magical, slow
Result : Midnight Spiral Rite 1 - Midnight Spiral Rite 2タイトルは「Midnight Spiral Rite」である。 おどろおどろしい音楽を期待していて、まずまず前半はいい感じだな・・・と思っていると、突然に後半はいつものようにロックになってしまって、余程、sunoはメタルが好きなのだなぁとまた確認した。 これではいずれも、ちょっと「イイネ」は付けられない。
そこで、このプロンプトに「not Rock, not intense, no Drums, no dramatic changes」という否定的な指定を念押しして加えてみた。 そこで出来てきたのが以下である。
●本日のsuno生成音楽(2026.02.19)●
与えた指定 : Instrumental
与えたPrompt : instrumental only, no vocal part, no singing, not Rock, not intense, no Drums, no dramatic changes, dark midnight, horror, deep reverb, eccentric, crazy, scream, very slow tempo, scary, magical, gradually awe-inspiring, pessimistic, faint glimmer of hope in the far distant future
出てきたPrompt : rock, Glacial tempo horror-ambient built from detuned music box, bowed glass, and distant sub drones drenched in cavernous reverb; eerie aleatoric piano clusters and reversed chimes drift in and out, Texture starts sparse and shadowy, slowly swelling with dissonant choirs and warped string harmonics that grow more majestic yet unsettling, Final minutes introduce a barely-audible high, pure tone and soft harmonic overtones that suggest a far-off, fragile hope while the low end stays heavy and pessimistic, slow, faint, dramatic, inspiring, vocal, magical, deep
Result : Midnight Teeth of the World 1 - Midnight Teeth of the World 2タイトルは「Midnight Teeth of the World」である。 今度は念押しで激しいロックは来なかったのだが、陳腐なdiminishコードとminorコードの進行、そして絃楽器のパートがいかにもな感じで歌ってくれて、これもまぁ、イマイチなのだった。 久しぶりに2回連続(4曲)の試作となったが、僕の方の進展が無いからなのか、なかなか上手くいかないようである。
京都精華大の「生成音楽論」に向けての準備も、今週末の学会発表が終わればぼちぼち本格化するので、教材作りと共にsuno試作・実験のペースも上げていかないといけない。2026年2月20日(金)
いよいよ明日はJASMIM大会に出掛けるという日だが、フト調べてみると、日本時間学会の今年の大会は「6/13-14・神戸大学」と予告されていて、音楽情報科学研究会「音学シンポジウム」は「6/5-6・電気通信大学」と予告されていた。 少なくともこの両方に参加することは無理であり、去年は大阪万博2025出演のために両方ともパスしていたので、何とか片方に参加する方向性を検討する時期となった。
そして今月末(2/28-3/2)に名古屋工業大学で開催される音楽情報科学研究会のプログラムが公開されているのにも気付いた。 とりあえず例によって、タイトルだけでも以下にコピペ手修正でメモを置いておこう。例年、2月/3月の音楽情報科学研究会は、それぞれの大学での修士論文などの発表が多くあり、いつも以上に「重箱の隅」研究も散見したりするのだが、sunoに触れてきた身からすると、いやいやもっと世界は凄いところに行ってるでしょう・・・という突っ込みどころも散見した。 まぁ、自分を棚に上げての感想なので、これはここだけの愚痴である。第145回音楽情報科学研究発表会 日程 : 2026年2月28日(土) - 3月2日(火) 会場 : 名古屋工業大学 4号館 1. 歩行動作に基づくインタラクティブな音楽変化に対する主体感の評価 2. ジャズ音楽のリズム量子化のためのビート存在確率推定の改善 3. 音楽基盤モデルにおける音響特徴と内在音高螺旋の関係 4. BERTを用いた音楽生成モデルの構築およびコード進行を条件としたメロディ生成の有効性について 5. 多次元的な歌声評価指標の構築に向けた特徴重要度分析:話声との比較 6. 基礎練習支援システムPracToneVisの一般的なフレーズへの拡張 7. いびきキャンセリングイヤホンの検討 8. スキル要素の分割とグラフニューラルネットワークに基づくソルフェージュ視唱の知識追跡モデルの提案 9. オーケストラの同一曲における類似性の要因分析 10. 拍子変換を用いた変拍子メロディ生成手法の開発 11. 合唱曲の自動ピアノソロ編曲に向けた伴奏生成手法の比較 12. 複数楽曲間の類似要素の把握に向けた楽曲間時系列類似度マップの作成 13. モーラ数制御と意味埋め込みを用いた英日歌詞翻訳モデル 14. 口唇形状の類似性を考慮した歌詞翻訳のための発音のモデル化 15. 大規模言語モデルと自己修正に基づく歌唱可能な歌詞への phonemic translation 16. オーディオゲームにおける三次元定位表現の検討 -無響室と6チャンネルの音響システムを用いた 3種類のゲームの制作を通じて- 17. アカペラ練習支援のための録音分析と可視化 — 全パート平均を基準とする相対ピッチ評価と絶対ピッチ評価の併用 — 18. スラップ奏法支援を目的とした運指補助を行う半自動ベース演奏ロボットの開発 19. 音素アライメント情報を用いた重唱音源からのリードボーカル分離 20. サウンドトラックにおける和声構造への還元と情動価の保存性に関する検証 21. MixQuery:任意の楽曲から選択した複数楽器パートの音色を同時に考慮する楽曲検索システム 22. ドラムループ素材のモーフィング:複数手法の比較検討 23. ヴァイオリン演奏の立ち上がり部における音響的過渡特性を用いた感情分類の検討 24. ゲームの中の一貫性とシーンごとの多様性を考慮するBGM検索エンジン:重み付き距離学習による改良 25. 歌声に含まれる微分音を演奏可能な鍵盤型インタフェースの提案と評価 26. 映像の自然比率と音楽の変化がリラックス効果に及ぼす影響 27. 「お笑い」の評価基準としての笑いの定量化に関する検討 28. 印象の経時変化に強い災害警報音の作成〜SONの付加による慣れの抑制〜 29. Language Independent Speech-to-Singing-Voice Conversion 30. ヒップホップのサブジャンル分類における社会文化的要因の寄与度分析 31. 音源定位を目的とした正中面頭部伝達関数におけるノッチ抽出手法の検討ー動的計画法によるパレート最適解探索の適用ー 32. ティンパニの音響情報と音楽表現ー演奏家の視点からー 33. MUS145国際会議既発表・デモセッション 34.マーチングバンドにおけるドリル作成支援に向けた効率的なデータ記述方式の検討 35.12平均律の楽譜で微分音楽曲の演奏を可能にするシステムの提案 36.直感的なタッチ操作可能な微分音演奏支援システム 37.カラーバーの段階的非表示による読譜誘導型ピアノ演奏支援システムの試作 38.CVAEを用いた演奏入力対応型メロディ生成システム 39.12平均律と微分音単音を統合したリアルタイム演奏システム 40.ビブラート特徴量が音源分離から受ける影響の調査 41.VAEを用いたピアノ演奏表情付けモデルの構築 42.BGM付き漫画ビューアのための音楽推薦システム:シーン抽出とBGM推薦の性能評価 43.歩行動作の可聴化に向けた特徴抽出 44.VR音楽鑑賞が楽曲の鑑賞時間に与える影響 45.音色の階層的ネットワーク可視化によるカテゴリ横断型音色探索 46.条件付きオートエンコーダによる音色カテゴリ名を意味的ラベルに適用したシンセサイザの提案 47.GNNを用いた非和声音分析の一検討 48.微分音を用いたポップソングの制作と主観評価による傾向分析 49. 深層学習に基づく予測と探索アルゴリズムによるオーディオエフェクト推定 50. 照明演出の支援を目的とした音響情報に基づく演出構成の自動化 51. Analysis and Quantification of Inharmonicity in Acoustic Bass Guitar for Physical Modeling Synthesis 52. 対話型遺伝的アルゴリズムを用いた当選告知音の生成手法の提案 53. ピアノ演奏におけるポリリズム練習支援システム 54. 音楽基盤モデルの表現形成における学習過程の解析手法の検討 55. 記号的音楽表現の汎用基盤モデル『MORTM』の実現に向けて 56 骨格動作特徴に基づく楽曲自動生成 57. LLMによる推薦楽曲の音響特徴・歌詞特徴にもとづく類似性の可視化とプレイリストの生成 58. 歌声の発音タイミングを考慮した伴奏システム 59. 人間ーAI斉唱において合成歌声特徴量の変調が斉唱らしさにもたらす効果 60. 人間-AI斉唱における合成歌声の呼吸パラメータの歌唱者間リアルタイム同期 61. 状態空間モデルMambaによる連続的感情認識と感情指定に基づく音楽生成 62. 日本語ヒット曲における歌詞の感情とコード進行の関係の可視化 63. 歌詞に内在する意味を反映した言語情報提示に基づく試聴不要な楽曲探索支援の提案 64. 初学者のためのアンサンブル和音演奏における純正律ピッチコントロール支援システム 65. 音響フィードバックを用いた伴奏システム制御手法 66. OneCamLiveFX:一視点固定型ライブ映像配信のための映像効果付与システムとその運用 67. マルチタスク学習による拍構造・ローカルテンポを用いたビート推定 68. ジェスチャー入力による楽器演奏パフォーマンス鑑賞時に生じる楽器の存在錯覚の検討 69. ライブエレクトロニクス実践における身体操作・音響システム・外部抽象化層の三層循環モデル 70. 自然言語と演奏表情の対照学習手法とその応用2026年2月23日(月)
![]()
一昨日と昨日は このように 日本音楽即興学会大会(日大文理学部)に行ってきた。 予稿は これ 、プレゼンは これ である。
今回、初めて、Kickstarterで仕入れた新しいデジカメの試運転となったが、このデジカメには、主に操作性の面で色々と課題も散見した。 上の富士山は行きの新幹線から撮ったものだが、どうもズーム操作が詳細不明だったので、遠景から撮った元写真(最小サイズの4000*3000pixels)をそのまま置いてみた。
![]()
そして今回の最大の収穫は、基調講演の大黒先生のトークで、思わず上の2冊をAmazonで注文した。 内受容感覚からダマシオのSMHまで、僕が大好きな視点がずばり一致していて、これは素晴らしい研究者である。 この本のうちの1冊は、3日間、飲みながらノリと勢いで書いた論文が通ってしまって、その日本語解説版なのだというから、もう読む前から楽しみなのだ。
![]()
すると突然に、SUACの元同僚の和田先生からのメイルが届いた。 去年はSUAC開学から一緒だった佐藤先生だけだったのだが、なんと今年は元同僚から、羽田先生・的場先生・日比谷先生の3人が定年退官なのだという。 例によって突然に直前の案内でドタバタしたのだが、なんとか駆けつけられそうな調整が出来た。 まぁ、ここは駆け付けておかないと。
2026年2月24日(火)
今日から明日は、また柏行脚で、母親との15分ずつ2日の面会を求めて新幹線に乗る。 「ジパング倶楽部」の3割引きもだいぶ活用されていて、あと少しでリミットの20回になりそうな感じだ。 いつもはこの日記をスキップするのだが、出掛けるまでにたまたま30分ほど時間があったので、これを書いている。
ロボット教室では、「ミドル」で2クラス、「アドバンス」で2クラス、「ロボプロ」で1クラスを担当してきたのだが、4月からはロボプロ進級者が6人ほどいるので、増設することになった。 一つは葵町教室のアドバンス(時間を30分繰り上げ)の後に設定した(参加者2人)が、もう一つは佐鳴台教室のロボプロ(現在RP1の3人が受講)を「複式学級」とした。 RP1の3人がRP2に進級しつつ、新しくRP1に来る4人とで、計7人のクラス(2学年)が同時に同じ部屋で学ぶ、という変則的なスタイルとなる。ここでWikipediaの 複式学級 というのを見てみたのだが、なんとその中に「教育研究のために複式学級編制がいくつかの国立大学法人附属小学校において行われており、金沢大学附属小学校、茨城大学教育学部附属小学校がその例である」 と書かれていた。
僕はこの 茨城大学教育学部附属小学校 の卒業生であり、その中に書かれている「第三学年、第四学年の若干名をあわせて学級とした複式学級があることが特色である」という、まさにその「複式の卒業生」なのだ。これはなかなか光栄な発見であり、今から思い返してみても(殆ど具体的な思い出とかがある訳ではないが)、僕は複式学級のいいところを受けて成長してきたし、SUACに至るあれこれの教育活動においても、「複式イズム」を無意識下にも体現してきたのでは・・・という思いを新たにした。
SUACデザイン学部での「長嶋ゼミ」においても、主として3-4回生のメンバーが毎週同時に集って、さらにそこに意欲ある2回生や、他ゼミの志願者や、留学生や院生など、多様なメンバーが対等に集うことでお互いに成長したのでは・・・と確信しているのだ。2026年2月26日(木)
一昨日と昨日の柏行きでは、1日目はちょうど母親が入浴した直後で額のSPO2センサも点滴も外されていて、スッキリして疲れたのか面会時間の15分間ずっと寝ていたので、ちょっと不安になった。 しかし2日目の面会はちゃんと起きていて、視線の動きからCommunicationは完璧だった。 アイコンタクトで一緒に頷き合い、ホワイトボードに書いたものを声に出して読み、骨と皮だけなのに手を握れば強く握り返し、帰りの「バイバイ」はちゃんと布団から手を出して振ってくれて、この柏行脚はまだまだ続く、と確信した。
ネットからは、「なぜ戦争はなくならないのか」を図解で解説した書籍『14歳から知る戦争と人類の1万年史』が2月27日から発売開始という情報が届いた。 思わずAmazonに行って予約・・・と思ったのだが、残念なことに「振仮名(ルビ)」がある事に気付いて断念バーグした。 Newtonのルビ付きの本を購入して懲りた記憶が新しいので、ちょっとこれは勘弁なのだった。 「ルビ抜き」版が出たら、速攻購入したい。
上が今月のヒトカラ記録となったが、1回だけ素面で近所のJoyJoyに行ったものの、まだまだ行けない日々が続きそうである。 ちなみに先月の記録およびそれ以前の情報へのリンクは、 この日記の「2026年1月30日(金)」のところにある。 先々週の柏駅前のカラオケは、BIG ECHO → まねきねこ → カラオケBanBan → カラオケMac、と4カ所連続で満室(高校生が溢れていた)で蹴られて、5件目の歌広場でようやく入れたので、今回は前日にBIG ECHOアプリから予約して行った。 来週以降もこのパターンになりそうだ。
- 2026年2月5日(木) 3時間 30曲 (JoyJoy)
- 2026年2月9日(月) 3時間 35曲 (BIG ECHO 柏駅前)
- 2026年2月16日(月) 3時間 32曲 (歌広場 柏駅前)
- 2026年2月17日(火) 2.5時間 27曲 (BanBan 柏駅前)
- 2026年2月21日(土) 3時間 7曲 (ルクソール)
- 2026年2月24日(火) 3.5時間 38曲 (BIG ECHO 柏駅前)
![]()
ここで久しぶりにMacBookAir(Apple M4)を立ち上げてみた。 するとsunoが新バージョンになっていて、サインインし直してみると、上のようにdefaultのopening画面が変わっていた。 「Let the music out」ということで、これまでのcreateより前に、何でもいいから何か入れれば作曲するよ・・・という事らしい。 そしてサイコロのマークがあり、クリックしてみると、「プロンプト候補」らしきフレーズが次々に出てきた。 残念ながら最初の3つは捨ててしまったのだが、もしかすると suno君はこれまで僕がcreateしたpromptから僕の個性を学習してrecommendしているかもしれない・・・と気付いて、そこから後のフレーズをコピペしてみたのが以下である。 これはなかなか悩ましくて、僕がこれまで指定したイメージに沿っているようなものもあり、一方でsunoに入力されている世界中からのpromptから作られているようなものもあり、全てはAIの常「ブラックボックス」なのだった。
6月に音学シンポジウムに行くか、時間学会大会に行くか、いずれにも行かないか、という決定をする期限まであと10日ほどになったのだが、即興学会大会での発表が終わった今、priorityとしては「京都精華大の新科目」への準備もある、と気付いた。 そして具体的な教材コンテンツより前に、シラバスに「予習は不要(参考文献等を調べるのは自由)」・「復習については、毎回のオンデマンド教材で紹介した視点について、(1)関連情報を自力で調べて考察する(ChatGPT等に聞くのは自分のためにならないので非推奨)、(2)レポートにその検討内容や質問などを記載する、(3)この視点から生成AIによって新たに作曲した作品(duration=60sec以下のmp3ファイル)1点をレポートに添付して提出する」と書いた以上、(2)の部分の学生の生成AI利用についてもう少し厳格化しようと、「生成AI 作文 判定 ツール」で検索してみた。 すると、出るわ出るわ、以下のようにたくさんたくさん出てきた。Minimalist hardcore hip hop song about confessing your feelings Brutal synth-pop song about late night food runs Lyrical background music song about sharing music Raw sound effects song about bathroom friends Lo fi dark trap song about the after party Danceable elegant song about sharing passwords Warm high-energy song about mall food court vibes Warm pop rock song about the first snow Minor jazz fusion song about the local diner booth Upbeat melodic death metal song about catching feelings Mysterious male singer song about your childhood playground Cute trap rap song about profile stalking Happy dark electro song about heartache Ominous neurofunk song about meeting the parents Fast-paced battle rap song about memories Clear dark techno song about big dreams Lively bedroom pop song about park bench chats Eerie soft rock song about when FOMO hits Reflective dub song about nervous energyこうなると、ちょっとどんなものなのか、実力を調べてみたくなる。 せっかくなので、僕が自分自身で書いた原稿で、世の中に「生成AI」の「せ」の字も無かった頃の文章というのがいいだろう。 そこで、僕のサイトに置かれた論文の中でたしか昔はPDFでなくtxtのものがあったかな・・・と調べてみると、以下のように1992年から1995年あたりに6本ほどのtxtファイルを発見したが、うち4本はLaTeXソースだったので、情報処理学会論文誌に投稿した論文の一部を切り出して材料とする事にした。 以下が3600文字ほどの、そのサンプル文章である。●AIによる生成かどうかを判定できるおすすめツール7選 https://pdf.wondershare.jp/pdf-ai/ai-essay-detector.html PDFelement 有料 HiPDF 有料 Copyleaks AI コンテンツ検出器 有料 IvyPanda Essay AI チェッカー 無料、4500文字の制限 Smodin Ai コンテンツ検出器 無料プランは制約が多い ZeroGPT 無料 Writer AI コンテンツ検出機能 無料、一度に入力できる文字数は 1500 文字まで ●生成AIチェッカー https://ai-tool.userlocal.jp/ai_classifier Web版、無料 ●AI検出器 - 信頼できるAIチェッカー https://decopy.ai/jp/ai-detector/ Web版、無料 ●【2026】今すぐ使いたい無料のAIチェッカー5選 https://manab-it.com/magazine/category/useful/ai/131 〇はファイルアップロードOK、✕はNG GPTZero 5,000文字 〇 生成AIチェッカー 10,000文字 ✕ Neural writer 10,000文字 ✕ isgen.ai 5,000文字 〇 Smodin 5,000文字 〇 ●無料AI検出器とAIチェッカー https://mydetector.ai/jp/ Web版、無料 ●無料のAI 検出器 https://smodin.io/ja/aiコンテンツ検出器 Web版、無料 ●AI 判定くん https://ai-hanbetu-kun.netlify.app/ Web版、無料 ●AIが書いた文章を見破るツール https://four-design.co.jp/atooltosee-through-sentences-written-ai-16946/ ●真正性の確保:日本で最も正確なAI検出器 https://isgen.ai/ja 有料 ●AIチェッカー(AIチェックツール)10選 https://aismiley.co.jp/ai_news/ai-check-tool-recommend-10/
![]()
ここでは、とりあえず「無料」で「アプリでなくWebサイト」形式、つまり対象の文章をコピペするだけ、という5種類の実験をしてみた。 その結果は以下のようになって、まだ生成AIの無い30年前に僕が全て手打ちで作った文章に対して、「AI使用の可能性」として、「70%」・「41%」・「27%」・「62%」・「32%」というお告げ(判定)が得られた。 いやー、まったくもって、「余計な御世話」である。この疑似Granular Synthesisシステムにおいては、リアルタイムにパラメータを制御する「動的補間手法」としてニューラルネットワークを利用した。システムとしては標準的な3層構成とし、ジョイスティック形状のセンサから与えられた2次元情報を入力データとして、前記「Grainの幅」「Grainの時間的密度」という異なる二つのパラメータ出力のマッピングを与えた。入力データとして16*16のパラメータ空間の内部の16点だけを教師データとして設定し、BP学習によって得られたニューラルネットワークにリアルタイムに任意の256点の情報をセンサから与えた。この実験の結果、パラメータ空間で離散的に与えられて学習された特性が、実際に音響としてGranular Synthesisパラメータを「良好に補間」していることが確認できた。なお、リアルタイム制御を行った実際の作品においては、学習結果を考慮して作成したテーブル参照方式による補間を行った。 16音ポリフォニックPCM音源によって、同時に16Grainを生成するとともに1秒間に数百から数千というオーダのGrainを生成できるにもかかわらず、このシステムを「疑似」Granular Synthesisと呼んだ理由は、ルーピングパラメータの設定によって「ピッチ感」が生じてしまう問題点によるものであった。これは、Grainの密度を上げるために16個の発音チャンネル全てに対してループ長を短く設定すると、繰り返し周期が短くなって特定のピッチを知覚できてしまうものであり、音楽的にGrain密度の上昇が要求されても対応できない限度があった。 そこで本システムでは、基本構成として16発音チャンネルを持つPCM音源DSPシステムを10台用意して、同時発生Grain総数を160個に拡張した。ここでポイントとなるのは、10台の電子楽器を単純に並べるような拡張ではなく、統一された制御によって動作する一体化されたシステムとして構築するところである。使用したPCM音源はパソコン拡張スロットに挿入する形状をしているために、拡張ラックに多数を並べる方法でコンパクト化を容易に実現できた。 各ボードは固定された共通のI/Oアドレスと割り込みアドレスを保有しておりバス上で競合するために、ハードウェア的な改造により個別のアドレス割り当てを設定するとともに、パソコン側とのインターフェースとして割り込みでなくポーリング方式を採用した。これはボード上のCPUファームウェアとしてGranular Synthesis処理を実現していることもあり、10台並列処理によるホスト側の負担はそれほど重くないと判断したからである。それぞれのボードにはMIDIインターフェースも搭載されているが、後述するようにこの部分は使用せず、MIDI経由の制御情報も統一的にバス経由でホスト側から与えることとした。また、ステレオのオーディオ出力については10チャンネルのステレオミキサーを共通規格ボード上に製作し同じラックに格納した。 PCM音源ボード上の制御CPUのファームウェア・プログラムについては、本来ROM化されていて機能変更は不可能なものであり、基本的にマルチティンバーMIDI音源としてしか使用できないものである。しかしホスト側パソコンとのインターフェース仕様が公開されるとともに、ボード上のワークRAM領域にファームウェアのサブルーチンをダウンロードしてここに制御を移行させる、いわば「パッチを当てる」ための手段が公開されている。本システムではこれを利用して、ホスト側パソコンからそれぞれのボードのワークRAM領域の一部にGranular Synthesis処理のためのファームウェアをダウンロードする方式を採用した。一旦この専用ファームウェアに移行したボードはリセットによってのみ通常状態に復帰する。 ファームウェアとしてMIDI監視やマルチティンバー音源処理に関する部分を省略し、16発音チャンネル全てが一つのGranular Synthesis音響を生成するために使用されるようにした。必要なパラメータはバスから与えて変更されるが、たとえばMIDIのノートオン情報に相当する情報すら省略されている。すなわち、全パラメータのセットとともに16チャンネルは楽音信号の生成を無限に続けており、出力信号が現れるかどうかはGrainの振幅制御である「音量」パラメータに依存している。 PCM音源でGranular Synthesisを実現するためには、周期的信号源としての波形メモリを非周期的に読み出すための工夫が必要である。本システムでは、ボード上に提供されている波形RAMのバスに改造を加え、アドレス空間の拡張とバスのプルダウンを行っている。すなわち、簡略形でないフルデコード方式の波形アドレス制御とともに波形メモリバスをプルダウン方式とすることで、ルーピングポイントに非該当領域が指定された区間は「無音」信号を再生することで、非周期的要素のGrain波形が生成されるようになっている。 このGrainデータについては、従来は波形ROMを変更して一周期の正弦波形状Grainに対して、2倍・3倍成分を段階的に重み付けしたGrainを作成して切り換えてみたが、聴感上はあまり劇的な変化が得られなかった。そこで本システムでは、ホスト側パソコンとのバスインターフェース経路より、波形RAMデータを直接にダウンロードする方法を採用した。この場合、実際にはボード上のCPUと通信してワークエリアに一旦転送したデータを内部波形RAMに転送するようなサービスルーチンを呼び出す必要があり、Granular Synthesis処理に入ってしまうとGrain形状の再ロードを行えない制限がある。また、もともと波形RAM容量が小さいために、古典的なGranular Synthesisの意味でのGrainについては任意形状のものが使用できるが、Granular Samplingのような長時間のGrainについては不可能である、という制限がある。 本システムでは、「疑似」でないGranular Synthesisとして十分なGrain数を確保しているものの、あくまで楽音合成の手法としては疑似的なものであり、音源システムとしての機能は各種の楽音合成パラメータがもっとも重要なものとなる。従来のシステムからの経験則として「Grainの幅」「Grainの時間的密度」が最重要であることは基本であり、今回はここに「Grainの最大振幅の時間的変化」(エンベロープ)と「Grainの定位のリアルタイム制御」(パンポット)を加えることとした。なお「Grainを配置させる乱数特性」については、関連研究として進めている「カオス情報処理」との関係に注目しているが、この点についての検討は別の機会に報告したい。 パラメータ制御の流れとしては、コンピュータ音楽を生成するメインシステムから与えられるMIDI情報をホストとなるパソコンが受信し、ここから全ボードに対する制御情報をバス経由で与える方法をとった。これはシステム全体としてGranular Synthesis音源を構成する意味からはホスト側で一元的に処理すべきこと、具体的な制御パラメータはバスによる並列転送で効率を上げたいことなどによる。具体的には、ホスト側にノートパソコンを使用してラック上に置くことで、コンパクト化とポータビリティに富んだシステムを実現することができた。 本システムはコンピュータ音楽生成のための統合環境というメインシステムから見れば、一つの「楽器」となる位置づけである。そこでメインシステムでは、リアルタイム・パフォーマンスによって生成された演奏情報やシナリオに基づく演奏情報というMIDI入力に対して、スレーブシステムとして楽音合成を実行することになる。ここで有効な手法として何度も採用されているのが、「特別なMIDIプロトコルの定義」である。具体的には、特定のMIDIチャンネルの特定のステータスをGranular Synthesis制御専用に予約して、ステータスバイトに続く2バイト、つまり128*128通りのパラメータとして各種のGranular Synthesisパラメータを割り当てた。 また、システム内部の状況をメインシステムがモニタする必要に備えて、圧縮された特別MIDIコードとして情報を出力する経路も用意した。これはメインシステムのMIDI入力マージ装置に供給され、各種MIDIセンサの情報とともにパターンマッチング部分に与えられることで、たとえば「Granular Synthesis音源が減衰モードでゼロ音量に到達した」というような情報として反映できることになる。
「おすすめツール7選」・「無料のAIチェッカー5選」・「AIチェッカー10選」という網羅的なものからは選ばず、単体として検索で出てきた「無料判定Webサイト」のたった5件であるが、その結果は「27%〜70%」と著しくバラついていて、まぁ当然なのだが「誰も信じられない」という真理がちょっと垣間見えてきた感じだ。
今日は「将棋界の一番長い日」であり、静岡でA級順位戦の最終局が一斉に指されていて、パソコンではずっとAbemaTVでのライヴ中継を流していた。 中継としては優勝(→名人戦に出る)のかかる永瀬九段(vs佐藤)と糸谷八段(vs近藤)が2画面で出ていたが、15時を過ぎると大盤解説会場での藤井名人の解説となっていた。 どうせ最後の夜戦までは見届けられないのだが、明日に結果を知るのが楽しみである。2026年2月27日(金)
今日は晩にロボット教室があるだけの日なのだが、明日に予定が目白押しのため、いつもは土曜日で行うroutine(CPAP洗浄、Martin弾き)を先週に続いて先行することになる。
昨夜の「将棋界の一番長い日」の結果は、なんと7勝1敗で並んでいた永瀬九段と糸谷八段が共に負けてのプレーオフとなり、佐藤天彦九段はギリギリ降級を免れたらしく、朝から棋譜を追いかけることになった。
そんな朝イチで届いていたKickstarterのカタログMLで、ついついプレッジしてしまったのが、下の「ビデオピンバッジ」である。 開発している中国の若者の真摯な姿に、思わず1個だけのSuper Earlybirdを押して(推して)しまった。 まぁ、そういうノリの日なのだ。
昨日、sunoの「Let the music out」、そして「生成AIで作った文章を見破る」というネタで遊んだためか、昨夜(というか今朝)には、ちょっと画期的な視点を思い付いてしまった。 これはもう、去年、万博で不義理してしまった時間学会大会での発表ネタになりそうだ・・・ということで、一気に時間学会に発表エントリーのメイルを出してみた。
そしてホテルを予約しようとして驚いたのは関西地区の宿泊費の高騰だった。 会場が神戸大なので、まぁdefaultは三宮に泊まることになるのだが、頼りの東横インは3館全て満室、仕方なく昔から愛用している「ベストリザーブ」に行ってみたものの、全て1泊2-3万円という超リッチな宿しか空いていなかった。 同窓会の水戸駅前の宿が取れた「Booking.com」に行ってみたところ、結果は同様だった。 結局、神戸との行き来の手間がかかるものの、なんとかいつもの東横イン野田駅前が確保できたが、甲子園に行く平日と土曜では値段が違っていたので、ここは「10泊すると1泊は無料」というクーポンを活用することになりそう。 先週の東横イン歌舞伎町でもこのクーポンのお世話になったところなのだが、柏詣ででポイントが増えているのだ。
![]()
そして、今朝の思い付きを確認するためにsunoを起動した。 与えたプロンプトは、まず「no lyrics, voice(scat) only, no drums, no percussion, no bass, no guitar, no rhythm, no beat, not Rock, not Jazz, not Pops」と色々と拒絶指定したのだが、前半こそ出てこなかったものの、後半にはいつものようにドラムもベースもギターも入ってきて「単なるプログレ」になってしまった。 プロンプトの後半は「slow, deep, prayer, sadness, peaceful, eternity, duration is 5 minutes」ということで、出来上がった2曲は「5分」という指定に対して「4分16秒」と「5分12秒」と、まずまず想定内だった。
●本日のsuno生成音楽(2026.02.27)●
与えた指定 : Instrumental
与えたPrompt : no lyrics, voice(scat) only, no drums, no percussion, no bass, no guitar, no rhythm, no beat, not Rock, not Jazz, not Pops, slow, deep, prayer, sadness, peaceful, eternity, duration is 5 minutes
出てきたPrompt : rock, Sparse, beatless, solo male vocal, almost chant-like; phrases drift in slow waves with long silences between them, Deep chest resonance on low notes, airy head voice on higher tones, Occasional, very soft wordless backing harmonies bloom and fade like distant choir echoes, Reverb is long and glassy, stretching each tone into a sense of stillness and eternity, Energy remains hushed and solemn throughout, a meditative arc that feels like one continuous, mournful prayer, deep, slow, jazz
Result : Breath of an Endless Evening 1 - Breath of an Endless Evening 2タイトルは「Breath of an Endless Evening」である。 よく見てみると、「出てきたPrompt」の最初が「rock」で最後が「jazz」なのだが、僕はプロンプト中に「not Rock」・「not Jazz」と指定しているのだが、suno君は例によって全く無視してくるのだった。
重要なのは「ストップウォッチ」というサイトを開いて、sunoに「create!」と指示するのとほぼ同時にstartさせて、それぞれの曲が出来上がるまでのおよその時間を計測したところである。 今回は、およそ1分56秒でduration「4分16秒」の曲を生成し、およそ2分26秒でduration「5分12秒」の曲を生成したことになるのだが、いずれも「曲の長さより短い時間で作曲した」という事を確認できた。2026年2月28日(土)
午前中に孫と今年も「イチゴ狩り」に行って、これ以上は無理、という程、美味しい苺を堪能してきた(ビタミンCを豊富に摂取)が、午後にはロボプロがあるので孫とのランチに行かずに一人、帰宅した。
![]()
そしてAmazonから届いていた、上の2冊のうち右側を最後まで読み終えた。 まぁ内容としては既視感のある事ばかりだったのでそれ程の感慨もなく、期待はもう1冊の方に移動した。 これはおそらく、来週の柏行きの時に持参して読むことになるだろう。
しかし残念だったのは、大黒先生ともあろう人が、速読でもひっかかって発覚した「誤った日本語」を放置した点である。 144ページ3行目の「脳に分配があがる」、149ページ4行目の「解析による初見を述べたい」、いずれもワープロの辞書変換の確認ミスなのだろうが、せっかくの教育的書籍がこれでは情けない。 他山の石としたい。
![]()
そして、ロボプロ教室では上のような3人の生徒のロボット実験を この動画 のように撮りまくったが、これがKickstarterで仕入れた新しいデジカメの試運転となった。 なかなか巨大な動画(1920×1080)なのだが、まずまず綺麗に撮れていた。
2026年3月1日(日)
ネットから サグラダ・ファミリア「イエス・キリストの塔」がついに完成 - 144年の建設を経て高さ世界一の教会に というニュースが届いた。
写真を見てみると、僕が 欧州ツアー2005 や 欧露ツアー2016 の時に行ったバルセロナの風景とは全く変わっていて、サグラダ・ファミリアの容貌は激変していた。 また行きたいものだ。
![]()
ロボット教室は午前のミドルと午後のアドバンスがあり、午後にはテーマが近いアドバンス2人の生徒にロボプロを紹介しつつ、 この動画 のように撮ってみたが、まぁ毎回これをするという事にはならないだろう。
![]()
帰宅して気付いたのだが、今日は棋王戦第3局だった。 そしてAbamzTVで見た時には既に増田八段の勝利となっていて、これで藤井六冠は第75期王将戦七番勝負で永瀬拓矢九段に1勝3敗、第51期棋王戦五番勝負で1勝2敗となり、いずれもタイトル失冠の「ダブルカド番」になった。 これはまぁ、目が離せないのだ。
2026年3月4日(水)
一昨日と昨日の柏行脚の往路(新幹線とTEX)では、Amazonから届いていた以下の2冊の本の残り、左の方を一気に読んだ。 しかし、なんとその中身の2/3は、2年前の右の本の内容をなぞっている(コピペでないところはまぁ良心的)だけだった。 人間の脳は統計学習・潜在学習だという基本スタンスの繰り返しなのだが、エネルギー最小化のために予定調和を求めること、一方で新規性を好むこと、などは過去の多くの研究からほぼ明らかであり、新たな収穫は無かった。
この本では、より「音楽」に特化しているのがポイントなのでそこに期待したのだが、これもだいぶ乱暴な展開で期待外れだった。 「音律ネタ」が出てきたので期待したのに、12等分平均律の他はピタゴラス律と純正律ぐらいで、200年以上も音楽家が身悶えしながら捻り出した中全音律やウェルテンパードなどの逡巡の歴史はスキップしていた。 68ページ「宇宙が奏でるハーモニー」の左ページにWhole Tone Scaleの楽譜が出てきたのを見て「お前は俺か!?」と思ったものの、単なるケプラー時代のアレでがっかりした。
![]()
何より致命的だったのは、「音楽と数学」テーマの38ページに、なんと「1オクターブの中には、単純計算でも220個(440Hz - 220Hz)の音の高さが存在しています」と真顔で書かれていたことで、思わず僕は新幹線の椅子からずっこけた。 こんな間違いをジョークでもなく(ジョークにもなっていない)書いているようでは、とても科学者とは言えない。 もう1冊の方の誤字よりも醜悪である。 この「単純計算」でその上の880Hz - 440Hzのオクターブの中には、何個の音の高さが存在しているというのだろうか。(まさか440個?)
ピタゴラスの時代から音の高さは有理数で稠密に、つまりどんな幅の中にも無数に存在しているし、僕が 音律について の最後に紹介しているように、Charles Lucy氏の音律(1オクターブ内に21種類の音程)では、その計算式に「π」を使っているので、有理数どころか無理数(それも超越数)を導入して、音の高さの密度(アレフ数)はさらに上がっているのだった。クラシックから無調の現代音楽へのスキップも同様である。 マーラー、ブルックナー、ワーグナーなどロマン派の芳醇な和声が複雑/爛熟を超えて限界になり、行き詰まったところでシェーンベルクやケージが出てくるのであって、バッハからモーツァルト、ベートーベンと一直線にとびとびでクラシックの流れを語るのもかなりの無理筋である。 結局、晩年のベートーベンの作曲の新規性が向上しているとか、ビルエバンス・ハービーハンコック・マッコイタイナーの音楽が高次モデルまで調べると違ってきたとか、実はこれは音楽分析の世界ではよく知られているのだが、そういう研究成果を再録したぐらいで、こちらの2冊目についても、残念ながら収穫は無かった。 光文社新書、朝日新書であれば出るとしても、これではとても岩波新書や講談社新書やブルーバックスでは無理だろう。
この3日間、ずっと刺激的だったのは、SketchingコミュニティにメンバーのAlasdair Allan alasdair氏からポストされた、上の(Google翻訳)超面白いアプローチである。 メンバーからのツッコミ(ここでは省略)も盛り上がっていて、まだ続いている。 「AIにプログラミングさせるのに最適なプログラミング言語は何か?」という質問は、とてつもなく深い。 だいたい、「変数名が無い」・「同等の別表現が無い」というプログラミングを、僕はちょっと想像できないのだ(別表現があるからこそプログラミングは楽しい)。 人間に読めないプログラミング言語によってAIがプログラミングした時に、その正しさを人間はどうやって測る/知ることが出来るのだろうか。1月に、AI向けに最適化されたプログラミング言語がどのようなものになるかについて考える必要があると主張する記事を書きました。 最初は、これは間違った問題を解決しているのではないかと考えました。それは部分的には正しかったかもしれません。しかし、実際に試してみたらどうなるのか、どうしても考えずにはいられませんでした。そこで、実際にやってみることにしました。 その結果、人間が読むためではなく、機械が書くために設計された言語である Vera (https://veralang.dev) が誕生しました。
核となる論点はシンプルです。モデルがコードを書く機会が増えれば、言語もそれに適応すべきであり、その逆ではないということです。プログラミング言語は常にユーザーと共に進化してきました。アセンブリ言語はハードウェアの制約から、C言語はOSのニーズから、Pythonは生産性のニーズから進化してきました。これは歴史的に見て一貫しています。 スケール、不変量の維持、波及効果の理解、時間経過に伴う状態推定。そこでVeraは、これらの問題に直接取り組みます。
すべての関数には、SMTソルバーによって検証された必須の契約(前提条件、事後条件、効果)があります。 変数名がなく、言語は型付きDe Bruijnインデックスを使用しており、命名の一貫性エラーのクラス全体が排除されています。 あらゆる構成には、正確に1つのテキスト表現があり、スタイルの選択肢や同等の表現はありません。 コンパイラエラーは自然言語の修正指示として構造化されており、修正コンテキストとしてモデルにフィードバックされるように設計されています。 デフォルトでは純粋であり、すべての状態の変化と影響は明示的に宣言され追跡されます。 完全なコンパイラパイプラインは、構文解析、型チェック、Z3による契約検証、WASMコード生成など、エンドツーエンドで動作します。代数的データ型、パターンマッチング、クロージャ、ジェネリクス、代数的効果ハンドラ、モジュール間契約検証も処理します。
しかし、最大の未解決問題は、私一人では答えられないものです。Veraは対象ユーザーによるストレステストを受けていません。モデルはVeraプログラムを書くことができます――コンパイラには、まさにそのために設計されたエージェント向けのドキュメントが付属しています――しかし、モデルが実際にVeraで既存の言語よりも信頼性の高いコードを生成するかどうかを測定するための大規模な実験はまだ実施されていません。仮説は説得力があり、ツールも存在しますが、データはまだありません。 特に歓迎したいのは、モデルをVeraに向け、その結果を報告してくれる人たちです。興味深い実験は、コンパイラが動作するかどうかではありません。モデルが、そのモデル向けに設計された言語で、実際により良いコードを書けるかどうかです。
テクノロジーがどこへ向かうのかを考えている人にとってのより広範な疑問は、開発者が人間でなくなったら開発者ツール市場はどうなるのか、ということです。
かつて人間よりも強くなってしまった囲碁AIの「AlphaGo」(Google DeepMind)が出来た時に、「AlphaGo」同士で延々と対戦させて学習した結果は人間を置いていってしまった・・・という感じだったと思うのだが、それよりもこちらは深刻である。 プログラミングAI用言語 Vera で書かれたシステムが人命に関わる動作を遂行するというのは、なかなかに、怖い。 これは音楽よりも喫緊の課題なのかもしれない。
![]()
午後に予約した歯科に行くまでの時間には、土曜日のロボプロRP1で「超音波距離センサ」を扱うということで、プレステリモコンで操縦するだけversionのスケッチにさらに同時にマトリクスLED表示を行う(テキストには無い)処理、そこに「距離センサで前方10cmに障害物があると前進だけしなくなる(後退して避けるのはOK)」という機能を追加したサンプル教材を作ってみた。 当然だがテキストを遥かに超えているものの、生徒にはこのスケッチをUSBメモリ経由で配るのだ。 動作としては この動画 のようになったが、両手でリモコンを持つと障害物の「手」が出せないのでちょっと困った。 片手で両方のノブを押してみたが、まぁ、当日は現物で示せば一目瞭然だろう。
![]()
歯科から帰ってきてまだ時間があったので、久しぶりにAmazonで仕入れた「16×16マトリクスLED」のプログラミングをやってみた。 まだゲームとしての構想に至っていないので、Arduinoプログラミングのリハビリという程度である。 このシートは、256個のRBG-LEDが元々ジグザグ状に連なっているので、それを左上ゼロ座標に補正する「point_disp()」を頑張って作っていたのだが、今「if(((p >> 4) & 1) == 0) p = (p & 0xf0) - (p & 0x0f) + 15;」という記述を見ても、全く忘却の彼方である。
これを今回、その「一列表示」と「ランダム表示」(1個点灯と2個点灯)に加えて、縦方向にジグザグ表示をして、計4つのモードをLoopする、というものになった。 上がそのソースだが、「縦方向ジグザグ」座標変換のための「zigzag()」は、「if」・「else if」文の単純な連鎖で、実に美しくない。 頑張れば「point_disp()」のようにスマートに記述できるのだろうが、まぁ今日のconditionではこれが限界だろう。 動作としては この動画 のようになったが、Webカメラの時間的分解能の限界で、あまりきちんと見えないのはご愛嬌である。# include <Adafruit_NeoPixel.h> Adafruit_NeoPixel pixels(256,6,NEO_GRB + NEO_KHZ800); int rgb[3], timing[3], pointer, mode=0; void setup(){ pixels.begin(); all_clear(); pixels.show(); nice_initial(); } void loop(){ if(++timing[0] > 100){ timing[0] = 0; if(++timing[1] > 10){ timing[1] = 0; led_display(); } } } void led_display(){ int point2; switch(mode){ case 0: all_clear(); color_set(0); point_disp(pointer); pixels.show(); break; case 2: all_clear(); color_set(0); point2 = zigzag(pointer); point_disp(point2); pixels.show(); break; case 1: all_clear(); color_set(0); point_disp(random(256)); pixels.show(); break; case 3: all_clear(); color_set(0); point_disp(random(256)); color_set(0); point_disp(random(256)); pixels.show(); break; } pointer = ++pointer % 256; if(pointer == 0) mode = ++mode % 4; } int zigzag(int i){ if(i<16) return(16*i); else if(i<32) return(16*(31-i)+1); else if(i<48) return(16*(i-32)+2); else if(i<64) return(16*(63-i)+3); else if(i<80) return(16*(i-64)+4); else if(i<96) return(16*(95-i)+5); else if(i<112) return(16*(i-96)+6); else if(i<128) return(16*(127-i)+7); else if(i<144) return(16*(i-128)+8); else if(i<160) return(16*(159-i)+9); else if(i<176) return(16*(i-160)+10); else if(i<192) return(16*(191-i)+11); else if(i<208) return(16*(i-192)+12); else if(i<224) return(16*(223-i)+13); else if(i<240) return(16*(i-224)+14); else return(16*(255-i)+15); } void point_disp(int i){ int p = 255 - i; if(((p >> 4) & 1) == 0) p = (p & 0xf0) - (p & 0x0f) + 15; pixels.setPixelColor(p, pixels.Color(rgb[0],rgb[1],rgb[2])); } void all_clear(){ for(int i=0;i<256;i++) pixels.setPixelColor(i, pixels.Color(0,0,0)); } void color_set(int mode){ int iii; if(mode == 0) iii = random(1,7); else iii = 7; switch(iii){ case 1: rgb[0]=30; rgb[1]=0; rgb[2]=0; break; case 2: rgb[0]=0; rgb[1]=30; rgb[2]=0; break; case 3: rgb[0]=0; rgb[1]=0; rgb[2]=36; break; case 4: rgb[0]=20; rgb[1]=20; rgb[2]=0; break; case 5: rgb[0]=20; rgb[1]=0; rgb[2]=20; break; case 6: rgb[0]=0; rgb[1]=20; rgb[2]=20; break; case 7: rgb[0]=25; rgb[1]=25; rgb[2]=25; break; } } void nice_initial(){ int i,j; for(i=0;i<256;i++){ for(j=0;j<3;j++){ rgb[j] = random(1,8); pixels.setPixelColor(i, pixels.Color(rgb[0],rgb[1],rgb[2])); } } pixels.show(); delay(250); for(i=0;i<256;i++){ for(j=0;j<3;j++){ rgb[j] = random(1,20); pixels.setPixelColor(i, pixels.Color(rgb[0],rgb[1],rgb[2])); } } pixels.show(); delay(250); for(i=0;i<256;i++){ for(j=0;j<3;j++){ rgb[j] = random(1,33); pixels.setPixelColor(i, pixels.Color(rgb[0],rgb[1],rgb[2])); } } pixels.show(); delay(250); all_clear(); pixels.show(); }2026年3月5日(木)
午前中にクルマ屋に行く(6ヶ月点検)予定しかないこの日は、発表エントリーだけして要旨原稿を提出していなかった、日本時間学会に向けて「ネタ」を考える日となった。 今回の発表はもちろん、sunoに代表される「生成AIネタ」と決めているのだ。 サクッと調べて出てきたのは、最後に時間学会大会で発表した2024年の作戦メモで、以下のようにその2024年も含めて、過去に僕が時間学会大会で発表してきた11回のタイトル一覧もゲット出来た。「音楽と時間」というテーマだと、直球としては第2回大会 ★ と第5回大会 ★ がモロなのだが、「音楽関連と時間」ということであれば第4/6/8/10/13回もかなり関係している。
- コンピュータ音楽における「時間」 --- 2010年6月5日『第2回大会』(山口大)
- 身体に加わる加速度とサウンドの音像移動に関する心理学実験報告(3/4)」 --- 2012年6月10日『第4回大会』(立教大)
- 音楽における人間の知覚認知と時間 --- 2013年6月8日『第5回大会』(山口大)
- 聴覚的クロノスタシスと音楽の時間について --- 2014年6月8日『第6回大会』(保険医療経営大)
- 内受容感覚バイオフィードバック反応を高速化する情動/感情 --- 2016年6月11日『第8回大会』(京都工芸繊維大)
- 自動運転車に関する時間学的考察 --- 2018年6月9日『第10回大会』(千葉大)
- 音楽情報科学における永遠の課題: レイテンシとジッタ --- 2019年6月9日『第11回大会』(山口大)
- "Risset Rhythm"音楽への道 --- 2021年6月20日『第13回大会』(オンライン)
- "We-mode認知"に関する時間学的考察 --- 2022年6月19日『第14回大会』(オンライン)
- "システム開発技術"に関する時間学的考察 --- 2023年7月2日『第15回大会』(山口大)
- ノイマンアーキテクチャの呪縛との戦い --- 2024年6月16日『第16回大会』(愛知淑徳大)
しかし、フト関連してWikipediaで 人工知能の歴史 というページに行ってしまい、ここでドップリと時間を取られることになった。 いやいや、これは「読み物」として面白いし、現在進行形の歴史なのでいつになっても完結しないのだ。
明日から3日間はロボット教室の予定が目白押し(代打の教室やスタートアップという例外的対応あり)、ということで、どうも時間学会発表のための「ネタ」は、来週の柏行きの宿題となることが確定した。 そしてここから、久しぶりにChatGPT5に行って、上の最初の質問をしたところ、その下の質問もどうぞ・・・というので質問を続けた結果の5本のログ(PDF)が出来上がった。 そして1本目では、『なぜSunoは「ピアノだけ」と指定してもドラムが入るのか』という、欲しかった情報があり、Sunoは「命令を実行するAI」ではなく「確率的に音楽を生成するAI」だからであること、「no drum」と指定したところでdrumという楽器の概念を持っていないこと、むしろ「drum」という単語に反応してしまうこと(過去に何度も確認済み)、などを知ることが出来た。 さらに、どうもsuno君は「バンド構成」にしたがるようだ・・・という体感も、厖大な世界中のバンド構成の音楽を学習しているからなのだ、と納得することも出来た。 まぁ、「話半分」としてこのChatGPTによる解説を読んだところで、多くの専門的概念/用語が登場しているので、これを活用するには相当のbackgroundが必要ということになる。2026年3月6日(金)
5ちゃんねるの全サーバーが落ちていて、余計なところに行かなくて良い(確率0.5%程度の先行情報ゲット機会も無し)、という清々しい朝である。 ニュースヘッドライン「bbynews.neocities.org」は生きているのだが、どうも日本時間で深夜「01:59:58 [速+]」直後に落ちたらしく、その後は「03:06:05 [速+]」のたった1本だけ載っていて、朝になっても「速+ 芸+ 東+ ビ+ 科+ 萌+ 政+ 国+ 実+ 痛+」は全スレ全滅の模様である。
![]()
人間の脳は統計学習であり「睡眠」の機会に潜在学習する・・・という大黒理論の通りに、昨日ゲットしてまたちゃんと読んでいないChatGPT解説(真偽は別)の「音楽生成AIの内部処理」5本のPDFについては、睡眠中にも何か漠然としたイメージが錯綜去来していたようである。 そして、これらを来週の柏行きの途中で読もうと、いつものiPadに転送するために起動してみると、「新しいiOS15.8.6」のアップデートを求められて、なかなか進まないプログレスバーにちょっとハラハラした(まさか5ちゃんの鯖落ちとApple鯖は無関係?)のだが、無事にupdateもPDFのゲットも完了した。
![]()
午前中には「カメさんデー」という全品割引きのためにMaxValuに買い出しに行ったりしたが、帰宅してYAHOOでニュースを見ていると、ウインドウ内に上のような「あなたにおすすめの商品」というのがある事に気付いた。 アウトレットの真空管アンプとか、ちょっとマニアックなアンプが並んでいるのだが、僕はこういうアンプを購入した事はなく、たぶんチラッと検索で覗いてみたぐらいなのだが、ちゃんとYAHOOは個人嗜好データとして持っているらしい。 ブラウザで「Web閲覧履歴の全消去」だけでなく、定期的にYAHOOを含めて「全てのcookieを削除」というのをやっているので、これはcookieに保存されているのではなくて、YAHOO(ログアウトしているのに!!)側にある情報なのだ。 まぁ、こんなので恐れていても仕方ないのだが、そういう時代なのだろう。
その後、午後にはちらっと5ちゃんねるが復活したかに見えたが、また「全鯖落ち」状態になったり・・・と不安定な状態を続けていた。 別に関係ないとは思うのだが、僕のサイトもサーバ自体は落ちていない(SFTPなどは無問題)もののHTTPD(Webサーバ機能)が止まっているらしく(タイムアウトエラー)、リモートログインしてプロセスを停止して再起動すると何事も無かったように復帰、というのを確認した。 まぁ、そういう事もあるのがインターネットなのだ。2026年3月7日(土)
昨日はWBC日本初戦だったようだが、テレビで無料放送されていなければ開催日すら気付かれないのだ、と納得した。 同時刻のテレビ中継と言えば、許諾されたPV会場(規約でスポーツバーとか居酒屋のモニタに勝手に出すのは御法度)の模様を、そのスクリーンを映せないので観衆の表情だけ映している・・・という何とも情けないもの(各局共通)だった。 まぁ、サッカーにしても大相撲にしてもゴルフにしても同様で、改めて「テレビ無料放送」の強さを知ったが、最近の若者はそのテレビを観ていないというのだから驚きである。
昨日のロボット教室(アドバンス)では、僕のクレーンロボットに生徒のクレーンロボットが「連結」して このように 動いたが、僕のプログラムに若干の無理(激しくアームを開く衝撃でアームが壊れかける)があって、この一度きりという成功だった。 これは次回の最終バージョンでは改良しないといけない。 今日は午後に、ロボット教室の代打講師でミドルを担当し、その後にいつものロボプロRP1がある。
いつもの土曜日のroutineとしてMartinを愛でた後で、午前中は保存した「ChatGPTの説」として、これまでに読んだ「sunoの内部処理について」・「Sunoが歌メロを作る内部アルゴリズムについて」の残り、「OpenAI Jukeboxの内部処理について」・「Google MusicLMの内部処理について」・「Meta AudioCraftの内部処理について」をザッと読んでみた。 当面の課題として、「日本時間学会大会の要旨原稿送付」・「生成音楽論の教材制作」という2つがあるのだが、これはその両方に関係する調査なのだ。 これはおいおい、plain textにまとめた資料として、おそらくこの日記に置くことになるだろう。
ただし、まだここには書けないものの、実際に動きだすのは9月からだが、担当として仕込みの時期がこれから6月あたりまで、という新しいお仕事も依頼されたので、これも並行して進めていくことになる。2026年3月9日(火)
数えてみたら最初のつくば緊急搬送で1月3日に行って以来、これまでに10回で、明日からの「浜松→柏」行脚は11回目ということだった。 「ジパング倶楽部」のページも「No.16」となり、残り4回で「2026年6月末まで」という期限の「JR3割引き」も終了である。
今日は午前にロボプロ「スタートアップ」講習があり、今回ロボプロに進級する6人のうち2人を相手にする。 それぞれ仕入れてもらった「中古・調整品」のWindowsパソコンに、Arduino IDE 1.0.6と、ヒューマンアカデミー教材対応Arduinoスケッチ集/ライブラリの一式(1/2/3年目の全て)をインストールする作業があるので、一度に多数は相手できないのだ。 ただし作業としては、USBメモリにインストーラ化したexeを用意したので、順調な場合にはダブルクリック(+プログレスバーを見守る時間)だけで終了する。・・・と簡単に書いていたのだが、いやいや現実はなかなか厳しかった。 2人のパソコンのうち1人はUSB端子が不調で、残ったUSB端子には無線マウスのUSBアダプタの差し込み部分だけが壊れて挿さっている、という状態だったので、その除去を含めて僕が持ち帰って対応することにした。 もう1人のPCは、何故か「管理者」が不明なのにBitなんとかのロックがかかっている・・・という恐ろしい状態で、こちらも持ち帰ってChatGPTの助けを借りて何とか解決した。 まずはMicrosoftのツールをゲットして、16GBのUSBメモリにインストーラをセットアップして、PCをセーフモードでUSB起動してクリーンインストールするという荒技だったのだが、計3-4時間かかったものの、無事にArduino IDEマシンとなった。 これは、残り4人のスタートアップでも生きるノウハウになりそうだが、まぁ詳細はここには書かない。
![]()
富士フイルムが出したハイブリッドインスタントカメラ「instax mini Evo Cinema」では、側面の「ジダイヤル」を回すと、「1930」「1940」「1950」「1960」・・・「2020」の目盛りがあって、その当時の映像クオリティに変化(エフェクトが反映される)するらしい。 まぁ、デジタル処理としては技術的には楽勝な「ネタ」狙いである。 それより驚いたのは、わざわざ加速度(衝撃)センサを仕込んで、「1950」あたりのモノクロ映像を長時間撮影していると、VTRノイズや垂直同期のズレが勝手に生じるという。 その時は、当時のブラウン管TVのように「カメラ本体を上から軽く叩きましょう。すると正常な表示に戻ります」というのが公式の仕様なのだそうで、そこまでこだわるのは流石である。
2026年3月10日(火)
筑波から含めて今年になって11週目の柏のホテルの部屋である。 昨日の浜松→東京の新幹線では、ほぼ2時間集中して、前日まで作業していた残り半分ほどを一気に片付けて、以下のような資料が出来上がった。 これは「ChatGPT4による解説を僕なりに整理した『仮説』」でしかないので、真理であるとは言えないことに注意されたい。これが真実であるかどうかは別として、整理する中でだいぶ自分なりには状況が理解できた。 それにしても、LLMがここまでやってくるとは誰も予想していなかったが、「秩序ある時系列情報」である音楽というのは、なるほどLLMと親和性があるのだ、と見直した。 自動作曲の歴史は、人間のプロセスをなぞったり音楽理論をモデル化したりして進展してきたのだが、トークン化してみればそこから音楽理論が創出されるというアプローチは面白いものだ。 ただしsunoを見ればわかるが、膨大な「これまでの音楽」を学習しているだけなので、それを超える新しい音楽は生成されないという事実も重要だろう。■■■■■sunoの内部処理■■■■■ 1. 全体像(Sunoの基本アーキテクチャ) Sunoは一つのAIではなく、複数のモデルを組み合わせたパイプラインで動いている。 テキストプロンプト→意味解析(NLP)→曲構造の設計→メロディ・伴奏生成→歌声生成→音声波形生成→ミックス・マスタリング→完成曲 この一連を 数十秒で実行する。 2. プロンプト理解(NLP解析) まずAIはユーザーが入力した文章を以下のような要素の意味ベクトルに変換(解析)する。 ジャンル(rock, jazzなど)、感情(sad, energetic)、テンポ、ボーカル性別、曲構造、歌詞テーマ これはTransformer型の言語モデルで処理され、仕組みとしてはChatGPTとかなり似ている。 3. 曲の設計(作曲フェーズ) 次にAIは楽曲の設計図を作る。決める内容は以下。 BPM(テンポ)、Key(キー)、chord progression、曲構造、verse、chorus、bridge、メロディライン、リズムパターン Transformerモデルが「次に来る音」**を予測していくのは、対象が「音」なだけで、LLMが次の単語を予測するのと同じ仕組みと同じ。 4. 音の生成(diffusion / audio token) Sunoは「Transformer」・「Diffusion」を組み合わせたハイブリッドモデルであり、イメージとしては以下。 ノイズから開始→音楽らしいパターンへ徐々に修正→最終的に波形へ これは、画像ではなくスペクトログラム(音の画像)を生成するものの、画像生成AI(Stable Diffusion)と同じ考え方。 5. ボーカル生成 歌声は通常、lyrics、melody、phoneme、を同時に生成する Sunoの内部には「Bark(歌声生成)」・「Chirp(伴奏生成)」のモデルがあり、発音、ピッチ、ビブラート、表情、までAIが作る。 6. 最終ミックス(プロダクション) 最後にAIが自動で、ミックス、EQ、コンプレッサ、マスタリング、を行うのでDAWを使わなくても完成曲が出る。 7. ポイント 昔の音楽AIは「AI → MIDI」から「人 → DAWで音源」だったが、Sunoは「AI → 完成音源」つまり「end-to-end音楽生成」である。 Sunoは「楽譜を作ってから音を作る」のではなく、「歌・メロディ・伴奏・歌詞・音色」を同時に生成する。 ■■■■■なぜSunoは「ピアノだけ」と指定してもドラムが入るのか■■■■■ Sunoは「命令を実行するAI」ではなく「確率的に音楽を生成するAI」であり、プロンプトは“命令”ではなく“ヒント”でしかない。 1. Sunoは「音楽の確率モデル」 内部的には次に来る音を確率で予測するモデル。 「音1 → 音2 → 音3 → 音4 → …」の各時点で次に来る音の確率を計算するだけ。 次の音で「ドラム付き」の確率が最大ならドラムが入る。 2. 学習データの影響 Sunoは大量の音楽を学習しているが、現実の音楽では「ドラム無し」が少ないのでドラムが入る。 3. 「no drum」は駄目、「ドラムを消す」という処理が存在しない LLM系モデルは「否定が苦手」なので「no drum」だと「drum」という単語の影響が強くなる。画像AIでも有名な問題。 Sunoは楽器をDAWのような「piano track」・「drum track」・「bass track」などの別トラックで作っておらず、完成音声を直接生成する。 Sunoの「audio token model」(音声→codec→audio token→Transformer生成→audio復元)では楽器という概念が明確に分離されない。 ■■■■■Sunoの内部表現(audio token)の仕組み■■■■■ Sunoの核心は 音楽を「言語のようなトークン列」に変換してから生成しているという仕組み。 audio token の基本構造 : 音声波形→Neural codec→audio tokens Neural Audio Codec の基本構造 : Encoder(音声を特徴ベクトルに変換)→Codebook(最も近いパターンを選択)→Decoder(tokenから音声を復元) Sunoの生成処理はLLMとほぼ同じ。内部で次のtokenを予測して確率の高いものを選ぶ、を繰り返す。 最後に、tokens→decoder→waveformで音声=音楽になる。 なぜ楽器が分離されないのか audio tokenは「piano」「drum」「guitar」等の情報を持っておらず、「音響パターン」を表す。 例えばあるtokenは「ピアノ+キック+ベース」の混ざった音だったりする。 つまりAI内部では「楽器 ≠ 基本単位」である。 さらに複雑な仕組み(階層トークン) 最新の音楽AIは「multi-level token」を使う。例えば「coarse token(リズム)」・「fine token(音色)」など。 つまり、「音楽構造→音響」という2層生成。 Suno型AIは「楽器」を理解しておらず、代わりに理解しているのは「音響の統計」なので、例えば「piano」の概念は人間とは違う。 ■■■■■創発的な楽曲構造(emergent music structure)■■■■■ AIに「曲構造」を教えていないのに、Aメロ→サビのような構造が自然に現れる、という不思議な現象 「audio token → 次のaudio token」を予測しているだけなので、人間のように「イントロ→Aメロ→Bメロ→サビ」という設計はしていない。 実際の生成曲では、構造を学習していないのに構造が出る(emergent structure)。 Sunoの内部モデル(Transformer系)は、過去の広い範囲を参照できる。 音楽そのものが強い統計構造を持っているので、学習したAIは構造を確率パターンとして学習する。 音響パターンの再利用により、例えばサビの特徴的な音響パターンを学習するので「サビの再現」を生成する。 LLMでも同じ現象がある。structure emerges from sequence prediction(構造は系列予測から創発する)。 音楽は圧縮可能(リズム繰り返し・コード進行・フレーズ反復)なので、情報圧縮すると自然に構造が生まれる。 AIは音楽を理解していない。ただ統計的にそれっぽい音を並べているだけ。 AIは音楽理論を知らない。音の統計パターンを学習しているだけ。 ただし、AIは人間とは違う形で音楽構造を理解していて、「音楽構造を内部で発見している」とも考えられる。 内部のベクトルを調べると、楽器ごとのクラスターが分離している→音楽的特徴空間が形成されている。 「音楽構造を内部で発見している」とも考えられる。 人間の理解は「理論・感情・文化」なのに対して、AIの理解は「統計」・「パターン」・「高次特徴」という別の種類の理解。 ■■■■■AIは音楽理論を自分で発見するのか?■■■■■ AIは音楽理論を教えられなくても、内部でそれに近い構造を発見している可能性が高い。ただし「理論として理解しているか」は議論中 Sunoのような音楽AIは通常、「楽譜」・「和声学」・「五度圏」・「機能和声などを 一切教えられていない。 学習データは基本的に「音声データ(音楽)」だけ。「音 → 音 → 音」というパターンだけを学習している。 それでも「典型的コード進行」が現れる。理論ナシに統計的に同じ構造を再発見する。 AI内部ベクトル(内部表現)を可視化すると、近親コードが近傍に集まり、内部空間に「和声の地図」が形成されている。(harmonic embedding) AI内部ベクトルの距離を調べると、ペンタトニックの「CGDAE」の関係が五度圏に似た配置になる場合がある(→統計から発見している)。 音楽は元々、非常に強い統計構造を持っているので、AIは共起統計を学習して、これが「和声関係」となる。 これは言語AIでも同じことが起きている。文法/構文/品詞を教えていないのに内部に文法構造が生まれる。構造はデータの統計から創発する。 AIは「音のパターン」として学習する。つまり「人間の音楽理論=概念」に対して「AIの音楽理論=統計構造」。 もしAIが音楽の統計構造を学習できるなら人間がまだ知らない新しい音楽理論を発見する可能性がある。 AIは「音」を学習しているだけなのに音楽文化の構造が出る。←文化構造がデータから創発している ■■■■■Sunoが歌メロを作る内部アルゴリズム■■■■■ Sunoは「歌メロを直接作る」のではなく音声トークン生成の中で歌メロが「自然発生する」構造 1. Sunoの基本構造 Sunoは大きく3段階の生成 : Text Prompt → Music Semantic Tokens → Audio Tokens→ Waveform 「メロディ」専用モジュールは存在せず、代わりに「音声トークン列の中に歌メロが埋まる」構造。 2. 音声を「トークン」に分解 まず音声をAudio Tokenに変換して学習 : 音声 → 量子化 → Audio tokens (例えば [812, 44, 119, 903, 22, 518, ...]) この列が、「ピッチ」・「音色」・「音量」・「発音」の全部を同時に持つ。 つまり、歌メロは「ピッチパターン」としてトークン内に存在する。 3. 歌メロ生成アルゴリズム Sunoは基本的に「Transformer自己回帰モデル」 : P(token_t | token_1 ... token_t-1, prompt) この確率で次々にトークンを生成する。 4. 歌メロが生まれる理由 歌メロは「音声トークンの中のピッチ構造」として出現する。(例 : C4 → D4 → E4 → G4 はトークンでは [821] [834] [850] [901]) モデルはこのパターンは「歌として自然」と学習している。 5. 歌メロは「歌詞」に引っ張られる Sunoの大きな特徴は「歌詞トークンが音声生成に影響」すること。 構造 : Lyrics tokens → Cross Attention → Audio Token Generator 歌詞が「音節数 = 5」を推定すると → 「メロディも5音付近」になる。 6. 実際の内部処理 Sunoの歌メロ生成は以下の3つの信号から決まる : pitch = f(harmony, rhythm, lyrics) (1) Harmony prior コード進行パターン (例 I → V → vi → IV) (2) Rhythm prior 音節タイミング (例 ta ta taa) (3) Pitch contour メロディ曲線 (例 上昇 → 下降 → 解決) 7. Transformer内部のメロディ表現 内部では「Attentionがメロディ構造を作る」 「過去の音に注意を向ける」ことで「Aメロのモチーフ→繰り返し」が起きる。つまり「音楽的モチーフ生成」。 8. Emergent Melody Sunoの最大の特徴は「歌メロを設計していないのに生まれる」。Emergent Structure 「歌メロ生成アルゴリズム」は存在しない。 巨大データ学習 → 確率的音声生成 → 結果としてメロディが生まれる 9. 実際の疑似コード Suno的メロディ生成 tokens = [] while not end: next = Transformer(tokens, lyrics, style_prompt) tokens.append(sample(next)) この中で「pitch contour」・「rhythm」・「voice」の全部が同時生成される。 10. 人間の作曲との違い 人間は「コード→メロディ→歌」、Sunoは「歌 + 音 + リズム」全部同時生成 Suno系モデルでは音楽理論が自然発生する。教えていないのに「スケール」・「解決音」・「フレーズ」・「サビ上昇」が自然発生する。 ■■■■■なぜSunoはサビになるとメロディが高くなるのか?■■■■■ 多くのSuno生成曲では「Aメロ → Bメロ → サビ」の構造でサビのピッチが上昇する。 1:学習データの統計 Sunoは数千万曲以上を学習しているが、ポップスでは「サビ = 感情ピーク」なのでピッチが上がる確率が非常に高い。 AI内部 : chorus → pitch +3~+5 semitone (統計バイアスが形成) 2. Transformerがメロディ曲線を作る仕組み 自己回帰Transformer : token_t = f(token_1 ... token_t-1) Attentionがフレーズ構造を作る。「モチーフ繰り返し」が「音楽的フレーズ」になる。 3. 16小節構造が自然に生まれる理由 ポップスでは、8小節/16小節/32小節 が非常に多い。 AIはこれを学習 → phrase_length ? 16 bars 4. リズムと歌詞の同期 歌詞トークンを入力 : 「音節数 = ノート数」となりやすく、「syllable → rhythm」が形成される。 5. コード進行理解の仕組み Sunoはコード進行を明示的には学んでいない。それでも「I → V → vi → IV」などが普通に出る。 その理由は「共起統計」であり、(例) 「C → G → Am → F」が大量に存在するとAI内部では「P(Am | C,G) が高い」となる。 「コード進行の確率モデル」というだけ。 6. AI内部のメロディ表現 推定される内部表現は、「audio token → latent pitch / latent rhythm / latent timbre」。 これは、音声トークン = (pitch, rhythm, timbre) の圧縮表現。 Sunoの内部アルゴリズム : 「lyrics/style/prompt」 → semantic music tokens → transformer → audio tokens → waveform ■■■■■OpenAI Jukebox の内部処理■■■■■ 1. 全体アーキテクチャ Jukeboxの生成パイプラインは次の流れ : 音声を離散トークンへ圧縮 → Transformerが音楽トークンを生成 → ークンを音声にデコード 具体的には : Raw Audio → VQ-VAE Encoder → Discrete Audio Tokens → Transformer (Prior) → Upsampler Transformers → VQ-VAE Decoder → Generated Audio 2. 音声をトークン化(VQ-VAE) VQ-VAE (Vector Quantized Variational AutoEncoder)は音声を離散トークン列に変換する。 waveform → audio tokens このトークンは「音程」「音色」「音量」「声質」などの特徴を圧縮したもの。 3段階圧縮(hierarchical VQ-VAE) : Top128xメロディ/構造、Mid32xリズム/楽器、Bottom8x音質 Top codes → Middle codes → Bottom codes で、最上位ほど 抽象的な音楽構造になる。 3. Transformerが音楽を生成 圧縮された音声トークンを「自己回帰Transformer」が生成する。P(token_t | token_1 ... token_t-1) 特徴 : 72 layers、Sparse Attention、Context = 8192 tokens 4. 階層生成 Jukeboxは一気に音声を生成しない。 Step1(トップレベル生成) : メロディ、歌、コード進行 --- 音質は荒い Step2(ミドルアップサンプリング) : 楽器、リズム、音色 Step3(ボトムアップサンプリング) : 最終音質、ノイズ除去 5. 歌詞やアーティスト条件 Jukeboxは次の情報を条件として入力できる : genre、artist、lyrics、year、mood Transformerは、P(audio_tokens | artist, genre, lyrics) を学習する。 6. なぜ歌えるのか(重要) 歌詞は時間同期していない状態で与えられる。 AIは「lyrics→音声」の対応を自己学習で発見する。 データから、「発音、、音節、歌のリズム」を推定する。 7. 計算量(めちゃくちゃ重い) Jukeboxは「autoregressive生成」「3階層モデル」「生波形生成」によって、非常に遅い。 1分の音楽生成 = 約9時間 8. Jukeboxの本質 それまでの音楽AIは「MIDI生成→音源再生」だった。 Jukeboxは初めて「waveform直接生成」を実現した。歌声、ノイズ、ギターの歪み、までAIが作る。 最近の Suno や MusicLM は「audio tokens」・「diffusion」などを使うので、Jukeboxより1000倍以上高速。 Jukeboxは実質、「音声版GPT」、つまり、「text token → GPT」、「audio token → Jukebox」 音楽を「言語」として扱った最初の大規模モデルがJukebox。 ■■■■■なぜJukeboxはコード進行を理解するのか■■■■■ 1. Jukeboxは「次の音」を予測しているだけ Jukeboxの基本は「自己回帰モデル」 : P(audio_token_t | audio_token_1 ... audio_token_t-1) を学習する。 「次に来る音は何か?」をひたすら予測している。 2. 音楽には強い統計構造がある ※sunoと同じ 3. Transformerは長距離パターンを学習できる JukeboxのTransformerは数千トークン(過去10秒、過去30秒)の文脈を同時に参照する。 →「Cの後にはFやGが来やすい」などの確率構造を学ぶ。 4. 実は「コード」も音声の中に存在する コードは理論概念。ただし音声としては「特定の周波数の組み合わせ」なのでAIは「周波数パターン」として観測する。 5. 自然にコード進行の「状態」が生まれる(Emergent music theory) Transformerの内部には「隠れ状態ベクトル」が作られる。ここに「key、chord、rhythm、genre」のような潜在表現が自然に現れる。 (例) Cメジャー状態 → Fに行きやすい のような内部状態ができる。 6. 言語モデルと完全に同じ現象 ※sunoと同じ 7. 実はJukeboxはキーも学習する 内部ベクトルを分析すると、モデルが「key modulation」・「tempo」・「chord tension」を表す軸を持っていることが分かった。 つまり、AIの内部空間には「音楽理論に近い座標系」が自然発生している。 8. 重要なポイント Jukeboxが学習しているのは「コード進行」ではなく「音の確率構造」。 音楽は非常に構造的なので、「確率構造 = 音楽理論」に近づく。 ■■■■■Google MusicLM の内部処理■■■■■ MusicLM は、かなり複雑な「階層型音声トークン生成モデル」で、内部では 音楽を「言語のようなトークン列」として扱うことで生成している。 内部処理(全体像) : 4段階パイプライン : テキスト理解 → 音楽の意味トークン生成 → 音響トークン生成(粗→細) → 波形デコード(音声復元) これを支えている基盤研究 : AudioLM、MuLan、SoundStream 具体的には : Text → MuLan embedding → Semantic tokens → Coarse acoustic tokens → Fine acoustic tokens → SoundStream decoder → audio waveform 1. テキスト → 音楽意味ベクトル プロンプトを 音楽意味空間に変換 : MuLan(テキストと音楽を同じ埋め込み空間に配置するモデル) : text → embedding 、music → embedding この結果、音楽意味ベクトル(genre, instrument, tempo, mood rhythm style)が得られる。 MusicLMは音楽を理解しているのではなく、「テキスト意味 → 音楽意味」の距離を学習している。 2. Semantic Tokens(音楽構造生成) 次に「音楽の長期構造を作る層」として、Semantic Transformer が「semantic tokens」を生成する。 音楽の「フレーズ」・「コード進行」・「リズム構造」・「楽器の役割」などを表す抽象トークン列。 (例) S1 S4 S3 S3 S8 S2 ... → 意味としては「Intro, Chord progression, Melody phrase, Drum groove」のようなもの。 3. Acoustic Tokens(音響生成) 次にSemantic Tokensから音響トークンを生成するが、AudioLMの音響トークンは2段階。 (1) coarse acoustic tokens(粗い音構造) - リズム、音色、音程の大まかな形 (2) fine acoustic tokens(細かい音) - 倍音、アタック、ノイズ、音色ディテール イメージ : Semantic tokens → Coarse tokens → Fine tokens 音楽は「長期構造(数十秒)」と「短期音響(ミリ秒)」のスケール差が巨大。この階層化が MusicLM最大の発明。 4. Neural Codec で音声復元 最後に、ニューラルコーデック「SoundStream」が「audio tokens → waveform」と復元する。 SoundStreamは「音声 → token」・「token → 音声」を行うオートエンコーダ。 その特徴はRVQ(Residual Vector Quantization) - 約6kbps圧縮 → 24kHz音質再構成 つまり、MusicLMは音声を直接生成しておらず、圧縮音声コードを生成している。 5. なぜ長い曲でも破綻しないのか 昔の音楽AI(例:Jukebox)は「waveform直接生成」なので「長期構造が崩壊」・「計算爆発」した。 MusicLMは「semantic layer」→「acoustic layer」を分離したので、数分の音楽構造を維持できる。 6. MusicLMの最も重要なアイデア 核心は、「Audio as language」、つまり「音声 = トークン列」・「音楽 = 言語モデル」という発想。 これにより「GPTとほぼ同じ構造」が音楽にも使えるようになった。 ■■■■■MusicLM内部トークンの実例■■■■■ Text → MuLan tokens (text/music embedding) → Semantic tokens → Coarse acoustic tokens → Fine acoustic tokens → Audio waveform トークンと意味の関係 : MuLan - テキストと音楽の意味、Semantic tokens - 音楽構造、Coarse tokens - 音色・リズム、Fine tokens - 音響ディテール Transformerは「p(token_t | token_<t)」を予測する。つまり、「音楽 = GPTのような次トークン予測」である。 Semantic tokens : 音楽構造を表す抽象トークン (例) S12 S08 S41 S41 S33 S18 S09 S52 S52 ... → 実際には「phrase start」・「melody motif」・「chord pattern」・「rhythm structure」のような 音楽構造の状態を表す。 Semantic tokenは約25Hz、つまり「1秒 = 25 tokens」。なので「10秒音楽 = 250 semantic tokens」となる。 Acoustic token列 : 音声を生成する段階では「Coarse tokens」・「Fine tokens」の codec token列になる。 SoundStream codecでは「1秒 = 600 audio tokens」となり、 構造は「RVQ layer1」・「RVQ layer2」・「RVQ layer3」・・・「RVQ layer12」という12段量子化トークンである。 AIが「音→音楽理論」を「自己発見」している可能性 Semantic tokenが「コード進行」・「メロディ構造」・「リズムパターン」を自然に表していたことです。 Semantic token空間のクラスタリングでは、jazz, rock, orchestra, lofi がトークン空間 [音楽意味空間 (music latent space)] で分離した。 ■■■■■SunoとMusicLMの構造の違い■■■■■ 簡単に言えば、MusicLM = 階層トークン型(研究型)、Suno = 統合エンドツーエンド型(製品型) 音楽AI研究では、MusicLM = modular architecture、Suno = foundation model つまり、MusicLM → 音楽生成の「研究」、Suno → 音楽生成の「GPT」 現在、多くの研究者は、「MusicLM型」から「Suno型」に移行している。理由は「モジュール分離より統合モデルの方が性能が高い」から 1. アーキテクチャの根本思想 MusicLM text → semantic tokens → coarse acoustic tokens → fine acoustic tokens → waveform 3階層トークン、AudioLM系、モジュール分離 「音楽構造 → 音響」を分けている Suno text → joint audio tokens → waveform ほぼ1段トークン、end-to-end transformer = 「音楽+歌声同時生成」 音楽構造と音響を同時に生成している 2. 音楽構造の扱い MusicLM 構造は「semantic tokens」に分離されている この層が、「コード進行」・「フレーズ」・「メロディ」・「リズム」を表し、作曲レイヤーが存在する Suno 「audio tokens」の中に、「メロディ」・「歌詞」・「音色」・「ミックス」など全部混ざっている 構造が分離されていない 3. 歌声生成 MusicLM 初期モデルは「instrumental music」中心で、歌声は「実験的」・「かなり弱い」 Suno 最初から「lyrics → singing → music」を統合している。 内部では「phoneme tokens」+「audio tokens」を同時生成する 4. Transformerのサイズ MusicLM 研究モデル ~1B〜3B parameters 程度 Suno 推定 10B〜30B+ parameters 理由 : 歌声、ミックス、楽器、歌詞理解 などを全部やる必要がある 5. 学習データ MusicLM 学習 : audio + text caption 例 : "slow jazz with trumpet" Suno 学習 : song dataset - 歌詞、ボーカル、楽曲構造 を含むデータ 6. 構造の比較図 MusicLM Text → Music semantic model → AudioLM → Codec decoder → Audio Suno Text + Lyrics → Large music transformer → Audio tokens → Audio ■■■■■Meta AudioCraft の内部処理■■■■■ 内部はかなりシンプル : 「音声をトークン化 → 言語モデルで生成 → 波形に戻す」という構造。 1. AudioCraft の内部構造(全体像) 3つの主要コンポーネント : EnCodec(音声トークナイザ)、MusicGen / AudioGen(生成モデル)、テキスト条件付け(text encoder) 生成パイプライン : テキスト → テキストエンコーダ → Transformer(MusicGen / AudioGen) → audio tokens → EnCodec デコーダ → 音声波形 つまり、「 LLMとほぼ同じ構造で音を生成」する。 2. EnCodec(音声をトークン化) AudioCraftの核心、音声を離散トークンに変換する部分。 音声波形 → Neural Encoder → Residual Vector Quantization → audio tokens (codebooks) 特徴:音声を複数のコードブック(token stream)に分解。 各トークンは 約20msの音情報、音声を圧縮しつつ意味構造を保持 → 4つの並列トークン列を生成する。 3. Transformer が音楽を生成 トークンを生成する部分が MusicGen / AudioGen Text embedding + Previous audio tokens → Transformer LM → Next audio tokens これは GPTと同じ autoregressive 生成、P(token_t | token_1 ... token_t-1, text) で、「次の音」を確率的に予測している。 4. Parallel Codebook 生成(AudioCraftの特徴) 従来の音楽AIは、「semantic tokens → acoustic tokens → waveform」という多段モデル。 AudioCraftは単一のTransformerで直接生成する。 さらに「4コードブック」を「少し時間をずらして同時生成」する。 (例) time step t codebook1 → 生成、codebook2 → 1step遅れて生成、codebook3 → 2step遅れて生成、codebook4 → 3step遅れて生成 これにより「1秒の音声 = 50ステップ」で生成できる。 5. 最終的に音声に戻す 最後に、audio tokens → EnCodec decoder → waveform となる。 つまり生成モデルは「直接音声を作らない」、生成しているのは「音声圧縮コード」。 AudioCraft内部の1秒の音楽生成の内部処理 1. text prompt 2. text encoder → text embedding 3. Transformer → audio tokens (50 steps) 4. EnCodec decode → waveform (1 sec audio) これを連続実行して「50 steps → 1秒」、「1000 steps → 20秒」という感じ。 6. AudioCraftが他の音楽AIと違う点(モデル特徴) MusicLMsemantic : acoustic の2段階 Jukebox : multi-scale VQ-VAE AudioCraft : single transformer ■■■■■AudioCraft やMusicGen の研究で観察されている音楽構造トークン■■■■■ 1. コード進行トークンパターン AIの内部トークンでは、コードが変わるとトークンの統計パターンが変化する。 つまり、「トークン遷移 = コード進行」 となる。 2. ドラムループトークン ドラムはさらに「周期パターンとして学習が」分かりやすい。 周期的に登場するパターンから「kick token cluster」・「snare token cluster」・「hihat token cluster」などが分離される。 3. AIが拍子などを理解する理由 音楽AIは「拍」を明示的には知らない。しかし周期構造を学ぶ。 似たようなトークンの繰り返しに対して、Transformerは「period = 4」などを統計的に推定する。 音楽AIには「拍」・「コード」・「音階」の概念は明示的に存在しないが、内部では「token clusters」→「musical structures」がemergentに現れる。 トークン空間では似た楽器が近くなる。つまり「piano token」・「organ token」・「electric piano token」がクラスタになる。 → 音色空間(音響embedding空間)の形成 ■■■■■音楽生成AI(AudioCraft/MusicGen)の構造・メロディ生成の内部メカニズム■■■■■ 1. 曲構造トークン(Verse / Chorus) 人間の曲は普通こういう構造 : Intro, Verse, Chorus, Verse, Chorus, Bridge, Chorus 音楽AIには 「Verse」「Chorus」という概念は無いのに内部では長距離トークンパターンが形成される。 なぜ構造が生まれるのか - Transformerは「P(token_t | token_1 ... token_t-1)」を最大化する。 つまり「過去のパターンと一致する構造」を作る。 音楽データには「verse → chorus → verse → chorus」が多いのでAIも自然に学習する。 2. メロディ生成の内部メカニズム メロディも同様に「トークンの軌道(trajectory)」として現れる。 音の高さは「周波数スペクトル」に対応し、トークン空間では「pitch trajectory」が形成される。 トークン空間で「low pitch」→「high pitch」となれば、これは「メロディの上昇」を意味する。 3. AIが「それっぽい作曲」をする理由 AIが音楽理論を知らないのに、「コード」・「メロディ」・「リズム」・「曲構造」を作れる理由は、「統計的音楽圧縮」のため。 Transformerは「次の音を最も予測しやすい構造」を生成する。 音楽はそもそも「予測可能性 + 意外性」でできている。 情報理論的視点 : 音楽は「entropy = 中程度」、低すぎると退屈、高すぎるとノイズ。AIは「最適なエントロピー」を学ぶ。 4. 音楽AIで観測される内部空間 研究者が可視化してみると「トークンembedding」は「楽器空間」を形成していた。2026年3月11日(水)
15年前の今日の様子は、 SuperCollider日記(2) の「2011年3月13日(日)」のところにチラッと書かれていたが、この年はSuperColliderにドップリと浸かっていたようである。 東日本大震災から15年も経過したというのに、メルトダウンした880トンものデブリから試験的に採取できたのは0.9グラムだけであり、これが技術立国・日本の現状なのだと改めて知らされる。
![]()
ネットからは、上のような衝撃的な写真と共に 衝撃的な動画 が届いたが、まぁ軽量化を極めれば、落ちた衝撃でこんなバラバラになるのだろう。
当面の課題は日本時間学会の要旨提出だが、新しく舞い込んできたお仕事も楽しそうなので、のんびりする暇もなく日々は続いていく。 柏行脚も、まだまだ続く。 気付いてみればこの日記HTMLも245KBになっているので、ここを区切りとしてオシマイにして、続きは RRR日記(12) にすることにした。
「日記」シリーズ の記録