My little cat! Created out of recycled cardboard, with a mishmash of different scotch tapes. As in outer side of the cardboard has graphics printed against it, I decided to invert it, thereby cutting the box up and attaching them together to create my very own box.
Strings pull the lid close, and the small piece of cardboard pushes the lid up. The cat itself was a makeshift shape of a cat.
As seen. In total, I used 2 servo motors – one to control the cat, the other to control the lid. Perhaps, with better crafting skills, I would be able to cut the number of servo motors down to one. To do this however, I require a larger box – currently, the box is palm-sized – and more ‘attachments’ to attach the cat to the handle/gear that pushes the lid open. To simplify things, I decided to do without it.
Peekaboo! The cat comes out a few milliseconds, after the lid opens.
Attaching the cat box to MaxMsp via a cable.
The inner workings of the cat box – one servo motors is raised in the air, the other attached to the ground.
When one speaks to the box, the lid opens – but no cat in sight! For this is sure some shy cat. Hence, speak louder, but what you say does not matter. The cat will appear for a short while, then disappear, if the threshold volume has been reached. Otherwise, only the lid will open.
See it in action:
In hindsight, I would have included an additional feedback – where the cat would mew back at the user, via an added soundtrack into the max patch. Pertaining to the documentation, I would have also put in human interactions (which I forgot to record earlier) – perhaps, of the user drumming the lid of the box, or attempt to catch the cat.
This prototype is a further development of the previous ‘swish the sound’, with the addition of chauvet lights.
When the gyroscope is tilted at an angle, there are two responses:
1. Sound is played at the angle the gyroscope is tilted at, and
2. Red light intensifies at the corner the gyroscope is tilted at, washing out the green
Sound is created by using ambisonic, while the control of the light was made by scaling the x and y coordinates of the gyroscope.
Scaling of the gyroscope was slightly different (ie. improved) from the previous sound/graphics/gyroscope patch. Now, the greater the tilting of the angle, the greater the intensity of the red lights. However, several improvements could be made:
alike to ambisonics, which had a smoother transition when the gyroscope tilt changes, transition between the different chauvet lights could be smoothed out.
perhaps the intensity of the ‘chosen’ chauvet light could also be dimmed – this I tried, but could not successfully manipulate the lighting such that it stopped blinking (ie. setting the minimum threshold)
A week ago, we had our first experience matching the gyroscope’s movement with the amplification of 4 different speakers – one at each corner of the room.
Here is the previous patch I did, which matched the gyroscope’s pointed direction (top right, bottom right, top left, bottom left), to triggering the speakers in the room, corresponding to their location. For e.g., point top right will trigger the top right speaker. When triggered, the speaker will switch on, when not triggered, the sound from that particular speaker will switch wholly off.
Comments from the ground mentioned that perhaps, utilising the volume instead of directly switching the said speaker on/off will allow for a more ‘flow-y’ effect when switching to and fro different speakers. At current, the speakers were discrete: individually separate and distinct.
In addition, the randomising effect of coloured rectangle was indeed distracting. Below is a sneak peek into how it looked like:
One perplexing issue with the (x,y) values was that it was not stable enough, such that the distinction between the third and fourth speaker was not clear enough. Hence, switching between speakers may not be accurate enough for 2 corners.
Perhaps, the curve followed a log curve, instead of a linear function, hence by simply isolating particular sections of the x or y section and extrapolating it with relation to the speakers remain inaccurate.
From here, I decided on trying to covert the log curve into a linear curve, by utilising angles. I used this equation:
‘If tanθ = b/a, then θ = tan^-1(b/a)’
b being the side of the triangle opposite the angle, and a being the side of the triangle gating the side of the unknown angle. However, I fixed the starting ‘corner’/tip of the unknown angle at a given point in x, so one is able to differentiate between angles among all 4 quadrants.
Meanwhile, please refer to the below patch:
I used ‘atan’ to find the angle in radian, after which I converted it back to degrees by multiplying it by 57.2958. Hence, by ‘split’, I tried to match each angle to the ‘gain’, or the volume of each soundtrack. I also attempted to put in 4 different soundtracks to correspond with the 4 speakers (which is also easier to identify which speakers were playing), but ultimately decided to simply stick to 1 soundtrack. Each sound however, was individually recorded from real-life.
However, the angles, while calculated correctly, still tended to jump around, making the change in volume for all speakers jittery. Hence, for recording purposes, I decided to first stick to my initial patch where each speaker was turned on individually, but will continue troubleshooting the angles at a later date. Potential reasons for this jump include: the extrapolation of the angles were too small/huge, hence it was too jittery? Else, it could be that the ‘boundaries’ for the graph was too huge/small, hence the change in angles were too steep/quick.
As for my graphics, I decided to play with jit.gl.gridshape, to create 3D shapes. My intention was to have a sphere pivoting in 3D space. However, in playing around with the z-axis, it was difficult to specifically alter the x,y coordinates to move the z-axis. Hence, I decided to focus on the 2D visualisation of the sphere instead. Initially, it worked perfectly, with the sphere moving in the direction of the gyroscope. Despite my initial success, an unknown error cropped up the next day, and I could not get the sphere to change its position. I also played around with jit.gl.lua, lua being a scripting language which could be input into max msp. I wanted to use the x,y coordinates to replace mouse click, which activated the graphics within the jit.window, but was unable to figure out the mouse click function, which seemed to differ from the mouseclick from jit.lcd.
Therefore, I decided to stick to what I did initially: use jit.lcd to draw a moving rectangle. I would instead fix the perimeters and colour of the rectangle this time round, so that the graphics would not be too flashy.