1. どんなモジュールがあるか
Python には標準ライブラリで wave モジュールがあり、.wav ファイルの読み書きができます。ただし音の再生はできません。調べた感じ、いくつか音の再生ができるモジュールがあったので使用感をメモしておきます。2. winsound モジュール
winsound モジュールは標準ライブラリなので、とくにインストールなど必要なく使えるのが魅力です。再生するために必要なメソッドも簡単です。import winsound winsound.PlaySound("test.wav", winsound.SND_FILENAME)
これだけ。試験段階だとこれで十分でした。ただ、音を重ねて鳴らしたい場合は不便です。1チャンネルしかないのか、1度にならせる音は1音のみのようでした。
- よいところ:標準ライブラリ。簡単に再生できる。
- わるいところ:複数トラックは再生できない?
3. pyaudio モジュール
ググった感じ音声関係のプログラムには必ずといっていいほど出てくるのがこの pyaudio モジュールでした。実際かなりいろいろなことができます。これ単体で音を鳴らすこともできます。参考:pythonで和音を鳴らそう - すこしふしぎ.
また、winsound のように wav ファイルを読み込むこともできます。
参考:Python/Pyaudioでwavファイルの再生
チャンネルもあるので複数音にも対応していそうです。しかし、wave モジュールも必要で少しコードが長く感じたので、今回の使用は見送っています。
- よいところ:音声プログラミングにおいて万能。音が出せるし再生もできる。
- わるいところ:万能なぶんいろいろな設定が必要。
4. pygame モジュール
今回のプログラムではこれに落ち着きました。pygame モジュールはゲーム制作のいろいろに使えるようですが、今回はそのうちの pygame.mixer モジュールという音声に関する機能だけを使います。pygame.init() //初期化 最初だけでOK test = pygame.mixer.Sound("test.wav") test.play()
参考:pygameで音を鳴らす - とあるアプリデベロッパの備忘録ノート
- よいところ:簡潔なコードで複数トラック再生ができる。
- わるいところ:いまのところなし!
多分普通に考えたら pyaudio が一番いいのですが、なめてるのでお手軽に使える pygame を使います。これで音も出せるようになりました。
今回のソフトを作るうえで知っておきたいツールの使い方はこれでだいたい書いた感じです。あとはこまごまとした部分を調整するだけの地味~な作業でした。今こんな感じになってます。
・ボタンとファビコンのインタフェースを改善しました— 高砂 (@takasa_five) 2017年4月8日
・楽器の削除機能を追加しました
・ループ軌道の自由な描画が可能になりました
・軌道の速度を選べるようになりました pic.twitter.com/Ghe6IwoKhs
リズムのズレが気になりますので今これをなんとかしようとしていますが、なんともならないかもしれません。頑張ります。作ってみたけどなんかいまいちリズムが一定じゃない pic.twitter.com/9PXtzcNGwD— 高砂 (@takasa_five) 2017年4月8日
0 件のコメント:
コメントを投稿