A project developed at IEM Graz during WS24/25. It uses YourMT3 as a base for an algorithm for guitar string estimation on acoustic guitars.
This repository implements a system for automatic recognition and assignment of played guitar strings in audio recordings based on the YourMT3 model for F0-tracking. It is currently WIP and further instructions and restructuring will follow.
- Set up Git LFS:
git lfs install- Clone the repository:
git clone https://github.com/SimonBuechner/GuitarStringEstimation.git
cd GuitarStringEstimation- Install Python 3.11 in a new environment (recommended with conda or venv):
Create virtual environment: `python -m venv .venv`
Install dependencies: `pip install -r requirements.txt`
- Install dependencies:
pip install -r requirements.txt- Install the dataset:
python install_dataset.pyFollow the instructions in the CLI. For this project, only GuitarSet dataset is needed.
- Extract notes information the dataset:
python extract_dataset.pyThis project uses the GuitarSet Dataset, which contains audio recordings and annotations of acoustic guitar performances.
- YourMT3 - A modified Music Transcription Transformer model
- GuitarSet - Dataset for guitar recordings with annotations
After installation, the project directory should look like this:
GuitarStringEstimation/
├── .venv/
├── amt/
│ ├── content/
│ ├── logs/
│ └── src/
│ ├── f0-tracking_accuracy/
│ ├── model/
│ ├── .../ # multiple directories from YourMT3 model
│ ├── GuitarStringEstimator.py
│ └── ... # multiple .py files referred to in Usage Instructions
├── data/ # Dataset directory
│ ├── guitarset_yourmt3_16k/
│ ├── yourmt3_indexes/
│ └── logs/
├── scripts/ # Additional scripts
├── .gitignore
├── .gitattributes
├── LICENSE
└── README.md
To run the evaluation script of YourMT3, navigate to the appropriate directory:
cd amt/src/f0-tracking_accuracy
python f0-trackingYMT3_eval_controller.pyNote: These are intensive calculations best performed on a GPU-accelerated machine. For debugging, modify the dbg boolean toggle in the main() call in f0-trackingYMT3_eval.py.
Calculates the inharmonicity coefficient (beta) distributions:
python betaDistributions.pyRuns statistical tests and generates histograms:
python betaDistributions_statTest.pyCalculates guitar string estimations for each note in GuitarSet:
python guitar_string_estimator.pyFound in the scripts/ folder.
Frequency estimation algorithm comparison.
python FrequencyEstimationAccuracy_eval.pyEvaluates the algorithm for finding Beta-Distributions on synthetic testsignals. Must be run from Project root.
python betaDistributions_eval.py