Изменение высоты необработанных данных формы волны в Windows

Я пытаюсь изменить данные о форме сигнала, которые я получаю waveInOpen с помощью WAVEHDR-Структуры. Я хочу изменить высоту звука.

Все, что у меня есть, это указатель на необработанные аудиоданные и количество используемых байтов.

Я немного растерялся, потому что не могу найти никаких примеров, как это сделать.
Я был бы очень благодарен за отправную точку о том, как редактировать необработанные данные формы волны (или даже пример того, как изменить высоту тона, был бы действительно потрясающим).

Спасибо!

0

Решение

Вы можете изменить высоту звука, изменив скорость воспроизведения. Например, вы записали сигнал с частотой дискретизации 48 кГц, а затем, когда воспроизводили его, вы сказали системе, что частота дискретизации составляет 96 кГц. Шаг всего удвоится. Кроме того, продолжительность воспроизведения будет вдвое меньше, чем вы, возможно, не хотите. Альтернативой изменению частоты дискретизации является добавление или удаление выборок для достижения в основном того же эффекта. В отличие от другого ответа, это не так произвольно, как добавление или удаление образцов. Когда вы удаляете образцы, вам нужно применить фильтрацию нижних частот, чтобы предотвратить наложение. А при вставке сэмплов нужно применять интерполяционный фильтр. Это не тривиально, если у вас нет фона обработки сигналов. Наконец, если ваша цель состоит в том, чтобы сместить высоту тона, но оставить длительность на исходной длительности, тогда вам нужно смотреть на что-то вроде фазового вокодера.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]