metronome 2.0.13 copy "metronome: ^2.0.13" to clipboard
metronome: ^2.0.13 copied to clipboard

Efficient, accurate, cross-platform metronome; supports volume, BPM, and audio source settings.

Metronome #

pub package

Efficient, accurate, cross-platform metronome; supports volume, BPM, time signature and audio source settings.

Version 2.0 refactored most of the code, with better performance (BPM>600), less resource usage, and more accurate time signature callback.

#

Metronome

Demo #

Live preview

TODO #

  • ✅ Add support for time signature #2
  • ✅ Add windows support
  • ✅ Add tickCallback for web

Quick Start #

Init #

final metronome = Metronome();
metronome.init(
    'assets/audio/snare.wav', 
    accentedPath: 'assets/audio/claves44_wav.wav',
    bpm: 120, 
    //0 ~ 100
    volume: 50,  
    enableTickCallback: true,
    // The time signature is the number of beats per measure,default is 4
    timeSignature: 4,
    sampleRate: 44100,
    // iOS only. Keep true unless the host app manages AVAudioSession.
    manageAudioSession: true,
);

iOS audio session management #

manageAudioSession controls whether the plugin configures and activates the shared AVAudioSession during initialization.

The default value is true, which preserves the existing behavior. The plugin uses the playAndRecord category, videoRecording mode, and activates the audio session.

Set it to false when the host application already manages AVAudioSession, for example through the Flutter audio_session package. The host application must configure and activate its audio session before starting audio playback:

await metronome.init(
  'assets/audio/snare.wav',
  manageAudioSession: false,
);

This parameter only affects iOS. It does not change audio session behavior on Android, macOS, Windows, or Web.

Play #

metronome.play();

Pause #

metronome.pause();

Stop #

metronome.stop();

Volume #

metronome.getVolume();
metronome.setVolume(50);

BPM #

metronome.setBPM(120); 
metronome.getBPM(); 

TimeSignature #

Disable accents when less than 2

metronome.setTimeSignature(4); 
metronome.getTimeSignature(); 

isPlaying #

Get play state

metronome.isPlaying();

isInitialized #

Getter that returns true if the metronome has completed initialization. After init is called. Not platform dependant.

metronome.isInitialized;

setAudioFile #

main, accent can be set at the same time or individually

metronome.setAudioFile(
    mainPath:'assets/audio/snare.wav',
    accentedPath:'assets/audio/claves.wav'
);
metronome.setAudioFile(
    mainPath:'assets/audio/snare.wav',
);

destroy #

metronome.destroy();

Tick callback #

enableTickCallback must be set to true in init

metronome.tickStream.listen((int tick) {
  print("tick: $tick");
});
18
likes
150
points
1.04k
downloads
screenshot

Documentation

API reference

Publisher

verified publisherdev.sumsg.com

Weekly Downloads

Efficient, accurate, cross-platform metronome; supports volume, BPM, and audio source settings.

Repository (GitHub)
View/report issues

License

BSD-3-Clause (license)

Dependencies

flutter, flutter_web_plugins, plugin_platform_interface, web

More

Packages that depend on metronome

Packages that implement metronome