triggerNote method

  1. @override
Future<void> triggerNote({
  1. required String synthId,
  2. required double frequencyHz,
  3. required Duration duration,
  4. required double velocity,
  5. Duration delay = Duration.zero,
})
override

Implementation

@override
Future<void> triggerNote({
  required String synthId,
  required double frequencyHz,
  required Duration duration,
  required double velocity,
  Duration delay = Duration.zero,
}) async {
  final synth = _requireSynth(synthId);
  void playNow() {
    synth.synth
        .callMethodVarArgs<JSAny?>('triggerAttackRelease'.toJS, <JSAny?>[
          frequencyHz.toJS,
          (duration.inMicroseconds / Duration.microsecondsPerSecond).toJS,
          _tone!.callMethod<JSAny?>('now'.toJS),
          velocity.clamp(0.0, 1.0).toDouble().toJS,
        ]);
  }

  if (delay <= Duration.zero) {
    playNow();
    return;
  }

  final timer = Timer(delay, playNow);
  _scheduledTimers.putIfAbsent(synthId, () => <Timer>[]).add(timer);
}