A key finder may show a primary label and several alternatives. That does not mean the recording contains all of those keys, and the first label is not a substitute for checking the tonal centre.
I’m Alex from the Creatune team. On October 20, 2026, I tested the signed-out Creatune Key & BPM Finder with a synthetic eight-second scale that I created locally. This is one controlled input, not an accuracy benchmark or a test of a full musical mix. I inspected the displayed results; I did not conduct a listening evaluation.
Pitch collection and tonal centre are different
C major uses the notes C, D, E, F, G, A, B. A natural minor uses the same pitch classes, starting from A. The shared note collection alone cannot tell you which note functions as home. Phrase endings, harmony, bass movement, note duration, and emphasis provide additional context.
Also distinguish a key estimate from a chord chart. “C Major” does not tell you which chord occurs at second four, whether the song modulates later, or which notes a melody uses at each instant.
Build an input whose contents you know
This Python script uses only the standard library. It writes mono, 16-bit PCM at 44,100 Hz: one second each of C4, D4, E4, F4, G4, A4, B4, C5. Short envelopes soften the boundaries. It is deliberately simple and contains no borrowed recording.
import math
import struct
import wave
sample_rate = 44100
notes = [60, 62, 64, 65, 67, 69, 71, 72]
samples = []
for midi in notes:
frequency = 440 * 2 ** ((midi - 69) / 12)
for i in range(sample_rate):
t = i / sample_rate
envelope = max(0, min(1, t / 0.02, (1 - t) / 0.05))
value = 0.25 * 32767 * envelope * math.sin(2 * math.pi * frequency * t)
samples.append(int(value))
with wave.open("c-major-scale.wav", "wb") as out:
out.setnchannels(1)
out.setsampwidth(2)
out.setframerate(sample_rate)
out.writeframes(struct.pack("<" + "h" * len(samples), *samples))
The file is 352,800 frames long. That is eight seconds because duration equals frames divided by sample rate. A scale is useful for checking this narrow input; it is not representative of drums, dense harmony, detuned instruments, or changing keys.
Run the public workflow
Choose audio, select the generated WAV, and confirm the displayed filename and 8.0-second duration. Then click Analyze audio. I did this without signing in or spending generation credits.
The displayed result was C Major, with A Minor / G Major listed as other possibilities. The page also displayed 60.1 BPM and alternatives 30.1 / 120.2. That tempo observation is separate from the key question; one note starts every second in this fixture.
C Major agrees with the way this input was constructed. A Minor shares its pitch collection. G Major being offered does not establish that the input contains an F-sharp, nor does it reveal how the tool computed its alternatives. I am reporting the interface, not claiming knowledge of its scoring process.
Use the result as a candidate for the next check
For a real song, record the filename, section, primary estimate, and alternatives. Then check whether the melody and bass settle convincingly on the proposed home note. If the song changes tonal centre, analyse meaningful sections instead of forcing the whole recording into one label.
Do not turn a successful scale check into a percentage accuracy claim. The result does not test relative-minor discrimination, full-mix separation, or modulation. Those require additional inputs with known context and a defined evaluation method.
A useful note might read: “Tool suggests C major; A minor is an alternative; chorus ending still needs listening confirmation.” That is a more honest handoff than “Key verified: C major” when all you have done is press Analyze.


Top comments (0)