














The Display consists of procedural masks blended with the texture map.
They control emission strength and area of influence. Drivers control the on/off functions and movement of the masks, and Limit Transformation Constraints were used for simplicity.
I wanted the Tape Hubs (spin) to only affect the Cassette Tape, when it was firmly placed inside the Deck.
It came down to writing a simple "if else" expression in the Driver. Basically, only allow the Tape to spin if it's actually in the Deck.

Rig test with audio synchronization.

I simply separated the audio into L & R Channels, and exported that into individual audio files.
Then I selected "Bake Sound to F-Curves" with a Key on both "waveform" Controller Bones in the rig.









Labels created by me, using Vectors in Adobe Illustrator.

Reference Collage
