The short answer: in all four of these DAWs the reliable route is the same — export the region as one audio file, drop it into this browser converter, download the .mid, and drag that back into your project. Which DAW you used does not change a single note; the export settings do. We ran this site’s own detector (dsp.js) on one known-answer four-note phrase (C4 D4 E4 G4) and varied only the way a DAW bounce is made. A bounce 33.98 dB quieter still returned all 4 of 4 notes, with velocity sliding from 113 to 50. A region cut to 150 ms returned zero notes, and the first note only appeared at 200 ms even though the shortest-note control reads 60 ms. Three seconds of silence before the region left all four pitches correct but pulled the first onset 74 ms early. A hard-panned mono part lost 11 velocity steps because the analyser averages the two channels. Fades up to 100 ms changed nothing at all. So the guesswork is not in the DAW menu — it is in four export settings you can control, and below is exactly what each one costs. The conversion itself runs entirely in your browser: no upload, no account, and nothing to install.
1. Should you convert here, install something, or stay in the DAW?
Before the export checklist, the honest decision. Three situations, three different answers, and each one is anchored to a number we measured on this converter rather than to an opinion about a DAW.
Convert it right here. You have one clean line, a region at least 200 ms long, and you want the pitches as notes you can edit. Export the region, drop it on the converter, and take the .mid and .csv. This is the case the measurements below are about: even at −33.98 dB the detector still returned 4 of 4 notes, so a quiet bounce is not a reason to re-record anything.
Go install a plugin, or use the DAW’s own capture. You need pitch bend, per-note expression, or a note-by-note correction of a performance. This converter writes none of that: our four-note export is 89 bytes with 0 pitch-bend events and 0 program-change events, only note-on and note-off on a single channel. A glide or a vibrato has nowhere to land — what pitch bend detection adds explains the gap, and when a plugin is worth installing covers the trade. Walking away is the right call here, and pretending otherwise would waste your time.
A DAW is not optional. You need separate parts, multiple channels, drums, or a specific instrument sound. This converter outputs a format-1 file with 2 tracks and 1 channel, and it sums stereo to mono before analysing anything: we put a melody in the left channel and a G4 pad in the right and got back one merged list of 60,67,79,67 instead of two parts. If your goal is stems or a drum kit, no export setting will produce them — why the converter cannot pull out just one voice and what drum transcription actually catches set out those walls. Do the separation in the DAW, then bring isolated audio back here.
Everything after this section assumes you are in the first case. That is the one where a browser converter is genuinely the fastest path.
What each of the four DAWs has built in (context only, not our measurements)
Reaper and Cubase ship a selection-based pitch-to-MIDI action; Studio One and GarageBand are more limited on the capture side and generally expect you to work with an exported file. Those are menu-level facts about the applications, not numbers from this site, and they are not what this page is testing. The reason all four nevertheless share one workflow below is simpler: whatever a built-in capture produces, an audio file is the one artifact every DAW can hand to this page, and an SMF .mid is the one artifact every DAW can take back. For the other three hosts we already walked the import path separately: FL Studio, Ableton Live and Logic Pro.
2. The measurement setup
Every number on this page comes from running this site’s real dsp.js and midi.js in Node on synthesised tones whose correct answer we already knew. No third-party tool is measured here 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, at sensitivity 60, shortest note 60 ms, 120 BPM, quantize off, polyphonic mode unless stated.
The analysis grid is fixed by the converter, not by your DAW’s project settings: audio is resampled to 22 050 Hz, read with a 2048-point FFT stepped 256 samples at a time, so each frame is 11.610 ms (86.13 frames per second) and each bin is 10.7666 Hz. Monophonic search runs 55–1800 Hz; polyphonic peaks are read up to 4000 Hz with at most 6 peaks per frame. Your project’s 48 kHz session, its 96 kHz render and its 3/4 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.
3. Region length: the setting that loses notes outright
This is the one that actually deletes notes. DAW regions are often trimmed tight around a hit, and the detector needs several consecutive frames to accept a note. We cut a single C4 to each of these lengths and ran both modes:
| Region length | Mono notes | Poly notes | What came back |
|---|---|---|---|
| 40 ms | 0 | 0 | nothing |
| 60 ms | 0 | 0 | nothing |
| 80 ms | 0 | 0 | nothing |
| 100 ms | 0 | 0 | nothing |
| 120 ms | 0 | 0 | nothing |
| 150 ms | 0 | 0 | nothing |
| 200 ms | 1 | 1 | C4 (60), one clean note |
| 300 ms | 1 | 2 | mono C4; poly splits into two C4 objects |
| 500 ms | 1 | 1 | C4, one clean note |
The shortest-note control says 60 ms, but 60 ms produced zero notes, and so did 150 ms. The nominal gate is five frames (5 × 11.610 = 58.05 ms), yet the ramp frames at the start and end of a trimmed region do not carry a stable pitch, so the usable middle is much shorter than the clip. The first note appeared only at 200 ms. At 300 ms the polyphonic result split a single sustained C4 into two note objects — a small version of the fragmentation you get when a note’s pitch drifts across frames.
What to do at export: leave at least 200 ms of room around every note you care about. If you are bouncing a fast run, export the whole phrase rather than one hit at a time; a tight region is a far more common cause of “the converter missed everything” than the DAW you used. If a conversion drops notes for other reasons, the four-step troubleshooting order starts with the format and mode, not with the sensitivity.
4. Export level: it moves velocity, not the notes
DAWs bounce at different levels — some leave 6 dB of headroom, some normalise, some inherit a quiet track fader. We scaled the identical four-note phrase down in steps and re-ran the detector:
| Relative level | dB | Notes (poly / mono) | Velocity |
|---|---|---|---|
| 1.000 | 0.00 | 4 / 4 | 113 |
| 0.500 | −6.02 | 4 / 4 | 102 |
| 0.250 | −12.04 | 4 / 4 | 90 |
| 0.100 | −20.00 | 4 / 4 | 76 |
| 0.050 | −26.02 | 4 / 4 | 64, 64, 64, 65 |
| 0.020 | −33.98 | 4 / 4 | 50 |
All six levels returned exactly 60,62,64,67 in both modes. What changed was velocity: 113 → 102 → 90 → 76 → 64 → 50, roughly 11–12 steps per 6.02 dB. Velocity here is derived from loudness, not from how the part was played — it is round(20 + (dB + 60) × 100 / 54), capped at 127. A quiet bounce therefore gives you a quiet MIDI part, not a wrong one. The near-flat velocity across the four notes is itself a limitation worth fixing later: why converted MIDI sounds robotic covers the feel, and how loud a note has to be before it hits 127 gives the top of the curve.
What to do at export: do not re-bounce just to chase level. Convert the quiet file and fix velocity in the DAW, or use the sensitivity slider if the noise floor is genuinely a problem. A normalised bounce is not more accurate.
5. Channels: stereo is averaged, and pan costs 11 velocity steps
analyze() sums the channels and divides by their count before a single FFT runs. That is a fixed step in this converter, so the channel layout of your DAW bounce matters more than most people expect. We exported the same phrase four ways:
| Exported layout | Notes | Velocity | Why |
|---|---|---|---|
| Mono file, 1 channel | 4 | 113 | full amplitude reaches the analyser |
| Stereo, L = R = full | 4 | 113 | average of two identical channels is unchanged — note list byte-for-byte identical to the mono file |
| Stereo, hard left only | 4 | 102 | (L + 0) / 2 halves the amplitude: −6.02 dB, −11 velocity steps |
| Stereo, centred (L = R = half) | 4 | 102 | the same halving, reached from a different pan law |
The practical surprise: a fully centred stereo bounce with each channel at half amplitude is quieter to this detector than a stereo bounce with both channels at full amplitude, even though both sound centred to you. And a hard-panned part loses exactly the same 11 steps. Neither loses pitches. The one case that does get messy is putting different material in each channel: a C4–G4 melody on the left and a sustained G4 pad on the right came back as 60,67,79,67 — one merged list including a G5 (79) that was not played as a separate note. There is no source separation here; see why the whole signal is read at once.
What to do at export: export the part as mono when you can. If you must bounce stereo, keep the material you want in both channels at the same level, and never put two different parts on left and right expecting two tracks back. The file format itself is a separate question — one .m4a can be lossless ALAC or 32 kbps AAC, and that choice has its own measured effect.
6. Leading silence and region position: pitches survive, timestamps drift
Exporting a whole arrangement instead of a tight region is convenient, and it does not cost you notes. It does move the reported times. We placed the same four-note phrase in five different export shapes:
| Export shape | Detected onsets (s) | Velocity |
|---|---|---|
| Bare 2 s region | 0.0000, 0.4992, 0.9985, 1.4977 | 113, 113, 113, 113 |
| 3 s silence before | 2.9257, 3.4598, 3.9590, 4.4466 | 112, 112, 112, 113 |
| 3 s silence after | 0.0000, 0.4644, 0.9636, 1.4512 | 113, 113, 112, 112 |
| 3 s silence both sides | 2.9257, 3.4598, 3.9590, 4.4466 | 112, 112, 112, 112 |
| Embedded in a 30 s file | 9.9265, 10.4606, 10.9598, 11.4474 | 112, 112, 112, 112 |
The pitches are right in every row. The onsets are not where the timeline says they should be. With 1 s, 3 s and 10 s of leading silence, the first onset landed 0.9172 s, 2.9257 s and 9.9265 s — that is 82.8 ms, 74.3 ms and 73.5 ms early. Note boundaries come from grouping consecutive frames that share a pitch, and the beginning of a group can be claimed by frames just before the audible attack. Appending silence shifted the later onsets slightly earlier too (0.4644 s instead of 0.4992 s for the second note). Velocity dropped by one step in most padded rows.
That drift is tiny if you only want the notes, but it matters if you are aligning converted notes to a DAW grid. The .csv gives you these seconds to four decimals, and what you get before it becomes MIDI shows how the .mid then rounds them onto a 480-tick grid — at 120 BPM one tick is 1.0417 ms, so a 74 ms drift is about 71 ticks, not a rounding detail.
What to do at export: if timing matters, export a tight region starting at the first attack. If you already have a full-song bounce, convert it and use the note list, then nudge the clip in the DAW; do not assume the MIDI’s bar positions are your project’s bar positions. The BPM box is not a fix: it is written verbatim into the file and does not move any note — how accurate the written tempo is measures that exactly.
7. Fades: the setting you can stop worrying about
Many DAWs apply a short fade-in and fade-out to a bounced region by default. We added linear fades to the whole 2 s phrase and re-ran both modes:
| Fade length | Poly notes | Poly velocity | Mono notes |
|---|---|---|---|
| 0 ms | 4 | 113, 113, 113, 113 | 4 |
| 20 ms | 4 | 113, 113, 113, 113 | 4 |
| 50 ms | 4 | 113, 113, 113, 113 | 4 |
| 100 ms | 4 | 113, 113, 113, 113 | 4 |
| 200 ms | 4 | 112, 113, 112, 112 | 4 |
Up to 100 ms, every note, pitch and velocity was unchanged. At 200 ms three notes lost a single velocity step. So a normal short auto-fade is not something to disable before bouncing. What is worth guarding against is the region-length issue in section 3: a long fade eats into an already short clip, and a 150 ms region returns nothing regardless of how gently it is faded.
8. What all four DAWs receive back
Whatever exported file went in, the artifact that comes out is the same shape on every host. For the four-note phrase it is an 89-byte Standard MIDI File, format 1, 2 tracks, 480 ticks per quarter note. Here is the event census, read back from the actual bytes with a running-status parser:
| Field | Value | Consequence when the DAW opens it |
|---|---|---|
| Format / tracks / TPQ | 1 / 2 / 480 | opens as a normal multi-track MIDI file |
| Meta events | 0x51 ×1, 0x58 ×1, 0x2F ×2 | tempo, 4/4 time signature, end-of-track — nothing else |
| Channel events | 8 on channel 0 | 4 note-on + 4 note-off, one channel only |
| Program-change | 0 | no instrument: load a synth or instrument track to hear it |
| Pitch-bend | 0 | no expression layer survives the conversion |
| Key signature / track name / text | 0 | the DAW cannot inherit a key or a part name — why the file records pitches, not a key |
The tempo box does not change this file’s size or its note list: building it at 90, 120 and 140 BPM produced 89 bytes each time, and the CSV was byte-identical in all three cases. The CSV for the four notes is 197 bytes with seven columns and looks like this:
index,midi_note,note_name,start_sec,end_sec,duration_sec,velocity
1,60,C4,0.0000,0.4180,0.4180,113
2,62,D4,0.4992,0.9172,0.4180,113
3,64,E4,0.9985,1.4164,0.4180,113
4,67,G4,1.4977,1.9156,0.4180,113
That is the receipt to keep next to the DAW clip. If you want the byte-level anatomy of the file, three routes to a MIDI file, compared byte by byte shows that a recording, a hand-drawn part and a score export all end up in this same shape, and what is actually inside a MIDI file explains why the sound is the DAW’s instrument, not the file’s.
9. When exporting is the right move, in numbers
One more measurement ties the decision back to the material. A single held C4+E4+G4 triad, one second long, gives 7 note objects in polyphonic mode (60,64,67,79,60,64,67) and 0 in monophonic mode; the same detector reads a four-note moving line as 4 notes in both modes. A single-line capture therefore has nothing to hold onto when several pitches sound at once, which is the case where getting the audio out of the DAW and into a polyphonic converter earns its keep. The seven objects include an octave artefact and duplicated notes — that is the raw state, and the five cleanup passes are what turn it into a usable part.
| Your material | Use the built-in capture | Export and convert here |
|---|---|---|
| One clean line, region ≥ 200 ms | Fine — stays in the project | Fine too — 4 of 4 notes at any level down to −33.98 dB |
| Chord or several parts at once | A single-line capture has no voicing to follow | Yes — polyphonic mode held the triad as 7 objects where mono returned 0 |
| Separate stems or a drum kit | Do the separation in the DAW | No — 2 tracks, 1 channel, and stereo is averaged |
| You need bends or expression | Yes — that is what a pitch editor is for | No — 0 pitch-bend events in the file |
| You need bar-accurate onset times | Keep it in the project grid | Export a tight region; padded silence pulled onsets 73–83 ms early |
| You are not at the DAW, just have a file | Not available | Yes — runs in the browser with nothing installed |
10. The export checklist, in order
- Set the region bounds with room. At least 200 ms around each note you want; a 150 ms region returned 0 notes. Bounce the phrase, not one hit at a time.
- Export mono if the part is one line. If stereo is unavoidable, keep the wanted part at equal level in both channels; a hard-panned part costs 11 velocity steps and two different parts get averaged into one list.
- Do not chase level. A quiet bounce keeps all the notes. Leave the normal short auto-fade on — fades up to 100 ms changed nothing.
- Drop the file into the converter. Pick monophonic for one line or polyphonic for chords; set the shortest-note value and sensitivity to match the material. Nothing is uploaded.
- Download both files. The
.midgoes back into the DAW; the.csvis the note-by-note receipt with times to four decimals. - Import and load an instrument. The file has no program-change, so the track is silent until you put a synth on it. Then fix velocity, timing and any duplicated notes inside the DAW.
If you are bouncing several parts, do them one file at a time — why there is no folder-drop batch button explains the one-at-a-time workflow. On a phone the same page works with a file from the share sheet; mobile audio to MIDI covers the input differences.
11. What the export length costs on your machine
All analysis happens on your own CPU, so the size of the bounce is a real cost and it is linear. We timed analyze() on this machine for four export lengths:
| Export length | analyze() time |
|---|---|
| 2 s | 33.3 ms |
| 10 s | 174.6 ms |
| 30 s | 595.9 ms |
| 60 s | 1102.1 ms |
That is about 18 ms per second of audio, with no server queue and no upload. A tight region is therefore cheaper as well as more accurate in time. The trade is that the whole file is decoded into memory first and closing the tab discards the result, so download the .mid before you leave the page.
Questions people actually ask
Do I need a plugin for audio to MIDI in Reaper, Cubase, Studio One or GarageBand?
Not for this route. All four can export a region as an audio file, and that file is all this converter needs. A plugin becomes worth installing only when you need pitch bend or per-note expression: our four-note export contains 0 pitch-bend events and 0 program-change events, so there is nowhere for that information to go. If that is your goal, stay in the DAW or install a dedicated plugin.
Why did converting my exported region give me no notes at all?
Check the region length first. On this detector a single C4 trimmed to 40, 60, 80, 100, 120 or 150 ms returned 0 notes in both modes, and the first note appeared at 200 ms — even though the shortest-note control reads 60 ms. The ramp frames at both ends do not hold a stable pitch. Export the phrase with room around it rather than isolating individual hits. If length is not the issue, the four-step troubleshooting order covers format, mode, sensitivity and shortest note.
Does a quiet export lose notes?
No. We scaled the same four-note phrase from 0 dB down to −33.98 dB and every level returned 4 of 4 notes with the same four pitches in both modes. What changed was velocity, from 113 down to 50, about 11–12 steps per 6.02 dB, because velocity is derived from loudness. Fix the velocity afterwards; do not re-bounce.
Should I export mono or stereo?
Mono for a single line. The analyser averages channels, so a stereo file with identical full-level L and R gives exactly the same note list as the mono file, but a hard-panned part and a centred part with each channel at half amplitude both lose 6.02 dB and 11 velocity steps. Never put two different parts on L and R expecting separate tracks: our test came back as one merged list, 60,67,79,67, including an octave artefact.
Do the short fades my DAW adds on bounce matter?
Not up to 100 ms. Fades of 0, 20, 50 and 100 ms all returned the same 4 notes at velocity 113 in both modes; at 200 ms three notes lost one velocity step. A long fade on an already short clip is a different problem, because that is really the region-length limit from section 3.
Will the converted notes line up with my project grid?
The pitches will; the timestamps may drift. With 1 s, 3 s and 10 s of leading silence the first onset came back 82.8 ms, 74.3 ms and 73.5 ms early, because note groups can start on frames just before the audible attack. Export a tight region starting at the first note if bar positions matter, and use the CSV with four-decimal seconds as your reference. Changing the BPM box will not correct it — the written tempo is your input and does not move the notes.
Why is there no sound after I import the .mid?
Because the file carries no instrument. The four-note export is 89 bytes with 0 program-change events: just 4 note-on, 4 note-off, a tempo, a 4/4 time signature and end-of-track markers. Load a synth or instrument on that track. This is the same on every DAW, and the FL Studio import guide, the Ableton one and the Logic Pro one each show the step.
Does my project sample rate or time signature change the result?
No. The analysis grid is fixed at 22 050 Hz, a 2048-sample window and an 11.610 ms hop; the same melody at 44.1k, 48k and 22.05k produced identical note lists. The written time signature is always the 4/4 bytes FF 58 04 04 02 18 08, whatever the session is in. If your project is in 3/4, set that in the DAW after import rather than expecting it in the file.
Convert an exported file now — runs in your browser, nothing is uploaded.
Related guides
- FL Studio audio to MIDIWhat the built-in captures in five DAWs share, and when to export
- Ableton audio to MIDIWhen Live's converter is enough, and when to export
- Logic Pro audio to MIDIWhat the built-in capture can and cannot hold
- FL Studio importThe drag that opens the .mid, and why there is no sound until you load an instrument
- Ableton importThe drag that opens the .mid onto a MIDI track
- Logic Pro importThe drag that opens the .mid onto a Software Instrument track
- Mono vs polyWhat each detection mode misses
- Clean up a converted MIDIThe 5 passes that turn a raw export into a usable part
- Humanize robotic MIDIWhy the export is grid-locked and velocity-flat
- Audio to notesThe 7-column note list vs the MIDI file, and the timing each one drops
- How to make a MIDI fileThree routes, one 2-track file, compared byte by byte
- MIDI converterWhat is actually inside a MIDI file
- Tempo accuracyWhy the written BPM is your input and does not move the notes
- Key & scale detectionWhy the file records pitches, not an analyzed key
- Fix dropped notesThe order to fix it: format, mode, sensitivity, shortest note
- Sample rate & MIDIWhether 44.1k, 48k or 22.05k changes the notes
- M4A and FLAC to MIDIOne .m4a can be lossless ALAC or 32 kbps AAC
- Bass line extractionWhy the converter reads the whole signal and cannot isolate one voice
- Batch convert audioWhy there is no folder-drop button, and the one-at-a-time workflow
- Mobile audio to MIDIWhat works on iPhone or Android, and what differs