AutoChord: A Simple Data Mining Case Study in Automatic Chord Recognition
I was looking around for some real examples of data mining projects, and I found this short demo paper called “AutoChord: Automatic Chord…
AutoChord: A Simple Data Mining Case Study in Automatic Chord Recognition

I was looking around for some real examples of data mining projects, and I found this short demo paper called “AutoChord: Automatic Chord Recognition Library and Chord Visualization App.” Since I like music, I ended up reading the whole thing. It’s brief, but it actually shows the full process of building a machine-learning system that can detect chords from an audio file.
What AutoChord Tries to Solve

AutoChord’s goal is straightforward: it tries to figure out which chord is playing at each moment in a song. Because chords keep changing as the music moves forward, the system treats audio like a timeline and predicts a chord for every small part of it.
The project has two main parts:
- A Python library that does the actual chord recognition
- A JavaScript web app that shows the predicted chords on top of the audio waveform
One thing I liked is that everything runs locally on the user’s device. So the audio doesn’t get uploaded anywhere, which keeps everything private.
Dataset Used
AutoChord was trained on the McGill Billboard Project, which is a popular dataset in music information retrieval. It has:
- Many well-known songs
- Expert chord annotations
- Chroma features that were already computed
Chroma features basically show how strong each pitch class is at a particular moment. These are very common for chord detection.
Before training, the authors checked if they could recreate these chroma features from raw audio in the same way during actual usage. They compared the dataset’s chroma vectors with freshly generated ones using Dynamic Time Warping. Since the two were very close, they knew the model wouldn’t get confused by differences between training data and real-world audio.
Model Architecture
They first tried using a simple feedforward neural network, but the accuracy wasn’t great. Since music is sequential, they switched to a Bidirectional LSTM with a CRF (Conditional Random Field) layer on top.
This setup works better because:
- The Bi-LSTM looks at both past and future frames
- The CRF makes the final chord sequence smoother and more consistent
The model was trained using:
- 24-dimensional chroma vectors
- Sequences of 128 frames
- 128 LSTM units in each direction
- The Adam optimizer
- Over 600 songs for training and about 100 for testing
They reached around 67% accuracy, which is pretty solid for a model meant to be small and fast.
How AutoChord Works in Practice
The Python library handles everything:
- Reads and resamples the audio
- Extracts the chroma features
- Passes them into the trained model
- Produces a file with each chord and its start/end time
On a normal CPU, a four-minute song takes around seven seconds to process.

The JavaScript app then loads that file and shows the chords on the waveform. You can even compare two different chord files visually if you want.
Conclusion
Even though AutoChord is a small project, it clearly shows how data mining can be used in music. It covers the whole process — from picking a dataset and extracting features to training the model and building a simple tool around it. It’s a neat example of machine learning and audio analysis working together for something practical like chord recognition
메타데이터
- post_id
- f3b638f684ff
- slug
- autochord-a-simple-data-mining-case-study-in-automatic-chord-recognition-f3b638f684ff
- url
- https://medium.com/@gauthampraj2003/autochord-a-simple-data-mining-case-study-in-automatic-chord-recognition-f3b638f684ff
- canonical_url
- https://medium.com/@gauthampraj2003/autochord-a-simple-data-mining-case-study-in-automatic-chord-recognition-f3b638f684ff
- author_url
- https://medium.com/@gauthampraj2003
- status
- ok
- fetched_at
- 2026-07-13 06:23:13