bhargava-swara


Namebhargava-swara JSON
Version 0.0.12 PyPI version JSON
download
home_pageNone
SummaryA library for analysis and synthesis of Indian classical music
upload_time2025-04-18 07:36:08
maintainerNone
docs_urlNone
authorKuchi Chaitanya Krishna Deepak
requires_python>=3.6
licenseMIT
keywords music analysis synthesis carnatic hindustani indian classical music raga tala spectograms signal
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # 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:  
  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  
  Refer to [Google's Generative AI Docs](https://cloud.google.com/generative-ai/docs) for details

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

## Installation

Install the library using pip:

```sh
pip install bhargava_swara
```

## Dependencies

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

## Spectrogram Generation

Generate various types of spectrograms to visualize different aspects of audio frequency content over time.

### Mel-Frequency Spectrogram
```python
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
```python
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
```python
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
```python
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
```python
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
```python
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
```python
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
```python
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
```python
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.

```python
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

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "bhargava-swara",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.6",
    "maintainer_email": null,
    "keywords": "music, analysis, synthesis, carnatic, hindustani, indian classical music, raga, tala, spectograms, signal",
    "author": "Kuchi Chaitanya Krishna Deepak",
    "author_email": "kckdeepak29@gmail.com",
    "download_url": "https://files.pythonhosted.org/packages/37/1e/7e8f55668191cc9a300de6ea046e4b00304b6b72d0bf383b711929da8941/bhargava_swara-0.0.12.tar.gz",
    "platform": null,
    "description": "# Bhargava Swara\r\n\r\nA 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.\r\n\r\n## Prerequisites\r\n\r\n- **Gemini API Key:**  \r\n  This library uses Google's Gemini API for music analysis. To obtain a key:  \r\n  1. Sign up for a Google Cloud account  \r\n  2. Enable the Generative AI API in the Google Cloud Console  \r\n  3. Create an API key in the \"Credentials\" section  \r\n  Refer to [Google's Generative AI Docs](https://cloud.google.com/generative-ai/docs) for details\r\n\r\n- **Audio Files:**  \r\n  Supported formats include WAV and MP3 for analysis and spectrogram generation\r\n\r\n## Installation\r\n\r\nInstall the library using pip:\r\n\r\n```sh\r\npip install bhargava_swara\r\n```\r\n\r\n## Dependencies\r\n\r\n- `google-generativeai>=0.1.0`  \r\n- `librosa>=0.10.0`  \r\n- `matplotlib>=3.7.0`  \r\n- `numpy>=1.24.0`\r\n\r\n## Spectrogram Generation\r\n\r\nGenerate various types of spectrograms to visualize different aspects of audio frequency content over time.\r\n\r\n### Mel-Frequency Spectrogram\r\n```python\r\nfrom bhargava_swara import generate_mel_spectrogram\r\n\r\naudio = \"path/to/audio.wav\"\r\noutput = \"path/to/output_mel_spectrogram.png\"\r\ngenerate_mel_spectrogram(audio, output, n_mels=128, fmax=8000)\r\nprint(\"Mel spectrogram generated successfully!\")\r\n```\r\n\r\n### CQT Spectrogram\r\n```python\r\nfrom bhargava_swara import generate_cqt_spectrogram\r\n\r\naudio = \"path/to/audio.wav\"\r\noutput = \"path/to/output_cqt_spectrogram.png\"\r\ngenerate_cqt_spectrogram(audio, output, hop_length=512, n_bins=84)\r\nprint(\"CQT spectrogram generated successfully!\")\r\n```\r\n\r\n### Cent Filterbank Spectrogram\r\n```python\r\nfrom bhargava_swara import generate_cent_spectrogram\r\n\r\naudio = \"path/to/audio.wav\"\r\noutput = \"path/to/output_cent_spectrogram.png\"\r\ngenerate_cent_spectrogram(audio, output, n_filters=128, fmax=8000)\r\nprint(\"Cent filterbank spectrogram generated successfully!\")\r\n```\r\n\r\n#### Spectrogram Parameters:\r\n- `audio`: Path to the input audio file (e.g., WAV or MP3)\r\n- `output`: Path to save the PNG file\r\n- Mel-specific: `n_mels` (default: 128), `fmax` (default: 8000)\r\n- Chroma-specific: `n_chroma` (default: 12), `hop_length` (default: 512)\r\n- CQT-specific: `hop_length` (default: 512), `n_bins` (default: 84)\r\n- Cent-specific: `n_filters` (default: 128), `fmax` (default: 8000)\r\n\r\n## Music Analysis\r\n\r\nAnalyze various aspects of Indian classical music using the Gemini API.\r\n\r\n### Raga Analysis\r\n```python\r\nfrom bhargava_swara import analyze_raga\r\n\r\napi_key = \"YOUR_API_KEY\"\r\naudio = \"path/to/audio.wav\"\r\nresult = analyze_raga(audio, api_key)\r\nprint(f\"Raga: {result}\")\r\n```\r\n\r\n### Tala Analysis\r\n```python\r\nfrom bhargava_swara import analyze_tala\r\n\r\napi_key = \"YOUR_API_KEY\"\r\naudio = \"path/to/audio.wav\"\r\nresult = analyze_tala(audio, api_key)\r\nprint(f\"Tala: {result}\")\r\n```\r\n\r\n### Tempo Analysis\r\n```python\r\nfrom bhargava_swara import analyze_tempo\r\n\r\napi_key = \"YOUR_API_KEY\"\r\naudio = \"path/to/audio.wav\"\r\nresult = analyze_tempo(audio, api_key)\r\nprint(f\"Tempo: {result}\")\r\n```\r\n\r\n### Tradition Analysis\r\n```python\r\nfrom bhargava_swara import analyze_tradition\r\n\r\napi_key = \"YOUR_API_KEY\"\r\naudio = \"path/to/audio.wav\"\r\nresult = analyze_tradition(audio, api_key)\r\nprint(f\"Tradition: {result}\")\r\n```\r\n\r\n### Ornament Analysis\r\n```python\r\nfrom bhargava_swara import analyze_ornaments\r\n\r\napi_key = \"YOUR_API_KEY\"\r\naudio = \"path/to/audio.wav\"\r\nresult = analyze_ornaments(audio, api_key)\r\nprint(f\"Ornaments: {result}\")\r\n```\r\n\r\n### Full Music Analysis\r\n```python\r\nfrom bhargava_swara import analyze_music_full\r\n\r\napi_key = \"YOUR_API_KEY\"\r\naudio = \"path/to/audio.wav\"\r\nresult = analyze_music_full(audio, api_key)\r\nprint(f\"Full Analysis:\\n{result}\")\r\n```\r\n\r\n## Music Synthesis\r\nCreate Indian classical music elements with ease.\r\n\r\n### Tanpura Drone\r\nGenerate a tanpura drone for practice or ambiance.\r\n\r\n```python\r\nfrom bhargava_swara import generate_tanpura_drone\r\n\r\n# Play in real-time\r\ngenerate_tanpura_drone(pitch=261.63, duration=10)\r\n\r\n# Save to WAV\r\ngenerate_tanpura_drone(pitch=261.63, duration=10, output_path=\"tanpura_drone.wav\")\r\n```\r\n\r\n#### Parameters:\r\n\r\n- pitch: Fundamental frequency of Sa (e.g., 261.63 Hz for C4).\r\n- duration: Length of the drone in seconds.\r\n- output_path: Path to save WAV file (optional; if None, plays in real-time).\r\n\r\n## License\r\n\r\nThis library is licensed under the MIT License. See the `LICENSE` file for details.\r\n```\r\n\r\n\r\nChange Log\r\n==========\r\n\r\n0.0.1 (26/03/2025)\r\n-------------------\r\n- First Release\r\n\r\n===========\r\n\r\n0.0.2 (27/03/2025)\r\n-------------------\r\n- Fixed missing module files in package\r\n\r\n0.0.3 (27/03/2025)\r\n-------------------\r\n- Fixed ornaments detection file\r\n\r\n0.0.4 (27/03/2025)\r\n-------------------\r\n- Fixed real time full analysis file\r\n\r\n0.0.5 (27/03/2025)\r\n-------------------\r\n- Added mel-frequency spectogram generation\r\n\r\n0.0.6 (27/03/2025)\r\n-------------------\r\n- seaborn included. README.txt updated\r\n\r\n0.0.7 (27/03/2025)\r\n-------------------\r\n- mel-frequency spectogram issue resolved. README.md is created\r\n\r\n0.0.8 (06/04/2025)\r\n-------------------\r\n- 3 more spectogram generations added. README.md file updated\r\n\r\n0.0.9 (06/04/2025)\r\n-------------------\r\n- fixed bugs\r\n\r\n0.0.10 to 0.0.12 (18/04/2025)\r\n-------------------\r\n- added tanpura droid generation\r\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "A library for analysis and synthesis of Indian classical music",
    "version": "0.0.12",
    "project_urls": null,
    "split_keywords": [
        "music",
        " analysis",
        " synthesis",
        " carnatic",
        " hindustani",
        " indian classical music",
        " raga",
        " tala",
        " spectograms",
        " signal"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "a3bac0841d871c36e87aff2c95a934585adcc771bb310d0a26c628a8c4915838",
                "md5": "3cae4599aba78bd6abcb5d6dd644ea2b",
                "sha256": "1821352b6e297d36ac90265eaa122305013447dc46e39b88590f384f140f5142"
            },
            "downloads": -1,
            "filename": "bhargava_swara-0.0.12-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "3cae4599aba78bd6abcb5d6dd644ea2b",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.6",
            "size": 15605,
            "upload_time": "2025-04-18T07:36:05",
            "upload_time_iso_8601": "2025-04-18T07:36:05.245681Z",
            "url": "https://files.pythonhosted.org/packages/a3/ba/c0841d871c36e87aff2c95a934585adcc771bb310d0a26c628a8c4915838/bhargava_swara-0.0.12-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "371e7e8f55668191cc9a300de6ea046e4b00304b6b72d0bf383b711929da8941",
                "md5": "2cf2731158a5d5ff3267736f787b8686",
                "sha256": "9c39cce1fce59733a6a1d7586080bda9343bed4e0c3d6720def4cdb9c68e471c"
            },
            "downloads": -1,
            "filename": "bhargava_swara-0.0.12.tar.gz",
            "has_sig": false,
            "md5_digest": "2cf2731158a5d5ff3267736f787b8686",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.6",
            "size": 17869,
            "upload_time": "2025-04-18T07:36:08",
            "upload_time_iso_8601": "2025-04-18T07:36:08.849767Z",
            "url": "https://files.pythonhosted.org/packages/37/1e/7e8f55668191cc9a300de6ea046e4b00304b6b72d0bf383b711929da8941/bhargava_swara-0.0.12.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-04-18 07:36:08",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "bhargava-swara"
}
        
Elapsed time: 0.84705s