【Pygame】mixer.unpauseでサウンドを再開!エラーと代替手法も解説
Pygameには、サウンドを扱うための pygame.mixer
モジュールがあります。このモジュールには、大きく分けて以下の2種類のサウンド再生機能があります。
- pygame.mixer.Sound オブジェクトによる効果音の再生
短い効果音などを再生するのに使われます。複数のSound
オブジェクトを同時に再生できます。 - 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()
を呼び出して再生を開始する必要があります。
- エラー
-
pygame.mixer
を初期化していない- エラー
pygame.error: mixer not initialized
のようなエラーが発生します。 - 原因
pygame.mixer
モジュールを使用する前に、pygame.mixer.init()
を呼び出して初期化する必要があります。pygame.init()
は全てのPygameモジュールを初期化しますが、サウンドを詳細に扱う場合はmixer.init()
を明示的に呼び出すことが推奨されます。 - トラブルシューティング
- コードの先頭付近で
pygame.mixer.init()
を呼び出していることを確認してください。
- コードの先頭付近で
- エラー
-
サウンドファイルが見つからない、またはフォーマットがサポートされていない
- エラー
pygame.error: Couldn't open 'your_sound_file.wav'
のようなエラーが発生します。 - 原因
pygame.mixer.Sound()
でロードしようとしているサウンドファイルが存在しないか、パスが間違っているか、Pygameがサポートしていないフォーマットである可能性があります。 - トラブルシューティング
- サウンドファイルのパスが正しいか、ファイル名にスペルミスがないか確認してください。
- Pygameがサポートするフォーマット(WAV, OGG, MP3など)であることを確認してください。特にMP3は環境によっては別途デコーダーが必要な場合があります。
- エラー
-
unpause()
を呼び出してもサウンドが再開されない- 原因
これは比較的稀ですが、Pygameのミキサーが正しく動作していない、またはシステムのリソースが不足している場合に発生することがあります。 - トラブルシューティング
- Pygameのバージョンを最新に更新してみてください。
- 他のサウンド再生アプリケーションが動作していないか確認してください。
- シンプルなコードで
pause()
とunpause()
の動作をテストし、問題が特定のサウンドファイルや複雑なコードに起因しないか確認してください。
- 原因
mixer.music.unpause()
(BGM用)に関する一般的なエラーとトラブルシューティング
mixer.unpause()
(効果音用)の問題と共通する部分も多いですが、BGM特有の問題もあります。
-
mixer.unpause()
と間違えて呼び出している- エラー
エラーは出ませんが、BGMが再開されません。 - 原因
pygame.mixer.music
は、pygame.mixer
とは独立したBGM再生システムです。mixer.music.pause()
で一時停止したBGMは、mixer.unpause()
ではなくmixer.music.unpause()
で再開する必要があります。 - トラブルシューティング
- BGMを再開したい場合は、必ず
pygame.mixer.music.unpause()
を使用してください。
- BGMを再開したい場合は、必ず
- エラー
-
BGMがロードされていない、または再生されていない
- エラー
エラーは出ませんが、BGMが再開されません。 - 原因
unpause()
は、music.load()
で音楽ファイルをロードし、music.play()
で再生が開始され、その後music.pause()
で一時停止された場合にのみ機能します。 - トラブルシューティング
pygame.mixer.music.load("your_music_file.mp3")
で音楽がロードされているか確認してください。pygame.mixer.music.play()
で再生が開始されているか確認してください。
- エラー
-
音楽ファイルのフォーマット問題
- エラー
pygame.error: Unable to open audio file
やpygame.error: mp3 not supported
など。 - 原因
Pygameの音楽再生は、OSにインストールされているコーデックに依存することがあります。特にMP3は環境によって再生できない場合があります。 - トラブルシューティング
- OGGフォーマットのファイルを使用してみてください。OGGはPygameでより安定して動作する傾向があります。
- 最新のPygameバージョンを使用しているか確認し、必要であれば更新してください。
- MP3ファイルを扱う場合、OSに適切なMP3コーデックがインストールされているか確認してください。
- エラー
-
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.music
はpygame.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_playing
とmusic_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()
)