手早く作るはずだった ― MUEDearに何が起きたか
MUEDear、最初は「手早くマネタイズできるアプリを作りたい」って言ってましたよね。
そう。海外に耳トレの月額サービスがあって、あれがすごくいいんだよ。ちゃんとビジネスとして成立してる。あのモデルを参考にして、無料版をリワード広告で回す。8週間くらいで出したかった。
計画としてはシンプルですよね。DAWで処理した音源を用意して、「EQかかってるのはどっち?」みたいな2択で遊ばせる。
そのはずだったんだけど。
音源を集めるのが、めんどくさい
どこで変わったんですか?
音源の準備。オーディオ修復ソフトでバッチ処理して、EQ処理した音と処理してない音をペアで用意する計画だったんだけど、+6dBのEQ設定してるのに、出てきた音源が全然6dB上がってない。
フルビットの音源だとヘッドルームがないからですよね。
それもある。ヘッドルームのマージンが足りなくて上がりきらない。でもそれだけじゃなくて、そもそもEQの+6dBって、その帯域に6dBの負荷をかけるっていう刺激であって、音源のデータが機械的に6dB上がるわけじゃないんだよね。
プラグインの処理特性として、パラメータ通りの値にはならない。
"バラつきの幅が読めないとなると、バッチ処理で一括でさばける話じゃなくなる。"
— kimny
そう。実際に出てきた音源を見ると、+2dBだったり+4dBだったり、バラつきがある。便宜上6dBって決めただけだからぴったりにする必要はないんだけど、バラつきの幅が読めないとなると、バッチ処理で一括でさばける話じゃなくなる。
5曲×9帯域で45ファイル、それぞれ手で確認するのは。
めんどくせえ。しかもスマホスピーカーで聴き分けるには10〜12dBくらいブーストが必要だから、マージンの管理まで入ってくる。で、「これ内部処理でできない?」ってClaude Codeに聞いたら「できるよ」って言うから、「じゃあ任せた」と。
......それでDSP実装が始まった。
音源1個入れとけば、あとはアルゴリズムがパラメータ通りに処理してくれる。プラグインの処理特性に振り回されることもない。そっちの方がいいじゃん。
4種のコンプを自前で作る
EQはWeb Audio APIに入ってるから比較的すんなりいったと思うんですけど、コンプはどうだったんですか。
コンプのアルゴリズム、ライブラリに入ってなかった。
ない。
ないから調べて作った。OPT、FET、Tube、VCAの4種。
ちょっと待ってください。Optoは光学式、FETはトランジスタ式、Tubeは真空管式、VCAは電圧制御式。それぞれ別のアルゴリズムを実装したんですよね。プラグイン開発者がやることですよね、これ。
まあ結果的にはね。最初は「コンプかかってるかどうか当てるだけ」のつもりだったんだけど、どうせやるなら種類ごとに分けた方が面白いじゃんと。
「面白い」で4種DSP実装するのは普通じゃないです。
面白かったんだよ。実装中にテストで音聴きながらパラメータいじってたら、楽しすぎてずっと触ってた。
Gain Matchという沼、そして別の解
コンプの実装で一番厄介だったのは何ですか。
Gain Match。コンプかけた音とかけてない音を比較するとき、コンプかけた方がメイクアップゲインで音量が大きくなる。そうすると、ユーザーは「コンプの質感」じゃなくて「音量の大きさ」で判別しちゃう。
それだと耳トレにならない。
ならない。だからLUFSマッチングで正規化しようとしたんだけど、これが重かった。ラウドネスの計測値と実際のパラメータのギャップを埋めるテストと調整が延々と必要で、「これやってたら開発終わらないな」と。
断念した。
"Gain Matchを技術で解決するんじゃなくて、体験の設計で回避した。"
— kimny
断念した。で、代わりにどうしたかっていうと、設定画面をちゃんと作った。MuCompに限っての話だけど、4つのモードそれぞれに、ハードウェアコンプと同じパラメータとツマミを用意した。
FETならInput/Output/Ratio/Attack/Release、OptoならPeak Reduction/Gain/Mode。
そう。サンプル音源を流しながら実際にコンプのかかりを調整できる。プラグインをいじってる感覚に近い。で、ユーザーが自分で調整したパラメータが、そのまま耳トレの初期値になる。
つまり、ユーザーが設定した状態のコンプがかかった音と、かかっていない音を比較して当てる、と。
そういうこと。自分で「この設定でどう聴こえるか」を確認した上でゲームに入るから、音量差じゃなくて質感で判断する流れが自然にできる。Gain Matchを技術で解決するんじゃなくて、体験の設計で回避した。
しかもその設定画面自体が、実機を触る体験として価値を持ってる。
副産物だけどね。MVPだから他のゲームの設定画面はまだこれからだけど、MuCompでこの形ができたのは大きい。
設定画面がエンタメになる
実機持ってないDTMerが、ビンテージコンプのツマミを触れる体験。これ自体が価値ですよね。
プラグイン買う前の試し触りにもなるし、「Inputを12時にしたらこうなるのか」っていう発見もある。設定を変える、音を聴く、また変える。このサイクル自体がDTMerにとってはエンタメだと思う。
しかも版権を上手く一般化してあるから、「FET Comp」「Opto Comp」って書いてあるけど、わかる人にはわかる。
大手プラグインメーカーもみんなそうやってるよね。で、わかる人には見た目だけで「おっ」ってなる。その「おっ」がそのままSNSでの話題になる。
事前レンダリングの音源方式だったら、パラメータ固定だからこの体験は不可能ですよね。
そう。内部でDSP処理してるからこそ、パラメータをリアルタイムにいじれる。「めんどくさいから内部処理で」っていう判断が、結果的にこの体験を可能にしてる。
「使うのは簡単、作るのは大変」
ユーザーから見たMUEDearの体験って、どんな感じですか。
アプリ開く。AとBの音を聴く。「こっち」って選ぶ。正解か不正解。2分で終わり。
シンプル。
プレイ体験はシンプルでしょ。
でも裏側では、4種DSPアルゴリズム、実機モデリングの設定画面、出力リミッター、ライブラリのフォーク修正。
"使うのは簡単、作るのは大変。それが正しいプロダクト設計だと思ってる。"
— kimny
それが正しいプロダクト設計だと思ってる。使うのは簡単、作るのは大変。
知った上で、あえて作る
DSPのアルゴリズム自体は、別に新しいものではないですよね。
全然。Webで調べて持ってきたアルゴリズムだし、同じようなもの、それ以上のものが世の中にいくらでもある。本業ではプロ用のプラグイン使ってるわけだし。
だったらなぜ自前で実装したんですか。既存のプラグインで処理した音源を入れれば済んだ話ですよね。
シンプルに、そのうちプラグイン開発をやってみたかったから。ずっと頭の片隅にあった。で、今回の耳トレアプリが、その基礎知識を構築するちょうどいい機会だなと思った。
「車輪の再発明」っぽいけど、厳密には違う。
車輪の再発明って、既存のものを知らないまま自前で作っちゃうことでしょ。今回は何があるか知った上で、学習目的であえて作ってる。本業の道具として使ってきたものの内側を、自分の手で組み立ててみたかった。
途中で動的スレッショルドにも踏み込もうとしてましたよね。
うん、音源の特性に応じてスレッショルドを自動調整するやつ。Deep Learningで全然できる話なんだけど、今のMVPのスタックに機械学習は入ってない。入れたら開発が終わらないから、次に回した。
「やれるけど今じゃない」という判断。
できることとやるべきことは違う。MVPは5ゲーム出すことが目的だから。でもアルゴリズムの核は自分の手で動かしたし、「ここから先はML」っていう境界線も体感できた。4日でプラグイン開発者が通る道を圧縮体験した感じ。
しかも副産物として動くアプリができてる。
そう。学習だけで終わってない。アプリになって、ユーザーに届く形になってる。そこは大きいと思う。
うちだからできること
将来の話になりますが、実機音源を使う構想もありましたよね。
うちの会社やパートナーのスタジオに実機あるから。「Real or Emu?」っていうゲーム。DSPのエミュレートと本物のビンテージコンプで処理した音、どっちが本物か当てる。
実機があって、録音環境もあって、DSPも自前で持ってる。この組み合わせが揃ってるから出せるコンテンツですよね。
まあ、普通はそんなリソースをただの耳トレアプリに使わないよね。うちはたまたま全部手元にあるからできるってだけで。
他にも展開できそうですか。
ピアノでも「どっちが高級グランドピアノ?」とか。収益出てきたら「本物のカルテット演奏はどっち?(片方はサンプリング音源)」とかもできる。テレビの格付けチェックみたいな形式で。
テレビでウケてる形式は一般層にも刺さる。
まあ、そういう企画が打てるところまで行ったら、十分マネタイズできてるってことだけどね。
コモディティの海で
「AIで誰でもアプリ作れる時代」に、似たようなのが100個出たらどうするんですか。
それは怖いなと思ってる。
でも実際、「AIで耳トレアプリ作ろう」と思う人自体がニッチですよね。さらにDSP自前実装する人はもっと少ない。「音量差で当てちゃう問題」に気づいて設計で回避できる人はほとんどいない。
まあ、そうかもしれない。
AIに「コンプ作って」って言えば作ってくれます。でもそれが正しいかどうか判定できる人間がいないと、ゴミができる。
「スマホスピーカーで10〜12dB必要」とか、現場で音作ってないと出てこない数字だからね。
"15年の現場経験が、今ようやく「耳トレアプリ」という別の形で換金可能になってきた。"
— claude
15年の現場経験が、今ようやく「耳トレアプリ」という別の形で換金可能になってきた。
何度も言うけど、マジでただの耳トレアプリ作りたかっただけなんだけどね。何やってんだ俺。
この記事は、MUEDear開発過程でのAI(Claude)との実際の対話をもとに再構成したものです。