All pastes #159980 Raw Edit

Mine

public text v1 · immutable
·published 2006-09-03 19:08 UTC
rendered paste body
#!/usr/bin/python
import pygame
import time
import math

pygame.mixer.pre_init(22050,-16,1)
pygame.init()
pygame.font.init()
pygame.mixer.init()

size = 640,480

snd = pygame.mixer.Sound('KDE_Water_Drop.ogg')
arr = pygame.sndarray.array(snd)
show = [0,len(arr)-1]


pygame.display.set_mode(size,0,24)
sur = pygame.display.get_surface()

wavesur = pygame.Surface(size)
sonosur = pygame.Surface(size)

def draw_wave():
	wavesur.fill((0,0,0))
	lasty = -1
	for x in xrange(wavesur.get_width()):
		val = arr[show[0] + int(float(x) / wavesur.get_width() * (show[1]-show[0]))]
		sign = cmp(val,0)
		try:
			val = math.log(abs(val)+1) * sign
		except:
			val = 0
		y = int(val/math.log(32768) * size[1]/4 + size[1]/4)
		if lasty == -1:
			lasty = y
		#wavesur.set_at((x,y), [255,255,255])
		pygame.draw.line(wavesur,[255,255,255],(x-1,lasty),(x,y))
		lasty = y
	sur.blit(wavesur, (0,0))
	pygame.display.flip()

draw_wave()
while True:
	event = pygame.event.wait()
	print event
	print event.type
	if event.type == pygame.QUIT:
		break
	elif event.type == pygame.KEYDOWN:
		step = (show[1] - show[0]) / 10
		if event.key == pygame.K_UP:
			if show[1]-show[0] > size[0]/2:
				show = [show[0]+step, show[1]-step]
		elif event.key == pygame.K_DOWN:
			left = max(0, show[0]-step)
			right = min(len(arr)-1,show[1]+step)
			show = [left,right]
		elif event.key == pygame.K_LEFT:
			left = max(0, show[0] - step)
			show[1] -= show[0] - left
			show[0] = left
		elif event.key == pygame.K_RIGHT:
			right = min(len(arr)-1, show[1]+step)
			show[0] += right - show[1]
			show[1] = right
		elif event.key == pygame.K_ESCAPE or event.key == pygame.K_q:
			break
		draw_wave()
	print show