A library for analysis and synthesis of Indian classical music
Project description
Bhargava Swara
A Python library for analyzing and visualizing Indian classical music, including spectrogram generation (Mel-frequency, Chroma, CQT, and Cent filterbank), raga, tala, tempo, tradition, ornaments, and full analysis.
Prerequisites
-
Gemini API Key:
This library uses Google's Gemini API for music analysis. To obtain a key:- Sign up for a Google Cloud account
- Enable the Generative AI API in the Google Cloud Console
- Create an API key in the "Credentials" section
Refer to Google's Generative AI Docs for details
-
Audio Files:
Supported formats include WAV and MP3 for analysis and spectrogram generation
Installation
Install the library using pip:
pip install bhargava_swara
Dependencies
google-generativeai>=0.1.0librosa>=0.10.0matplotlib>=3.7.0numpy>=1.24.0
Spectrogram Generation
Generate various types of spectrograms to visualize different aspects of audio frequency content over time.
Mel-Frequency Spectrogram
from bhargava_swara import generate_mel_spectrogram
audio = "path/to/audio.wav"
output = "path/to/output_mel_spectrogram.png"
generate_mel_spectrogram(audio, output, n_mels=128, fmax=8000)
print("Mel spectrogram generated successfully!")
CQT Spectrogram
from bhargava_swara import generate_cqt_spectrogram
audio = "path/to/audio.wav"
output = "path/to/output_cqt_spectrogram.png"
generate_cqt_spectrogram(audio, output, hop_length=512, n_bins=84)
print("CQT spectrogram generated successfully!")
Cent Filterbank Spectrogram
from bhargava_swara import generate_cent_spectrogram
audio = "path/to/audio.wav"
output = "path/to/output_cent_spectrogram.png"
generate_cent_spectrogram(audio, output, n_filters=128, fmax=8000)
print("Cent filterbank spectrogram generated successfully!")
Spectrogram Parameters:
audio: Path to the input audio file (e.g., WAV or MP3)output: Path to save the PNG file- Mel-specific:
n_mels(default: 128),fmax(default: 8000) - Chroma-specific:
n_chroma(default: 12),hop_length(default: 512) - CQT-specific:
hop_length(default: 512),n_bins(default: 84) - Cent-specific:
n_filters(default: 128),fmax(default: 8000)
Music Analysis
Analyze various aspects of Indian classical music using the Gemini API.
Raga Analysis
from bhargava_swara import analyze_raga
api_key = "YOUR_API_KEY"
audio = "path/to/audio.wav"
result = analyze_raga(audio, api_key)
print(f"Raga: {result}")
Tala Analysis
from bhargava_swara import analyze_tala
api_key = "YOUR_API_KEY"
audio = "path/to/audio.wav"
result = analyze_tala(audio, api_key)
print(f"Tala: {result}")
Tempo Analysis
from bhargava_swara import analyze_tempo
api_key = "YOUR_API_KEY"
audio = "path/to/audio.wav"
result = analyze_tempo(audio, api_key)
print(f"Tempo: {result}")
Tradition Analysis
from bhargava_swara import analyze_tradition
api_key = "YOUR_API_KEY"
audio = "path/to/audio.wav"
result = analyze_tradition(audio, api_key)
print(f"Tradition: {result}")
Ornament Analysis
from bhargava_swara import analyze_ornaments
api_key = "YOUR_API_KEY"
audio = "path/to/audio.wav"
result = analyze_ornaments(audio, api_key)
print(f"Ornaments: {result}")
Full Music Analysis
from bhargava_swara import analyze_music_full
api_key = "YOUR_API_KEY"
audio = "path/to/audio.wav"
result = analyze_music_full(audio, api_key)
print(f"Full Analysis:\n{result}")
Music Synthesis
Create Indian classical music elements with ease.
Tanpura Drone
Generate a tanpura drone for practice or ambiance.
from bhargava_swara import generate_tanpura_drone
# Play in real-time
generate_tanpura_drone(pitch=261.63, duration=10)
# Save to WAV
generate_tanpura_drone(pitch=261.63, duration=10, output_path="tanpura_drone.wav")
Parameters:
- pitch: Fundamental frequency of Sa (e.g., 261.63 Hz for C4).
- duration: Length of the drone in seconds.
- output_path: Path to save WAV file (optional; if None, plays in real-time).
License
This library is licensed under the MIT License. See the LICENSE file for details.
Change Log
==========
0.0.1 (26/03/2025)
-------------------
- First Release
===========
0.0.2 (27/03/2025)
-------------------
- Fixed missing module files in package
0.0.3 (27/03/2025)
-------------------
- Fixed ornaments detection file
0.0.4 (27/03/2025)
-------------------
- Fixed real time full analysis file
0.0.5 (27/03/2025)
-------------------
- Added mel-frequency spectogram generation
0.0.6 (27/03/2025)
-------------------
- seaborn included. README.txt updated
0.0.7 (27/03/2025)
-------------------
- mel-frequency spectogram issue resolved. README.md is created
0.0.8 (06/04/2025)
-------------------
- 3 more spectogram generations added. README.md file updated
0.0.9 (06/04/2025)
-------------------
- fixed bugs
0.0.10 to 0.0.12 (18/04/2025)
-------------------
- added tanpura droid generation
0.0.13 (18/04/2025)
-------------------
- removed spectograms
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file bhargava_swara-0.0.13.tar.gz.
File metadata
- Download URL: bhargava_swara-0.0.13.tar.gz
- Upload date:
- Size: 17.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d560785ecaf521e780785404fc9cad180e65aa98c6bb4a4ecc2ddb5802de08c1
|
|
| MD5 |
cd2e58ad3e00664e11e5c4f2f981307a
|
|
| BLAKE2b-256 |
a5c9e2ecaff3647a92c87c3f190f0ba8175b8bd4e7fc2178c38897b6eb1124ed
|
File details
Details for the file bhargava_swara-0.0.13-py3-none-any.whl.
File metadata
- Download URL: bhargava_swara-0.0.13-py3-none-any.whl
- Upload date:
- Size: 15.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
76a98d45f6c63f18f7f6429a7da7c13c8ce408f447c8fdbabfb687bbb4836225
|
|
| MD5 |
d64e58c1ee6d370573fae8d338898ec9
|
|
| BLAKE2b-256 |
aee4c4f9f4d4f1479d2a36c756cfa8c7c4c5228c3fc570f32e5053272f441c05
|