ボールバウンスMIDIジェネレーター【Pythonソースファイル】
- ダウンロード商品¥ 0
物理演算で動く複数のボールが壁や互いに衝突するたびにMIDIノートを発音するジェネレーターです。Windows、macOSのPythonで動作します。 画面内でカラフルなボールがバウンドする様子を視覚的に楽しみながら、その動きと連動した音楽を体験できます。UIからボールの速度、各ボールの音程(ピッチ)、そしてボールが動く箱のサイズを自由に調整可能です。衝突時にはボールが光るエフェクトも表示されます。 DAWのMIDIインプットに接続すれば、様々なソフトウェア音源を鳴らすことが可能です。※単体では発音しません。 このプログラムは、どなたでも自由にご利用、改変、再配布いただけます。MITライセンスの下で提供されます。
操作について
・スタート/ストップボタン: ボールの物理演算とMIDIの発音を開始/停止します。開始時には緑色のボタン、停止時には赤色のボタンに変化します。停止時には、すべてのMIDIノートオフ信号が送信されます。 ・各ボールの音程(Ball N)スライダー: 画面に表示される4つのボール(緑、紫、オレンジ、赤)それぞれに対応するMIDIノート(音程)を設定します。スライダーを動かすと、現在のMIDIノート番号と対応する音名(例: C4, G4など)が表示されます。設定範囲はA0 (21) からC8 (108) です。 ・Speed (速度) スライダー: ボール全体の移動速度を調整します。 ・Width (箱の幅) スライダー: ボールがバウンドする箱の横幅を調整します。 ・Height (箱の高さ) スライダー: ボールがバウンドする箱の縦幅を調整します。 ・ボールの衝突: ボールが壁に衝突した際、またはボール同士が衝突した際に、対応するMIDIノートが発音されます。 衝突したボールは一時的に光るエフェクト(グロー)を表示します。 発音されるベロシティ(音の強さ)は、ボールのY座標とランダム要素によって変化します。
はじめて使用する方へ
1. 仮想MIDIケーブルの準備 loopMIDI をインターネットで検索してダウンロードし、インストールしてください。 インストール後、loopMIDI を起動して、新しいポートを作成し「loopMIDI Port 1」と命名します。このポートにプログラムがMIDI信号を送ります。 2.Pythonを検索しインストール。今回のプログラムは3.13で動作確認しています。 追加で必要なライブラリもインストールします。コマンドプロンプトを開き、以下のコマンドを実行して必要なライブラリをインストールします。 pip install pygame mido 3.ダウンロードしたZIPファイルを展開し、midi_bouncing_balls.py というファイルをデスクトップ(または分かりやすい任意の場所)に置きます。 4.コマンドプロンプトやターミナルでcdコマンドを使って、ダウンロードしたファイルがあるフォルダに移動します。 cd C:\Users\あなたのユーザー名\Desktop ※ 「あなたのユーザー名」は、お使いのPCのユーザー名に置き換えてください。 5.プログラムの実行 ファイルがあるフォルダに移動できたら、以下のコマンドを入力してプログラムを実行します。 python midi_bouncing_balls.py 6.loopMIDIにうまく連携されないときは コード内のMIDI_PORT_NAME = 'loopMIDI Port 1 8' をあなたの環境のポート名に書き換えてください。 コマンドプロンプト/ターミナルで Python を使って確認する Python がインストールされていれば、midoライブラリを使ってコマンドラインから直接確認することもできます。 コマンドプロンプトを開き、Pythonのインタラクティブシェルを起動します。 python 加えて以下のコマンドを入力して実行します。 import mido print(mido.get_output_names()) これにより、PCで利用可能なすべてのMIDI出力ポート名のリストが表示されます。その中に loopMIDI で作成したポート名が含まれているはずです。 コード内のMIDI_PORT_NAME = 'loopMIDI Port 1 8' をその中のポート名に書き換えてください。 —------------------------ これらの手順で、プログラムが起動し、画面にボールが跳ねるアプリケーションが表示されるはずです。もし何か問題があれば、エラーメッセージをChatGPTやGeminiなどの生成AIに直接貼り付けることで解決手順を教えてもらえます。
動作環境
OS: Windows, macOS, または Linux Python: Python 3.x系
サポート
このプログラムはGemini 2.5 Proを使用しバイブコーディングで作成されています。 こおろぎ本人には問題解決能力はありません。ご了承ください。また、テキストなど、内容をクリーンナップせず配布しております。