Part Two!

Immediately after leaving my tutorial with Angus, I set to work on depicting the actual flavours.

I wanted this to be more locative as opposed to entities relying on their shape or colour representation, as my final application is going to be an experience of the flavours without getting too caught up in semiotics, though it could be said that location is symbolic in itself. Shape, however, can adhere to a certain idea of language (glyphs, emoticons), as well as colour – colour theory is huge, and I’m not ready to interpret the colours of my research into something production ready just yet. Colour beyond the arbitrary below will definitely be used, though, as flavour is too complex to be limited to 0-255.

Gin-Gin Mule

Gin and Tonic

Gin Rickey

Thinking about location, I thought about where we taste flavours in our mouth. Although they are not an exact science, tongue maps have been used for years, it is a concept that was introduced to us at school. We accept that we taste bitter at the back of our tongue, sweet at the front. When we perceive flavours, we don’t only do so on our taste receptors, unless it’s cold, hot or capsicum. We feel it in our whole mouth and it swims up to our brain, it’s all perception. I made an executive decision to use this as the basis for my final atmosphere – one day, i’d like the whole thing to be fluid, for flavour locations to be defined and averaged by the user. For now, this will be good. Not perfect, but I support it.

I assigned different colours to the areas (or, TasteLocation), not influenced by anything, just for difference sake, and changed the size according to the flavour prevalence.

class TasteLocation {
color tasteColour;
float tasteOpacity;
float tastexPos;
float tasteyPos;
float tasteWidth;
float tasteHeight;

TasteLocation(color colour, float opacity, float x, float y, float tWidth, float tHeight) {
tasteColour = colour;
tasteOpacity = opacity;
tastexPos = x;
tasteyPos = y;
tasteWidth = tWidth;
tasteHeight = tHeight;
}

void print() {
println("---Taste Locations---");
println("Colour :" + tasteColour );
println("Opacity :" + tasteOpacity );
println("xPos :" + tastexPos );
println("yPos :" + tasteyPos );
println("Width :" + tasteWidth );
println("Height :" + tasteHeight );
}

void draw() {
fill(tasteColour, 0);
stroke(tasteColour, tasteOpacity);
ellipse(tastexPos, tasteyPos, tasteWidth, tasteHeight);
noStroke();
}
}

TasteLocation bitter;
TasteLocation leftSalty;
TasteLocation rightSalty;
TasteLocation midSalty;
TasteLocation sweet;
TasteLocation leftSour;
TasteLocation rightSour;
TasteLocation umami;

void initBudDist() {
flavours = recipe.flavours;

bitter = new TasteLocation(bitterColour, 100, width/2, height/6, flavours.bitter * 100, flavours.bitter * 100);
leftSour = new TasteLocation(sourColour, 100, width/4, height/3, flavours.sour * 100, flavours.sour * 100);
rightSour = new TasteLocation(sourColour, 100, width - width/4, height/3, flavours.sour * 100, flavours.sour * 100);
leftSalty = new TasteLocation(saltyColour, 100, width/3, height - height/3, flavours.salty * 100, flavours.salty * 100);
rightSalty = new TasteLocation(saltyColour, 100, width - width/3, height - height/3, flavours.salty * 100, flavours.salty * 100);
sweet = new TasteLocation(sweetColour, 100, width/2, height - height/5, flavours.sweet * 100, flavours.sweet * 100);
midSalty = new TasteLocation(saltyColour, 100, width/2, height - height/5, flavours.salty * 100, flavours.salty * 100);
umami = new TasteLocation(umamiColour, 100, width/2, height/2, flavours.umami * 100, flavours.umami * 100);

}

void drawTasteBuds() {
bitter.draw();
leftSalty.draw();
rightSalty.draw();
midSalty.draw();
sweet.draw();
leftSour.draw();
rightSour.draw();
umami.draw();
}

The drawTasteBuds() calls back to a method within the Flavour class I defined previously. This builds on previous code.

Within the draw function, I looped over each recipe and saved each graphical result into a folder, so now I have 48 representations of flavour.

Looking at it, I really like this direction. It seems to make sense, in a way. I’m wondering what difference it would make if someone knew each location? If they would venture towards the correct TasteLocation? I don’t have enough time to test this out extensively, but those I have shown understand more after I introduce each flavour, and engage with it after the fact.

Basically, i’m dealing with two stages of representation. How we want to represent how we perceive the flavours of that cocktail to the program, and how the program represents it back to us. For the sake of not creating something completely crazy and nonsensical, there had to be some sort of structure and understanding in one of them. But then, if the final representation is completely different to the intended (i.e, bitter is not in the bitter location, it’s by average more in the sweet location), we will be discovering something new, not just reiterating old news. Prescription vs description – am I telling people what to input, or am I describing what people are inputting?

*mind blown*