2016-07-19 72 views
-1
song = "choy_san_dou.ogg" 
pygame.init() 
pygame.display.set_mode((200,100)) 
pygame.mixer.init() 
pygame.mixer.music.load(song) 
pygame.mixer.music.set_volume(0.1) 
pygame.mixer.music.play(0) 

ソングがロードされているときにボリュームをフェードインさせる方法が見つからないということは、ソングのボリュームを、最初からフルボリュームからブーストするのではなく、最大ボリュームまでゆっくりと増加させることを意味します。どうやってするの?pythonのpygameどのようにボリュームをフェードインするには?

もう一つの問題はこれです、私は

pygame.display.set_mode((200,100)) 

を宣言する必要がありますか、音が再生されません。サウンドの時間が経過した後、プログラムの後続のステップが継続するため、実際にプログラムが実行されています。それはなぜこの方法ですか?私は後でラズベリーパイに転送する意図で、Windows PC上でそれをテストしています。

+0

こんにちは@LPK、これは私が欲しいものではありません、正反対です。フェードイン。 – sam

+0

@サム:プレイ機能のオプションが使えそうですね。あなたはこれを探していますか:http://gamedev.stackexchange.com/questions/62023/crossfade-between-two-music-tracks-in-pygame? –

+0

@ HoAngLong、これは私が探しているものだと思いますが、私は非常にプログラミングで新しいので、そこに与えられた例をあまり理解していません。説明し、コードでどのように表示するか心配ですか?なぜクラスで定義する必要があるのですか? – sam

答えて

0

pygame.mixerモジュールには、ファイル名を入力として受け取り、ファイルの内容をSoundオブジェクトに変換するSoundクラス(doc:http://www.pygame.org/docs/ref/mixer.html)があります。サウンドオブジェクトには、サウンドがフェードインする時間を指定できるplay()メソッドがあります(サウンドの実際の長さよりもずっと短くしたい場合があります)。 pygame.mixerのしくみの要点を得るためにドキュメントを読むことをお勧めします。フェードインやフェードアウトの追加など、Soundオブジェクトを変更したい場合は、Soundオブジェクトをnumpy配列に変換できるpygame.sndarrayモジュールがあります。その逆も同様ですが、numpyまたはscipyを使用する必要があります(無料のAnacondaパッケージをお勧めします)。
音楽とミキサーモジュールの違いは、音楽モジュールが再生するデータをSTREAMSし、ミキサーモジュールがメインメモリに保存されたデータを処理することです。

関連する問題