【Pygame】mixer.unpauseでサウンドを再開!エラーと代替手法も解説

2025-05-31

Pygameには、サウンドを扱うための pygame.mixer モジュールがあります。このモジュールには、大きく分けて以下の2種類のサウンド再生機能があります。

  1. pygame.mixer.Sound オブジェクトによる効果音の再生
    短い効果音などを再生するのに使われます。複数の Sound オブジェクトを同時に再生できます。
  2. pygame.mixer.music オブジェクトによる音楽のストリーミング再生
    背景音楽(BGM)など、長い音楽ファイルを再生するのに使われます。通常、一度に1つの音楽ストリームしか再生できません。

mixer.unpause() は、この2つのうち、特にpygame.mixer.pause() によって一時停止されたすべてのサウンドチャンネル(Sound オブジェクトの再生)を再開するために使用されます。

一方、pygame.mixer.music に対しては、同様の機能を持つ pygame.mixer.music.unpause() という別の関数があります。

pygame.mixer.unpause() の詳細

  • 戻り値
    なし
  • 引数
    なし
  • 機能
    pygame.mixer.pause() によって一時停止された、すべてのミキサーチャンネル(Sound オブジェクトが再生されているチャンネル)の再生を再開します。

使用例(Sound オブジェクトの場合)

import pygame

pygame.init()
pygame.mixer.init() # ミキサーを初期化

# 効果音をロード
sound = pygame.mixer.Sound("your_sound_file.wav") 

# サウンドを再生
sound.play()

# しばらく待つ(再生を確認するため)
pygame.time.wait(1000)

# サウンドを一時停止
pygame.mixer.pause()
print("サウンドが一時停止しました。")

# しばらく待つ
pygame.time.wait(2000)

# サウンドの再生を再開
pygame.mixer.unpause()
print("サウンドの再生が再開されました。")

# しばらく待つ
pygame.time.wait(2000)

pygame.quit()

pygame.mixer.music.unpause() は、pygame.mixer.music.pause() で一時停止されたBGM(音楽ストリーム)の再生を再開するために使われます。

import pygame

pygame.init()
pygame.mixer.init()

# 音楽ファイルをロード
pygame.mixer.music.load("your_music_file.mp3")

# 音楽を再生
pygame.mixer.music.play(-1) # -1 でループ再生

# しばらく待つ
pygame.time.wait(3000)

# 音楽を一時停止
pygame.mixer.music.pause()
print("音楽が一時停止しました。")

# しばらく待つ
pygame.time.wait(3000)

# 音楽の再生を再開
pygame.mixer.music.unpause()
print("音楽の再生が再開されました。")

# しばらく待つ
pygame.time.wait(3000)

pygame.quit()


mixer.unpause()(効果音用)に関する一般的なエラーとトラブルシューティング

    • エラー
      特段エラーメッセージは出ませんが、何も起こりません。
    • 原因
      mixer.pause() を呼び出す前に、pygame.mixer.Sound オブジェクトが実際に再生されていなかった、または既に停止していた場合に発生します。unpause() は、一時停止中のサウンドを再開するためのものであり、停止中のサウンドを最初から再生するものではありません。
    • トラブルシューティング
      • unpause() を呼び出す前に、対象の Sound オブジェクトが play() で再生され、その後 mixer.pause() で一時停止されたことを確認してください。
      • サウンドが完全に停止している場合は、再度 sound.play() を呼び出して再生を開始する必要があります。
  1. pygame.mixer を初期化していない

    • エラー
      pygame.error: mixer not initialized のようなエラーが発生します。
    • 原因
      pygame.mixer モジュールを使用する前に、pygame.mixer.init() を呼び出して初期化する必要があります。pygame.init() は全てのPygameモジュールを初期化しますが、サウンドを詳細に扱う場合は mixer.init() を明示的に呼び出すことが推奨されます。
    • トラブルシューティング
      • コードの先頭付近で pygame.mixer.init() を呼び出していることを確認してください。
  2. サウンドファイルが見つからない、またはフォーマットがサポートされていない

    • エラー
      pygame.error: Couldn't open 'your_sound_file.wav' のようなエラーが発生します。
    • 原因
      pygame.mixer.Sound() でロードしようとしているサウンドファイルが存在しないか、パスが間違っているか、Pygameがサポートしていないフォーマットである可能性があります。
    • トラブルシューティング
      • サウンドファイルのパスが正しいか、ファイル名にスペルミスがないか確認してください。
      • Pygameがサポートするフォーマット(WAV, OGG, MP3など)であることを確認してください。特にMP3は環境によっては別途デコーダーが必要な場合があります。
  3. unpause() を呼び出してもサウンドが再開されない

    • 原因
      これは比較的稀ですが、Pygameのミキサーが正しく動作していない、またはシステムのリソースが不足している場合に発生することがあります。
    • トラブルシューティング
      • Pygameのバージョンを最新に更新してみてください。
      • 他のサウンド再生アプリケーションが動作していないか確認してください。
      • シンプルなコードで pause()unpause() の動作をテストし、問題が特定のサウンドファイルや複雑なコードに起因しないか確認してください。

mixer.music.unpause()(BGM用)に関する一般的なエラーとトラブルシューティング

mixer.unpause()(効果音用)の問題と共通する部分も多いですが、BGM特有の問題もあります。

  1. mixer.unpause() と間違えて呼び出している

    • エラー
      エラーは出ませんが、BGMが再開されません。
    • 原因
      pygame.mixer.music は、pygame.mixer とは独立したBGM再生システムです。mixer.music.pause() で一時停止したBGMは、mixer.unpause() ではなく mixer.music.unpause() で再開する必要があります。
    • トラブルシューティング
      • BGMを再開したい場合は、必ず pygame.mixer.music.unpause() を使用してください。
  2. BGMがロードされていない、または再生されていない

    • エラー
      エラーは出ませんが、BGMが再開されません。
    • 原因
      unpause() は、music.load() で音楽ファイルをロードし、music.play() で再生が開始され、その後 music.pause() で一時停止された場合にのみ機能します。
    • トラブルシューティング
      • pygame.mixer.music.load("your_music_file.mp3") で音楽がロードされているか確認してください。
      • pygame.mixer.music.play() で再生が開始されているか確認してください。
  3. 音楽ファイルのフォーマット問題

    • エラー
      pygame.error: Unable to open audio filepygame.error: mp3 not supported など。
    • 原因
      Pygameの音楽再生は、OSにインストールされているコーデックに依存することがあります。特にMP3は環境によって再生できない場合があります。
    • トラブルシューティング
      • OGGフォーマットのファイルを使用してみてください。OGGはPygameでより安定して動作する傾向があります。
      • 最新のPygameバージョンを使用しているか確認し、必要であれば更新してください。
      • MP3ファイルを扱う場合、OSに適切なMP3コーデックがインストールされているか確認してください。
  4. pygame.mixer.quit()pygame.quit() を呼び出してしまった後に再開しようとしている

    • エラー
      pygame.error: mixer uninitialized や、何も起こらない場合があります。
    • 原因
      pygame.mixer.quit() を呼び出すと、ミキサーシステムが完全にシャットダウンされます。pygame.quit() はすべてのPygameモジュールをシャットダウンします。一度シャットダウンされたミキサーは、再度 pygame.mixer.init() を呼び出さない限り機能しません。
    • トラブルシューティング
      • unpause() を呼び出す前にミキサーがシャットダウンされていないことを確認してください。通常、ゲーム終了時など、プログラムのライフサイクルの終わりにこれらの quit() 関数を呼び出します。
  • Pygameのドキュメントを参照
    Pygameの公式ドキュメントは非常に詳細で、問題解決のヒントが隠されていることがあります。
  • シンプルなテストコード
    複雑なゲームコードの中で問題が発生している場合は、mixer.init(), Sound.play(), mixer.pause(), mixer.unpause() だけを実行する非常にシンプルなスクリプトを作成し、単体で動作するかどうかを確認してください。これにより、問題がPygameのサウンド機能自体にあるのか、それともあなたのゲームコードの他の部分にあるのかを判断できます。
  • デバッグメッセージの活用
    print() 関数を使って、サウンドの状態(再生中か、一時停止中かなど)を追跡するメッセージを出力すると、問題の切り分けに役立ちます。


例1: 効果音 (pygame.mixer.Sound) の一時停止と再開

この例では、短い効果音を再生し、一時停止してから再開する様子を示します。

import pygame
import time

# Pygameの初期化
pygame.init()

# ミキサーの初期化(サウンドを扱うために必須)
# オプション:周波数、バッファサイズなどを設定できます
pygame.mixer.init(frequency=44100, size=-16, channels=2, buffer=512)

# 画面設定(デモンストレーションのため、サウンドに直接関係なし)
screen = pygame.display.set_mode((400, 200))
pygame.display.set_caption("Sound Pause/Unpause Example")

# サウンドファイルの読み込み
# 事前に "beep.wav" のような短いWAVファイルを用意してください
try:
    sound_effect = pygame.mixer.Sound("beep.wav")
except pygame.error as e:
    print(f"サウンドファイルの読み込みに失敗しました: {e}")
    print("'beep.wav' ファイルが同じディレクトリにあるか確認してください。")
    pygame.quit()
    exit()

print("サウンドを再生します...")
sound_effect.play() # 効果音を再生

time.sleep(1) # 1秒待機(再生を確認するため)

print("ミキサーを一時停止します (すべてのSoundオブジェクトに影響)...")
pygame.mixer.pause() # すべてのSoundオブジェクトの再生を一時停止

time.sleep(2) # 2秒待機(一時停止を確認するため)

print("ミキサーの再生を再開します (すべてのSoundオブジェクトに影響)...")
pygame.mixer.unpause() # すべてのSoundオブジェクトの再生を再開

time.sleep(2) # 2秒待機(再開後の再生を確認するため)

print("デモ終了。")

# Pygameの終了処理
pygame.mixer.quit() # ミキサーを終了
pygame.quit()

解説

  • pygame.mixer.unpause(): pygame.mixer.pause()で一時停止されたすべてのSoundオブジェクトの再生を再開します。
  • pygame.mixer.pause(): 現在再生されているすべてのSoundオブジェクト(効果音)の再生を一時停止します。 これがポイントです。個々のSoundオブジェクトではなく、ミキサー全体を一時停止します。
  • sound_effect.play(): サウンドを再生します。
  • pygame.mixer.Sound("beep.wav"): beep.wavというサウンドファイルをSoundオブジェクトとして読み込みます。
  • pygame.mixer.init(): サウンド機能を初期化します。

例2: 音楽 (pygame.mixer.music) の一時停止と再開

この例では、背景音楽(BGM)を再生し、一時停止してから再開する様子を示します。pygame.mixer.musicpygame.mixer.Soundとは異なるAPIを使用します。

import pygame
import time

# Pygameの初期化
pygame.init()

# ミキサーの初期化(音楽を扱うために必須)
pygame.mixer.init()

# 画面設定(デモンストレーションのため)
screen = pygame.display.set_mode((400, 200))
pygame.display.set_caption("Music Pause/Unpause Example")

# 音楽ファイルの読み込み
# 事前に "background_music.mp3" や "background_music.ogg" のようなファイルを用意してください
try:
    pygame.mixer.music.load("background_music.mp3")
except pygame.error as e:
    print(f"音楽ファイルの読み込みに失敗しました: {e}")
    print("音楽ファイルが同じディレクトリにあるか、またはMP3デコーダーがサポートされているか確認してください。")
    pygame.quit()
    exit()

print("音楽を再生します (ループ再生)...")
pygame.mixer.music.play(-1) # -1 で無限ループ再生

time.sleep(3) # 3秒待機(再生を確認するため)

print("音楽を一時停止します...")
pygame.mixer.music.pause() # 音楽の再生を一時停止

time.sleep(3) # 3秒待機(一時停止を確認するため)

print("音楽の再生を再開します...")
pygame.mixer.music.unpause() # 音楽の再生を再開

time.sleep(3) # 3秒待機(再開後の再生を確認するため)

# 音楽の停止
print("音楽を停止します。")
pygame.mixer.music.stop()

print("デモ終了。")

# Pygameの終了処理
pygame.mixer.quit()
pygame.quit()

解説

  • pygame.mixer.music.unpause(): pygame.mixer.music.pause()で一時停止された音楽の再生を再開します。
  • pygame.mixer.music.pause(): ロードされた音楽の再生を一時停止します。
  • pygame.mixer.music.play(-1): ロードされた音楽を無限ループで再生します。
  • pygame.mixer.music.load("background_music.mp3"): 音楽ファイルをロードします。

この例では、ゲームループ内でキー入力に応じて効果音を一時停止・再開する方法を示します。

import pygame
import time

pygame.init()
pygame.mixer.init()

screen = pygame.display.set_mode((600, 400))
pygame.display.set_caption("Pause/Unpause with Key Input")

try:
    # 効果音をロード
    sound_effect = pygame.mixer.Sound("ding.wav")
    # BGMをロード
    pygame.mixer.music.load("game_bgm.mp3")
except pygame.error as e:
    print(f"ファイルの読み込みに失敗しました: {e}")
    print("必要なサウンドファイル(ding.wav, game_bgm.mp3)が同じディレクトリにあるか確認してください。")
    pygame.quit()
    exit()

# BGMを再生(ループ再生)
pygame.mixer.music.play(-1)
print("BGMを再生中...")

running = True
sound_playing = False # 効果音が現在再生中かどうかのフラグ
music_paused = False # BGMが現在一時停止中かどうかのフラグ

font = pygame.font.Font(None, 36)

while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_s: # 's' キーで効果音の再生/停止を切り替え
                if not sound_playing:
                    print("効果音を再生")
                    sound_effect.play()
                    sound_playing = True
                else:
                    print("効果音を停止")
                    # 効果音の再生を停止するには、Soundオブジェクトのstop()メソッドを使います
                    sound_effect.stop()
                    sound_playing = False
            elif event.key == pygame.K_p: # 'p' キーでミキサー(効果音)の一時停止/再開
                if not music_paused: # BGMの一時停止状態とは関係なくミキサーの状態を確認
                    print("ミキサー(効果音)を一時停止")
                    pygame.mixer.pause() # すべての効果音を一時停止
                else:
                    print("ミキサー(効果音)を再開")
                    pygame.mixer.unpause() # すべての効果音を再開
            elif event.key == pygame.K_m: # 'm' キーでBGMの一時停止/再開
                if not music_paused:
                    print("BGMを一時停止")
                    pygame.mixer.music.pause()
                    music_paused = True
                else:
                    print("BGMを再開")
                    pygame.mixer.music.unpause()
                    music_paused = False

    screen.fill((50, 50, 50)) # 背景を塗りつぶし

    # ステータス表示
    text_surface = font.render(
        "Press 'S' to Play/Stop Sound Effect", True, (255, 255, 255)
    )
    screen.blit(text_surface, (50, 50))
    text_surface = font.render(
        "Press 'P' to Pause/Unpause All Sound Effects", True, (255, 255, 255)
    )
    screen.blit(text_surface, (50, 100))
    text_surface = font.render(
        "Press 'M' to Pause/Unpause BGM", True, (255, 255, 255)
    )
    screen.blit(text_surface, (50, 150))

    pygame.display.flip()

pygame.mixer.music.stop()
pygame.mixer.quit()
pygame.quit()
  • sound_playingmusic_pausedのフラグ変数を使って、現在のサウンドの状態を管理し、適切な関数を呼び出すようにしています。
  • K_m: pygame.mixer.music.pause()pygame.mixer.music.unpause()を使って、BGMの再生を一時停止/再開します。 効果音の状態とは独立しています。
  • K_s: 効果音の再生/停止を切り替えます。Soundオブジェクトのstop()メソッドを使って個別に停止しています。


サウンドの完全に停止と再再生 (.stop() / .play())

一時停止ではなく、完全にサウンドを停止し、必要に応じて最初から再生し直す方法です。

  • pygame.mixer.music オブジェクト(BGM)の場合
    • pygame.mixer.music.stop(): 現在の音楽再生を停止します。
    • pygame.mixer.music.play(): 音楽を最初から再生し直します。
  • pygame.mixer.Sound オブジェクトの場合
    • sound_effect.stop(): そのSoundオブジェクトの再生を停止します。
    • sound_effect.play(): 最初から再生し直します。

unpause()との違いと使い分け

  • イベントの終了や、新しいシーンへの切り替えなどでサウンドを完全にリセットしたい場合はstop()play()が適しています。
  • ゲームのポーズ画面など、中断した状態から再開したい場合はunpause()が適しています。
  • stop()play() の組み合わせは、常にサウンドを最初から再生し直します。
  • unpause() は一時停止した時点から再生を再開します。


import pygame
import time

pygame.init()
pygame.mixer.init()
screen = pygame.display.set_mode((400, 200))
pygame.display.set_caption("Stop/Play Example")

try:
    sound_effect = pygame.mixer.Sound("ding.wav")
    pygame.mixer.music.load("game_bgm.mp3")
except pygame.error as e:
    print(f"ファイルの読み込みに失敗しました: {e}")
    pygame.quit()
    exit()

# BGM再生
pygame.mixer.music.play(-1)
print("BGM再生中...")
time.sleep(2)

print("BGMを停止して最初から再生し直します...")
pygame.mixer.music.stop() # 完全に停止
time.sleep(1)
pygame.mixer.music.play(-1) # 最初から再生
print("BGM再開(最初から)...")
time.sleep(2)

# 効果音も同様
sound_effect.play()
print("効果音再生中...")
time.sleep(1)
sound_effect.stop() # 完全に停止
print("効果音停止...")
time.sleep(1)
sound_effect.play() # 最初から再生
print("効果音再開(最初から)...")
time.sleep(1)

pygame.mixer.quit()
pygame.quit()

ボリュームの制御 (.set_volume())

サウンドの音量を0に設定することで、擬似的に一時停止のような効果を得ることができます。

  • 全てのチャンネルの音量を制御する場合
    • pygame.mixer.set_volume(0.0): 全てのチャンネルの音量をゼロにします。
    • pygame.mixer.set_volume(元の音量): 全てのチャンネルの音量を元に戻します。
  • pygame.mixer.music オブジェクト(BGM)の場合
    • pygame.mixer.music.set_volume(0.0): 音量をゼロにします。
    • pygame.mixer.music.set_volume(元の音量): 音量を元に戻します。
  • pygame.mixer.Sound オブジェクトの場合
    • sound_effect.set_volume(0.0): 音量をゼロにして聞こえなくします。
    • sound_effect.set_volume(元の音量): 音量を元に戻して聞こえるようにします。

unpause()との違いと使い分け

  • サウンドの再生状態を維持しつつ、一時的にミュートしたい場合に便利です。
  • クロスフェード(音量を徐々に下げて別のサウンドに切り替える)などのエフェクトをかけたい場合に非常に有効です。
  • 音量制御は、サウンドは内部的に再生され続けていますが、聞こえなくするだけです。わずかにCPUリソースを消費し続ける可能性があります。
  • unpause() は再生を物理的に一時停止します。CPUリソースの消費も一時的に抑えられます。

例 (BGMのボリューム制御)

import pygame
import time

pygame.init()
pygame.mixer.init()
screen = pygame.display.set_mode((400, 200))
pygame.display.set_caption("Volume Control Example")

try:
    pygame.mixer.music.load("game_bgm.mp3")
except pygame.error as e:
    print(f"ファイルの読み込みに失敗しました: {e}")
    pygame.quit()
    exit()

original_volume = pygame.mixer.music.get_volume() # 元の音量を保存
pygame.mixer.music.play(-1)
print(f"BGM再生中 (音量: {original_volume:.2f})...")
time.sleep(2)

print("BGMの音量を0に設定 (擬似的な一時停止)...")
pygame.mixer.music.set_volume(0.0)
time.sleep(2)

print("BGMの音量を元に戻します...")
pygame.mixer.music.set_volume(original_volume)
time.sleep(2)

pygame.mixer.music.stop()
pygame.mixer.quit()
pygame.quit()

フェードアウトとフェードイン (.fadeout() / .play(fade_ms=...))

サウンドを徐々に静かにして停止したり、徐々に音量を上げて再生を開始したりする方法です。特にBGMの切り替えや、ポーズ画面からの復帰でスムーズな演出をしたい場合に有効です。

  • pygame.mixer.music オブジェクト(BGM)の場合
    • pygame.mixer.music.fadeout(time_ms): 指定したミリ秒(time_ms)で音量をフェードアウトさせ、その後停止します。
    • pygame.mixer.music.play(loops, start, fade_ms): fade_ms引数を指定すると、指定したミリ秒で音量をフェードインさせながら再生を開始します。

unpause()との違いと使い分け

  • ゲームの一時停止時にBGMをフェードアウトさせて静かにし、再開時にフェードインさせることで、より洗練されたユーザー体験を提供できます。
  • fadeout()play(fade_ms=...) は、滑らかな音量変化を伴います。
  • unpause() は即座に再生を再開します。

例 (BGMのフェードアウトとフェードイン)

import pygame
import time

pygame.init()
pygame.mixer.init()
screen = pygame.display.set_mode((400, 200))
pygame.display.set_caption("Fadeout/Fadein Example")

try:
    pygame.mixer.music.load("game_bgm.mp3")
except pygame.error as e:
    print(f"ファイルの読み込みに失敗しました: {e}")
    pygame.quit()
    exit()

pygame.mixer.music.play(-1)
print("BGM再生中...")
time.sleep(2)

print("BGMを1秒かけてフェードアウトします...")
pygame.mixer.music.fadeout(1000) # 1000ミリ秒 = 1秒
time.sleep(1.5) # フェードアウトが完了するのを待つ

print("BGMを最初から、2秒かけてフェードインさせながら再生します...")
# play()は既に停止している音楽を最初から再生します
pygame.mixer.music.play(-1, 0.0, 2000) # loops=-1, start=0.0, fade_ms=2000
time.sleep(3) # フェードインと再生を確認するため

pygame.mixer.music.stop()
pygame.mixer.quit()
pygame.quit()

pygame.mixer.Soundオブジェクトを特定のチャンネルで再生することで、そのチャンネルだけを個別に一時停止したり、音量を制御したりできます。pygame.mixer.pause()が全てのチャンネルに影響するのに対し、これはよりきめ細やかな制御を可能にします。

  • channel.set_volume(volume): そのチャンネルの音量を設定します。
  • channel.stop(): そのチャンネルのサウンドを停止します。
  • channel.unpause(): そのチャンネルのサウンドを再開します。
  • channel.pause(): そのチャンネルのサウンドを一時停止します。
  • channel.play(sound_effect): そのチャンネルでSoundオブジェクトを再生します。
  • pygame.mixer.Channel(id): 指定したIDのチャンネルオブジェクトを作成します。
  • pygame.mixer.set_num_channels(count): 利用可能なチャンネル数を設定します。

unpause()との違いと使い分け

  • 複数の効果音を同時に再生し、それぞれ独立して一時停止したり、音量を調整したりしたい場合に非常に強力です。例えば、ゲーム中にプレイヤーの行動音と敵の行動音を別々に制御したい場合などです。
  • Channel.pause() / unpause() は特定のチャンネルにのみ影響します。
  • pygame.mixer.pause() / unpause() はミキサー全体(全てのSoundチャンネル)に影響します。

例 (チャンネル制御)

import pygame
import time

pygame.init()
pygame.mixer.init(channels=4) # 4つのチャンネルを確保

screen = pygame.display.set_mode((400, 200))
pygame.display.set_caption("Channel Control Example")

try:
    sound_1 = pygame.mixer.Sound("ding.wav")
    sound_2 = pygame.mixer.Sound("beep.wav")
except pygame.error as e:
    print(f"ファイルの読み込みに失敗しました: {e}")
    pygame.quit()
    exit()

# チャンネルを取得(または自分で指定)
channel_0 = pygame.mixer.Channel(0)
channel_1 = pygame.mixer.Channel(1)

print("チャンネル0でding.wavを再生...")
channel_0.play(sound_1, loops=-1) # ループ再生
time.sleep(1)

print("チャンネル1でbeep.wavを再生...")
channel_1.play(sound_2)
time.sleep(1)

print("チャンネル0を一時停止します...")
channel_0.pause() # チャンネル0だけが一時停止
time.sleep(2)

print("チャンネル0を再開します...")
channel_0.unpause() # チャンネル0だけが再開
time.sleep(2)

print("チャンネル1の音量を下げます...")
channel_1.set_volume(0.2) # チャンネル1の音量を20%に
time.sleep(2)

print("両方のチャンネルを停止します。")
channel_0.stop()
channel_1.stop()

pygame.mixer.quit()
pygame.quit()

mixer.unpause() は特定のニーズに合致する場合に非常に便利ですが、Pygameのサウンド制御は他にも多様な方法があります。

  • 個々のサウンドをより細かく制御したい
    pygame.mixer.Channel を使用
  • 一時的にミュートしたい、またはフェードさせたい
    .set_volume(0.0).fadeout() / .play(fade_ms=...)
  • 常に最初から再生し直したい
    .stop().play() の組み合わせ
  • 単に中断した場所から再開したい
    mixer.unpause() (mixer.music.unpause())