Under the hood
What the analyzer actually measures
You can sit down with a favourite sample, open the breakdown, and finally see why it always sat with one bassline and never with another. The answer is usually three things: air, density and phase coherence. Nobody looks at them, and all three are measured here.
Every figure below was measured on a library of 33,971 samples. We do not round them in our favour.
The “Why this sample” panel
Every match opens a panel that lists exactly what put the sample above the rest: key source and confidence, BPM source, role fit, brightness, centroid in Hz, air percentage, density, and stack fit against the reference.
Look at the Key conf and BPM conf rows. The app says plainly when it is unsure — and that is not a disclaimer but the central feature: the confidence is calibrated, as shown below.
How a sample is picked
The ranking formula is literally this:
Confidence then demotes anything whose key is a guess. An uncertain match cannot outrank a certain one on a coincidence.
What gets measured
Everything measured turns into a filter straight away. Type, layers, character and brightness switch in one row, air is set by the knob on the right — matching rebuilds on every move, with no “apply” button.
Key
Chroma with Shaath profiles, generalised Goertzel at exact note frequencies, harmonic summation, two-resolution analysis for the bass register.
Agreement with the pack’s own tag: 40.9% on pitch class and 29.3% including mode, across 1,500 samples. An important caveat: pack tags are not ground truth themselves — they are often wrong, or refer to the pack rather than the file.
The honest claim is a different one: confidence is calibrated. Agreement rises monotonically with the reported confidence — from 26% in the bottom band to 86% in the top. The app tells you when it is unsure, and it is right about being unsure.
Tempo
When a tempo is present in the filename or tags, it steers detection and agreement is near 100% by construction. That is not an achievement, and presenting it as one would be dishonest.
The real figure is blind detection with no hint: 63.2% within 1 BPM, and 82.6% on 5–12 second loops, which is what most drum and bass material is.
Long files score far worse (around 31%), and the reason is worth stating: three quarters of files over 12 seconds are FX, vocal chops and risers whose length does not sit on a bar grid at all. There is no tempo in them to find.
Brightness
Energy-weighted spectral centroid, with thresholds at 1400 / 3000 / 5800 Hz.
It splits the library into even quarters (22 / 26 / 27 / 25%) and agrees with role: hats 96% bright, subs 85% dark.
Air
The share of energy above 9 kHz — its own axis, not a part of brightness. Median by role:
- sub 0.001
- atmo 0.018
- kick 0.045
- FX 0.082
- bass 0.123
- clap 0.161
- snare 0.304
- hat 0.506
Correlation with brightness is only −0.21: these are genuinely different questions. An atmo pad can sit high in the spectrum and have no air at all.
Density
RMS over peak while the sample is sounding, silence excluded. Median by role:
- reese 0.540
- kick 0.435
- sub 0.318
- bass 0.279
- snare 0.254
- hat 0.151
About 6% of the library reaches 0.45, which is where an engineer would call a raw sample already dense. The scale is deliberately not rescaled to flatter the number — a raw sample is meant to be worked on.
Air is not only a measured number, it is also a knob in the filter bar. You set how much top you want in the results and the list rebuilds around that — no listening through everything to weed out the too dull or the too hissy.
Starting note for percussion
Kicks and snares have no key, but they do have a pitch in the hit. It is detected with an NSDF fundamental and shown in its own shade, distinct from the amber used for key conflicts.
Timbre vector
20 dimensions: band energies across 40/120/300/800/2000/4500/9000/13000 Hz and up, centroid mean and movement, rolloff, flux, decay slope, sustain, attack position, low drift.
Nearest-centroid role recognition from the vector alone: 33.8% against a 7.7% chance baseline.
Files other browsers will not open
Our own WAV reader, tolerant of headers that are not to the letter: fmt chunks of 18, 20 or 40 bytes instead of the canonical 16.
Not a detail: in a library of 33 971 samples, one whole pack is written with a 20-byte fmt chunk — 943 files out of 948. Standard reader libraries reject those outright, so in an ordinary browser that pack simply would not open. It is a common story with samples that came out of Kontakt libraries: the audio inside is plain PCM, only the header is malformed.
Stack fit
The measurement the “why does this sit with that” answer is built around. For a chosen reference sample the app cross-correlates the low band of both waveforms, searching over ±50 ms of alignment and both polarities, and reports:
- how coherent the shapes are
- how many dB the aligned sum gains over an incoherent one — +3.0 dB is the ceiling, meaning perfectly coherent
- whether one layer needs inverting
- and by how much to nudge it
Below 55% coherence the app says so and stops. Different shapes do not stack, and pretending otherwise would be passing noise off as a result.
How a sample reaches the analysis — and how it gets back into the project
The other half is that the loop closes: the library comes from your own disk, the question is asked by the project itself, and what you find goes straight back onto the track.
The library comes from your own disk
You point Orbit at folders — it walks them in the background and analyses every file: wav, flac, aif, aiff, ogg, mp3, wv. The analysis runs on your machine and the result goes into a local database. Originals are never rewritten or moved.
The project itself says what to look for
The CLAP plugin sits on the master bus and listens to what is playing. Pressing “В ORBIT” carries the detected key into the app and the list rebuilds around it; tempo comes along too when it is enabled. You never type the key — it is taken from your own track.
It listens in 2.4-second chunks for up to 30 seconds, and stops early once confidence is high enough. The audio thread only hands over a buffer: the analysis runs elsewhere and never holds up the DAW.
What you find is dragged back out
From the list straight onto an FL Studio track, into an Explorer folder, or into a browser upload form. What travels is the real file on disk, not a copy from the Orbit database. In Explorer it lands in the folder under the cursor — not in whichever window happens to be open elsewhere.
What the analyzer does not do
- It does not rewrite or move your files
- It does not send your library to the cloud — all analysis is local
- It does not write music for you, and it does not replace your ears