SPHERIFICATION In our conceptual machine we borrowed the technique of  ‘Inverse Spherification’ that was invented Ferran Adrià in the molecular gastronomy  – when a liquid droplet whichever contains calcium is submerged into an alginate bath, the droplet of liquid will then be spherified by forming a ‘gel’ like surface around the sphere. Droplets become ‘caviers’ in water depending on the sizes of injecting device. THE MATERIAL EXPERIMENTS We are carrying out series of experiments of spherifying a variety of liquid (e.g. water liquid, oil, plaster cement, yoghurt, milk etc.) as well as  investigating the physical and chemical properties of the spherified liquid. Spherification of various water-based liquid Forms of yoghurt droplets in alginate bath injected by syringe Forms of milk droplets in alginate bath Positions of yoghurt droplets in higher concerntrated alginate bath Position of yoghurt droplets in higher concerntration of alginate bath The simultaneous emulsification and spherification of milk in alginate bath THE PRINTING MACHINE The first generation of the Fluid Inject Printer is a 1-axix machine with only 2 controllable parameters. It consists a stepper motor that controls the syringe’s trajectory and  a DC motor that controls the amount of injection into the alginate bath. (1) Both devices are feeded by commands of the Arduino; (2) Trajectory of syringe determines the location of print; (3) While liquid is being ejected out from the syringe it becomes instantaneously ’spherified’ in the alginate bath. Hence the first form is printed. #include <Stepper.h> // change the steps variable to the number of steps on your motor int steps = 100; int switchPin = 2;    // switch input int motor1Pin1 = 8;    // pin 2 on L293D int motor1Pin2 = 9;    // pin 7 on L293D // create and attaches a stepper motor // with 100 steps to pins 0, 1, 2 and 3 // calibration int stepLength = 50; int liquidAmount = 25; Stepper stepper(steps, 3, 4, 5, 6); void setup() { // set the speed of the motor to 20 rpms stepper.setSpeed(200); pinMode(switchPin, INPUT); pinMode(motor1Pin1, OUTPUT); pinMode(motor1Pin2, OUTPUT); Serial.begin(9600); Serial.println(”hello world”); } void loop() { if (Serial.available() > 0) { int dataIn = Serial.read(); switch(dataIn) { case ‘]’: stepper.step(stepLength); break; case ‘[’: stepper.step(-stepLength); break; case ‘,’: //up digitalWrite(motor1Pin1, LOW);   // set pin 2 on L293D low digitalWrite(motor1Pin2, HIGH);  // set pin 7 on L293D delay(liquidAmount); digitalWrite(motor1Pin2, LOW);  // set pin 7 on L293D break; case ‘.’: //down digitalWrite(motor1Pin1, HIGH);   // set pin 2 on L293D low digitalWrite(motor1Pin2, LOW);  // set pin 7 on L293D delay(liquidAmount); digitalWrite(motor1Pin1, LOW);   // set pin 2 on L293D low break; } } }