shiromofufactory / 8bit-bgm-generator

31 stars 3 forks source link
pyxel

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 と効果音を両立できます。)

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

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

ツールの使い方

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

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

①Pyxel で使う場合

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

②Pyxel 以外で使いたい場合

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

チュートリアル動画

こちらをご覧ください(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 },
        :

ベースパターン

  "base": [
    :
    {
      "basic": "0.2.4.2.0.2.4.2.",
      "final": "0.2.4.2.2.4.2.4."
    },
    :

ドラムパターン

  "drums": [
    :
    {
      "basic": "1033203310332033",
      "final": "1033203310332220"
    }
  ],

更新履歴

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 初版リリース