Main Schematic:

So to interface the WS2812 Strip with an Arduino is pretty straight forward using the Adafruit_NeoPixel library.

The LED Strip has 3 Pins: VCC, DATA, GND. VCC is connected to 5V, GND to Ground and the DATA Pin in the middle is connected to LED_DATA Pin D6 on the Arduino. Now every LED on the Strip has an WS2812 chip on it which takes in the Data it receives from the Arduino and passes it on to the next LED, therefore we only need to feed the Led data once to the first LED on the strip.

The logic of the Push Button to change the modes and the Potentiometer to control Brightness is explained in the next Step.

The exact Schematic can be found in the Screenshot of the fritzing file which is also available to download.

Note that it is very important to only connect the Arduino 5V Pin to the Power Supply via the diode , so that the Arduino is not damaged if we plug in the USB Cable to program it. The 10nF and 1000uF is also for safety reasons, so that there won't be any Power shortages.

For the MSGEQ7 Circuit:

This is the most common Circuit to connect a MSGEQ7 to an Arduino. This is also where you need the 3.5mm audio Jack. The middle pin of most audio Jacks is GND, the pins on the left/right are the stereo channels which connect via an 10nF capacitor to the Signal In Pin of the MSGEQ7 as shown in the schematic. You can additionally add a potentiometer to the Signal In Pin to control the sensitivity of the Audio Signal, but is really not necessary. The MSGEQ7 is connected to the Arduino with Analog Out pin connected to A1 (MSGEQ_OUT), Strobe Pin to D2 (STROBE), Reset Pin to D5 (RESET).