getNoteFromFrequency function

String getNoteFromFrequency(
  1. double frequency
)

Implementation

String getNoteFromFrequency(double frequency) {
  if (frequency <= 0) return "--";
  // Fórmula: n = 12 * log2(f / 440) + 69
  // 69 es el número MIDI de A4 (440Hz)
  final n = 12 * (math.log(frequency / 440) / math.log(2)) + 69;
  final midiNumber = n.round();

  final notes = ['C', 'C#', 'D', 'D#', 'E', 'F', 'F#', 'G', 'G#', 'A', 'A#', 'B'];
  final octave = (midiNumber ~/ 12) - 1;
  final noteIndex = midiNumber % 12;

  if (midiNumber < 0 || noteIndex < 0) return "?";

  return "${notes[noteIndex]}$octave";
}