|
VibroSonics
v1.0.2-mozzi-implementation-721-g70ecc55
Arduino Library for Translating Audio into Vibrations
|
Vibrosonics is a real-time audio-to-haptics system with an interactive web interface that allows deaf, hard-of-hearing, and sensory-focused users feel sound through vibrarions.

Documentation (Doxygen) \ Hardware: Adafruit ESP32 Feather, MAX9744 Amplifier board, TT25-8 puck transducer, 3.5mm audio jack cable \ Dependencies: AudioLab · AudioPrism · Fast4ier
Millions of people experience barriers when it comes to audio-based media such as music, games, alerts, or live events. Vibrosoncis transforms those experiences by converting sound into meaningful tactile feedback.
Instead of hearing a beat, you feel it.

Built in collaboration with Cymaspace, an organization whose goal is to make culture and arts accessible for the deaf and hard-of-hearing community, Vibrosonics is designed to make music, entertainment, and environments more inclusive while also opening up new immersive experiences for everyone. This group makes up our primary audience, as haptic feedback can be used to replace or enhance audio. Some secondary users would be employers whose work environments make pure audio based communication difficult. They could instead receive important audio cues through haptics.
Real-Time Audio Conversion Transforms live audio input directly into haptic vibration with minimal latency.
Configurable Settings Through Web Application A browser-based app allows users to adjust haptic feedback in real-time with no recompiling or device flashing required.

Frequency-Aware Feedback Different pitches and intensities map to distinct vibration patterns, preserving musical structure and adding depth.
Accessible by Design Built specifically for deaf and hard-of-hearing users, while also enhancing experiences for others.
View the most stable version on GitHub
esp32 by Espressif Systems
Select other board and port...Adafruit ESP32 Feather and select it along with COMX for port where X is a number 0-6ch341 driver
Navigate to the Arduino libraries folder. This is usually located in Documents/Arduino/libraries/ for Windows and ~/Arduino/libraries/ for Mac and Linux.
Clone the repositories into the libraries folder:
Verify that the libraries are installed by opening Arduino IDE and going to Sketch > Include Library > Manage Libraries.... You should see AudioLab, AudioPrism, and Fast4ier in the list.
You should be ready to use the example sketches or create your own! To upload a sketch to the Vibrosonics hardware:

WebApp/ directory of the repository.Production Build: To build the application for production, run:
Run Linter Tool: To run ESLint for .js and .jsx files, run:
If you encounter any issues during setup or development, consider the following steps:
node -v and npm -v in your terminal.npm ci for a clean install. If issues still persist, try deleting the node_modules/ directory and running npm install again.SD File System Setup: To deploy the WiFi web app onto the ESP32, we'll need to store the web app onto a micro SD card connected to the ESP32. View WebApp/main/fileSys.h for the pin connections, these directions assume that the pins are connected properly.
Note: Uploading the web app onto the SD card only needs to be done everytime a new build of the web app is needed.
WebApp/main/config.h file and uncomment the following line to setup the ESP32 in upload modemain.ino in the ArduinoIDE once connected to a COM port.http://vibrosonics/dev.DEV_MODE_EN macro and rebuild and upload main.ino.http://vibrosonics.The Vibrosonics library aims to streamline three processes to enable translating audio into the haptic range: audio signal processing, audio analysis and finally audio synthesis. We utilize a few libraries to achieve this.
The first is AudioLab, which handles the audio signals between the external hardware and the processor. It reads audio from the analog-to-digital converters (ADC) and writes signals to the digital-to-analog converters (DAC) for synthesis. The captured audio signals from the ADC are analyzed using the other two library dependencies.
Fast4ier is used to perform the Fast Fourier Transform (FFT) on the signal data, which converts it from a representation of the signal over time (time domain) to a representation of how the signal is distributed over a range of frequency bands (frequency domain). The bandwidth of the frequency domain, or the max frequency, is equal to half of the sample rate of the ADC. Similarly, the number of different frequency bands is equal to half of the window size of the ADC.
AudioPrism is a library which analyzes the frequency domain data using various algorithms. By filtering this data for different AudioPrism analysis modules, we can detect certain elements of the audio signal. With music, this allows us to detect percussion, isolate prominent vocals and melodies, and more. With this analysis, distinct vibrations can be made to model elements of music by re-synthesizing these findings through AudioLab translated down into the haptic frequency range (0-230Hz).
The VibroSonics application utilizes both cores on the ESP32 for efficient real-time audio processing and web-based configuration.
http://vibrosonics when connected to the device's WiFi AP/network/*: WiFi network scanning and connection/analysis/*: Audio analysis configuration managementHapticSettings singletonQueueMessageHapticSettingsAnalysisConfigAnalysisConfig updated via message queue
VibrosonicsAPI: This is the core class; it is a unified interface for audio processing, analysis and synthesisGrain, GrainList, and GrainNode: These are the components for granular synthesis. Grain is the main grain class, and the list and node classes provide a way to manage a linked list of grains.We have an examples folder which contains individual programs that each showcase a different feature or technique possible using Vibrosonics and AudioPrism.
Template example to see basic use of the API and for a starting point for your own program.Grains example demonstrates using the provided classes for granular synthesis with a frequency and amplitude sweep, duration changes and wave shape variations.Percussion showcases our current percussion detection method, which uses a specially filtered frequency domain representation as input for an AudioPrism percussion module. It utilizes grains to create haptic feedback corresponding to the detected percussive hits.Melody is a similar example of strategic frequency domain processing, but to bring out melodic elements of music. These elements are resynthesized by translating the most prominent frequency peaks into the haptic range.Vibrosonics is our example demonstrating a combination of multiple techniques (Percussion and Melody) to provide a real-time translation of music to tactile feedback. Look here for an in-depth example utilizing the full capabilities of our library.