8bit BGM generator は、「作曲スキルがないけど、Pyxel の自作ゲームに BGM を入れたい」という方のための BGM 自動生成ツールです。
Pyxel をお持ちの方でなくても、ブラウザ版で体験いただくことができます。また、生成した曲を mp3 などの音声ファイルとして録音したり、MIDI ファイルとして出力した上で加工することで、Pyxel 以外のレトロゲーム開発や動画の BGM 等に使っていただくことも可能です(詳しくは後述)。
問題点を発見したり、要望がある方は、Twitter frenchbread (@frenchbread1222) まで DM 等でお知らせください。
8 小節、3 または 4 パートの曲を生成します。パート編成は以下から選べます。
3 チャンネル編成で生成した曲を Pyxel で取り込んだ場合、残りの 1 チャンネルを効果音用に自由に使えます。(4 チャンネル編成にする場合も、効果音の再生時に一時的に曲を止めることによって BGM と効果音を両立できます。)
テンポ、コード進行、ベースとドラムのリズムなどは登録されているパターンから指定します。メロディは自動生成ですが、パラメータによりある程度調整することもできます。
よくわからないという方は、とりあえず「きほん」タブの「プリセット」を適当に選択してみてください。その後でテンポを変えたり、リズムを差し替えることで、好みの曲調に近づけることができると思います。
pyxel play 8bit-bgm-gen
を実行してください。また、MIDI ファイルの出力をしたい場合、事前に pip install mido
コマンドを実行して mido をインストールしてください。※ブラウザ版では MIDI ファイルの出力ができません。MIDI ファイルを出力したい場合、Python および Pyxel をインストールした上でローカル環境で動かしていただく必要があります。
Pyxel のサウンド仕様に沿ったテキストデータが json ファイルとして出力されるので、これをゲーム本体のスクリプトで読み込んで再生する形になります。(リポジトリ内の play.py 参照。)
以下の 2 つの方法があります。
※この動画は 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 初版リリース