Web Audio × GM音源 × AIコーディング ─ ブラウザだけのリズムマシンとMIDIの楽しさ

Web Audio × GM音源 × AIコーディング ─ ブラウザだけのリズムマシンとMIDIの楽しさ TECH
Web Audio × GM音源 × AIコーディング ─ ブラウザだけのリズムマシンとMIDIの楽しさ

ローカルAIでコードを書かせる時代になった。すごい。けれど現実は生々しい。RTX3060では速度も整合も限界があり、長いコードは人間の介入が前提になる。
だから今回はGPTを使った。何の秘密もない、お気楽アプリだからできる。
そうやって遊び始めた途中で、GMをJavaScript1本で鳴らすライブラリに出会ってしまった。作者はg200kgさん。これは、インターネットの奥にまだ残っていた“本物”の熱だった。

AIの時代に、なぜGMなのか

ローカルAIでコードを書かせる時代になった。
それ自体は間違いなく、すごい。実際、私も日常的に使っている。

ただ、現実はわりと生々しい。

RTX3060の環境で回してみても、せいぜい10tok/s前後。長いコードになると整合は簡単に崩れるし、途中で人間が介入して繕う前提になる。
「全部お任せで一発完成」なんて世界には、まだ全然いない。

だから今回はGPTを使った。
理由は単純で、これは何の秘密もない、お気楽なアプリだからだ。商用でもない、研究でもない、誰かの人生を左右するものでもない。ただ、音が鳴って、ちょっと楽しい。それだけのものだ。

そして、そういう“気楽な目的”でAIと一緒に何かを作り始めたとき、私は途中で思わぬものに出会ってしまった。

GM――General MIDI。
あの、懐かしくて、軽くて、でも確かに「音楽が始まる匂い」のする規格を、JavaScript1本で鳴らしてしまうライブラリだ。

名前は webaudio-tinysynth。作者は g200kg さん。
これを最初に見たとき、頭をよぎった感覚はひとつしかない。

X68000でPCM8を初めて見たときに近い、あの畏怖。

「え、これ……こんなにシンプルに、ここまでやってるの?」

そういう種類の驚きだった。


MIDI2.0の時代に、MIDI1.0の熱は死んでいない

いま、MIDIは2.0の時代に入っている。
高解像度、双方向通信、よりリッチな表現。プロの現場では、確実に次のフェーズへ進んでいる。

でも、ふと思う。

MIDI1.0の時代にあった、あの熱は、どこへ行ったのか。

GM音源を鳴らして、
シーケンサに打ち込んで、
少しノートをずらして「お、グルーヴ変わったな」とニヤッとする。

YAMAHAのQYシリーズ、SC-88、X68000、Windows 95のMIDI再生。
あの頃の空気は、単なる技術じゃなくて、文化だったと思う。

音が鳴るだけで嬉しかった。
自分の手で「それっぽい何か」を組み立てられることが、ただ楽しかった。

MIDI2.0の世界が来た。
でも、MIDI1.0の熱は、別に死んでいない。

ただ、少し見えにくいところに追いやられていただけだ。


g200kgという「普通にすごい人」の仕事

webaudio-tinysynth は、驚くほど素直なライブラリだ。

  • JavaScript1本
  • サンプルに依存しない
  • Web Audioネイティブ
  • GM音色をひととおり鳴らせる
  • しかも軽い

行数にして、1500行。
それでいて、「GMが鳴る」という一点に関しては、ちゃんと本質を押さえている。

GitHub - g200kg/webaudio-tinysynth: Light-weight GM mapped WebAudio-JavaScript Synthesizer Engine / MIDI Player
Light-weight GM mapped WebAudio-JavaScript Synthesizer Engine / MIDI Player - g200kg/webaudio-tinysynth

これは派手なプロダクトではない。
でも、骨太なエンジニアリングの匂いがする。

流行りのフレームワークも、巨大なビルド環境もない。
Vanilla JSで、必要なことだけを、必要なだけやっている。

こういう仕事を見ると、どうしても思ってしまう。

「ああ、インターネットって、こういう人が普通にいる場所だったよな」

しかも、作者は日本人だ。
MIDIの歴史を振り返れば、これが不思議でもなんでもないことは分かる。
日本は、長い間この分野を支えてきた側の国だ。

それでも、こうして“静かに本物”を積み上げている人の仕事に出会うと、素直に言いたくなる。

日本人、がんばれ。負けるな。

これはノスタルジーじゃない。
ちゃんと今も通用する仕事への、まっとうなリスペクトだ。

音質が悪い?QYの音を思い出せ!
それは、ここでは大した価値ではない。


AIが来たことで、何が変わったのか

昔なら、こういうライブラリを前にして、多くの人はこう思ったはずだ。

「すごいな」で終わる。
「自分には無理だな」で終わる。

でも、いまは違う。

AIがいる。

完璧ではない。
ローカル環境では遅いし、整合も甘い。
それでも、「とりあえず形にする」までの距離は、驚くほど縮んだ。

QYみたいなものを、自分で作る。
昔なら、相当な覚悟が要った話だ。

いまは、「日曜にちょっとやってみるか」が、現実的な選択肢になる。

プロの現場の話じゃない。
スタートアップの話でもない。
論文になるような話でもない。

ただのサンデーコーディングだ。

でも、その「ただの遊び」が、ちゃんと音になって返ってくる。
それだけで、十分すぎるほど価値がある。


で、証拠品を置いておく

言葉で説明するより、触ったほうが早い。

ここに、今回作った小さなアプリを置いておく。
iframeで、そのまま動くやつだ。

Live プレイのキーバインド:

 A  W  S  E  D  F  T  G  Y  H  U  J  K
 C  C# D  D# E  F  F# G  G# A  A# B  C

URL: https://apps.aries67.com/midi/gm_step_groovebox.htmlhttps://apps.aries67.com/midi/gm_step_groovebox.html

リズムを置くと、ループする。
鍵盤を弾くと、メロディが乗る。
GM音源が、ちゃんと「それっぽい音」で鳴る。

荒いところはある。
UIも洗練されているとは言えない。
ライブ演奏まわりも、詰めは甘い。

でも、誰も困らない。
会社も潰れない。
そして、ちょっと楽しい。

それで十分だ。

作ることは、いつから“仕事”になったんだろう

いつの間にか、「作る」は重たい言葉になった。

要件定義があって、
スケジュールがあって、
品質保証があって、
レビューがあって、
運用があって、
責任があって、
炎上したら誰かが頭を下げる。

もちろん、それは大事なことだ。
プロの現場では、そうでなければ困る。

でも、少なくとも昔は、もう一つの「作る」があった。

意味があるかどうか分からないものを作る。
誰に役立つか分からないものを作る。
完成度が低くても、とりあえず音が鳴ったら嬉しい。

X68000でPCMを鳴らしてみたときも、
QYで適当なパターンを組んだときも、
多くの人は「これは製品になるか?」なんて考えていなかったはずだ。

ただ、楽しかった

いつの間にか、その感覚は「趣味の領域」か「過去の話」みたいに扱われるようになった。
作ることは、生産性のための行為になり、効率のための行為になり、評価のための行為になった。

それが悪いわけじゃない。
でも、どこかで「遊びとしての制作」は、肩身が狭くなっていった気がする。


AIは“効率化の道具”だけじゃない

AIが入ってきてから、この傾向はさらに強まった。

  • 何分で書けたか
  • 何行を自動生成できたか
  • 人間はもう不要なのか

そういう話ばかりが前に出る。

でも、今回みたいに「どうでもいいアプリ」を作っていると、別の側面が見えてくる。

AIは、作ることの敷居を下げる道具にもなりうる。

完璧じゃなくていい。
整合が多少甘くてもいい。
どうせ誰も困らない。

その前提で使うと、AIはものすごく相性がいい。

「これ、ちょっと試してみたいんだけど」
「じゃあ、ここから先を一緒に埋めよう」
そんなラフなやり取りで、形が出てくる。

昔なら、
「そこまで作る時間がないからやめとくか」
で終わっていたアイデアが、普通に形になる。

これは、効率化とは少し違う価値だ。

遊びの復権に近い。


“プロの道具”と“遊ぶ道具”は、別の方向を向いていい

MIDI2.0の世界は、確実にプロの現場に向いている。
高精度で、リッチで、堅牢で、正確だ。

それはそれで、正しい進化だと思う。

でも、GMを鳴らしてニヤッとする世界は、別にそれと競争しなくていい。

  • 軽くていい
  • 古くていい
  • ちょっとチープでいい
  • でも、すぐ鳴るほうがいい

webaudio-tinysynth が強いのは、まさにそこだ。

「これで全部いける」なんて顔はしていない。
ただ、「これで十分遊べるだろ?」という顔をしている。

そして、それで本当に十分なのが、またいい。

プロの世界は、プロの世界で磨かれていけばいい。
でも、遊ぶための道具は、もっと気楽でいい。

今回のアプリも、その延長線上にある。


うまくできていない、でもそれでいい

正直に言えば、このアプリは粗い。

  • UIも洗練されていない
  • ライブ演奏まわりも詰めが甘い
  • フォーカスが外れるとキーオンが効かないこともある
  • 作り込みという意味では、まだまだ足りない

でも、それでいい。

これは製品じゃない。
サービスでもない。
継続運用するプロジェクトでもない。

「ちょっと作って、鳴らして、楽しい」
それだけのものだ。

そして、そういうものは、意外と世の中に少ない。

たいていは、
「ちゃんとしなきゃいけない」
という圧に負けて、途中で重たくなる。

でも今回は、最初から割り切っている。

何の秘密もない。
誰のビジネスにも関係ない。
だから、気楽に作れたし、気楽に公開できる。

OSSみたいなものだ。
やりたい人は、勝手にやればいい。


それでも、ちゃんと“音楽の形”はしている

ただし、ひとつだけは言っておきたい。

これは「音が出るだけのデモ」ではない。

  • リズムを組める
  • ループする
  • トラックの役割が分かれている
  • 鍵盤でメロディを乗せられる

つまり、最低限の“音楽の構造”はちゃんとある

このバランスが、いちばん気持ちいい。

重すぎない。
でも、玩具すぎない。

g200kgのライブラリが持っている「楽器の心臓部」と、AIによる雑な組み立てが、ちょうどいいところで噛み合った結果だと思っている。


ブラウザに楽器が置いてある、という変な時代

この手のアプリは、言葉で説明するより、実際に触ったほうが早い

ノートを置く。
再生する。
音が回り出す。
一つ足す。
グルーヴが変わる。
鍵盤を叩く。
メロディが乗る。

それだけで、「ああ、こういう楽器ね」とだいたいの性格が分かる。

マニュアルを読む必要はない。
チュートリアル動画を見る必要もない。
正直に言えば、UIがどれだけ洗練されているかも、本質じゃない。

大事なのは、

「触る → 音が出る → もう一回触る」

このループが、考える前に自然に回り始めるかどうかだ。

今回のアプリは、その点でちゃんと“楽器側”に寄っている。
ソフトウェアなのに、「操作している」というより、「触っている」に近い感覚がある。

だから、これは説明するための道具ではなく、
まず鳴らしてみるための道具として成立している。

地味だけど、これはかなり重要な違いだと思う。


プレイアブルである、ということ

このアプリの一番の強みは、たぶんここにある。

プレイアブルであること。

  • スクリーンショットを見せるより、触らせたほうが早い
  • 動画で説明するより、鍵盤を叩かせたほうが伝わる
  • 記事は入口で、本体はブラウザの中にある

これは、記事向きの素材としても、かなり相性がいい。

読者は、
「ふーん」
で終わらずに、
「ちょっと触ってみるか」
に自然に進む。

そして、音が鳴った瞬間に、だいたいのことは分かってしまう。

この“説明不要感”は、ソフトウェアとしてはかなり贅沢な性質だと思う。


バイブコーディングという言葉の、たぶん正しい使い方

最近、「バイブコーディング」という言葉をよく聞くようになった。

効率化の話に使われることもあるし、
半分ネタとして消費されることもある。

でも、本来の感覚は、たぶんこういうものだったんじゃないかと思う。

  • ノリで作る
  • 途中で方向が変わる
  • でも、最終的に“なんか楽しいもの”が残る
  • 完成度より、勢いと手触り

今回の流れは、まさにそれだった。

最初は「リズムマシン作らせてみるか」くらいのノリ。
途中で g200kg のライブラリに出会って、話が変な方向に転がって。
気がついたら、「GMが鳴る、小さな遊び場」みたいなものができていた。

計画通りでもないし、最適化されてもいない。
でも、ちゃんと楽しい

それでいい。


ここまで読んで、気になったなら

ここまで読んで、

「ちょっと触ってみたいな」

と思ったなら、たぶんこの記事の目的は達成している。

これは、すごいプロダクトの紹介じゃない。
未来のビジネスの話でもない。

AIと一緒に、気楽に何か作ると、ちゃんと楽しいぞ
という、それだけの話だ。

そして、その“証拠品”として、ここにこのアプリが置いてある。


補章:この小さなアプリで、何ができるか

最後に、淡々と書いておく。

このアプリは、

  • GM音源を使ったリズムマシン
  • ステップシーケンサー形式でパターンを組める
  • 再生するとループする
  • トラックごとに役割を分けられる
  • 鍵盤でライブ演奏ができる
  • BPMやリバーブを調整できる

それだけだ。

保存もない。
管理機能もない。
プロジェクト機能もない。

でも、鳴らして遊ぶには十分だ。

荒いところはある。
詰めが甘いところもある。
でも、誰も困らない。

やりたい人は、勝手にいじればいい。
OSSみたいなものだ。


おわりに

技術は進む。
規格も変わる。
AIも、どんどん賢くなる。

でも、

音が鳴って、ちょっと嬉しい。
それは、たぶん何も変わらない。

MIDI2.0の時代になっても、
MIDI1.0の熱は、ちゃんとここにある。

そして今は、
その熱に、AIという“気楽な相棒”が加わった。

それだけで、日曜は十分に楽しい。