Я пытаюсь выполнить линейное масштабирование аудиовхода с тем же масштабированием на каждом канале.Масштабирование звука Java
Общий эффект заключается в том, что входной поток постепенно уменьшается по амплитуде до тех пор, пока он не станет тихим. Таким образом, мой первый образец останется таким же, и мой последний образец будет равен 0 по амплитуде. Мне было интересно, как вы это реализуете.
До сих пор это то, что у меня есть для кода масштабирования, и задавался вопросом, нужно ли еще масштабировать образец, чтобы он находился между диапазоном до 16 цифр.
for (int i=0; i<data.length; ++i){ // data[i] is sample in intger form
data[i] = (int) (data[i]*(something/something));
}
Было бы полезно, если бы было объяснено масштабирование до определенного фактора?
Спасибо!
Каков ваш фактический вопрос? Если вы сделали масштабирование правильно, и вы только уменьшаете амплитуду, он будет автоматически находиться в 16-битном диапазоне. Однако ваш код неверен - зачем вам нужно несколько экземпляров с максимальным значением, что делает его 32-битным диапазоном и намного громче? И что произойдет, если вы разделите ноль на первой итерации цикла? Вы даже запустили код? –
@erwin bolwidt мой вопрос: как вы масштабируете линейно до 0. Разве я бы просто разделил каждый образец на 0? – Hawwa