-
Notifications
You must be signed in to change notification settings - Fork 0
Description
Issue Description
The latex_octaved_sargam_letter property produces LaTeX syntax that doesn't render properly in matplotlib for lower octaves, making the API output unusable in the most common Python plotting scenario.
Problem
Currently, latex_octaved_sargam_letter outputs:
- Upper octaves:
$\dot{\mathrm{D}}$✅ Works in matplotlib - Lower octaves:
$\underset{\cdot}{\mathrm{D}}$❌ Doesn't render in matplotlib
The \underset command is not supported by matplotlib's LaTeX engine, so lower octave diacritics simply don't appear, leaving users with broken output.
Impact
- Any visualization using matplotlib will have missing lower octave diacritics
- Users must implement workarounds, defeating the purpose of a "latex" property
- API is inconsistent - works for upper octaves, fails for lower octaves
Proposed Solution
Update latex_octaved_sargam_letter to use Unicode characters directly for lower octaves:
- Upper octaves:
$\dot{\mathrm{D}}$(keep LaTeX - works perfectly) - Lower octaves:
Ḍ(use Unicode directly - works perfectly) - Normal octave:
D(no change needed)
This would make the API robust and usable across all plotting libraries.
Example
from idtap.classes.pitch import Pitch
# Current (broken in matplotlib):
p_lower = Pitch({'swara': 'dha', 'oct': -1, 'raised': True})
print(p_lower.latex_octaved_sargam_letter) # '$\\underset{\\cdot}{\\mathrm{D}}$' - doesn't render
# Proposed (works everywhere):
print(p_lower.latex_octaved_sargam_letter) # 'Ḍ' - renders perfectlyContext
Discovered while implementing cyclic visualizations. Had to implement a workaround that checks octave levels and uses Unicode for lower octaves manually, which defeats the purpose of having a dedicated LaTeX property in the API.