def sound_negative_duration_play_failure(): s = Sound(TEST_SOUND_LONG) try: s.play(duration=-1) except ValueError: return True return False
def sound_playing_before_end_of_duration_play(): s = Sound(TEST_SOUND_LONG) s.play(duration=1.0) time.sleep(0.5) playing = s.is_playing() s.stop() return playing
def sound_playing_before_end_of_2_loops(): s = Sound(TEST_SOUND) s.play(loops=2) time.sleep(TEST_SOUND_LENGTH * 2 - 0.5) playing = s.is_playing() s.stop() return playing
def sound_not_playing_after_end_of_2_loops(): s = Sound(TEST_SOUND) s.play(loops=2) time.sleep(TEST_SOUND_LENGTH * 2 + 0.5) playing = s.is_playing() s.stop() return not playing
def sound_not_playing_after_end_of_2_loops_of_fixed_duration(): s = Sound(TEST_SOUND_LONG) s.play(duration=1.0, loops=2) time.sleep(2.5) playing = s.is_playing() s.stop() return not playing
def sound_chaining_test_timed(): # Same as sound_chaining_test(), but time it. Does not include Sound() # time, as it may take a while to load an uncached sound. s = Sound(TEST_SOUND) start = time.time() s.play().wait().play(duration=0.1).wait().play().stop() return verify_duration(start, TEST_SOUND_LENGTH + 0.1)
def sound_not_is_playing_after_play(): s = Sound(TEST_SOUND) print("before play") s.play() print("after play") time.sleep(TEST_SOUND_LENGTH + 0.5) print("after wait: ", s.is_playing()) return not s.is_playing()
def sound_play_test_sound_and_note_mixed(): n = Note('A') s = Sound(TEST_SOUND) n.play(duration=None) s.play() s.wait() n.stop() return True
def sound_sound_volume(): '''The long test sound will play for 10 second with increasing volume. ''' master_volume(100) s = Sound(TEST_SOUND_LONG) s.volume = 0 s.play(duration=10) for i in range(20): s.volume += 15 time.sleep(0.5) s.wait()
def sound_short_latency(): s = Sound(TEST_SOUND) s.stop() start = time.time() s.play() s.wait() duration = time.time() - start latency = duration - TEST_SOUND_LENGTH print("Latency: ", latency) return latency > 0 and latency < 0.050
def sound_get_set_volume(): # Verify Sound volume attribute can be get/set. s = Sound(TEST_SOUND_LONG) s.volume = 0 s.play(duration=0.5) for i in range(10): s.volume += 10 time.sleep(0.05) s.wait() return s.volume == 100
def sound_stop_time(): s = Sound(TEST_SOUND_LONG) s.play() time.sleep(1) start = time.time() s.stop() end = time.time() duration = end - start print(start, end) print("stop() duration: ", duration) return duration > 0 and duration < 0.150
def sound_manual_play_test_sound_and_note_mixed(): '''The sound match1.wav will play TWO TIMES on the speaker, mixed with an 'A' note. ''' n = Note('A') s = Sound(TEST_SOUND) n.play(duration=None) s.play() s.wait() s.play() s.wait() n.stop()
def sound_stop_time(): #s = Sound(TEST_SOUND_LONG) s = Sound('/opt/sonic-pi/etc/samples/loop_garzul.wav') s.play() time.sleep(1) start = time.time() s.stop() end = time.time() duration = end - start print(start, end) print("stop() duration: ", duration) return duration > 0 and duration < 0.150
def sound_play_then_replay(): s = Sound(TEST_SOUND_LONG) s.play() time.sleep(0.5) playing_firsttime = s.is_playing() s.play(duration=1.0) time.sleep(0.5) playing_secondtime_before_end = s.is_playing() time.sleep(1.0) playing_secondtime_after_end = s.is_playing() s.stop() print('playing_firsttime: ', playing_firsttime) print('playing_secondtime_before_end: ', playing_secondtime_before_end) print('playing_secondtime_after_end: ', playing_secondtime_after_end) return playing_firsttime and playing_secondtime_before_end and not playing_secondtime_after_end
def sound_stop(): s = Sound(TEST_SOUND) s.play() s.stop() return not s.is_playing()
def sound_playing_before_end_of_2_loops_of_fixed_duration(): s = Sound(TEST_SOUND_LONG) s.play(duration=1.0, loops=2) playing = s.is_playing() s.stop() return playing
def sound_is_playing_at_play_start(): s = Sound(TEST_SOUND) s.play() return s.is_playing()
def sound_play_test_sound_loop_2(): '''The sound match1.wav will play TWO TIMES on the speaker (about 0.5 seconds each).''' s = Sound(TEST_SOUND) s.play(loops=2) s.wait()
def sound_play_test_sound(): '''The sound match1.wav will play on the speaker (about 0.5 seconds).''' s = Sound(TEST_SOUND) s.play() s.wait()
def sound_wait_verify_duration_with_duration_and_loops(): s = Sound(TEST_SOUND_LONG) start = time.time() s.play(duration=1, loops=3).wait() return verify_duration(start, 3)
def sound_wait_verify_duration(): s = Sound(TEST_SOUND) start = time.time() s.play().wait() return verify_duration(start, TEST_SOUND_LENGTH)
def sound_wait_verify_duration_with_loops(): s = Sound(TEST_SOUND) start = time.time() s.play(loops=3).wait() return verify_duration(start, 3*TEST_SOUND_LENGTH)
def sound_wait(): s = Sound(TEST_SOUND) s.play() s.wait() return not s.is_playing()
def sound_is_playing_at_play_middle(): s = Sound(TEST_SOUND) s.play() time.sleep(TEST_SOUND_LENGTH/2) return s.is_playing()
def sound_wait_verify_duration_with_loops(): s = Sound(TEST_SOUND) start = time.time() s.play(loops=3).wait() return verify_duration(start, 3 * TEST_SOUND_LENGTH)
def sound_not_playing_after_end_of_duration_play(): s = Sound(TEST_SOUND_LONG) s.play(duration=1.0) time.sleep(1.5) return not s.is_playing()
def sound_is_playing_at_play_middle(): s = Sound(TEST_SOUND) s.play() time.sleep(TEST_SOUND_LENGTH / 2) return s.is_playing()
# ######################################## # Change the World # ######################################## if missile_x >= 0 and now - missile_start_time > MISSILE_STEP_TIME: # Missile already launched - move it up missile_y += 1 if missile_y >= fb.height: missile_x, missile_y = -1, -1 missile_start_time = now elif presses: # Button was pressed - launch missile missile_x, missile_y = (round(spaceship_position), 1) missile_start_time = now fire_sound.play() # Move spaceship if x_force > TILT_FORCE: spaceship_position -= SPACESHIP_STEP elif x_force < -TILT_FORCE: spaceship_position += SPACESHIP_STEP spaceship_position = max(0, min(fb.width - 1, spaceship_position)) # Move alien if now - alien_start_time > ALIENS_STEP_TIME / alien_speed: for note in notes: note.stop() next(notes_cycle).play(duration=0.20) alien_at_right_side = alien_direction > 0 and max(alien_columns) == fb.width - 1 alien_at_left_side = alien_direction < 0 and min(alien_columns) == 0
# ######################################## # Change the World # ######################################## if missile_x >= 0 and now - missile_start_time > MISSILE_STEP_TIME: # Missile already launched - move it up missile_y += 1 if missile_y >= fb.height: missile_x, missile_y = -1, -1 missile_start_time = now elif presses: # Button was pressed - launch missile missile_x, missile_y = (round(spaceship_position), 1) missile_start_time = now fire_sound.play() # Move spaceship if x_force > TILT_FORCE: spaceship_position -= SPACESHIP_STEP elif x_force < -TILT_FORCE: spaceship_position += SPACESHIP_STEP spaceship_position = max(0, min(fb.width - 1, spaceship_position)) # Move alien if now - alien_start_time > ALIENS_STEP_TIME / alien_speed: for note in notes: note.stop() next(notes_cycle).play(duration=0.20) alien_at_right_side = alien_direction > 0 and max( alien_columns) == fb.width - 1