| 80 | } |
| 81 | |
| 82 | void validate_task_route_request(const AceStepRequest &request, const AceStepTaskRoute &route) { |
| 83 | if (request.source_audio.has_value() && |
| 84 | (request.source_audio->channels <= 0 || request.source_audio->sample_rate <= 0)) { |
| 85 | throw std::runtime_error("ACE-Step source audio metadata is invalid"); |
| 86 | } |
| 87 | if (ace_step_route_has_missing_component(route)) { |
| 88 | throw std::runtime_error("ACE-Step task '" + std::string(route.name) + |
| 89 | "' requires missing component: " + std::string(route.missing_component)); |
| 90 | } |
| 91 | if (ace_step_request_uses_flow_edit_morph(request)) { |
| 92 | if (!request.source_audio.has_value()) { |
| 93 | throw std::runtime_error("ACE-Step text2music flow_edit_morph requires source audio"); |
| 94 | } |
| 95 | throw std::runtime_error("ACE-Step text2music flow_edit_morph requires missing component: flow-edit diffusion overlay"); |
| 96 | } |
| 97 | } |
| 98 | |
| 99 | void validate_task_route_source_input( |
| 100 | const AceStepRequest &request, |
no test coverage detected