The great feedbacks I received after publishing this first success on the DAZ Carrara
forum encouraged me to continue in this promising direction. Next steps was something
running with a MIDI file. I studied some source code by “Sparrowhawke3D” to learn
about advanced features of the SDK. This helps me to understand how to get access
to object attributes such as position and rotation. My second implementation called
“PyCarrara” was harder to develop and took few weeks. This new plugin keeps the original
Python driven tweener and adds some new amazing features: a modifier able to drive
the (x,y,z) position of any object and some Python functions to get access to the
sound tracks embedded in the scene.

The Python tweener feature is by itself very powerful because it can be used to drive
any animatable parameter. But it requires you to create a tweener for each object
of shader attribute you want to drive by script. This is painful if you have many
objects to animate. The new modifier feature gives access to attributes of any object
in an easier way: you only have to specify the name of an object in the script to
get access to its attributes. This is particularly helpful for MIDI driven animations:
a piano keyboard can be built by object replication and it is very easy to access
each key with a function calculating the name of the object to be moved depending
on the MIDI notes.

Currently, only offset attribute is supported, but access to other attributes such
as rotation could be added quite easily in the next PyCarrara releases.

The screenshot shows the PyCarrara plugin in action for driving the trumpet deformation
in my “Zarathustra” demo animation (http://www.youtube.com/user/f1oat3d). The velocity
(power) of MIDI notes is used to drive the “Strength” parameter of a “Punch” modifier
applied to the geometry.