Art, Interactivity, Design

Whenever someone asks me: “what projects do you do as an IM major?”, I reply by saying: “I mean.. a big part of the projects is about that interaction between humans and what we develop. We develop cool interactive stuff?” Now I don’t know how much this description is consistent, but I actually sensed this description in Crawford’s arguments about Interactivity.

Basically, the chapter emphasizes the importance of interactivity in modern technology and entertainment. Crawford argues that interactivity is not a mere add-on but a core element of design, making it distinct from other forms of media. He highlights the unique ability of interactive media to engage users actively and elicit responses.

An important concept Crawford introduces is the concept of the “reactive mind”. He explains that interactivity relies on users’ ability to perceive and respond to changes in the system. He also discusses the role of user actions and system responses in creating a dynamic interactive experience.

It might be because of my Physics background, but just like Crawford, I’m too technical and direct with my definitions, which is why I agree with the points he talked about. One may think he is biased because he didn’t think of the internal interaction that occurs inside your brain when you open a fridge, but please? It’s hardly convincing to say that a fridge is interactive unless it has interactive elements in it (does the fridge open with a tactile button? does it answer when you say I want milk?). Same for a book, a cupboard, a rug, a static artwork.. You do not interact with what I just listed and it’s okay, it does not change their value. They are just not interactive. I feel like there is a very thin line that can be easily blurred between Interactive and Immersive. The first one concerns the actual interaction and the effect it elicits in the user, and the second one only concerns the engaged reaction of the user to anything, which doesn’t require the object or the work to be interactive.

 

Midterm Project:

Project Idea:

So as I was in class I remembered the funny guy Daniel’s joy as he tried to mimic the movement of the buzzing bee formed from Perlin noise in his tutorial video and I thought to myself, why not make a game that immerses the user into the game in a similar way.

Design:

So far I am just trying to create classes to form a kind of falling blocks where the user has to prevent themselves from hitting the blocks that are falling to gain points. The most challenging part of this project will probably be the collision aspect as I don’t know how to track this but hopefully, I figure it out. For now, I am done with the falling blocks and I am doing some research on how to deal with the collisions.

Progress:

Week 5 – Reading Response

The readings gives an overview on the development and application of the computer vision technology. While it is specifically about the computer vision technology, I think it also exemplifies the general trend of technological development: from the highly specialized sector to a novice and amateur sector. And in this development, artists play a pioneer role in populating the technology.

It is surprising to see how early the computer vision technology was utilized by artists and intertwined with virtual reality technology. This is a very good example of the co-evolution of different technologies and how artists are making attempts to explore the connections between different technologies. On the other hand, however, it can also be seen from this example of computer vision technology that the technology development is never linear. It might take many years for one technology to be fully advanced and adopted by people outside the field of techniques.

It is also meaningful to see that how we can improve the efficiency of technology by changing the physical environments. It is a great case where the physical world and digital world collaborates to achieve our goals. It is important to keep it in mind that the deficiencies in technology could be fixed by changing the physical environments the technology is situated in and that the environment can also be augmented by technology. This truly provides me with another perspective on the relationship between the physical and digital world.

Iron Knock-Midterm Assignment Progress Report 1

Concept:

The Steelpan is an integral part of Trinidad and Tobago’s cultural identity, serving as our national instrument and an emblem of our unique spirit. It transcends being a mere musical instrument; it’s a symbol of the heart and soul of our vibrant Caribbean culture. The Steelpan’s roots trace back to the early 20th century when resourceful Trinidadians ingeniously transformed discarded oil drums into melodic instruments. This innovation birthed a distinctive musical tradition that has not only captured the essence of our culture but has also resonated globally. And so, my project is a heartfelt celebration of this rich cultural heritage. I have decided to craft an engaging digital Steelpan experience that invites users to play the instrument through interacting with the mouse. (This might be changed to the keys).

Classes and Functions:

Steelpan Class: At the core of my project lies the steelpan class, an embodiment of the instrument itself within the digital realm. It comprises three rows – the outer, middle, and core – each adorned with circles representing the musical notes. The steelpan class is responsible for the visual representation of the steelpan and labelling each note seen on the pan that would be a direct instruction as to which note the user should play or click, to trigger the actual sound for this note.

I have already created numerous functions that perform major functions like operating the start and end buttons and the draw function that brings everything together.

Below is a snippet of the steelpan class.

draw() {
    // Draw the outer body of the steel pan
    fill(100, 100, 100);
    stroke(10);
    ellipse(width / 2, height / 2, 400, 400);

    // Draw the circles for the outer row with labels and hover effect
    for (let i = 0; i < this.outerCount; i++) {
      let angleOuter = i * this.angleIncrementOuter;
      let x = width / 2 + cos(angleOuter) * this.outerRadius;
      let y = height / 2 + sin(angleOuter) * this.outerRadius;
      let circleSize = 50;

      // Check if the mouse is inside the circle
      if (dist(mouseX, mouseY, x, y) < circleSize / 2) {
        fill('darkblue'); // Change to a darker color when hovering
      } else {
        fill('blue'); // Default color
      }

      ellipse(x, y, circleSize, 70);
      fill(255);
      textSize(14);
      textAlign(CENTER, CENTER);
      text(this.outerLabels[i], x, y); // Display the label for the circle
    }

    // Draw the circles for the middle row with labels and hover effect
    for (let i = 0; i < this.middleCount; i++) {
      let angleMiddle = i * this.angleIncrementMiddle;
      let x = width / 2 + cos(angleMiddle) * this.middleRadius;
      let y = height / 2 + sin(angleMiddle) * this.middleRadius;
      let circleSize = 50;

      // Check if the mouse is inside the circle
      if (dist(mouseX, mouseY, x, y) < circleSize / 2) {
        fill('darkpink'); // Change to a darker color when hovering
      } else {
        fill('pink'); // Default color
      }

      ellipse(x, y, circleSize, 40);
      fill(255);
      textSize(14);
      textAlign(CENTER, CENTER);
      text(this.middleLabels[i], x, y); // Display the label for the circle
    }

    // Draw the circles for the core row with labels and hover effect
    for (let i = 0; i < this.coreCount; i++) {
      let angleCore = i * this.angleIncrementCore;
      let x = width / 2 + cos(angleCore) * this.coreRadius;
      let y = height / 2 + sin(angleCore) * this.coreRadius;
      let circleSize = 30;

      // Check if the mouse is inside the circle
      if (dist(mouseX, mouseY, x, y) < circleSize / 2) {
        fill('darkred'); // Change to a darker color when hovering
      } else {
        fill(255, 0, 0); // Default color
      }

      ellipse(x, y, circleSize, circleSize);
      fill(255);
      textSize(14);
      textAlign(CENTER, CENTER);
      text(this.coreLabels[i], x, y); // Display the label for the circle
    }
  }
}

 

Challenges Faced:

Already I encountered many challenges but a particularly difficult one, was the assignment of notes to each circle within the Steelpan, and the position of these notes. The notes at the beginning formed half of a circle instead of a full circle, and to fix this I had to play with angle increment and ensure that it was suited to each row of circles and not the entire pan. So, I had to break each row into different for loops and then I was able to get the look I was initially going for.

Before:

 

 

After:

 

Another challenge I foresee for the future is then using arrays to assign a specific sound for each note on the pan. After watching a few videos on how to assign sound to more than one object when the mouse is pressed, I realized that I would have to use an array to store the sounds for each row, and then allocate these sounds to the individual circles with each respective row. I want to reduce the risk of misalignment, so I have to be especially careful when assigning the sound to each note.

Next Steps:

Nevertheless, this is just the beginning. My focus in the next phase of this project is to source the audio for each note, from (WEBSITE) and save them accordingly. After this I would be solely working on ensuring that the sound and the notes align correctly as this is the only way the users would have an opportunity to delve deeper into the rich culture of Trinidad and Tobago.

Below is an embedded sketch of my work:

Assignment 5: Midterm Progress

Can you remember the last time your mother held you? How it felt so good, you didn’t want it to stop? The sea really is your Great Mother. She can rock you for forever, for as long as you need, even if you need it until you die. I’ve been thinking of the sea a lot these days. At night, it stretches out so dark. The horizon–it’s so dark. It’s black. I see it a lot these days.

I’d seen a project before that resembled the picture in my head, starting with morphing mandalas. I watched Youtube videos making these linked here. The ebb and flow reminded me of the ocean. I want to capture the trance effect. The black horizon, you can’t take your eyes off it. See below:

I also wanted to incorporate elements of interactivity by taking inspiration from this video. Maybe the sea starts out in day time. And then when you click, it’s the sea at night. And lastly, I wanted to incorporate an element of generative text. This poem by Naomi Shihab Nye has also been on my mind a lot these days. (She’ll be at the university for a writers summit on October 31 by the way.) And I want the poem to play throughout the piece like subtitles for a movie. I also want to load in sounds of the ocean that get softer and louder, corresponding with the visuals. All in all, the concept is still coming together and it’s the coding part that will be difficult but. We move.

Week 4 – Production

When I thought about text, I naturally pictured something with many writings. I felt like the continuous popping up of texts seem very similar to overthinking and graffiti. I decided to link these two concepts (overthinking and graffiti) and create a design that shows how continuous thinking of positives and negatives end up blurring what was originally there, just like a wall covered with graffitis.

Below is my work. The intention was to show how different thoughts, both negative and positive, fill up our mind so quickly. I wanted to deliver the message that at some point, we just have to stop thinking and turn off our minds. To show that, I make the screen black and show “stop overthinking” after a certain number of counts.

The code I want to highlight is where I use even and odd numbers to decide the colour of the text I’m displaying. Of course, it’s not something fancy, but it’s just a way I used to make deciding colours more simple. For this, I just had to make sure that positive and negative words are in order in my array.

while (i < 6) {
      if (i % 2 == 0)
         fill(0, 102, 153);
      else
        fill(205, 92, 92);
      text(messages[i], random(-10, 600), random(125, 600));
      i = i + 1;
}

 

Midterm progress

 Lucid Dream  –  a world of illusions

In recent weeks, I’ve been completely engrossed in the realm of illustrations and visual designs. I couldn’t resist delving deeper into this world of boundless possibilities. I embarked on a creative streak, aiming to produce as many distinct visual effects as I could. With each creation, I learnt something new. My goal is to establish a platform that showcases these diverse illustrations in a unique and aesthetic way. The journey has been quite lengthy, so allow me to share it with you.

To kick things off, I took more time studying the patterns I could generate, particularly by integrating sine and cosine functions to craft these visual effects. Below, you’ll find a selection of the artistic pieces I’ve crafted. Please note that these are experimental representations of different potential patterns and not the final designs.


Yeah and this one too (EXTRA COLORS!)…
(you can see the version as the title of each artwork) 😉

Then i started to look at different approaches to create the background of the main page. I wanted it to look something close to the night sky with stars, so this is one of my draft ideas.

But…. This isn’t doing justice to the other art piece, it may look simple which might compliment the “complexity” of the other pieces, But thats not what I’m looking for. I started to look at different functions in p5, until is stumbled upon orbitControl. ummm… this is too interesting to be left alone. I started looking at the different possibilities with it, i started watching videos explaining how to create a 3D object using x,y, and z axis, along with sin, cos, phi, and theta. It was time to Create a new fresh file, and put all the stuff i learnt from the previous projects as well as video tutorials.

and this is how it went..


Initially, the 3D design was static, requiring user agency to click and interact with it ( go ahead and try 😛 ). However, I aimed to make it dynamic, allowing it to move and rotate like my other projects. The challenge lay in achieving a linear movement for every point, and I didn’t have a clear solution for that at the time. Instead, I devised an alternative approach: I manipulated the “camera” using rotateX and rotateY to create the illusion of a linear visual rotation.

But…. I still haven’t figured out the initial star background. but this design has the potential to look like a night sky.

lets do this..

and here we GO!

Reflection and future plans

These were my initial concepts for the upcoming project, but I have numerous additional features in the pipeline. These include the ability to download the final static art piece, granting users more agency and a personalized experience. Additionally, there will be a main page that will serve as the home for all these art pieces.

 

Week 5 – Midterm progress

For the midterm project, I wanted to implement all the concepts learned so far and at the same time create something that represented my experiences. So I arrived at the idea of creating an interactive artwork that depicts the Indian classical dance form of Kathak. I intend to bring a unique perspective to this project, drawing from my six years of learning the dance form of Kathak.

My vision for the project is to create an experience that allows the user to explore different movements and hand gestures of the dance form. Another idea that I hope to explore is the use of the string of syllables that compose a piece as a dataset which results in the corresponding footwork for the syllable, hopefully producing a depiction of the dance.

The application of sound would be integrated in the form of the sound produced by the footbells worn by the dancer. I am also thinking of exploring the concept of a sprite sheet discussed in class which I believe would produce a more realistic effect.

To begin the project, I started exploring a unique way of presenting the dancer. I came across an interesting tutorial on using Perlin noise to manipulate the pixels of an image. I tried implementing this but found the code a little complex, and I would like to work on simplifying it.

https://editor.p5js.org/rujulm/full/kl43KRCHP

Going forward, the challenges I perceive are the implementation of the ideas that I have into code. I have experienced challenges in coding in the past that required me to change my expectations of the final result. I hope to put in the effort to explore concepts that would help my work seem realistic.

Week 5: Reading reflection

 

Reflection

After reading this article about computer vision methods and how they are used in interactive media, I am incredibly excited by the remarkable potential that this field holds. Beginning with the enormous difficulty of obtaining meaningful information from digital video, which by its very nature lacks semantic content, the article emphasizes the difficulty of so doing. Also, the article presents basic computer vision techniques that detect motion, presence, and other interactive features encoded in video streams. The techniques include frame differencing, background subtraction, and brightness thresholding. The explanation of these techniques fascinates me since it makes them seem unexpectedly approachable, especially to novice programmers. Without a doubt, this accessibility emphasizes how computer vision has democratized the fields of art and design.

The article also emphasizes the essentiality of matching physical parameters with vision algorithms to improve their dependability. It demonstrates how astute environmental planning can dramatically boost computer vision systems’ functionality. I am inspired by the accessibility of these technologies for artistic efforts as I learn about the numerous multimedia authoring tools and plugins accessible to designers and artists. The article concludes with an encouraging illustration of LimboTime, a straightforward yet entertaining interactive game that was developed by workshop participants in just one afternoon. Such an illustration depicts how computer vision may enable designers and artists to explore new realms of interactive art. The article demystifies the complexity of computer vision techniques and emphasizes their accessibility while revealing their revolutionary power. As such, it highlights their capacity to enable creators of all skill levels to create interactive experiences, enhancing the field of multimedia and beyond. As it turns out, I am in awe of the nexus of technology and creativity, where pixels become dynamic canvases, providing new horizons for creative expression.

Week 5 reading reflection

I found Golan Levin’s article, “Computer Vision for Artists and Designers: Pedagogic Tools and Techniques for Novice Programmers,” to be the most informative reading we have done so far. Levin’s exploration of the application of computer vision in art and design resonated deeply with me, and it left me pondering the pervasive impact of computer vision in our daily lives.

The historical perspective Levin provides with the example of the videoplace immediately captured my attention. It is crazy to think how deep the roots of computer vision run and how they have been intertwined with the development of virtual reality for decades. It’s intriguing to realize that the seeds of a technology so pervasive today were planted half a century ago. w

What struck me most was the broader implications of computer vision in our daily lives. Levin’s examples, while rooted in the world of art and design, made me contemplate the ubiquity of computer vision in the modern world. From facial recognition on our smartphones to the automation of industrial processes, computer vision is quietly shaping our interactions and experiences. It’s no longer a niche technology; it’s a fundamental part of our daily existence today.