Our class had many wonderful performances today! I feel so inspired by many of my classmates. But first, let me talk about my own project.
The initial idea was to use the keyboard to play different notes of music. Later, I realized that it is very much similar to a virtual keyboard piano. Surprisingly there is a guy in the class who really did that virtual keyboard piano! The class seemed to like the idea. May be I should search more in the tutorials because I remember seeing a piano symbol in one of the tutorials before.
I think that there are so much things that could be simplified (and I overthought them). Perhaps there are already piano notes in MAX but I still downloaded each of the piano notes from outer source. Due to the file size and loading issue in MAX, I could only afford to load 9 musical notes correspond to the numerical 1 to 9 on the keyboard. And the fact that I thought people would find a virtual keyboard piano boring (but it doesn’t seem to be the case just now), led me to think of make it more quirky. But given the time and limited prior-knowledge to try something quirky may not always work out.
So the quirky idea is to detect colour of the shirt of the user interacting with the program. I used the color look up table and jit.findbound. I couldn’t make it work on the first try, second try, and third try. Considering the time constraint, I gave up. Apparently, many of my classmates could use that function well. =/
So instead of using the live webcam, I used the recorder to detect the surrounding sound (e.g, clapping) . When the sound level exceeds -20dB, the counter will be increased by 1 and the output counter number is fed to the “cue” which will play the preloaded music note with “sfplay”. The patch file is shown in the image below:
Cue Number from Counter
But it would be very boring if it keeps playing the same old music cuing from 1 to 9 every time. So I added a “random” number generator (with a metro to send the bang to it)to get random cue number. With this, the music generated will be more unique. The patch file is shown in the image below:
Random Cue Number
Before the performance time, I wanted to try something different by using “select” which I suppose can open 1 file at a time according to the number generated. In this case, I can standby many single music files (which will be opened singly instead of preloading all of them at one time) and not worrying for MAX to hang again. But I wasn’t able to make it work within the time constraint.
A summary of this project
Gim’me Some Musics
Features and Operation:
- User can play music files with keyboard (1-9)
- User can make noise (clapping or talking or hitting something which is attached to the contact mic). The noise will be picked up by the mic which channels it to the levelmeter. The levelmeter will in turn quantize the signal and the signal is compared to a preset value (e.g >-20). If the result is True, it will trigger the counter to add another count or the “random” generator to send a number to the cue. The cue will set which music file to be played.
- Generate music from the noise. Suppose the recorder is placed in a highly noisy place (street, construction site, etc) and the music player is placed at somewhere else. The noise generated will be converted into a nice melody.
- In a confined performance place, a contact mic can be attached to an object and user can play different musics with that object (not influenced by surrounding noise).
- This can also be used to interact with small kids. When they clap,(using a counter) a music note will be played. A full song, e.g. Twinkle twinkle little star, can be played when they clap continuously.
- Select some nice musical notes from nicer musical instruments.
- Have a few cascaded counters and a few sfplay functions to play different musical instruments simultaneously.
Here is a little video of the demonstration of the performance: http://www.youtube.com/watch?v=zTWVeW26A1Q
i think it is important to understand how the system works than to just make it works. This project has led me to a more creative thinking and to have a fresher view about performance and interaction.
We were introduced to contact mic, which is a very useful tool for this project. It only picks up sound wave (vibration) of the object that it is being attached to. Therefore it is rather immune from the surrounding noise.
There are some interesting performances by my classmates. I have learned a lot from them too. There are much more things to explore in MAX, and thanks to my classmates, we have seen different functionalities and applications of MAX. Most of them are applying the idea of play and pause a video or music file with object detection. I think it is kind of cool. Cant wait for the Arduino session next week! 😀