Этап 1: форма звука на клипах
Для каждого файла один раз строится список пиков: сто значений в секунду, каждое есть наибольший модуль отсчёта за свои десять миллисекунд. Рисовать по настоящим отсчётам нельзя — в секунде их 48 тысяч, а в клипе на экране сотни пикселей. Разбор идёт в отдельном потоке и запоминается в кэше проекта. Через временный файл, а не по трубе: запуск внешних программ режет вывод на строки, а тут поток байтов, где перевод строки — такой же отсчёт. Shift со стрелками вверх и вниз растягивает форму по высоте. Звук бывает тихим, и угадывать за человека нужное усиление неправильно. Меняется только рисунок, значение сохраняется между запусками. Проверено: файл «4 с тона, 4 с тишины, 4 с тона» даёт форму в первой и последней трети и пустоту посередине. Полная амплитуда даёт 254 из 255. Разбор записи на 892 с занимает 12.7 с — это чтение 6.3 ГБ с диска, быстрее не выйдет. Первоначальный критерий «меньше двух секунд» в плане был занижен и исправлен по замеру. Заодно снят риск четвёртого этапа: mpv принимает edl:// как внешнюю звуковую дорожку и берёт звук именно из неё. Проверено встречными списками — картинке «тишина, потом тон», звуку «тон, потом тишина».
This commit is contained in:
parent
f7fc7a0503
commit
f1ef6e624a
5 changed files with 572 additions and 2 deletions
16
README.md
16
README.md
|
|
@ -62,6 +62,7 @@ Lazarus другой версии, и собранные им модули LCL
|
|||
| Прокрутка по дорожкам | колесо мыши |
|
||||
| Прокрутка по времени | Shift + колесо, средняя кнопка |
|
||||
| Прокрутка журнала вбок | Shift + колесо над журналом |
|
||||
| Растянуть форму звука по высоте | Shift + стрелки вверх и вниз |
|
||||
| Выключить дорожку / оставить только её | кнопки М и С в заголовке |
|
||||
| Громкость клипа | тянуть ручку на клипе вверх-вниз |
|
||||
| Автосхлопывание вкл/выкл | Ctrl+K |
|
||||
|
|
@ -137,6 +138,20 @@ Ctrl+Shift+R, который схлопывает дыру под курсоро
|
|||
В списке файлов слева показывается кадр из каждого файла, его параметры
|
||||
и длительность. Кадры делаются в фоне и запоминаются в кэше проекта.
|
||||
|
||||
На клипах видна форма звука. Считается она по заранее разобранным пикам —
|
||||
сто значений в секунду, каждое есть наибольший модуль отсчёта за свои
|
||||
десять миллисекунд. Рисовать по настоящим отсчётам нельзя: в секунде их
|
||||
48 тысяч, а в клипе на экране сотни пикселей.
|
||||
|
||||
Разбор идёт в фоне и запоминается в кэше проекта. Для записи на 892 с это
|
||||
около 13 секунд — столько занимает чтение шести гигабайт с диска, и
|
||||
быстрее не выйдет; при следующем открытии проекта пики берутся готовыми.
|
||||
|
||||
**Shift со стрелками вверх и вниз растягивает форму по высоте.** Звук
|
||||
бывает тихим, и угадывать за человека, во сколько раз растянуть картинку,
|
||||
неправильно. Усиление меняет только рисунок, самого звука не касается, и
|
||||
запоминается между запусками.
|
||||
|
||||
## Файл не совпадает с проектом
|
||||
|
||||
Проект имеет одно разрешение и один набор кодеков на всё — иначе куски не
|
||||
|
|
@ -433,6 +448,7 @@ Wine с новой библиотекой не грузилось ничего.
|
|||
| `src/uPanCropForm.pas` | Окно кадрирования и поворота |
|
||||
| `src/uProjectInfoForm.pas` | Сведения о проекте и ответ ffprobe |
|
||||
| `src/uThumbs.pas` | Кадры-миниатюры для списка файлов |
|
||||
| `src/uWaveform.pas` | Пики звука для формы волны на клипах |
|
||||
| `src/uTheme.pas` | Цвета окна, своя кнопка, своё окно сообщения |
|
||||
| `src/uLogView.pas` | Журнал: своя отрисовка, свои полосы прокрутки |
|
||||
| `src/uThemedScroll.pas` | Полоса прокрутки и обвязка для таблиц |
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue