Допустим, у нас есть некие исходные файлы, которые мы хотим каким-то образом скомпоновать. Например, есть некоторое количество pdf-ок, и мы хотим сделать из них единый документ - не написать что-то новое, а просто правильным образом склеить. Или у нас есть какие-то mp3-шки, и мы хотим составить единую композицию.
Инструменты для этого есть - скажем, pstops, sox, whatever. Но, понятное дело, нам потребуется некоторое количество экспериментов, чтобы подобрать такие параметры, при которых результат будет наиболее правильным. Скажем, когда я составлял музыку для нашего танцевального номера, мне приходилось ползать по mp3-шкам с точностью до двадцатых долей секунды.
При этом может оказаться, что решение, принятое на предыдущем шаге, не так уж удачно. Надо вернуться назад и поменять его. Но, конечно, не хочется делать всё с самого начала, нужно поменять только то, что зависит от результата этого шага.
То есть получается некий граф зависимостей, примерно как в make, но при этом по нему можно ходить как угодно, оценивая любой промежуточный результат, и, в зависимости от того, хорош он или нет, либо возвращаться назад, либо продолжать.
Соответственно, вопрос. Есть какая-то система, подобное автоматизирующая? Или велосипедить своё?
Update
Для примера. Недавно составлял музыку к нашему танцевальному номеру. В итоге получилось следующее:
sox waltz.wav w.wav trim 0 =16.2 =52.7 splice 16.2,0.5
sox kafe.mp3 kafe.wav trim 2 20
sox vw.wav before.wav trim -62.7 20 fade t 3 vol 0.2
sox -m kafe.wav before.wav Before.mp3
sox vw.wav VienneseWaltz.mp3 trim -43.2 36.3
sox Before.mp3 VienneseWaltz.mp3 VienneseWaltzFull.mp3 splice -t 20,0.5,0
sox kafe.mp3 kafe2.wav trim 50 5
sox -n -r 44100 silence.wav trim 0 3
sox silence.wav Cork_shampane.mp3 cork.wav trim 0 5 vol 0.1
sox -M cork.wav cork.wav cork2.wav
sox -m kafe2.wav cork2.wav Between.mp3
sox t.wav Tango.mp3 trim 0.7 37.4
sox clock.mp3 clock.mp3 5.mp3 splice 4.09,0.5
sox 5.mp3 5.mp3 9.mp3 splice 7.15,0.5
sox 9.mp3 clock.mp3 11.mp3 splice 13.29,0.5
sox 11.mp3 effect3.mp3 trim 0.3 fade 0 13.8 0.3
sox t.wav t1.wav trim 38.1 fade t 0 8 2 vol 0.2
sox -m effect3.mp3 t1.wav Tango2Waltz.mp3
sox w.wav Waltz.mp3 trim 0 =54.6 =2:58.4 -5 splice 54.6,0.3
sox Tango.mp3 Tango2Waltz.mp3 Waltz.mp3 TangoAndWaltz.mp3
sox VienneseWaltzFull.mp3 Between.mp3 TangoAndWaltz.mp3 Full.mp3 splice -t 55.35,0.5,0
Исходниками были файлы waltz.wav (медленный вальс), t.wav (танго), vw.wav (венский вальс), kafe.mp3 (шум голосов), Cork_shampane.mp3 (звук вылетающей пробки), clock.mp3 (бой часов). В итоге получился файл Full.mp3. Между каждой парой строчек я оценивал на слух, насколько хорошо получилось. Если получилось плохо — повторял с другими параметрами. Если всё равно не получалось — возвращался к предыдущим шагам.