The short answer: silence at the front of a GarageBand bounce never deletes a note — across 15 different leading-silence lengths from 0 to 10 seconds, all four notes returned every time, at pitches 60,62,64,67, with velocity only moving between 112 and 113. What silence does change is the timestamp: the first onset comes back early, by up to 84.4 ms. And the drift is not proportional. With 0.1 s of silence the note is 4.5 ms late; at 0.25 s it is 29.4 ms early; at 1 s it is 82.8 ms early; beyond 3 s it settles to about 73–77 ms early and stays there. The cause is not a timing bug in the detector. The voice gate is computed from the quietest tenth of the whole file: silence drags that floor from 0.29586 to 0.00000, the gate collapses from 0.29941 to 0.04497, and the 2048-sample analysis window (92.88 ms, eight frames) already contains the attack before its true frame arrives — so faint pre-attack frames clear the lowered gate and claim the note's start. Export a tight region and the whole problem disappears: with 0.2 s or less of lead-in, all 15 measurements stayed within ±4.5 ms. Conversion runs entirely in your browser — no upload, no account, nothing to install.
1. Should you convert here, install something, or stay in GarageBand?
Before the numbers, the honest decision. Three situations, three answers, each pinned to a value measured on this converter rather than to an opinion about a host application.
Convert it right here. You have one clean line and you want its pitches as editable notes. Leading silence is not a reason to re-bounce: 0 s, 0.05 s, 0.1 s, 1 s, 3 s and 10 s of silence all returned 4 of 4 notes with identical pitches. Export the region starting close to the first attack, drop the file on the converter, and take the .mid and .csv. At 0.2 s of lead-in or less, the measured onset error never exceeded 4.5 ms.
Go install a plugin, or use GarageBand's own capture. You need onsets that land exactly on the project grid, pitch bend, or note-by-note expression. With 1 s of leading silence our first note is written at tick 881 instead of 960 at 120 BPM — 79 ticks early — and the 90-byte file contains 0 pitch-bend events, 0 program-change events and 1 note channel. A tighter grid does not automatically repair that: quantizing the same padded file to 1/16 made the error worse, to 125 ms. What pitch bend detection adds sets out the gap, and when a plugin is worth installing covers the trade. Walking away is the right call here.
GarageBand is not optional. You need separate parts, stems, drums, a tempo map or a chosen instrument sound. Whatever bounced file goes in, the artifact that comes out is one 90-byte Standard MIDI File with 2 tracks, 1 note channel, 1 tempo event, 0 key-signature events and 0 text events; no export setting turns one audio file into several tracks. Do the separation in the DAW, then bring each isolated line back here. Why the converter cannot pull out just one voice and what a MIDI file actually is describe those walls in numbers.
Everything after this section assumes you are in the first case. That is the one where a browser converter is genuinely the fastest path.
2. The route, in three sentences
Export the region from GarageBand as one audio file, trimmed to start at or just before the first attack, with short auto-fades left alone. Drop it on this converter, download the .mid and the .csv, then drag the .mid back into your GarageBand project and load an instrument on the track. The rest of this page is about the one export choice left open — how much silence and fade surround the notes — and what those edges do to the reported times.
3. What we measured, and how
Every number below comes from running this site’s real dsp.js and midi.js in Node on synthesised material whose correct answer we already knew. No third-party tool was measured and no figure is estimated. The reference clip is four notes (C4 261.63 Hz, D4 293.66 Hz, E4 329.63 Hz, G4 392.00 Hz), 0.5 s each, with a mild harmonic series and 10 ms ramps, rendered at 22 050 Hz with a peak amplitude of 0.35. Unless stated: sensitivity 60, shortest note 60 ms, 120 BPM, quantize off, polyphonic mode. Leading silence was built by prepending an exact number of zero samples to the same array; nothing was recorded through a sound card.
The analysis grid is fixed by the converter, not by your GarageBand project: audio is resampled to 22 050 Hz, read with a 2048-point FFT stepped 256 samples at a time, so one frame is 11.610 ms (86.13 frames per second) and one window is 92.88 ms, or exactly eight frames. Monophonic search runs 55–1800 Hz; polyphonic peaks are read up to 4000 Hz with at most 6 peaks per frame. Your 44.1 kHz session and its time signature do not enter that arithmetic — we ran the same melody at 44.1k, 48k and 22.05k and the note list was identical every time.
Three neighbouring pages cover adjacent ground, and this one is deliberately narrower. How to prepare the input file explains that a note starting at exactly 0.000 s is analysed at almost no Hann-window weight, and advises a short lead-in so the first note is detected at all. Why a short region returns no notes measures the opposite failure — a region under 155 ms is too short to survive the window. Our four-DAW export overview has a five-row table showing that padded silence moves onsets, but it stops at “timestamps drift”. This page keeps one four-note phrase fixed, sweeps 15 silence lengths, and opens the segment() gate to show why the drift changes sign, where the cliff sits, what it does to the exported bytes, and which control actually fixes it. None of the tables below are reused from those pages; they are fresh runs made for this one.
4. Fifteen silence lengths: flat, then a cliff, then a plateau
The intuitive model is a straight line — more silence, more drift. That is not what the detector does. We prepended 0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.4, 0.5, 0.75, 1, 2, 3, 5 and 10 seconds of digital silence to the same clip and read back the first onset each time:
| Silence (s) | First onset (s) | True onset (s) | Offset (ms) | Notes | Velocity |
|---|---|---|---|---|---|
| 0.00 | 0.0000 | 0.0000 | 0.0 | 4 | 113,113,113,113 |
| 0.05 | 0.0464 | 0.0500 | −3.6 | 4 | 113,113,113,113 |
| 0.10 | 0.1045 | 0.1000 | +4.5 | 4 | 113,113,113,113 |
| 0.15 | 0.1509 | 0.1500 | +0.9 | 4 | 113,113,113,113 |
| 0.20 | 0.1974 | 0.2000 | −2.6 | 4 | 113,113,113,113 |
| 0.25 | 0.2206 | 0.2500 | −29.4 | 4 | 112,112,112,113 |
| 0.30 | 0.2322 | 0.3000 | −67.8 | 4 | 112,113,112,113 |
| 0.40 | 0.3251 | 0.4000 | −74.9 | 4 | 112,112,112,113 |
| 0.50 | 0.4180 | 0.5000 | −82.0 | 4 | 112,113,112,113 |
| 0.75 | 0.6734 | 0.7500 | −76.6 | 4 | 112,112,112,113 |
| 1.00 | 0.9172 | 1.0000 | −82.8 | 4 | 112,113,112,113 |
| 2.00 | 1.9156 | 2.0000 | −84.4 | 4 | 112,113,112,113 |
| 3.00 | 2.9257 | 3.0000 | −74.3 | 4 | 112,112,112,113 |
| 5.00 | 4.9226 | 5.0000 | −77.4 | 4 | 112,112,112,113 |
| 10.00 | 9.9265 | 10.0000 | −73.5 | 4 | 112,112,112,113 |
Three things are worth reading off that table. First, the sign flips: the 0.1 s and 0.15 s cases are late, not early, because with only a handful of silent frames the gate is still high and the onset is simply rounded to the nearest frame boundary (0.1 s is frame 9, which lands at 0.1045 s). Second, the cliff between 0.20 and 0.30 s is not gradual — the error jumps from −2.6 ms to −67.8 ms, a 26-fold change for 100 ms more silence. Third, the plateau is bounded: no measurement went beyond 84.4 ms early, which is under the 92.88 ms window length. That is the fingerprint of a window effect, not a scaling error.
Only the first note is hit this hard. In the 1 s case the four onsets were 0.9172, 1.4629, 1.9621, 2.4497 against true positions 1.0000, 1.4992, 1.9985, 2.4977 — offsets of −82.8, −36.4, −36.4 and −48.0 ms. Later notes drift too, but by roughly half as much, because the frames immediately before their attacks are already above the gate. The seven-column CSV is where these seconds are visible to four decimals.
5. Why: silence lowers a gate that belongs to the whole file
The mechanism is two lines of segment() in dsp.js. Before any note is grouped, the detector sorts the RMS of every frame in the file, takes the value at the 10th percentile as a noise floor, and interpolates between that floor and the loudest frame:
We first measured this whole-file gate on a different question — why padding a too-short region brings a note back, where the gate fell from 0.309651 to 0.044974. The gate values are clip-dependent, so the numbers below are for this four-note phrase. What is new here is the other side of the same mechanism: those lowered gates do not just rescue missing notes, they let pre-attack frames claim the start of notes that were never in danger, which is what produces the timestamp drift.
var floor = sorted[Math.floor(sorted.length * 0.10)] || 0;
var gate = floor + (an.rmsMax - floor) * (0.32 - 0.30 * sens);
At sensitivity 60 the multiplier is 0.32 − 0.30 × 0.6 = 0.14. On the unpadded 2 s clip almost every frame is loud, so the 10th percentile is nearly as loud as the peak: floor 0.29586, gate 0.29941. Once the silent prefix grows past about a tenth of the file, the 10th-percentile frame is silence, the floor goes to zero, and the gate collapses to 0.14 × rmsMax:
| Silence (s) | Frames | Floor (p10) | Gate | Claimed frame | True frame | Frames early | Offset (ms) |
|---|---|---|---|---|---|---|---|
| 0.00 | 165 | 0.29586 | 0.29941 | 0 | 0 | 0 | 0.0 |
| 0.10 | 173 | 0.29505 | 0.29872 | 9 | 9 | 0 | +4.5 |
| 0.20 | 182 | 0.29376 | 0.29761 | 17 | 17 | 0 | −2.6 |
| 0.25 | 186 | 0.22136 | 0.23534 | 19 | 22 | 3 | −29.4 |
| 0.30 | 191 | 0.08490 | 0.11799 | 20 | 26 | 6 | −67.8 |
| 0.40 | 199 | 0.00000 | 0.04497 | 28 | 34 | 6 | −74.9 |
| 0.50 | 208 | 0.00000 | 0.04497 | 36 | 43 | 7 | −82.0 |
| 1.00 | 251 | 0.00000 | 0.04497 | 79 | 86 | 7 | −82.8 |
| 3.00 | 423 | 0.00000 | 0.04498 | 252 | 258 | 6 | −74.3 |
| 10.00 | 1026 | 0.00000 | 0.04497 | 855 | 861 | 6 | −73.5 |
Now the second half. Each FFT frame reads a window of 2048 samples forward from its own start, so a frame beginning up to eight frames (92.88 ms) before the audible attack already contains that attack in its tail, at low but non-zero energy. With the unpadded clip those faint frames sit far below the 0.29941 gate and are discarded. With the gate at 0.04497 they clear it. Here is the exact boundary for the 1 s case, where the true attack is frame 86 at 1.0000 s:
| Frame | Time (s) | RMS | Salience | Poly peaks | Mono pitch |
|---|---|---|---|---|---|
| 77 | 0.8940 | 0.00000 | 0.0000 | 0 | — |
| 78 | 0.9056 | 0.00000 | 0.0000 | 0 | — |
| 79 | 0.9172 | 0.05540 | 0.0375 | 4 | — |
| 80 | 0.9288 | 0.12505 | 0.0691 | 2 | — |
| 81 | 0.9404 | 0.16799 | 0.0956 | 2 | — |
| 82 | 0.9520 | 0.20212 | 0.1218 | 1 | — |
| 83 | 0.9636 | 0.23138 | 0.1507 | 1 | — |
| 84 | 0.9752 | 0.25737 | 0.1851 | 1 | — |
| 85 | 0.9868 | 0.28104 | 0.2233 | 1 | 60 |
| 86 | 0.9985 | 0.30317 | 0.2495 | 1 | 60 |
| 87 | 1.0101 | 0.31931 | 0.2536 | 1 | 60 |
| 88 | 1.0217 | 0.31983 | 0.2536 | 1 | 60 |
Frame 79 is the whole story. Its RMS is 0.05540 — just above the collapsed gate, far below the original one — and because its 2048-sample window already includes the attack, it reports four spectral peaks including pitch 60. Grouping consecutive frames with the same pitch then declares the note's start at frame 79, seven frames = 81.3 ms before the true frame 86. The extra peaks at that frame (84, 88, 91) are transients that never survive the shortest-note gate, which is why the file still contains exactly four notes. Note also that those faint frames have salience between 0.0375 and 0.1851, below the monophonic threshold of 0.2000 — which is why monophonic mode barely drifts at all, as section 8 shows.
This is also why the error stops growing. A frame whose window does not overlap the attack has RMS exactly zero and cannot clear any positive gate no matter how much silence you add; the earliest possible claim is bounded by the eight-frame window. From 3 s to 10 s of silence the measured offset wanders only between −73.5 and −77.4 ms, changing by one frame as the attack lands at slightly different positions inside the hop grid. The four-step troubleshooting order puts format and mode ahead of sensitivity for a related reason: no slider rewrites a gate that was computed from the file as a whole.
6. It is not only the front: position, gaps and fades
If the cause is a whole-file percentile, then silence anywhere should lower the gate — not just a prefix. It does. We placed the same four-note phrase in seven export shapes:
| Export shape | Detected onsets (s) | What moved |
|---|---|---|
| Bare 2 s region | 0.0000, 0.4992, 0.9985, 1.4977 | reference |
| 1 s silence before | 0.9172, 1.4629, 1.9621, 2.4497 | first note −82.8 ms, later notes ~−36 to −48 ms |
| 1 s silence after | 0.0000, 0.4644, 0.9636, 1.4512 | first note exact; notes 2–4 pulled ~35–46 ms early |
| 1 s silence both sides | 0.9172, 1.4629, 1.9621, 2.4497 | identical to leading-only |
| 0.5 s gap after note 1 | 0.0000, 0.9172, 1.4629, 1.9505 | note 2 lands −82.8 ms before its true 1.0000 s |
| 0.2 s gap after note 1 | 0.0000, 0.6734, 1.1610, 1.6486 | note 2 lands −26.6 ms before its true 0.7000 s |
| 1 s before + 0.5 s gap | 0.9172, 1.9156, 2.4613, 2.9489 | both effects, no new notes |
Trailing silence does not leave the timing of later notes alone — a point worth stating plainly, because the common advice is that padding the end is harmless. It is harmless to the first note (still 0.0000 s) but lowers the same gate for the rest of the file, pulling notes 2–4 about 35–46 ms early. A silence gap in the middle does the same to the note that follows it: with a 0.5 s gap after the first note, note 2 was reported at 0.9172 s instead of 1.0000 s. The gate is global; the error is local to whatever attack sits after quiet frames.
Fades are the more surprising case, and they push the first onset in the opposite direction. GarageBand applies a short fade-in and fade-out to bounced regions by default. Our export overview measured that linear fades up to 100 ms leave note count, pitches and velocity untouched, but it did not measure onset times. We did, on the unpadded clip:
| Fade length | Notes | First onset (s) | Offset (ms) | Velocity |
|---|---|---|---|---|
| 0 ms | 4 | 0.0000 | 0.0 | 113,113,113,113 |
| 20 ms | 4 | 0.0116 | +11.6 | 113,113,113,113 |
| 50 ms | 4 | 0.0348 | +34.8 | 113,113,113,113 |
| 100 ms | 4 | 0.0697 | +69.7 | 113,113,113,113 |
| 150 ms | 4 | 0.1045 | +104.5 | 113,113,112,112 |
| 200 ms | 4 | 0.1045 | +104.5 | 112,113,112,112 |
| 300 ms | 4 | 0.1277 | +127.7 | 111,113,112,111 |
| 400 ms | 4 | 0.1393 | +139.3 | 109,113,112,109 |
The fade case has its own gate signature. Because a fade does not add silent frames, the 10th-percentile floor stays high: 0.29586, 0.29555, 0.29505 and 0.29407 for fades of 0, 20, 50 and 100 ms, with the gate holding near 0.298–0.299. The opening frames are now attenuated below that high gate, so the first qualifying frame moves from 0 to 1, 3 and 6 — exactly the +11.6, +34.8 and +69.7 ms in the table. Only past 200 ms does the floor finally start to fall (0.22485) and velocities begin to drop. So the practical advice is asymmetric: a normal short auto-fade is safe for pitch and velocity, but it is not invisible to timing, and a long fade is a different problem from long silence.
7. What the exported file actually records
A drift in seconds becomes a drift in ticks. The writer in midi.js converts each onset with round(start × 480 × bpm / 60), so at 120 BPM one second is 960 ticks and the padded first note lands at 881 instead of 960:
| Silence (s) | First onset (s) | First tick | True tick | .mid size | First CSV row |
|---|---|---|---|---|---|
| 0.0 | 0.0000 | 0 | 0 | 89 B | 1,60,C4,0.0000,0.4180,0.4180,113 |
| 0.1 | 0.1045 | 100 | 96 | 89 B | 1,60,C4,0.1045,0.5224,0.4180,113 |
| 0.5 | 0.4180 | 401 | 480 | 90 B | 1,60,C4,0.4180,0.9520,0.5341,112 |
| 1.0 | 0.9172 | 881 | 960 | 90 B | 1,60,C4,0.9172,1.4512,0.5341,112 |
| 3.0 | 2.9257 | 2809 | 2880 | 90 B | 1,60,C4,2.9257,3.4482,0.5224,112 |
| 10.0 | 9.9265 | 9529 | 9600 | 90 B | 1,60,C4,9.9265,10.4490,0.5224,112 |
Two details matter if you are aligning to a DAW grid. The .mid grows from 89 to 90 bytes once the first delta-time needs a two-byte variable-length quantity — a one-byte change that encodes the entire timing error. And the note becomes longer, not just earlier: on the bare clip the first note ran 0.0000–0.4180 s (0.4180 s), while with 1 s of lead-in it ran 0.9172–1.4512 s (0.5341 s), because the trailing end of the note also finds frames above the lowered gate. Trimming silence is therefore a timing fix and a note-length fix.
The BPM box is not a fix, and its arithmetic is worth seeing. The CSV writer has no BPM argument at all — the same padded note list produced the identical first CSV row at 60, 90, 120, 140, 173 and 200 BPM. But the .mid tick grows with the tempo you typed, so the error measured in ticks grows with it:
| BPM | First tick | True tick | Tick error | .mid size |
|---|---|---|---|---|
| 60 | 440 | 480 | −40 | 90 B |
| 90 | 660 | 720 | −60 | 90 B |
| 120 | 881 | 960 | −79 | 90 B |
| 140 | 1027 | 1120 | −93 | 90 B |
| 173 | 1269 | 1384 | −115 | 90 B |
| 200 | 1468 | 1600 | −132 | 90 B |
How accurate the written tempo is measures the other half: the BPM is written verbatim and moves no notes. Here the notes are already displaced, and a higher BPM simply expresses the same 82.8 ms as more ticks. If you want the exact seconds, the CSV is the closer record of what the analyser saw; what a MIDI file is explains why it holds instructions rather than a timeline.
8. What actually fixes the timing
The obvious controls mostly do not. We took the 1 s padded clip — first onset 0.9172 s, 82.8 ms early — and changed one setting at a time:
| Control | Notes | First onset (s) | Offset (ms) | Verdict |
|---|---|---|---|---|
| sens 20 / 40 | 4 | 0.9288 | −71.2 | one frame better, still early |
| sens 60 / 80 / 100 | 4 | 0.9172 | −82.8 | no change at all above 40 |
| minms 0 | 28 | 0.9172 | −82.8 | fragments, onset unchanged |
| minms 60 / 150 / 300 | 4 | 0.9172 | −82.8 | onset unchanged |
| minms 500 | 2 | 0.9172 | −82.8 | loses notes, onset unchanged |
| mode = mono | 4 | 0.9868 | −13.2 | best single switch |
| quantize 1/4 | 4 | 1.0000 | 0.0 | exact here, but rewrites all times |
| quantize 1/8 | 4 | 1.0000 | 0.0 | exact here, same caveat |
| quantize 1/16 | 4 | 0.8750 | −125.0 | worse than doing nothing |
Monophonic mode is the real fix for a single-line part, and the frame table in section 5 explains why. It requires both the RMS gate and a harmonic-salience score above 0.35 − 0.25 × sens = 0.2000; the faint pre-attack frames score only 0.0375–0.1851, so the first accepted frame is 85 at 0.9868 s, just 13.2 ms early. The trade is that monophonic mode collapses chords — why the two modes fail differently measures that. Quantizing to 1/4 or 1/8 happens to snap this particular 1.0000 s onset back exactly, but it is a bulk rewrite of every onset in the file, and 1/16 demonstrably makes it worse; what the browser controls can and cannot change covers the general case. The reliable, no-side-effect fix is the one available in GarageBand before you export: trim the region so it starts within 0.2 s of the first attack.
9. GarageBand export checklist, in order
- Trim to the attack. With 0.2 s or less of lead-in, all five measured short cases stayed within ±4.5 ms and returned 4 of 4 notes at velocity 113. This single step removes the cliff, the tick error and the stretched note length.
- Do not leave a long tail either. 1 s of trailing silence left the first onset exact but pulled notes 2–4 about 35–46 ms early, because the floor is computed over the whole file.
- Keep short auto-fades, but know what they cost. Fades of 20, 50 and 100 ms kept all 4 notes and velocity 113, yet moved the first onset +11.6, +34.8 and +69.7 ms late. A 400 ms fade moved it +139.3 ms and dropped velocity to 109.
- Do not re-bounce to fix velocity. Across the 15 silence lengths velocity moved only between 112 and 113; the drift is timing, not loudness. Why export level changes velocity and not pitches gives the separate formula for that ladder.
- Use monophonic mode for one clean line. On the 1 s padded clip it cut the onset error from 82.8 ms to 13.2 ms without losing a note. For chords, stay in polyphonic and trim instead.
- Check the region is long enough. Silence will not delete a note, but a tightly trimmed short region can — a region under 155 ms returns none.
- Check the CSV before the piano roll. If pitches are right and the first
start_secis earlier than the waveform, suspect the bounce's edges, not the sensitivity slider. The CSV columns explained shows which ones come straight from the frame grid. - Choose the file format on its own merits. One .m4a can be lossless ALAC or 32 kbps AAC; that choice has a measured effect of its own, separate from the timing here.
If you are bouncing several parts, do them one file at a time; why there is no folder-drop batch button explains the workflow. On a phone the same page works with a file from the share sheet; mobile audio to MIDI covers the input differences. And if the notes themselves look wrong rather than early, the cleanup passes are the next step.
What GarageBand has built in (context only, not our measurements)
GarageBand can work with MIDI regions and software instruments, and it can export or share audio regions, so there is a route that never leaves the project. That is a menu-level fact about the application, not a number from this site, and it is not what this page tests. The reason an exported file is still worth discussing is simpler: an audio file is the one artifact any host can hand to this page, and an SMF .mid is the one artifact any host can take back. For the hosts where we walked the import path separately, see FL Studio, Ableton Live and Logic Pro. If your goal is per-note expression or a tempo map rather than a note list, stay in the DAW: our 90-byte export has nowhere to store them.
Questions people actually ask
Can GarageBand convert audio to MIDI?
GarageBand can work with MIDI, but if you bring an exported audio file to this converter the thing to watch is the bounce's edges: across 15 measured leading-silence lengths from 0 to 10 s, all 4 notes survived every time at pitches 60,62,64,67, while the first onset moved up to 84.4 ms early. Keeping the lead-in under 0.2 s held the error within ±4.5 ms. Export the region, drop it on this converter, and take the .mid and .csv. Staying inside the DAW only becomes necessary when you need separate parts, a tempo map or pitch bend: the file written here has 0 pitch-bend events and 1 note channel.
Does GarageBand have audio to MIDI?
If you mean an export that this browser converter can read, yes — and the host's own features are not what decide the result. The detector's voice gate is computed from the quietest tenth of the whole file: adding 1 s of leading silence dropped the floor from 0.29586 to 0.00000 and the gate from 0.29941 to 0.04497, which let a frame seven 11.610 ms frames before the true attack claim the note start. Trim the region and the drift goes away without changing any setting. The four-DAW export overview covers the other export settings that change the result.
Why is my first MIDI note early?
On a bounce with silence at the front it is usually the gate, not the pitch detector. Each FFT frame reads 2048 samples (92.88 ms, eight frames) forward, so frames before the audible attack already contain it at low energy; once silence lowers the whole-file gate to 0.04497, a frame with RMS 0.05540 qualifies and becomes the note's start. The measured error is 82.8 ms at 1 s of silence, 84.4 ms at 2 s and 73.5 ms at 10 s — bounded by that window, not proportional to the silence. The four-step troubleshooting order covers the cases where notes are actually missing rather than early.
Do the short fades my DAW adds on bounce matter?
Not to pitches, but yes to timing. Fades of 20, 50 and 100 ms all returned the same 4 notes at velocity 113, yet pushed the first onset +11.6, +34.8 and +69.7 ms late — the opposite direction from leading silence, because the fade suppresses the opening frames below a gate that stays near 0.298. At 400 ms the offset reached +139.3 ms and velocity fell to 109. A normal short auto-fade is safe to leave on; a long one is worth checking in the CSV. How to prepare the input file covers the window-edge basics.
Convert an exported file now — runs in your browser, nothing is uploaded.
Related guides
- Other DAWs audio to MIDIWhich export settings change the notes: length, level, channels, silence and fades
- WAV to MIDIThe two edges of the file, the Hann window and why a short lead-in helps detection
- Reaper audio to MIDIWhy a region under 155 ms returns no notes
- Cubase audio to MIDIDoes export level change which notes come back: the 16-bit -58 dB threshold
- Studio One audio to MIDIWhat stereo and hard pan cost the notes: the (L + R) / 2 sum and one-frame delay wall
- Audio to notesThe 7-column CSV and the exact seconds behind every onset
- Tempo accuracyWhy the written BPM is your input and does not move the notes
- What is a MIDI fileInstructions not audio: format, tracks, channels and bytes
- How to make a MIDI fileThree routes, one 2-track file, compared byte by byte
- MIDI editorWhat the browser controls can and cannot change after conversion
- Mono vs polyWhy the two detection modes fail differently on the same clip
- Fix dropped notesThe order to fix it: format, mode, sensitivity, shortest note
- Clean up a converted MIDIThe passes that remove ghost notes and split objects
- Sample rate & MIDIWhy 44.1k, 48k and 22.05k return the same note list
- Humanize robotic MIDIWhy the export is grid-locked and velocity-flat
- Drum transcription limitsThe 55 Hz floor, the 4000 Hz ceiling and the 11.61 ms grid
- Pitch bend detectionWhat a glide adds to your MIDI, and when it matters
- Audio to MIDI pluginWhen to install one, and when the browser is enough
- M4A and FLAC to MIDIOne .m4a can be lossless ALAC or 32 kbps AAC
- Batch convert audioWhy there is no folder-drop button, and what one file at a time costs
- Mobile audio to MIDIWhat works on iPhone or Android, and what differs
- MIDI converterAnatomy of the file this converter writes