Chinese Tale

Page 1

Chinese Tale

Jieting (Tina) Chen Innovation Design Engnneering Royal College of Art June 2011

1


Executive Summary

2


China has a lengthy, rich and varied cultural heritage. How can this be transferred and developed into modern design objects? This project is about finding the essence of “Chinese-ness”, and how that unique element can be embodied in design outcomes, so that they pay tribute to the past whilst also looking to the future. The outcome of this project is an experimental music player that embodies “hanxu” in different layers. Hanxu is the art of language, an indirect way of communication. It is widely used in Chinese literature and poems. As a literature method, it is considered to be more tasteful and elegant. In this context, it is about playing with different senses of the human body. Words can be used to describe certain feelings, but by matching them with unrelated senses, things can be expressed indirectly. For example, ‘smelling the music’ could deliver this totally new experience to an audience who cannot physically experience it but can imagine it. In a good hanxu poem, the reader reads between the lines and gets beyond them. During a conversation, to gain deeper understanding, people need to process non-verbal communication such as hand gestures and facial expressions. Therefore, both sides have to have the skill to observe and absorb all different kinds of information from each other to react accordingly. To interact with the music player, the user will implement their surroundings as the media. By picking up colours and patterns from the immediate environment, they will give the player hints which it will interpret and adjust its playlist accordingly. The music player will observe and learn from the user’s subtle body language to learn if the user likes the music, and will suggest tracks along simlar lines. Therefore, it will grow with the user, and the more it is used, the smarter it will be. The goal of this project is not to point out the aesthetic differences between a Chinese music player and a Western one, but to emphasise how a unique philosophical cultural concept can be embodied in a design outcome. This project would be considered a good case study for cultural transfer research. It offers a different option, supplies another angle and evokes further discussion.

3


4


Contents Executive summary

3

Introduction

8

Research

9

Understanding

9

What’s out there already

10

Methodology

11

Chinese-ness mapping

11

Story line

12

Experimentation

Tale 1: Bringing back tradition

14

Tale 2: the balance of yin and yang

16

Tale 3 Hanxu

18

Conclusion

26

References

27

Appendice

28

5


6


Statement of Originality I confirm all work in this document is of my own and except where indicated in the text, all other parts are my own original work.

7


“Creative industry in China”

Introduction Once I was sitting in Dubai’s airport and waiting for the flight, two guys from Africa started talking to me. They have a business in Guangzhou, one of the main “made in China“ city in the south of China. We talked about mass production and economic transformation happening in China. On one hand, I am happy that manufacturing creates more jobs and better life to the local people. On the other hand though, I am deeply worried about the fact that products are designed in Europe and the US that actually failed to offer the beautify and strength of cultural diversity of China. The world definitely deserves to enjoy the culture and philosophy of every single region in terms of product design. Industrial design was born from the industrial revolution and evolved alongside changing western society. Therefore, the way of classic design philosophy and cultural value are structured with strong western features. The impression people have is that everything made in China is cheap and of low quality. On the other hand, China has a lengthy, rich and varied cultural heritage. How can this be transferred and developed into modern design objects? During the GoGlobal project in China in 2010, there was a culture transfer workshop held by IDE PHD stu-

8

dent Wenjin Yao. In the workshop she asked participants to look for the cultural elements and feed them into design. It was interesting to see how people from different cultural backgrounds seek elements inspired by their own originated cultural bond and use them in design. However, I realised that without cultural understanding there are barely ways to use them in a deep and meaningful way. Even with Chinese cultural background, it is still a difficult research question. China has nearly 4000 years of continous history. There are so many different aspects of culture. Where to seek the uniqueness of it? And how to embody this “Chinese-ness” into design outcome? What is the situation of design industry so far? How it get to there and where should Chinese design go in the future? There are already a lot of designers seeking for answers. As a Chinese designer, I want to explore the answers from my own perspective. “How to embody “Chinese-ness” into an design object? The process and thinking of this project would be a case study for other Chinese designers to bring the culture into design outcome. At the same time, I hope the project will be a fresh perspective for westerners to learn Chinese culture.


Research Understanding In the primary research, I wanted to understand what is the situation for the design industry in China so far and why is it like that? I talked to different relevant people including my peers from college who have been working in the industry for one year as well as graduates who have working in the industry for more than 5 years.

• creativity is expensive Creativity needs time, resource and the right people. And it is also highly risky. All of these cost money. Only big companies can afford this. But for smaller companies, which are the most cases, they don’t want to “waste money” on design or just simply can’t afford it. They prefer to have safe and ready-made “examples”.

I also got chance to talk to Italian designer and educator Barbara Casati, who has lived and worked in China for 8 years. “The industry changed a lot in the past few years in China. Back in time, no one known what is design or care about it. Nowadays, design is one of the hot topic among not only designers but also CEOs.”

• policy & environment In the west, industrial design was born in industrial revolution, the transition is smooth and nature. So the policy and environment are relatively mature. In China however, there is a big gap because of the war and the“cultural revolution”. China also has its uniqueness in terms of society structure and economical policy. Everything is still in a chaos. Design is still struggling to find its way in this young environment.

Form the conversation with her, I got to know the first hand of information about the changing and developing in the industry as well as in people’s mind. At the same time, from different online resource, I learned about the latest situation of design consultancies as well as companies which do care about design. In general, the result of this primary research are as follows. • manufacturing can make money Why companies don’t want to be creative and produce product that has been properly designed? One of the reason is that companies can already make money just by manufacturing. China is relatively rich in resource, in terms of raw materials as well as labour force. So companies sit on these advantages and make money from manufacturing. They are happy as long as they can make money. However China will lose these kind of advantages. In fact the cheapest manufacturing place has already moved away from China to neighbour countries, such as India and Vietnam. At the same time, the inefficient use of natural resources and China’s massive activity level of production has pushed the prices up over the years. The rest of the resource will only be more and more expensive. It won’t be cheap to manufacture in China because the raw material will be expensive. And, the cost of labor is raising as well. Therefore the comparative advantage in labour costs as the core competence of china’s manufacturing industry, the cost leadership, is diminishing. The only survival way against its rivals is the product differentiation which can be only delivered by design in terms of both product design and innovative thinking of the market.

• lacking acknowledge of branding and design Design, especially industrial design is still new to a lot of people. I remember having to explain people what industrial design means and why we need it. Even now, the majority doesn’t know the concept of design and company’s don’t appreciate the value design can bring. • time The industry and market simply need time to grow and be mature. The manufacturing industry in China is still at the lower level of the value chain of the world production as they can only compete with others on costs. However, they are losing the cost-leadership as the labour cost increases, alongside the economic development, which delivers the increasing income level in the area. The only way to survive is to bring product differentiation which can only be successful, if design became the heart of it. The industrial life cycle in China is now at the developing stage and the clock is ticking for survival.

9


What’s out there already There are certainly designers and companies who know the importance of design and trying to design unique Chinese products. Lenovo (联想)1, is one of the most famous company founded and headquartered in China with a product range from laptops to consumer electronics. Lenovo integrates traditional Chinese elements into their product. Aigo (爱国者)2, another company which produce consumer electronics, also tries to use traditional Chinese elements into their product. The pictures are showing some examples of their product. 1 联想 http://www.lenovo.com.cn/

2 爱国者http://www.aigo.com/default.aspx

10

In furniture design there are several featured design brands and studios. Nature Bamboo3 is a design brand “finding the beauty of nature, seeking new story and pattern of bamboo, and makeing it go with modern life.“ INNOVO (品物流 形)4 is a young brand trying to embody Chinese philosophy in furniture design. Their work have been exhibited in Milan design week from 2009 to 2011. Banmoo(半木)5 is a brand trying to give antic Chinese furniture new form to fit into today’s modern life. 3 http://www.naturebamboo.com/

4 品物流形 http://www.innovo-design.com/ 5 半木 http://www.banmoo.cn/


Methodology Mapping of the “Chinese-ness“ After the initial research, the first thing I did was to map out classic Chinese elements16 to help me to find “What is the essence of Chinese-ness”. Then, I organized these elements into categories including festival, custom, architecture, literature, philosophy, invention, object and characteristic. Considering the huge size of the topic, this map helped me to break down the topic as well as having an overview of the potential element that I can develop in the design process.

16中国元素. [Online] Available from: http://www.jvvvv.com/

11


Primary research What is the situation so far?

Issue and oppotunity

Why is it now?

Chinese design?

What already there?

“Copy cat” design

How to embody “Chinese-ness” into a design outcome?

What is the essence of Chinese-ness?

object

architecturef

estival and custom

characteristic and behaviour

literature and philosophy

How to bring back a traditional object in today’s context?

Candle easy to translate with too straight forward need more fundamental exploring the abstract side of culture How to communicate a Chinese philosophy though an object? Yin and Yang balance

“Han Xu”

- Art of language - Indirect, give hints

How can “Han Xu” be embodied in an object?

Color

Chinese whisper shape interpretation

Form(2D) exploring

Tactile texture

Form(3D) exploring

material

music player

- Object to ill

12


“Chinese Tale “ Story Line

1 Literature method

2 People's behaviour

- Such as metaphor

- Verbal and none verbally communication

r

interaction

lustrate the process

select music

colour

Pattern

3D shape

control the volume

2D shape

Temperature

Ambient light

like

Wind

Hand gestures

Body movement

Facial expression

13


Tale 1 Bringing back tradition I decided to start with something simple. There are a lot interesting traditional objects dying and gradually fade out from people’s life. However because of long history, these objects often have cultural uniqueness and are beloved among old generations. How can we bring back a traditional object into today’s context? So they not only have the cultural uniqueness but also fit in today’s lifestyle.

14

EXP Candle I chose a traditional wedding candle to be the subject of this experiment. Lighting a wedding candle for the wedding night is a tradition since ancient China. The candles usually come in pairs. One of them has dragon pattern and the other one has Phoenix pattern. These are the symbols to wish the bride and bridegroom a good long life together. This tradition gradually disappeared in the last decade, because of the conveniency of the electrical light bulb and because burning candle has health and safety issues. Using candles in the room is not con-


sidered to be safe. In the process of design, the key element I wanted to keep was the good wish that the candle carries, which are represented by the Phoenix and Dragon patterns. At the same time, the object should fit into today’s lifestyle. It should be convenient and safe. And as an object sits inside the bedroom, it should have functions for daily usage after the wedding. Here are some photos of the sketches as well as material testing for the design. The result of this quick experiment is a nightlight made of acrylic top and wooden stand with a modernised phoenix and dragon pattern on the surface representing the “good wish”. The flame shape and the red color light suggests the traditional candle image, though the acrylic and choice of color of light makes the “candle” blend more into today’s context.

as the color of red which means happiness, so it is key to keep those elements but express them in a modern language. In terms of the modern design language, it could be the material, the shape, the pattern, etc. This experiment successfully demonstrates how to bring back a traditional object into today’s context. However, because this process is mainly based on aesthetics, it is difficult to have more fundamental innovation in terms of the quality of the transformation and the function of the object. The result is too straight forward and plain. Because of this, I decided to move to more abstract side of cultural elements, hopefully I can get more interesting result.

The key insight from this experiment is that, “update” a traditional object to today will enrich a design object’s cultural heritage. The key for this process is to redefine the object. What is the function in today’s context? What is the cultural and emotion value? Which part of the object is carrying this value? And then use design language to transform those cultural elements. In the candle case, the value exists in the Phoenix and Dragon pattern, which means good future as well

15


Tale 2 The balance of yin and yang As mentioned in the previous paragraph, I decided to integrate a more abstract side of the cultural elements to enable some more intriguing and interesting outcome. The research question I set up for this phase was, “How to communicate a concept of Chinese philosophy through an object?“ I decided to communicate the philosophical concept of the balance of Ying-Yang17. It is one of the most fundamental and well known concept in Chinese philosophy born and developed since Chunqiu Dynasty (around 2nd century BC). It influenced the whole Chinese culture in different levels and stages throughout the development of the culture itself, even today’s society and daily life.

About yin and yang “The concept of Ying-Yang is used to describe how polar or seemingly contrary forces are interconnected and interdependent in the natural world, and how they give rise to each other in turn. Opposites thus 17 Wikipedia contributors. yinyang [Online]

16

only exist in relation to each other.” (from Wikipedia) This explanation is the core of the philosophy. By the time, the yin and yang concept developed a lot and have much more meaning than this definition. That’s also one reason why it influences Chinese culture in so many different aspects. To communicate this yin yang balance concept I broke it down to three different aspects to make it is easier to focus and translate the concept step by step. The three aspects are: “Wu ji bi fan” (物极必反)28, means “One thing’s extreme equals the foundation of its contrary.” “Yi rou ke gang” (以柔克刚)39,means “Negative can balance out the positive, and vice-versa.” “Ci xiao bi zhang” (此消彼长)410 , means ”when one is rising, the other is falling.” Around these aspects, I brainstormed and structured three experiments.

28在线成语字典[Online] Available from: http://www.dffy.com/cy/ 39在线成语字典[Online] Available from: http://www.dffy.com/cy/ 410在线成语字典[Online] Available from: http://www.dffy.com/cy/


growing flower screenshot

EXP Growing flowers

trying to communicate.

In this experiment I want to communicate the concept of “One thing’s extreme equals the foundation of its contrary.”

This experiment was unsuccessful. People don’t understand what this interactive flower is about and what is the philosophy behind it. To them, it is more of an interesting game or an interactive installation. Without design purpose it is difficult to translate the philosophy direct into a product. Purely communication of the balance of yin and yang seemingly will end up in an art installation rather than have some sort of design potential. This approach is a failure.

This concept is usually used to describe how things develop, and how people should make the right decision to keep the balance in order to help the development but stop at the right time. Too much help and stimulus will make it worse than no help at all. As an example,fertilizing is considered to be good for plants in general. But too much in one go will burn the root of plant and kill it. So it is important to control the amount of fertilizer. To communicate this I designed an interactive virtual flower. When the subject come close to the table, a virtual flower on the computer’s screen start to grow bigger, the closer the subject to the table the bigger the flower grows. But once the subject get too close to the table the flower will suddenly collapse.

I still believe that a good cultural translation should have a deeper meaning and I believe the soul of a product should come from a philosophical origin. But how to approach the philosophy? How to heritage, integrate and most importantly develop it into a potential design outcome?

A distance sensor is used to detect where the subject is. The data is then fed to the computer by Arduino. Processing is used to draw different flower on the screen. The processing code for the flower is from blprnt, modified and used under open source license. The complete code is attatched in Appendix. During the process, the subject can see the flower growing and decreasing according to the distance between he or she and the table.The subjects are asked to walk freely in front of the table and see the change of the flower on the screen. Afterwards the subjects are asked about what what do they think and what philosophy this interaction is

17


Tale 3 Hanxu About Hanxu I took a step back and looked into how this yin and yang balance philosophy influences social behaviour. One aspect of the yin yang concept talks about how to have the right distance between people to sustain a good relationship, neither too distant nor too close. In general, Chinese people tend to be more indirect in terms of communication. And this indirectness is called “Han xu”11. For example, if I just arrived at my friend’s place and want to have something to drink. Instead of asking”hey, can I have a glass of water please?” The hanxu way is to say “It is really hot outside, it took me half an hour to walk to here.” So I will give hints about what I want, without asking directly. My friend will understand what I am hinting for and offer me something to drink. Hanxu also exist a lot in Chinese literature and poem, 11含蓄解释和意思---词语 [Online] Available from: http://xh.5156edu. com/html5/245659.html [Accessed 5/10/2011].

Hey, can I have something to drink please?

Direct way

18

as a literature method. Because people appreciate the indirectness more. It is considered to be more tasteful and elegant. And because it’s ambiguity and blurriness, it leaves free space for people’s imagination to fly and bring lovely unexpectedness into the communication. Given a good hanxu poem, the reader reads between the lines and gets beyond the lines. What is beyond the lines comes from hanxu. I found Hanxu is easier to translate to a product but still has free space for me to explore. I set the question for this stage as follows: How can Hanxu be embodied in an object? Hanxu is about giving hints but hidden. How can an object hide from its own feature and be less obvious? I designed a series of experiments to explore this question. I choose taiji as the subject which is the symbol of yin and yang. This symbol is a well recognised symbol in both Asia and western world. So in that sense the symbol is quite obvious and direct. So

It’s so hot today. I had to walk for almost half an hour to come here.

Hanxu way


how can I make it more indirect? EXP Chinese whisper This experiment tends to understand people’s interpretation. And how that interpretation will help to gradually change and twist the original subject to make it less obvious.

losophy more tangible. But the limitation comes from the material at the same time. In order to transform hanxu to a higher level, I need to explore a bit more intangible side of the object, which is the communication. The interaction happens between the user and the object.

In the experiment, a taiji symbol is draw on the paper. Each participant was asked to draw a symbol similar to the previous one, but they will only see what the previous one’s drawing. The paper is passed to the next one when he or she finished the drawing.

After a brain storm I decide to use a music player to illustrate my process. Because it has the right level of complexity- it is not as complicated as a mobile phone which has too many layer of interactions, but it has both material (tangibility) and interaction (intangibility) at the same time.

The insight from this experiment is that people have their own interpretation. And even just small changes will make the result dramatically differ from the original one.

In order to make the outcome of the experiment have more design potential, I did a quick survey to ask people about how they use their music player and tried to get some insight from the survey.

EXP 2D taiji symbol In this experiment I tried different ways to manipulate the pattern to keep it recognisable but less obvious.

Because of the timescale, I simplified and categorize the interactions between the user and music player into three categories which are as follows:

For color, by changing hue and contrast or the combination of colors which are used on the taiji symbol, the symbol became either easier or more difficult to recognise.

choose the music to play control the music playing ”like” button

For tactile, I use different texture to hint the difference of the symbol to make it less obvious. EXP 3D taiji symbol In this experiment, I gave a 2D pattern 3D shape, allowing manipulation on an extra dimention and giving it more features to hide the symbol from people’s perception. These experiments helped me to start the exploring of a low level of how to embody hanxu into a pattern. It is the first steps for me to make the intangible phi-

I designed different sets of experiments to explore each feature separately to get a deeper understanding and to illustrate the process better.

Choose the music How can the user to tell the music player what kind of music he or she want to listen to indirectly? I took a look into Chinese poetry and seen how hanxu is used as a literature method to describe sound and music. In this literature context, hanxu is usually referred to as

19


Survey results Do you usually listen alone or share with other people? prefer alone share with another share with more than 2

Do you use speaker or headphone? loud speaker headphone other

Which one do you prefer to use? online radio map 3 player other

Do you listen to online radio? yes no

Choose musics based on... artist album date mood enviroment time of the day how many people the cloth you are wearing

When do you listen to music traveling (bus, tube, walking) working (sketching, making, using computer) All the time cooking partying exercise 0%

20

20%

40%

60%

80%

100%


“It sounds like willow-catkin”

“tong gan”, which translates to Synaesthesia in English. (ie I can smell the music in the air.) In English, the word Synaesthesia refers to a neurologically-based condition where the person could not separate different sensations. In Chinese literature, the context is about playing with different senses of the human body by deliberately using a word usually matched with certain feeling to match with a different sense. The example ‘smell the music’ could deliver this totally new experience to the audience who can not physically experience it but only imagine it. For example, to describe a sound which uses the sense of hearing, instead of describing hearing experience directly, the poet will describe other input such as visual or tactile feeling. ie color or shape or texture. This way, when the reader reads the poem, tong gan will enhance the experience by opening the door of imagination and unexpectedness to enrich his or her emotional reaction. As mentioned before, in Chinese literature, for a master piece, the audience should read between lines and get beyond the lines.

“smell the music“

For example, in this following poem, “细芦僧管夜沉沉,越鸟巴猿寄恨吟。吹到耳边声尽处,一条 丝断碧云心。”12 The poet describe the sound as a thin string, to express the music’s high pitch and acting as if a thin string is pulling the heart. The poet use the shape of a string as a metaphor for the music. In another example: “浮云柳絮无根蒂,天地阔远随风扬。”213 The music is described as cloud and willow-catkin. Here again, the poet use the cloud’s color and texture to describe the music’s texture indirectly. From the examples, I chosen some parameters as the media to describe the music indirectly. And use the experiments to try to find what can be the best link to describe music in a hanxu way. EXP describe the music The parameters are color, texture, pattern, shape, and hand gestures. In these set of experiments, I chose 10 very different music tracks and ask people while listening to them pick up a color; draw a pattern, make a shape with paper and clay, use hand movement to describe the music and tell me why they chose specific result to link to what aspect to the music.

12古诗中的音乐描写 - http://gk.juren.com [Online] Avail able from: http://news.juren.com/200812/206006.html [Accessed 5/3/2011] 213古诗中的音乐描写 - http://gk.juren.com [Online] Available from: http://news.juren.com/200812/206006.html [Accessed 5/3/2011]

21


Insight from the experiment: Pattern Music has rhythm and rhythm is a pattern. So a pattern can describe the music precisely. However the problem of this is that to reverse this which is drawing a pattern to describe a kind of music. Because every one has his or her own opinion about what kind of pattern relates to what kind of music, there is no similarity. And also, it is easy to use pattern to describe one specific song, but it is difficult to describe a kind of music. Again, everyone has their own way to link the pattern with music. However if the pattern has reference, and similarity then it might be possible to use to control the music’s rhythm. Because from the experiment, people will describe the rhythm of the music with pattern. Shape People enjoy making shapes according to the music. It’s relaxing and fun. And the shape can represent a kind of music not only one track. For example a ball shape could represent a soft music while a star shape could represent a more intense one. Imagine a soft music picker, every time you change its shape, it choose the music accordingly. But the problem is still quite tricky. This concept needs more research to find out the relationship between music and specific shape to make the link making sense. And also the technology is really difficult to be achieved in the time scale. But I want to integrate the playful and physical interaction between the media and the user, so the selecting process would be fun and playful. Color Color is the most successful one among all the media. It is simple and easy to link with the music. And people share the similar way of associating a certain color with certain music category.

22

Hand movement People also have similar ways of associating music with hand gesures based on the beat of the music. But people from the survey are saying that they they need to use their hand, while listening to the music like sketching and making, so it would be not appropriate to ask people every time to move their hand while their hands are occupied to select some music. From the insights of these experiments, I selected the best and try to reverse engineering them. And try to find the right technology to enable the music player to capture visual information. I used a color sensor and Max/Msp to build up a test rig for capturing a color and select a music accordingly. A music data base was also built to simulate the music player. For pattern recognition, after trying different software librarier, the opencv library worked the best. Both the code of opencv and color detection are from online opensource communities, modified and used under open source license.


Control the music The poet uses nature as the media to describe certain things in order to express his feeling. These things are not randomly picked. On the contrary, each object and nature element has its meaning and role to play. It shares some similar feature with the object or emotion that the poet want to express. In this stage, I wanted to find an element from the environment which has the strongest link with the volume of the music. Or it could be the indirect media to control the music’s volume. The media I choose are temperature, ambient light, and wind. For each one I made a working prototype with Arduino and Max Msp and asked people to try them out and get the feed back from the test. Temperature In the experiment, a temperature sensor were connected to a computer, and subjects were asked to use temperature as a media to control the volume of the music. People did interesting things with it. They used a cup of hot tea to turn the volume up, or they use some ice in a cup to “freeze” the volume. Or they try to blow to cool it down to turn the volume down. The only issue with the temperature is that the sensor need time to sense and adjust to the environment, so there is always a delay between the input and output. Ambient light In the experiment, a light sensor were connected to computer, and subjects were asked to use the sensor to control the volume of the music. The light is the most successful media among all the elements. From the feedback, the light has the strongest link with volume, because they share similar features. So it makes sense to use one to control the other. Also there is no delay between the input and output. The effect is immediate.

Air In the experiment, a microphone were connected to a computer, and subjects were asked to use the microphone as a media to control the volume of the music. The interaction and gesture is interesting for people. They can blow into the microphone, talk or sing or tap on the microphone. But the link is vague and people get confused about how to use the wind to control the volume. As mentioned before, in this set of experiments, the purpose was to find the best media as an indirect way to control the volume of the music. I tested out temperature, light and wind, and the light made the most sense to people. It performed well in terms of effectively implementing its intended functionality with the input from the user.

like or not Hanxu is the art of language, a communication skill. During a conversation, to understand between the lines, people need to understand literature method such as metaphore. More often, because of the subtlety and indirectness, people need to understand none verbal communication language such as hand gestures and facial expression. And that’s why during a conversation, both sides have to have the skill to observe and absorb all different information from each other to act back accordingly. I want to embody this feature of hanxu into communicating to the music player whether you like the music or not. In these sets of experiment, I picked up three elements,

23


which are hand gesture, facial expression and body movement.

ing from the non verbal language from the user to understand how much he or she likes the music.

Hand gesture In this experiment, people were asked to use clay to make their ideal music player and use hand gestures to tell the player that they like or don’t like the music. People have all different way to “click the like button” with hand gesture. I realised this approach doesn’t fit into the hanxu philosophy- the interaction is quite straight forward and obvious. From the user, it’s a passive and direct communicating process. So I chose a less passive way to communicate, using the facial expressions.

Body movement In order to provide full functionality as a music player, the effective input from the user needs to be provided consistently to ensure the users body movements can be captured and clearly understood by the player.

Facial expression In this experiment, people were asked to listen to different musics, while their facial expression were recorded.

Body movement -hand Capturing hand gestures is the easiest way to get the effective input. Hands move a lot. But the problem is as the result from the survey, the hand are often occupied when people listen to music. Therefore in practise,the data input from hand gestures is simply not practical as the hands are usually occupied when people are listening to the music.

From the music player point of view, this observing of non verbal language fits much better to hanxu. However, from the experiment I realise that it’s difficult to realise, because there will have to have a camera which point to the user to capture the expression and the player will have to anylise the face in real time. How could the camera be installed in a way that it ensures the successful capturing of facial expressions all the time? However, from the observation I realise, when people really enjoy the music, especially music with sting beat, they tend to move their body with the rhythm. And that’s even more subtle from the user point of view. Most people’s don’t really notice they are moving their body until I point it out. If the body movement can be captured by the music player as an indicator to tell how much the user enjoys the music, it will fit perfectly with hanxu. From the music player point of view, it is observing and learn-

24

In the experiments, I attached a accelerometer to people’s head, hand and foot and try to find the best solution. There are two main criteria for the decision making. One is that it should fit into design phylosophy, second, it should be technologically possible.

Body movement -foot From the experiment, people who used to play instruments tend to use their feet more than other people. The problem for foot is that if the data comes from the foot, an extra piece will need to attached to the feet. It would be too much to ask a user to change his or her behaviour in order to use the music player. Body movement -head The head appears to be the most appropriate place to attach the sensor. From the observation of the experiment, it suggests that the only attached to the right place of the head, the music player could distinguish the “beat” from head and random movements from other part of the body.


Final experiment prototype

Final Experiment From the insight from previous experiments I integrated all the selected feature and designed an experimental music player with a headset.

e media to give the hint ing as th rround u s e s u

The user will use his or her surroundings as the media to communicate to the music player in a hanxu way. Buy picking up color and patters from the environment, the user give hints to the music player what mode he or she is in and the music player will interpret and play the kind of music accordingly. Use the strength of ambient light as a metaphor to volume, the user will change the light as a hint to adjust the volume.

e uag lang ody b e l subt rning and lea observing

The music player will observe and learn from the user’s non verbal body language, which is the rhythm of the head movement to understand if the user like the music or not. So next time when the player is plugged into the computer, it can recommend similar music to the user. The music player will grow with the user, the more it is used, the more it will understand its user.

25


conclusion From this experimental project, I have following conclusions: The underdevelopment of creative industry in China is caused by varieties of factors from complex aspects such as historical, political, cultural and social. By delivering the cultural uniqueness into design process, Chinese manufactures could bring some degree of change to consumers’ perception of Chinese products. In-depth understanding of designers’ own culture along with the unique perception of their own social and economic political circumstances would bring the design activity to a new level as it would transform the culture and traditions more fundamentally and it would also stimulate innovation and result more exciting outcomes. The outcome of my project is an experimental music player which embody hanxu. Hanxu reveals in the subtlety and indirect communication between the user and the player. The goal of this project is not making the difference between a Chinese music player and a western player from ascetic point of view. If so, the easiest way would be to use traditional symbols and colors, as illustrated with a wedding candle (see report phase1) And the result would be much plain and straightforward. Nevertheless, the project emphasizes on how to embody a unique philosophical cultural concept into design outcome. Further work should be undertake to develop the music player’s physical form.Therefore, the music player will be more complete in both aesthetic and functionality.

26


Reference bibliography 1 Lin, Yutang. (1948) The wisdom of Laotse / tr., edited and with an introd. and notes by Lin Yutang. The Modern library of the world’s best books [262], New York, Modern Library. 2 Mathieu Borysevicz, Denise Scott-Brown, Venturi, Robert & Clarisa Diaz. Learning From Hangzhou , Timezone 8. 3 Nakamura, Shigeki. Pattern Sourcebook: Chinese Style: 250 Patterns for Projects and Designs (Pattern Sourcebook) , Rockport Publishers.

14 Nevile, Ben. (2011) Cycling 74 Cycling 74, , . 15 Wikipedia contributors. Laozi [Online] . 16 Wikipedia contributors. Tao [Online] . 17 Wikipedia contributors. Zhuangzi [Online] . 18 中国元素. [Online] Available from: http://www.jvvvv.com/ [Accessed 20/4/2011] 19 blprnt. [Online] Available from: http://blprnt.com/ [Accessed 20/5/2011]

4 Willis, Ben. (1987) The Tao of art: the inner meaning of Chinese art and philosophy London, Century. 5 Wu Hung & Wang, Peggy. Contemporary Chinese Art: Primary Documents (MoMA Primary Documents) , Duke University Press Books. 6 Wu, Juanjuan. Chinese Fashion: From Mao to Now (Dress, Body, Culture) , Berg Publishers. 7 Bradski, Gary & Kaehler, Adrian. (2008) Learning OpenCV: computer vision with the OpenCV library Sebastopol, CA, O’Reilly.

Image Reference page16 http://ppppic.com/detail/100473.html?f=100 473&sid=932117c42641eab5184843359498d776 page12 联想 http://www.lenovo.com.cn/ page12 爱国者http://www.aigo.com/default.aspx page12 半木 http://www.banmoo.cn/ page12 品物流形 http://www.innovo-design.com/ Page12 Naturebamboo http://www.naturebamboo.com/ all the rest images: copyright Jieting Chen

8 Lin, Yutang. (1948) The wisdom of Laotse / tr., edited and with an introd. and notes by Lin Yutang. The Modern library of the world’s best books [262], New York, Modern Library. 9 古诗中的音乐描写 - http://gk.juren.com [Online] Available from: http://news.juren.com/200812/206006.html [Accessed 5/3/2011]. 10 Arduino playground - HomePage [Online] Available from: http://www.arduino.cc/playground/ [Accessed 6/3/2011]. 11 Extended Language (API) \ Processing.org [Online] Available from: http://processing.org/reference/ [Accessed 6/3/2011]. 12 Sensuous Surfaces [Online] Available from: http:// www.apdsing.com/Sensuous Surfaces.html [Accessed 5/10/2011]. 13 含蓄解释和意思---词语 [Online] Available from: http:// xh.5156edu.com/html5/245659.html [Accessed 5/10/2011].

27


Appendicie processing code for growing flower

void render(int step) { rendercount = 0; doRender(); }

class Lsystem { String axiom; int rc, rm, renderindex, rint, rendercount; char[] sa; RuleSet ruleset; Engine eng; Lsystem(String axiom) { this.axiom = axiom; this.rc = 0; this.rendercount = 0; this.renderindex = 0; } void registerRuleSet(RuleSet rs) { this.ruleset = rs; } void registerEngine(Engine the_e) { // println(“register” + e); this.eng = the_e; //this.eng.init(); } void recurse(int maxi) { //println(“AXIOM” + this.axiom); this.rm = maxi; this.rc ++; this.sa = this.axiom.toCharArray(); String[] ta = new String[sa.length]; for (int n=0; n<this.sa.length; n++) { String replace = this.ruleset.runRule(this.sa[n]); }

ta[n] = replace;

}

void doRender() { char[] test = axiom.toCharArray(); if (renderindex < test.length) { eng.process(axiom.charAt(renderindex)); renderindex ++; } }

Lsystem ls = new Lsystem(“FF”); Lsystem ls2 = new Lsystem(“FF”); int value = 0; boolean playing = true; int count = 0; Leaf[] leaves = new Leaf[50000]; int leafcount; int [] flowercolors = new int[1000000]; int [] leafcolors = new int[1000000]; int [] branchcolors = new int[1000000]; int branchcount; float startw; float leaftype; float leafinc; int fr; int drawcount; int bg; /* public static void main(String args[]) { PApplet.main(new String[] { “--display=1”, “--present”, “Tina_treegrowth” }); }*/

this.axiom = join(ta, “”);

}

if (this.rc < this.rm) { this.recurse(this.rm); } else { this.rc = 0; }

28

void setup() { bg = 0; size(screen.width,screen.height); //frame.setUndecorated(true); smooth(); frameRate(30); fr = 60;


// get fullscreen exclusive mode //setFullScreen( true );

setColors(); leaftype = random(100);

// change resolution to 640, 480 //setResolution( screen.width, screen.height );

branchcount = 0; startw = 15 + random(50); leafcount = 0;

// let ctrl+f switch to window mode //createFullScreenKeyBindings();

}

ls.axiom = “FF”; ls.renderindex = 0; ls.rendercount = 0; ls.rc = 0;

restart(); background(0);

ls2.axiom = “FF”; ls2.renderindex = 0; ls2.rendercount = 0; ls2.rc = 0;

void setColors() { String leaves[] = { “leaves.gif”, “leaves2.gif”,”cherry2.gif”,”flower. gif”,”leaves3.gif” }; int s = ceil(floor(random(leaves.length))); String toload = leaves[s]; PImage b; b = loadImage(toload); image(b,0,0); loadPixels(); for(int i=0; i<250000; i++) { leafcolors[i] = pixels[i]; }

RuleSet rs = new RuleSet(); Engine e = new Engine(random(screen.width - 200) + 100, screen.height, -10 - random(30), -20 - random(45)); RuleSet rs2 = new RuleSet(); Engine e2 = new Engine(random(screen.width - 200) + 100, screen.height, -10 - random(30), -20 - random(45)); rs.init(); rs2.init();

String bark[] = { “bark1.gif”, “bark2.gif”,”bark3.gif” }; int s2 = ceil(floor(random(bark.length))); String toload2 = bark[s2]; PImage b2; b2 = loadImage(toload2); image(b2,0,0); loadPixels(); for(int i=0; i<250000; i++) { branchcolors[i] = pixels[i]; } String flowers[] = { “flower.gif”,”flower2.gif” }; int s3 = ceil(floor(random(flowers.length))); String toload3 = flowers[s3]; PImage b3; b3 = loadImage(toload3); image(b3,0,0); loadPixels(); for(int i=0; i<250000; i++) { flowercolors[i] = pixels[i]; } }

background(bg);

void restart() { drawcount = 0; leafinc = random(0.3);

String[] rax = { “FF-[-F+F+F-]+[+F-F-F+]:90”, “++:5”, “--:5” }; Rule r1 = new Rule(“F”, rax); rs.rulecount = 0; rs2.rulecount = 0; rs.addRule(r1); rs2.addRule(r1); ls.registerRuleSet(rs); ls2.registerRuleSet(rs2); ls.registerEngine(e); ls2.registerEngine(e2);

}

ls.recurse(5); ls2.recurse(4);

void draw() { if (playing) { count ++; drawcount ++; if (drawcount > 3500) { fill(0,10); rectMode(CORNER); rect(0,0,screen.width,screen.height); } if (drawcount > 3600) { restart();

29


} else { ls.render(0); ls2.render(0);

}

}

}

for (int i=0; i<leafcount; i++) { leaves[i].render(); }

length]; fill(red(c),green(c),blue(c),140); rect(i,0,3 + random(2), (startw - (i * ((startw pow(startw,0.9))/hyp))) ); } startw = (startw - (hyp * ((startw - pow(startw,0.9))/ hyp)));

}

void keyPressed() { if (key == ‘t’) { bg = (bg == 0) ? (255):(0); restart(); } if (key == 32) { playing = (!playing); } } void mousePressed() { restart(); } class Branch { float xp1; float xp2; float yp1; float yp2; float sangle; float eangle; int branches; Branch(float x1, float y1, float x2, float y2) { xp1 = x1; xp2 = x2; yp1 = y1; yp2 = y2; sangle = atan2( (yp2 - yp1), (xp2 - xp1)); branches = 0; render(); } void render() { float hyp = sqrt(pow((xp2 - xp1),2) + pow((yp2 yp1),2)); pushMatrix(); translate(xp1,yp1); rotate(sangle); for (float i=0; i < hyp; i+=3) { branches ++; rectMode(CENTER); noStroke(); color c = branchcolors[branches % branchcolors.

30

}

popMatrix();

/* Tree Engine */ class Engine { float xpos; float ypos; float angle; float unitsize; float anglechange; float[] xpos_a; float[] ypos_a; float[] angle_a; float[] startw_a; int acount; Engine(float x, float y, float a, float u) { xpos = x; ypos = y; angle = 0; anglechange = a; unitsize = u; xpos_a = new float[1000]; ypos_a = new float[1000]; angle_a = new float[1000]; startw_a = new float[1000]; }

acount = 0;

void init() { } void process(char c) { if (c == ‘+’) { angle += anglechange; } else if (c == ‘-’) { angle -= anglechange; } else if (c == ‘F’) { float us = unitsize * random(1); float tx = xpos + (sin(angle * 0.0174532925 * random(1)) * us); float ty = ypos + (cos(angle * 0.0174532925 * ran-


dom(1)) * us);

float rot; float unitsize; float s; int id; color c; float scl;

stroke(0,0,0,70); if (branchcount > 40) { line(xpos, ypos, tx, ty); } else { Branch b = new Branch(xpos, ypos, tx, ty); }; xpos = tx; ypos = ty;

Flower(float x, float y, float a, float u, color col) { s = 0; angle = a; xpos = x; ypos = y; rot = 0; unitsize = u/4; c = col; scl = random(2); render(); }

if (random(10) < (2 * branchcount)) { int lc = leafcount % leafcolors.length; Leaf l = new Leaf(tx,ty,angle + 90,us, leafcolors[lc]); Flower f = new Flower(tx,ty,angle + 90,us, flowercolors[lc]); leaves[leafcount] = l; leafcount ++; if (leafcount > 500) { leafcount = 0; }; float dice = random(100); if (dice > 90) { int lc2 = leafcount % leafcolors.length; Leaf l2 = new Leaf(tx,ty,angle + random(360),us, leafcolors[lc2]); leaves[leafcount] = l2; leafcount ++; } } } else if (c ==’[‘) { branchcount ++; xpos_a = append(xpos_a, xpos); ypos_a = append(ypos_a, ypos); angle_a = append(angle_a, angle); startw_a = append(startw_a, startw); } else if (c ==’]’) { branchcount --; xpos = xpos_a[xpos_a.length - 1]; ypos = ypos_a[ypos_a.length - 1]; angle = angle_a[angle_a.length - 1]; startw = startw_a[startw_a.length - 1]; xpos_a = shorten(xpos_a); ypos_a = shorten(ypos_a); angle_a = shorten(angle_a); startw_a = shorten(startw_a);

}

}

} // return(false);

class Flower { float xpos; float ypos; float angle;

void render() { if (s<1) { if (random(1) < 0.1) { ypos += random(screen.height); if (ypos > screen.height) { ypos = screen.height - random(5); } } s += 0.2; stroke(0,0,0,5); pushMatrix(); translate(xpos,ypos); scale(s * scl); for (int i=0; i< 2 + random(10); i++) { fill(red(c), green(c), blue(c), 80); angle -= 3; rotate((angle) * 0.0174532925);

3,3); }

}

}

}

triangle(0,0,unitsize * 3,-3,random(2) * unitsize * ellipseMode(CORNER); ellipse(0,0, 2 * unitsize, 2 * unitsize);

popMatrix();

public class Leaf { float xpos; float ypos; float angle; float rot; float unitsize; float s; int id;

31


color c; float scl; Leaf(float x, float y, float a, float u, color col) { //angle = a + 90; s = 0; angle = a; xpos = x; ypos = y; rot = 0; unitsize = u/3; c = col; scl = random(2); render(); } void render() { if (s < 1) { s += leafinc; stroke(0,0,0,5); pushMatrix(); translate(xpos,ypos); fill(red(c), green(c), blue(c), 80); angle -= 3; rotate((angle) * 0.0174532925); scale(s * scl); if (leaftype < 80) { ellipseMode(CORNER); ellipse(0,0, 2 * unitsize, 2 * unitsize); } else { triangle(0,0,unitsize * 3,-3,unitsize * 3,3); } popMatrix();

//Include the I2C Arduino library #include <Wire.h> //7 bit I2C address of this sensor #define I2C_ADDRESS 0x74 #define REG_CAP_RED #define REG_CAP_GREEN #define REG_CAP_BLUE 0x08 #define REG_CAP_CLEAR 0x09

0x06 0x07

#define REG_INT_RED_LO 0x0A #define REG_INT_RED_HI 0x0B #define REG_INT_GREEN_LO 0x0C #define REG_INT_GREEN_HI 0x0D #define REG_INT_BLUE_LO 0x0E #define REG_INT_BLUE_HI 0x0F #define REG_INT_CLEAR_LO 0x10 #define REG_INT_CLEAR_HI 0x11 #define REG_DATA_RED_LO 0x40 #define REG_DATA_RED_HI 0x41 #define REG_DATA_GREEN_LO 0x42 #define REG_DATA_GREEN_HI 0x43 #define REG_DATA_BLUE_LO 0x44 #define REG_DATA_BLUE_HI 0x45 #define REG_DATA_CLEAR_LO 0x46 #define REG_DATA_CLEAR_HI 0x47 float redFactor=1; float blueFactor=1; float greenFactor=1; //initial darkLevel; int calibrationDarkness = 0; byte calibrationRed = 5; byte calibrationGreen = 5; byte calibrationBlue = 5;

} } }

Arduino code for color //Configure gain here //Higher numbers = less sencitive // 0x00 through 0x0f int redGain = 0x00; int greenGain = 0x0; int blueGain = 0x00; int clearGain = 0x00; //RGB LED pins //Digital PWM pins int redPin = 9; int greenPin = 10; int bluePin = 11;

32

void setup(void){ Serial.begin(9600); Wire.begin(); output)

// sensor gain setting (Avago app note 5330) // CAPs are 4bit (higher value will result in lower

int ledGain = getColorGain();

set_register(REG_CAP_RED, redGain); set_register(REG_CAP_GREEN, greenGain); set_register(REG_CAP_BLUE, blueGain); set_register(REG_CAP_CLEAR, clearGain);

set_gain(REG_INT_RED_LO,ledGain); set_gain(REG_INT_GREEN_LO,ledGain); set_gain(REG_INT_BLUE_LO,ledGain); performMeasurement();

int red=get_readout(REG_DATA_RED_LO); int green=get_readout(REG_DATA_GREEN_LO); int blue=get_readout(REG_DATA_BLUE_LO);


Serial.print(“\n”); int m=2000; //bigger anyway m=min(m,red); m=min(m,green); m=min(m,blue); //Serial.print(“m - “); //Serial.println(m);

redFactor=((float)m*255.0)/(1000*(float)red); greenFactor=((float)m*255.0)/(1000*(float)green); blueFactor=((float)m*255.0)/(1000*(float)blue);

//send to LED analogWrite(redPin, map(redValue, 0, 1024, 0, 255)); analogWrite(greenPin, map(greenValue, 0, 1024, 0, 255)); analogWrite(bluePin, map(blueValue, 0, 1024, 0, 255)); //hold it for one second delay(100); }

} void loop() { int clearGain = getClearGain(); set_gain(REG_INT_CLEAR_LO,clearGain); int colorGain = getColorGain(); set_gain(REG_INT_RED_LO,colorGain); set_gain(REG_INT_GREEN_LO,colorGain); set_gain(REG_INT_BLUE_LO,colorGain);

//reset the RGB (and clear) values int cc = 0; int red=0; int green=0; int blue=0;

// Take 4 samples, and add them together. for (int i=0; i<4 ;i ++) { performMeasurement(); cc +=get_readout(REG_DATA_CLEAR_ LO); red +=get_readout(REG_DATA_RED_ LO); green +=get_readout(REG_DATA_ GREEN_LO); blue +=get_readout(REG_DATA_BLUE_ LO); }

int getClearGain() { int gainFound = 0; int upperBox=4096; int lowerBox = 0; int half; while (!gainFound) { half = ((upperBox-lowerBox)/2)+lowerBox; if (half == lowerBox) { //no further halfing possbile break; //no further halfing possbile } else { set_gain(REG_INT_CLEAR_ LO,half); performMeasurement(); int halfValue = get_readout(REG_ DATA_CLEAR_LO);

//now, divide the totals for each by 4 to get their average. cc/=4; red /=4; green /=4; blue /=4;

if (halfValue > 1000) { upperBox=half; } else if (halfValue<1000) { lowerBox = half; } else { break; //no further halfing possbile } } } return half; }

//take the values mesured from above, and multiply them with the factors to //find out what value should be sent to the external RGB LED to reproduce this color float redValue = (float)red*redFactor; float greenValue = (float)green*greenFactor; float blueValue = (float)blue*blueFactor;

int getColorGain() { int gainFound = 0; int upperBox=4096; int lowerBox = 0; int half; while (!gainFound) { half = ((upperBox-lowerBox)/2)+lowerBox;

Serial.print(redValue); Serial.print(“ “); Serial.print(greenValue); Serial.print(“ “); Serial.print(blueValue);

if (half==lowerBox) { //no further halfing possbile break; // gain found } else {

33


s e t _ g a i n ( R E G _ I N T _ R E D _ LO,half); set_gain(REG_INT_GREEN_ LO,half); s e t _ g a i n ( R E G _ I N T _ B L U E _ LO,half); performMeasurement(); int halfValue = 0; halfValue=max(halfValue,get_ readout(REG_DATA_RED_LO)); halfValue=max(halfValue,get_ readout(REG_DATA_GREEN_LO)); halfValue=max(halfValue,get_ readout(REG_DATA_BLUE_LO));

unsigned char read_register(unsigned char r){ unsigned char v; Wire.beginTransmission(I2C_ADDRESS); Wire.send(r); // register to read Wire.endTransmission(); Wire.requestFrom(I2C_ADDRESS, 1); // read a byte while(!Wire.available()) { // waiting } v = Wire.receive(); return v; }

if (halfValue>1000) { upperBox=half; } else if (halfValue<1000) { lowerBox=half;

Max Msp code for motion detect

} else { break; // gain found } } } return half; } void performMeasurement() { set_register(0x00,0x01); // start sensing while(read_register(0x00) != 0) { // waiting for a result } } int get_readout(int readRegister) { return read_register(readRegister) register(readRegister+1)<<8); }

+

void set_gain(int gainRegister, int gain) { if (gain <4096) { uint8_t hi = gain >> 8; uint8_t lo = gain; set_register(gainRegister, lo); set_register(gainRegister+1, hi); } } void set_register(unsigned char r, unsigned char v){ Wire.beginTransmission(I2C_ADDRESS); Wire.send(r); Wire.send(v); Wire.endTransmission(); }

34

(read_

<pre><code> ----------begin_max5_patcher---------3174.3oc4c08aiiaD+4j+JDLt9RQ1r7CQRwhhBz25C 8sh1WNbXgrsRh1UVxm jbt8tC2+6URijsbBkMkyDZFb6l0NVRVZleblgyWj6ue6 MKVV78jpEA+sfeL3 la98au4ltC0dfa5+7MK1D+8UYwUcW1hMIUUwOlr3 N3b0Ieut63LJY3Xoq6NR wxu9INa3fOTjWmGuIo6T+yxz3rgyjuaSZdVRc28m0e vsw0qdJM+wuTlrpFnO lfeO4t.pp6MN6dQyGhtmD7SGtQE6pGtSzQO3pzeq 6ASYMeU3vvUV+qaSf69h EA+T6Y9iaus8k6divA0.XPIHhFQrNXHjH7HzHO4WZ XzWAFYEwqWFm+nQLgNS LgdJLg0AFJR6axtWYDzvjNV.SbYUwt75jx.RyekFAGxLAGwI.GRXm5SqPxcA Qzy.NgyDbRyqWbWibS++Z+HlP02R9USlWTyDe Hm.eh5zjn51WE5V8I7gmW+F lfzukEr5oFgzDCPUHl1dHc1d5MHKYmQThMWaO2gr8mw5YlLLGpwSMSyIfZlv qUyVtqttH2.VHHy1pKn3n1ypVYzEQqqUYoqSJGH68nHgrGFGyehgKbytrNNn 4xnyjkoDUmUTduh.LjGdAb8h8egGZlkrt47a208PnW. PzbKZdr6E+KSqVEmk .7n90PQDGuodojPveDvlPn7RrIPuWnEzH0TfUGD0J 1e4xJS4u1yEYA+fIaCQ g3Y2bOHAROgcZLy0osyAR3hKU0wk0lfEMdvhlCvA31FO7RPEm4XeUcwVC3gl h3zqZAnC04JBm6E3QcwiOlYxwBJkO6YL. ePCC4usoLv1+oedSRcYQiUcirIh FBF..Y2aR9kDnx4rCfdzJaKS1ljuNnLIdsIM.FhAxAyqxAmwiXHGHGpvxWSq u+mqueSwyolTOzbLgkNaiBhpSrIBY+ta3jurItwsgue4 dfOoek5v4xspdOJ4 rqkikSLhWssrwxyCAe9+VkTV845z73OuYK+yqJxJJ+ 7eY8m5949lCYBGDyTd fe93vz.1HH9gdxtMKO3N9XVWhmpfFR+EErcdVNmc YgY8FDclDDTWHHzbnzMM d2elrXHuHbog1Gt4dDTE89BUj2JTIcNTMwLyweqK-


2Fl7aQqw2dCLMjj3ySKW kj0P2AGJ.w3fWPLWXbYHjG99zFhqcHHq4tn3DpHDi yEbuk+wtzDJMhoGgJgr B5YElXlQ4pTHJjvfzevodTTtSF5Smo6WgGLLEQzP0M0GRBxIDQHS.GNfmI3w yfSbrdCENjmmLaFQyN82bvlO83Wu1oxXavxrz7uYhCQLSU.uCI6MTfrUM.RF +va7RD.hdjn4dklk7bSPXoMwbd3QbyhCjnnSpRCdr. yRGFMhHav2GyJV8sj0 iDwtYw5jGly8nXaR9gqu6JN5kiuxz7skIUI40w08D93ma7tr5ubDHsuPFGe9 GhWkL4Wd+.6+Kobcbd7hgK5wxz0E4sjwQe21CO7. a60BHhxwTd2UjGu0vWtt nHaYb4yoUoKgBNrejnQ5Mtwa735j5TfhXj8euzMfUlw2qj73l6wSUqJKxxN5 VAm4YCmYcxyoqR9kz00O0WQmQO9C82xHImizqN 53mR+5Xcr+ZaMlHiO037Ex FehSMhLkB2jFMIP4lfHV.ku1IO1ORMop2qU+NfTmw pzMCVlfe4tKDM6XxoPL 5jHBwJDQsWn8EhtmFPltlbcmdUwlMIfL5hEHBEGME zq67iIwB5owB5.+SLm0 r4BFnKBbBEJH86mPoh+doS0WtdJjIMnvKuS5TibVGI DEdDS.Yr2nfTHgXsVE wApMmzBxkZ.g9Rl7sY.YrmKVAFGljswosolupitaOuYTppXW4pAJXXFnfi4g 0IUsYqdvqiebuVU.8nq6oz0qOdJdHsZq2Vzva8zmkx vylroVR1F3uqJcOCz1 inZhkjseA1bakQHHR18Grg966zn3mSV+klGSicjuDW WWltbWMn8dTLJmxa7S 5OeSfIKiy5C8Y+sXwrb223M1lnKFe9aOfD3DdZbcQp oXSQr3XBXF8PlU8izb CNMKspF2Tt8uLgGlqX1wiwVGsN3ebuqN8okUMODg3p1r4eaBMTXhFPSGQoJO B M N c s L L 2 7 p Q Q 3 k O t P n e K z V 0 Vu 7 K r V F u s Z ZLYl6zyNycfy9P9bXgCu5rL2Mkn uvTh2kHtNZXPFKCC8oxyLUQfUB7Du4Pi0IHQevZZ. UHh4bWCEmC5tF+CDlrC hn5YOdCo+fyTWqNHZJc7HisXHGekbBwiTxGBC9U qaESh7X1b5RITcd1PQFcU cllhiMsXlTLLaGe5HNlEd843uahioXZaGXX5gEwkaX3oWIM7469EjLeHXEgZ +aW8Vd7SF6sHgDy9nABKgnOXvB8hIh5RsqptLIdSvmL0gQBE5HCKpSKVw8lU a2TSt8Cztb3aThIB+NuBpNqj5EMPxDqEMiqDsY6Oif. lyiflkAZL5PB8Jury lp0pRySBH2aPJPRvKMOCRAQjKecm4x0hp4Exrjh2BYlCMzZzGf0w7jAyKYyd tSn253D0UZMEMk0PSlAkH5o+.iqH9e2VBE3kYdtAYH9fBjbGE0aZ3xok3Ey1 i2dOlzPSXoFd8Z25YwKqLweHt3OF3bd+hv9cowyvC P96ATiB7LJ9tOCQ5FR8 EHYVVEQzo4PnIqoQhO.aVPMpv7HS. RD9QQHBOj1O+cQEKmet9zJn+oI90ZJt umlLsqifYe3BLOLUff9AYiOxzN5Cd6DKbHaJLlzp3l8tchEE4BmWjRBOzP1g BWl9nox9W8SkIqepHyzBGmiXV.Y8qkdF0pkikKRCHKZ1IuseGt6Php8jE97z 1xXgXV5BHDNvRtOYLapxyQQrD78C9LnGT8vZTZVz3w3ZiaNHXt64ziLv5v3r qVnq79+nQG9wTIALNzuiG50Q8+OLIXfubw39YvGB 843ciqwN9QvzbAnG.yRf t4BD1wsNQATLhNbMlhFvlIkVX0JT6pmb3QUUxzdGBOBenAlk0ippzzyxpPWs

gFJ9PMK6WqB1Tz1hy+mj7pFN59uZJUaTI9.EEJ4D0Ol00bU1Dl2wGor42uHf 8Bt9su6NhF2ENA2QufspQX2Wi3+b27SJNrwpwEW Eda5c+pKbkwS7sP.SqKhM 4YqBuJ5123w85fReIS1SlqRlX96FHv99W3GkTUx3nu4v.Qw4+oprJokIChCz RiEwghX+IK66OQvkL86iSInhNOTVro5W2rrHy31WO 1PCCZuOE2m24oZbh+wx hcaCNTP6wKWC7zj5wDvKEEw2CtoJIKvXZQjnCIjdu .7pciqIfkc4aiW8s.x8 vOlJD.1pQbPjIRcIqvGq2jtewufPNTdN9vpfbIr2l2elm Zgyt8eygcfkHEQD EcmweabCyc1cIcFlsk8PKaLuEfxxGOl0jM+Qcmwea Lq458V8oGrdzYCVRz6g 99M.g+7LXU5pAKNh9G.Ky29dg5ixXU2M73s7AXn6kKG99AvWsL3a2O9Nr71m ZMvKN5hd05e27Ze+UhS1RSu3wYllzNkjX7Onvjz+HI FwozTDyBZRv8OZR4Vb RRsfldAg+dSSsaormWdxspcJsMicQtklH1L14VaAQ VIO4VbJxJbh5VZRZCMM SY7nvtx4y6V7FxCe3sRqp2AZ8sRS1Xi3EDtSnIJx5iQ 8+2BWW9r6Gfa+vajV 0D+SOUZCMobqblzF8z1sYAW5ukUtkdjr36NLYijuaG 3rQ91sQSXUPWN1MYa7 zxsVQYVEMga8bmaikI2ZXhYi.N0sN0vrI.GpaClfZyPG0wALa0XmaU631DfS nasNERrbhNGJh6cS8ZS.WT2NSG0loUnt0oIVnszjCG5rglXtcriayXG2s4gk ZimSbGKiayPmaEwE1LshzsS0IrYnS3VZRZiHtvsS+J swqWgaEwE1fSRh+ki. gaMOIsIdboiyagMNpHcq8IoMS2IcajcLpGN1Yicbla 86UZ0TvMWCyuJ+gT4e kjQ5XO5rkjbmiugVJL4P4aqB+0sllh7uxEak6bT2N8q R5cwjGYUNL09Whvbr 0RaLCPbNIctBYvjNmjXmijbaRU0VYszwzjMlK0tUmSqrklbmsIszVZh4WxSZ 2N8q1lHnzt0KEpck90woVkZUdLcLToo9GMEo8PZxFIpH2JPE4gxSBaboKxsz TnUlnbaxKzV0F2t00fPqz6bbhwswc7PsGhSJ+Cm51 mTcZrT1PUZGmmGqJ0hq AJqJOMw08DhUkwm53lL58t2BZ9veb6+2GNJwT -----------end_max5_patcher----------</code></pre>

Max Msp code for color detect <pre><code> ----------begin_max5_patcher---------1 8 8 0 . 3 o c 4 b s z b a a C D 9 r 7 u B N Z Z u 4 H i E u H Yu 0do26L8TmLdnjnkoCenPR4XmL4 +dIAHkj8.FBRCAizlXKIRoP8seX2E6Kluc0hkqKdJtZo2u48OdKV7sqVrPbp 1Srn63EKyhdZSZTk3isLKtpJZW7xqkuWxVwYKV+v Gn98m7th757nrXwa86kI Qo8uS9grj7z3Zw0B2cx8Q0atOIe2skwapkXAGfWgt1i46KdB09HDrB48wSWn hC08WI3ru3pjuJ9hg1qf7zxOY8y6ikW8kK89X6678qt p8gq0Tzyi+Rib1KJ0 wOI.6x8kI40p3C5D4CXX9.HzVJfFxZeRd.

35


FMHefFfOlgP+p06iRMnPhIAlSC ..PHpRAFuh4tJ.oEQaWGkuSkN.XPc.IiHrH3nQz. lJgHvuIIkp3zFj2rxofU .h4zSHLhfUD5IrvQnE7bnkqMr9xmheVkwyTcehFkT5dLr034GPJzIRJB2cpd Zdjzgr0wkpHDt4rcnfP+.7wm1OwfpIcbv7MhpK1sKU 0lpD5TEUrvKAEw5kQs 7SnTjLoReYT91hLOtJYzftCjBL0Wn4yAC6kzzjRVbcYgGfPHUzB13zBU7jO3 Ladr9PccQtJgGlpdOASkl3n2lh+7EloDpDMv3aAFF3 PgJMDWnRQmxMHWHW3A 5OAwMtKpVoKelIUMDa3AbhV4MXG5XPidb3jM5A4 xcH+8xnevvey25EoRFCLW TMAx363L4dd1Kovg1iOdSbxiwJkafZvva4BWc. NTqf9eWMx+Zp2l6aztTYoC XSZoKc+yk4GhMbDtyOInAs1mrwNUtAOl9dYqOnnP QSUVB8k0yI3cyu0focEZ bGTc1oNWVWCXxlTWnzy8TSPmLFw.Axb03tRZJClFJlMukdhuakEZWBWpjPCl DpT1kdhYf6WotVYzKxKjqLOTfYZGBRme9gWF+AFk btqrHq54r0EopXFjoYFL RRMDGOjlckEG16woJHk.SaGALQ7s9HmIjlgK4sGnxBhabJQFCDk7yP4tenx6 u9y+315hau+P7pGpTQPfoMjnxjh.D0ksjNjuOZym7P qj+nfY7MYODwxsjE9c CXiPLDUDCrhExf.+gXm6RKhDNge0KlEo07OsAR8h 4iQkGk+0UahNEmx8s74l hzhRIJPqB7QrffqU9J3LIttLQdkZy2bUnhnBvli+wx. fo3o0Ch06donwa9i+ 0Je04h17V1levECuXsyZKVFrgQfrH4+uawpzVKVDjI 6LN8+vKVUeoUhUr2.6 XnVaJxZnkj0IoI0OeNYoc9nxsIkQZALYgVP3QoPkAU8Fb4OXUIX9lrYvxxGF 56lkkXndmzHcdpBujQMXYD6xCAGH6hrSL3UCRHQO4oZ9RXFLWdJoiPBOEws6 RHCogXxVIyCOmPbeMDUib.CLnIib2mdSFhKOqhaJNjWGW5gZ9qxpfMUWIref kSWJFREkfwpC1LmBo9emckBGtajSdDD5jXHDduppeUZx1S6edjFQni734B3Q WEYGRqkQpgfIJybPVnW3rtx.zYHzKOEfUa7CMu+9 ChuC3MGf6nAixMXOOXxd 5PkiZ1n01G+NEU4PdLerH06WT4ZvGYNWl8bTWWv f43xbLNxrzRUcTopg7FBM XnFgxRWEDdZXMb1cVqpK1qhOLX4eocELIP1Ya2Xi0AaQFbZpl0d5U76pUI1s 5R1mksIinraPfIy1ni.BjCsvr55wX9ALd+x1WFuuc5dJii 1phfLXlpcC0QWN HAXWtV1OjTu5y0qxJdLQo4A2jzhbfBvhMW4AFNA9FI41rnlfFd5BL0KvLFrU tb+.maF2D24S24cyeWEWVcScRdzMY6I2Hpp1M+5 1OH9YUyoTkAl4Flhdqjtd 8vPtgYxPkxxf2VXTeotuuiVIqgGxnYxAMmJIqIv9e77A 1UfuoRKMPu+h6NLE 9 h x Tc l N u A l h 6 H C s 0 9 n O I p p g x X V L t u F h T C i e Yc0HtnKSSxe8snq.Xsm+k7TUw gxM8Wp9aHSuSXaabUqS55jlclN8gZmsqy9P2mrcab945MYIa2Wzrt0AhAV0z ESs2RjihoWA7KMlZCceTLQsKlZue.GESuB3WbdRGHgsKjPZfIlcW5ZB00CFA R 1 G Q H m B Q X s Tu Q V E S Z 4 s z 2 t z D S G LY W u . XcV4rquRMQDXuc4zDQX2x2scW1.s7 AvsKlzJV.QUvrJpnNHUE3fXJz8vDWGL4a2s57QtGOg0ASuhLuzXhoiaS6FwK

36

C6dPRGuS1MHEFw8fjuyAI+WDBx.pRSTWp8dXg0V NVYokj+2Oi3HC.1wRqBOQ WVfOU.OnqaqniGY.vN5Z8D84CT3LlEvDSwrLc1I2tI9nEj31MdUtVktJz8vD 0tAW.5jzpkisPqn5YtGMYWsIhNgphsbkhzASLrChIvA wD0Awjci4gpSwPIVt oHAtGlzpjCBLYuxpQXNWtOZAIhkqGpVAEX2cfID2K3I8TwsLOoS58D65xjnE OY4F+oCOYWOl53I.rb+izYkyxwDnUI0nNXVTuEL0bv 2u5ecBCR8M -----------end_max5_patcher----------</code></pre>

Max Msp code for controlling music with ancient light, temperature and air <pre><code> ----------begin_max5_patcher---------2585.3oc4bs0baiaE9Y6eErdRmIoUQF2uz25Oh9TmcxPIQKycEI0RRk0a1Y6 u8RBPYI6.FAJeDLTahsEMDs347gCN2A9iau4tEUOk0 bWx+H4embyM+ws2biY n9AtY32u4thzmVtIswba2sXWaaU4cyruU9JyfUK94OKD6GrbWQd4lrVye.dX vsosKeLub8WpyV1ZefBJdNZVBiH6egf1+yje5vGT0t1 W+IYGp822lY+XtaQZ 456R9o928Ou819eLySloHqoIcc1dBuM6oV634kIHW 7Ha+fOTU1VlVXHg69m0 4oabx8jw4dtVa3dtx7hg6wpSx88O3l7uYdvXR2ezHfBv.R5SIZWHBWAGhHXB KhXdgGGHRY1u0wmeGfrIuLKA0IthbgJL4DQE53nB SxLnBi2+hPehUIjohJyf V VA q b A I D N f B J Ty Z F J m X d g L m G w K c v N . CLEP8HJiVT6hlHAKFaQSU5Jix5uGQn 5IhH+.6Jbod.K5Wv3qYEeQjy2ZSa050axbot.MYVTYXNo5sY4LurEzI3t6Iu X W Q h v A S J A z R AV Y U C R M d N H o . q S r G V l 8 F P mQmnkS1GI67LwJKGQSzYs0UItTsI AzEoAlmalr43nYg7HfhQr46ADJ7x8H5Ak8.hHPKkjtnwEffgSU+.ffs9HQgV W+YCHOrop6I6JBBEfLu15hLicveY.0B1wCoF8fvGeE ZtKnQB2BEJmdvEfHwo nwiblO0Ydh1vXr2q3lGW7lBo3sQiuPFqR2iiBD3PApMMAB90GJ.nddJSdshB H3PAhlckhBb.CuivrA1It1r5IbY0iCXdQnZadQXWCoEYtqnG3H3PChld0fFc xutfCl.P3fYgC9AP48OOQ6JVjU6hw4mo9htg5y. Q+PneT5SLXASoljNjgzaz OjFcd4T370pLp6iL1T0fJsYLgh4uWNPNdDzNq6BCz7kZCJvVrAJMVBYbTqFT kKDg.X5zUCoSmdMX2vcAWvvAGRqWVTa0IicCGtxkNfYZUZc1JtJ0xnlMn.Fx w d w. 9 k I 9 y 2 r 8 f w A A . i 9 b + z u Tc s A B . lHh85GiVPvswzrm1Vmzotb9m+3G+3Gd f+4O7.6S+stqvcWQ9zmtu6Rp4xj+dR+64BFmZ174m zvKCYa2Cl7br7hmy0br RFJEJB.Einh2rXzoX+K3BJIfEnUQhejXYUQQ1gJ577x p0YsIsOlkTVk23pFe


DHS0A5PHaJ0IfowhH4Bv6axW+XaYmKI+EW.. fk3PfMFgsEzGeRIk..AEoa21 Qie7oYoyVLa4rUeJoanjmRdntpHIcQRaUxxU6+y5aS nkU6JaOVN9HrBPYElE prI8X.p5Cy+xCUiX+Yas6BhpgrDXXCexUrCY0HLxG SocezRvqItRbMTYK8jq rE1F0E4s1YKWfZV5h+.rYGvCNDMrxMpajKiqkd4ToCPSgfymxgRfqsPGlFOt TN5ZBLa5dAXyVKgFYoqacZqytbBP0cXoMe0HpWJ3eeSFSm8tr5ultIwcRpjP VpG9gJAJOqNk9xH1m8szUK+O64lulV+Laltqs5wrM a+xpzkthuX5lJrou11i G1tit+mmHHhuiOaxWW1i+OeErU9jAp2NB6LM+xE2 DH0+raYvyx.Kq1rp66pZ 6CvPzn4BtRQXyr+J9HVnMaa9KueQ+cIIZFl339OFp e1a58KDMbLB8if4eKst 3EONEGoUyN9hW8DGehwVUIhQfTiO4xwEqewClgjJFclyqN9CajoryZppYS9p Cg6uWHg+rByisaQlrcKq5IL9He4vryvvEr0XpsJ0U Tq.tkMFxuAwZv1VnoHt MMGuYdIvW2ML5Joadax54xjzDsvo0bLG7Dhgo5C Y6.9LLCJ7zmtileuXQ0FW XCBbrgvzd0q+uqwE8sMIqqq1sMQ3LvG3WLYC7Q hhlME1nKl5cJ1U6wAOlXaL LFzaJD6FWBXbYW41zk+Rmgd6WtBZ.9URRqyJ7S. Pz2j6iu5B.bp93fIVzrL8 vNr4wd77kNwIQcNXNy4Uuvay5b6mTexAmqcXADvhoJrqVo3o04huxMQkn6ex YNu5XVKzd8O9j05fMYAY05r6H6+uaxpNTSVT38Q3 +QmrFslrb.MNLDrFQPux 5zCt.7cTEQDoc5wTOuJ3PVehAqWD8Ux4UA0EfPgr gpeAfPia.YLID.6iT8PO BJuRDPbsK04.1Ho3gioBhHhDPFIPDSSJjUmfRvIbW YBBvFAi7BAE0oxDD6Ly 1wv2mc1xFsBdD7YteMIp2sJ34NQu8cGniT8RdVSQwtMsVO3P3o1OJC5An.j8 28R.89R089a2YdF32riumzIUAjMniEPDHrWYE98q5 Mt0X90pMIev4I9.f6Yq 8XzfJSb7TXywfkl1zZWc4DVCXwdQF3PfUQzd2Zb. oZqK7.vreNDjh.KOrEdd 2wiQOzWvGNsm7+XsvFHqBEWG6K+psTQTm0CA CYvFpAId6KWj95A7JFssNaaV 4pj5rzUt.H.iVGKsG5WVMjJRLWTjeNuc9u1Nun5q4NWd.Y76R6VCma6NFEvw u2wIeoHsyogmN+BALdeggOydkjwis9Bqwz5uOjb+ +pIqt4917xz6K1Ru2jss 6+qq9r4q4cC4JBL3pC+9UIH0QcV46+xjQ2zyPdRQ LrCK3Wa6aqK599d3bTap vxQ66aZzfTjKJRgG1h3Rw4hThHYavsM8WRP8+2kN WH00X6CwgFy7xppw7gZ1 bIu5ra1PX8i+RbpoZW8x8eT6OwISNPaqxZ5UR2l2Y Y5vM028OGcSOluZUV4w x M E 4 q 1 V 0 M u M P D i L q 4 K M 0 e D f d R Z B G VZ5UON2zzq.yKMMQ7gl56NoPhSbOnIQP IIkOh38wrDPZpuy3O8xtfRRbgGjjgtwgSB2mYtvNw4i7MSGV8kQHMw7QGdeK wGRcS9HNwkgcUmOJBBqoNNM9HIV7QRj3SCNN5HIhOSbg0zKwKTJvzjOtnHBq FboWtMEVW4D9XUQFVuvw53CmvpHjlvrXjn7JFp. Gc.VFgHkW3TX8wzynCHgy SbOonvEAkOJBHg0kWhWR2gUItOw9pBNEgiJJB6iCAgUTxqfmPAmjN07FQDbR hbJRJrwEP8QVhE1H5XdE2aXEvY9DkIMvom2GaJz-

vJOw7w8DZfcOwqXeIwGMQ UQHNE34NebHfG1.x4dkjfvZsi6U4dBrLtO5mDgUmovGaKp.O2o8klBW3JBju zT3BpSf8klngilH9RSrvQSdUFp.mvPenINJBoovV1dgOQRIvwGNIjwWuDHBb lB7wdmLvkI2GclRZ70fC5vttS6iLtNrYeVy7sQPBHMIiOZR5CNoCLM4US7D3 dcxGeekgUmozGcl73qBKgU6jOJmvxnijzQX9KHgcli3CNQCq7M0q77DVbh5U dCYAMNJJwWZJbwaRo9RSArXqReoo.JOI7klBXNUhv0cbU7QSBel6Dr3il3A1 dmW44Iv0Iyq9o+sjmmte4Ou8+Bbwl0DD -----------end_max5_patcher----------</code></pre>

Max Msp code for pattern <pre><code> ----------begin_max5_patcher---------1664.3oc0assaaiCD8YmuBBit.Mcci4UIp8sE62vturnnP1hIUs5Vkj651h9 uuTj1wIoTwT1zrLnn9BkL0YNb3vyLj46WMa9p5sht4f+ .7ufYy99UyloZZng Y699r4koaWWj1ots4Uh+qd0GmuPeodw1dUychBw 5d.Au+J4Yp1k26a46a615 p9pzRg5J+YadZw9qTsoLupPzqdF3cM1j1u9C4U289 VYWqwHlPtAt.f3wCuwR FdECuABd2gNpdS+S6ogGbW92TOXDV9izMquy9u1 Hz897UoU2MeAX9bv6Ftie b0UCur37nlOI9pARIdhjB73jRDcGovdVRgNQRIupefS942NIRpTz0kdm3mXI jANJxgNNQJNhyFdkfGnHDeTJBMQJxo9KMsJN9mXCFbhzAZb5.w4CDAMVMChP Ox7H3H7wIXzq1z2WWYv7nIS1Hhi0il38v+YMBzyNq +h6LScZXP8HFBFPtyiO xFO4Q1Ds8w3g1HKzj84v3THtdMMbxKhQV3jGYY5Eong1.qIgKjDGNvpMYcb2 .YbczvWPSt4DWF.CF+hgMHl3hX2wEDko.3Qguzj6R6 ElXClC8LzQ91oo8nJS 7 C c r t t r T b P T 1 8 7 Q Y Z S i D 9 u d 6 h z E q Vrd Q 1 0 . YSfsfaaqKAoq.80f0Y6+YE4Uh 00ap5eHE7.ZLwc56HZVDQTSvPL3dx7xKvS1wqDslRCL1g1mdNCRK.hAcbdf6 Rx4zWkYbRHxcj.NB9BkDXNjDfQgMIXNRpXaSK30u9U4r29pb50uQ9Ij7S3qu do7iD0GA+NPdMS72TyDj8L5Rf5YRTjl43mR.WzMrDFhG6IYmD5jkctyJiR9U o6b7ICXGlVuVj4YMY3Xikm8LhojzLA6PkEIZWbLO7EZ0lVkUWZhPPtjPzENg odigbrTqStDgio1pOs3SCJppaDU+0+XhbbYExXLsN zGHfxOUHaDWhuU.V+A4 jNSBvQNbZBgphgPzyVhvNdA0yn75iEAkE4xgcsh4HdXJmXrfmRqCXJocF0gw KXJoVXcQioZwmgZV6xaBXJycFwgSUfOhPHgMgLlG hCicrWEIG+R1CA4xx4Fq IDT.4gLxBLpRSHZAP4+LoECScWVGjcpMz6fC+XRO Nwsrb++OYkHilABFM4JV

37


ryh0005WQFHcE4YGV+7dZDBumGenAdenhxMEJS PdanIZyzDsT6nGTseD8DL5 42+CtsnNsWd8lMpmA5D3AYWHer2692l2sNsPnMwDCaBsCKKGMV4DvzTAM5Rj elhgtLhL9RcA3UlBMDCcWHy8bDUo+VufxTCYdYp GwXzRWeZqoMrG4vsOhDob VXj3CkEOXWYsqutwDe3vMPhnSLiQz6ZRXrvZe8c2 UXL+LDYx00TGcfAOyJVc xq8MhJgOWJ5aqADnQyzkYari.Hp3.QjKQcIcdYcaZEMhpLPqHMyDA4vs.ASz ZJ0hm33fXixFgV9Xd+Met+lx5ujab5gK2TDhtZVwpPj QbGm.uzRdeYpTzv1S uPFippDMcUkH85AZcz+Rpq8HmGT0oX6Vvx+tSz1 srOuJcYYCYYiboRQa4xeK 6F4WMk8k6mgf0UxCSBioHiUFKDwg6OpNaCh1zeAs0fSdEj8jfro7Ror9ibTY SNIdQh88cNIXnJL+xRUjykphBj8ZsI8SphZXRxBdpZ zIOWky0hQ0ZUhfgc3F pCSqc2gw.+hZK3akOIAX4551J4RTl1NIGxPp4R55D qOC5gwVpLsSftC2o5Hz giApOO94iXwaxjJ2WKx+h.DGGaL2FG5L.OryhIIWznDpNUcvydxejOJXMz9i 4pt5Msq22U6LavAnkI5FTx0mKkud3dHO5d9PdVln5gCak4YM0ROpcPXDOUaQ DwBDQ8JhFVC4nPZXKZ8HlPTKvjB3H+gIhsXBGXic H+N1EaClh7KlrZvCgndF Uz.jp3AHlRBOLEYClFVK1iX5IOtffmv1fomPlWZLwr QW.l6WLgCPLYU7I+Fz jQBOLgshm7qPSrU939kmH13iObFQ8nrNBJ77mF9KRJzhEPrQVGO1uXxFsJbl ewjM5B39McJpMqASRBPLwCPLEGdwBn9ESTahEP8qNym73FYryuwBn7.DSIg2 ZK1LzwiBuPA9ERLq8v8m5ItMzDyyCc13M42DyshlH9UjIO1Vdh5OLEYKlH9C SLawj+p6KGaKl7Wn.qbm7qGtMpT7Kjv1fI+JHvF2aT bvAI14DAW9keb0+CTF VR0B -----------end_max5_patcher----------</code></pre>

digitalWrite(LED,HIGH); delay(5000); Serial.begin(19200); setup_color_sensor(); setup_light_sensor(); setup_motion_sensor(); } void read_serial() { while (Serial.available() > 0) { // read the oldest byte in the serial buffer: int incomingByte = Serial.read(); // if it’s a capital H (ASCII 72), turn on the LED: if (incomingByte == ‘H’) { digitalWrite(LED, HIGH); } // if it’s an L (ASCII 76) turn off the LED: if (incomingByte == ‘L’) { digitalWrite(LED, LOW); } } } void loop() { read_serial(); read_color_sensor(); read_light_sensor(); read_motion_sensor(); Serial.print(redValue); Serial.print(‘\t’); Serial.print(greenValue); Serial.print(‘\t’); Serial.print(blueValue); Serial.print(‘\t’); Serial.print(motion_sensor_value_x); Serial.print(‘\t’); Serial.print(motion_sensor_value_y); Serial.print(‘\t’); Serial.print(motion_sensor_value_z); Serial.print(‘\t’); Serial.print(light_sensor_value); Serial.print(‘\n’);

Arduino code for final experiment #include <Wire.h> int redValue = 0; int greenValue = 0; int blueValue = 0; int motion_se nsor_value_x = 0; int motion_sensor_value_y = 0; int motion_sensor_value_z = 0; int light_sensor_value = 0; int LED = 13; void setup() { pinMode(LED,OUTPUT);

38

}

delay(1);

//Include the I2C Arduino library //Configure gain here //Higher numbers = less sencitive // 0x00 through 0x0f int redGain = 0x02; int greenGain = 0x02; int blueGain = 0x02; int clearGain = 0x02; //RGB LED pins


//Digital PWM pins int redPin = 9; int greenPin = 10; int bluePin = 11;

int blue=get_readout(REG_DATA_BLUE_LO); int m=2000; //bigger anyway m=min(m,red); m=min(m,green); m=min(m,blue);

//7 bit I2C address of this sensor #define I2C_ADDRESS 0x74 #define REG_CAP_RED 0x06 #define REG_CAP_GREEN #define REG_CAP_BLUE #define REG_CAP_CLEAR

//Serial.print(“m - “); //Serial.println(m);

0x07 0x08 0x09

#define REG_INT_RED_LO 0x0A #define REG_INT_RED_HI 0x0B #define REG_INT_GREEN_LO 0x0C #define REG_INT_GREEN_HI 0x0D #define REG_INT_BLUE_LO 0x0E #define REG_INT_BLUE_HI 0x0F #define REG_INT_CLEAR_LO 0x10 #define REG_INT_CLEAR_HI 0x11 #define REG_DATA_RED_LO 0x40 #define REG_DATA_RED_HI 0x41 #define REG_DATA_GREEN_LO 0x42 #define REG_DATA_GREEN_HI 0x43 #define REG_DATA_BLUE_LO 0x44 #define REG_DATA_BLUE_HI 0x45 #define REG_DATA_CLEAR_LO 0x46 #define REG_DATA_CLEAR_HI 0x47 float redFactor=1; float blueFactor=1; float greenFactor=1; //initial darkLevel; int calibrationDarkness = 0; unsigned char calibrationRed = 5; unsigned char calibrationGreen = 5; unsigned char calibrationBlue = 5; void setup_color_sensor(void){ Wire.begin(); // sensor gain setting (Avago app note 5330) // CAPs are 4bit (higher value will result in lower output) set_register(REG_CAP_RED, redGain); set_register(REG_CAP_GREEN, greenGain); set_register(REG_CAP_BLUE, blueGain); set_register(REG_CAP_CLEAR, clearGain); int ledGain = getColorGain();

//redFactor=((float)m*255.0)/(1000*(float)red); //greenFactor=((float)m*255.0)/(1000*(float)green); //blueFactor=((float)m*255.0)/(1000*(float)blue); } void read_color_sensor() { // // // // // //

int clearGain = getClearGain(); set_gain(REG_INT_CLEAR_LO,clearGain); int colorGain = getColorGain(); set_gain(REG_INT_RED_LO,colorGain); set_gain(REG_INT_GREEN_LO,colorGain); set_gain(REG_INT_BLUE_LO,colorGain);

//reset the RGB (and clear) values int cc = 0; int red = 0; int green = 0; int blue = 0; // Take 4 samples, and add them together. // for (int i=0; i<4 ;i ++) { performMeasurement(); cc += get_readout(REG_DATA_CLEAR_LO); red += get_readout(REG_DATA_RED_LO); green += get_readout(REG_DATA_GREEN_LO); blue += get_readout(REG_DATA_BLUE_LO); // } //now, divide the totals for each by 4 to get their average. // cc /= 4; // red /= 4; // green /= 4; // blue /= 4; //take the values mesured from above, and multiply them with the factors to //find out what value should be sent to the external RGB LED to reproduce this color //float redValue = (float)red*redFactor; //float greenValue = (float)green*greenFactor; //float blueValue = (float)blue*blueFactor;

set_gain(REG_INT_RED_LO,ledGain); set_gain(REG_INT_GREEN_LO,ledGain); set_gain(REG_INT_BLUE_LO,ledGain);

redValue = red; greenValue = green; blueValue = blue;

performMeasurement();

//Serial.print(redValue); //Serial.print(“\t”); //Serial.print(greenValue); //Serial.print(“\t”);

int red=get_readout(REG_DATA_RED_LO); int green=get_readout(REG_DATA_GREEN_LO);

39


//Serial.print(blueValue); //Serial.print(“\n�);

}

DATA_BLUE_LO)); if (halfValue>1000) { upperBox=half;

//hold it for one second //delay(100);

} else if (halfValue<1000) { lowerBox=half;

int getClearGain() { int gainFound = 0; int upperBox = 4096; int lowerBox = 0; int half;

} else { break; // gain found }

while (!gainFound) { half = ((upperBox-lowerBox)/2)+lowerBox; if (half == lowerBox) { //no further halfing possbile break; //no further halfing possbile } else { set_gain(REG_INT_CLEAR_LO,half); performMeasurement(); int halfValue = get_readout(REG_DATA_CLEAR_ LO); if (halfValue > 1000) { upperBox=half; } else if (halfValue<1000) { lowerBox = half; } else { break; //no further halfing possbile }

}

} } return half;

int getColorGain() { int gainFound = 0; int upperBox=4096; int lowerBox = 0; int half; while (!gainFound) { half = ((upperBox-lowerBox)/2)+lowerBox; if (half==lowerBox) { //no further halfing possbile break; // gain found } else {

}

void performMeasurement() { set_register(0x00,0x01); // start sensing

}

40

while(read_register(0x00) != 0) { // waiting for a result }

int get_readout(int readRegister) { return read_register(readRegister) register(readRegister+1)<<8); }

+

(read_

void set_gain(int gainRegister, int gain) { if (gain <4096) { uint8_t hi = gain >> 8; uint8_t lo = gain;

}

}

set_register(gainRegister, lo); set_register(gainRegister+1, hi);

void set_register(unsigned char r, unsigned char v){

}

Wire.beginTransmission(I2C_ADDRESS); Wire.send(r); Wire.send(v); Wire.endTransmission();

unsigned char read_register(unsigned char r){ unsigned char v; Wire.beginTransmission(I2C_ADDRESS); Wire.send(r); // register to read Wire.endTransmission();

set_gain(REG_INT_RED_LO,half); set_gain(REG_INT_GREEN_LO,half); set_gain(REG_INT_BLUE_LO,half); performMeasurement(); int halfValue = 0; halfValue=max(halfValue,get_readout(REG_ DATA_RED_LO)); halfValue=max(halfValue,get_readout(REG_ DATA_GREEN_LO)); halfValue=max(halfValue,get_readout(REG_

} } return half;

}

Wire.requestFrom(I2C_ADDRESS, 1); // read a byte while(!Wire.available()) { // waiting } v = Wire.receive(); return v;


int LIGHT_SENSOR = 0; void setup_light_sensor() { } void read_light_sensor() { light_sensor_value = analogRead(LIGHT_SENSOR); int MOTION_SENSOR_X = 1; int MOTION_SENSOR_Y = 2; int MOTION_SENSOR_Z = 3; void setup_motion_sensor() { } void read_motion_sensor() { motion_sensor_value_x = analogRead(MOTION_ SENSOR_X); motion_sensor_value_y = analogRead(MOTION_ SENSOR_Y); motion_sensor_value_z = analogRead(MOTION_ SENSOR_Z); }

Max msp code for final experiment

<pre><code> ----------begin_max5_patcher---------4562.3oc6c01bihiD9yY9UnJ0bUc6cYxnWPRvU2WteCWceZqsRgsIILiswKf yLyt09e+.ZrMXKgEDAQjc2Y1XOfio0iZ0cqV8K+9Gt41EIe OJ6Vz+B8ynat4 2+vM2TcoxKbS8+9la2D98kqCyp9X2tM5aIK9xs2A2JO564 UWNCsLYcR5gqGu p5pEexOI7NbwGS1luMbST0s9OowgqObms62DuccTd0ifTewcg4KeNd6SOjFs LGHQBieO9NjWfW0KhxeRw2iQ+xounj84G9lvMdvYw+V0 ClPuGWd0+3Cen7G2 85F1onLUCYVOGxX8CYgjUMJkjpW7txPlnYHWeY3Sl+icQ v29s2h9E6gFYpQC p8X.XdU..GGTgCu8L.YQqKHNDipXfSj8bfS0Ovkd3xwJyuZ3GbkwMsmbAKB2 9zs2YYtguF8CUfhu8VaTCJDQMnv6DT75InDuMuDSt7kgAR62rHRk7QlvdKO7 wzJ.ADSxwVlMoFCp3VFDHrXeddxVUf.ouCUIg.CU1gAoQxEUy5OnAylnrrvm htfumnhqOv5hBDUieFsjqm3+FqPPGVfUfETrEwBrrhK.66Pf gF4gOElGoh0m aQ3fUoYf.JFYtgwBZWzSC56hdQ.LceRA3TunWmcfQKiheIRqQvThE05wqjtG TIpWF3xFD9aqQKet.qUw2S8roHwJHgw.IiTKq26UXZjNs9boM05yAyfvtoVe cJGJFcHUJH31jyPBlHFTosr1dQWUaYwGBoZiDbl8. DeZMfTsHwi41.hNNDp8

.DAWzDPbeNDgJ.gXSapHMWx3FbHZTvrLY+17nTDt3Opr6 l0WaM4crxQRavn3 SthX1AtcyC++f2no98XQ6shk5QL26sxbqr0wqNo+7HLdDE aN7X81ZxZWqAFU VKWza.iuaO9K735jv7h6uae0yfLfgbwWQwi8HmdZb1xv0UOI78AJ7tVf8LjP HA2qBVScU2qpzPBx87.NwWpCqpPnwwdhWRVi9nJo.RKtiyCXDXWgGYHRGuFF YWXIKOLMWk7.KZlkuO.Gb5oMd5rJQyxS1o. O7r3Fw8YR.O.mz3F5PySd5o0p 1JFgzaYmRXyFdT9qS0vv8mpZCB90MQ4oIHFV4vzlarnF. fsaIXCYa3WSNf0c SwtzncQaWgRiBWoZEfE0kbXK4AUZQ7otraJ9Rb98+Z98a RdIV0xCN1lvREd3 4W42Fguk2qdwH4gMgEFM78g6yBsFPx482I8UqKXXWyec Y6RKj77H5y+urnzr OmGuM7ya1w9bk+697ea0mp968EWRENz2Srgc8kIBvFTN 1MVmn0sU9VzsUBP2 gmi51J8fvPESVbo3ME112s+cqcmWewkBZ+vWt6.UB7nBU0qddEPkXxgJMZlC +ZkSLTY2hfXc4MTv8EBrKqVdGZSRdbx1r78O9nBbwhVqvA6XIf0JW8PUvcCK UOfh0CvHtdHW7oiWG8Rg5lhgTCx4laaDdKU1C. g5Sg0pUJOkXuSzQAR9z5jk eMZUCx3laWE8Xu9RRJrB7zuPESPqez9SFusvtwrns4g40jdyGb3904OnFHZe +GCWFo8WV4z2M29TZ7pjskDQqeyxKe3w8yHBL2waR2Uehsg6T7KmmjrdQX5K wYwK.GqbblnfMMrPtSXdTdLPOT7weu3MUFMz56JZaXw2wyYKSSVut0WEbmWT bmUQuDuL5awqxeF7pCtwi+Tv30fyo0BnVWuK4vWrbA27F 5Accqaz5QDeXGPT 0xf0KGtikPlJ78lCBaf2b2PwslBfZKD5SZPS+fAhlztQSviAbo 7T.MbEzj7J PyoBE+s0nr7hcctA8IpN.ULR.JvWB9jRxFQ1yFa4xVHZWqm84iy5Y37v7Bde tdtjS7n60u.R8FGdv5M8C7fd74EOndrbW3xuhdr7O5vS1. wS1UvS.HwUql4B C v y g J j z t X Yq y 1 4 B v h L N q m Y T v W z X 7 n u f V 0 g 6 X I n qsy7ayG9QBhfw5fU73rllA mJJixfyC5bW76rLgcrfdc71nBCR0fjxfwY0LS.gqnPSVcLWEOVnpIM5Ecfo+ 3vVRgv1fB6gkE7NBLeJMY+NjN6Gkij8iz5nevyW8A8LiAz0k 6HWMZx4iKZB9 3blYJTW5fvHBhhXHODGIPRjOJnPoDhTnZhhHLDwCQ3Hh.QjEpIPj.c.OcjTW QgPCWB3uj8dPe0usVGJRFITrdCjvI5az1ymEBCxKcVkNrbjLfxCRlQV8IfIm rMZ13Sl8bx2hVEmmj1zsdU9uq5pMy8Tv945WXMdo82X3K Qqdn.2J9EeHLOOM dw9bvqd2bw7SiPZi5eWiKmVEz7Wd8sI4QGPebyaDsYQaeBCe7CST2dWqm4Sa U7gOCKNdmibd1fGL9BNsiCUNFqlAzqkoRpFS8huiD. IKT.31Xv9cJkaLmWOX uNL61bjUg.OrJLOr1862g9TgXjOQuq7srBaLJTLVPQU+yO QJdY51Cp2H4SIJ jQRD5rdOnF4fSptMh5MRNWhBhNIfpI47Z6SUiRM.lPKhfulV5JL.h8N7geZn g N 5 i t 2 p a u LY y l H 3 T f t 8 1 o g 2 5 7 b L + B O b L R l L J . mZTmVQi4NIOK+ymBumKGIIc BIjh9T+Yr6y6D37Foic.BIAF3+h4IvcP3fRMD5vS13fmDu5D DWbXmdWEOwcf mSDJ8CcnDcbPIPcYMHcY0UwMAouqCjHiEqD.R0wHi6.

41


RsBUUsYMY+YJpcdJv TvkGeYnlPLsQr.RmEnbwXYnPc4WH3OaAsvwz3djPT7bLpEt9Q0o8v539ipor df2OEjYiyOak.jpSBRsgm7.j6Uy0AtkmW6XNts16jpri7s9PME3w4PMq433f eBe+bnlmppWZCS49hj3qgj.34qtJeoO0qG59BzUwurD31J M7zVr75+FOCpsR SpNWa56RWqOt67zyzAGrQRePMXEfUW2nliGFFj4iT8JWEdiKXBNJRRFwvwx9 FR28pQ9fWMBFv4A6V5f0GNzpwNXjBWjoCODijSypM2k6exksuC1.w+tivRiR F2cN3KNUeBlKP4fzPLR6.S5wZDnJyHMDcAhLJkzlwqIR5OpbjTo2IG6NKPxt UMDL77kotBbgcTC0tpMF53fFK6K..iB5R4yK6K5.LqKdUZ. ygZ4K+ZmOE3+V XSUF4YoW41otrhVMEd+UhekFiPnMxVCO9Lw4ueIqNoY+ uQayJFW2+Ec1xQFI a4nfOKAS4HDuYSxYn2UafSbTihzgenJ3FgsghpO1.701jfF dcfFjA65wVQm5 6BvXv6cDJZJDI1IwhND9reaUFgguG9qNIyiTZNIOoPy2jfIkoSpS6xxzUhxr ydyHGpduDldDsV.EFvF284xYBnDTWmX+9RL22+NkuibF5 nrTCdw1Voi0QLC7 4CLKxW7T6gsn3+j2o7cmOrG9Tu8Ur28D9SuIS3hwLvKHL u+Z9V27c5aw7Maj pRD0EoCP21be99TcFo7vE0TxNp.gx6qlQHKYe5xCOyCgwIpMsuJJqrzjcnrq 7ymBrky9fOGuZU6xbREuV7pcIEa6pl. Mj0czn6xsj4Pzc44UZDcqX.9lR2XS wataQ2BSoaOmhtYlh2tEbSMEtID2htMUbBwsVVxMEuUrN3Mktklxd6Vzc4wU XFcKcK5laJc66V7Ilh2B77TcYYby4RzMyT71wTyap7agaolWA4ngtcKyuojY Jeho5Kotk8IBS0WVxlPcFxVZpXPgaotzb51sTWx5CYSbFx1qGL2NzZx.CIa2 RkiwRRvNGYSLQvsv4HapIjsi4tGS8ZxrjpItEOBwT51ysLlharui4Nk5Ftoa FV5XxRLdUoaYUhzzMw64XzsoJ38cqMK3aru5cKmO3a5lJ8bKKp775ibPGRui oxu8cqcURH8gtcH8N8grcnkkltqRe2ZYouoKK8cqkk9Fym3Vlm3ap4I9NlZG S U y G 3 V 6 H N v T 0 7 9 1 j t q u X w. n t 8 H 2 c o m 7 X a H R e 61oy10ySqSVDttt2FcQUXzjt 4ixuVSZcPWT9X.TvR8C1cIo4nPU8MX60tPoXHd3gVVvvZavSVCxc45jLUMBS O e 6 A H j 5 D A q N + 5 B b Z . 4 i j x b . P E h P s G h v N j p I T 0 M T. Wp0r0tlZzBQv1qY0c.Qf JC2v5G4cgHCtEo1tGs2L5IsXOoiAY5lGgLJ8GSKzH100Nc yPgqB2kG+RzCqi e547SIgTKrRZcrhUmFI3.mnuFpSbhpdTOUXwdSMrrAJvwWlvstUOdrJvdeHO 4AnLmFqr0CSo1iWgbn2C..CQZYdEHOGe8sBxJprNoogri PTVDV6Wqf7peI+U qf7OgsBxQpDtRH0E8V+2ksNt3s5pT0iTufDZBjd9z4WYUr qxW5W1mUreKTVw pn0QnMQqhC2hJjHlGkhR1hxeNBU78jW19TdIb89nVYvbo kmUIN+43WyBh8Hw dCMocFTWPq2.CyyEJDpctZWLx3gO4c4x8nuuKE82+6e7 Q9m93id+z+n3cjh2 Q+oe5yEukU8Vz+DUbOaWsj3FIVfCINNg8ZxvdSRHpIs5fh uufuBxfX98ScM+ A.VnXPGPdezgjPaxeVaSSarJIb0suXnw9weO0yzxRRym3h UnroZGu2UfITdk

42

IXipFlVGQgMBNy5XJc2bFFWM8Xw7USO7jLoXK0uRlLTSpf 5VB+vOMzhvwpYx zk02ElWmEgBSiJsudQbNBXnxJjrg9VDZU7KwqhJMBeCZwOPOlrOsuleSGqdH ETLzoNm02c0DiHCsrGKazDiLhwxsahQWsWgO3Bh4UJD2 R+lcdr4SuBuCr7yH ca4fNR8pQhH3jMwuaZvC5wQxH4Qm5tMXyxN86abbjponvh52YvXc4ypKgjjQ x.O.OgB3sH30T7rLs6LNl0MqtqOhoOsf979H8UFQwH0Fkp0nC62PFLeJLheq brXTGaovvhhAd7h30w4+37QPuzZCg+.u1Uqdvw5RGdOZ8JrZiRE8w3Ty0wR0 eJtOolqCEMxA8gtcmnQl3OOSEZhwoTG18naSxfQRf6Q2FkUctk7DSECRjyzJ dBYdVXyjyzBdxbsvgHmmExBGqfUYL6sfNSKLNrYJ+s+7r. y3VJ4ClkUfi2hB vwek+KVIDbyPgoq1GuMABVaEQeKQXwH0V.8mJFTn1uVf Zi0D7siwvGZbFpF+ d1a7SgAd83uNefbD..pwxJF+L6M9CZN8G71O5KiBg0wKi PpBJehMSuGHLXXv LNW5LIyhtrTvigKlmnED9wD0n0o+xtDu3VL+v7AFkfFEL7 xL.xEShgi7PLUI DkEShPh+7hEhyBPbJGQCvlxBwrGbAK37ZFM5yRNHKJD xmMaYfPMjGgDR0xjj Jjgaw0esPu57WkLiRxLlusYkDL0sGSmJYUSBWUEOYJDNSrXdkAIpIkd5nTsX V k Y 8 r z L N O Q U N u S k 1 K + c AV D J D x p W M 8 c G V d 1 M . . oUe8r0Xm224b+yLi0nAn8FI ZlZa2kNaMBY1V.PcDsbYW4z032yhJGjnUHR.UYt7S31SVPM1.Vf3a6DW+Pi0 zlvyioIax9wlEIqUAMXaCMTnQsIYNQhZq2prmRS1uq3I5q. Urtxz5b4Q5N1k ocsz5SAseqPmw5hWfW7XVFR.6ANGVp9xaGAH.Jct6PqwpKibhVdkU2wb1ppR coCPU67yKl4LklN6wow28SJI0t5R5FvjbdRRL+ocliX. M4MszT6hmnQEZ3wG mLgj7lTRxHThM4nD4ZjD04l3ZUCkmj4sqARtGmDaRwHB1.RZZYjLhjHSJJIL fSZZEcKL.ilVJxDKSnxoc4lIFvQmVI2TiLWB6d1lLw1KwLheh6bhuoSqvRpQ zjXRkVxBLwT2I15DSvIOryYwTvzp50HgSSLMYzVdmVEKBSDXRmVaKElX1zYD 9XSS7.SoooS5D22TZh5V7S7oUYmmIyc7oUhIgXjaBmX+C b9yyIfJOt6QSLGD mDlvlKmVZRhcv4NSV4IlVSC3lH1TLs3Dm5fzjQq6l34NlCRSR2ilnFoFl5fz DwAoIOGjllX+OYhtE1DePqAtGMw3tmbbinI1zttiYzVgmVbh Zj9to8bM4l3w duoU2ByH6LmX+9ZzYjMw6QvDaUXL2ywuhIVemQmifvAo oo8foYFEeJAtWrfv lV2rZzAIHdM19V7O9iO7+ATsEwJF -----------end_max5_patcher----------</code></pre>


Turn static files into dynamic content formats.

Create a flipbook
Issuu converts static files into: digital portfolios, online yearbooks, online catalogs, digital photo albums and more. Sign up and create your flipbook.