MusicStudioFJ開発記 — 万華鏡から音楽へ、寄り道が本線になるまで

万華鏡のその先で、音が欲しくなる

万華鏡アプリを作ってみたら、当然のように動画も作れるようになる。
すると今度は、その映像に「音を付けたい」と思うようになる。人間、欲が深い。

「と言うわけで」と書き出したいところだが、いやどんな訳だ、と自分でもツッコミを入れつつ、音楽生成に手を出すことになった。

無課金で試したい → ACE-Stepへ

楽曲生成といえば Suno*あたりは知っていたが、どうせなら気兼ねなく試したい。
そこで見つけたのが ACE-Step 1.5 *というオープンソースの音楽生成モデルだった。

ただし問題がある。
これを動かすには ComfyUI *などの環境が必要になる。

これがまた、いかにも面倒くさそうなのである。何か色々繋げて複雑そうなのである。

 またACE-StepのGithub*を見ると、コマンドラインでインストール?
いやいや、MS-DOS時代からあれが苦手で、黒い画面に文字が流れていくと「本当に今何やってるんだ?」という気分になる。
画面に手を突っ込んでファイルをつかみたくなる衝動すらあった。何でもっと簡単にできないのかと思ったものだ。

昔、ファイル管理ソフト「ですくとっぷ まつもと(現アートマン21)」に出会ったときの、これがMacのファインダーみたいで一気にファイル操作が楽になったものだ。

ならば作るしかない、といういつもの流れ

面倒ならば、簡単にする道具を作ればいい。
ということで、ACE-Stepを手軽に扱えるmacOSアプリを作ることにした。

名前は MusicStudioFJ
今回は最初から日本語UIも指定。前回の万華鏡ではそこを言い忘れて軽く後悔したので、ここはきっちり押さえた。

設計は ChatGPT に要件定義を依頼し、それを Codex に渡す。
すると、20分ほどでプロトタイプができ上がる。

Chat GPTに入れたプロンプト

CodexでAce step1.5 をラッパー(複雑な機能を、扱いやすい形に包み直す仕組み)で包んでインストールから簡単に楽曲作成、保存するmacOSデスクトップアプリの要件定義をお願いします。

日本語UI
音楽理論・作・編曲について知らない、楽器演奏できない素人にも使えるようにして。
BGMに特化。インストゥルメンタル。ボーカルおよび歌詞入力は考えていませんが、後で追加できる仕様にして。好きなジャンル(ボサノバ、ハワイアン、フュージョン、クロスオーバー、環境音楽、ミニマル、シティポップ)
嫌いなもの(メタル、EDM、クラブミュージック、レイブ、ラップ、パンク、浪曲、演歌、軍歌)これらが好きな人、ごめん。

用途:万華鏡アプリで作成した動画に付ける音楽

app名:MusicStudioFJ

要件定義

以下は、そのまま Codex に貼って使える完成版指示文です。
初心者向け、MusicStudioFJ の方向性がぶれないように、かなり具体的にしてあります。


Codex用 指示文

あなたは macOS アプリ開発の上級エンジニア兼UI/UX設計者 です。
私は Xcode / Swift / SwiftUI 初心者 です。難しい言葉は避け、必要な説明は短く具体的にしてください。

作りたいのは、ACE-Step 1.5 をラッパーで包み、インストールから楽曲生成、試聴、保存までをGUIで簡単に行える macOS デスクトップアプリです。
アプリ名は MusicStudioFJ です。


開発の前提

  • 対象OSは macOS
  • UIは 日本語
  • 実装は SwiftUI
  • ACE-Step 1.5 はアプリ内部から利用する
  • ユーザーがターミナルを使わなくてもよい構成にする
  • まずは ローカル実行前提
  • まずは BGM特化・インストゥルメンタル専用
  • ボーカル機能・歌詞入力は初版ではUIに出さない
  • ただし、将来追加しやすい設計にする
  • 初心者でも迷わないUIを最優先にする
  • 音楽理論、作曲、編曲、楽器演奏がわからない人でも使えるようにする

このアプリの目的

このアプリは、万華鏡アプリで作った動画に付けるためのBGM を簡単に作るためのものです。
ユーザーは作曲ソフトのような難しい操作をしたいのではなく、雰囲気を選んで曲を作りたい です。

つまり、
「音楽制作ソフト」よりも「映像に合うBGMを作る道具」
として設計してください。


ユーザー像

ユーザーは次のような人です。

  • 音楽理論を知らない
  • コード進行がわからない
  • 楽器が弾けない
  • DAWのような複雑な画面は苦手
  • でも、映像に合う雰囲気の音楽は欲しい
  • なるべく少ない操作で、それっぽい良いBGMを作りたい

したがって、
専門用語をできるだけ見せず、感覚的な言葉で操作できるUI
にしてください。


好きな音楽傾向

優先して作りたいジャンルは以下です。

  • ボサノバ
  • ハワイアン
  • フュージョン
  • クロスオーバー
  • 環境音楽
  • ミニマル
  • シティポップ

避けたい音楽傾向

以下の傾向は出にくくしてください。

  • メタル
  • EDM
  • クラブミュージック
  • レイブ
  • ラップ
  • パンク
  • 浪曲
  • 演歌
  • 軍歌

UIでも「避けたい傾向」として選べるようにして、
内部では ACE-Step 用のプロンプトや条件に反映してください。


アプリの基本コンセプト

ユーザーは、たとえば次のような感覚で曲を作れるようにしたいです。

  • 透明感がある
  • ゆっくり流れる
  • 都会的
  • 水の反射のよう
  • 夜の光のよう
  • 南国の風のよう
  • ひんやりした空気
  • 静かだけど少し動きがある

つまり、
BPM・キー・拍子・和声進行などを前面に出すのではなく、感覚語から内部で音楽条件へ変換する設計
にしてください。


必須要件

1. 初回セットアップ

  • アプリ初回起動時に必要な環境を確認する
  • ACE-Step 1.5 を使うために必要なものが不足していたらGUIで案内する
  • インストール、ダウンロード、初期設定をアプリから進められるようにする
  • ユーザーにターミナル操作を求めない
  • 進捗表示を出す
  • エラー時は「何が起きたか」「どうすればよいか」をやさしく表示する

2. 日本語UI

すべて日本語で統一する。
英語の技術用語はなるべくそのまま出さない。

3. かんたん作曲モード

初心者向けのメイン画面を作る。
最低限、次のような入力で曲が作れるようにする。

  • 曲の長さ
  • 雰囲気
  • 明るさ / 落ち着き
  • 動きの強さ
  • 楽器感
  • ジャンル傾向
  • 避けたい傾向

4. インスト専用

初版ではボーカルや歌詞入力は不要。
ただし将来追加しやすいデータ構造にする。

5. 複数候補生成

1回の生成で複数候補を作り、聴き比べできるようにする。

6. 試聴

  • アプリ内再生
  • 一時停止
  • シーク
  • 候補比較
  • お気に入り登録

7. 保存

  • WAV
  • MP3
  • プロジェクト保存
    に対応する。

8. 万華鏡動画向け

  • 動画尺に合わせやすい
  • ループしやすい
  • 映像を邪魔しすぎない
  • フェードアウト付き保存もできる
  • 将来的に動画と仮合わせ再生しやすい構造にする

画面構成の要望

メイン構成

左右分割の macOS らしい画面にしてください。

左側

  • プロジェクト一覧
  • 曲一覧
  • 最近使ったもの
  • お気に入り

中央

  • 選択中の曲の情報
  • 波形表示
  • 再生コントロール
  • 候補比較

右側

タブ式の設定パネルにしてください。

タブ1 かんたん作曲

初心者向けの主操作画面

タブ2 くわしく調整

中級者向けの追加設定
ただし最初は隠し気味でよい

タブ3 出力

保存形式、ループ、フェードなど

タブ4 設定

インストール状態、モデル状態、保存先など


UIで使う言葉の方針

難しい言葉は避けてください。
たとえば次のように言い換えてください。

  • BPM → テンポ
  • Key → 音の明るさ / 落ち着き
  • Density → 音の多さ
  • Reverb → ひろがり
  • Arrangement → 曲の流れ
  • Instrumentation → 音色の傾向

必要な場合だけ「詳細設定」に専門項目を入れてください。


かんたん作曲モードの入力例

次のようなUIにしてください。

  • 雰囲気
    • 透明感
    • あたたかい
    • 涼しい
    • 上品
    • 浮遊感
    • 都会的
    • 南国風
    • 静か
    • やさしい
  • 動き
    • ほとんど動かない
    • ゆるやか
    • 少し動く
    • やや展開する
  • ジャンル
    • ボサノバ
    • ハワイアン
    • フュージョン
    • クロスオーバー
    • 環境音楽
    • ミニマル
    • シティポップ
  • 避けたい傾向
    • 激しい
    • ダンスっぽい
    • ボーカルっぽい
    • 派手すぎる
    • 重すぎる
    • 荒々しい
  • 曲の長さ
    • 15秒
    • 30秒
    • 60秒
    • 90秒
    • 3分
    • カスタム

内部処理の方針

表向きのUIは初心者向けに単純化し、
内部ではそれを ACE-Step 1.5 向けのプロンプトや制御条件に変換する層 を作ってください。

例:
ユーザーが
「透明感」「都会的」「ゆっくり」「3分」「ボーカルなし」「派手すぎない」
を選んだら、内部ではそれを整理して
インストBGM用の生成条件に変換する。

この変換ロジックは、UIコードにべた書きせず、
独立した PromptBuilder / GenerationConfigBuilder のような層 に分けてください。


設計の必須条件

コードは初心者にも追いやすいように、なるべく整理してください。

最低限、次の責務分離をしてください。

  • UI層
  • アプリ状態管理層
  • ACE-Step 起動管理層
  • 生成ジョブ管理層
  • プロンプト変換層
  • 音声再生層
  • 保存 / プロジェクト管理層
  • エラー表示層

まず作ってほしい初版の範囲

初版は欲張りすぎず、次の範囲で完成させてください。

  1. macOSアプリの基本骨組み
  2. 日本語UI
  3. プロジェクト作成
  4. かんたん作曲画面
  5. ダミーまたは実連携での生成フロー
  6. 候補一覧表示
  7. 再生UI
  8. 保存UI
  9. 設定画面
  10. ACE-Step 起動・接続状態表示

実装の進め方

以下の順で進めてください。

ステップ1

まず全体設計を出す

  • 画面一覧
  • データモデル
  • ディレクトリ構成
  • 主要クラス / 構造体 / ViewModel の役割
  • ACE-Step 連携方針

ステップ2

その後、必要ファイルをまとめて作成する

ステップ3

ビルドが通る最小構成を作る

ステップ4

仮UIではなく、実際に使う前提の見た目に整える

ステップ5

ACE-Step 連携部分は、最初は差し替えやすい構造で作る
まだ不明なAPI仕様があれば、モック実装で先にUIと設計を完成させる


ファイル更新ルール

私は初心者なので、部分的な差分修正よりも、
必要ならファイルを丸ごと出してほしい です。

したがって、

  • 新規ファイルはフルで出す
  • 既存ファイルの修正も、できるだけ丸ごと出す
  • 変更点は短く説明する
  • どのファイルを作ればよいか明確にする

ビルドと確認

各段階で次を明確にしてください。

  • 何を作ったか
  • どのファイルを追加 / 更新したか
  • 次に何をするか
  • どこまで動くか
  • まだダミーの部分はどこか

デザイン方針

UIは、DAWのようなゴツい感じではなく、
落ち着いた、上品で、映像制作に似合う雰囲気 にしてください。

方向性:

  • macOSらしい整理された見た目
  • ダーク基調でもよい
  • 青、青緑、紫系の控えめなアクセント
  • うるさくない
  • 「作曲」より「映像用BGMアトリエ」に近い空気感

エラー表示方針

エラーは専門用語だらけにしないこと。
たとえば次のようにしてください。

悪い例:

  • Python environment initialization failed
  • subprocess launch error

良い例:

  • 音楽エンジンの起動に失敗しました
  • 初回データの準備に失敗しました
  • 保存先または必要データを確認してください
  • 再試行する / 設定を見る

将来拡張に備えること

今は不要だが、将来追加しやすいように設計してください。

  • ボーカル
  • 歌詞入力
  • 参照音源
  • 一部分だけ再生成
  • 動画と同期プレビュー
  • ステム分離
  • 詳細ミックス調整

そのため、データ構造と責務分離は拡張しやすくしてください。


実装開始時のお願い

最初の返答では、いきなりコードを書き始める前に、まず次を提示してください。

  1. 全体アーキテクチャ
  2. 画面構成
  3. データモデル
  4. ファイル構成
  5. 開発フェーズ案
  6. 初版で本当に入れる機能一覧
  7. ダミー実装にする部分と本実装にする部分の切り分け

その後でコード作成に進んでください。


最後に

このアプリで最も大事なのは、
音楽知識のない人でも、万華鏡動画に合う上品なインストBGMを簡単に作れること です。

機能を増やすよりも、まずは

  • 迷わない
  • 雰囲気で作れる
  • ちゃんと聴ける
  • 保存できる
    を優先してください。

このスピード感、ちょっとすごい。

画面構成

左パネル:プロジェクト、生成した曲一覧
中パネル:波形プレビュー、再生バー、候補曲(一度に4曲生成)、エラーログ
右パネル:かんたん作曲タブ(ジャンルや雰囲気、楽器、音色テクスチュア、リズム、ボーカル特性の選択)
くわしく作曲タブ(ノイズ低減、サンプラー、LM感度・強度、キャプション、歌詞入力、シード値など)
出力タブ(保存方式wav/mp3、プロジェクト保存など)
設定タブ(初期設定、API起動、モデル選択、ステップ値など)

モデル選びで性格が変わる

いざ使ってみると、音がどうもノイジー。
ネットで聞いたサンプル音源はもっとクリアなのに、なぜかこちらは濁る。ん〜何故だ!

Codexに聞いてみると、使っていたのは Baseモデル(ACE-Step-v1-3.5B)
どうやらカスタマイズ向けで、仕上がりはややラフらしい。そして古い。BGMには適しているとCodexは判断したらしい。

そこで

  • Turbo(高速・派手)
  • SFT(安定・やや地味)
    の切り替えを実装。

結果はというと—

  • Turbo:速くて音は明瞭だが音量が大きく、ピークでノイズが混じる
  • SFT:安定だが、音は少しTurboに劣る。ややモゴモゴする時があり発音が聴き取りにくい

どちらも一長一短で、決定打に欠ける。んんんジレンマ。

ボーカル対応で仕様が変わる

試しにTurboで歌詞を入れてみたところ、思いのほか良かった。
当初はBGM専用のつもりだったが、方向転換してボーカル対応も追加。ここで沼にハマってしまったのよ。

ジャンルや雰囲気、楽器、リズムなどをボタンで選べるUIにして、
「何を選んだか分からない」問題も回避。隠すUIが嫌いなんでね。

ただし歌詞の扱いにはクセがある。

  • 勝手に省略
  • 勝手に繰り返す
  • 勝手に近くの単語を混ぜて別の歌詞を生成 おいおい!

省略と切り返しはまあ許せるけど、造語を作られては意味が通らないし作品として成立しないので、ここは悩みどころ。あともう少しで終わりというところで間違えやがるとガッカリする。

ノイズ問題とComfyUIの誘惑

もう一つの問題、ノイズ対策を探っていると、ComfyUIでカスタムサンプラー*を使うと改善するという情報に行き当たる。

ただしこれはノードベースで自由度が高い分、アプリ側に組み込むのは難しい。Codexは改造を嫌がってるし
ACE-StepのAPI *経由では機能が制限される。

半分あきらめかけたところで、GitHubのACE-Stepリポジトリ*に
“クリーン寄り”のサンプラーが公開されているのを発見。

Codexに組み込んでもらい、多少改善。
ただし「劇的に良くなる」というほどではない。

歌詞生成はGPTsに任せる

歌詞はどうするか。作詞するほどの才能も才覚もない。じゃAIに作らせようということで
LM Studio*でローカル生成も考えたが、手間が増える。

そこで GPTs *を使って、
キーワード → 自然文 → 構造化歌詞
という流れを作った。

ACE-Stepでは日本語歌詞は比較的安定するが、読み間違いは避けられない。
しかも生成ごとに“歌手”が変わるため、毎回違う箇所で転ぶ。漢字は開いたりして対処する。

ひらがな、カタカナ、ローマ字…試行錯誤は続くが、
歌詞の精度が1箇所でも崩れると全体が台無しになる。ローマ字が良いということで新たに漢字仮名交じり文をローマ字に変換するユーティリティも作ってしまった。

新モデル「XL」で満足度アップ

2026年4月、新モデル「XL」が登場。
期待して組み込んでみると、確かに音質は向上している。歌詞も間違えが少なくなった。

ただし妙な違和感がある。
うっすら別の曲が混ざっているような、説明しづらい感覚。

コーラス部分で特に顕著。

調整を重ねていくうちに改善したが、原因ははっきりしない。
キャッシュ周りを疑ったが、確証はなし。今は問題なし。

結局のところ、
SFTとTurboのマージ版が一番バランスが良かった。お耳汚しかとは思いますが、ちょっと聞いてください。
同じ歌詞でボサノバ風とフォーク風です。無加工で音が大きいので気をつけてください。

generativecontents

ボサノバ風

フォーク風

ガラスの心 (ボサノバキャプション例、歌詞+構造タグ)

Genre: Bossa Nova, Brazilian music
Emotion: gentle, smooth
Instrument: piano, nylon guitar, upright bass, drum set, brush percussion
Timbre Texture: organic
Production Style: high-fidelity
Speed: mid-tempo, groovy
Vocal: female vocal

[Intro – soft]
ガラスのこころ、ひかりうつす。
よるのまちに、ゆれている。
[Verse – laid back]
ネオンのかわ、そっとわたる。
ビルのかげに、きみおさがす。
つめたいかぜ、ほほなでる。
とけないまま、ひびのこる。
[Pre-Chorus – building]
ふれたゆびさき、こわれそーで。
やさしいうそに、まよいこむ。
[Chorus – anthemic]
ガラスのこころ、きらめいて。
ひかりあつめて、まちをぬける。
こわれるほどに、あいしたい。
あさのそらへと、とびたつの。
[Verse – laid back]
まどにうつる、ふたりのかげ。
ことばすくなく、よるすすむ。
つよがるだけの、わたしじゃない。
すきまからまだ、ひかりもれる。
[Pre-Chorus – building]
つよくいきたい、でもこわくて。
やさしいこえに、ほどけてく。
[Chorus – anthemic]
ガラスのこころ、きらめいて。
ひかりこぼして、まちをてらす。
くだけるほどに、あいしたい。
あさのそらへと、つながるの。
[Bridge – soft]
しずかなピアノ、よるをほどく。
こどうだけが、ひびいてる。
[Chorus – big finish]
ガラスのこころ、かがやいて。
ひかりまとって、まちをぬける。
こわれるほどに、あいしたい。
あさのそらへと、とびたつの。
[Outro – fade out]
ガラスのこころ、まだゆれて。
ひかりのなかで、いきていく。

気がつけば一ヶ月

万華鏡の動画に音を付けよう。
その軽い動機から始まったはずが、

気づけば
アプリ開発+音楽生成の検証で一ヶ月。時間が溶ける!

寄り道のつもりが、しっかり本線になっていた。

こういうことは、まあ、よくあるよね。Codexって何かいいおもちゃが手に入った感じがする。

このブログでは技術的なことは書かない。技術の進化が早くてすぐに陳腐化するので。音楽は全くのど素人でも技術なしに音楽が作れる。楽しめる。これを広めたいという思いです。

※注:用語の簡単な整理
  • SUNO(スーノ):作りたい曲のイメージや歌詞を文字で入力するだけで、AIが歌入りの本格的な曲を1分で作ってくれるサービス
  • ACE-Step:テキストから音楽を生成するAI作曲アプリ。複数のモデル(Base / SFT / Turboなど)がある。クリーンな学習で著作権を侵害していない。
  • ComfyUIコンフィー・ユーアイ):ノード*をつないでAI処理を構築するGUIツール。画像、動画、音楽生成などができる。
  • ノード:処理の単位をブロック化したもの
  • Github:プログラマー向けの、世界最大級のファイル共有&共同作業サイト
  • サンプラー:AIが音や画像を生成する際の“出し方”を制御する部分
  • API:外部の機能を呼び出して使う仕組み
  • リポジトリ:プログラム一式がまとめられている保管場所(GitHubなど)
  • LM Studio:ローカル環境でLLM(大規模言語モデル)を動かすためのアプリ
  • GPTs:ChatGPT 上で作成できるカスタムAI。特定用途(今回は作詞や構造生成など)に特化させて使える仕組み

構成・Chat GPT

ACE-Step 1.5 Githubリポジトリ / 日本語ガイド
Hugging Face ACE-Step 1.5リポジトリ
Discord ACE-Step
Reddit ACE-Step

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

CAPTCHA


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

目次