# Animating a Bezier Curve to Music

I'm trying to animate a bezier curve to music to create an visual equaliser type effect. I am not an experienced blender user, but I have some experience with python.

So far I have managed to put the below together which creates a curve with 64 segments, what I would like to be able to now do is to bake an fcurve for each of the segments based upon a frequency range for each. As I see it I need to create the fcurve for each of the sections and apply it to the y of the relevant bezier point. I have no idea how to do this and I can't find much in the way of information. Is it possible?

import bpy

# Create a curve with 64 divisions.
bpy.ops.curve.subdivide(number_cuts=64)

# Cache a reference to the curve.
curve = bpy.context.active_object

obj_data = bpy.context.active_object.data

# Which parts of the curve to extrude ['HALF', 'FRONT', 'BACK', 'FULL'].
obj_data.fill_mode = 'FULL'

obj_data.extrude = 0.125

# Depth of extrusion.
# Which parts of the curve to extrude ['HALF', 'FRONT', 'BACK', 'FULL'].
obj_data.fill_mode = 'FULL'

obj_data.extrude = 0.125

# Depth of extrusion.
obj_data.bevel_depth = 0.125

# Smoothness of the segments on the curve.
obj_data.resolution_u = 20
obj_data.render_resolution_u = 32
obj_data.bevel_depth = 0.125

# Smoothness of the segments on the curve.
obj_data.resolution_u = 20
obj_data.render_resolution_u = 32

# Locate the array of bezier points.
bez_points = curve.data.splines[0].bezier_points

for i in range(0,64):
bez_points[i].handle_left_type = 'ALIGNED'
bez_points[i].handle_right_type =  'ALIGNED'

bez_points[i].co.z = 0
bez_points[i].co.x = (i**2)+20

bez_points[i].co.y = 0

xl = (i**2)
xr = (i**2)+40

bez_points[i].handle_left = (xl,y,0)
bez_points[i].handle_right =  (xr,y,0)

#Expression to determine the frequency range of the bars
l = i**2 + 20
h = (i+1)**2 + 20

bpy.ops.object.mode_set(mode='OBJECT')

# Convert from a curve to a mesh.
bpy.ops.object.convert(target='MESH')

# Append modifiers.

subsurf_mod = bpy.curve.modifiers.new(name='Subsurf', type='SUBSURF')
stretch_mod = bpy.curve.modifiers.new(name='SimpleDeform', type='SIMPLE_DEFORM')