That's a good question, BeatKey is me exploring the audio programming space and making things along the way. I originally wanted BeatKey to be a software where you could find the BPM and key/scale of an audio, but as I continued to learn and explore the space, it's shaped into a more exploratory project.
Functions of BeatKey, as of now:
- Extracting Duration
- Extracting Sample Rate
- Extracting BPM
- Extracting Key and Scale
- via 2 different algorithms in the Essentia library
- Adjusting Tempo/BPM and Pitch
- GUI with the ability to load an audio file and change its tempo and pitch
Dependencies:
- librosa
- essentia
- numpy
- matplotlib
- tkinter
- pyrubberband
- soundfile
Sample Audio Genres: Ambient, Blues, Classical, Country, Dance, Easy Listening, Electronic, Folk, Hip-hop, Industrial & Noise, Jazz, Metal, New Age, Pop, Psychedelia, Punk, R&B, Reggae, Regional - Afro, Regional - Bollywood, Regional - K-Pop, Regional - Reggaeton, Regional - Tamil Kuthu, Rock
Why these Genres?
- I picked genres that are popular and have a wide range of sub-genres
- I also added some regional genres to make it more globally diverse
Why these Tracks/Songs/Audios?
- I picked tracks that are popular and well-known within their respective genres
- I also tried to pick tracks that are diverse in terms of mood, key, and time period