-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Bug Report
Description:
The Raga class in the Python API is incorrectly transforming stored raga ratios during loading, resulting in wrong pitches being returned. This affects both get_pitches() and get_frequencies() methods.
Specific Issue:
For Rageshree (transcription ID: 68a3a79fffd9b2d478ee11e8), the stored raga data contains the correct 6 ratios with komal Ma and komal Ni, but the loaded Raga object has 7 different ratios including shuddha Ma, Pa, and shuddha Ni.
Expected Behavior:
The Raga class should preserve the exact ratios stored in the database without transformation.
Actual Behavior:
The ratios are transformed during loading, changing the musical content of the raga.
Evidence:
Raw stored raga data (correct):
- 6 ratios: [1, 1.122462048309373, 1.2599210498948732, 1.3348398541700344, 1.681792830507429, 1.7817974362806785]
- Corresponds to: S R G m D n (komal Ma, komal Ni, no Pa)
Loaded raga ratios (incorrect):
- 7 ratios: [1.0, 1.122462048309373, 1.2599210498948732, 1.4142135623730951, 1.4983070768766815, 1.681792830507429, 1.8877486253633868]
- Corresponds to: S R G M P D N (shuddha Ma, Pa, shuddha Ni)
Key Transformations:
- 1.3348398541700344 (komal Ma) → 1.4142135623730951 (shuddha Ma) + 1.4983070768766815 (Pa added)
- 1.7817974362806785 (komal Ni) → 1.8877486253633868 (shuddha Ni)
Reproduction:
from idtap import SwaraClient, Piece
client = SwaraClient()
piece_data = client.get_piece('68a3a79fffd9b2d478ee11e8')
# Check raw stored data
stored_ratios = piece_data['raga']['ratios']
print(f'Stored ratios ({len(stored_ratios)}): {stored_ratios}')
# Check loaded raga
piece = Piece(piece_data)
loaded_ratios = piece.raga.ratios
print(f'Loaded ratios ({len(loaded_ratios)}): {loaded_ratios}')
# They should be identical but are not
assert stored_ratios == loaded_ratios, "Ratios don't match!"Impact:
- Pitch visualization shows wrong notes (e.g., Pa appears when it shouldn't)
- Transcription analysis based on raga content is incorrect
- Musical analysis and visualization tools produce inaccurate results
Potential Root Cause:
The issue likely occurs in the Raga constructor or initialization method where stored ratios are being processed/normalized rather than used as-is.
Environment:
- Python idtap package (latest version)
- Transcription ID: 68a3a79fffd9b2d478ee11e8
- Raga: Rageshree