Benutzer-Werkzeuge

Webseiten-Werkzeuge


Seitenleiste

ws1617:the_art_of_music:protokolle:07

Dies ist eine alte Version des Dokuments!


2017-02-09:

test_moving_circles_1.2_4-Kreise-Frequenzband from future__ import division

import numpy as np import moving_circles from scipy.fftpack import * from moving_circles import Canvas, Circle from microlistener import MicroListener

# chose 'VISPY' or 'MATPLOTLIB'

PREFERRED_BACKEND = 'MATPLOTLIB_WX'

###################################################### # One possible use case: # Use timer event of backend to change graphic objects. # Here 10 circles are created and a callback function # action(…) is registered to be called at each timer # event. ###################################################### ###micolistener### CHANNELS=2 RATE=44100 CHUNK=2**11 z=[]

def micro_callback(in_data, frame_count, time_info,status):

global z
y=np.array(np.fromstring(in_data,dtype=np.short),dtype=np.float)
yf = fft(y)
xf = np.linspace(0.0, (2.0*RATE), CHUNK/2)
if CHANNELS==2:
	y=y.reshape((y.shape[0]//2,2))
else:
	y=y.reshape((y.shape[0],1))
#print int(np.linalg.norm(y[:,0])/2000.)*'*'
z=np.abs(yf)
return (in_data, status)

listen=MicroListener(RATE,CHANNELS,CHUNK,micro_callback) ###

def action(objects, event):

global z
z_100=z[17:20]			#194-215 Hz
z_1000=z[176:196]		#1906-2110 Hz
z_6000=z[928:1300]		#10002-13997 Hz
#print z[2048]/1000000.0
print z_100
circ.set_radius((sum(z_1000)/20)/1000000.0)	##1000 Hz (?)
circ2.set_radius((sum(z_100)/3)/10000000.0)	##100 Hz (?)
circ3.set_radius((sum(z_6000)/372)/50000.0)	##6000 Hz (?)
  #dt, elapsed = event.dt, event.elapsed
  #for i,circ in enumerate(objects):
  #    circ.move(0.7*dt*np.sin(elapsed*(i+1)), 0.7*dt*np.cos(elapsed*(i+1)))
  #    circ.set_color( (np.abs(np.sin(elapsed*(i+1))),np.abs(np.sin(elapsed*2*(i+1))), np.abs(np.sin(elapsed*3*(i+1))),0.3) )

# create objects, register callback and start program.

win = Canvas() objects = []

#for i in range(10): # circ = Circle(win, pos=(-0.6+0.05*i,0), radius=0.1,color = (1,0,0,0.2)) # objects.append(circ)

#coordinates x1=0.0 y1=0.25 x2=-0.5/np.sqrt(5) y2=-0.25/np.sqrt(5) x3=0.5/np.sqrt(5) y3=-0.25/np.sqrt(5)

circ = Circle(win, pos=(x1,y1),radius = 0.1, color=(1,0,0,0.4)) circ2 = Circle(win, pos=(x2,y2),radius = 0.1, color=(0,1,0,0.4)) circ3 = Circle(win, pos=(x3,y3),radius = 0.1, color=(0,0,1,0.4))

while True:

win.set_action(action, objects)
#print z[0]
win.run()
ws1617/the_art_of_music/protokolle/07.1487846317.txt.gz · Zuletzt geändert: 2017/02/23 11:38 von cm.mint.2016