Saturday 28 March 2015

Project Explained Part 1 - Arduino, MSGEQ7 and Audio to Colour Theory and Practice

I have had tons of stuff going on recently with the project, so today is going to be a catch us on the written side of it all.

First off I feel like I should give you an update on some of the difficulties that I had been having with the LED side of the project. Firstly, once again I am no electrician and this is all new to me, I have done a lot of reading trying to get my head around electronics and I think I have a stronger idea, but to say I fully understand it would be an exaggeration.

Also, without the code and guidance from a man named Russell, who has been helping via online chat through Blogger and Youtube, I certainly wouldn't have achieved this. He will be credited as such in my dissertation.

I have also had difficulty in getting parts. Well, more the time scales that they come. I completely underestimated how long it would take for some things to arrive, my longer breadboard took 5 weeks!!

I am now nearly there though, all I need to get my hands on is a female TRS Jack input for the audio in, and a 10K resistor, though I may just be able to use one of the 220k ones I already have for that purpose. I also need to soldier the button I got into place, as it is not very Breadboard friendly.

Also my ignorance in implementing the code into the Arduino was also holding me back. I have since figured out what it was that I was doing wrong, so now the Arduino is loaded with the code it needs. By the end of this coming week I should have a working audio-reactive acoustic diffuser. I think it may be the first one in the world! Wouldn't that be exciting. The next post today after this shall be dedicated to the Diffuser build and where that is at, but for now its all LED.

So first off, here is an overview of what is going on. Compared to my last post about Arduino control of LED's, you can see the Breadboard that I waited five weeks for is in place. Damn I wish China wasn't so far away. And amazong was more obvious where you were buying from :( Aaaaanyway.

 

So rather than using the power brick plugged into the Arduino, I am just using the stripped ends of the 12v power brick that came with the LED strip. Hopefully Russell can confirm wether this will work or not, if not then I know how to connect it up his way too, that's fine.


Next we have the potentiometer circuit. Once the board is fully equip with the button, this circuit will allow the user to cycle through the 8 states contained within the code. One button click cycles through these states, where the potentiometer controls the intensity of each program.


 The next circuit is doing the hard graft. Above the middle of the Breadboard, you can see 3 capcitors - 33pf, 0.1uf and 0.01uf (Left to Right). You may have already noticed that the two on the right are twisted together. I shall get some clarification exactly why that is, but I think it is to with stepping the signal down from the audio input, which will be connected this week.



Sticking with the image above, I shall explain what the little black box straddling the middle of the breadboard is. It is called the MSGEQ7 and it is really the brains of the operation here. It is a seven band audio splitter - it splits incoming audio into 7 separate frequency bands from Low to High frequencies.
Below is a small snippet of the Datasheet for the MSGEQ7. It shows the most important signal flow diagrams though. You can also see the specific band passed frequencies it outputs information for.

 
So here you can see a physical diagram and block electrical diagram of the chip (Top Right). If you imagine twisting that diagram round 90 degrees to the left, you have the orientation of the chip on the breadboard. So as I said before, the audio signal comes in through the top right pin, Pin5 (in that orientation). One left, we have the Ground Pin6, nothing to interesting. Next, Pin7 resets the multiplexer operation, on the board this is connected . Pin8 controls the chips onboard oscillator, which is responsible for selecting the frequency of the multiplexor, or how fast the strobe cycles through the audio frequency bands. When the input of Pin8 is high, the multiplexor is reset. When the signal goes low again it enables the Strobe Pin4, which is on the lower side of the chip. Pin3 is the Output, which is the Multiplexed signal. This is connected to the fourth analogue input on the arduino (A3) which unfortunately I forgot to wire up for the picture, but is now in place. Pin1 and Pin2 are the positive and negative power inputs for the chip, the power for which is controlled by the second 0.1uf capacitor.

Next we have the third stage of the Board, which is controlling the LED's. So trying to keep it basic, as I said before the MSGEQ7 spits out a multiplexed output, which means a stream of repeating data. That stream of data contains the volume information for each of the 7 frequency bands that the MSGEQ7 split the audio into.

What we need to do then is convert that data into RGB data which can be turned into coloured light that represents frequency via the LED strip. This is the part of the process that the Arduino takes care of.

If you have read my earlier work on this project, you will know that light and sound are inherently tied together, and one octave of the musical scale (F# through to F#, 370hz - 740hz) can be exactly converted to the octave of the visible light spectrum (Deep Magenta/Red through to Dark Blue/Purple, 406.8ghz - 813.6ghz). To get the exact colour to tone, you multiply the audio frequency by 2 to the power 40. Now we have some context for what I say next.

There are (very basically) three levels of colour. These are known as the Primary, Secondary and Tertiary Colours. The primary colours are out basic building blocks - with them, we can make Secondary and the Tertiary colours. Our primary colours are RGB, Red, Green and Blue. When we combine these together, we can (just about) make any colour in the rainbow. For example, if I wanted to create the colour Yellow from light, I would mix together equal amounts of Red and Green light. It is vastly more complex than this, but an easy way to think of it is how beat frequencies work, it's a form of frequency modulation.You can demonstrate this to yourself by use of some simple maths, though some of you have no doubt got it by now... If you take average between any to colour frequencies, you will get another colour.








Basically, if send varying R,G&B voltage amounts to the LED strip, then we will get a colour representation of the full audio frequency spectrum. Bass shall be represented by pure red, the Mids by green and the Highs by Blue. This can obviously be changed quite easily in the code, but for now it shall be remaining the same as I want to test this as a metering source. The three black things you see sticking out the breadboad are N-Channel Mosfets. They are special resistors that you can think of as Envelope Followers and are what control the flow of Red Green and Blue signal to each channel of the LED strip. It smoothing basically.

In the picture below I am holding that yellow cable for the benefit of Russell, hopefully he can tell me whether or not I can get away with powering the LED strip this way. You can see from earlier pictures that the Power Brick was plugged into the top rail of the Breadboard. I think this way I can avoid having to get a power brick with a proper connection, as I chopped the last one off for the last arduino project.



 Finally we have a picture of it all together. The code is on the Arduino, so hopefully once I have the TRS and button attached I should be plain sailing! The next post is going to be in a while after I have had a break. Once it is composed, I might just leave till tomo morn to post as I will most likely be very tired!





No comments:

Post a Comment