| 940 | const auto mixed = engine::audio::mix_audio_to_reference_shape(inputs, normalize); |
| 941 | const auto output = resolve_workflow_path(workflow_string(step, "output"), context); |
| 942 | if (!output.parent_path().empty()) { |
| 943 | std::filesystem::create_directories(output.parent_path()); |
| 944 | } |
| 945 | engine::audio::WavPcm16Sink().write(output, engine::audio::AudioBuffer{ |
| 946 | mixed.sample_rate, |
| 947 | mixed.channels, |
| 948 | mixed.samples, |
| 949 | }); |
| 950 | context.values[id + ".audio_path"] = output.string(); |
| 951 | std::cout << "workflow_step=" << id << "\n"; |
| 952 | std::cout << "audio_path=" << output.string() << "\n"; |
| 953 | } |
| 954 | |
| 955 | std::string parse_foreach_source(const engine::io::json::Value & step) { |
| 956 | std::string value = workflow_string(step, "foreach"); |
no test coverage detected