Skip to content

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

License

Notifications You must be signed in to change notification settings

biner88/metronome

Repository files navigation

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,
);

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();

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");
});

About

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

Resources

License

Stars

Watchers

Forks

Packages

No packages published