Audio Analyzer

A Flutter plugin for getting a list of amplitudes for an audio file. On Android's side, this plugin utilizes the Amplituda library.

Features

  • Get amplitude data from audio files

Installation

Add this to your package's pubspec.yaml file:

dependencies:
  audio_analyzer: ^0.0.1

And for Android, in your build.gradle (project level):

allprojects {
    repositories {
         maven { url 'https://jitpack.io' }
    }
}

On iOS it should just work.

Usage

First, import the package:

import 'package:audio_analyzer/audio_analyzer.dart';

Get Amplitudes

To get the amplitudes from an audio file:

try {
  List<int> amplitudes = await AudioAnalyzer.getAmplitudes('path/to/your/audio/file.mp3');
  // Process the amplitudes
} catch (e) {
  print('Error: $e');
}

Example

import 'package:flutter/material.dart';
import 'package:audio_analyzer/audio_analyzer.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(title: Text('Audio Analyzer Example')),
        body: Center(
          child: ElevatedButton(
            child: Text('Analyze Audio'),
            onPressed: () async {
              try {
                List<int> amplitudes = await AudioAnalyzer.getAmplitudes('path/to/your/audio/file.mp3');
                print('Amplitudes: $amplitudes');
              } catch (e) {
                print('Error: $e');
              }
            },
          ),
        ),
      ),
    );
  }
}

Requirements

  • Android SDK 21+
  • Flutter 2.0.0+

Limitations

Results from iOS and Android are slightly different. Example with an audio file of 2 seconds (same file for both platforms) :

  • Android output :
amplitudes = [0, 0, 0, 0, 0, 3, 7, 10, 11, 8, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 10, 13, 14, 11, 5, 1, 1, 0, 0, 0, 2, 11, 11, 11, 12, 12, 12, 10, 12, 10, 6, 1, 0, 1, 9, 9, 4, 0, 1, 2, 5, 11, 11, 9, 7, 2, 0, 0, 1, 0, 5, 10, 9, 2, 0, 0, 1, 9, 12, 8, 2, 1, 2, 1, 0, 0, 7, 17, 14, 12, 11, 10, 8, 7, 5, 3, 2, 1, 1, 0, 0, 0]
amplitudes.length = 92
  • iOS output :
amplitudes = [0, 0, 0, 0, 0, 3, 8, 10, 10, 6, 0, 0, 0, 1, 1, 0, 0, 1, 1, 8, 13, 14, 11, 6, 1, 1, 0, 0, 0, 4, 11, 11, 11, 12, 13, 11, 12, 12, 8, 3, 0, 1, 7, 10, 5, 0, 1, 2, 4, 11, 11, 9, 7, 2, 0, 1, 1, 1, 7, 10, 7, 1, 0, 0, 6, 12, 10, 3, 1, 2, 1, 0, 0, 7, 16, 14, 12, 11, 10, 8, 7, 5, 3, 2, 1, 1, 0, 0, 0, 0, 0]
amplitudes.length = 91

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is licensed under the MIT License - see the LICENSE file for details.


This README provides an overview of your plugin, installation instructions, usage examples, and other relevant information. You may want to adjust the content based on your specific implementation details, version numbers, and any additional features or limitations of your plugin.

Remember to create a LICENSE file in your repository if you haven't already, and choose an appropriate license for your project.

Would you like me to explain or elaborate on any part of this README?