Цитата от House
(Сообщение 75570)
2MC FaTT: значит твой режиссер туго представляет себе то, что происходит с цифровыми данными в процессе сведения...
Вот тебе пример:
Дано:
сводим 2 16-битных моно-семпла, частота дискретизации 44100Гц (как на CD), которые мы получаем из семплера...вот, что происходит (для упрощения рассчетов, будем считать, что значение velocity миди-сообщения, которое проигрывает громкость имеет величину 63, что озачает, что клавиша миди-клавиатуры нажата с небольшой скоростью, и семплер должен воспроизвести семпл на половине громкости семпла)
Потом 2 получившихся файла нам следует свести без изменения уровня (то есть мы не изменяем громкость ни одного из файлов). Результирующий файл должен быть 16-битный.
Предположим, что текущее значение первого семпла:
12345 в десятичной системе или 0011000000111001 в двоичной
а значение второго
44321 в десятичной системе или 1010110100101011 в двоичной
(в двоичной системе каждый из знаков представляет собой бит сигнала, сейчас их 16)
Теперь выполняем задачу со сведением в 16 битах
воспроизводим ноты с velocity=63 (половина громкости)
Для этого мы просто делим значение сигнала в каждой точке на 2 (10 в двоичной системе)
Вычисляем в двоичной системе:
0011000000111001 / 10 = 0001100000011100
1010110100101011 / 10 = 0101011010010101
(все заметили, что биты сдвинулись в право и последний разряд потерялся?)
Сводим два получившихся файла
Для сведения без изменения громкости мы просто складываем значения значения сигналов в каждой точке (семпле) одного файла с соответствующим значением другого файла:
Вычисляем в двоичной системе:
(складываем в столбик)
0001100000011100
+
0101011010010101
=
0110111010110001
Мы получили в двоичной системе число 0110111010110001, которое соответствует числу 28337 в десятичной.
Запомним его.
Теперь выполняем те-же самые операции, только промежуточные результаты (файлы) будут имет разрешение 24 бита, но результирующий всеравно 16, итак:
переводим наши 16-битные семплы в 24бита, добавляя лишние младшие 8 бит:
первый семпл
0011000000111001 у нас будет выглядеть так:
001100000011100100000000
а второй
1010110100101011 у нас будет выглядеть так:
101011010010101100000000
Воспроизводим 2 семпла c половиной громкости:
001100000011100100000000 / 10 = 000110000001110010000000
101011010010101100000000 / 10 = 010101101001010110000000
(заметьте, результат у нас в формате 24 бит, и при понижении громкости младшие биты у нас не изчезли, а сдвинулись в старший из бывших лишними младших 8 бит )
теперь сводим в 24 битах, без изменения громкости просто складывая значения семпла в каждый момент времени
произведем вычисления в столбик :) :
000110000001110010000000
+
010101101001010110000000
=
011011101011001000000000
Мы получили результат в 24 битах, чтобы привести его к требуемым 16, выполняем простейший транкейт, то есть отсекаем младшие 8 бит, то есть семпл в 24 битах выглядящий так:
011011101011001000000000 будет выглядеть так:
0110111010110010 в 16 битах
Мы получили результат 0110111010110010 в двоичной системе, в десятичной системе это число выглядит так: 28338
Итак, мы получили 2 ответа,
при седении в 16 бит: 28337
при седении в 24 бит: 28338
Как вы наверно заметили, разница между ответами совсем небольшая, при сведении в 16 бит компьютер ошибется всего лишь на единицу, но не будем забывать, что при частоте дискретизации 44100Гц (частота компакт-диска) мы имеем 44100 таких ошибок в секунду! Стоит также отметить что такая ошибка у нас получилась при сведении 2х файлов с примитивным понижением громкости в двое, а если мы бы уменьшили ее не в 2, а в 3,5 раза? Тогда ошибка была бы заметнее, а если мы сводим не 2, а 10 файлов, причем стерео, то есть складывали бы 20 уже ошибочных значений...а если бы мы применили эффкекты типа дилея или ревебрации, которые используют очень много вычислений, причем в каждом бы допускалась ошибка? Как мы можем заметить, ошибки бы наслаивались на ошибки и чем больше мы преобразований и действий с данными устраиваем, тем больше ошибочной информации мы молучаем в младших битах и тем старше становятся ошибочные биты. А на слух звук теряет естественность и кристальность, становится мутным, мыльным, неестественным...
В моем опыте в результате сведения в 16 бит мы получили 15 верных старших бит. То есть с каждым таким как в моем опыте преобразованием мы теряем 1 бит полезной информации. А если над одним и тем-же материалом сделать 8 таких преобразований (что реально в процессе сведения)? Тогда в результате число верных старших бит в сигнале будет равно 8. Остальные будут хоть и не шумом, но и не такими, какие они должны получиться в природе при смешивании 2x8=16 звуков.
Любой, кто хоть чуть-чуть в школе на уроках информатики изучал системы счисления поймет пример, приведенный мной, а кто непонимает, просто поглядите на разницу результатов, а точнее, на ее наличие.
И что твой опытный звукорежиссёр скажет в ответ на эти аргументы? |