DZone Snippets is a public source code repository. Easily build up your personal collection of code snippets, categorize them with tags / keywords, and share them with the world

Snippets has posted 5883 posts at DZone. View Full User Profile

Binaural Beats With Python

01.05.2010
| 4906 views |
  • submit to reddit
        How to use python and ALSA to generate binaural beats.

# A very simple python example to generate binaural beats. 
# The data is sent to the device in a too basic way, so the 
# script only works well with integer frecuencies. 

from alsaaudio import *
from struct import pack
from math import sin, pi

# Channel 1
frec1=317	#Frecuency
vol1=1		#Volume

#Channel 2	
frec2=323 	#Frecuency
vol2=1		#Volume

#Very basic choice of parameters
rate = 44100
period = 44100
channels = 2

# device initialization
out = PCM(type=PCM_PLAYBACK, mode=PCM_NORMAL, card='default')

# parameters
out.setchannels(channels)
out.setrate(rate)
out.setformat(PCM_FORMAT_S32_LE)
out.setperiodsize(period)

# a list with the sinusoidal signals is built
maxAmp = pow(2,31) - 1

list = []
i=period

while(i>0):
	list.append(maxAmp*vol1*sin(frec1*float(i)/rate*2*pi))
	list.append(maxAmp*vol2*sin(frec2*float(i)/rate*2*pi))
	i-=1

# and the list is writen over and over again. Just kill the process to stop.
s=pack('<'+channels*period*'l',*list)
while(1):
	out.write(s)