Skip to main content

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 raga, tala, tempo, tradition, ornaments, full analysis, and mel-frequency spectrograms.

Prerequisites
-------------

- **Gemini API Key:** This library uses Google's Gemini API for music analysis. You'll need to:
1. Sign up for a Google Cloud account.
2. Enable the Generative AI API in the Google Cloud Console.
3. Create an API key in the "Credentials" section.
See Google's Generative AI Docs (https://cloud.google.com/generative-ai/docs) for details.

- **Audio Files:** Supported formats include WAV and MP3 for spectrogram generation.

Installation
------------

Install the library using pip:

pip install bhargava_swara

Usage
-----

### Music Analysis

Analyze various aspects of Indian classical music using the Gemini API.

```python
from bhargava_swara import (
analyze_raga,
analyze_tala,
analyze_tempo,
analyze_tradition,
analyze_ornaments,
analyze_music_full
)

# Set your Gemini API key
api_key = "YOUR_API_KEY"
audio = "path/to/audio.wav"

# Individual analyses
print(f"Raga: {analyze_raga(audio, api_key)}")
print(f"Tala: {analyze_tala(audio, api_key)}")
print(f"Tempo: {analyze_tempo(audio, api_key)}")
print(f"Tradition: {analyze_tradition(audio, api_key)}")
print(f"Ornaments: {analyze_ornaments(audio, api_key)}")

# Full analysis
print(f"Full Analysis:\n{analyze_music_full(audio, api_key)}")


# Mel-Frequency Spectrogram Generation
# Generate a mel-frequency spectrogram to visualize the frequency content of an audio file over time.

from bhargava_swara import generate_mel_spectrogram

# Define input and output paths
audio = "path/to/audio.wav"
output = "path/to/output_mel_spectrogram.png"

# Generate the spectrogram
generate_mel_spectrogram(audio, output, n_mels=128, fmax=8000)
print("Mel spectrogram generated successfully!")

audio: Path to the input audio file (e.g., WAV or MP3).
output: Path to save the PNG file (e.g., "spectrogram.png").
n_mels: Number of mel bands (default: 128).
fmax: Maximum frequency in Hz (default: 8000).


Dependencies
google-generativeai>=0.1.0
librosa>=0.10.0
matplotlib>=3.7.0
numpy>=1.24.0


Contributing
Contributions are welcome! Please submit a pull request or open an issue on the GitHub repository (if available).

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

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bhargava_swara-0.0.6.tar.gz (9.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bhargava_swara-0.0.6-py3-none-any.whl (11.3 kB view details)

Uploaded Python 3

File details

Details for the file bhargava_swara-0.0.6.tar.gz.

File metadata

  • Download URL: bhargava_swara-0.0.6.tar.gz
  • Upload date:
  • Size: 9.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.0

File hashes

Hashes for bhargava_swara-0.0.6.tar.gz
Algorithm Hash digest
SHA256 53a35085d6f49231d3bf3284762fc84e206c070dca935d28af152fbcad9802cb
MD5 d063e0bbe5db0444bb1fb2e3e63a753e
BLAKE2b-256 7e827848e3dd3c76db759ee8e4b64f134ea060b70d55dfd193b76d136320b2ed

See more details on using hashes here.

File details

Details for the file bhargava_swara-0.0.6-py3-none-any.whl.

File metadata

  • Download URL: bhargava_swara-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 11.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.0

File hashes

Hashes for bhargava_swara-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 d842cedebab53420ea395973e12d35a9d18a448ebdd96867c210527487f4bcc3
MD5 ddadbf8172b8bffc646f9463212bf8ab
BLAKE2b-256 0d06dfd917d4dd05c016c30f76491ef61f92423fe6cba909782f194bafe12d83

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page