improvisation-lab / improvisation_lab /service /piece_practice_service.py
atsushieee's picture
Upload folder using huggingface_hub
5e84ffc verified
raw
history blame contribute delete
919 Bytes
"""Service for practicing melodies."""
from improvisation_lab.config import Config
from improvisation_lab.domain.composition import PhraseData
from improvisation_lab.service.base_practice_service import BasePracticeService
class PiecePracticeService(BasePracticeService):
"""Service for generating and processing melodies."""
def __init__(self, config: Config):
"""Initialize PiecePracticeService with configuration."""
super().__init__(config)
def generate_melody(self) -> list[PhraseData]:
"""Generate a melody based on the configured chord progression.
Returns:
List of PhraseData instances representing the generated melody.
"""
selected_progression = self.config.piece_practice.chord_progressions[
self.config.piece_practice.selected_song
]
return self.melody_composer.generate_phrases(selected_progression)