2010-12-01 13 views
3

私はUbuntu 10.4を使い、チュートリアル「チンパンジーを倒して$$$に勝つ」の後でPyGameを学習しています。PyGameで音が短くなった

私は2つの '.wav'ファイルを作成しましたが、それらを再生しようとすると、ちょっとしたもののような奇妙なノイズが発生します。

エラーメッセージは表示されません。なぜこれは期待どおりに機能しませんか?

>>> import pygame 
>>> pygame.init() 
(6, 0) 
>>> def load_sound(name): 
    class NoneSound(object): 
     def play(self): pass 
    if not pygame.mixer: 
     return NoneSound() 
    fullname = os.path.join('data', name) 
    try: 
     sound = pygame.mixer.Sound(fullname) 
    except pygame.error, message: 
     print 'Cannot load sound:', name 
     raise SystemExit, message 
    return sound 

>>> whiff_sound = load_sound('whiff.wav') 
>>> whiff_sound.play() 
<Channel object at 0xb772f1c0> 
>>> 

Here is the wav i'm using.(リンク切れ)

+0

スタンドアロンのオーディオプレーヤーで.wavファイルを再生しましたか? – nmichaels

+0

コードを組み込むと、助けを受ける可能性が高くなります。 – Velociraptors

+0

@nathonはい、それはうまく動作します – Ant

答えて

2

WavePadサウンドエディタというプログラムでサウンドを開き、ファイルを.wavとして再保存し、サンプルレートを22050 Hzに設定すると、これで問題は解決しました。

+0

それは窓のためだけです、残念なことに..別のものを試して更新します;) – Ant

+0

ありがとう、それはうまくいった! – Ant

3

私が最初に考えたのは、これはサンプリング周波数での問題のように聞こえるということでした。ミキサーが開始されるたびに、そのデフォルト値は次のとおり

pygame.mixer.init(周波数= 22050、 サイズ= -16、チャネル= 2、バッファ= 4096): リターンなし

サンプリング周波数である周波数= 22050がサウンドのサンプリング周波数と異なる場合は、問題が発生する可能性があります(サウンドの再生を本質的に高速化または遅くする)。

しかし、pygame.mixer.Soundのドキュメントは読み取ります

限定リサンプリングは、サンプルが は、ミキサーの引数を初期化一致を助けるために を実行されます。この種の問題は、自分自身を解決する必要があります示唆

...

しかし、私は、これはにミキサーオブジェクトの(サンプリング)周波数を変更することのいずれかによって固定することができ、サンプリング周波数の問題である賭けますサウンドファイルのサンプリング周波数、またはサウンドファイルを自分でリサンプリングして、ミキサーの値と一致させることができます。

希望すると便利です。

+0

私はwave.getframerateを使用してファイルのサンプリング周波数を決定し、22050を返します。 – Ant

+0

@Ant、申し訳ありません!私は本当にこれがそうであると思っていました...私はオーディオで多くのことを言うことができますが、パイゲームの経験は限られています。私は脳波を持っていれば私はあなたに戻ってくるでしょう:P – William

+0

大丈夫、ありがとう...私はパイゲームを再インストールする必要があると思いますか?私がubuntuにいるのは何か変わるかもしれないという事実?ありがとう – Ant

2

私は周波数を調整することに幸運がありませんでしたが、mixer.init()を呼び出すとsize = 8とbuffer = 2048が設定されました。

関連する問題