Audio_Reactive.ino
1 // SPDX-FileCopyrightText: 2017 Phillip Burgess for Adafruit Industries 2 // 3 // SPDX-License-Identifier: MIT 4 5 // Sound level sketch for Adafruit microphone amplifier. 6 // For the GEMMA sequin masquerade mask. 7 8 #define SAMPLE_WINDOW 33 // Sample window width in mS (33 mS = ~30 Hz) 9 #define LED_PIN 0 // DIGITAL pin # where LEDs are connected 10 #define MIC_PIN A1 // ANALOG pin # where microphone "OUT" is connected 11 12 void setup() { 13 pinMode(LED_PIN, OUTPUT); 14 } 15 16 void loop() { 17 // Listen to mic for short interval, recording min & max signal 18 unsigned int signalMin = 1023, signalMax = 0; 19 unsigned long startTime = millis(); 20 while((millis() - startTime) < SAMPLE_WINDOW) { 21 int sample = analogRead(MIC_PIN); 22 if(sample < signalMin) signalMin = sample; 23 if(sample > signalMax) signalMax = sample; 24 } 25 int peakToPeak = signalMax - signalMin; // Max - min = peak-peak amplitude 26 int n = (peakToPeak - 10) / 4; // Remove low-level noise, lower gain 27 if(n > 255) n = 255; // Limit to valid PWM range 28 else if(n < 0) n = 0; 29 analogWrite(LED_PIN, n); // And send to LEDs as PWM level 30 }