diff --git a/src/Backends/Audio.h b/src/Backends/Audio.h
index 0b28f352..d1d32773 100644
--- a/src/Backends/Audio.h
+++ b/src/Backends/Audio.h
@@ -15,7 +15,7 @@ void AudioBackend_UnlockSound(AudioBackend_Sound *sound);
 
 void AudioBackend_PlaySound(AudioBackend_Sound *sound, BOOL looping);
 void AudioBackend_StopSound(AudioBackend_Sound *sound);
-void AudioBackend_PauseSound(AudioBackend_Sound *sound);
+void AudioBackend_RewindSound(AudioBackend_Sound *sound);
 
 void AudioBackend_SetSoundFrequency(AudioBackend_Sound *sound, unsigned int frequency);
 void AudioBackend_SetSoundVolume(AudioBackend_Sound *sound, long volume);
diff --git a/src/Backends/Audio/SDL2.cpp b/src/Backends/Audio/SDL2.cpp
index 7e973297..b3d61be7 100644
--- a/src/Backends/Audio/SDL2.cpp
+++ b/src/Backends/Audio/SDL2.cpp
@@ -272,14 +272,14 @@ void AudioBackend_StopSound(AudioBackend_Sound *sound)
 	SDL_UnlockAudioDevice(device_id);
 }
 
-void AudioBackend_PauseSound(AudioBackend_Sound *sound)
+void AudioBackend_RewindSound(AudioBackend_Sound *sound)
 {
 	if (sound == NULL)
 		return;
 
 	SDL_LockAudioDevice(device_id);
 
-	sound->playing = FALSE;
+	sound->position = 0.0;
 
 	SDL_UnlockAudioDevice(device_id);
 }
diff --git a/src/Organya.cpp b/src/Organya.cpp
index cad51b35..7079c3c5 100644
--- a/src/Organya.cpp
+++ b/src/Organya.cpp
@@ -177,6 +177,7 @@ BOOL MakeSoundObject8(signed char *wavep, signed char track, signed char pipi)
 			}
 
 			AudioBackend_UnlockSound(lpORGANBUFFER[track][j][k]);
+			AudioBackend_RewindSound(lpORGANBUFFER[track][j][k]);
 		}
 	}
 
@@ -219,6 +220,7 @@ void PlayOrganObject(unsigned char key, int mode, signed char track, long freq)
 			case 0:	// 停止 (Stop)
 				if (old_key[track] != 0xFF)
 					AudioBackend_StopSound(lpORGANBUFFER[track][old_key[track] / 12][key_twin[track]]);
+					AudioBackend_RewindSound(lpORGANBUFFER[track][old_key[track] / 12][key_twin[track]]);
 				break;
 
 			case 1: // 再生 (Playback)
@@ -341,10 +343,12 @@ void PlayDramObject(unsigned char key, int mode, signed char track)
 		{
 			case 0:	// 停止 (Stop)
 				AudioBackend_StopSound(lpSECONDARYBUFFER[150 + track]);
+				AudioBackend_RewindSound(lpSECONDARYBUFFER[150 + track]);
 				break;
 
 			case 1:	// 再生 (Playback)
 				AudioBackend_StopSound(lpSECONDARYBUFFER[150 + track]);
+				AudioBackend_RewindSound(lpSECONDARYBUFFER[150 + track]);
 				ChangeDramFrequency(key, track);	// 周波数を設定して ()
 				AudioBackend_PlaySound(lpSECONDARYBUFFER[150 + track], FALSE);
 				break;
diff --git a/src/Sound.cpp b/src/Sound.cpp
index 447ebc68..68a7d292 100644
--- a/src/Sound.cpp
+++ b/src/Sound.cpp
@@ -197,11 +197,12 @@ void PlaySoundObject(int no, int mode)
 		switch (mode)
 		{
 			case 0:	// 停止 (Stop)
-				AudioBackend_PauseSound(lpSECONDARYBUFFER[no]);
+				AudioBackend_StopSound(lpSECONDARYBUFFER[no]);
 				break;
 
 			case 1:	// 再生 (Playback)
 				AudioBackend_StopSound(lpSECONDARYBUFFER[no]);
+				AudioBackend_RewindSound(lpSECONDARYBUFFER[no]);
 				AudioBackend_PlaySound(lpSECONDARYBUFFER[no], FALSE);
 				break;