def raw_to_spectrum(rawdata): #print rawdata #print len(rawdata) flen = 50 spectrum, relative_spectrum = bin_power(rawdata, range(flen), 512) #print spectrum #print relative_spectrum return spectrum
def frame(self, p,window): flen = 50 spectrum, relative_spectrum = bin_power(p.raw_values[-p.buffer_len:], range(flen),512) self.spectra.append(array(relative_spectrum)) if len(self.spectra)>30: self.spectra.pop(0) spectrum = mean(array(self.spectra),axis=0) value = (1-sum(spectrum[3:8]))*100 self.graph.insert_value(time(), value) for i in range(6): pygame.draw.line(window, pygame.Color(0,0,200),(0,400-i*20*3),(600,400-i*20*3), 2) self.graph.draw_graph(window,3.0)
def raw_values_callback(self, raw_values): """ This function takes the raw values data, in blocks specified by the block size, and sends it to the sound buffer """ spec,rel_spec = bin_power(raw_values + self.last_raw, [0.5,4,7,9.5,12,21,30], 512) msg = OSC.OSCMessage("/calcdelta") msg.append(spec[0]) self.osc_client.send(msg) msg = OSC.OSCMessage("/calctheta") msg.append(spec[1]) self.osc_client.send(msg) msg = OSC.OSCMessage("/calclowbeta") msg.append(spec[4]) self.osc_client.send(msg) self.c_low_beta_stab.add_point(spec[4]) msg = OSC.OSCMessage("/calc_low_beta_instability") msg.append(self.c_low_beta_stab.stability) self.osc_client.send(msg) msg = OSC.OSCMessage("/calchighbeta") msg.append(spec[5]) self.osc_client.send(msg) self.c_high_beta_stab.add_point(spec[5]) msg = OSC.OSCMessage("/calc_high_beta_instability") msg.append(self.c_high_beta_stab.stability) self.osc_client.send(msg) msg = OSC.OSCMessage("/calclowalpha") msg.append(spec[2]) self.osc_client.send(msg) self.c_low_alpha_stab.add_point(spec[2]) msg = OSC.OSCMessage("/calc_low_alpha_instability") msg.append(self.c_low_alpha_stab.stability) self.osc_client.send(msg) msg = OSC.OSCMessage("/calchighalpha") msg.append(spec[3]) self.osc_client.send(msg) self.last_raw = raw_values self.c_high_alpha_stab.add_point(spec[3]) msg = OSC.OSCMessage("/calc_high_alpha_instability") msg.append(self.c_high_alpha_stab.stability) self.osc_client.send(msg) # We're going to try various parameters based on the raw data, from the EEG helpers eeg_hfd = hfd(raw_values, 10) eeg_pfd = pfd(raw_values) msg = OSC.OSCMessage("/eegpfd") msg.append(eeg_pfd) self.osc_client.send(msg) msg = OSC.OSCMessage("/eeghfd") msg.append(eeg_hfd) self.osc_client.send(msg) raw_values = [1. * float(i) / 32768. for i in raw_values] #print len(raw_values), raw_values msg = OSC.OSCMessage("/raw_data") msg.append(raw_values) self.osc_client.send(msg) return None
meditation_img = font.render("Meditation", False, redColor) attention_img = font.render("Attention", False, redColor) record_baseline = False while True: p.update() #window.blit(background_img,(0,0)) if p.sending_data: iteration+=1 flen = 50 if len(p.raw_values)>=500: spectrum, relative_spectrum = bin_power(p.raw_values[-p.buffer_len:], range(flen),512) spectra.append(array(relative_spectrum)) if len(spectra)>30: spectra.pop(0) spectrum = mean(array(spectra),axis=0) for i in range (flen-1): value = float(spectrum[i]*1000) if i<3: color = deltaColor elif i<8: color = thetaColor elif i<13: color = alphaColor elif i<30: color = betaColor