トップへ戻る Cdrom || Color || Cursors || Display || Draw || Event || Examples || Font || Gfxdraw || Image || Joystick || Key || Locals || Mask || Mixer || Mouse || Movie || Music || Overlay || Pixelarray || Pygame || Rect || Scrap || Sndarray || Sprite || Surface || Surfarray || Tests || Time || Transform
pygame.mixer
    音声を読み込んで再生するためのpygameモジュールです。

    このmoduleには、音声オブジェクトを読み込んだり再生操作を行うためにクラスが含まれています。このmixerモジュールは単体で機能するものではなく、SDL_mixerに依存しています。プログラムでpygame.mixerモジュールを使用する場合は、あらかじめ使用可能かや初期化できているかを確認したほうがよいでしょう。

    このmixerモジュールでは、音声を再生するためのチャンネル数に制限があります。通常プログラムがpygameを通じて音声の再生を開始すると、使用可能なチャンネルが自動的に選択されます。既定では同時に使用できるチャンネル数は8つまでですが、複雑な制御プログラムを組めばチャンネルの数およびその操作をより精密を行うことができます。

    All sound playback is mixed in background threads. When you begin to play a Sound object, it will return immediately while the sound continues to play.一つのSuoudオブジェクトで何度でも音声を再生することができます。

    また、mixerモジュールはもう一つ特殊なストリーミング用のチャンネルを持っています。これは音楽を再生するため使うためのもので、 pygame.mixer.musicモジュールを通じて操作できます。

    このmixerモジュールは他のpygameモジュールと同様あらかじめ初期化しておかなければなりませんが、他に追加で必要な操作がいくつかあります。pygame.mixer.init命令では再生レートや、オーディオサンプルサイズを制御するためにいくつかの引数を追加で設定できます。Pygameが適切な値を既定で設定してくれますが、pygameは音声の聞き比べまではできないので、あなたのオーディオ環境に合わせた適切な値で初期化をしたほうがよいでしょう。

    メモ:音ズレをなくすためには、バッファサイズを小さく設定してください。既定では、一部の環境での雑音が少なくなるようバッファサイズが設定されています。pygame.mixer.init命令やpygame.init命令を実行する前に、pygame.mixer.pre_init命令を実行することで既定のバッファサイズを変更することができます。 例: pygame.mixer.pre_init(44100,-16,2, 1024)。pygameのバージョン1.8より、バッファの既定サイズは1024から3072へ変更されました。

    ※現在のバッファ既定サイズは4096です。



    pygame.mixer.init
      mixerモジュールを初期化します。
      pygame.mixer.init(frequency=22050, size=-16, channels=2, buffer=4096): return None

      音声の読み込みと再生を行うmixerモジュールを初期化します。オーディオ環境に適した任意の値を引数に設定することで、既定の設定値を変更することができます。キーワード引数も使用することができます。後方互換性を保つため、引数に0が設定された場合は既定値に置き換えられて設定されます(pre_init命令を実行することで既定値の変更は可能です)。

      size引数は、オーディオサンプルサイズにどれだけのビットが使用されるかを表します。負の値が設定された場合は符号付整数が使用されます。正の値が設定された場合は符号無し整数が使用されます。使用できない値が設定された場合は例外が発生します。

      channels引数ではモノラルとステレオのどちらを使用するかを指定します。1が設定され場合はモノラルとなり、2が設定された場合はステレオとなります。他の値は設定することができません。 (1より小さいが設定された場合それは1として扱われ、2より大きい値が設定された場合それは2として扱われます)。

      buffer引数を設定してサウンドミキサーで使用されるサンプルサイズを制御します。大抵の環境で問題なく動作するような値が既定値に設定されています。buffer引数に小さい値を設定することで音の遅延時間音を減らすことができますが、それによって音飛びが発生する場合もあります。逆に大きい値を設定することで音飛びは発生しないようにできますが、再生時に遅延が発生してしまいます。buffer引数に設定する値は「1、2、4、8、16・・・」といった2の累乗でなければいけません。 (それ外の値を設定すると、自動的に最も近い2の累乗に切り上げられます)。

      使用環境によっては、displayモジュールを初期化した後にpygame.mixerモジュールを初期化しなければいけない場合もあります。最上位にあるpygame.init命令でそれらの初期化は自動的に実行されますが、その際は初期化の引数を設定することができません。この問題を解決するため、pygame.init命令内でmixerモジュール初期化が行われる前に、mixerモジュールの初期化用引数をあらかじめ設定できるpygame.mixer.pre_init命令があります。

      この命令は複数回実行されても問題ありませんが、一度初期化が行われるとpygame.mixer.quit命令で解除を行わない限り初期化用引数を再設定することはできません。

      ※原文では「負の値が設定された場合は1として扱う(negative values are treated as 1)」と記載されていますが、0を設定した場合も1として扱われるようなので「1より小さいが設定された場合それは1として扱う」と訳しています。



    pygame.mixer.pre_init
      mixerモジュールを初期化する引数を事前に設定します。
      pygame.mixer.pre_init(frequency=22050, size=-16, channels=2, buffersize=4096): return None

      pre_init命令を使用すると、pygame.mixer.init実行時に設定する引数の既定値を変更することができます。この命令ではキーワード引数を使うことができます。最上位初期化命令のpygame.initを実行する前にはこのpygame.mixer.pre_init命令を実行し、mixerモジュールの再生値を変更するのがよいでしょう。後方互換性を保つため、引数に0が設定された場合は既定値に置き換えられて設定されます。



    pygame.mixer.quit
      mixerモジュールの初期化を解除します。
      pygame.mixer.quit(): return None

      この命令を実行するとpygame.mixerモジュールの初期化が解除されます。全ての再生中の音声は終了されたうえ、再度初期化を実行したとしても作成済みのSoundオブジェクトは使えなくなる可能性があります。



    pygame.mixer.get_init
      mixerモジュールが初期化されているか確認します。
      pygame.mixer.get_init(): return (frequency, format, channels)

      mixerモジュールが初期化されている場合は、設定されている再生値が戻り値として返されます。初期化されていない場合はNone値が戻り値として返されます。



    pygame.mixer.stop
      全てのスピーカーでの音声再生を終了します。
      pygame.mixer.stop(): return None
      この命令を実行すると、スピーカーで現在再生されている全ての音声が終了されます。

    pygame.mixer.pause
      全てのスピーカーでの音声再生を一時停止します。
      pygame.mixer.pause(): return None

      この命令を実行すると、スピーカーで現在再生されている全ての音声が一時停止されます。一時停止した後は、pygame.mixer.unpause命令を実行すると再生を再開することができます。



    pygame.mixer.unpause
      全てのスピーカーでの音声再生を再開させます。
      pygame.mixer.unpause(): return None

      一時停止させた全てのスピーカーでの音声再生を再開させます。



    pygame.mixer.fadeout
      再生中の音声を徐々に小さくしていった上で終了させます。
      pygame.mixer.fadeout(time): return None

      time引数で設定した時間(ミリ秒単位)の間、再生中の全ての音声を徐々に小さくしていきます。音声が聞こえなくなった後に再生が終了されます。



    pygame.mixer.set_num_channels
      音声の再生に使用できるスピーカーの数を設定します。
      pygame.mixer.set_num_channels(count): return None

      mixerモジュールが使用可能なスピーカーの数を設定します。既定では8が設定されています。設定されている値から小さくすることも大きくすることもできます。値が減らされた場合は、減らされたスピーカーで再生されていた音声は終了します。



    pygame.mixer.get_num_channels
      音声の再生に使用できるスピーカーの数を取得します。
      pygame.mixer.get_num_channels(): return count

      現在音声再生に使用可能なスピーカーの数を戻り値として返します。

      ※原文には「pygame.mixer.get_num_channels(): return count」の記載がないため追記しています。



    pygame.mixer.set_reserved
      使用可能なスピーカーの中から、指定数のスピーカーを任意に確保します。
      pygame.mixer.set_reserved(count): return None

      mixerモジュールが使用するための音声再生用スピーカーを確保しておくことができます。あくまで予約なので、ただちに音声再生に割り込むわけではありません。確保したスピーカーが音声再生中だったとしてもその再生が終了されるようなことはありません。

      この命令を使用することで、アプリケーション内で途中で途切れてしまうと困るような重要な音声があった場合はそれ用のスピーカーを予約して音声の再生を保証しておくことができるのです。



    pygame.mixer.find_channel
      未使用のスピーカーを探します。
      pygame.mixer.find_channel(force=False): return Channel

      この命令では使用されていないスピーカーを探し、Channelオブジェクトの戻り値として返します。未使用のスピーカーがない場合はNone値が戻り値として返されます。force引数にTrueが設定されていた状態で未使用のスピーカーがない場合は、最も長い時間生成されてるスピーカーを探して戻り値として返します。

      pygame.mixer.set_reserved命令でスピーカーを確保していた場合は、それら確保済みのスピーカーはここでの取得対象にはなりません。



    pygame.mixer.get_busy
      音声のミキシング処理が行われているか調べます。
      pygame.mixer.get_busy(): return bool

      mixerモジュールがミキシング処理を行っている場合はTrueが戻り値として返ります。行っていない場合はFalseが戻り値として返されます。



    pygame.mixer.Sound
      ファイルなどから、Soundオブジェクトを新規に作成します。
      pygame.mixer.Sound(filename): return Sound
      pygame.mixer.Sound(buffer): return Sound
      pygame.mixer.Sound(object): return Sound

      指定したファイルや読み込み可能なデータオブジェクト、pythonオブジェクトからSoundデータを新規に読み込みます。Limited resampling will be performed to help the sample match the initialize arguments for the mixer.

      作成されたSoundオブジェクトは、実際に再生される音声のサンプリングデータを表します。 Methods that change the state of the Sound object will the all instances of the Sound playback.

      音声データはOGGファイルや非圧縮形式のWAVファイルを読み込むことができます。

      メモ:bufferデータはプログラム内でのみコピーすることができ、Soundオブジェクトとの互換性はありません。

      pygame.mixer.Sound(buffer)はpygameのバージョン1.8から新しく実装されました。



      Sound.play
        音声の再生を開始します。
        Sound.play(loops=0, maxtime=0, fade_ms=0): return Channel

        使用可能なチャンネル(すなわちコンピューターのスピーカーのことです)を通して音声の再生を開始します。チャンネルを通さなければ音声の再生はできないので、この命令では必要に応じて再生を止めることができます。

        loops引数を設定することで、初回の再生後に音声を何回再生するか制御することができます。5を設定した場合は1回目の再生後に5回再生が繰り返されるので、合計6回の再生が行われます。既定では0が設定されており、これは初回再生後に繰り返し再生を行わないということなので、1回のみ音声の再生が行われます。loops引数に-1が設定されていた場合は、音声は無限に再生を繰り返します。(それでもstop()命令を使用することで再生を終了できます)。

        maxtime引数を使用して、音声の再生時間を設定することができます。

        fade_ms引数を設定すると、音量を0の状態で再生を開始して指定した時間の間に徐々に音量を既定値まで上げていくことができます。設定時間の長さによっては、音量が既定値に達する前に再生が終わってしまうこともあります。

        音声再生のために選ばれたチャンネルのChannelオブジェクトが戻り値として返されます。



      Sound.stop
        音声の再生を終了します。
        Sound.stop(): return None

        この命令で音声の再生を終了させます。



      Sound.fadeout
        再生中の音声を徐々に小さくしていった上で終了させます。
        Sound.fadeout(time): return None

        time引数で設定した時間(ミリ秒単位)の間、再生中の音声を徐々に小さくしてしていった上で終了させます。再生中の全てのチャンネルで、音量が小さくなって終了がされます。



      Sound.set_volume
        音声を再生する音量を設定します。
        Sound.set_volume(value): return None

        この命令で音声を再生する音量を設定します。音声が再生中の場合、設定した値は即座に反映されます。設定後に再生する全ての音声にこの音量が適用されます。引数には0.0から1.0の範囲内の値を設定します。



      Sound.get_volume
        音声の再生に使う音量を取得します。
        Sound.get_volume(): return value

        Soundオブジェクトで再生する音量を0.0から1.0の範囲内の値で戻り値として返します。



      Sound.get_num_channels
        音声が同時再生されている数を調べます。
        Sound.get_num_channels(): return count

        この音声が再生されているスピーカーの数を戻り値として返します。



      Sound.get_length
        音声の再生時間を取得します。
        Sound.get_length(): return seconds

        音声の再生時間(秒単位)を戻り値として返します。



      Sound.get_buffer
        音声のサンプリングデータのバッファオブジェクトを取得します。
        Sound.get_buffer(): return BufferProxy

        音声のサンプリングデータのバッファオブジェクトを戻り値として返します。このバッファデータを使用することで、音声データに直接アクセスして変更処理を行うことができます。

        この命令はpygameのバージョン1.8で新たに実装されました。



    pygame.mixer.Channel
      音声再生を制御するChannelオブジェクトを新規に作成します。
      pygame.mixer.Channel(id): return Channel
        Channel.play - 特定のスピーカーで音声を再生します。
        Channel.stop - スピーカーで行われている音声再生を終了します。
        Channel.pause - スピーカーで行われている音声再生を一時停止します。
        Channel.unpause - スピーカーでの音声再生を再開します。
        Channel.fadeout - スピーカーで再生されている音声を徐々に小さくしていった上で終了させます。
        Channel.set_volume - 再生中のスピーカーの音量を設定します。
        Channel.get_volume - 音声再生中のスピーカーの音量を取得します。
        Channel.get_busy - スピーカーが音声再生中か調べます。
        Channel.get_sound - 現在再生中の音声をSoundオブジェクトとして取得します。
        Channel.queue - 現在再生中の音声が終了した後に再生されるように、Soundオブジェクトの再生準備をします。
        Channel.get_queue - 順番待ちに設定されているSoundオブジェクトを戻り値として返します。
        Channel.set_endevent - 音声再生が終了した時に、Channelがイベントを発生させるよう設定します。
        Channel.get_endevent - 音声再生が終了した時にChannelが発生させるイベントを取得します。

      現在の音声出力状態を表すChannelオブジェクトを戻り値として返します。ここで設定するid引数は「0~pygame.mixer.get_num_channelsの戻り値」の範囲内出なければなりません。

      Channelオブジェクトを使用することで音声の再生を細かく制御することができます。一つChannelオブジェクトでは一度に一つの音声しか再生できません。pygameは元から音声出力の制御を行うことができるので、このオブジェクトは使用してもしなくてもどちらでも構いません。



      Channel.play
        特定のスピーカーで音声を再生します。
        Channel.play(Sound, loops=0, maxtime=0, fade_ms=0): return None

        この命令を使用して特定のスピーカーで音声を再生を開始することができます。そのスピーカーで既に他の音声再生が行われていた場合は、その音声は終了されます。

        loops引数はSound.play()で使用されているものと同じ、繰り返し再生の回数を設定します。:最初の再生が行われた後に、何回再生が行われるかを表します。loops引数に3が設定された場合、音声の再生は4回行われます(最初に1回再生が行われ、その後3回の再生が繰り返されます)。loops引数に-1が設定されると音声は無限に再生を繰り返します。

        Sound.playと同じく、maxtime引数を使用することで音声の再生時間をミリ秒単位で設定できます。

        Sound.playと同じく、fade_ms引数を使用することで音声が徐々に小さくなって消えていく時間を設定できます。



      Channel.stop
        スピーカーで行われている音声再生を終了します。
        Channel.stop(): return None

        スピーカーで再生されている音声を終了します。再生が終了されると、スピーカーでは別の音声を再生できるようになります。



      Channel.pause
        スピーカーで行われている音声再生を一時停止します。
        Channel.pause(): return None

        スピーカーで再生されている音声を一時停止します。一時停止した後は、Channel.unpause命令を実行すると再生を再開することができます。



      Channel.unpause
        スピーカーでの音声再生を再開します。
        Channel.unpause(): return None

        一時停止されているスピーカーでの音声再生を再開します。



      Channel.fadeout
        スピーカーで再生されている音声を徐々に小さくしていった上で終了させます。
        Channel.fadeout(time): return None

        time引数で設定した時間(ミリ秒単位)の間スピーカー上で再生中の音声を徐々に小さくしていき、終了させます。



      Channel.set_volume
        再生中のスピーカーの音量を設定します。
        Channel.set_volume(value): return None
        Channel.set_volume(left, right): return None

        この命令で音声を再生する音量を設定します。スピーカーで新たに音声の再生が開始されると、設定した音量はリセットされます。設定した音量は現在再生中の音声にのみに適用されます。value引数には0.0から1.0までの範囲の値を設定します。

        引数が一つのみ設定された場合は、その値は左右両方のスピーカーの音量として設定されます。mixerモジュールがステレオモードの状態で引数が二つ設定された場合、最初の引数は左のスピーカーの音量となり、二番目の引数は右のスピーカーの音量となります。(二番目の引数にNone値が設定された場合、最初の引数が左右両方のスピーカーの音量として設定されます。)

        再生中の音声で複数回set_volume()命令が実行された場合、それぞれの命令はちゃんと適用されます。例えば:

            sound = pygame.mixer.Sound("s.wav")
            channel = sound.play()      # 既定では最大ボリュームで音声が再生されます。
            sound.set_volume(0.9)   # ここからは最大ボリュームの90%で音声が再生されます。
            sound.set_volume(0.6)   # ここからは最大ボリュームの60%で音声が再生されます (先ほど設定した値は書き換えられます)。
            channel.set_volume(0.5) # ここからは最大ボリュームの30%で音声が再生されます (0.6 * 0.5)。
        


      Channel.get_volume
        音声再生中のスピーカーの音量を取得します。
        Channel.get_volume(): return value

        現在音声を再生しているスピーカーの音量を戻り値として返します。Channel.set_volume命令で左右別々の音量が設定されていたとしても問題ありません。Soundオブジェクトもそれぞれのスピーカーの音量を組み合わせて算出した独自の音量を保持しています。



      Channel.get_busy
        スピーカーが音声再生中か調べます。
        Channel.get_busy(): return bool

        スピーカーが音声再生中の場合はTrueが戻り値として返されます。スピーカーが待機状態の場合はFalseが戻り値として返されます。



      Channel.get_sound
        現在再生中の音声をSoundオブジェクトとして取得します。
        Channel.get_sound(): return Sound

        このスピーカーで現在再生している音声をSoundオブジェクト型の戻り値として返します。スピーカーが待機状態の場合はNone値が戻り値として返されます。



      Channel.queue
        現在再生中の音声が終了した後に再生されるように、Soundオブジェクトの再生準備をします。
        Channel.queue(Sound): return None

        音声がスピーカーの再生順番待ちに設定されると、現在再生中の音声が終了すると即座に順番待ち音声の再生が行われます。各Channelには一度に一つの順番待ち音声しか並ぶことができません。順番待ち音声は、現在再生中の音声が正常に終了した場合にのみ再生が行われます。Channel.stop命令やChannel.play命令によってい正常な終了が妨げられると順番待ち音声は消去されます。

        Channelで再生が行われていない場合は、即座に音声の再生が開始されます。



      Channel.get_queue
        順番待ちに設定されているSoundオブジェクトを戻り値として返します。
        Channel.get_queue(): return Sound

        Channelに再生順番待ち音声が並んでいた場合、それを戻り値として返します。既に再生中の音声を順番待ちに設定することはできません。



      Channel.set_endevent
        音声再生が終了した時に、Channelがイベントを発生させるよう設定します。
        Channel.set_endevent(): return None
        Channel.set_endevent(type): return None

        channelに終了イベントが設定されると、channelでの音声再生が終了する度にそのイベントをpygameへ送信します(初回再生時だけイベントが発生するわけではありません)。pygame.event.get命令を使用すると設定された終了イベントを取得することができます。

        Sound.play(n)命令やChannel.play(sound,n)命令で複数回再生を実行れた場合でも、終了イベントは一度しか発生しないので注意してください。:音声が"n+1"回された後にイベントが発生します(詳しくはSound.playの項目を参照してください)。

        音声再生中にChannel.stop命令やChannel.play命令が実行されると、即座に終了イベントが発生します。

        type引数にはpygameへ送信するイベントのIDを設定します。使用可能なイベントタイプであれば何でも設定できますが、pygame.locals.USEREVENT定数(24)とpygame.locals.NUMEVENTS定数(32)の間、25以上31以下の値を設定するのがよいでしょう。type引数を設定しないで命令を実行した場合、終了イベントの送信は解除されます。



      Channel.get_endevent
        音声再生が終了した時にChannelが発生させるイベントを取得します。
        Channel.get_endevent(): return type

        Channelでの音声再生が終了する度に発生するイベントタイプを戻り値として取得します。終了イベントが設定されてない場合は、pygame.NOEVENT定数(0)が戻り値として取得されます。



トップへ戻る Cdrom || Color || Cursors || Display || Draw || Event || Examples || Font || Gfxdraw || Image || Joystick || Key || Locals || Mask || Mixer || Mouse || Movie || Music || Overlay || Pixelarray || Pygame || Rect || Scrap || Sndarray || Sprite || Surface || Surfarray || Tests || Time || Transform