tomato v0.1.0
tomato
Turkish-Ottoman Makam (M)usic Analysis TOolbox
Introduction
tomato is a comprehensive and easy-to-use toolbox for the analysis of audio recordings and music scores of Turkish-Ottoman makam music. The toolbox includes the state of art methodologies applied on this music tradition. The analysis tasks include:
- Audio Analysis: predominant melody extraction, tonic and transposition identification, histogram analysis, tuning analysis, (makam recognition is coming soon)
- Symbolic Analysis: (coming soon)
- Score-Informed Audio Analysis: (coming soon)
The aim of the toolbox is to allow the user to easily analyze large-scale audio recording and music score collections of Turkish-Ottoman makam music, using the state of the art methodologies specifically designed for the necessities of this tradition. The analysis results can then be further used for several tasks such as automatic content description, music discovery/recommendation and musicological analysis.
Installation
If you want to install tomato, it is recommended to install the package and dependencies into a virtualenv. In the terminal, do the following:
virtualenv env
source env/bin/activate
Then change the current directory to the repository folder and install by:
cd path/to/tomato
python setup.py install
If you want to be able to edit files and have the changes be reflected, then install the repository like this instead:
cd path/to/tomato
pip install -e .
The algorithm uses several modules in Essentia. Follow the instructions to install the library. Then you should link the python bindings of Essentia in the virtual environment:
ln -s /usr/local/lib/python2.7/dist-packages/essentia env/lib/python2.7/site-packages
Now you can install the rest of the dependencies:
pip install -r requirements
Basic Usage
Below you can find some basic calls:
Audio Analysis
from tomato.audio.AudioAnalyzer import AudioAnalyzer
audio_filepath = 'path/to/audio'
makam = 'makam_name' # the makam slug. See the documentation for possible values
audioAnalyzer = AudioAnalyzer()
features = audioAnalyzer.analyze(audio_filepath, makam=makam)
# plot the features
import pylab
audioAnalyzer.plot(features)
pylab.show()
# save features to a json file
audioAnalyzer.save_features(features, 'save_filename.json')
You can refer to audio_analysis_demo.ipynb for an interactive demo.
Changelog
- Added audio analysis modules
Authors
Sertan Şentürk
[email protected]
Reference
Thesis