All Projects → tomer8007 → real-time-audio-fft

tomer8007 / real-time-audio-fft

Licence: MIT license
iOS library for analysing/visualising audio data at real-time

Programming Languages

objective c
16641 projects - #2 most used programming language
c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language

Projects that are alternatives of or similar to real-time-audio-fft

Openear
windows based project that try to decoding protocols (tetra,dmr, ...) using rtl-sdr
Stars: ✭ 200 (+852.38%)
Mutual labels:  fft
lsp-dsp-lib
DSP library for signal processing
Stars: ✭ 37 (+76.19%)
Mutual labels:  fft
gqrx
Software defined radio receiver powered by GNU Radio and Qt.
Stars: ✭ 2,345 (+11066.67%)
Mutual labels:  fft
Heart Rate Measurement Using Camera
real time application to measure heart rate
Stars: ✭ 202 (+861.9%)
Mutual labels:  fft
Gist
A C++ Library for Audio Analysis
Stars: ✭ 244 (+1061.9%)
Mutual labels:  fft
susa
High Performance Computing (HPC) and Signal Processing Framework
Stars: ✭ 55 (+161.9%)
Mutual labels:  fft
Audiospectrum
Audio spectrum using fft in iOS
Stars: ✭ 178 (+747.62%)
Mutual labels:  fft
BurstFFT
FFT implementation in C# optimized for Unity's Burst compiler
Stars: ✭ 90 (+328.57%)
Mutual labels:  fft
BDMatch
An automatic subtitle shifter from a video to another. 将字幕由一个视频匹配到另一个的自动时间轴平移工具。
Stars: ✭ 44 (+109.52%)
Mutual labels:  fft
osm
Open sound meter. FFT based application for tuning sound systems.
Stars: ✭ 122 (+480.95%)
Mutual labels:  fft
Fourier
Fast Fourier transforms (FFTs) in Rust
Stars: ✭ 206 (+880.95%)
Mutual labels:  fft
Noise
Noise is an Android wrapper for kissfft, a FFT implementation written in C.
Stars: ✭ 234 (+1014.29%)
Mutual labels:  fft
tinyspec-cling
tiny spectral synthesizer with livecoding support
Stars: ✭ 31 (+47.62%)
Mutual labels:  fft
Dcfnet pytorch
DCFNet: Discriminant Correlation Filters Network for Visual Tracking
Stars: ✭ 200 (+852.38%)
Mutual labels:  fft
FFTVisualizer
This project demonstrates DSP capabilities of Terasic DE2-115
Stars: ✭ 17 (-19.05%)
Mutual labels:  fft
Rustfft
A mixed-radix FFT library written in pure Rust
Stars: ✭ 183 (+771.43%)
Mutual labels:  fft
ooura
Javascript port of Ooura FFT implementation
Stars: ✭ 23 (+9.52%)
Mutual labels:  fft
drop
A LÖVE visualizer and music player
Stars: ✭ 17 (-19.05%)
Mutual labels:  fft
rfsoc sam
RFSoC Spectrum Analyser Module on PYNQ.
Stars: ✭ 44 (+109.52%)
Mutual labels:  fft
ModularMusicVisualizer
Project in Hiatus, unmaintained, being rewritten privately. Will Open Source when stuff is ready. Project will be Renamed.
Stars: ✭ 81 (+285.71%)
Mutual labels:  fft

Real-time audio analysis and FFT for iOS

This library helps you visualize or process sound as it is played by providing you with a currently-played spectrum data and samples, at any given time.

Features

  • Provides accurate and high-resolution data, partially written in C
  • Uses Apple's (fast) implementation of FFT - vDSP API from the Accelerate framework
  • Makes use of FFT overlapping (of 512 frames) for better timing
  • Can process real-time input from the microphone too

How to use

For playing audio files:

Initialization

self.audioFile = [[AudioFile alloc] init];
NSURL *url = [[NSBundle mainBundle] URLForResource:@"My Song" withExtension:@"mp3"];
[self.audioFile loadAudioWithURL:url withCompletionCallback:^(NSError *error)
{
   /* check error */
        
   // Let it play...
   error = [self.audioFile play];
        
   /* check error again */
}];

Getting live data

// Later in the program, for example in your update() function...
LiveAudioData realtimeAudioData = self.audioFile.liveAudioData;
LiveAudioChannelData leftChannel = realtimeAudioData.channel1;

if (leftChannel.containsData)
{
    // Get realtime frequencies data and waveform as pure float arrays
    float (*fftResults)[CHUNK_SIZE] = (float (*)[CHUNK_SIZE])leftChannel.fftResults.data;
    float *waveform = leftChannel.samples.data;
    UInt64 numFFTChunksAvailable = leftChannel.fftResults.numChunksAvailable;
    UInt64 numSamplesAvailable = leftChannel.samples.numSamplesAvailable;

    // Process the spectrum or the samples in various ways,
    // e.g drawing them to screen to create audio visualizations

    int frequency = 70;
    int bin = FrequencyToBinIndex(frequency, self.audioFile.playedAudioFormat.mSampleRate, CHUNK_SIZE);
    float bassMagnitudeInChannel1 = fftResults[0][bin];
    int height = bassMagnitudeInChannel1 / 2;
    self.band1.frame = CGRectMake(50, 500 - height, 15, height);

    // etc.
}
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].