Задача: Вынести runtime VoiceScenario в общий модуль для синтезатора и визуализатора
Вынести runtime VoiceScenario в общий модуль для синтезатора и визуализатора
14.09.2026учиться-легко.рф
Устранить дублирование логики исполнения VoiceScenario между synthesizeScenario и ScenarioVisualizer.
Задача
Вынести общую логику исполнения VoiceScenario в единый runtime-модуль и использовать его одновременно в синтезаторе и визуализаторе.
Сейчас логика prepareScenario, evaluateBezier, updateAutomations, executeCommand и вычисление текущего VoiceControlState фактически дублируется. Это создаёт риск расхождения: визуализатор может показывать не то состояние, которое реально использует DSP.
Что нужно сделать
- Создать общий runtime-модуль для
VoiceScenario(например,VoiceSynthesizer/src/runtime.ts). - Вынести туда подготовку композиции сценариев и общей timeline.
- Вынести интерпретацию
setиanimate. - Вынести вычисление cubic bezier.
- Вынести обновление активных automation и семантику сохранения
toпосле окончанияduration. - Обеспечить получение фактического
VoiceControlStateво времени или итерацию состояния по временной шкале. - Перевести
synthesizeScenarioна этот runtime. - Перевести
ScenarioVisualizerна тот же runtime, чтобы график был отображением реального состояния синтезатора, а не отдельной интерпретацией сценария. - Сохранить существующую семантику композиции массивов сценариев:
initialтолько у первого сценария, последующие продолжают текущее состояние без reset.
Критерий результата
Для одного и того же VoiceScenario синтезатор и визуализатор используют одну и ту же реализацию state machine. После изменения runtime-семантики невозможно получить ситуацию, когда DSP исполняет сценарий одним образом, а визуализатор отображает его другим.