2016-06-28 2 views
0

Извините, если это звучит как глупый вопрос, я относительно новичок в разработке VST. Я пытаюсь создать плагин с использованием инфраструктуры JUCE, и в настоящее время я пытаюсь проверить его с помощью синусоидального WAV-файла. Когда я открываю .wav-файл в Audacity, он говорит мне, что это 44100Hz, и это 32-битный float. Когда я загружаю этот же файл в matlab, первые три сэмпла - это что-то вроде 0.00, 0.0443, 0.0884 ... Однако, когда я помещаю тот же файл в Ableton и Reaper и пытаюсь выполнить код, я нахожу первые три образца тот же файл 0.00000000, 0.00012068315, 0.00048156900 ... Я вижу это, когда я пик в память в VS и смотрю на него в 32-битном режиме с плавающей точкой. Почему мои размеры выборки намного меньше?Значения входного аудиосигнала VST полностью отличаются от значений в Matlab

Моя проблема в том, что мне нужен звук, чтобы иметь те же самые значения, что и в Matlab, для моего алгоритма работы. Очевидно, что происходит конверсия, которой я не контролирую. Может ли кто-нибудь пролить свет на эту проблему и как я должен ее исправить. Возможно, это проблема с масштабированием. Ableton запускается в 32-битном режиме, и мой VST компилируется как 32-разрядный.

Я также могу предоставить больше образцов, если это поможет.

Благодаря

+0

Ознакомьтесь с документацией Ableton. Насколько я понимаю, Аблетон не свободен. Я ничего не знаю о Жнеце. Но, может быть, вы справитесь с Audacity? –

+0

Я думаю, что причина, по которой я получаю одинаковые значения как в Reaper, так и в Ableton, означает, что это может быть VST SDK или структура JUCE. Однако я не пробовал перешагнуть через Audacity. Отличная идея. – daithioronain

ответ

1

Проблема в том, что Ableton и Жнец были преобразования 32-битный аудио в 16 бит аудио. Я смог проверить это, загрузив sine.wav в Ableton и экспортировав его на 16 бит. Затем я загрузил файл в Matlab и получил меньшие образцы, например, выше. Моя следующая проблема заключается в том, чтобы выяснить способ преобразования 16-битного аудио в 32-битный звук в VST.

+0

К тому времени, когда буфера данных поступает к вам в объект, полученный от JUCE AudioProcessor, звуковой график уже преобразовал его в 32-битные поплавковые или 64-битные двойные данные, находящиеся в диапазоне (-1,0, 1,0) - - см. функции memberBlock() для функции «Аудиопроцессор». – bgporter

0

Что вы, кажется, описываете, это очень малая амплитуда, поэтому у вас мало значений (вы можете преобразовать ваши значения выборок в дБ, чтобы убедиться в этом). Обычно звуковой сигнал находится в диапазоне от -1 до +1, где экстремумы представляют максимальный возможный объем в цифровом мире (aka 0dB).

Я считаю, что дилемма между 16 битами и 32 битами не имеет ничего общего с вашей проблемой.

+0

Что я делаю, это преобразование устаревшего кода на C, который обычно читается в аудиофайлах в виде 32-битных беззнаковых длин, а затем преобразует его в регулярное значение float. Когда я сравниваю значения float, я получаю унаследованный код к значениям float, которые я получаю на C++, они такие же, но не тогда, когда я использую Ableton и Reaper, поэтому я думаю, что в этом проблема. – daithioronain

Смежные вопросы