音ゲー分科会

音ゲー向けをテーマにいろいろ投稿していきます

Pythonで打鍵音シミュレータを作る1 ~構想編~

Pythonで打鍵音シミュレータを作る ~構想編~

Pythonを使って打鍵音シミュレータを作ってみたいと思います。今回は構想編になります。

今回はPythonの勉強やシステム構想の練習も兼ねているので、実際に作っていく段階で構想通りにいかない部分は都度修正していきます。


まず作りたいもののコンセプトから

keysim_slide1

システムの構想を練ります。
どういうデータを準備するか、それぞれどう処理するか考えます。
うまく表現できているかわかりませんがオブジェクト指向を意識してみました。(仕事でもないので細かくやってません)
①音を再生するモジュール
②ノーツ情報を出力信号に置き換えるモジュール
をそれぞれ構築し、②から0/1の2値信号を出力→①でその信号に従って音を出す構成で考えています。

keysim_slide2

今回はノーツ情報をプレイ動画、打鍵音データはmp3かwavをSource Dataとして扱うものを想定します。
譜面の画像等も活用できると良いのですが、キー音なしのBGMを入手するにはプレイ動画が必要になるのでプレイ動画を使うことにしました。


次にそれぞれの処理をどのプログラムやライブラリで処理するか構想してみました。
(実際に作ってみると音の再生のライブラリが無かったりと、構想段階では不備だらけでした)

keysim_slide3

メインはPythonOpenCV、動画の処理でffmpegを使用します。
ffmpegは動画準備で使用するのみでpythonのプログラムには含まない計画でした。
(制作段階でffmpeg-pythonにして組み合わせる構成に変更しました)


大まかに構築内容を決めたので、作成順序を考えます。

keysim_slide4

まずはキーボードを操作したら(0/1信号を生成し)音を出すモジュールを作っていきます。
次にノーツ情報を取得し0/1信号を生成するモジュールを作って組み合わせます。
※モジュールとかかっこつけて呼んでいますが、プログラムはクラス化やモジュール分けはせず1つにまとめるつもりです。


次回は音を出すモジュールの作成編の予定です。
~おわり~