メインコンテンツへスキップ
見出し画像

AIに「DAWを作って」と頼んだら、4時間半で本当にできた。ちゃんと曲が作れた。

    AIを使えば、Mac版のDAWソフトを作れるのか?

    現在、私は音楽制作の趣味でFender Studio(旧Studio One)を使っています。

    最近のDAWソフトは非常に高機能になっていて、プロ向けの機能も数多く搭載されています。私自身が使う範囲を考えれば、機能的には十分すぎるほどで、特に不満もありません。

    そんな私が、今回ちょっとした実験をしてみました。

    「AIに指示するだけで、Macで動くDAWソフトを作ることができるのだろうか?」というものです。

    きっかけは、昔のMac用MIDIシーケンサー

    1990年頃、まだHDDに直接オーディオを録音することが一般的ではなかった時代に、「Studio Vision」というMacintosh用のMIDIシーケンサーソフトがありました。

    Studio Visionは、MIDI演奏に加えて、専用のカードを追加することで2チャンネルのオーディオ録音にも対応でき、当時としては非常に画期的なソフトでした。現在のDAWの先祖のようなソフトでした。

    私は当時、この技術に興味津々でした。オーディオメーカーに勤めていた私は、業務にかこつけて、Macintosh II用の拡張カードを設計し、2chのデジタルオーディオをHDDに直接録音できるシステムを作ったこともありました。

    画像
    当時、開発ツールThink Cで作成していたオーディオ録音再生ソフト

    今回は、そんな昔のことを思い出しながら、
    「今ならAIを使って、どこまで簡単にDAWを作れるのだろう?」
    と思い、実際に試してみることにしました。


    使用したAIは、すべて無料版の範囲内

    今回使用したAIは、VS Codeと連携して利用できるAntigravity(Gemini)とCopilotです。

    私はAIサービスに課金していないため、今回はすべて無料で利用できる範囲だけで試しました。

    無料版Antigravityだけでは無理だった

    最初は、Antigravityだけで最後まで作れないかと考えていました。

    まずAntigravityにDAWの基本仕様を与え、MacのXcodeでビルドできるプロジェクトのフレームを作らせました。

    ちゃんと動作するフレームが出来上がったのですが、これだけでAntigravityの利用制限に引っかかってしまいました。

    画像
    直ぐに制限になってしまった

    修正はCopilotに引き継ぎ

    そこで方針を変更。Antigravityに作らせたプロジェクトをCopilotに引き継ぎ、実際にアプリを動かしながら、不具合や追加したい機能をCopilotに伝えて修正していくことにしました。

    結果として、Copilot無料版のクレジットを78%ほど使用したところで、基本的なDAWとして動作するソフトを完成させることができました。

    画像
    無料版Copilotのクレジット

    そして驚いたのが、その所要時間です。わずか4時間半です。昼食後に初めて、夕食前には出来上がりました。

    その完成までの過程を下に説明します。


    最初にAntigravityへ与えた仕様

    最初にアプリのフレームを作らせるために、実際に与えたプロンプトは、次のようなものです。

    あなたは、Mac/Appleシリコンで動作するソフトの開発者です。オーディオの録音再生に関する、UIを伴う以下のような仕様のソフトを作りたいと思っています。

    コンパイラは、Xcodeを利用可能ですが、無料で利用できるなら、その他のものでも構いません。

    ・最終的には、DAWソフト(Logic Pro)のようなイメージのものを作りたい。
    ・24ビット、44.1または48kHzのモノラル/ステレオのオーディオを1トラックとする
    ・各トラックは、波形を表示するウインドウを持つ
    ・トラックは順次追加可能で、トラック数制限は設けない
    ・録音は直接HDD/SSDに行われる
    ・オーディオインターフェースはCore Audioを使用する
    ・ソフト全体のスタート/ストップ/リワインドのボタンがある
    ・UIの波形ウインドウには、再生位置を示すバーが表示される
    ・各トラックは、録音モード/再生モードの切り替えがある
    ・録音モードのトラックは、録音する入力チャンネルを選択できる
    ・スタートすると、ストップが押されるまで、指定した入力チャンネルを録音し、順次波形を表示する
    ・再生モードのトラックは、スタートすると、ストップが押されるまで録音済みのオーディオを再生する
    ・全てのトラックのオーディオがMIXされて再生される
    ・リワインドが押されると、カーソル位置が0に戻る

    ここまでの仕様でプロトタイプをフォルダー内に作り、ビルド方法を案内してください。不明点は質問してください。

    このように、最初にAntigravityへ与えたのは、かなり大雑把な仕様でした。この時点では、私自身もDAWに必要な細かい仕様までは整理できていませんでした。

    それでも、Antigravityは指定したフォルダにXCODEのプロジェクトファイルを全て自動生成し、DAWっぽく、一通り動作するアプリができあがっていました。多分、3分掛からなかったと思います。

    ウインドウの構造やボタンの配置など、全く指示しておらず、「DAWソフト(Logic Pro)のようなイメージ」のプロンプトだけで、全てを構成してくれました。

    これは本当に驚きました。

    あとは、Copilotに不具合を伝えて修正させる

    ここからが、今回の実験で最も面白かったところです。

    Antigravityは利用制限になってしまったので、この先をCopilotに引き継ぎ、機能追加と不具合修正を繰り返しました。

    私はコードを一切見ていません。もちろん、自分でコードを書くこともしていません。また、ビルド作業も自分では行っていません。

    私が行った作業は以下のようです。

    • Copilotがビルドしたアプリをダブルクリックして起動する

    • 実際にアプリを操作する

    • 不具合を見つけたら、現状の動作を伝えて、修正を依頼する

    • AIが修正したら、もう一度アプリを起動して確認する。

    この繰り返しです。

    Copilotへ行った指示は、例えば、こんな感じです。

    試しました。カーソル位置は保持されていますが、横スクロール位置が再現されず、時間0から始まる表示になってしまいます。修正してください。
    さらに、選択中の録音オブジェクトに対して、カーソル位置で右クリックのメニューで、2つのオブジェクトに分割する機能をつけてください。分割後は、独立したオブジェクトとして振る舞うようにしてください。

    画像
    VS-Codeに連携して、ソースコードを自動修正/ビルドさせる

    AIでは解決が難しかった問題もあった

    レイテンシーの制御

    今回、AIにかなり細かいところまで作らせることができましたが、すべてが一発で解決したわけではありません。

    特に興味深かったのが、録音・再生時のレイテンシーの問題です。

    再生中のトラックを聴きながら別のトラックに録音すると、録音した波形が再生音に対して約64~65ms遅れてしまいました。

    この問題は、AIに発生する事象を投げただけでは解決しませんでした。

    本来はDAWとしての時間管理の設計が必要

    このあたりになると、単純にUIや機能を追加するのとは違い、オーディオI/O、バッファリング、リアルタイム処理など、DAW特有の低レイヤーの問題が関係してきます。

    DAWとして、入出力の時間管理は、録音/再生のタイミングへの影響が大きく、最も重要な要素の1つです。

    実際は、オーディオデバイスやプラグインから遅延時間の情報を読み取り、DAW上で再生と録音が同期できるように遅延補償を行う必要があります。

    実装をする前に、この遅延補償の仕組みをAIと十分に話し合い、方式を確定してから実装させるべきなのだと思いました。

    Copilotでのデバッグでは遅延問題は解決せず、とりあえずの回避方法として、遅延時間を自分で入力して、録音/再生を合わせるようにしました。この遅延補償は、後にClaude Codeに再設計させることで、自動で行えるようになりました。

    画像
    作成したDAWソフトの設定画面

    無料版AIの範囲だけでV1.0ができました

    できあがったV1.0は、簡易的なものではありますが、DAWとして一通りの操作ができるところまで到達しました。

    • トラックを再生しながら、新規トラックに録音が可能

    • 録音したテイクはオブジェクト化され、基本的な編集が可能

    • 外部のWAVをトラックに貼り付けることが可能

    • VOLUME、PANを指定して、全トラックをミックス出力可能

    • 録音時にクリックを出力可能

    • AUプラグインを利用可能(VSTは対応できていない)

    画像
    V1.0での初めての録音の様子、ミキサーフェーダーは未だ横方向

    V1.0のバグを回避しながらなんとかフルに録音してみた

    まだ、細かいバグがたくさん残っていますが、これらを回避しながら、6トラックの録音をしてみました。

    ドラムはLOOPを貼り付けています。その他のギター、ベースは、実演奏です。AUプラグインを挿入しています。各トラックにUAのコンプと、エフェクトFXにRelabのリバーブ、マスターチャンネルにOzoneのマキシマイザーを使っています。

    ちゃんと曲になりました!

    Claude Code Proを契約しデバッグした

    その後、Claude Code Pro(月額$22)を契約し、不具合修正と機能改善を繰り返しました。

    数日間の開発の結果、AU/VSTプラグイン、パンチイン・アウト、波形表示編集が可能なソフトが出来上がりました。レイテンシーの補償も、すべて実装されています。

    詳しくは、下の記事をご覧ください。制作したアプリや、AIが書いた使い方マニュアル、全ソースコードをダウンロードして試せます。


    まとめ

    「コードを書かない」は本当だった

    今回の実験で特に驚いたのは、まったくコードを書かずに、4時間半ほどでMac上で動作するDAWのプロトタイプを作れたことです。

    従来のように、コードを読んで原因を調べたり、自分で修正したりすることは、全くしませんでした。

    AIが登場する前の時代に、これと同じようなソフトを自分一人で作ろうとしたら、何ヶ月もの試行錯誤が必要だったと思います。

    コーディングのスキルは価値を失ってしまった

    私自身、現役時代にはソフトウェア開発に携わっていました。当時は、仕様を決め、設計を行い、コードを書き、コンパイルして、デバッグするという作業を何度も繰り返していました。

    それが今では、「こういうソフトを作りたい」とAIに伝えるだけで、ほとんどの部分をAIが実装してくれます。

    今回の体験を通じて、私が若かった頃の目標の1つだった「コーディングのプロになる」は、まったく価値がなくなってしまいました。

    最近では、「AIを使うようになって、自分でコードを書かなくなった」というエンジニアの話を聞くことがあります。その意味がかなり具体的に理解できました。

    1つ上のレイヤーのエンジニアリングが必要

    そう考えると、これからのソフトウェア開発では、コードを書く能力よりも、「何を作るのか」を具体的に定義する能力や、AIが作ったものを評価し、問題を切り分ける能力の様な、1つ上のレイヤーのエンジニアリングが重要になるのだと思います。

    さいごに

    現役を退いた元エンジニアとして、今回の小さな実験は、AIによってソフトウェア開発がどこまで変わったのかを、自分自身で体験する良い機会になりました。

    最後まで読んでいただき、ありがとうございます。

    著者:Toshi MUSIC

     
     
    定年退職後も好奇心の向くまま、ギターや音楽、DIY、AIなどを楽しむ、元エンジニアです。 ブログ:https://toshi.life.coocan.jp/blog/ ギターを弾き始めて、50年近くになります。最近、費用をかけずに、自分好みの2本のギターを作ってみました。

    あなたへのおすすめ