The best software that I've heard of is Melodyne.
It's capabilities are truly amazing
and I think it will do what you want very well.
Take a look.
It's not cheap though
but I think it has a free trial! http://www.celemony.com/en/melodyne/what-is-melodyne
music.stackexchange.com/users/14848/e7mac
There is an open-source project called CLAM .It
has an application that automatically analyzes chords: http://clam-project.org/wiki/Chordata_tutorial
There are also more advanced applications that are part of the CLAM suite that can do more complex analysis.
Here is a demo of chordata :
music.stackexchange.com/users/23287/Nathaniel M. Beaver
There is software for that.
But it is not always very accurate.
Especially with multiple voices (or instruments) starting at the same time.
Research on this started over 40 years ago: Rabiner, Lawrence, et al.
"A comparative performance study of several pitch detection algorithms." Acoustics, Speech and Signal Processing, IEEE Transactions on 24.5 (1976): 399-418. And has improved a lot during the last few years:
De La Cuadra, Patricio, Aaron Master, and Craig Sapp.
"
Efficient pitch detection techniques for interactive music.
" Proceedings of the 2001 International Computer Music Conference. 2001.
I suggest you take a look at the pitch detection plugin of the (free software)
Audacity here.
music.stackexchange.com/users/7287/dorien
This is called transcription software; did you mean an app as in a mobile device app?
Or desktop?
There are many libraries that you could use if you were willing to develop your own app for either, of course, but there are also many already in existence.
I'm not sure how accurate they are, but you can always give a couple a shot (try searching Github or SourceForge)!
(Or just wait for someone else's answer)
music.stackexchange.com/users/6133/ksoo
Ableton Live has a feature built in called "Harmony-to-MIDI" where it analyzes an audio track (could be piano, guitar, whole song.. anything) and it outputs a MIDI sequence replicating the chords played in the piece.
It even chooses the closest sounding synth patch to match the source.
Also available is Melody-to-MIDI and Rhythm-to-MIDI.
I'm not much of a keyboardist so I can't vouch for 100% accuracy, but it usually sounds pretty good to me.
It might not be worth buying the software for this alone, but if you are into recording and producing music Ableton is definitely worth a look.
You can try to software free for 30 days I believe.
Edit:
I just tried a program called Transcribe!
and it is very useful for transcribing recorded material.
You can load your mp3s and it will analyze the frequencies and tell you which notes are represented over time.
Works for piano, guitar, voice.. anything with a pitch.
It won't automatically transcribe all the notes, but it will plot out which notes are likely being played, then use your ears figure out which ones are correct.
music.stackexchange.com/users/13110/Charles
A new app released today might be a sultion.
http://audiokit.io/
I dont have iOS device to check the accuracy though.
Will borrow one.
music.stackexchange.com/users/9465/iankit
Honestly, I'm gonna give you the sell-out answer.
The best way to determine what notes and chords are being played is with your own ear.
I'm sorry, but with all due respect to other responders, it's extremely difficult for any software program to detect chords, specifically.
For basic triads, some of the best software can do the job, but so much of chord naming depends on context.
And isolating a fundamental frequency is no cakewalk, either.
For example, for simple note naming, how would a computer know that a note with the frequency of 440
Hz is a B♭♭ in a C diminished 7th chord?
The best computers currently can do is just give the most common enharmonic spellings for notes, but that creates tons of confusion.
Never mind the fact that even single notes can be extremely difficult to pick out of a song, and they tend to blend with their harmonics.
getting around that, though, at least is possible if you can just hook up your note-naming software directly to the interface of a keyboard.
Some other concerns bother me as well.
How is a computer to determine where one chord stops and ends?
When I play a C major triad, then play the note B, is that Cmaj7 or just a passing tone?
Maybe it's even part of the G major chord that follows?
How can a computer handle the rootless voicings?
Is that C♯ diminished 7th or A7♭9?
Is E-F-A-B the basis of G13, or maybe an enharmonic respelling for D♭7♯9
♭13, an altered chord?
The best way I can conceive of, until AI can just perform musical analysis faster than we can, is to learn a lot of music theory, build up your aural skills, and name them yourself, because no software on the market today can get the job done more accurately than a human.
There's a reason Music's SE is so successful.
We need humans to answer most of the good questions on this site, because context determines so much of musical analysis.
Others have suggested slowing down the recording.
That's a novel idea, and whenever I transcribe from audio I make use of any way I can to slow down the notes.
I cannot understate how effective that is.
music.stackexchange.com/users/37992/user45266
What is a reasonably good way to detect chords in solo piano music?  Not the MIDI ones, but music generated by real piano/electronic keyboard.   I am trying to play a piano piece and check out its chords by feeding the piano output sound through microphone to my computer.
Detect piano notes and chords
music.stackexchange.com
<piano><chords>
music.stackexchange.com/questions/15315
music.stackexchange.com/users/9465/iankit
The best software for detecting notes and chords in music is possibly Melodyne. Ableton Live has a feature built in called "Harmony-to-MIDI" where it analyzes an audio track (could be piano, guitar, whole song.. anything) and it outputs a MIDI sequence replicating the chords played in the piece. However, the best way to determine what notes and chords are being played is with your own ear.   The best way to identify chrods from audio may well be with your own ear. However, software programmes that may be able to help include Melodyne and Ableton Live.
Software programmes that may be able to help with this task include Melodyne and Ableton Live. The best way to identify chords from audio may well be with your own ear.