waveform_fft 0.0.3
waveform_fft: ^0.0.3 copied to clipboard
A Flutter package for real-time audio visualization using FFT (Fast Fourier Transform). and audio capture using microphone data
waveform_fft #
A Flutter package for real-time audio visualization using FFT (Fast Fourier Transform). This package captures audio input and displays it as an animated waveform using fl_chart.
Features #
- Real-time audio capture and frequency analysis
- Customizable frequency spectrum ranges
- Smooth animated waveform visualization
- Support for different sample rates and buffer sizes
- Easy-to-use API
Getting Started #
Installation #
Add this to your package's pubspec.yaml
file:
dependencies:
waveform_fft: ^0.0.1
Platform Setup #
Android
Add the following permissions to your android/app/src/main/AndroidManifest.xml
:
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
iOS
Add the following keys to your ios/Runner/Info.plist
:
<key>NSMicrophoneUsageDescription</key>
<string>This app needs access to microphone to visualize audio.</string>
Customizing the Waveform #
The WaveFormWidgetEq
widget accepts several parameters for customization:
WaveFormWidgetEq(
data: data, // Frequency data
animationDuration: Duration(milliseconds: 200), // Animation speed
updateInterval: Duration(milliseconds: 48), // Update frequency
barWidth: 5.0, // Width of each bar
maxY: 80.0, // Maximum Y value
minY: -80.0, // Minimum Y value
barColor: Colors.white, // Color of bars
barAlpha: 0.5, // Opacity of bars
);
Audio Capture Service #
The AudioCaptureService
can be customized with different sample rates and buffer sizes:
final service = AudioCaptureService(
sampleRate: 44100, // Default: 44100 Hz
bufferSize: 256, // Default: 256 samples
);
Note: The
AudioCaptureService
is a singleton and should be initialized once in your application.
Example #
Here's a demo of the audio visualization in action:
The example above demonstrates:
- Real-time audio capture from device microphone
- FFT processing of audio data
- Animated waveform visualization
- Responsive UI with start/stop recording controls
Check out the complete example code in the /example
directory to see how to implement this in your app.
Frequency Spectrum #
The package includes predefined frequency spectrum ranges from 0Hz to 22kHz, following standard audio frequency bands. You can customize these ranges by modifying the AudioWaveFormConstants.defaultFrequencySpectrum
.
Performance Considerations #
- Higher sample rates provide better frequency resolution but require more processing power
- Smaller buffer sizes reduce latency but may cause performance issues
- Consider device capabilities when adjusting these parameters
Compatibility #
- Android: API 21+
- iOS: iOS 13.0+
- If you do not want to use raw audio data by microphone then you can use any other flutter package like
record
orflutter_sound
etc for audio recording purpose.
License #
Contributing #
Contributions are welcome! Please feel free to submit a Pull Request.