Skip to content

i-Saac-IV/FFT-spectrum-analyser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

36 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FFT Spectrum Analyser

I was unhappy with some of the VU metres out there, so decided to make my own.

Features

  • Supports both mic and line in audio inputs
  • Fully addressable RGB led panel
  • Easy to add your own custom animations (with some basic coding knowledge)
  • Easy animation and input switches
    • Single press mode button to cycle VU metre style

    • Long press mode button to cycle audio input method

      Green -> Mic

      Red -> Line

To do

  • Add in a "sleep" mode that just plays animations
  • Add in a display off function
  • Add a ractive raindrop animation
  • Add a blur funtion??

Usage

Hardware and setup

Here is a very vague list of things you'll need to recreate this:

  • Raspberry Pi Pico
  • FastLED compatible matrix (something like this)
  • Some common components to deal with the audio signal and/or a microphone (ideally this one but this one also works)
  • Access to a 3d printer for the frame
  • Access to a laser cutter for the interlocking grid (or a lot of spare time and a craft knife)

Schematic

schematic for pcb

Computer setup for line input (optional)

I would recommend sending the audio signal directly to the spectrum analyser (no splitters etc.) this will require the audio source to have at least two audio outputs (ie. speakers and a second 3.5mm audio jack) and using either a Stereo Mix output or using a tool like VoiceMeeter.

Doing this can minimise the possibility of clipping and is just in my opinion better.

Code

Once you're ready to upload the code, firstly ensure you have installed the following libraries: (either via the built-in library manager or the following links)

Then ensure that the following code describes the hardware in the best possible way:

#define BUTTON_PIN 2
#define LED_MAXTRIX_PIN 7
#define MATRIX_HEIGHT 16
#define MATRIX_WIDTH 16  //also dictates the number of VU bands supports values of (2, 4, 8, 10, 16, 20 and 32) without modifying code
#define MAX_MAXTRIX_BRIGHTNESS 255
#define LED_TYPE WS2812B
#define COLOUR_ORDER GRB
#define MIC_IN_PIN A2
#define AUDIO_IN_PIN A2
#define FRAMES_PER_SECOND 120
#define TIME_OUT 60         //in seconds
#define POWER_OFF_MATIRX 5  //in minutes

Important

Be sure you have added the correct board to the board manager within the arduino program, to check navigate to the following

File -> Preferences -> Additional board manager URLs:

Add this URL to it: https://github.com/earlephilhower/arduino-pico/releases/download/global/package_rp2040_index.json

Then open the baords manager and serach Pico install the board package made by Earle F. Philhower.

Board Manager

Ensure you have the correct board and port selected hit upload and you should be good to go!

Bugs fixes and updates

Once I'm happy with the state of this project, it will likely not be updated much. So updates past this point will be very sporadic.

Copyright and licencing

See licence in depth info.

This project uses the following third-party libraries:

Contact me should any of this be wrong.