Skip to content

shiromofufactory/8bit-bgm-generator

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

8bit BGM generator

8bit BGM generator は、「作曲スキルがないけど、Pyxel の自作ゲームに BGM を入れたい」という方のための BGM 自動生成ツールです。

Pyxel をお持ちの方でなくても、ブラウザ版で体験いただくことができます。また、生成した曲を mp3 などの音声ファイルとして録音したり、MIDI ファイルとして出力した上で加工することで、Pyxel 以外のレトロゲーム開発や動画の BGM 等に使っていただくことも可能です(詳しくは後述)。

問題点を発見したり、要望がある方は、Twitter frenchbread (@frenchbread1222) まで DM 等でお知らせください。

自動生成の仕様

8 小節、3 または 4 パートの曲を生成します。パート編成は以下から選べます。

  • メロディ+リバーブ(ディレイ)+ベース
  • メロディ+ベース+ドラム
  • メロディ+サブメロディ+ベース
  • メロディ+サブメロディ+ベース+ドラム

3 チャンネル編成で生成した曲を Pyxel で取り込んだ場合、残りの 1 チャンネルを効果音用に自由に使えます。(4 チャンネル編成にする場合も、効果音の再生時に一時的に曲を止めることによって BGM と効果音を両立できます。)

テンポ、コード進行、ベースとドラムのリズムなどは登録されているパターンから指定します。メロディは自動生成ですが、パラメータによりある程度調整することもできます。

よくわからないという方は、とりあえず「きほん」タブの「プリセット」を適当に選択してみてください。その後でテンポを変えたり、リズムを差し替えることで、好みの曲調に近づけることができると思います。

ツールの使い方

  • ブラウザ上で動かす場合: https://retro-bgm-generator.web.app/ (スマートフォンでも動きますが、画面が小さく操作しづらいのと、作成した曲をエクスポートするのが困難なので、お試し用途以外は PC からアクセスください。)
  • ローカル環境で動かす場合: このリポジトリをダウンロードして、pyxel play 8bit-bgm-gen を実行してください。また、MIDI ファイルの出力をしたい場合、事前に pip install mido コマンドを実行して mido をインストールしてください。

※ブラウザ版では MIDI ファイルの出力ができません。MIDI ファイルを出力したい場合、Python および Pyxel をインストールした上でローカル環境で動かしていただく必要があります。

自動生成した曲を使うには?

①Pyxel で使う場合

Pyxel のサウンド仕様に沿ったテキストデータが json ファイルとして出力されるので、これをゲーム本体のスクリプトで読み込んで再生する形になります。(リポジトリ内の play.py 参照。)

②Pyxel 以外で使いたい場合

以下の 2 つの方法があります。

  • 8bit BGM generator で MIDI ファイルを出力します。この MIDI ファイルを直接プログラムから再生したり、お使いの DAW などで オーディオ形式のファイル(mp3, wav etc)を生成することで、多様な環境でお使いいただけます。ただし、8bit BGM generator で設定した音色は MIDI ファイルには反映されませんので、お使いの環境にあわせて音源を設定したり、音域をオクターブ単位で調整したりすることを推奨します。
  • たとえば Chrome の拡張機能「Chrome Audio Capture」 などを使うことで、ブラウザ上で鳴らしているシステムサウンドを mp3 ファイルなどに録音することができます。実際にゲームなどで使う場合は、無音部分のトリム編集などが必要になってきます。

チュートリアル動画

こちらをご覧ください(Youtube が開きます)

※この動画は ver1.00 時点のものなので現在のバージョンと少し仕様が異なっています。ご了承ください。

カスタマイズ方法

generator.json をカスタマイズすることで、登録されているコード進行・リズム(ベース・ドラム)以外のパターンの曲を生成することもできます。

ローカルダウンロードの上、自己責任でご使用ください。(形式が正しくない場合、正常動作しない可能性が高いです。)

コード進行

  "chords": [
    {
      "description": "Ⅰ - Ⅶ♭",
      "progression": [
        { "loc": 0, "notes": "209019030909" },
        { "loc": 16, "notes": "901093090920" },
        { "loc": 32, "notes": "209019030909" },
        { "loc": 48, "notes": "901093090920" },
        { "loc": 64, "repeat": 0 },
        { "loc": 80, "repeat": 1 },
        :
  • "description" は画面上に表示する説明です。曲には影響しません。
  • "progression.loc" は曲のロケーションを指します。16 ごとに 1 小節ですので、1 小節ごとにコードを変える場合は、上の例のように 0, 16... と指定します。
  • "progression.notes" はコードやメロディの構成音を示します。12 個の数字は、C, C#, D .. に対応します。
    • "0" は使わない音です。
    • "1" は「コードを構成するベース以外の必須音」です。"1"の音はコード内で必ず使います。
    • "2" はベース音です。メロディでも使いますが、必須にはなりません。
    • "3" は「コードを構成するが省略可能な音」です。この音はメロディに登場しない場合もあります。
    • "9" はコード構成音以外で、メロディに使える音です。
    • たとえば C メジャースケジュールのコード C の場合、C が"2"、E が"1"、G が"3"、DFAB が"9"となり、"notes"として指定する文字列は"209019030909"です。
    • 上の例において、G を"1"と指定することも可能ですが、特にコードの長さが少ない場合、"1" の数が多いと曲の生成に時間がかかったり、フリーズする場合があります。"1" の数は 2 つまで、1/2 小節ごとにコードを切り替える場合は 1 つのみとすることを推奨します。
  • "progression.repeat" は、progression 要素の n 番目(1 つ目は n=0)と同じコード・メロディを繰り返す指定です。"repeat"を指定する場合、"notes"は指定しないでください。

ベースパターン

  "base": [
    :
    {
      "basic": "0.2.4.2.0.2.4.2.",
      "final": "0.2.4.2.2.4.2.4."
    },
    :
  • "final"は 8 小節目、"basic"はそれ以外の小節に適用するパターンで、フォーマットは同じです。
  • 1 つの文字が 16 分音符に相当しますので、文字列の長さは必ず 16 文字にしてください。
  • "0"は休符です。
  • "1"は 5 度の音、"2"はルート音、"3"は"1"より 1 オクターブ高い 5 度の音、"4"は"2"より 1 オクターブ高いルート音を示します。
  • "."で前の音を伸ばします。たとえば "4.4." や "2.2." であれば、8 分音符 x 2 を示します。"00"と"0."は同じ結果になります。

ドラムパターン

  "drums": [
    :
    {
      "basic": "1033203310332033",
      "final": "1033203310332220"
    }
  ],
  • "final"は 4, 8 小節目、"basic"はそれ以外の小節に適用するパターンで、フォーマットは同じです。
  • 1 つの文字が 16 分音符に相当しますので、文字列の長さは必ず 16 文字にしてください。
  • "0"は休符です。
  • "1"はバスドラム、"2"はスネアドラム、"3"はハイハット、"5"はロータム、"6"はミドルタム、"7"はハイタムです。(patterns.json の"key"に対応しますので、音色を追加・変更することも可能です。)

更新履歴

2023/10/14 Ver1.21 mido インストール時にエラーとなる問題を修正

2023/10/10 Ver1.20 MIDI 出力機能をサポート

2023/09/23 Ver1.10 メロディ生成アルゴリズム改善、サブメロディ生成に対応

2023/09/09 Ver1.02 ブラウザ版のエクスポートに対応

2023/06/01 Ver1.01 Windows でローカル実行時にファイル保存できないバグを修正

2023/05/08 Ver1.00 初版リリース

About

No description or website provided.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages