def sound_negative_duration_play_failure(): s = Sound(TEST_SOUND_LONG) try: s.play(duration=-1) except ValueError: return True return False
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_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_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_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_master_volume(): '''The sound match1.wav will play on the speaker 5 times (about 0.5 seconds each), at 60, 70, 80, 90 and 100% master volume. Lower volumes are too low to hear with an unamplified speaker. ''' master_volume(60) Sound(TEST_SOUND).play().wait() master_volume(70) Sound(TEST_SOUND).play().wait() master_volume(80) Sound(TEST_SOUND).play().wait() master_volume(90) Sound(TEST_SOUND).play().wait() master_volume(100) Sound(TEST_SOUND).play().wait()
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_play_play(): '''Tests race condition case where a very short sound playing could cause a followup wait() to never complete. The curious call to Note() is there because it caused the race codition to occur more reliably frequently. ''' import signal class TimeoutException(Exception): pass def handler(signum, frame): raise TimeoutException() signal.signal(signal.SIGALRM, handler) signal.alarm(5) timeout = False try: Note('A').play().play() Sound(TEST_SOUND).play().wait().play(duration=0.001).wait() except TimeoutException: timeout = True signal.alarm(0) return not timeout
def sound_flood_test(): sounds = [Sound('fire.wav') for i in range(10)] for i in range(10): for s in sounds: s.play() time.sleep(0.05) return True
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_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_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_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_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_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 verify_cpu(): s = Sound(TEST_SOUND_LONG) return testing.verify_cpu()
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_play_chainable(): Sound(TEST_SOUND).play().play() return True
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_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_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_init_with_known_good_sound(): s = Sound(TEST_SOUND) return isinstance(s, Sound)
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_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_stop(): s = Sound(TEST_SOUND) s.play() s.stop() return not s.is_playing()
def sound_chaining_test(): # Sound should be chainable from init->play->wait Sound(TEST_SOUND).play().wait().play(duration=0.1).wait().play().stop() return True
def sound_wait_chainable(): Sound(TEST_SOUND).wait().wait() return True
def sound_wait(): s = Sound(TEST_SOUND) s.play() s.wait() return not s.is_playing()
def sound_stop_chainable(): Sound(TEST_SOUND).stop().stop() return True
def sound_init_abs_filename(): return isinstance(Sound(TEST_SOUND_ABS_PATH), Sound)
def sound_not_is_playing_before_play(): s = Sound(TEST_SOUND) return not s.is_playing()
def verify_cpu_while_playing(): Sound(TEST_SOUND_LONG).play() return testing.verify_cpu(15)
def sound_length(): expected = Sound(TEST_SOUND).length() actual = TEST_SOUND_LENGTH print("Expected: ", expected) print("Actual: ", actual) return expected == actual
-F- FAF ''') TILT_FORCE = 0.1 SPACESHIP_STEP = 0.1 # Initialize aliens ALIENS_STEP_TIME = .8 # Initialize missiles fire_button = Button(7) MISSILE_COLOR = 10 MISSILE_STEP_TIME = 0.1 # Initialize sounds fire_sound = Sound("fire.wav") hit_sound = Sound("hit.wav") notes = [Note('B5'), Note('G5'), Note('E5'), Note('C5')] notes_cycle = cycle(notes) while True: fire_button.presses() while True: if scroll(start_text, cancel=fire_button.presses): break spaceship_middle = 1 spaceship_position = fb.width / 2 alien_columns = [0, 1, 2, 3] alien_row = fb.height - 1 alien_start_time = time.time() alien_direction = 1
def sound_init_rel_filename(): return isinstance(Sound(TEST_SOUND_REL_PATH), Sound)